1 00:00:00,000 --> 00:00:03,353 >> [Predvaja glasba] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Pozdravljeni, vsi. 4 00:00:06,050 --> 00:00:07,777 To je CS50 je supersection. 5 00:00:07,777 --> 00:00:09,860 Namenski oddelkov ne bo začeti še en teden. 6 00:00:09,860 --> 00:00:11,580 In tako je danes, tukaj sem with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --to dejansko poglej na problem 9 00:00:14,163 --> 00:00:16,110 nastavite eno, seveda je Prve tedne materiala, 10 00:00:16,110 --> 00:00:19,780 dobite usmerjen z CS50 IDE, malo Linux, operacijski sistem, ki je 11 00:00:19,780 --> 00:00:22,290 teče na IDE, kot tudi pogled na nekatere od prehoda 12 00:00:22,290 --> 00:00:25,730 iz nič do C vodilnih do problema nastaviti enega. 13 00:00:25,730 --> 00:00:28,340 >> Torej, brez odlašanja, v problem določiti enega, 14 00:00:28,340 --> 00:00:30,520 si bo predstavil CS50 IDE, ki 15 00:00:30,520 --> 00:00:33,230 je to spletno programiranje okolje, ki jih uporabljamo, da bi 16 00:00:33,230 --> 00:00:34,280 pisati programe. 17 00:00:34,280 --> 00:00:37,280 To je bilo zasnovan tako, da izgleda zelo spominja na tipično računalniku 18 00:00:37,280 --> 00:00:39,430 Sistem teče operacijski Sistem se imenuje Linux. 19 00:00:39,430 --> 00:00:42,440 Ampak to je v tako imenovanem oblaku, kar pomeni, da vsi v razredu 20 00:00:42,440 --> 00:00:45,100 lahko dejansko ima njegovo ali njeno za svoj račun in ga uporabite, kot dobro. 21 00:00:45,100 --> 00:00:48,950 >> Torej, večina od vas verjetno nikoli ne uporablja okolju Linux pred ali morda 22 00:00:48,950 --> 00:00:50,447 celo okolje v ukazni vrstici. 23 00:00:50,447 --> 00:00:52,280 In ukazni vrstici Okolje je drugačna. 24 00:00:52,280 --> 00:00:53,200 To je vse tekstovne. 25 00:00:53,200 --> 00:00:54,730 To je vse ukaze tipkovnice. 26 00:00:54,730 --> 00:00:59,480 In to ni mousing, brez ikon, brez oken dialog, brez kosila. 27 00:00:59,480 --> 00:01:00,212 To je zgolj besedilo. 28 00:01:00,212 --> 00:01:01,920 Torej na prvi, je nekako od počuti kot korak 29 00:01:01,920 --> 00:01:04,434 nazaj v smislu izpopolnjenosti. 30 00:01:04,434 --> 00:01:06,600 Ampak to konča pa veliko močnejši, seveda, 31 00:01:06,600 --> 00:01:08,510 za računalniški znanstvenik, navsezadnje. 32 00:01:08,510 --> 00:01:09,540 >> Torej, kaj si zdaj. 33 00:01:09,540 --> 00:01:13,850 Tukaj sem na CS50.io, preko katerega se lahko prijavite v CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 In podobno kot v nič, tam je tri osnovne površine na tem zaslonu. 35 00:01:17,414 --> 00:01:20,080 Tako na levi strani, imamo kaj se bo datoteka brskalnik. 36 00:01:20,080 --> 00:01:22,413 In tam je ta mapa na top, ki je sedaj prazna 37 00:01:22,413 --> 00:01:24,690 saj sem se znebil vseh mojih Datoteke pred supersection. 38 00:01:24,690 --> 00:01:27,599 In to je, če bomo shranite datoteke C, ki jih pišejo. 39 00:01:27,599 --> 00:01:30,890 V zgornjem desnem kotu, imamo na mestu, kjer vse naše kode se dogaja, da se napisana. 40 00:01:30,890 --> 00:01:34,610 In res, če sem kliknite na to plus, to se dogaja, da mi izbrati nove datoteke. 41 00:01:34,610 --> 00:01:38,310 In tukaj lahko začnem pisati kodo C, ali Res poljubno število drugih jezikih. 42 00:01:38,310 --> 00:01:42,670 >> In potem na dnu, kjer ga pravi jharvard @ ide50-- in tvoje bo 43 00:01:42,670 --> 00:01:45,080 reči nekaj malo different-- kaj je to imenuje? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Terminal okno. 46 00:01:49,310 --> 00:01:49,570 Ja. 47 00:01:49,570 --> 00:01:51,810 Torej okno terminal tako imenovani ukazni vrstici 48 00:01:51,810 --> 00:01:55,540 vmesnik, prek katerega lahko sodelujete z operacijskega sistema. 49 00:01:55,540 --> 00:01:58,220 In za zdaj, gremo na da zelo malo uporabljajo this-- 50 00:01:58,220 --> 00:02:01,170 samo za zbiranje, da pogled na sporočila o napakah, ki jih vidimo, 51 00:02:01,170 --> 00:02:02,347 in za zagon naših programov. 52 00:02:02,347 --> 00:02:04,680 Ampak na koncu, gremo narediti toliko bolj, kot dobro. 53 00:02:04,680 --> 00:02:07,490 In lahko celo namestiti programsko opremo in upravlja svoj delovni prostor 54 00:02:07,490 --> 00:02:09,066 v CS50 IDE, kot dobro. 55 00:02:09,066 --> 00:02:10,440 Ampak več o tem kdaj drugič. 56 00:02:10,440 --> 00:02:12,689 >> Torej, gremo naprej in pisati zelo preprost program le 57 00:02:12,689 --> 00:02:15,064 iti skozi toplo-up hello.c, ki je morda 58 00:02:15,064 --> 00:02:16,480 najenostavnejši Program moremo pisati. 59 00:02:16,480 --> 00:02:18,330 Sem že odprli nov zavihek. 60 00:02:18,330 --> 00:02:24,310 Grem, da gredo naprej in pravijo, vsebuje standardne io.h. 61 00:02:24,310 --> 00:02:25,325 Potem int main (praznino). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 In potem printf ("Hello, world" poševnica nazaj n, blizu citiram, 64 00:02:35,200 --> 00:02:39,480 Zapri oklepaje in podpičjem. 65 00:02:39,480 --> 00:02:39,990 >> V redu. 66 00:02:39,990 --> 00:02:41,700 Torej, zdaj opazili moje okno je neimenovana. 67 00:02:41,700 --> 00:02:44,840 Tako da sem zelo hitro dogaja iti gor na File, Save. 68 00:02:44,840 --> 00:02:46,910 In to je pomembno, da Tega ne pravim "zdravo." 69 00:02:46,910 --> 00:02:49,243 Torej, zelo pogosta napaka, zlasti pri problemu določi eno, 70 00:02:49,243 --> 00:02:52,530 je, da se po nesreči samo pokliči Program "voda" ali "požrešen" ali "Mario" 71 00:02:52,530 --> 00:02:53,890 ali "kredit" ali podobno. 72 00:02:53,890 --> 00:02:55,970 Ampak si dejansko želite Preverite, ali imate pripono 73 00:02:55,970 --> 00:02:58,928 ker je to edini način, da prevajalnik in tudi urednik koda 74 00:02:58,928 --> 00:03:00,710 ve, da ste dejansko pisanje C kode. 75 00:03:00,710 --> 00:03:02,280 Zato mi dovolite, pojdi naprej in kliknite Shrani. 76 00:03:02,280 --> 00:03:05,710 >> In zdaj, preveč, kaj CS50 IDE je naredil za nas je, da je tudi 77 00:03:05,710 --> 00:03:07,120 sintaksa izpostavil vse. 78 00:03:07,120 --> 00:03:08,822 Torej je narejen vse zelo barvita. 79 00:03:08,822 --> 00:03:10,780 In celoten namen da ne deluje. 80 00:03:10,780 --> 00:03:14,290 To je samo, da pripravi svoje oči na konceptualno različni kosi 81 00:03:14,290 --> 00:03:15,310 tega programa. 82 00:03:15,310 --> 00:03:17,570 Torej, gremo naprej in zbrati to. 83 00:03:17,570 --> 00:03:19,490 In to lahko zbere v nekaj načinov. 84 00:03:19,490 --> 00:03:22,010 In v enem tednu se je old-school način smo naredili 85 00:03:22,010 --> 00:03:26,250 je bil dobesedno Na ukaza line-- "Jek hello.c." 86 00:03:26,250 --> 00:03:27,596 In potem sem udaril Enter. 87 00:03:27,596 --> 00:03:29,720 In nič ne kaže, da se zgodi v terminalskem oknu. 88 00:03:29,720 --> 00:03:32,654 Toda kaj naredil spremembo v IDE? 89 00:03:32,654 --> 00:03:35,320 Kjer je, še enkrat, IDE pomeni le Integrirano razvojno okolje. 90 00:03:35,320 --> 00:03:38,360 To je fancy način rekel Ta celostni razvoj 91 00:03:38,360 --> 00:03:40,620 okolje za razvoj programske opreme. 92 00:03:40,620 --> 00:03:42,477 Torej, kaj se je spremenilo v UI? 93 00:03:42,477 --> 00:03:44,310 Kaj ste opazili da je drugačen, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: sem opazil nekaj pod IDE50 mapo tukaj. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Ja. 96 00:03:47,850 --> 00:03:50,230 Torej tu, ne samo imamo "hello.c." 97 00:03:50,230 --> 00:03:53,120 Imamo tudi "a.out", ki je vrsta neumna imena za program. 98 00:03:53,120 --> 00:03:56,430 Ampak res, to je privzeto ime za Program ko si zbere svojo kodo 99 00:03:56,430 --> 00:03:59,110 in ne povej prevajalnik kakšna datoteka za izhod. 100 00:03:59,110 --> 00:04:01,790 Torej, če želim teči to sem morali povedati compiler-- 101 00:04:01,790 --> 00:04:05,340 ali bolje, moram povej delovni prostor, da sem 102 00:04:05,340 --> 00:04:09,780 želite zagnati program, imenovan "a.out." 103 00:04:09,780 --> 00:04:10,550 Enter. 104 00:04:10,550 --> 00:04:12,474 In tam je "zdravo, svet. "zdaj" ./ ". 105 00:04:12,474 --> 00:04:13,390 je dejansko pomembno. 106 00:04:13,390 --> 00:04:16,050 Čeprav ponavadi smo samo napisati imena ukazov, 107 00:04:16,050 --> 00:04:19,060 ko je program, ki ste jih napisan, vam želim reči "./" 108 00:04:19,060 --> 00:04:22,460 ker to izrecno pove Linux da želite zagnati program, imenovan 109 00:04:22,460 --> 00:04:26,930 "a.out", ki je v tem, kjer je pika pomeni ta imenik, da sem trenutno 110 00:04:26,930 --> 00:04:31,600 v, ki se zgodi, da bo imenovani delovni prostor, "a.out. 111 00:04:31,600 --> 00:04:35,410 Ker, če sem rekel "a.out," Enter, Jaz grem, da bi dobili "a.out ukaz ne 112 00:04:35,410 --> 00:04:38,035 Najdenih ", ker computer-- ker sem izumil "a.out;" 113 00:04:38,035 --> 00:04:40,910 ni prišel z computer-- ne vem, kje si za to, 114 00:04:40,910 --> 00:04:43,590 čeprav je prav pod nos, tako rekoč. 115 00:04:43,590 --> 00:04:44,090 V REDU. 116 00:04:44,090 --> 00:04:49,910 Torej bi lahko to spremenili, da biti "Jek -o zdravo hello.c." 117 00:04:49,910 --> 00:04:53,030 In če sem zadeti nastopiti, kaj program, se to dogaja, da izhod za mene? 118 00:04:53,030 --> 00:04:55,710 Kako je ime datoteke? 119 00:04:55,710 --> 00:04:57,500 Ja, v hrbtu. 120 00:04:57,500 --> 00:04:58,479 Tako je. "Zdravo." 121 00:04:58,479 --> 00:05:00,520 Tako "zdravo", se bo ime programa 122 00:05:00,520 --> 00:05:04,610 ker smo uporabili tako imenovani argument linije ukaz, ki je le 123 00:05:04,610 --> 00:05:08,120 način spreminjanja obnašanja prevajalnik za dejansko proizvodnjo 124 00:05:08,120 --> 00:05:09,450 posebno ime datoteke. 125 00:05:09,450 --> 00:05:12,400 In res, če sem povečavo ven in poglej gor, 126 00:05:12,400 --> 00:05:17,430 zdaj imam, ne le "a.out" in "hello.c", ampak tudi "zdravo", kot tudi. 127 00:05:17,430 --> 00:05:22,410 Tako da zdaj ne morem storiti "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 In tam je "zdravo, svet." 129 00:05:23,640 --> 00:05:25,640 Toda lastly-- in to Zdaj bo konvencija 130 00:05:25,640 --> 00:05:27,590 ki jih uporabljamo v celotnem semester, typically-- 131 00:05:27,590 --> 00:05:30,070 je lahko tudi samo reči "da zdravo." 132 00:05:30,070 --> 00:05:33,370 In res, pa je rekel, da je do do danes, saj že obstaja. 133 00:05:33,370 --> 00:05:37,860 Naj gredo naprej in odstranite z ukaz rm, tako "a.out" - 134 00:05:37,860 --> 00:05:39,644 in reči "odstrani redno datoteke a.out?" 135 00:05:39,644 --> 00:05:41,810 To samo pomeni, ste prepričani, da želite to izbrisati? 136 00:05:41,810 --> 00:05:42,880 Bom rekla ja. 137 00:05:42,880 --> 00:05:46,690 In potem bom odstraniti "zdravo", a ne "hello.c." 138 00:05:46,690 --> 00:05:49,920 Bom rekel "da" izrecno, vendar "y" je dovolj, kot tudi. 139 00:05:49,920 --> 00:05:52,140 >> In zdaj opazili, če bom tip ls-- ki je odpoklic, 140 00:05:52,140 --> 00:05:55,540 pomeni list-- našteva vse datotek v moji mapi. 141 00:05:55,540 --> 00:05:57,850 In res, če sem povečavo ven in poglej zgornjem levem kotu, 142 00:05:57,850 --> 00:05:59,730 potrdi, da je tisto, kar je v tej mapi, celo 143 00:05:59,730 --> 00:06:04,990 čeprav je to označeno kot IDE50 tukaj in ne delovni prostor, to je samo "hello.c." 144 00:06:04,990 --> 00:06:09,152 Torej, zdaj tukaj, če I ne ", da zdravo," Enter, 145 00:06:09,152 --> 00:06:12,360 zdaj vidim veliko dlje ukaz, ampak bolj sofisticirane ukaz, ki se dogaja 146 00:06:12,360 --> 00:06:13,940 bi bilo koristno v tednih, ki prihajajo. 147 00:06:13,940 --> 00:06:16,720 In zdaj ne morem reči "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Tako da je lahko hitro turnejo nekatere druge Linux ukazi. 149 00:06:19,257 --> 00:06:21,840 Zakaj potem ne bomo naredili korak nazaj in dejansko poglej C več 150 00:06:21,840 --> 00:06:25,020 splošno prehodu iz nič za C, nato pa se konča z videzom 151 00:06:25,020 --> 00:06:27,305 na prvi problem nastavite v C. V redu. 152 00:06:27,305 --> 00:06:30,430 Tako da sem šel naprej in samo čisto up moj delovni prostor z Control-L samo 153 00:06:30,430 --> 00:06:31,429 ohraniti zaslon čist. 154 00:06:31,429 --> 00:06:33,520 Ampak to nima funkcionalne vplivajo drugače. 155 00:06:33,520 --> 00:06:35,820 >> Spomnimo se, da smo videli nekaj ukazov zdaj. 156 00:06:35,820 --> 00:06:39,900 Tako smo videli Jek, ki na splošno si ne bo treba ročno izvesti več. 157 00:06:39,900 --> 00:06:41,650 Bomo raje uporabljajo make. 158 00:06:41,650 --> 00:06:45,290 Vendar pa smo videli tudi ls, ki kaže seznam datotek v mojem imeniku. 159 00:06:45,290 --> 00:06:48,750 In zdaj, zakaj je there-- tam je dva Datoteke zdaj, "zdravo" in "hello.c." 160 00:06:48,750 --> 00:06:52,240 Zakaj je zvezda ali Zvezdica po "zdravo"? 161 00:06:52,240 --> 00:06:54,900 Kaj je pa to pomenilo, temelji na to, kar smo videli v teden enega? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Kaj misliš? 164 00:07:00,400 --> 00:07:02,742 Kaj zvezda pomenilo? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- programa "zdravo"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Hello *". 167 00:07:05,530 --> 00:07:06,330 Ja. 168 00:07:06,330 --> 00:07:07,760 Oh, ja? 169 00:07:07,760 --> 00:07:08,639 Oh, izvršljiv. 170 00:07:08,639 --> 00:07:09,180 Tako je. 171 00:07:09,180 --> 00:07:10,890 To pomeni, da "zdravo", je izvršljiva. 172 00:07:10,890 --> 00:07:13,430 Torej res, da je, zakaj Jaz lahko naredim "./hello." 173 00:07:13,430 --> 00:07:13,930 V redu. 174 00:07:13,930 --> 00:07:15,179 Torej, kaj še lahko storim tukaj? 175 00:07:15,179 --> 00:07:17,290 No, se je izkazalo, da sem lahko Prav tako ustvarite imenike. 176 00:07:17,290 --> 00:07:20,924 Zato mi dovolite, pojdi naprej in ustvariti, na primer, "pset1" imenik. 177 00:07:20,924 --> 00:07:23,590 In specifikacija problem določiti vas bo naredil točno to, 178 00:07:23,590 --> 00:07:25,260 tako da vam ni treba zapomniti danes. 179 00:07:25,260 --> 00:07:27,340 Toda "mkdir pset1" Zdi se, da nimajo nikakršnega vpliva. 180 00:07:27,340 --> 00:07:30,540 Ampak še enkrat, nobenega sporočila o napaki je na splošno dobra stvar. 181 00:07:30,540 --> 00:07:34,060 Torej, če sem tip "ls" now-- ah, zdaj Imam izvedljivo datoteko z imenom 182 00:07:34,060 --> 00:07:36,570 "zdravo," datoteka C imenuje "hello.c." 183 00:07:36,570 --> 00:07:40,860 In potem je zamujala slash, tako da rekoč, pomeni, da je to imenika. 184 00:07:40,860 --> 00:07:42,510 >> Torej res, zdaj jo želim odpreti. 185 00:07:42,510 --> 00:07:45,730 In jaz ne dvakrat kliknite na to, kot v GUI, grafičnem okolju. 186 00:07:45,730 --> 00:07:48,550 Jaz namesto reči "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Enter. 188 00:07:49,640 --> 00:07:53,100 Nič zanimivega se zdi, da imajo se je zgodilo, razen moj mali poziv 189 00:07:53,100 --> 00:07:57,300 here-- je na ta način Linuxa opozarjali me, kje sem, kaj mapa je odprta. 190 00:07:57,300 --> 00:08:00,080 To je samo mi je povedal, je izrecno v nasprotju z grafično. 191 00:08:00,080 --> 00:08:05,100 In če sem tip "ls", zakaj ne vidim drugega takoj pozove, misliš, 192 00:08:05,100 --> 00:08:07,269 ko sem Vsebino pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Verjetno ne imeti ničesar tam. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Ja. 195 00:08:09,630 --> 00:08:11,510 Torej imamo očitno ne ustvaril ničesar notri 196 00:08:11,510 --> 00:08:13,150 ker sem ustvaril mapo. 197 00:08:13,150 --> 00:08:17,690 Zdaj, če sem želela ustvariti file-- za primer, sem lahko ustvarite novo datoteko. 198 00:08:17,690 --> 00:08:20,190 In potem sem lahko šel na Shranite in ga shranite kot, 199 00:08:20,190 --> 00:08:23,090 podobnega, "mario.c" če delaš standard izdaja pset enega. 200 00:08:23,090 --> 00:08:27,610 In potem, kot vsak Mac ali PC, samo izberite mapo "pset1, Shrani. 201 00:08:27,610 --> 00:08:28,740 In zdaj je datoteka prazna. 202 00:08:28,740 --> 00:08:31,160 Ampak kaj je povečate spet za sekundo. 203 00:08:31,160 --> 00:08:32,470 Naredimo ls tukaj. 204 00:08:32,470 --> 00:08:34,470 Zdaj vidimo, "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Tako da je še nekaj drugih ukazov, ki so vredni v obzir več time-- 206 00:08:37,850 --> 00:08:41,200 jasno, ali Control-L je tisto, kar sem imel bil hitting; mkdir smo videli; 207 00:08:41,200 --> 00:08:45,240 rm smo videli, kot tudi, kar je za odstranjevanje ali brisanju datoteke. 208 00:08:45,240 --> 00:08:49,310 Pazite lahko also-- in če pogledaš na spletnih vajah, boste rm -rf 209 00:08:49,310 --> 00:08:52,630 je zelo pogost način rekel zbrisati mapo, ki ima stvari v njem. 210 00:08:52,630 --> 00:08:54,280 Samo super, super previdni. 211 00:08:54,280 --> 00:08:58,780 -rf pomeni rekurzivno izbrisati karkoli že je 212 00:08:58,780 --> 00:09:01,150 skušate izbrisati in nasilno izbrisati. 213 00:09:01,150 --> 00:09:04,630 Torej rekurzivni sredstva, če je to mapa z mapa z mapo z mapo, 214 00:09:04,630 --> 00:09:05,690 izbrisati vse od njih. 215 00:09:05,690 --> 00:09:08,680 In prisilno pomeni sploh ne me sprašujejo, da ali ne, sem prepričan? 216 00:09:08,680 --> 00:09:11,960 Torej, to je super nevaren način brisanje veliko stvari hitro. 217 00:09:11,960 --> 00:09:17,210 Ampak beware-- prepogosto does neustrašni študent pomotoma izbrišete, recimo, pset 218 00:09:17,210 --> 00:09:18,000 ena, npr. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: In če so le storiti -r, oni 'tekoč 220 00:09:19,833 --> 00:09:21,870 da jih vprašati o vsaki posamezni datoteki. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Kateri je zmerno nadležno. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Ja. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Torej, to je, zakaj tako mnogi od nas, self vključen, 224 00:09:25,813 --> 00:09:27,070 sem v navado uporabe -rf. 225 00:09:27,070 --> 00:09:27,861 Ampak to je nevarno. 226 00:09:27,861 --> 00:09:29,010 Torej kupec pazi. 227 00:09:29,010 --> 00:09:31,050 In potem mv je nekako zanimivo imenom. 228 00:09:31,050 --> 00:09:33,600 Torej, to je ukaz poteza, ki se počuti malo čudno 229 00:09:33,600 --> 00:09:37,260 ker lahko zares jo uporabite za premikanje datotek iz enega kraja v drugega. 230 00:09:37,260 --> 00:09:39,970 Recimo, da sem zamočil. 231 00:09:39,970 --> 00:09:43,660 Recimo, da sem ustvaril novo datoteko za pset. 232 00:09:43,660 --> 00:09:46,320 In sem ga shrani kot "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Ampak, da sem po nesreči jo shranite v IDE50-- tako v mojem delovnem prostoru samem 234 00:09:49,970 --> 00:09:51,580 in ne v pset1. 235 00:09:51,580 --> 00:09:53,960 >> Ogledate si lahko toliko v zgornjem levem kotu. 236 00:09:53,960 --> 00:09:55,284 Tam je "greedy.c." 237 00:09:55,284 --> 00:09:56,450 In tam je nekaj rešitev. 238 00:09:56,450 --> 00:09:58,324 Torej ena, lahko uporabite super-uporabniku prijazen način 239 00:09:58,324 --> 00:09:59,740 za samo povlečete in spustite. 240 00:09:59,740 --> 00:10:01,910 In da bi dejansko popraviti to težavo. 241 00:10:01,910 --> 00:10:04,967 Ampak danes, smo poskušali pogledati bolj Skrivnosten vendar zmogljive načine 242 00:10:04,967 --> 00:10:05,550 to početje. 243 00:10:05,550 --> 00:10:07,880 Torej, kaj mi bo "ls" v pset1. 244 00:10:07,880 --> 00:10:09,690 In vidim samo "mario.c." 245 00:10:09,690 --> 00:10:13,450 Naj gredo naprej in narediti "cd ..". 246 00:10:13,450 --> 00:10:15,320 Torej CD spet sprememba imenika. 247 00:10:15,320 --> 00:10:18,130 ".." Pomeni kaj, čeprav? 248 00:10:18,130 --> 00:10:21,100 Nazadnje, ko sem rekel "cd pset1 "iti v pset1. 249 00:10:21,100 --> 00:10:24,360 Torej, ko rečem "cd ..", kaj počnem? 250 00:10:24,360 --> 00:10:24,910 Nazaj. 251 00:10:24,910 --> 00:10:25,150 Ja. 252 00:10:25,150 --> 00:10:26,750 >> Tako se dogaja, da ti starša. 253 00:10:26,750 --> 00:10:29,730 Pojdi eno raven navzgor, kot izhodu iz mape. 254 00:10:29,730 --> 00:10:30,500 Torej Enter. 255 00:10:30,500 --> 00:10:31,900 In res, poglej, kaj je storil. 256 00:10:31,900 --> 00:10:37,070 To me je namesto preselil šele v delovnem prostoru za v pset1, ki je v delovnem prostoru. 257 00:10:37,070 --> 00:10:39,710 In zdaj, če sem tip "ls", tam je cel kup stvari. 258 00:10:39,710 --> 00:10:41,650 Tam je "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Torej, zdaj mi uporabite mv dobesedno premakniti "greedy.c" v pset1. 260 00:10:48,720 --> 00:10:51,120 In tako veliko Linux ukazov deluje natanko tako kot je ta. 261 00:10:51,120 --> 00:10:54,470 Vzamejo nobenih argumentov ali vzamejo eno argument ali jih bodo vzeli dve ukazno vrstico 262 00:10:54,470 --> 00:10:55,449 argumenti in tako naprej. 263 00:10:55,449 --> 00:10:57,240 In v tem primeru je to dobesedno to, kar 264 00:10:57,240 --> 00:11:01,670 pravi, čeprav succinctly-- premakniti greedy.c v pset1. 265 00:11:01,670 --> 00:11:02,310 Enter. 266 00:11:02,310 --> 00:11:03,310 Nič ne kaže, da se zgodi. 267 00:11:03,310 --> 00:11:06,180 Ampak, če sem spet naredil ls, požrešen je izginil. 268 00:11:06,180 --> 00:11:12,437 In če naredim "cd pset1", Enter in nato Je spet, zdaj pa je na pravem mestu. 269 00:11:12,437 --> 00:11:14,270 Kot prahi, če za nekateri reason-- posebej 270 00:11:14,270 --> 00:11:16,194 če imate s prekinitvami omrežno povezljivost 271 00:11:16,194 --> 00:11:18,360 ali si hodil okrog campus s svojim prenosnim pokrovom 272 00:11:18,360 --> 00:11:20,180 zaprt, nato pa ga odprli znova in vaš delovni prostor 273 00:11:20,180 --> 00:11:21,730 Zdi se, nekoliko iz ravnotežja, ni big deal. 274 00:11:21,730 --> 00:11:23,646 Samo osvežite brskalnik okno, in bi morala 275 00:11:23,646 --> 00:11:26,339 RESYNC tako da je leva datoteka brskalnik videti natanko 276 00:11:26,339 --> 00:11:27,380 kot terminalskem oknu. 277 00:11:27,380 --> 00:11:27,921 Ne skrbite. 278 00:11:27,921 --> 00:11:31,460 Če ste v dvomih, osvežite stran, tako da Dokler ste jih shranili datoteke že. 279 00:11:31,460 --> 00:11:31,960 V REDU. 280 00:11:31,960 --> 00:11:34,710 Torej mv se lahko uporablja tudi za preimenovanje datotek. 281 00:11:34,710 --> 00:11:36,760 In dajmo si oglejte ta zadnji ukaz tukaj. 282 00:11:36,760 --> 00:11:39,950 Torej suppose-- in to je super pogosta, preveč, že na začetku. 283 00:11:39,950 --> 00:11:46,400 Nekateri učenci občasno ustvarite datoteko imenuje, kaj je say-- kaj je še ena? 284 00:11:46,400 --> 00:11:47,730 Like "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Torej bom kričati, za Nobenega razloga ni, v vseh kape. 286 00:11:51,080 --> 00:11:53,190 Vendar to ni Pravilno ime za datoteko 287 00:11:53,190 --> 00:11:56,660 če samo zato, ker naš problem določiti Specifikacija ni povedal 288 00:11:56,660 --> 00:11:59,430 da shranite datoteko kot vsi pokrovčki "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Namesto tega pričakujemo "water.c" z malimi črkami. 290 00:12:01,320 --> 00:12:03,140 In, v bistvu je to problematično, saj check50, 291 00:12:03,140 --> 00:12:04,370 program, boste da se sestane na problem 292 00:12:04,370 --> 00:12:07,350 nastavite enega, ki se samodejno testira pravilnost kode 293 00:12:07,350 --> 00:12:11,615 se bo kričal na vas, če se ne more našli "water.c" v vse male. 294 00:12:11,615 --> 00:12:12,712 >> Tako da moram popraviti to. 295 00:12:12,712 --> 00:12:14,920 Toliko različnih načinov za to naredili, od katerih je prvi 296 00:12:14,920 --> 00:12:18,330 bi bilo Control-klik ali desni klik ime datoteke in samo spremenite Preimenuj. 297 00:12:18,330 --> 00:12:19,740 Popolnoma v redu, da to storim. 298 00:12:19,740 --> 00:12:21,820 Ampak še enkrat, danes, dajmo naredi malo Ljubitelj. 299 00:12:21,820 --> 00:12:26,680 Oglejmo uporabite mv spremeniti "WATER.C" v "water.c." 300 00:12:26,680 --> 00:12:30,690 Torej, lahko uporabite tudi prvi argument da jo preimenujete v drugem argumentu 301 00:12:30,690 --> 00:12:34,455 če je drugi argument ni, v Dejstvo, mapo ali ime imenika. 302 00:12:34,455 --> 00:12:35,120 >> V redu. 303 00:12:35,120 --> 00:12:39,560 In nenazadnje, malo trick-- tako da sem v moj delovni prostor imenik v tem trenutku. 304 00:12:39,560 --> 00:12:43,660 Če hočem priti v pset eno, Ne morem zagotovo tip "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Ampak to je tako dolgočasno, da tip "pset1" ali daljša imena datotek ali imena imenik 306 00:12:47,260 --> 00:12:47,980 Še vedno. 307 00:12:47,980 --> 00:12:51,960 Torej, zelo pogosto v Linuxu, kar ki jo lahko naredimo je začeti tipkati "PSE" 308 00:12:51,960 --> 00:12:56,100 in samo dolgčas, hit Tab, in pustite, računalnik podatek je za vas. 309 00:12:56,100 --> 00:12:58,190 Super koristno, da se v to navado. 310 00:12:58,190 --> 00:13:01,079 Edini catch je, če imate več datotek ali map začnejo 311 00:13:01,079 --> 00:13:02,870 s črko "p" ali "ps", boste morda morali 312 00:13:02,870 --> 00:13:05,525 vnesti nekaj več, preden Računalnik ne ve, kaj storiti. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Radi bližnjice. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Ta volja vam lahko prihrani veliko časa. 315 00:13:08,695 --> 00:13:11,930 In prav tako, kot smo rekli v predavanju, si lahko pomikate navzgor v zgodovini, gor in dol, 316 00:13:11,930 --> 00:13:15,461 najti pred kratkim izvršen ukazi, kot tudi. 317 00:13:15,461 --> 00:13:15,960 V redu. 318 00:13:15,960 --> 00:13:20,904 Torej, zdaj, dajmo obrniti našo pozornost nazaj na preprost program, zdravo svet. 319 00:13:20,904 --> 00:13:22,195 Torej smo to pripravljeni natančno. 320 00:13:22,195 --> 00:13:24,050 In zdaj, zakaj ne vzamemo pogled na podatkovnih tipov 321 00:13:24,050 --> 00:13:26,776 in nato prehod iz nekaterih ustreza hitrih blokov C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Torej sedaj, da ste začeli pisanje programov v C, 324 00:13:30,031 --> 00:13:32,530 bomo začeli govoriti o podatkovnih tipov in spremenljivk. 325 00:13:32,530 --> 00:13:37,570 Torej nekatere vrste podatkov, ki jih bi želeli vedeti, že sedaj 326 00:13:37,570 --> 00:13:39,400 so tisti, ki so poudarjeno v modri barvi. 327 00:13:39,400 --> 00:13:42,420 Torej imamo int prvi, ki stoji za celo število. 328 00:13:42,420 --> 00:13:46,075 In da ima cela, saj vas morda guessed-- tako 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 in vse druge cela ki si jih lahko zamislite. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: In prav tako negativna. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: In prav tako negativni, ja. 332 00:13:50,220 --> 00:13:51,450 In 0. 333 00:13:51,450 --> 00:13:54,250 Potem imamo boje, ki so s plavajočo vejico. 334 00:13:54,250 --> 00:13:58,360 Torej, to je vse realne številke da imajo pikami. 335 00:13:58,360 --> 00:14:03,960 Torej 5,0, 5,2, in še bolj številke za decimalno vejico, 336 00:14:03,960 --> 00:14:05,620 kot tudi, in tudi negativne. 337 00:14:05,620 --> 00:14:07,530 Potem imamo znak, ki je znak. 338 00:14:07,530 --> 00:14:10,240 Zato mislim, da smo se pogovarjali o to v predavanju danes. 339 00:14:10,240 --> 00:14:15,682 Vendar imamo pisma, za example-- A, B, C-, ki se lahko shrani kot char. 340 00:14:15,682 --> 00:14:18,390 Ampak potem imamo veliko več simbolov ki jih je mogoče shraniti kot char. 341 00:14:18,390 --> 00:14:22,380 In so tisti, ki so shranjeni kot ASCII. 342 00:14:22,380 --> 00:14:25,280 >> In potem imamo bool, ki so Booleans. 343 00:14:25,280 --> 00:14:29,067 In tisti, oceniti na True ali False ali 1 in 0, v tem zaporedju. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: in opozarjajo, da bool prihaja iz knjižnice CS50. 345 00:14:31,650 --> 00:14:33,300 Torej to ni vgrajen v C, vendar je super uporabno 346 00:14:33,300 --> 00:14:34,850 da imajo pojma true in false. 347 00:14:34,850 --> 00:14:36,990 In čeprav vas Morda think-- zabavno dejstvo. 348 00:14:36,990 --> 00:14:43,700 Bool tehnično potrebuje, koliko bitov, resnično, da predstavljajo True primerjavi False? 349 00:14:43,700 --> 00:14:47,910 Koliko bitov misliš bi potrebovali, maksimalno? 350 00:14:47,910 --> 00:14:48,790 Ja, samo eden. 351 00:14:48,790 --> 00:14:52,077 Tako se izkaže, da je C vam ne more dati samo en bit. 352 00:14:52,077 --> 00:14:54,160 Najmanjše merska enota lahko dobite, je osem. 353 00:14:54,160 --> 00:14:57,090 Torej, to je malo potratno, da ste uporabo celotnega bajt, ali osem bitov, 354 00:14:57,090 --> 00:14:58,340 za zastopanje True ali False. 355 00:14:58,340 --> 00:15:01,807 Ampak to je samo način, da je izvajajo v C, ki jih knjižnici CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: In potem tisti, ki sva Ne bom govorila o tem, kot je obširno 357 00:15:04,890 --> 00:15:08,060 Pravica now-- dvojna, da je za večje plovci. 358 00:15:08,060 --> 00:15:09,811 Dolga dolge in kratke tudi cela števila. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: Zares. 360 00:15:10,643 --> 00:15:13,190 V hekerski izdaji pset enega, smo dejansko uporabili dolgo dolgo. 361 00:15:13,190 --> 00:15:15,801 Ampak za standardni izdaji, to ni potrebno. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 V REDU. 364 00:15:17,361 --> 00:15:20,110 Torej operators-- morate biti verjetno seznanjeni z večino od njih. 365 00:15:20,110 --> 00:15:22,620 Poleg tega +; odštevanje, -. 366 00:15:22,620 --> 00:15:24,070 Razmnoževanju, imamo *. 367 00:15:24,070 --> 00:15:25,900 Torej ne X, ki se običajno uporabljajo. 368 00:15:25,900 --> 00:15:27,840 Division, imamo poševnico. 369 00:15:27,840 --> 00:15:31,380 In modulo je naš zadnji izvajalec, ki bomo govorili o sedaj. 370 00:15:31,380 --> 00:15:35,610 To je gospodarski subjekt, ki nam omogoča, da prevzeti preostanek delitve. 371 00:15:35,610 --> 00:15:40,630 Torej, če imamo 4% 2, 4, deljeno z 2 je 2 s preostanek 0. 372 00:15:40,630 --> 00:15:41,740 Torej 4% 2 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 je 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 je 4, kot bi si mislil. 375 00:15:44,870 --> 00:15:48,860 In ne pozabite, ob uporabi vseh teh upravljavcem, da uporabljajo pravila PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Torej, da bo jasno, če vas narediti 4% 2, zakaj je to 0, točno? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Ker 4, deljeno s 2 je 2 z preostanek 0. 378 00:15:57,480 --> 00:16:00,752 Torej nam modulo daje ta ostanek kot nasprotuje zaradi delitve. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: In res, kaj bomo našli to koristno 380 00:16:02,960 --> 00:16:05,640 za to, da v nekaterih problemov da ni nujno ena, 381 00:16:05,640 --> 00:16:08,040 če želite imeti Učinek omejevanja sami 382 00:16:08,040 --> 00:16:10,720 v območju od števil všeč 0 do nečesa, 383 00:16:10,720 --> 00:16:13,904 lahko uporabite modulo zaviti okoli prej kakor kot 2 milijardi 384 00:16:13,904 --> 00:16:16,320 ali 4 milijarde vrednost, ki smo govorili v predavanju. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Ja. 386 00:16:16,870 --> 00:16:19,429 In celo v "požrešen", smo lahko. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Da, v Problem nastavitev ene, kot tudi. 388 00:16:21,345 --> 00:16:22,520 MARIA: Ja, lepo. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Dober namig. 390 00:16:24,340 --> 00:16:25,750 MARIA: Žal mi je. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- tako za Boolovih operatorjev, 392 00:16:28,590 --> 00:16:31,770 bomo govorili o vsem od teh, ki jih vidite tukaj. 393 00:16:31,770 --> 00:16:35,310 Torej, zdaj imamo dva enačaj naveden za enakimi. 394 00:16:35,310 --> 00:16:38,650 Torej tistih, ki so za primerjavo. 395 00:16:38,650 --> 00:16:40,830 Do sedaj smo videli le en enačaj. 396 00:16:40,830 --> 00:16:44,870 To je, ko smo dodeliti vrednost spremenljivke. 397 00:16:44,870 --> 00:16:50,160 Torej, če smo videli int n = 5, potem smo dodeljena 5 spremenljivki n. 398 00:16:50,160 --> 00:16:55,600 Toda, če želimo uporabiti == za Primerjava, lahko preverite, če je n == 5. 399 00:16:55,600 --> 00:16:58,310 In če je n == 5, nato pa, da je res. 400 00:16:58,310 --> 00:17:01,950 >> Torej Boolove operaterji nam omogočajo, v bistvu, 401 00:17:01,950 --> 00:17:04,670 oceniti Boolean izrazi na True ali False. 402 00:17:04,670 --> 00:17:07,819 Torej ni equals-- imamo Klicaj in je enak. 403 00:17:07,819 --> 00:17:14,240 Tako smo lahko, če n preverite tudi ni enako 5-- tako n! = 5. 404 00:17:14,240 --> 00:17:17,640 Manj kot, manjši ali enak, večja kot, večja ali enaka 405 00:17:17,640 --> 00:17:20,720 in potem imamo logičen IN in logična ALI. 406 00:17:20,720 --> 00:17:24,060 In tisti, nam omogočajo, da ocenijo več Logični izrazi skupaj 407 00:17:24,060 --> 00:17:27,930 v bistvu pridejo skupaj kot ena celota Logični izraz. 408 00:17:27,930 --> 00:17:34,970 Torej, če želimo, da bi našli številko, pravijo, ki je večja od 5, vendar manj kot 15 409 00:17:34,970 --> 00:17:39,810 hkrati pa bi jih uporabljamo logični IN operator da vidim, če je n 410 00:17:39,810 --> 00:17:42,937 večja od 5 && n manj kot 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: In tukaj, Tudi to je res enostavno 412 00:17:44,770 --> 00:17:47,290 zgodaj, da po nesreči uporabite samo en 'znak 413 00:17:47,290 --> 00:17:48,572 ali njena samostojna navpična bar. 414 00:17:48,572 --> 00:17:51,280 In upajmo, da bo prevajalnik kričati na vas, ker so dejansko 415 00:17:51,280 --> 00:17:52,530 imajo zelo drugačen pomen. 416 00:17:52,530 --> 00:17:55,660 Za tiste, radoveden, oni uporablja za bitni operacije, 417 00:17:55,660 --> 00:17:57,197 ki delujejo na posameznih bitih. 418 00:17:57,197 --> 00:17:58,780 Vendar vam želim par njih tukaj. 419 00:17:58,780 --> 00:18:01,560 In super pomembno je, da Prvi, enačaj, 420 00:18:01,560 --> 00:18:05,270 ki je upravljavec enakost kot za razliko od operaterja odstop. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: In navpična vrstica ki se nahaja med Delete in vračanju. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Da. 423 00:18:09,260 --> 00:18:11,420 Na tipično ameriško tipkovnico. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Yep. 425 00:18:13,190 --> 00:18:15,890 Torej, kaj je skok v desno v pogojni stavki. 426 00:18:15,890 --> 00:18:18,300 V Scratch, ste že videli, je verjetno, 427 00:18:18,300 --> 00:18:22,730 Če izjave, ki vam omogočajo, da preverite, če je kaj res, potem 428 00:18:22,730 --> 00:18:23,660 storiti kaj drugega. 429 00:18:23,660 --> 00:18:28,410 Torej, ste morda želeli da preverite, če vaš sprite je 430 00:18:28,410 --> 00:18:31,410 dotika kakšno drugo sprite ali rob zaslona. 431 00:18:31,410 --> 00:18:35,520 In potem boste morda želeli končate igro ali pa kaj drugega. 432 00:18:35,520 --> 00:18:40,000 Torej skladnji za da je "if (pogoj)." 433 00:18:40,000 --> 00:18:46,820 Torej, če je vaš sprite dotika nekaj, potem pa je znotraj zavitih oklepajev. 434 00:18:46,820 --> 00:18:48,980 >> Potem bomo imeli, če-ostalo izjav. 435 00:18:48,980 --> 00:18:54,080 Else nam omogoča, da naredite nekaj če je izpolnjen pogoj, da bomo 436 00:18:54,080 --> 00:18:55,870 preverite v začetku ni res. 437 00:18:55,870 --> 00:19:01,530 Torej, če je sprite dotika mejni to storite, še nekaj drugega. 438 00:19:01,530 --> 00:19:04,030 Torej drugače narediti nekaj drugega. 439 00:19:04,030 --> 00:19:07,530 Potem imamo kratek zgled za to. 440 00:19:07,530 --> 00:19:11,551 Torej, če (military_time <12), smo želite printf "Dobro jutro!" 441 00:19:11,551 --> 00:19:13,300 Else bomo printf "Dober večer!" 442 00:19:13,300 --> 00:19:14,860 Osnovni primer. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Dobro. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Torej, zdaj imamo izjave stikal. 446 00:19:18,560 --> 00:19:21,960 Preklopite izjave Na splošno je mogoče Dovolite nam, da narediti veliko isto stvar 447 00:19:21,960 --> 00:19:25,070 da smo pravkar govorili o, če izkazih. 448 00:19:25,070 --> 00:19:29,440 Na primer, zdaj imamo splošna oblika izkaza stikala 449 00:19:29,440 --> 00:19:33,870 ki nam omogoča, da sprejmejo spremenljivka imenovan n 450 00:19:33,870 --> 00:19:37,670 in ga primerjajte z veliko različne vrednosti, ki je tu 451 00:19:37,670 --> 00:19:40,010 so pozvali constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Morda imamo veliko več. 453 00:19:41,150 --> 00:19:42,930 In tisti, ki se imenuje primere. 454 00:19:42,930 --> 00:19:46,280 >> Torej, če imamo stikalo statement-- in to deluje 455 00:19:46,280 --> 00:19:50,580 Samo za integers-- imamo spremenljivka v tem primeru, ki je n. 456 00:19:50,580 --> 00:19:53,840 Če je spremenljivka n enako constant1 smo 457 00:19:53,840 --> 00:19:59,720 bo izvršiti nekaj del kode ali nekaj, kar želimo narediti. 458 00:19:59,720 --> 00:20:01,280 In potem bi prekinil. 459 00:20:01,280 --> 00:20:04,820 Torej odmor pomeni, da izjava stikalo 460 00:20:04,820 --> 00:20:08,120 bodo prenehali izvršitve, če n je enak constant1, 461 00:20:08,120 --> 00:20:09,752 in potem bo vaš program nadaljuje. 462 00:20:09,752 --> 00:20:11,835 To bo izhod iz nje stikalo izjavo in jo bom 463 00:20:11,835 --> 00:20:13,520 še nekaj drugega. 464 00:20:13,520 --> 00:20:17,204 >> Če pa nni enako constant1, potem velja za constant2 465 00:20:17,204 --> 00:20:17,870 se bo preverjala. 466 00:20:17,870 --> 00:20:21,750 Torej, če je n enak constant2, da druga odrezek kode bo usmrčen. 467 00:20:21,750 --> 00:20:23,850 In potem bomo odmor če je enaka njo. 468 00:20:23,850 --> 00:20:27,580 In potem bomo lahko imeli also-- ne nujno, though-- privzeto primera, 469 00:20:27,580 --> 00:20:32,290 kar se zgodi, če n ni enak katerega koli od primerov, ki ste jih naštetih. 470 00:20:32,290 --> 00:20:35,400 In v privzetem primeru smo tudi Ne potrebujem odmor nujno 471 00:20:35,400 --> 00:20:39,271 ker izjava stikalo bo vedel da mora končati po privzeto 472 00:20:39,271 --> 00:20:40,270 primeru, če je temu tako. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Ampak slogovno, smo ga vedno dal noter. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Ja. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Ja. 476 00:20:42,710 --> 00:20:44,750 Torej, še posebej, ko se začenjajo, še posebej, če med tistimi manj 477 00:20:44,750 --> 00:20:47,458 udobna, bi jaz osebno Samo Priporočamo držijo z investicijskim skladom 478 00:20:47,458 --> 00:20:51,564 in IFS elses in če-ostalo-če-elses in tako naprej, če le 479 00:20:51,564 --> 00:20:53,480 ker oni so malo bolj enostavno. 480 00:20:53,480 --> 00:20:56,142 To je lepo optimizacija, ali včasih celo estetsko jo 481 00:20:56,142 --> 00:20:57,350 naredi kodo bolj berljivo. 482 00:20:57,350 --> 00:20:59,599 In dejansko verjetno mid-semester bomo videli problem 483 00:20:59,599 --> 00:21:02,504 določi, kjer je samo izgleda bolje in lažje branje za ljudi 484 00:21:02,504 --> 00:21:03,670 z uporabo switch stavka. 485 00:21:03,670 --> 00:21:05,460 Ampak ne skrbite oklepa to prezgodaj. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Ja. 487 00:21:05,680 --> 00:21:08,840 Če imate veliko, če izjav, da le ne bi bilo zelo berljiva. 488 00:21:08,840 --> 00:21:10,965 To morda ne bo zelo hitro da greš skozi to. 489 00:21:10,965 --> 00:21:13,230 Torej preklop izjave lahko zelo koristne, kot tudi. 490 00:21:13,230 --> 00:21:17,900 In tudi, ne remember-- ne pozabite postaviti premorov tam. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Ne spomnim tega. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Ker potem boste morda padec skozi od primera do drugega. 493 00:21:24,890 --> 00:21:27,930 Torej, recimo, to sodno constant1 ni imel izjavo odmor v njem. 494 00:21:27,930 --> 00:21:31,920 Potem bi mi padli skozi znotraj primera constant2. 495 00:21:31,920 --> 00:21:35,070 In ne želimo storiti, da če smo že dosegli sodno constant1 496 00:21:35,070 --> 00:21:37,830 in je enako n. 497 00:21:37,830 --> 00:21:45,100 >> Tako, na primer, če imamo spremenljivko n, ki vsebuje številko razreda, 498 00:21:45,100 --> 00:21:48,990 in želimo, da bi videli, kaj da Razred is-- če je n enak 50, 499 00:21:48,990 --> 00:21:51,957 bomo print "CS50 je Uvod v računalništvo in informatiko I. " 500 00:21:51,957 --> 00:21:53,040 Potem bomo prekinil. 501 00:21:53,040 --> 00:21:53,920 In to je to. 502 00:21:53,920 --> 00:21:55,950 Če pa je n enak do 51, bomo 503 00:21:55,950 --> 00:21:58,494 za tiskanje "CS51 je Uvod Computer Science II. " 504 00:21:58,494 --> 00:21:59,910 Potem pa, še enkrat, bomo prekinil. 505 00:21:59,910 --> 00:22:05,080 Če pa potem damo 124, 61, kateremkoli druga številka, ki jo lahko zamislite, 506 00:22:05,080 --> 00:22:06,890 ali program ne bo priznati, da. 507 00:22:06,890 --> 00:22:09,010 Tako se dogaja, da rečemo: "Žal mi je, da sem ne poznajo tega razreda. " 508 00:22:09,010 --> 00:22:10,009 In to se dogaja, da bi prekinil. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Torej lahko res videli if, else if, drugega idejo tukaj. 510 00:22:12,847 --> 00:22:15,430 To je samo drugačna sintaksa za izražanje natančno isto idejo. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Točno tako. 512 00:22:17,690 --> 00:22:19,480 Zdaj imamo ternarnih operaterjev. 513 00:22:19,480 --> 00:22:24,900 Torej ternarno operaterji tri parts-- pogoj, 514 00:22:24,900 --> 00:22:27,220 kaj storiti, če da je pogoj izpolnjen, 515 00:22:27,220 --> 00:22:29,730 in potem je nekaj storiti če ta pogoj je napačen. 516 00:22:29,730 --> 00:22:33,400 Torej vidite, v bistvu, skladnja, da je tu. 517 00:22:33,400 --> 00:22:37,792 Imamo vprašaj, in potem the-- kaj pravimo to? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: debelo črevo. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Hvala. 521 00:22:39,599 --> 00:22:41,880 Žal mi je. 522 00:22:41,880 --> 00:22:45,800 Zato si oglejmo našem primeru do vidim, če bomo lahko osmisliti this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Torej, tukaj vidimo našo logični operator == da primerja spremenljivo class_num 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 Torej class_num trgovin celo število. 527 00:22:55,150 --> 00:22:58,180 In če te celo enak 50, potem smo 528 00:22:58,180 --> 00:23:02,810 dogaja, da shranite "David Malan" znotraj niza profesor. 529 00:23:02,810 --> 00:23:05,912 Če razred številka ne enak 50, "ni David Malan" 530 00:23:05,912 --> 00:23:07,120 se bo profesor. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Hvala. 532 00:23:08,630 --> 00:23:12,110 In tako se zdi to enakovredno Kaj bi rekli na prvi pogled? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: To se mi zdi kot če-ostalo izjave. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Ja. 536 00:23:20,709 --> 00:23:24,020 In v bistvu je to nekako o lepi eno podlogo, 537 00:23:24,020 --> 00:23:27,520 tako rekoč, za izvajanje natanko logika če-ostalo 538 00:23:27,520 --> 00:23:29,010 ampak delaš vse v enem koraku. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Točno tako. 540 00:23:29,860 --> 00:23:30,360 Ja. 541 00:23:30,360 --> 00:23:33,520 Torej, če-else stavki morda zavzamejo veliko prostora. 542 00:23:33,520 --> 00:23:36,283 So morda predolgo za nekaj tako enostavno, kot to. 543 00:23:36,283 --> 00:23:38,350 Torej je to lahko zelo jedrnat in zelo lepo. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Torej, zdaj gremo v gledaš znova in znova izvršitve nekaj, 546 00:23:46,820 --> 00:23:50,060 tako Preverjanje pogojeval večkrat 547 00:23:50,060 --> 00:23:53,510 in nato nadaljuje, da narediš nekaj medtem ko je pogoj izpolnjen. 548 00:23:53,510 --> 00:23:56,740 Torej, to nas pripelje lepo v while zanke. 549 00:23:56,740 --> 00:23:59,270 >> Na levi imamo naša prva while zanko. 550 00:23:59,270 --> 00:24:03,840 Torej, medtem ko je nekaj res, nekaj narediti znova in znova. 551 00:24:03,840 --> 00:24:08,850 Zato poskrbite, da opazite, da je naš pogoj tukaj je potrjena na vrhu. 552 00:24:08,850 --> 00:24:14,150 Ker je z našim drugim loop-- mu pravimo da do-medtem loop-- naredimo nekaj, 553 00:24:14,150 --> 00:24:15,890 potem smo preveriti pogoj. 554 00:24:15,890 --> 00:24:17,980 In če tega pogoja še vedno velja, 555 00:24:17,980 --> 00:24:20,150 gremo nazaj in še enkrat stvar. 556 00:24:20,150 --> 00:24:23,360 Tako je glavna razlika je, če pogoj je preveriti. 557 00:24:23,360 --> 00:24:29,260 In koda nikoli ne sme biti izvrši, če je pogoj ne 558 00:24:29,260 --> 00:24:30,430 Res z while zanko. 559 00:24:30,430 --> 00:24:33,050 Ker je z do-časa zanka, imamo kodo 560 00:24:33,050 --> 00:24:35,380 da se vedno izvajajo vsaj enkrat. 561 00:24:35,380 --> 00:24:37,470 In potem ko je pogoj še vedno velja, 562 00:24:37,470 --> 00:24:39,960 gremo lahko nazaj in spet Ponovil notranjosti. 563 00:24:39,960 --> 00:24:43,625 Torej, zakaj misliš, da bi uporabili do-while zanko čez while? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Prav. 566 00:24:48,720 --> 00:24:52,600 Torej, če želimo morala spodbuditi Uporabnik za neke vrste vhodu, 567 00:24:52,600 --> 00:24:55,400 če želimo od njih zahteva, vnesti svoje ime, 568 00:24:55,400 --> 00:24:57,342 želimo, da bi jih enkrat vsaj vprašati. 569 00:24:57,342 --> 00:24:59,050 In če ne vstopijo to ime, nismo 570 00:24:59,050 --> 00:25:00,740 dogaja, da jih ponovno vprašati ker smo že vedeli. 571 00:25:00,740 --> 00:25:02,656 Ampak, če ne vnesete njihovo ime, ali če so 572 00:25:02,656 --> 00:25:05,787 vnesti nekaj, kar je seveda ni ime, 573 00:25:05,787 --> 00:25:08,120 smo še vedno želijo nadaljevati jih prosi za njihovo ime. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: In v predavanju smo imeli eno kot je ta z dobili pozitivno int 575 00:25:10,710 --> 00:25:13,550 Primer, kjer ni nič preverite na prvi, ker imate sploh ne 576 00:25:13,550 --> 00:25:14,190 gotten int. 577 00:25:14,190 --> 00:25:16,680 Tako smo želeli narediti this-- dobili int od user-- 578 00:25:16,680 --> 00:25:18,860 Nato preverite, morda, znova in znova in znova. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Točno tako. 580 00:25:21,030 --> 00:25:22,060 Za loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Za lahko zanke nam omogočajo, da storiti skoraj točno isto stvar, kot dobro. 582 00:25:25,842 --> 00:25:27,300 To je pravzaprav točno isto stvar. 583 00:25:27,300 --> 00:25:30,190 Torej ni nič, da lahko storite z za zanke 584 00:25:30,190 --> 00:25:32,840 ki jih ne bi mogli storiti z while zanke. 585 00:25:32,840 --> 00:25:36,900 Ampak za zanke lahko zdi malo malo več skladenjsko zapleten 586 00:25:36,900 --> 00:25:39,730 ker imajo trije deli v notranjosti, kar 587 00:25:39,730 --> 00:25:42,990 je bil pred samo stanje z while zanke. 588 00:25:42,990 --> 00:25:48,260 Torej je prvi del, ki jih morje, levo-najbolj, imamo "int škratje = 0." 589 00:25:48,260 --> 00:25:51,490 Torej, to je, če smo inicializacijo našo spremenljivko. 590 00:25:51,490 --> 00:25:55,210 >> Potem imamo podpičje in "škratje <7." 591 00:25:55,210 --> 00:25:57,100 Torej, to je, če iz pogoj dejansko je. 592 00:25:57,100 --> 00:26:00,170 Tako, da je tisto, kar bi morali dal le v nekaj časa loop-- 593 00:26:00,170 --> 00:26:01,880 "medtem ko škratje <7." 594 00:26:01,880 --> 00:26:05,380 Tukaj, da gre v Sredi našega zanko. 595 00:26:05,380 --> 00:26:07,190 Torej "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 In potem je naš zadnji del je "Škrati ++" ki je, če smo posodobili našo spremenljivko. 597 00:26:11,350 --> 00:26:15,470 Torej je pomembna stvar zavedaš, da je to 598 00:26:15,470 --> 00:26:22,010 se dogaja, da gredo skozi to zanko sedemkrat in izvršiti sedemkrat. 599 00:26:22,010 --> 00:26:24,020 Torej imamo sedem Škrati, in oni so vsi 600 00:26:24,020 --> 00:26:26,020 reči: "Jaz sem tukaj da vam pomaga, Snow White " 601 00:26:26,020 --> 00:26:28,860 ker so pripravljeni pomagati Sneguljčico. 602 00:26:28,860 --> 00:26:33,600 >> Z while zanke, bi smo naredili inicializacija in posodabljanje 603 00:26:33,600 --> 00:26:37,490 ne znotraj stanju, še enkrat, vendar bodisi pred ali znotraj while 604 00:26:37,490 --> 00:26:40,210 se prepričajte, da we-- ker smo vedno potrebujemo te dele. 605 00:26:40,210 --> 00:26:42,835 Torej, se prepričajte, da imamo jih, bi imel še vedno jih je dodal 606 00:26:42,835 --> 00:26:44,580 no, samo ne v oklepaju. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: In tako izgleda like-- v predavanje, na primer, 608 00:26:47,288 --> 00:26:50,250 Sem skoraj vedno uporabite, kot so, i in n in precej dolgočasno spremenljivke. 609 00:26:50,250 --> 00:26:53,050 Izgleda, da jih lahko uporabite več spretno imenom spremenljivke, preveč. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Ja, to je pravzaprav zelo lepo uporabiti malo bolj opisne spremenljivke 611 00:26:56,300 --> 00:26:59,400 ker še posebej, če nekdo drug branju vašega code-- morda ste greder 612 00:26:59,400 --> 00:27:00,940 ali če ste sodelovanje z somebody-- 613 00:27:00,940 --> 00:27:03,481 želite prepričati, da razumeti, kaj počnete. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> V REDU. 616 00:27:06,400 --> 00:27:11,435 Torej je to nekaj zelo funky-- za zanko znotraj za zanko. 617 00:27:11,435 --> 00:27:13,060 Ne vem, če smo videli že prej. 618 00:27:13,060 --> 00:27:13,830 Verjetno ne. 619 00:27:13,830 --> 00:27:17,750 Vendar smo lahko dejansko this-- tako zank namesto zank. 620 00:27:17,750 --> 00:27:25,130 Torej, ali kdo želi morda sprehod me skozi kaj se tukaj dogaja? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: bom zabodel. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: OK. 625 00:27:30,636 --> 00:27:34,690 Torej, spoiler-- želimo natisniti stvari da je v kotu spodnjem desnem 626 00:27:34,690 --> 00:27:35,190 tam. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Right. 628 00:27:35,450 --> 00:27:35,710 Ja, ja. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Torej smo pravkar dal, da je izhod vzorec tam. 630 00:27:38,043 --> 00:27:42,590 Torej lahko sklepamo iz vrhunska zanka, da ste 631 00:27:42,590 --> 00:27:45,680 ponavljanjem več vrsticah oddaljenih zanke, tako rekoč. 632 00:27:45,680 --> 00:27:48,107 In ste ponavljanjem več kolone z najgloblje zanke. 633 00:27:48,107 --> 00:27:50,190 In intuitivno, to upajmo smiselna 634 00:27:50,190 --> 00:27:52,070 ker po naravi vsak program, ki smo jih videli 635 00:27:52,070 --> 00:27:55,570 Prej, printf, ki je Funkcija smo s pomočjo, na koncu, 636 00:27:55,570 --> 00:27:58,190 ima možnost tiskanja stvari ven v bistvu po vrsticah. 637 00:27:58,190 --> 00:27:59,960 Kot, ko ste na izhodu nova linija, tam je 638 00:27:59,960 --> 00:28:02,876 ni podvojitev nazaj in kaj tiskanje višje na zaslonu, vsaj 639 00:28:02,876 --> 00:28:04,530 ne uporabljate printf, kot je ta. 640 00:28:04,530 --> 00:28:07,750 >> In tako v tem pogledu, da naredi Občutek, da je najbolj zunanja zanka 641 00:28:07,750 --> 00:28:10,930 Treba je sklicujoč se na vrstic ker je za vsako dati vrstica, 642 00:28:10,930 --> 00:28:13,650 boste želeli izpisal xxxxx, in nato 643 00:28:13,650 --> 00:28:15,520 premaknete na naslednjo vrstico, xxxxx. 644 00:28:15,520 --> 00:28:17,317 Torej vrstice pridejo prvi. 645 00:28:17,317 --> 00:28:19,150 In potem v vsak vrstica, tiskate stolpce. 646 00:28:19,150 --> 00:28:21,160 Če si se potrudil, da ga je naredil nasprotno, bi to verjetno ne 647 00:28:21,160 --> 00:28:21,690 pridi ven, kot jih nameravate. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Ja. 649 00:28:22,190 --> 00:28:24,950 Mi samo ne more iti nazaj prejšnja vrstica z printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: In kaj je zanimivo na današnjem klepetu o obsegu, 651 00:28:27,658 --> 00:28:31,600 dejansko je, da je vrstica int ki je izjavil v vrhunski zanko. 652 00:28:31,600 --> 00:28:34,030 Ampak obvestilo, da je še vedno notranjosti, tako rekoč 653 00:28:34,030 --> 00:28:35,982 so zaviti oklepaji, ki takoj sledi, 654 00:28:35,982 --> 00:28:38,440 čeprav to ni tehnično v teh zavitimi oklepaji. 655 00:28:38,440 --> 00:28:41,750 Torej vrstica je v okviru za celota odrezek kode, 656 00:28:41,750 --> 00:28:44,690 tako znotraj zunanjega za zanko in notranjost notranje zanke. 657 00:28:44,690 --> 00:28:48,050 Ampak nasprotno, kadar je stolpec v obsegu? 658 00:28:48,050 --> 00:28:49,810 Spremenljivka stolpec? 659 00:28:49,810 --> 00:28:51,310 Ja, samo v notranjosti zanke. 660 00:28:51,310 --> 00:28:54,280 In to je v redu, ker nimamo dostopa do je izven njenih zavitimi oklepaji. 661 00:28:54,280 --> 00:28:57,280 Vse mi je izpisal novo črta na samem koncu tam. 662 00:28:57,280 --> 00:28:58,670 Tako, da v bistvu v redu. 663 00:28:58,670 --> 00:29:03,740 >> Torej, to ima učinek, izgleda, početje tri vrstice in štiri stolpce. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Right. 665 00:29:04,370 --> 00:29:06,270 Torej, najprej gremo skozi naš prvi vrsti. 666 00:29:06,270 --> 00:29:10,520 In ravno v našem prvi vrsti, delamo štirje stolpci znotraj prve vrste. 667 00:29:10,520 --> 00:29:11,980 Tako smo izpisal štiri Xe. 668 00:29:11,980 --> 00:29:15,800 In potem bomo lahko izhod iz zanke, saj smo že natisnjene štiri Xe. 669 00:29:15,800 --> 00:29:17,100 In smo natisniti novo linijo. 670 00:29:17,100 --> 00:29:19,920 In potem gremo skozi Isti postopek za dve več vrstic 671 00:29:19,920 --> 00:29:21,170 da bi skupaj tri. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: In to je treba omeniti, da je samo artefakt pisave, dejstvo, 673 00:29:23,530 --> 00:29:25,680 da izhod vzorca zdi toliko višji, 674 00:29:25,680 --> 00:29:27,520 kot da to še ni vrstic kot stolpcev. 675 00:29:27,520 --> 00:29:29,824 Ampak to je samo zato, ker je X je višja, kot je široka. 676 00:29:29,824 --> 00:29:32,740 To je vse, kar je tam dogaja, plus bel prostor med vrsticami. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Right. 678 00:29:33,281 --> 00:29:34,792 Cool. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: V redu. 680 00:29:35,750 --> 00:29:39,830 Torej, hiter pogled na problem določiti enega, sprejme kakršna koli vprašanja, nato pa prekine? 681 00:29:39,830 --> 00:29:40,330 V redu. 682 00:29:40,330 --> 00:29:43,164 Torej, problem en niz, tam je tri poglavitni izzivi, na koncu. 683 00:29:43,164 --> 00:29:44,955 Najprej pa boste našli da je problem določiti 684 00:29:44,955 --> 00:29:47,900 specifikacije, tako kot mnoge psets to jesen, se dogaja, da sprehod 685 00:29:47,900 --> 00:29:50,691 skozi nekaj vaj toplo-up, opozoriti vas ven nekaj sredstev 686 00:29:50,691 --> 00:29:52,440 da vam lahko zahteva ali ne bi že videli. 687 00:29:52,440 --> 00:29:54,440 Na primer, CS50 ima zbirko kratke hlače, 688 00:29:54,440 --> 00:29:56,481 ki so kratke video posnetke, ni v nasprotju to, vendar so 689 00:29:56,481 --> 00:29:58,460 Zelo temo specific-- morda pet minut, 690 00:29:58,460 --> 00:30:02,360 10 minut v dolžino na zank ali o pogojih ali o algoritmih 691 00:30:02,360 --> 00:30:04,125 ali kasneje več napredne teme, kot tudi. 692 00:30:04,125 --> 00:30:06,000 In smo na splošno vgradili tiste v problem 693 00:30:06,000 --> 00:30:07,950 sklopov, tako da študenti imajo vir s katero 694 00:30:07,950 --> 00:30:10,840 pregledati gradivo, ki bi ga lahko imela že prišli v predavanju ali oddelku. 695 00:30:10,840 --> 00:30:13,220 Ampak na ta način, da je bolj osredotočen in bolj na dosegu roke. 696 00:30:13,220 --> 00:30:15,928 >> Mi ponavadi tudi vlagati v problemu postavlja stvari imenovanih walkthroughs. 697 00:30:15,928 --> 00:30:20,790 Torej skoraj vse primere delam V predavanju, na odru tukaj, smo tudi 698 00:30:20,790 --> 00:30:24,565 so posnet na kamero v napreduje bolj počasneje, 699 00:30:24,565 --> 00:30:28,760 bolj intimno walkthrough mene na moj laptop navedenega zakonika, po vrsticah 700 00:30:28,760 --> 00:30:31,427 tako da v razredu, bomo pogosto posneto skozi nekaj ali nekoga 701 00:30:31,427 --> 00:30:33,260 bo interject z odgovoriti na vprašanje. 702 00:30:33,260 --> 00:30:35,820 Vendar ne nujno potopi v za vse v občinstvu. 703 00:30:35,820 --> 00:30:38,230 Tako boste našli kodo walkthroughs Za večino primerov 704 00:30:38,230 --> 00:30:40,950 da delamo tukaj v predavanju, tako da boste lahko sprehodite skozi njo v svojem tempu 705 00:30:40,950 --> 00:30:43,580 in previti nazaj ali naprej ali preskočite skupaj, če želite. 706 00:30:43,580 --> 00:30:45,356 >> Tam je pogosto nekaj toplo-up vprašanja, 707 00:30:45,356 --> 00:30:47,105 vas prosim, da nekako okrepiti ta material 708 00:30:47,105 --> 00:30:50,250 in se prepričajte, da ste udobno pred boste nadaljevali s preostalim pset. 709 00:30:50,250 --> 00:30:51,700 In potem seveda tam je pset sama. 710 00:30:51,700 --> 00:30:53,450 In ena od stvari, smo zelo namerno 711 00:30:53,450 --> 00:30:57,202 storiti v CS50 je skoraj vsak nezanimivo ali intelektualno nezanimiva 712 00:30:57,202 --> 00:30:58,910 mehanska korak, ki boste morda morali narediti 713 00:30:58,910 --> 00:31:00,519 je skoraj vedno zelo dobro dokumentirano. 714 00:31:00,519 --> 00:31:03,560 Tekom izraza, bomo začetek vprašati bolj retorična vprašanja 715 00:31:03,560 --> 00:31:06,187 kot se spomnite, kako to ali ono? 716 00:31:06,187 --> 00:31:08,520 Ampak na splošno, boste našli da vas je problem kompleti dobili 717 00:31:08,520 --> 00:31:10,269 prek mehanike nečesa tako da 718 00:31:10,269 --> 00:31:14,160 zanimive, intelektualnimi izzivi se na koncu prepuščena vam študenta. 719 00:31:14,160 --> 00:31:17,390 >> S tem je dejal, Zamyla, za katere smo hranijo danes sklicuje na predavanju 720 00:31:17,390 --> 00:31:20,190 je eden od naših dolgoletni osebja Član, ki ima tudi walkthroughs 721 00:31:20,190 --> 00:31:24,520 o posebnih problemih pset, kot so Mario in pohlepni, čeprav ni voda letos. 722 00:31:24,520 --> 00:31:26,540 In to je v tistih, walkthroughs, da je pogosto 723 00:31:26,540 --> 00:31:29,450 ponuja nekaj nasvetov in trikov za kako nadaljevati, nikoli ne pove, 724 00:31:29,450 --> 00:31:31,810 točno, kaj storiti, vendar rather-- kot pogoj, 725 00:31:31,810 --> 00:31:35,200 če will-- vam daje vsaj Nekaj ​​idej, tako da je do vas, 726 00:31:35,200 --> 00:31:37,830 v končni fazi, da se odločijo, kako se jim približati. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: Nekako všeč visoki ravni razumevanje logike, kaj 728 00:31:41,200 --> 00:31:42,220 vas prosi, da storiti. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Točno tako. 730 00:31:42,485 --> 00:31:44,190 In v bistvu Zamyla je walkthroughs so namenjeni 731 00:31:44,190 --> 00:31:46,190 odgovoriti na pogosto vprašal vprašanje, kje 732 00:31:46,190 --> 00:31:48,610 naredil sem začel, še posebej, če te dolge specifikacije so 733 00:31:48,610 --> 00:31:51,960 malo zastrašujoče, saj vso besedilo in podobe, ki jih imajo v njih. 734 00:31:51,960 --> 00:31:54,890 >> Torej water.c, boste našli po tem, ko ste ga zaključili, 735 00:31:54,890 --> 00:31:56,920 je pravzaprav dokaj preprosta. 736 00:31:56,920 --> 00:31:58,882 Absolutno so kup od vas bo bang 737 00:31:58,882 --> 00:32:01,840 tvoje glave proti steni poskuša da ugotovimo, zakaj to ni sestavljanje 738 00:32:01,840 --> 00:32:03,450 ali zakaj to ne deluje pravilno. 739 00:32:03,450 --> 00:32:05,040 Ampak, ko ste končali z njo in ko ste 740 00:32:05,040 --> 00:32:07,620 Nekaj ​​časa se spopadam s katerim koli hroščev, ki jih lahko imajo, 741 00:32:07,620 --> 00:32:09,490 boste ugotovili, da je zelo kratek program. 742 00:32:09,490 --> 00:32:11,770 To je mogoče storiti v samo nekaj vrstic kode, ki so večinoma 743 00:32:11,770 --> 00:32:15,030 smo tukaj videli v predavanju že, če si sestavite prave gradnike. 744 00:32:15,030 --> 00:32:16,810 >> In kot vam predlagamo, tukaj pa se dogaja, da se posvetujte 745 00:32:16,810 --> 00:32:22,250 da določite, koliko minut nekdo se tušira na kampusu. 746 00:32:22,250 --> 00:32:24,779 Mi določite v problemu nastavitev hitrosti toka vode 747 00:32:24,779 --> 00:32:27,320 v, kot, prho z nizkim pretokom glava, podobno kot Seinfeld posnetek 748 00:32:27,320 --> 00:32:29,180 smo videli včeraj, ali njegov nasproti. 749 00:32:29,180 --> 00:32:30,971 In potem boste morali narediti malo matematike, 750 00:32:30,971 --> 00:32:34,710 really-- aritmetično uporabo C povedati nam, koliko, približno, steklenice vode 751 00:32:34,710 --> 00:32:37,720 je, da je enakovreden, če smo ob n-minutni prha. 752 00:32:37,720 --> 00:32:41,389 >> Zdaj, v mario.c, to se dogaja biti nekoliko daljši programa. 753 00:32:41,389 --> 00:32:42,930 To še vedno ne bo tako dolgo. 754 00:32:42,930 --> 00:32:45,130 Le nekaj vrstic, daljše od water.c. 755 00:32:45,130 --> 00:32:48,230 Ampak to se dogaja, da je priložnost poustvariti starodobnim Mario 756 00:32:48,230 --> 00:32:50,670 piramida iz Super Mario Brata ali nekaj nadaljevalnih. 757 00:32:50,670 --> 00:32:53,510 To se ne bo videti, kot lepša ali kot barvita, kot da je eden tam. 758 00:32:53,510 --> 00:32:56,468 Mi smo le, da bo za uporabo malo oznake tem kot jih imamo tukaj na zaslonu 759 00:32:56,468 --> 00:32:58,120 uporabi besedilo ASCII. 760 00:32:58,120 --> 00:33:00,362 Vendar pa bo približno isto idejo. 761 00:33:00,362 --> 00:33:02,570 In to se dogaja, da je uveljavljajo, da je na prvi pogled 762 00:33:02,570 --> 00:33:04,720 Zdi se precej simple-- samo tiskanje preprosto piramido. 763 00:33:04,720 --> 00:33:07,345 Ampak tam je nekaj značilnosti tukaj, ki so zanimive. 764 00:33:07,345 --> 00:33:12,400 Obvestilo, da je skrajni desni rob piramida dejansko ima širino dveh. 765 00:33:12,400 --> 00:33:14,570 Torej je dva enaka višina kolone, ki 766 00:33:14,570 --> 00:33:16,804 naredi to zahtevajo malo malo misli, da bi 767 00:33:16,804 --> 00:33:19,720 da boste dobili, da je ravno prav, kot nasprotju s samo popolnoma nagnjen 768 00:33:19,720 --> 00:33:20,220 linijo. 769 00:33:20,220 --> 00:33:23,340 Tako da je malo primeru kota vendar se ujema z dejansko igro. 770 00:33:23,340 --> 00:33:27,610 >> In to je tudi non-očitno na prvi pogled kako natisniti bel prostor. 771 00:33:27,610 --> 00:33:29,430 Torej, ko sem pogled na Vzorec izhod here-- 772 00:33:29,430 --> 00:33:32,440 in to je tudi v spec-- je nekako izgleda kot pravokotnik, 773 00:33:32,440 --> 00:33:35,120 toda diagonali Pravokotnik je odsekal, 774 00:33:35,120 --> 00:33:37,320 in to je samo belih lis, tako rekoč. 775 00:33:37,320 --> 00:33:40,100 In tako pogosto zastavljena Vprašanje tu je vedno dobro, 776 00:33:40,100 --> 00:33:43,302 kako premakniti oznake tem kot da je pravica? 777 00:33:43,302 --> 00:33:44,760 Ali kako natisniti presledkov? 778 00:33:44,760 --> 00:33:46,860 In to je pravzaprav lažje kot večina študentov misliš. 779 00:33:46,860 --> 00:33:47,360 Prav? 780 00:33:47,360 --> 00:33:51,620 Lahko ga približati vizualno, samo hitting preslednico enkrat ali dvakrat 781 00:33:51,620 --> 00:33:52,700 ali trikrat. 782 00:33:52,700 --> 00:33:56,260 >> In tako, čeprav z printf smo skoraj vedno izpisal niz ali int 783 00:33:56,260 --> 00:33:59,950 ali beseda kot "zdravo, svet "ali niz besed, 784 00:33:59,950 --> 00:34:03,560 lahko pa tudi samo tiskanje quote, prostor, konec citata. 785 00:34:03,560 --> 00:34:06,320 In da bo dejansko dal si bel prostor tam. 786 00:34:06,320 --> 00:34:08,330 Tako da se vodijo v mislih in ne overthink to. 787 00:34:08,330 --> 00:34:10,570 Res je, da odloči, vrsto za vrsto, ki zapored 788 00:34:10,570 --> 00:34:14,280 ni v nasprotju z vašo primer pred trenutkom, koliko od tistih, 789 00:34:14,280 --> 00:34:18,420 stolpci morajo biti belih lis in koliko jih mora biti oznake tem. 790 00:34:18,420 --> 00:34:21,560 To bo trajalo nekaj časa, vendar je navsezadnje logika puzzle z menoj. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Ja. 792 00:34:22,060 --> 00:34:25,060 Toda logika dogaja vrsto za vrsto se bo zelo koristno tukaj. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Ja. 794 00:34:25,810 --> 00:34:28,976 Mislim, da je koda vzorec ste gave-- celo čeprav to ni bil celoten program. 795 00:34:28,976 --> 00:34:34,247 Morate še vedno int in glavna in neveljavne in #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 Veliko stvari iz predavanja. 797 00:34:35,580 --> 00:34:37,629 Toda gradniki Zdi se, da obstaja. 798 00:34:37,629 --> 00:34:39,920 In potem na koncu je nekaj malo več algoritmično. 799 00:34:39,920 --> 00:34:43,210 Tako se izkaže, da kadarkoli boste gredo v CVS ali katero koli priročno skladišče 800 00:34:43,210 --> 00:34:47,810 in nekdo ti kazalci v Blagajniški zapisi ali kovanci so spremembe, 801 00:34:47,810 --> 00:34:50,620 se izkaže, da so se ljudje, ali ne veste ali ne, 802 00:34:50,620 --> 00:34:53,300 Verjetno uporabljate, kaj je imenuje požrešen algoritem, 803 00:34:53,300 --> 00:34:58,170 pri čemer če ste dolguje, recimo, 21 $ V spremembah, ker iz neznanega razloga 804 00:34:58,170 --> 00:35:01,580 ste kupili nekaj zelo poceni z zelo velikim račun na CVS 805 00:35:01,580 --> 00:35:05,910 da bi bilo zelo nadležno če Blagajnik ti je dal 21 singlov, ali slabše 806 00:35:05,910 --> 00:35:07,629 še cel kup kovancev. 807 00:35:07,629 --> 00:35:10,670 Namesto, kaj je razumna oseba verjetno bo storiti, je, da si bo 808 00:35:10,670 --> 00:35:14,224 da zgrabite 20- $ in nato $ 1-račun, in izročil le dva račune v tem primeru. 809 00:35:14,224 --> 00:35:17,390 MARIA: Torej, oni želijo, da se zmanjša sprememba, ki dajejo nazaj k tebi. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Točno tako. 811 00:35:17,850 --> 00:35:19,540 In isto se ukvarjajo s kovanci, kot dobro. 812 00:35:19,540 --> 00:35:23,040 Če ste dolguje, pravijo, $ 0.50, upajmo, da ne želite, da 50 penijev. 813 00:35:23,040 --> 00:35:25,500 Ste namesto želeli dva četrtine, na primer. 814 00:35:25,500 --> 00:35:27,540 Zdaj, to ne prevzemajo da ima blagajna 815 00:35:27,540 --> 00:35:29,940 Dovolj vsakega imena, ki on ali ona morda želeli, da vam. 816 00:35:29,940 --> 00:35:32,148 Ampak mi vam omogočajo, da prevzame toliko v problemu. 817 00:35:32,148 --> 00:35:35,590 In cilj, v končni fazi, je izvajati v C kodo požrešen algoritem. 818 00:35:35,590 --> 00:35:37,344 Torej je uporabnik dovoljeno da tip v koliko 819 00:35:37,344 --> 00:35:40,510 spremenite on ali ona dolguje s dolarjev in centov, nekakšen plavajočo vejico 820 00:35:40,510 --> 00:35:41,590 vrednost verjetno. 821 00:35:41,590 --> 00:35:45,530 In potem, kar morate storiti matematike in ugotovimo algorithmically, dobro, 822 00:35:45,530 --> 00:35:49,020 koliko kovancev lahko dam ste minimalno, da bi vam 823 00:35:49,020 --> 00:35:50,270 točno ta znesek sprememb. 824 00:35:50,270 --> 00:35:53,470 Ampak tam se dogaja, da je Nekaj ​​trikov deli tukaj, kajne? 825 00:35:53,470 --> 00:35:56,236 Kot da je celotno Vprašanje nenatančnost. 826 00:35:56,236 --> 00:35:56,860 MARIA: Točno tako. 827 00:35:56,860 --> 00:35:59,114 Torej s plavajočo vejico Vrednosti imajo nenatančnosti. 828 00:35:59,114 --> 00:36:00,780 Ali govorimo o tem v predavanju danes? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Nismo zadnji čas v predavanju. 830 00:36:02,340 --> 00:36:03,506 Pogovarjali smo se o netočnosti. 831 00:36:03,506 --> 00:36:08,840 In ne želite, da se goljufija uporabnika koliko sprememb je on ali ona dolguje. 832 00:36:08,840 --> 00:36:11,290 In tako walkthrough, v problem določiti specifikacije, 833 00:36:11,290 --> 00:36:15,990 dati nekaj misli, na koncu, kot da kako lahko ublaži tiste nenatančnost 834 00:36:15,990 --> 00:36:17,280 napake, potencialno. 835 00:36:17,280 --> 00:36:21,050 To je mogoče izogniti, gotovo, za vhodi smo govoriš. 836 00:36:21,050 --> 00:36:23,590 In v bistvu pennies-- Mogoče bomo odloži do Zamyla, 837 00:36:23,590 --> 00:36:25,136 Mislim, da za trikov tam. 838 00:36:25,136 --> 00:36:27,760 Torej v končni fazi, boste našli napredovanje težav ta teden, 839 00:36:27,760 --> 00:36:30,700 od katerih je prvi je zelo majhna, nato medij, potem malo večji. 840 00:36:30,700 --> 00:36:33,200 Vendar pa so vsi uporabljajo stavbe bloki tega zadnjem tednu 841 00:36:33,200 --> 00:36:35,280 od tega supersection, problem nastaviti specifikacija 842 00:36:35,280 --> 00:36:36,710 vas postavi na neštetih virov. 843 00:36:36,710 --> 00:36:41,000 Ampak še vedno, če sploh borijo, zlasti med tistimi manj udoben 844 00:36:41,000 --> 00:36:42,917 brez predhodnega ozadju, prišli do uradnih ur 845 00:36:42,917 --> 00:36:44,958 v ponedeljek in torek in Sredo in četrtek. 846 00:36:44,958 --> 00:36:46,950 Pojdi na CS50 Pogovorite se s pomočjo Spletna stran predmeta je, 847 00:36:46,950 --> 00:36:49,080 preko katerega lahko klepetate z osebjem in sošolci. 848 00:36:49,080 --> 00:36:51,670 >> Ampak na koncu, mislim, da je Najboljši nasvet, ki je pravkar začel zgodaj. 849 00:36:51,670 --> 00:36:54,711 To ni vrsta razreda, ki vas je treba z začetkom psets v sredo 850 00:36:54,711 --> 00:36:56,640 noč, ali še huje v četrtek zvečer. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: Moj najboljši nasvet je, da so se začeli do ponedeljka. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: ponedeljek. 853 00:36:59,900 --> 00:37:02,490 Torej, če še niste začeli already-- št. 854 00:37:02,490 --> 00:37:04,732 Toda tudi če ne ponedeljek, potem torek. 855 00:37:04,732 --> 00:37:05,690 Prej, tem bolje. 856 00:37:05,690 --> 00:37:08,605 In to je razlog, Seveda ima toliko pozno dnevi 857 00:37:08,605 --> 00:37:10,535 da vam malo psihološki pritisk 858 00:37:10,535 --> 00:37:13,684 začeti prej, vendar še vedno pustil Stvari zdrs, ko se stvari trajalo dlje 859 00:37:13,684 --> 00:37:14,350 kot ste pričakovali. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: In želite izkoristiti Uradne ure toliko, kot si lahko, preveč. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Kakšna vprašanja? 862 00:37:20,291 --> 00:37:20,790 V redu. 863 00:37:20,790 --> 00:37:22,930 No, zakaj ne prekine tukaj? 864 00:37:22,930 --> 00:37:23,487