1 00:00:00,000 --> 00:00:03,353 >> [Glazbom] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Pozdrav svima. 4 00:00:06,050 --> 00:00:07,777 Ovo je CS50 je supersection. 5 00:00:07,777 --> 00:00:09,860 Dodijeljeni Sekcije neće start za drugi tjedan. 6 00:00:09,860 --> 00:00:11,580 I tako danas, ovdje sam with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIJA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --to je zapravo pogledajte problema 9 00:00:14,163 --> 00:00:16,110 jedan set, tečaj-a Prvih tjedana materijala, 10 00:00:16,110 --> 00:00:19,780 dobili ste orijentirani s CS50 IDE, malo Linux, operativni sustav koji je 11 00:00:19,780 --> 00:00:22,290 prikazuju na IDE, i pogledajte neke od tranzicije 12 00:00:22,290 --> 00:00:25,730 od nule C vodećih do problema postaviti jednu. 13 00:00:25,730 --> 00:00:28,340 >> Dakle, bez dodatnih teškoća, u problemu postaviti jedan, 14 00:00:28,340 --> 00:00:30,520 ti si idući u biti uveo u CS50 IDE, koji 15 00:00:30,520 --> 00:00:33,230 ovo web-based programiranje okruženje koje koristimo kako bi 16 00:00:33,230 --> 00:00:34,280 pisati programe. 17 00:00:34,280 --> 00:00:37,280 To je osmišljen kako izgledaju vrlo podsjeća na tipične računala 18 00:00:37,280 --> 00:00:39,430 Sustav trčanje operativni Sustav se zove Linux. 19 00:00:39,430 --> 00:00:42,440 Ali to je u tzv oblaka, što znači da svi u razredu 20 00:00:42,440 --> 00:00:45,100 zapravo može imati njegov ili njezin vlastiti račun i koristiti ga kao dobro. 21 00:00:45,100 --> 00:00:48,950 >> Dakle, većina vas vjerojatno nikada imati koristi Linux okruženju prije ili možda 22 00:00:48,950 --> 00:00:50,447 čak i komandne linije okoliš. 23 00:00:50,447 --> 00:00:52,280 I naredbenog retka okolina je drugačija. 24 00:00:52,280 --> 00:00:53,200 To je sve tekstualne. 25 00:00:53,200 --> 00:00:54,730 To je sve tipkovnice naredbe. 26 00:00:54,730 --> 00:00:59,480 I to nije mousing, nema ikone, bez prozora dijalog, nema izbornika. 27 00:00:59,480 --> 00:01:00,212 To je čisto tekst. 28 00:01:00,212 --> 00:01:01,920 Dakle, na prvi, je vrsta osjeća poput koraka 29 00:01:01,920 --> 00:01:04,434 unatrag u smislu sofisticiranost. 30 00:01:04,434 --> 00:01:06,600 Ali to završi kao mnogo snažnije, svakako, 31 00:01:06,600 --> 00:01:08,510 za računalni znanstvenik, u konačnici. 32 00:01:08,510 --> 00:01:09,540 >> Tako ćemo pogledati. 33 00:01:09,540 --> 00:01:13,850 Ovdje sam na CS50.io, preko kojih možete se prijaviti u CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 I baš kao u Scratch, postoji Tri glavna područja na zaslonu. 35 00:01:17,414 --> 00:01:20,080 Dakle, na lijevoj strani, imamo što će biti preglednika datoteka. 36 00:01:20,080 --> 00:01:22,413 I tu je ovu mapu na vrh, što je sada prazna 37 00:01:22,413 --> 00:01:24,690 jer sam dobio osloboditi od svih mojih datoteka prije supersection. 38 00:01:24,690 --> 00:01:27,599 I to je gdje ćemo spremiti C datoteke koje pišemo. 39 00:01:27,599 --> 00:01:30,890 U gornjem desnom kutu, imamo mjesto gdje sve naše koda će dobiti pisani. 40 00:01:30,890 --> 00:01:34,610 I doista, ako ja kliknite ovaj plus, ovaj će neka mi izabrati novu datoteku. 41 00:01:34,610 --> 00:01:38,310 A ovdje mogu početi pisati C koda ili zapravo, bilo koji broj drugih jezika. 42 00:01:38,310 --> 00:01:42,670 >> A onda se na dnu, gdje ga kaže jharvard @ ide50-- i tvoje će 43 00:01:42,670 --> 00:01:45,080 reći nešto malo different-- što je to zove? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Terminal prozor. 46 00:01:49,310 --> 00:01:49,570 Da. 47 00:01:49,570 --> 00:01:51,810 Dakle terminal prozor tzv komandne linije 48 00:01:51,810 --> 00:01:55,540 sučelje putem kojeg možete komunicirati s operacijskom sustavu u podlozi. 49 00:01:55,540 --> 00:01:58,220 A za sada, idemo čine vrlo malo iskoristiti this-- 50 00:01:58,220 --> 00:02:01,170 samo sastaviti, pogledati poruke o pogreškama koje smo vidjeli, 51 00:02:01,170 --> 00:02:02,347 i pokrenuti naše programe. 52 00:02:02,347 --> 00:02:04,680 Ali u konačnici, idemo učiniti mnogo više, kao dobro. 53 00:02:04,680 --> 00:02:07,490 A čak možete instalirati softver i administrirati svoj radni prostor 54 00:02:07,490 --> 00:02:09,066 u CS50 IDE, kao dobro. 55 00:02:09,066 --> 00:02:10,440 No, više o tome neki drugi put. 56 00:02:10,440 --> 00:02:12,689 >> Tako ćemo ići naprijed i pisati vrlo jednostavan program jednostavno 57 00:02:12,689 --> 00:02:15,064 proći kroz toplo-up hello.c, što je možda 58 00:02:15,064 --> 00:02:16,480 najjednostavniji program možemo pisati. 59 00:02:16,480 --> 00:02:18,330 Već sam otvorio novu karticu. 60 00:02:18,330 --> 00:02:24,310 Ja ću ići naprijed i kažu uključuju standardni io.h. 61 00:02:24,310 --> 00:02:25,325 Zatim int glavni (prazninu). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 A onda printf ("Hello, World" backslash nje, u neposrednoj blizini citat, 64 00:02:35,200 --> 00:02:39,480 zatvoriti zagrade i zarezom. 65 00:02:39,480 --> 00:02:39,990 >> U redu. 66 00:02:39,990 --> 00:02:41,700 Tako sada primijetiti moj prozor bez naslova. 67 00:02:41,700 --> 00:02:44,840 Tako sam vrlo brzo ide ići na File, Save. 68 00:02:44,840 --> 00:02:46,910 I važno je da Zovem to nije "zdravo". 69 00:02:46,910 --> 00:02:49,243 Dakle, vrlo česta pogreška, osobito u problemu postaviti jedno, 70 00:02:49,243 --> 00:02:52,530 je slučajno baš nazvati svoj Program "voda" ili "pohlepni" ili "Mario" 71 00:02:52,530 --> 00:02:53,890 ili "kreditne" ili slično. 72 00:02:53,890 --> 00:02:55,970 Ali vi zapravo želite napraviti jeste li datotečni nastavak 73 00:02:55,970 --> 00:02:58,928 jer je to jedini način da se prevodilac i kod urednika 74 00:02:58,928 --> 00:03:00,710 zna da si zapravo pisanje C kod. 75 00:03:00,710 --> 00:03:02,280 Pa neka mi ići naprijed i kliknite Spremi. 76 00:03:02,280 --> 00:03:05,710 >> A sada, također, ono što CS50 IDE učinio za nas je to isto 77 00:03:05,710 --> 00:03:07,120 sintaksu istaknute sve. 78 00:03:07,120 --> 00:03:08,822 Tako da je napravio sve što je vrlo intenzivan. 79 00:03:08,822 --> 00:03:10,780 A cijela svrha koji nije funkcionalna. 80 00:03:10,780 --> 00:03:14,290 To je samo nacrtati oči na konceptualno različiti dijelovi 81 00:03:14,290 --> 00:03:15,310 ovog programa. 82 00:03:15,310 --> 00:03:17,570 Tako ćemo ići naprijed i sastaviti to. 83 00:03:17,570 --> 00:03:19,490 A ja mogu prevesti ovo u nekoliko načina. 84 00:03:19,490 --> 00:03:22,010 A u tjednu jedan je old-school način smo učinili 85 00:03:22,010 --> 00:03:26,250 bilo je doslovno na Command line-- "zveket hello.c." 86 00:03:26,250 --> 00:03:27,596 A onda sam pritisnite Enter. 87 00:03:27,596 --> 00:03:29,720 I ništa ne čini da se dogodi u prozor terminala. 88 00:03:29,720 --> 00:03:32,654 No, ono što je učinio promjenu u IDE? 89 00:03:32,654 --> 00:03:35,320 Gdje, opet, IDE samo znači Integrated Development Environment. 90 00:03:35,320 --> 00:03:38,360 To je fancy način govoreći: Ovaj integrirani razvoj 91 00:03:38,360 --> 00:03:40,620 okruženje za razvoj softvera. 92 00:03:40,620 --> 00:03:42,477 Pa što je promjenu u sučelju? 93 00:03:42,477 --> 00:03:44,310 Što si primjetiti to je drugačije, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIJA: primijetio sam nešto pod IDE50 mapu ovdje. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Da. 96 00:03:47,850 --> 00:03:50,230 Dakle ovdje, ne samo imamo "hello.c." 97 00:03:50,230 --> 00:03:53,120 Također imamo "a.out", koji je vrsta glupi naziv programa. 98 00:03:53,120 --> 00:03:56,430 Ali, istina, to je zadani naziv za Program kada jednostavno sastaviti svoj kod 99 00:03:56,430 --> 00:03:59,110 i ne reći prevodilac ono datoteke za izlaz. 100 00:03:59,110 --> 00:04:01,790 Dakle, ako želim raditi ovo, trebaju reći compiler-- 101 00:04:01,790 --> 00:04:05,340 ili bolje rečeno, moram reći da sam radni prostor 102 00:04:05,340 --> 00:04:09,780 želite pokrenuti program pod nazivom "a.out". 103 00:04:09,780 --> 00:04:10,550 Unesite. 104 00:04:10,550 --> 00:04:12,474 I tu je "Pozdrav, Svijet. "sada" ./ ". 105 00:04:12,474 --> 00:04:13,390 je zapravo važno. 106 00:04:13,390 --> 00:04:16,050 Iako obično mi samo Napiši nazive naredbi, 107 00:04:16,050 --> 00:04:19,060 kada je program ste napisao, ti želiš reći "./" 108 00:04:19,060 --> 00:04:22,460 jer izričito kaže Linux da želite pokrenuti program pod nazivom 109 00:04:22,460 --> 00:04:26,930 "a.out" to je u ovom, gdje točka znači taj direktorij da sam trenutno 110 00:04:26,930 --> 00:04:31,600 u, koji se dogoditi da se zove radni prostor ", a.out. 111 00:04:31,600 --> 00:04:35,410 Jer ako sam samo rekao "a.out" Enter, Idem se "a.out naredbe ne 112 00:04:35,410 --> 00:04:38,035 pronašao "jer computer-- jer sam izmislio "a.out"; 113 00:04:38,035 --> 00:04:40,910 što nije došao s computer-- ne znam gdje gledati za to, 114 00:04:40,910 --> 00:04:43,590 iako je u pravu pod nosom, da se tako izrazim. 115 00:04:43,590 --> 00:04:44,090 U REDU. 116 00:04:44,090 --> 00:04:49,910 Tako bismo mogli promijeniti u biti "zveket -o Hello hello.c." 117 00:04:49,910 --> 00:04:53,030 I ako sam pogodio Enter, što program će to izlaz za mene? 118 00:04:53,030 --> 00:04:55,710 Što je naziv datoteke? 119 00:04:55,710 --> 00:04:57,500 Da, u leđa. 120 00:04:57,500 --> 00:04:58,479 Tako je. "Bok." 121 00:04:58,479 --> 00:05:00,520 Dakle, "Hello" će biti naziv programa 122 00:05:00,520 --> 00:05:04,610 jer smo se koristi tzv naredbenog retka argument, koji je samo 123 00:05:04,610 --> 00:05:08,120 način promjene ponašanja prevodilac zapravo izlaz 124 00:05:08,120 --> 00:05:09,450 specifičan naziv datoteke. 125 00:05:09,450 --> 00:05:12,400 I doista, ako ja uvećanje van i pogledati ovdje, 126 00:05:12,400 --> 00:05:17,430 sada imam ne samo "a.out" i "hello.c", ali i "Hello", kao dobro. 127 00:05:17,430 --> 00:05:22,410 Pa sad ja mogu učiniti "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 I tu je "Hello, World". 129 00:05:23,640 --> 00:05:25,640 Ali lastly-- i to Sada će biti konvencija 130 00:05:25,640 --> 00:05:27,590 koristimo u cijeloj semestar, typically-- 131 00:05:27,590 --> 00:05:30,070 je možete samo reći "učiniti pozdrav." 132 00:05:30,070 --> 00:05:33,370 I doista, to je rekao da je spreman do danas, jer već postoji. 133 00:05:33,370 --> 00:05:37,860 Dopustite mi ići naprijed i uklonite s RM naredba, i "a.out" - 134 00:05:37,860 --> 00:05:39,644 i reći "izvadite redovite datoteke a.out?" 135 00:05:39,644 --> 00:05:41,810 To samo znači, da li ste sigurni da želite izbrisati? 136 00:05:41,810 --> 00:05:42,880 Ja ću reći da. 137 00:05:42,880 --> 00:05:46,690 A onda ću ukloniti "Hello", ali ne "hello.c." 138 00:05:46,690 --> 00:05:49,920 Idem reći "da" eksplicitno, ali "y" je dovoljno, kao dobro. 139 00:05:49,920 --> 00:05:52,140 >> A sada primijetiti da sam upišite ls-- koja, podsjetimo, 140 00:05:52,140 --> 00:05:55,540 znači list-- prikazuje sve datoteke u mojoj mapi. 141 00:05:55,540 --> 00:05:57,850 I doista, ako ja uvećanje van i pogledajte gornjem lijevom, 142 00:05:57,850 --> 00:05:59,730 što potvrđuje da je ono što je u ovoj mapi, čak 143 00:05:59,730 --> 00:06:04,990 Iako je označen kao IDE50 ovdje a ne radni prostor, to je samo "hello.c." 144 00:06:04,990 --> 00:06:09,152 Tako sada ovdje, ako sam ne "napraviti Hello," Enter, 145 00:06:09,152 --> 00:06:12,360 sad vidim mnogo dulje naredbu ali sofisticiraniji naredba da se događa 146 00:06:12,360 --> 00:06:13,940 biti koristan u tjednima koji dolaze. 147 00:06:13,940 --> 00:06:16,720 I sada mogu reći "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Tako ćemo uzeti brzi obilazak neki drugi Linux naredbe. 149 00:06:19,257 --> 00:06:21,840 Zašto onda ne bismo uzeti jedan korak natrag i zapravo pogled na C više 150 00:06:21,840 --> 00:06:25,020 Općenito, prijelaz od nule na C, a zatim sklopiti s pogledom 151 00:06:25,020 --> 00:06:27,305 u prvom problemu postaviti u C. U redu. 152 00:06:27,305 --> 00:06:30,430 Tako ću ići naprijed i samo čista moj radni prostor s upravljačke L samo 153 00:06:30,430 --> 00:06:31,429 držati zaslon uredan. 154 00:06:31,429 --> 00:06:33,520 Ali to nema funkcionalni utjecati na neki drugi način. 155 00:06:33,520 --> 00:06:35,820 >> Sjetite se da smo vidjeli nekoliko naredbi sada. 156 00:06:35,820 --> 00:06:39,900 Tako smo vidjeli zveket, koji obično si neće morati izvršiti ručno više. 157 00:06:39,900 --> 00:06:41,650 Umjesto toga ćemo koristiti make. 158 00:06:41,650 --> 00:06:45,290 Ali, mi također vidio ls, što pokazuje popis datoteka u mom imeniku. 159 00:06:45,290 --> 00:06:48,750 A sad zašto je there-- postoje dvije datoteke sada, "Hello" i "hello.c." 160 00:06:48,750 --> 00:06:52,240 Zašto je zvijezda ili Zvjezdica nakon "Hello"? 161 00:06:52,240 --> 00:06:54,900 Što to znači, na temelju na ono što smo vidjeli u tjedan jedan? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Što misliš? 164 00:07:00,400 --> 00:07:02,742 Što je zvijezda znači? 165 00:07:02,742 --> 00:07:04,614 >> MARIJA: For-- programa "Hello"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Pozdrav *". 167 00:07:05,530 --> 00:07:06,330 Da. 168 00:07:06,330 --> 00:07:07,760 O da? 169 00:07:07,760 --> 00:07:08,639 Oh, izvršna. 170 00:07:08,639 --> 00:07:09,180 Tako je. 171 00:07:09,180 --> 00:07:10,890 Dakle, to znači da je "Hello" je izvršna. 172 00:07:10,890 --> 00:07:13,430 Dakle, istina, to je razlog zašto Ja mogu učiniti "./hello." 173 00:07:13,430 --> 00:07:13,930 U redu. 174 00:07:13,930 --> 00:07:15,179 Dakle, što još mogu učiniti ovdje? 175 00:07:15,179 --> 00:07:17,290 Pa, ispada da mogu Također stvoriti direktorije. 176 00:07:17,290 --> 00:07:20,924 Pa neka mi ići naprijed i stvarati, Na primjer, "pset1" katalog. 177 00:07:20,924 --> 00:07:23,590 A problem postaviti specifikacija će vam učiniti upravo to, 178 00:07:23,590 --> 00:07:25,260 tako da ne morate zapamtiti danas. 179 00:07:25,260 --> 00:07:27,340 No, "mkdir pset1" izgleda da nemaju utjecaj. 180 00:07:27,340 --> 00:07:30,540 Ali opet, ne pojavi poruka je općenito dobra stvar. 181 00:07:30,540 --> 00:07:34,060 Dakle, ako sam tip "ls" now-- Ah, sada Imam izvršnu datoteku pod nazivom 182 00:07:34,060 --> 00:07:36,570 "Hello" C file "hello.c." 183 00:07:36,570 --> 00:07:40,860 A onda je kosa crta, tako da govoriti, znači da je to katalog. 184 00:07:40,860 --> 00:07:42,510 >> Dakle, istina, sada želim ga otvoriti. 185 00:07:42,510 --> 00:07:45,730 I ne dvostruko kliknuti na nju kao u GUI, grafičko okruženje. 186 00:07:45,730 --> 00:07:48,550 I umjesto da kažem "CD pset1." 187 00:07:48,550 --> 00:07:49,640 Unesite. 188 00:07:49,640 --> 00:07:53,100 Ništa zanimljivo izgleda da ima dogodilo, osim mog malog redak 189 00:07:53,100 --> 00:07:57,300 here-- to je Linux je način podsjećajući ja gdje sam ja, pa što mape otvorena. 190 00:07:57,300 --> 00:08:00,080 To je samo mi govori izričito za razliku grafički. 191 00:08:00,080 --> 00:08:05,100 A ako upišete "ls", zašto ne vidim drugi potaknuti odmah misliš, 192 00:08:05,100 --> 00:08:07,269 kad sam popis sadržaja pset1? 193 00:08:07,269 --> 00:08:09,310 MARIJA: Vjerojatno ne ništa u tamo. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Da. 195 00:08:09,630 --> 00:08:11,510 Pa onda nemamo očito stvorio sve tamo 196 00:08:11,510 --> 00:08:13,150 jer sam upravo stvorili imenika. 197 00:08:13,150 --> 00:08:17,690 Sada, ako sam želio stvoriti file-- za recimo, ja mogao stvoriti novu datoteku. 198 00:08:17,690 --> 00:08:20,190 A onda mogla sam ići na Spremite i spremite ga kao, 199 00:08:20,190 --> 00:08:23,090 poput: "mario.c" ako radite standardni izdanje pset jednom. 200 00:08:23,090 --> 00:08:27,610 A onda, kao i bilo koji Mac ili PC, samo odaberite mapu "pset1, Spremi. 201 00:08:27,610 --> 00:08:28,740 A sada je datoteka prazna. 202 00:08:28,740 --> 00:08:31,160 Ali neka povećavanje opet za sekundu. 203 00:08:31,160 --> 00:08:32,470 Učinimo LS ovdje. 204 00:08:32,470 --> 00:08:34,470 Sada ćemo vidjeti "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Dakle, postoji nekoliko drugih naredbi vrijedi imajući na umu tijekom time-- 206 00:08:37,850 --> 00:08:41,200 Jasno, ili upravljačke L je ono što sam je udaranje; mkdir smo vidjeli; 207 00:08:41,200 --> 00:08:45,240 rm smo vidjeli, kao i, što je za uklanjanje ili brisanje datoteke. 208 00:08:45,240 --> 00:08:49,310 Čuvajte možete also-- i ako pogledate na online tutoriali, vi ćete rm-rf 209 00:08:49,310 --> 00:08:52,630 je vrlo čest način govoreći izbrisati mapu koja ima stvari u njemu. 210 00:08:52,630 --> 00:08:54,280 Samo biti super, super oprezni. 211 00:08:54,280 --> 00:08:58,780 rf znači rekurzivno izbrisati sve što je 212 00:08:58,780 --> 00:09:01,150 pokušavate izbrisati i silom ga izbrisati. 213 00:09:01,150 --> 00:09:04,630 Dakle rekurzivna znači ako je mapa mapa sa mape s mape, 214 00:09:04,630 --> 00:09:05,690 izbrisati sve njih. 215 00:09:05,690 --> 00:09:08,680 A prisilno znači uopće ne pitajte me da ili ne, ja sam siguran? 216 00:09:08,680 --> 00:09:11,960 Dakle, to je super opasan način brisanje puno stvari brzo. 217 00:09:11,960 --> 00:09:17,210 Ali beware-- prečesto radi neustrašivi Student slučajno izbrisati, recimo, pset 218 00:09:17,210 --> 00:09:18,000 jedan, npr. 219 00:09:18,000 --> 00:09:19,833 >> MARIJA: A ako su samo to -r, oni će 220 00:09:19,833 --> 00:09:21,870 ih pitati o svakoj jednu datoteku. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Koji je umjereno neugodno. 222 00:09:22,790 --> 00:09:23,480 >> MARIJA: Da. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Pa zato tako da mnogi od nas, samo su, 224 00:09:25,813 --> 00:09:27,070 sam u naviku korištenja rf. 225 00:09:27,070 --> 00:09:27,861 Ali, to je opasno. 226 00:09:27,861 --> 00:09:29,010 Dakle, kupac biti na oprezu. 227 00:09:29,010 --> 00:09:31,050 A onda MV je vrsta zanimljivo ime. 228 00:09:31,050 --> 00:09:33,600 Dakle, ovo je potez naredba, koji se osjeća malo čudno 229 00:09:33,600 --> 00:09:37,260 jer vi doista možete ga koristiti za premjestiti datoteke s jednog mjesta na drugo. 230 00:09:37,260 --> 00:09:39,970 Na primjer, pretpostavimo da sam zabrljao. 231 00:09:39,970 --> 00:09:43,660 Pretpostavimo da sam stvorio nova datoteka za pset. 232 00:09:43,660 --> 00:09:46,320 I ja sam ga spremiti kao "greedy.c." 233 00:09:46,320 --> 00:09:49,970 No, pretpostavimo sam slučajno spremite u IDE50-- tako da u samom mom radnom prostoru 234 00:09:49,970 --> 00:09:51,580 i ne pset1. 235 00:09:51,580 --> 00:09:53,960 >> Možete vidjeti koliko u gornjem lijevom kutu. 236 00:09:53,960 --> 00:09:55,284 Postoji "greedy.c." 237 00:09:55,284 --> 00:09:56,450 I tu je nekoliko rješenja. 238 00:09:56,450 --> 00:09:58,324 Dakle, jedan, mogu koristiti super razumljiv način 239 00:09:58,324 --> 00:09:59,740 samo povučete i ispustite. 240 00:09:59,740 --> 00:10:01,910 I to bi zapravo riješili ovaj problem. 241 00:10:01,910 --> 00:10:04,967 Ali danas, pokušavamo gledati na Više Arcane, ali moćne načine 242 00:10:04,967 --> 00:10:05,550 za to. 243 00:10:05,550 --> 00:10:07,880 Zato mi dopustite da poduzme "ls" u pset1. 244 00:10:07,880 --> 00:10:09,690 A ja vidim samo "mario.c." 245 00:10:09,690 --> 00:10:13,450 Dopustite mi ići naprijed i učiniti "CD ..". 246 00:10:13,450 --> 00:10:15,320 Dakle CD opet promjene katalog. 247 00:10:15,320 --> 00:10:18,130 ".." Znači ono, iako? 248 00:10:18,130 --> 00:10:21,100 Zadnji put kad sam rekao "CD pset1 "ići u pset1. 249 00:10:21,100 --> 00:10:24,360 Dakle, kad kažem "cd ..", što ja radim? 250 00:10:24,360 --> 00:10:24,910 Unatrag. 251 00:10:24,910 --> 00:10:25,150 Da. 252 00:10:25,150 --> 00:10:26,750 >> Tako da će tzv roditelja. 253 00:10:26,750 --> 00:10:29,730 Idi jednu razinu gore, kao što izlaska iz mape. 254 00:10:29,730 --> 00:10:30,500 Tako Enter. 255 00:10:30,500 --> 00:10:31,900 I doista, pogledajte što je učinio. 256 00:10:31,900 --> 00:10:37,070 To me preselio upravo u radnom prostoru, umjesto od u pset1, koja je u radnom prostoru. 257 00:10:37,070 --> 00:10:39,710 A sada, ako sam tip "ls", postoji cijela hrpa stvari. 258 00:10:39,710 --> 00:10:41,650 U tu je "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Pa sad neka mi koristiti MV doslovno premjestiti "greedy.c" u pset1. 260 00:10:48,720 --> 00:10:51,120 I tako puno Linux naredbe rade upravo ovako. 261 00:10:51,120 --> 00:10:54,470 Oni se ne argumente ili ih uzeti jedan Argument ili oni uzeti dvije komandne linije 262 00:10:54,470 --> 00:10:55,449 argumenti i tako dalje. 263 00:10:55,449 --> 00:10:57,240 I u ovom slučaju, to je doslovno radi ono 264 00:10:57,240 --> 00:11:01,670 ona kaže, iako succinctly-- premjestiti greedy.c u pset1. 265 00:11:01,670 --> 00:11:02,310 Unesite. 266 00:11:02,310 --> 00:11:03,310 Ništa ne čini da se dogodi. 267 00:11:03,310 --> 00:11:06,180 Ali ako ja to ls opet, pohlepni je otišao. 268 00:11:06,180 --> 00:11:12,437 A ako radim "CD pset1", Enter, a zatim Je li opet, sada je na pravom mjestu. 269 00:11:12,437 --> 00:11:14,270 Kao na stranu, ako se za Neki reason-- posebno 270 00:11:14,270 --> 00:11:16,194 ako imate prekidima mrežnog povezivanja 271 00:11:16,194 --> 00:11:18,360 ili ste šetnju kampus sa svojim laptop poklopcem 272 00:11:18,360 --> 00:11:20,180 zatvorena, a zatim ga otvoriti opet i vaš radni prostor 273 00:11:20,180 --> 00:11:21,730 Čini se pomalo out of sync, nije velika stvar. 274 00:11:21,730 --> 00:11:23,646 Samo ponovno učitajte preglednik prozor, i to bi trebalo 275 00:11:23,646 --> 00:11:26,339 RESYNC tako da je lijeva ruka file browser izgleda točno 276 00:11:26,339 --> 00:11:27,380 poput prozora terminala. 277 00:11:27,380 --> 00:11:27,921 Bez brige. 278 00:11:27,921 --> 00:11:31,460 Kada su u nedoumici, učitajte stranicu, tako da dok ste spremili datoteke već. 279 00:11:31,460 --> 00:11:31,960 U REDU. 280 00:11:31,960 --> 00:11:34,710 Tako MV se također može koristiti za preimenovanje datoteka. 281 00:11:34,710 --> 00:11:36,760 I neka je pogledati ovo konačna naredba ovdje. 282 00:11:36,760 --> 00:11:39,950 Tako suppose-- a to je super uobičajeno, također, rano. 283 00:11:39,950 --> 00:11:46,400 Neki studenti povremeno stvoriti datoteku zove, neka je say-- što je još jedan? 284 00:11:46,400 --> 00:11:47,730 Kao "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Pa samo ću vikati, za nema razloga, u svim kape. 286 00:11:51,080 --> 00:11:53,190 No, to nije Točan naziv za datoteku 287 00:11:53,190 --> 00:11:56,660 ako je samo zato naš problem postaviti Specifikacija ti nije rekao 288 00:11:56,660 --> 00:11:59,430 spremiti datoteku kao sve kape "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Umjesto toga, očekujemo "water.c" malim slovima. 290 00:12:01,320 --> 00:12:03,140 A, u stvari, to je problematična jer check50, 291 00:12:03,140 --> 00:12:04,370 program idete susret u problemu 292 00:12:04,370 --> 00:12:07,350 jedan set koji automatski testira ispravnost kodu 293 00:12:07,350 --> 00:12:11,615 će vikati na tebe ako to ne uspije pronaći "water.c" u svim malim slovima. 294 00:12:11,615 --> 00:12:12,712 >> Dakle, moram popraviti. 295 00:12:12,712 --> 00:12:14,920 Toliko različitih načina na to, od kojih je prvi 296 00:12:14,920 --> 00:12:18,330 bi se kontrolirati klik ili desni klik naziv datoteke i samo promijeniti Preimenuj. 297 00:12:18,330 --> 00:12:19,740 Totalno redu to učiniti. 298 00:12:19,740 --> 00:12:21,820 Ali opet, danas, neka je to učiniti nešto ljubitelj. 299 00:12:21,820 --> 00:12:26,680 Idemo koristiti MV mijenjati "WATER.C" na "water.c." 300 00:12:26,680 --> 00:12:30,690 Dakle, možete koristiti prvi argument da ga preimenovati u drugi argument 301 00:12:30,690 --> 00:12:34,455 ako je drugi argument nije u Činjenica, mape ili naziv direktorija. 302 00:12:34,455 --> 00:12:35,120 >> U redu. 303 00:12:35,120 --> 00:12:39,560 I na kraju, malo trick-- pa sam u moj radni prostor katalog u ovom trenutku. 304 00:12:39,560 --> 00:12:43,660 Ako želim da se u pset jednom, Ja sigurno mogu upišete "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Ali to je tako zamorno tipkati "pset1" ili više imena datoteka ili imena imenik 306 00:12:47,260 --> 00:12:47,980 još. 307 00:12:47,980 --> 00:12:51,960 Dakle, vrlo često u Linuxu, što što možete učiniti je početi na gumb "PSE" 308 00:12:51,960 --> 00:12:56,100 i samo dosadi, udario Tab, i neka računalo to shvatiti umjesto vas. 309 00:12:56,100 --> 00:12:58,190 Super korisno da se u tu naviku. 310 00:12:58,190 --> 00:13:01,079 Jedina kvaka je ako imate više datoteka ili mapa koje počinju 311 00:13:01,079 --> 00:13:02,870 slovom "p" ili "ps", možda ćete morati 312 00:13:02,870 --> 00:13:05,525 upisati još nekoliko prije Računalo zna što treba učiniti. 313 00:13:05,525 --> 00:13:06,820 >> MARIJA: Volimo prečaca. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Ovo će uštedjeti puno vremena. 315 00:13:08,695 --> 00:13:11,930 I također, kao što smo rekli u predavanju, što možete pronaći u povijesti, gore i dolje, 316 00:13:11,930 --> 00:13:15,461 pronaći nedavno pogubljen naredbe, kao dobro. 317 00:13:15,461 --> 00:13:15,960 U redu. 318 00:13:15,960 --> 00:13:20,904 Tako sada, neka je skrenuti pozornost na jednostavan program, Hello World. 319 00:13:20,904 --> 00:13:22,195 Tako smo sastaviti to točno. 320 00:13:22,195 --> 00:13:24,050 A sad zašto ne uzmemo pogled na vrste podataka 321 00:13:24,050 --> 00:13:26,776 a zatim prijelaz iz neke odgovara Bloka blokova C 322 00:13:26,776 --> 00:13:27,400 MARIJA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Pa sada da ste započeli pisanje programa u C, 324 00:13:30,031 --> 00:13:32,530 ćemo početi govoriti o vrstama podataka i varijabli. 325 00:13:32,530 --> 00:13:37,570 Tako neke vrste podataka koje bi željeli znati počinju danas 326 00:13:37,570 --> 00:13:39,400 su one koje su osvjetljeni plavim. 327 00:13:39,400 --> 00:13:42,420 Tako imamo int prvo, koja se zalaže za cijeli broj. 328 00:13:42,420 --> 00:13:46,075 I to drži prirodna broja, kao i vi možda guessed-- do 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 i bilo koji drugi cijeli brojevi koje se možete sjetiti. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: I također negativan. 331 00:13:48,730 --> 00:13:50,220 >> MARIJA: I također negativni, Yep. 332 00:13:50,220 --> 00:13:51,450 I 0. 333 00:13:51,450 --> 00:13:54,250 Onda smo plovi, koji su brojeve s pomičnim zarezom. 334 00:13:54,250 --> 00:13:58,360 Dakle, to je sve realne brojeve da imaju decimalne točke. 335 00:13:58,360 --> 00:14:03,960 Dakle 5.0, 5.2, i još znamenke nakon decimalne točke, 336 00:14:03,960 --> 00:14:05,620 kao i, kao i one negativne. 337 00:14:05,620 --> 00:14:07,530 Onda smo char koji je lik. 338 00:14:07,530 --> 00:14:10,240 Dakle, mislim da smo razgovarali o ovo predavanje danas. 339 00:14:10,240 --> 00:14:15,682 Ali imamo pisma, za example-- A, B, C-- koji se može pohraniti kao char. 340 00:14:15,682 --> 00:14:18,390 Ali onda imamo puno više simbola koji se može pohraniti kao char. 341 00:14:18,390 --> 00:14:22,380 A oni se pohranjuju kao ASCII. 342 00:14:22,380 --> 00:14:25,280 >> I onda imamo bool, koje su logičke izraze. 343 00:14:25,280 --> 00:14:29,067 A oni ocjenjuju da Točno ili Lažna ili 1 i 0, respektivno. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: i podsjetiti da je bool dolazi iz CS50 knjižnici. 345 00:14:31,650 --> 00:14:33,300 Dakle, to nije ugrađen u C, ali to je super korisno 346 00:14:33,300 --> 00:14:34,850 da pojam istinito i lažno. 347 00:14:34,850 --> 00:14:36,990 I iako vas Možda think-- zabava činjenice. 348 00:14:36,990 --> 00:14:43,700 Bool tehnički treba koliko bitova, doista, za zastupanje Točno Netočno odnosu? 349 00:14:43,700 --> 00:14:47,910 Koliko bitova mislite li ti bi trebao, maksimalno? 350 00:14:47,910 --> 00:14:48,790 Da, samo jednom. 351 00:14:48,790 --> 00:14:52,077 Tako ispada da je C Ne mogu vam dati samo jedan zalogaj. 352 00:14:52,077 --> 00:14:54,160 Najmanja jedinica mjere možete dobiti je osam. 353 00:14:54,160 --> 00:14:57,090 Dakle, to je malo razoran da ste pomoću cijeli bajt ili osam bitova, 354 00:14:57,090 --> 00:14:58,340 zastupati Točno ili netočno. 355 00:14:58,340 --> 00:15:01,807 Ali to je samo način na koji je to implementiran u C od CS50 knjižnici. 356 00:15:01,807 --> 00:15:04,890 Maria: I onda one koje smo neće govoriti o tako velikoj mjeri 357 00:15:04,890 --> 00:15:08,060 Pravo now-- dvaput, to je za veće plovcima. 358 00:15:08,060 --> 00:15:09,811 Dugo dugo i kratko su i za cijele brojeve. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: Doista. 360 00:15:10,643 --> 00:15:13,190 U hakerske izdanju pset jedne, mi zapravo koristiti dugo dugo. 361 00:15:13,190 --> 00:15:15,801 No, za standardno izdanje, ne bi trebalo biti potrebno. 362 00:15:15,801 --> 00:15:16,300 MARIJA: cool. 363 00:15:16,300 --> 00:15:17,361 U REDU. 364 00:15:17,361 --> 00:15:20,110 Dakle operators-- da bi trebao biti vjerojatno upoznati s većinom od njih. 365 00:15:20,110 --> 00:15:22,620 Osim toga, +; oduzimanje, -. 366 00:15:22,620 --> 00:15:24,070 Za množenje, imamo *. 367 00:15:24,070 --> 00:15:25,900 Dakle, nije da je X obično koriste. 368 00:15:25,900 --> 00:15:27,840 Odjel, imamo obrnutu kosu crtu. 369 00:15:27,840 --> 00:15:31,380 A modulo je naš zadnji operator koji ćemo razgovarati o sada. 370 00:15:31,380 --> 00:15:35,610 To je operator koji nam omogućuje da uzeti ostatak podjele. 371 00:15:35,610 --> 00:15:40,630 Dakle, ako imamo 4% 2, 4 podijeljeni od 2 je 2 s ostatkom 0. 372 00:15:40,630 --> 00:15:41,740 Dakle 4% 2 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 4, kao što ste mogli pogoditi. 375 00:15:44,870 --> 00:15:48,860 I zapamtite kada se koristi sve te operateri koristiti PEMDAS pravila. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Dakle, da bude jasno, ako vas ne 4% 2, zašto je to 0, točno? 377 00:15:54,060 --> 00:15:57,480 >> MARIJA: Zbog 4 podijeljen 2 2 s ostatkom 0. 378 00:15:57,480 --> 00:16:00,752 Dakle modulo nam daje tu kao ostatak Za razliku od posljedica podjele. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: I doista, što ćemo naći ovaj koristan 380 00:16:02,960 --> 00:16:05,640 je da u nekim problemima to nije nužno jedan, 381 00:16:05,640 --> 00:16:08,040 ako želite imati učinak ograničavanje sebe 382 00:16:08,040 --> 00:16:10,720 na raspon brojeva kao 0 do nečega, 383 00:16:10,720 --> 00:16:13,904 možete koristiti modulo omotati oko ranije nego kao 2 milijarde 384 00:16:13,904 --> 00:16:16,320 ili vrijednost 4 milijarde koje smo razgovarali o predavanju u. 385 00:16:16,320 --> 00:16:16,870 >> MARIJA: Da. 386 00:16:16,870 --> 00:16:19,429 A čak iu "pohlepni" smo mogli. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Da, u Problem postaviti jedno, kao dobro. 388 00:16:21,345 --> 00:16:22,520 MARIJA: Da, lijepo. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Dobar savjet. 390 00:16:24,340 --> 00:16:25,750 MARIJA: Žao mi je. 391 00:16:25,750 --> 00:16:28,590 Booleova expressions-- tako za Boolean operatora, 392 00:16:28,590 --> 00:16:31,770 ćemo o svemu razgovarati od ovih koje ovdje vidite. 393 00:16:31,770 --> 00:16:35,310 Tako sada imamo dva jednake znakovi popisu za jednakima. 394 00:16:35,310 --> 00:16:38,650 Dakle, oni su za usporedbu. 395 00:16:38,650 --> 00:16:40,830 Do sada smo samo sam vidio jedan znak jednakosti. 396 00:16:40,830 --> 00:16:44,870 To je kad smo dodijelili vrijednost u varijablu. 397 00:16:44,870 --> 00:16:50,160 Dakle, ako smo vidjeli int n = 5, zatim dodijelili smo 5 na varijablu n. 398 00:16:50,160 --> 00:16:55,600 No, ako želimo koristiti == za usporedbu, možemo provjeriti da li je n == 5. 399 00:16:55,600 --> 00:16:58,310 A ako n == 5, onda je to istina. 400 00:16:58,310 --> 00:17:01,950 >> Dakle, Boolean operatora omogućuju nam, zapravo, 401 00:17:01,950 --> 00:17:04,670 ocijeniti Boolean izrazi na true ili false. 402 00:17:04,670 --> 00:17:07,819 Dakle, ne equals-- imamo uskličnik i jednaki. 403 00:17:07,819 --> 00:17:14,240 Tako smo se također može provjeriti, ako je n nije jednak 5-- tako n! = 5. 404 00:17:14,240 --> 00:17:17,640 Manje od manje od ili jednako, veći od, veći ili jednak, 405 00:17:17,640 --> 00:17:20,720 a onda smo logički I i logično ILI. 406 00:17:20,720 --> 00:17:24,060 A oni nam omogućiti da procijene više Boolean izraza zajedno 407 00:17:24,060 --> 00:17:27,930 na osnovi dolaze zajedno kao jedan cijeli logički izraz. 408 00:17:27,930 --> 00:17:34,970 Dakle, ako želimo pronaći broj, kažu, da je veći od 5, ali manje od 15 409 00:17:34,970 --> 00:17:39,810 u isto vrijeme, mi bi koristiti logično i operater vidjeti ako je n 410 00:17:39,810 --> 00:17:42,937 veći od 5 && n manje od 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: I ovdje, također, to je stvarno lako 412 00:17:44,770 --> 00:17:47,290 rano slučajno koristiti samo jedan ampersand 413 00:17:47,290 --> 00:17:48,572 ili jedan okomita traka. 414 00:17:48,572 --> 00:17:51,280 I nadam se prevodilac će vikati na vas, jer oni zapravo 415 00:17:51,280 --> 00:17:52,530 imaju vrlo različito značenje. 416 00:17:52,530 --> 00:17:55,660 Za one radoznale, oni su koristi za bitovni poslovanja, 417 00:17:55,660 --> 00:17:57,197 djeluju na pojedinačne bitove. 418 00:17:57,197 --> 00:17:58,780 Ali vi želite par njih ovdje. 419 00:17:58,780 --> 00:18:01,560 I super važno je da Prvi je znak jednakosti, 420 00:18:01,560 --> 00:18:05,270 koji je operator jednakosti kao Za razliku od operatora dodjele. 421 00:18:05,270 --> 00:18:08,552 >> MARIJA: A okomita traka je nalazi između Delete i povratka. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Da. 423 00:18:09,260 --> 00:18:11,420 Na tipičnoj američkoj tipkovnici. 424 00:18:11,420 --> 00:18:13,190 >> MARIJA: Aha. 425 00:18:13,190 --> 00:18:15,890 Tako ćemo skočiti pravo u uvjet. 426 00:18:15,890 --> 00:18:18,300 U nule, vi ste već vidjeli, vjerojatno, 427 00:18:18,300 --> 00:18:22,730 ako izjave da vam omogućuju da provjerite je li nešto istina, onda 428 00:18:22,730 --> 00:18:23,660 učiniti nešto drugo. 429 00:18:23,660 --> 00:18:28,410 Dakle, možda ste htjeli provjerite je li vaš duh je 430 00:18:28,410 --> 00:18:31,410 dodirujući neku drugu sprite ili granica zaslona. 431 00:18:31,410 --> 00:18:35,520 A onda ste možda željeli završiti igru ​​ili učiniti nešto drugo. 432 00:18:35,520 --> 00:18:40,000 Dakle sintakse za to je "if (uvjet)." 433 00:18:40,000 --> 00:18:46,820 Dakle, ako je vaš duh dodiruje nešto, onda je unutar vitičastih zagrada. 434 00:18:46,820 --> 00:18:48,980 >> Onda smo IF-ostalo izjave. 435 00:18:48,980 --> 00:18:54,080 Inače nam omogućuje da učinite nešto ako je uvjet da se 436 00:18:54,080 --> 00:18:55,870 provjerite u početku nije istina. 437 00:18:55,870 --> 00:19:01,530 Dakle, ako je duh dodiruje granični to, drugi učiniti nešto drugo. 438 00:19:01,530 --> 00:19:04,030 Dakle, na neki drugi način učiniti nešto drugo. 439 00:19:04,030 --> 00:19:07,530 Onda smo kratki primjer za to. 440 00:19:07,530 --> 00:19:11,551 Dakle, ako (military_time <12), mi želite printf "Dobro jutro!" 441 00:19:11,551 --> 00:19:13,300 Inače ćemo printf "Dobra večer!" 442 00:19:13,300 --> 00:19:14,860 Osnovni primjer. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Dobro. 444 00:19:15,680 --> 00:19:16,760 >> MARIJA: cool. 445 00:19:16,760 --> 00:19:18,560 Tako sada imamo prekidač izjave. 446 00:19:18,560 --> 00:19:21,960 Zamijenite izjave općenito mogu omogućuju nam da napraviti puno iste stvari 447 00:19:21,960 --> 00:19:25,070 da smo samo razgovarali o s i ako izjavama. 448 00:19:25,070 --> 00:19:29,440 Na primjer, sada imamo opći oblik izjave prekidača 449 00:19:29,440 --> 00:19:33,870 koji nam omogućuje da se varijabla zove n 450 00:19:33,870 --> 00:19:37,670 i usporedite ga puno različite vrijednosti, što ovdje ćemo 451 00:19:37,670 --> 00:19:40,010 su pozvani constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Možemo imati puno više. 453 00:19:41,150 --> 00:19:42,930 A oni su pozvani slučajeve. 454 00:19:42,930 --> 00:19:46,280 >> Dakle, ako imamo prekidač statement-- i to radi 455 00:19:46,280 --> 00:19:50,580 samo za integers-- imamo varijabla u ovom slučaju to je n. 456 00:19:50,580 --> 00:19:53,840 Ako je varijabla n jednak constant1 smo 457 00:19:53,840 --> 00:19:59,720 će izvršiti neki isječak kôda ili nešto što želimo učiniti. 458 00:19:59,720 --> 00:20:01,280 I onda bismo razbiti. 459 00:20:01,280 --> 00:20:04,820 Tako je pauza znači da izjava prekidač 460 00:20:04,820 --> 00:20:08,120 će se zaustaviti izvršenje, ako n je jednak constant1, 461 00:20:08,120 --> 00:20:09,752 a zatim vaš program će se nastaviti. 462 00:20:09,752 --> 00:20:11,835 To će izaći iz kategorije prebaciti izjavu i to će 463 00:20:11,835 --> 00:20:13,520 nastaviti raditi nešto drugo. 464 00:20:13,520 --> 00:20:17,204 >> Ako je, međutim, n nije jednak constant1, onda slučaj za constant2 465 00:20:17,204 --> 00:20:17,870 će biti provjereni. 466 00:20:17,870 --> 00:20:21,750 Dakle, ako je n jednak constant2, taj drugi Isječak koda će se izvršiti. 467 00:20:21,750 --> 00:20:23,850 A onda ćemo razbiti ako je jednak tome. 468 00:20:23,850 --> 00:20:27,580 A onda možemo imati also-- ne nužno, though-- zadani slučaj, 469 00:20:27,580 --> 00:20:32,290 što će se dogoditi ako n nije jednak bilo slučajeva da ste na popisu. 470 00:20:32,290 --> 00:20:35,400 I u zadanom slučaju, mi također ne treba predah nužno 471 00:20:35,400 --> 00:20:39,271 jer Izjava prekidač će znati da treba završiti nakon defaultu 472 00:20:39,271 --> 00:20:40,270 slučaj ako je to slučaj. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Ali stilski, smo ga uvijek staviti unutra. 474 00:20:42,140 --> 00:20:42,540 >> MARIJA: Da. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Da. 476 00:20:42,710 --> 00:20:44,750 Dakle, posebno na samom početku, pogotovo ako među onima manje 477 00:20:44,750 --> 00:20:47,458 udoban, ja bih osobno Samo preporučuju držati s MS 478 00:20:47,458 --> 00:20:51,564 i IFS-drukčije i ako je-drugo-ako-drukčije i tako dalje, ako se samo 479 00:20:51,564 --> 00:20:53,480 jer si malo više jednostavan. 480 00:20:53,480 --> 00:20:56,142 To je lijepo optimizacija, ili ponekad čak i estetski ga 481 00:20:56,142 --> 00:20:57,350 čini kod više čitati. 482 00:20:57,350 --> 00:20:59,599 A u stvari, vjerojatno Sredinom semestra vidjet ćemo problem 483 00:20:59,599 --> 00:21:02,504 postavljen je sad izgleda bolje i lakše za čitanje za ljude 484 00:21:02,504 --> 00:21:03,670 pomoću prekidača izjavu. 485 00:21:03,670 --> 00:21:05,460 No, ne brinite o držeći to prerano. 486 00:21:05,460 --> 00:21:05,680 >> MARIJA: Da. 487 00:21:05,680 --> 00:21:08,840 Ako imate puno ako izjave, možda samo ne biti vrlo čitljiv. 488 00:21:08,840 --> 00:21:10,965 To ne može biti vrlo brzo za vas da ide kroz njega. 489 00:21:10,965 --> 00:21:13,230 Dakle prebaciti izjave mogu biti vrlo korisna, kao dobro. 490 00:21:13,230 --> 00:21:17,900 I također, ne remember-- ne zaboravite staviti pauze tamo. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Ne sjećam ovoga. 492 00:21:20,330 --> 00:21:24,890 >> MARIJA: Jer onda možda pasti kroz od slučaja do slučaja. 493 00:21:24,890 --> 00:21:27,930 Dakle, recimo da je slučaj constant1 nije imao break izjavu u njoj. 494 00:21:27,930 --> 00:21:31,920 Onda smo mogli pasti kroz u slučaju constant2. 495 00:21:31,920 --> 00:21:35,070 A mi ne želimo učiniti ako već smo postigli slučaja constant1 496 00:21:35,070 --> 00:21:37,830 i to je jednaka n. 497 00:21:37,830 --> 00:21:45,100 >> Tako, na primjer, ako imamo varijablu n koji sadrži niz klase, 498 00:21:45,100 --> 00:21:48,990 i želimo vidjeti što je to Klasa is-- ako je n = 50, 499 00:21:48,990 --> 00:21:51,957 idemo ispisati "CS50 je Uvod u Computer Science I. " 500 00:21:51,957 --> 00:21:53,040 Onda ćemo razbiti. 501 00:21:53,040 --> 00:21:53,920 I to je to. 502 00:21:53,920 --> 00:21:55,950 Ako je, međutim, n je jednak do 51, idemo 503 00:21:55,950 --> 00:21:58,494 za ispis "CS51 je Uvod Computer Science II. " 504 00:21:58,494 --> 00:21:59,910 Zatim, opet, idemo razbiti. 505 00:21:59,910 --> 00:22:05,080 Međutim, ako je onda stavio 124, 61, bilo drugi broj da biste mogli misliti, 506 00:22:05,080 --> 00:22:06,890 ili program ne ide prepoznati da. 507 00:22:06,890 --> 00:22:09,010 Dakle, to će reći: "Žao mi je, ja sam nije upoznat s tom razredu. " 508 00:22:09,010 --> 00:22:10,009 I to će se slomiti. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Dakle zaista možete vidjeti if, else if, drugo ideju ovdje. 510 00:22:12,847 --> 00:22:15,430 To je samo drugačije sintaksa za izražavajući točno istu ideju. 511 00:22:15,430 --> 00:22:17,690 >> MARIJA: Točno. 512 00:22:17,690 --> 00:22:19,480 Sada imamo ternarna operatora. 513 00:22:19,480 --> 00:22:24,900 Dakle ternarne operateri moraju tri parts-- stanje, 514 00:22:24,900 --> 00:22:27,220 nešto učiniti ako taj uvjet je istina, 515 00:22:27,220 --> 00:22:29,730 a zatim nešto učiniti ako je uvjet lažan. 516 00:22:29,730 --> 00:22:33,400 Dakle vidite, u osnovi, sintaksa koja se ovdje. 517 00:22:33,400 --> 00:22:37,792 Imamo upitnik i onda the-- što mi to nazivamo? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: debelo crijevo. 519 00:22:38,750 --> 00:22:39,100 MARIJA: Colon. 520 00:22:39,100 --> 00:22:39,599 Hvala. 521 00:22:39,599 --> 00:22:41,880 Oprostite. 522 00:22:41,880 --> 00:22:45,800 Pa pogledajmo naš primjer vidjeti možemo li smisla this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Dakle ovdje vidimo našu Boolean operator == koji uspoređuje varijablu class_num 525 00:22:52,580 --> 00:22:53,100 do 50. 526 00:22:53,100 --> 00:22:55,150 Dakle class_num trgovinama cijeli broj. 527 00:22:55,150 --> 00:22:58,180 A ako taj cijeli broj jednako 50, onda smo 528 00:22:58,180 --> 00:23:02,810 će pohraniti "David Malan" unutar niza profesora. 529 00:23:02,810 --> 00:23:05,912 Ako poslovni broj ne jednaka 50 "Ne David Malan" 530 00:23:05,912 --> 00:23:07,120 će biti profesor. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Hvala vam. 532 00:23:08,630 --> 00:23:12,110 I tako to čini ekvivalent Što biste rekli, na prvi pogled? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIJA: Za mene to čini kao i ako-ostalo izjave. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Da. 536 00:23:20,709 --> 00:23:24,020 A u stvari, to je vrsta od prilično jednog broda, 537 00:23:24,020 --> 00:23:27,520 da tako kažemo, za provedbu upravo logika ako-ostalo 538 00:23:27,520 --> 00:23:29,010 ali radi sve u jednom koraku. 539 00:23:29,010 --> 00:23:29,860 >> MARIJA: Točno. 540 00:23:29,860 --> 00:23:30,360 Da. 541 00:23:30,360 --> 00:23:33,520 Dakle, ako-else izjava možda zauzimaju puno prostora. 542 00:23:33,520 --> 00:23:36,283 Oni mogu biti predug za nešto kao jednostavan kao taj. 543 00:23:36,283 --> 00:23:38,350 Dakle, to može biti vrlo sažet i vrlo lijepo. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Dakle, sada idemo u potrazi na i opet izvršavanju nešto, 546 00:23:46,820 --> 00:23:50,060 pa ček za stanje više puta 547 00:23:50,060 --> 00:23:53,510 a zatim nastavlja raditi nešto dok je uvjet true. 548 00:23:53,510 --> 00:23:56,740 Dakle, to nas dovodi lijepo u while petlje. 549 00:23:56,740 --> 00:23:59,270 >> S lijeve strane, imamo naš prvi while petlja. 550 00:23:59,270 --> 00:24:03,840 Dakle, dok je nešto istina, nešto opet i opet. 551 00:24:03,840 --> 00:24:08,850 Dakle, pobrinite se da je naš Stanje je ovdje potvrditi na vrhu. 552 00:24:08,850 --> 00:24:14,150 Dok s našim drugom loop-- zovemo da do-a loop-- smo nešto učiniti, 553 00:24:14,150 --> 00:24:15,890 onda smo provjeriti stanje. 554 00:24:15,890 --> 00:24:17,980 A ako taj uvjet i dalje biti istina, 555 00:24:17,980 --> 00:24:20,150 možemo se vratiti i učiniti što više. 556 00:24:20,150 --> 00:24:23,360 Dakle, glavna razlika je u kojoj uvjet se provjerava na. 557 00:24:23,360 --> 00:24:29,260 I kod svibanj nikada biti izvršiti ako uvjet nije 558 00:24:29,260 --> 00:24:30,430 istina s while petlje. 559 00:24:30,430 --> 00:24:33,050 Dok s do-vrijeme petlje, imamo kod 560 00:24:33,050 --> 00:24:35,380 koji je uvijek izvršiti barem jednom. 561 00:24:35,380 --> 00:24:37,470 A onda, dok je stanje i dalje biti istina, 562 00:24:37,470 --> 00:24:39,960 možemo se vratiti i opet ponoviti unutra. 563 00:24:39,960 --> 00:24:43,625 Pa zašto misliš da bi koristili do-while petlja iznad while petlji? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Pravo. 566 00:24:48,720 --> 00:24:52,600 Dakle, ako želimo brz Korisnik za neku vrstu ulaza, 567 00:24:52,600 --> 00:24:55,400 ako želimo da ih pitam unijeti svoje ime, 568 00:24:55,400 --> 00:24:57,342 želimo ih barem pitati jednom. 569 00:24:57,342 --> 00:24:59,050 A ako oni ne ulaze to ime, mi nismo 570 00:24:59,050 --> 00:25:00,740 će ih ponovno pitati jer smo već znali. 571 00:25:00,740 --> 00:25:02,656 Ali ako oni ne ulaze njihovo ime, ili ako se 572 00:25:02,656 --> 00:25:05,787 upišite nešto što je očito nije ime, 573 00:25:05,787 --> 00:25:08,120 mi i dalje želite nastaviti moleći ih na za svoje ime. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: I u predavanju imali smo jednu ovako s dobiti pozitivan int 575 00:25:10,710 --> 00:25:13,550 primjer, tamo gdje je ništa provjerite na prvi, jer imate ni 576 00:25:13,550 --> 00:25:14,190 dobivši int. 577 00:25:14,190 --> 00:25:16,680 Dakle, želimo napraviti this-- dobiti int od user-- 578 00:25:16,680 --> 00:25:18,860 onda to provjeriti, možda, opet i opet i opet. 579 00:25:18,860 --> 00:25:21,030 >> MARIJA: Točno. 580 00:25:21,030 --> 00:25:22,060 Za loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Za petlje može nam omogućiti da učinite gotovo točno istu stvar, kao dobro. 582 00:25:25,842 --> 00:25:27,300 To je zapravo točno istu stvar. 583 00:25:27,300 --> 00:25:30,190 Dakle, nema ništa što što možete učiniti s for petlje 584 00:25:30,190 --> 00:25:32,840 da ne bi bio u stanju učiniti s while petlje. 585 00:25:32,840 --> 00:25:36,900 Ali za petlje može činiti malo malo više komplicirano sintaktički 586 00:25:36,900 --> 00:25:39,730 jer su tri dijela u ono 587 00:25:39,730 --> 00:25:42,990 bio prije samo Stanje s while petlje. 588 00:25:42,990 --> 00:25:48,260 Tako je prvi dio koji si more, lijevo-većina, imamo "int patuljci = 0." 589 00:25:48,260 --> 00:25:51,490 Dakle, ovo je mjesto gdje smo inicijalizirati naše varijable. 590 00:25:51,490 --> 00:25:55,210 >> Onda imamo zarez i "patuljci <7." 591 00:25:55,210 --> 00:25:57,100 Dakle, ovo je mjesto gdje se Stanje je zapravo. 592 00:25:57,100 --> 00:26:00,170 Dakle, to je ono što bi staviti samo u vrijeme loop-- 593 00:26:00,170 --> 00:26:01,880 "dok su patuljci <7." 594 00:26:01,880 --> 00:26:05,380 Evo, da se ide u Sredina našeg for petlje. 595 00:26:05,380 --> 00:26:07,190 Dakle, "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 A onda je naš zadnji dio je "patuljci ++" koji je mjesto gdje ćemo ažurirati naš varijablu. 597 00:26:11,350 --> 00:26:15,470 Tako je važna stvar shvatiti da je ovaj 598 00:26:15,470 --> 00:26:22,010 će proći kroz to za petlju sedam puta i izvršiti sedam puta. 599 00:26:22,010 --> 00:26:24,020 Dakle, imamo sedam patuljci, i oni su svi 600 00:26:24,020 --> 00:26:26,020 će reći: "Ja sam ovdje da vam pomogne, Snjeguljica " 601 00:26:26,020 --> 00:26:28,860 jer oni su spremni pomoći Snjeguljicu. 602 00:26:28,860 --> 00:26:33,600 >> Uz dok petlje, što bi učinio inicijalizacije i ažuriranje 603 00:26:33,600 --> 00:26:37,490 ne u stanju, opet, ali prije ili unutar while petlji 604 00:26:37,490 --> 00:26:40,210 kako bi bili sigurni da we-- jer mi uvijek trebati one dijelove. 605 00:26:40,210 --> 00:26:42,835 Dakle, kako bi bili sigurni da imamo ih, mi bi ste dalje dodaje ih 606 00:26:42,835 --> 00:26:44,580 na, samo ne u zagradama. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: I tako to izgleda volimo-članovima za predavanje, na primjer, 608 00:26:47,288 --> 00:26:50,250 Ja gotovo uvijek koristiti, kao što je, ja i n i prilično dosadno varijable. 609 00:26:50,250 --> 00:26:53,050 Izgleda možete koristiti više pametno zove varijabli, previše. 610 00:26:53,050 --> 00:26:56,300 >> MARIJA: Da, to je zapravo jako lijepo koristiti malo više opisne varijable 611 00:26:56,300 --> 00:26:59,400 jer pogotovo ako je netko drugi čitajući vaše code-- možda ste ocjenjivač 612 00:26:59,400 --> 00:27:00,940 ili ako ste za suradnju s somebody-- 613 00:27:00,940 --> 00:27:03,481 želite da biste bili sigurni da su oni Razumijem što radiš. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> U REDU. 616 00:27:06,400 --> 00:27:11,435 Dakle, to je nešto vrlo funky-- for petlja unutar petlje za. 617 00:27:11,435 --> 00:27:13,060 Ja ne znam da li smo vidjeli prije. 618 00:27:13,060 --> 00:27:13,830 Vjerojatno ne. 619 00:27:13,830 --> 00:27:17,750 Ali mi zapravo može imati this-- tako petlje umjesto petlje. 620 00:27:17,750 --> 00:27:25,130 Tako se bilo tko želi možda prošetati meni kroz ono što se ovdje događa? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: Ja ću uzeti ubod. 623 00:27:29,490 --> 00:27:29,970 MARIJA: cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: U redu. 625 00:27:30,636 --> 00:27:34,690 Dakle, spoiler-- želimo ispisati stvari to je u donjem desnom kutu 626 00:27:34,690 --> 00:27:35,190 tamo. 627 00:27:35,190 --> 00:27:35,450 >> MARIJA: Tako je. 628 00:27:35,450 --> 00:27:35,710 Da da. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Pa mi smo samo staviti taj primjer izlaza nema. 630 00:27:38,043 --> 00:27:42,590 Dakle, ja mogu zaključiti iz najviši petlje da ste 631 00:27:42,590 --> 00:27:45,680 iterating preko reda u najudaljeniji petlje, da se tako izrazim. 632 00:27:45,680 --> 00:27:48,107 A ti iterating više stupovi s najintimnijeg kruga. 633 00:27:48,107 --> 00:27:50,190 I intuitivno, to trebali nadamo smisla 634 00:27:50,190 --> 00:27:52,070 jer po prirodi svaki program smo vidjeli 635 00:27:52,070 --> 00:27:55,570 Prije, printf, koji je Funkcija mi koristimo, u konačnici, 636 00:27:55,570 --> 00:27:58,190 ima mogućnost ispisa stvari iz suštini redak po redak. 637 00:27:58,190 --> 00:27:59,960 Kao, nakon što ste reproduciraju nova linija, postoji 638 00:27:59,960 --> 00:28:02,876 nema dubliranje natrag i tiskanje nešto više na zaslonu, barem 639 00:28:02,876 --> 00:28:04,530 Ne koristite printf ovako. 640 00:28:04,530 --> 00:28:07,750 >> I tako u tom smislu, čini osjećaj da je vanjski petlje 641 00:28:07,750 --> 00:28:10,930 treba se odnosi na nizove jer je za svako dano red, 642 00:28:10,930 --> 00:28:13,650 ti si idući u ištanje to ispis XXXXX, a zatim 643 00:28:13,650 --> 00:28:15,520 premjestiti na sljedeći redak, xxxxx. 644 00:28:15,520 --> 00:28:17,317 Dakle, redovi na prvom mjestu. 645 00:28:17,317 --> 00:28:19,150 A onda unutar svakog red, ispisujete stupce. 646 00:28:19,150 --> 00:28:21,160 Ako ste pokušali da ga se ne suprotno, to bi vjerojatno ne 647 00:28:21,160 --> 00:28:21,690 izaći kao namjeravate. 648 00:28:21,690 --> 00:28:22,190 >> MARIJA: Da. 649 00:28:22,190 --> 00:28:24,950 Mi jednostavno ne mogu vratiti na prethodni redak s printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: A što je zanimljivo po današnjem razgovor o opsegu, 651 00:28:27,658 --> 00:28:31,600 zapravo, da je red je int koji je proglašen u najvišem petlji. 652 00:28:31,600 --> 00:28:34,030 Ali primijetite da je još uvijek unutar, da tako kažemo, 653 00:28:34,030 --> 00:28:35,982 Kovrčava aparatić koji Odmah slijedi, 654 00:28:35,982 --> 00:28:38,440 iako to nije tehnički unutar tih vitičastih zagrada. 655 00:28:38,440 --> 00:28:41,750 Pa red je opseg za cjelokupnost isječku koda, 656 00:28:41,750 --> 00:28:44,690 kako unutar vanjskog za petlje i unutarnje strane za petlju. 657 00:28:44,690 --> 00:28:48,050 No s druge strane, gdje je je stupac u opsegu? 658 00:28:48,050 --> 00:28:49,810 Varijabla stupac? 659 00:28:49,810 --> 00:28:51,310 Da, samo u unutarnjoj petlji. 660 00:28:51,310 --> 00:28:54,280 I to je u redu, jer mi ne pristupiti je izvan njenih vitičastih zagrada. 661 00:28:54,280 --> 00:28:57,280 Sve što učiniti je ispisati iz nova linije na samom kraju tamo. 662 00:28:57,280 --> 00:28:58,670 Tako da je zapravo u redu. 663 00:28:58,670 --> 00:29:03,740 >> Dakle, to ima učinak, izgleda, raditi tri retka i četiri stupca. 664 00:29:03,740 --> 00:29:04,370 >> MARIJA: Tako je. 665 00:29:04,370 --> 00:29:06,270 Dakle, prvo ćemo proći kroz naš prvi red. 666 00:29:06,270 --> 00:29:10,520 I samo u prvom redu, mi učiniti četiri stupa unutar prvog reda. 667 00:29:10,520 --> 00:29:11,980 Tako smo ispisali četiri X-ih. 668 00:29:11,980 --> 00:29:15,800 A onda možemo izlaz za petlju, jer već smo isprintati četiri X-ih. 669 00:29:15,800 --> 00:29:17,100 A mi ispisati novu liniju. 670 00:29:17,100 --> 00:29:19,920 A onda idemo kroz Isti postupak još dva reda 671 00:29:19,920 --> 00:29:21,170 da bi ukupno tri. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: I to je vrijedno napomenuti da je samo artefakt fonta, činjenica 673 00:29:23,530 --> 00:29:25,680 da uzorak izlaz čini toliko jači, 674 00:29:25,680 --> 00:29:27,520 kao da postoji više redaka nego stupaca. 675 00:29:27,520 --> 00:29:29,824 Ali to je samo zato što je X je viši nego što je širok. 676 00:29:29,824 --> 00:29:32,740 To je sve što se tamo događa, plus bijeli prostor između redaka. 677 00:29:32,740 --> 00:29:33,281 >> MARIJA: Tako je. 678 00:29:33,281 --> 00:29:34,792 Cool. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: U redu. 680 00:29:35,750 --> 00:29:39,830 Tako brz pogled na problemu postaviti jedan, uzeti na sva pitanja, a zatim prekinuti? 681 00:29:39,830 --> 00:29:40,330 U redu. 682 00:29:40,330 --> 00:29:43,164 Tako je u problema postaviti jednu, ima tri primarni izazovi, u konačnici. 683 00:29:43,164 --> 00:29:44,955 Ali prvo, vi ćete kako postaviti problem 684 00:29:44,955 --> 00:29:47,900 specifikacije, kao što je s mnogima psets ove jeseni, će vas provesti 685 00:29:47,900 --> 00:29:50,691 kroz nekoliko zagrijavanja vježbe, ukazuju vas iz nekoliko izvora 686 00:29:50,691 --> 00:29:52,440 koji svibanj ili svibanj nisam vidio već. 687 00:29:52,440 --> 00:29:54,440 Na primjer, CS50 ima paket gaćice, 688 00:29:54,440 --> 00:29:56,481 koji su kratki video, Nije za razliku od toga, ali to 689 00:29:56,481 --> 00:29:58,460 Vrlo tema specific-- možda pet minuta, 690 00:29:58,460 --> 00:30:02,360 10 minuta u dužini na petlji ili o uvjetima i na algoritme 691 00:30:02,360 --> 00:30:04,125 ili kasnije više napredne teme, kao dobro. 692 00:30:04,125 --> 00:30:06,000 I općenito ugradili oni u problemu 693 00:30:06,000 --> 00:30:07,950 postavlja tako da učenici imaju resurs s kojim 694 00:30:07,950 --> 00:30:10,840 pregledati materijal koji bi mogli imati Već se u predavanju ili dijelu. 695 00:30:10,840 --> 00:30:13,220 No, ovaj put to je više fokusiran i na dohvat ruke. 696 00:30:13,220 --> 00:30:15,928 >> Mi također imaju tendenciju da se ugraditi u problemu postavlja stvari zove Walkthroughs. 697 00:30:15,928 --> 00:30:20,790 Dakle, gotovo sve primjere radim u predavanju, na pozornici se ovdje, mi također 698 00:30:20,790 --> 00:30:24,565 su pucali na kameri u unaprijed više sporije, 699 00:30:24,565 --> 00:30:28,760 više intimni prohod po meni na moj laptop tog koda, redak po redak 700 00:30:28,760 --> 00:30:31,427 tako da je u klasi, mi ćemo se često kliziti kroz nešto ili nekoga 701 00:30:31,427 --> 00:30:33,260 će ubaciti Sa odgovoriti na pitanje. 702 00:30:33,260 --> 00:30:35,820 No, to ne mora nužno potonuti u za svakoga u publici. 703 00:30:35,820 --> 00:30:38,230 Tako ćete naći kod Walkthroughs za većinu primjerima 704 00:30:38,230 --> 00:30:40,950 da mi ovdje u predavanju, tako da mogu hodati kroz njega na vlastitim tempom 705 00:30:40,950 --> 00:30:43,580 i natrag ili naprijed ili preskočite zajedno, ako želite. 706 00:30:43,580 --> 00:30:45,356 >> Tu je često malo topla-up pitanja koja 707 00:30:45,356 --> 00:30:47,105 Vas molimo da vrsta ojačati taj materijal 708 00:30:47,105 --> 00:30:50,250 i uvjerite se da si udoban prije nastavite s ostatkom pset. 709 00:30:50,250 --> 00:30:51,700 I onda, naravno, tu je sama pset. 710 00:30:51,700 --> 00:30:53,450 I jedna od stvari smo vrlo namjerno 711 00:30:53,450 --> 00:30:57,202 učiniti u CS50 je gotovo svaki nezanimljiv ili intelektualno nezanimljiv 712 00:30:57,202 --> 00:30:58,910 mehanička korak koji možda ćete morati učiniti 713 00:30:58,910 --> 00:31:00,519 je gotovo uvijek vrlo dobro dokumentirana. 714 00:31:00,519 --> 00:31:03,560 Tijekom roka, mi ćemo početi tražiti više retorička pitanja 715 00:31:03,560 --> 00:31:06,187 kao što se sjetiti kako ovo ili ono? 716 00:31:06,187 --> 00:31:08,520 Ali općenito, vidjet ćete da je problem setovi dobiti 717 00:31:08,520 --> 00:31:10,269 kroz mehanika nešto tako da 718 00:31:10,269 --> 00:31:14,160 zanimljive, intelektualni izazovi su u konačnici lijevo za vas studenta. 719 00:31:14,160 --> 00:31:17,390 >> Uz to, rekao je, Zamyla, kojima smo čuvaju se danas odnosi na predavanja, 720 00:31:17,390 --> 00:31:20,190 je jedan od naših dugogodišnjih zaposlenika član koji također drži Walkthroughs 721 00:31:20,190 --> 00:31:24,520 na specifične probleme kao što su Mario pset i pohlepni, iako ne zalijevati ove godine. 722 00:31:24,520 --> 00:31:26,540 I to je u onima Walkthroughs da je ona često 723 00:31:26,540 --> 00:31:29,450 nudi neke savjete i trikove za kako postupiti, nikada vam govorim 724 00:31:29,450 --> 00:31:31,810 točno što učiniti, ali rather-- kao uvjet, 725 00:31:31,810 --> 00:31:35,200 ako will-- dajući vam najmanje Nekoliko ideja tako da je na vama, 726 00:31:35,200 --> 00:31:37,830 u konačnici, odlučiti kako im pristupiti. 727 00:31:37,830 --> 00:31:41,200 >> MARIJA: Nešto poput visoke razine Razumijevanje logike što 728 00:31:41,200 --> 00:31:42,220 tražimo od vas da učinite. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Točno. 730 00:31:42,485 --> 00:31:44,190 I, u stvari, a Zamyla Walkthroughs značilo 731 00:31:44,190 --> 00:31:46,190 odgovoriti na najčešća pitao pitanje gdje 732 00:31:46,190 --> 00:31:48,610 Počeo sam raditi, pogotovo kada ove duge specifikacije 733 00:31:48,610 --> 00:31:51,960 malo zastrašujuće dao sav tekst i slike koje su u njima. 734 00:31:51,960 --> 00:31:54,890 >> Dakle water.c, naći ćete Nakon što ste ga završili, 735 00:31:54,890 --> 00:31:56,920 je zapravo relativno jednostavan. 736 00:31:56,920 --> 00:31:58,882 Apsolutno su hrpa od vas će lupati 737 00:31:58,882 --> 00:32:01,840 glave o zid pokušavajući shvatiti zašto to nije sastavljanju 738 00:32:01,840 --> 00:32:03,450 ili zašto to nije ispravno radi. 739 00:32:03,450 --> 00:32:05,040 No, nakon što ste učinili s njom i nakon što ste 740 00:32:05,040 --> 00:32:07,620 proveo neko vrijeme bori s bilo od bugova koji bi mogli imati, 741 00:32:07,620 --> 00:32:09,490 vidjet ćete da je to vrlo kratki program. 742 00:32:09,490 --> 00:32:11,770 To se može obaviti u samo nekoliko linija koda, od kojih je većina 743 00:32:11,770 --> 00:32:15,030 vidjeli smo ovdje u predavanju već, ako sastavljanja pravo blokova. 744 00:32:15,030 --> 00:32:16,810 >> I kao što predlažemo ovdje, to će pitati 745 00:32:16,810 --> 00:32:22,250 da odredite koliko minuta netko tuširanja na kampusu. 746 00:32:22,250 --> 00:32:24,779 Mi navesti u problemu podešavanje brzine protoka vode 747 00:32:24,779 --> 00:32:27,320 u, kao što su tuš, low-flow Glava, baš kao Seinfeld isječak 748 00:32:27,320 --> 00:32:29,180 što smo vidjeli jučer ili ih budete suprotno. 749 00:32:29,180 --> 00:32:30,971 I onda samo trebate učiniti malo matematike, 750 00:32:30,971 --> 00:32:34,710 really-- aritmetiku pomoću C ispričati nam koliko, otprilike, boce vode 751 00:32:34,710 --> 00:32:37,720 da je ekvivalentna ako smo uzimanje n-minutni tuš. 752 00:32:37,720 --> 00:32:41,389 >> Sada, u mario.c, to se događa biti nešto više programa. 753 00:32:41,389 --> 00:32:42,930 To još uvijek neće biti tako dugo. 754 00:32:42,930 --> 00:32:45,130 Samo nekoliko redaka dulje nego water.c. 755 00:32:45,130 --> 00:32:48,230 Ali to će biti prilika stvoriti staru školu Mario 756 00:32:48,230 --> 00:32:50,670 Piramida od Super Mario Braća ili neki nastavak na. 757 00:32:50,670 --> 00:32:53,510 To neće izgledati kao ljepše ili kao boja kao da je jedan igrač. 758 00:32:53,510 --> 00:32:56,468 Samo ćemo koristiti malo izraze s oznakom # kao što mi imamo ovdje na zaslonu 759 00:32:56,468 --> 00:32:58,120 pomoću ASCII tekst. 760 00:32:58,120 --> 00:33:00,362 Ali to će se približna istu ideju. 761 00:33:00,362 --> 00:33:02,570 I to će biti vježbe koje na prvi pogled 762 00:33:02,570 --> 00:33:04,720 izgleda prilično jednostavno simple-- ispisati jednostavan piramidu. 763 00:33:04,720 --> 00:33:07,345 No, tu je par obilježja ovdje su zanimljivi. 764 00:33:07,345 --> 00:33:12,400 Obavijest da rightmost rubu piramida zapravo ima širinu dva. 765 00:33:12,400 --> 00:33:14,570 Dakle, postoje dva jednaka Visina stupova, koji 766 00:33:14,570 --> 00:33:16,804 čini to zahtijevaju malo Malo misli da bi 767 00:33:16,804 --> 00:33:19,720 jeste li dobili koji točno pravo, kao što je za razliku od samo savršeno nagnuti 768 00:33:19,720 --> 00:33:20,220 linije. 769 00:33:20,220 --> 00:33:23,340 Dakle, to je malo kutak slučaja ali odgovara stvarnoj igri. 770 00:33:23,340 --> 00:33:27,610 >> I to je također nije očito na prvi pogled kako ispisati bijeli prostor. 771 00:33:27,610 --> 00:33:29,430 Dakle, kada sam pogled na Uzorak izlaz here-- 772 00:33:29,430 --> 00:33:32,440 i to je također u spec-- se vrsta izgleda kao pravokutnik, 773 00:33:32,440 --> 00:33:35,120 ali dijagonalom od pravokutnik je odrezala, 774 00:33:35,120 --> 00:33:37,320 i to je samo bijela mjesta, da se tako izrazim. 775 00:33:37,320 --> 00:33:40,100 I tako često postavljana Pitanje ovdje je uvijek, dobro, 776 00:33:40,100 --> 00:33:43,302 kako mogu premjestiti izraze s oznakom # na to pravo? 777 00:33:43,302 --> 00:33:44,760 Ili kako mogu ispisati prazne prostore? 778 00:33:44,760 --> 00:33:46,860 I to je zapravo lakše nego većina studenata misli. 779 00:33:46,860 --> 00:33:47,360 Pravo? 780 00:33:47,360 --> 00:33:51,620 Možete ga približan vizualno jednostavno udaranje razmaknicu jednom ili dvaput 781 00:33:51,620 --> 00:33:52,700 ili tri puta. 782 00:33:52,700 --> 00:33:56,260 >> I tako, iako s printf smo gotovo Uvijek ispisati niz ili int 783 00:33:56,260 --> 00:33:59,950 ili riječ poput "Pozdrav, svijet "ili niz riječi, 784 00:33:59,950 --> 00:34:03,560 možete samo ispisati citat, prostor, citat. 785 00:34:03,560 --> 00:34:06,320 A to će zapravo dati što bijeli prostor postoji. 786 00:34:06,320 --> 00:34:08,330 Pa imajte to na umu i Ne overthink ovo. 787 00:34:08,330 --> 00:34:10,570 Vi stvarno trebate odlučiti red po red, 788 00:34:10,570 --> 00:34:14,280 Nije za razliku od vašeg primjer trenutak prije, koliko je onih koji 789 00:34:14,280 --> 00:34:18,420 stupovi bi trebali biti bijeli prostor i koliko ih treba biti izraze s oznakom #. 790 00:34:18,420 --> 00:34:21,560 Trebat će malo vremena, ali to je konačnici logika puzzle sorti. 791 00:34:21,560 --> 00:34:22,060 >> MARIJA: Da. 792 00:34:22,060 --> 00:34:25,060 Ali logika ide red će biti vrlo korisno ovdje. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Da. 794 00:34:25,810 --> 00:34:28,976 Mislim da je uzorak koda si gave-- čak iako to nije bio kompletan program. 795 00:34:28,976 --> 00:34:34,247 Još uvijek je potrebno int i glavni i praznina i #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 puno stvari iz predavanja. 797 00:34:35,580 --> 00:34:37,629 No, zgrada blokovi Čini se da su tamo. 798 00:34:37,629 --> 00:34:39,920 A onda na kraju je nešto malo više algoritamski. 799 00:34:39,920 --> 00:34:43,210 Tako ispada da je bilo koje vrijeme ići u CVS ili bilo trgovini 800 00:34:43,210 --> 00:34:47,810 i netko pruži Na blagajničko računa ili novca kao promjena, 801 00:34:47,810 --> 00:34:50,620 ispada da su oni, ljudi, da li ili ne oni to znaju ili ne, 802 00:34:50,620 --> 00:34:53,300 Vjerojatno koristite ono što je naziva pohlepni algoritam, 803 00:34:53,300 --> 00:34:58,170 pri čemu ako ste duguje, kažu, $ 21 u promjeni, jer iz nekog razloga 804 00:34:58,170 --> 00:35:01,580 ste kupili nešto vrlo jeftin s vrlo velikim zakona na CVS, 805 00:35:01,580 --> 00:35:05,910 to bi bilo jako neugodno ako je Blagajnik vam je dao 21 singlova ili, još gore 806 00:35:05,910 --> 00:35:07,629 ipak, puno novca. 807 00:35:07,629 --> 00:35:10,670 Umjesto toga, ono što razumna osoba Vjerojatno ćete učiniti je da ide 808 00:35:10,670 --> 00:35:14,224 da zgrabite $ 20, a zatim $ 1 računa, a ruka vam samo dva računa u tom slučaju. 809 00:35:14,224 --> 00:35:17,390 MARIJA: Tako oni traže kako bi se smanjila promjena koje daju natrag na vas. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Točno. 811 00:35:17,850 --> 00:35:19,540 A isto bave novca, kao dobro. 812 00:35:19,540 --> 00:35:23,040 Ako ste duguje, kažu, $ 0.50, nadam se da ne želite 50 penija. 813 00:35:23,040 --> 00:35:25,500 Umjesto toga žele dva četvrtine, na primjer. 814 00:35:25,500 --> 00:35:27,540 Sada, to ne pretpostaviti da blagajnik mora 815 00:35:27,540 --> 00:35:29,940 dosta svake vjeroispovijesti koji on ili ona možda želite dati. 816 00:35:29,940 --> 00:35:32,148 No, mi vam omogućiti da preuzme koliko u problemu. 817 00:35:32,148 --> 00:35:35,590 A cilj, u konačnici, je implementirati u C kod pohlepan algoritam. 818 00:35:35,590 --> 00:35:37,344 Dakle, korisnik je dopušteno upisati u koliko 819 00:35:37,344 --> 00:35:40,510 mijenjati on ili ona je dugovao s dolara i centi, neka vrsta pomičnim zarezom 820 00:35:40,510 --> 00:35:41,590 vrijednost vjerojatno. 821 00:35:41,590 --> 00:35:45,530 A onda morate učiniti za matematiku i shvatiti algoritamski, dobro, 822 00:35:45,530 --> 00:35:49,020 koliko novca mogu dati što minimalno da vam 823 00:35:49,020 --> 00:35:50,270 upravo taj iznos promjene. 824 00:35:50,270 --> 00:35:53,470 No, tu će biti Nekoliko lukav dijelova ovdje, zar ne? 825 00:35:53,470 --> 00:35:56,236 Kao da je cijeli Pitanje nepreciznost. 826 00:35:56,236 --> 00:35:56,860 MARIJA: Točno. 827 00:35:56,860 --> 00:35:59,114 Dakle, s pomičnim zarezom Vrijednosti su nepreciznost. 828 00:35:59,114 --> 00:36:00,780 Jesmo li razgovarati o tome u predavanju danas? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Napravili smo Posljednji put u predavanju. 830 00:36:02,340 --> 00:36:03,506 Razgovarali smo o nepreciznosti. 831 00:36:03,506 --> 00:36:08,840 A vi ne želite prevariti korisnika koliko promjena on ili ona duguje. 832 00:36:08,840 --> 00:36:11,290 I tako prohod, u problem postaviti specifikacija, 833 00:36:11,290 --> 00:36:15,990 dati neki mislili, u konačnici, kako bi se kako možete ublažiti one nepreciznost 834 00:36:15,990 --> 00:36:17,280 pogreške, potencijalno. 835 00:36:17,280 --> 00:36:21,050 To je izbjeći, sigurno, za ulazi mi govorimo. 836 00:36:21,050 --> 00:36:23,590 I, u stvari, pennies-- Možda ćemo odgoditi za Zamyla, 837 00:36:23,590 --> 00:36:25,136 Mislim, za trikove tamo. 838 00:36:25,136 --> 00:36:27,760 Dakle u konačnici, pronaći ćete progresija problema ovaj tjedan, 839 00:36:27,760 --> 00:36:30,700 prvi od kojih je prilično mala, zatim medij, onda je malo veći. 840 00:36:30,700 --> 00:36:33,200 No, svi oni koriste zgradu blokova od prošlog tjedna, 841 00:36:33,200 --> 00:36:35,280 iz ovog supersection, Problem postaviti Specifikacija 842 00:36:35,280 --> 00:36:36,710 stavlja vas u bezbroj izvora. 843 00:36:36,710 --> 00:36:41,000 Ali ipak, ako uopće bore, osobito među onima manje ugodno 844 00:36:41,000 --> 00:36:42,917 bez prethodne pozadini, dolaze radnog vremena 845 00:36:42,917 --> 00:36:44,958 u ponedjeljak i utorak i Srijedu i četvrtak. 846 00:36:44,958 --> 00:36:46,950 Idi na CS50 Raspravite putem Web stranica tijeku je, 847 00:36:46,950 --> 00:36:49,080 preko kojeg možete razgovarati s osobljem i kolege. 848 00:36:49,080 --> 00:36:51,670 >> Ali u konačnici, mislim da je najbolji savjet je samo započeti rano. 849 00:36:51,670 --> 00:36:54,711 To nije vrsta klase koja vas treba početkom psets srijedu 850 00:36:54,711 --> 00:36:56,640 noć, ili još gore u četvrtak navečer. 851 00:36:56,640 --> 00:36:59,067 >> MARIJA: Moj najbolji savjet je da su počeli u ponedjeljak. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: ponedjeljak. 853 00:36:59,900 --> 00:37:02,490 Dakle, ako niste započeli already-- br. 854 00:37:02,490 --> 00:37:04,732 No, čak i ako nije u ponedjeljak, a zatim u utorak. 855 00:37:04,732 --> 00:37:05,690 Što prije to bolje. 856 00:37:05,690 --> 00:37:08,605 I to je razlog Naravno ima toliko kasno je dana 857 00:37:08,605 --> 00:37:10,535 da vam malo psihološki pritisak 858 00:37:10,535 --> 00:37:13,684 početi ranije, ali još uvijek neka stvari skliznuti kada stvari potrajati dulje 859 00:37:13,684 --> 00:37:14,350 nego što očekujete. 860 00:37:14,350 --> 00:37:17,950 >> MARIJA: A želite iskoristiti Radno vrijeme koliko možete, previše. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Ima li pitanja? 862 00:37:20,291 --> 00:37:20,790 U redu. 863 00:37:20,790 --> 00:37:22,930 Pa, zašto ne bismo odgoditi ovdje? 864 00:37:22,930 --> 00:37:23,487