1 00:00:00,000 --> 00:00:03,353 >> [Zenelejátszási] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID MALAN: Hello mindenkinek. 4 00:00:06,050 --> 00:00:07,777 Ez CS50 a szuperszakaszon. 5 00:00:07,777 --> 00:00:09,860 Hozzárendelt szakaszok nem kezdeni egy hétig. 6 00:00:09,860 --> 00:00:11,580 És így ma, itt vagyok with-- 7 00:00:11,580 --> 00:00:12,122 >> MÁRIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID MALAN: --to ténylegesen vessen egy pillantást a problémát 9 00:00:14,163 --> 00:00:16,110 meg egyet, a pálya első hetében anyag, 10 00:00:16,110 --> 00:00:19,780 neked orientált CS50 IDE, egy kicsit Linux, az operációs rendszer, amely 11 00:00:19,780 --> 00:00:22,290 futó IDE, valamint nézd meg néhány átmenet 12 00:00:22,290 --> 00:00:25,730 a semmiből C vezető Akár problémát meg egyet. 13 00:00:25,730 --> 00:00:28,340 >> Tehát minden további nélkül, A probléma meg egyet, 14 00:00:28,340 --> 00:00:30,520 fogsz lenni be CS50 IDE, amely 15 00:00:30,520 --> 00:00:33,230 ez a web-alapú programozás környezetet, amit használni annak érdekében, 16 00:00:33,230 --> 00:00:34,280 programokat írhassanak. 17 00:00:34,280 --> 00:00:37,280 Ez már úgy néz ki, nagyon emlékeztet egy tipikus számítógép 18 00:00:37,280 --> 00:00:39,430 rendszert futtató operációs nevű rendszer Linux. 19 00:00:39,430 --> 00:00:42,440 De ez az úgynevezett felhő, ami azt jelenti, mindenki az osztályban 20 00:00:42,440 --> 00:00:45,100 valóban van ő saját számlás és használja is. 21 00:00:45,100 --> 00:00:48,950 >> Így a legtöbb akkor valószínűleg még soha nem használt Linux környezetben előtt, vagy talán 22 00:00:48,950 --> 00:00:50,447 még egy parancssoros felület. 23 00:00:50,447 --> 00:00:52,280 És egy parancssori környezet különböző. 24 00:00:52,280 --> 00:00:53,200 Ez mind szöveges. 25 00:00:53,200 --> 00:00:54,730 Ez mind billentyűparancsokra. 26 00:00:54,730 --> 00:00:59,480 És ez nem mousing semmilyen ikont, nincs párbeszéd ablakok, nincs menük. 27 00:00:59,480 --> 00:01:00,212 Ez pusztán a szöveg. 28 00:01:00,212 --> 00:01:01,920 Tehát az első, ez a fajta Az érzés, mintha egy lépést 29 00:01:01,920 --> 00:01:04,434 visszafelé tekintve kifinomultság. 30 00:01:04,434 --> 00:01:06,600 De ez végül is egy csomó erősebb, természetesen, 31 00:01:06,600 --> 00:01:08,510 Egy számítógép tudós, végül. 32 00:01:08,510 --> 00:01:09,540 >> Szóval vessünk egy pillantást. 33 00:01:09,540 --> 00:01:13,850 Itt vagyok a CS50.io, amelyen keresztül akkor jelentkezzen be CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 És ugyanúgy, mint a Scratch, van három fő területen erre a képernyőre. 35 00:01:17,414 --> 00:01:20,080 Tehát a bal oldali, van mi lesz a fájl böngésző. 36 00:01:20,080 --> 00:01:22,413 És itt van ez a mappa a tetejére, ami most üres 37 00:01:22,413 --> 00:01:24,690 mióta megszabadult az én fájlokat, mielőtt szuperszakaszon. 38 00:01:24,690 --> 00:01:27,599 És ez az, ahol mi menteni C fájlokat írunk. 39 00:01:27,599 --> 00:01:30,890 A jobb felső részen, van egy hely, ahol minden kedves kódot fog kapni írva. 40 00:01:30,890 --> 00:01:34,610 És valóban, ha rákattintok ezt a plusz, ez a fog én döntöm új fájlt. 41 00:01:34,610 --> 00:01:38,310 És itt tudok írásához C kód, vagy, Tényleg, számos más nyelven. 42 00:01:38,310 --> 00:01:42,670 >> És majd az alján, ahol mondja jharvard @ ide50-- és a tiéd lesz 43 00:01:42,670 --> 00:01:45,080 mondjuk egy kicsit different-- mi a neve? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Terminal ablakot. 46 00:01:49,310 --> 00:01:49,570 Igen. 47 00:01:49,570 --> 00:01:51,810 Így a terminál ablak az úgynevezett parancssor 48 00:01:51,810 --> 00:01:55,540 felületen keresztül, amely kölcsönhatásba léphet az alapul szolgáló operációs rendszer. 49 00:01:55,540 --> 00:01:58,220 És most, mi lesz hogy alig használta this-- 50 00:01:58,220 --> 00:02:01,170 Csak összeállításához, hogy nézd meg hibaüzenetek, hogy látjuk, 51 00:02:01,170 --> 00:02:02,347 és futtatni a programokat. 52 00:02:02,347 --> 00:02:04,680 De végül is, megyünk erre sokkal több is. 53 00:02:04,680 --> 00:02:07,490 És akkor még telepíteni a szoftvert és kezeli a munkaterület 54 00:02:07,490 --> 00:02:09,066 belül CS50 IDE, valamint. 55 00:02:09,066 --> 00:02:10,440 De még az, hogy egy másik alkalommal. 56 00:02:10,440 --> 00:02:12,689 >> Szóval menjünk előre, és levelet egy nagyon egyszerű program csak 57 00:02:12,689 --> 00:02:15,064 hogy menjen át a bemelegítés a hello.c, ami talán 58 00:02:15,064 --> 00:02:16,480 A legegyszerűbb programot tudunk írni. 59 00:02:16,480 --> 00:02:18,330 Már nyitott egy új lapot. 60 00:02:18,330 --> 00:02:24,310 Megyek megy előre, és mondjuk közé tartoznak a standard io.h. 61 00:02:24,310 --> 00:02:25,325 Aztán int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 És akkor printf ("Hello, world" backslash n, közel idézet, 64 00:02:35,200 --> 00:02:39,480 közel zárójelben, és pontosvessző. 65 00:02:39,480 --> 00:02:39,990 >> Minden rendben. 66 00:02:39,990 --> 00:02:41,700 Tehát most vette észre a ablak cím nélküli. 67 00:02:41,700 --> 00:02:44,840 Úgyhogy nagyon gyorsan megy felmenni, Mentés. 68 00:02:44,840 --> 00:02:46,910 És fontos, hogy Én ezt nem "hello". 69 00:02:46,910 --> 00:02:49,243 Tehát egy nagyon gyakori hiba, különösen a problémás állítani egy, 70 00:02:49,243 --> 00:02:52,530 az, hogy véletlenül éppen hívja fel program "víz" vagy "kapzsi", vagy "Mario" 71 00:02:52,530 --> 00:02:53,890 vagy "hitel" vagy hasonlók. 72 00:02:53,890 --> 00:02:55,970 De ha valóban szeretnénk, hogy győződjön Biztos a fájl kiterjesztését 73 00:02:55,970 --> 00:02:58,928 mert ez az egyetlen módja, hogy a a fordító és a kód szerkesztő 74 00:02:58,928 --> 00:03:00,710 tudja, hogy maga ténylegesen írásban C-kódot. 75 00:03:00,710 --> 00:03:02,280 Szóval hadd menjen előre, és kattintson a Mentés gombra. 76 00:03:02,280 --> 00:03:05,710 >> És most is, mit CS50 IDE tett értünk van ez is 77 00:03:05,710 --> 00:03:07,120 szintaxis kiemelve mindent. 78 00:03:07,120 --> 00:03:08,822 Szóval ez tette mindent nagyon színes. 79 00:03:08,822 --> 00:03:10,780 És az egész célja ez nem funkcionális. 80 00:03:10,780 --> 00:03:14,290 Ez csak felhívni a szemem, hogy a fogalmilag különböző darab 81 00:03:14,290 --> 00:03:15,310 E program. 82 00:03:15,310 --> 00:03:17,570 Szóval menjünk előre, és lefordításával. 83 00:03:17,570 --> 00:03:19,490 És tudom lefordítani ezt egy pár módon. 84 00:03:19,490 --> 00:03:22,010 És az első héten, a old-school, ahogy tettük 85 00:03:22,010 --> 00:03:26,250 ez volt a szó szoros értelmében a parancsot line-- "csengés hello.c." 86 00:03:26,250 --> 00:03:27,596 És akkor nyomja le az Entert. 87 00:03:27,596 --> 00:03:29,720 És semmi sem történik a terminál ablakban. 88 00:03:29,720 --> 00:03:32,654 De mi is változott az IDE? 89 00:03:32,654 --> 00:03:35,320 Ahol ismét IDE csak azt jelenti, Integrált fejlesztői környezet. 90 00:03:35,320 --> 00:03:38,360 Ez egy divatos módja mondván ez az integrált fejlesztési 91 00:03:38,360 --> 00:03:40,620 környezet fejlesztése szoftver. 92 00:03:40,620 --> 00:03:42,477 Szóval mit változtatni a felhasználói felület? 93 00:03:42,477 --> 00:03:44,310 Mit észre az más, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MÁRIA: észrevettem valamit alatt IDE50 mappa itt. 95 00:03:47,100 --> 00:03:47,850 >> DAVID MALAN: Igen. 96 00:03:47,850 --> 00:03:50,230 Tehát itt nem csak kell nekünk "hello.c." 97 00:03:50,230 --> 00:03:53,120 Mi is "a.out", ami egyfajta buta név egy programot. 98 00:03:53,120 --> 00:03:56,430 De valóban, ez az alapértelmezett név egy programot, ha csak fordítsa le a kódot 99 00:03:56,430 --> 00:03:59,110 és ne mondd el a fordító milyen fájlt kimenet. 100 00:03:59,110 --> 00:04:01,790 Így ha meg akarom futtatni ezt, kell mondani a compiler-- 101 00:04:01,790 --> 00:04:05,340 vagy inkább azt kell mondd el a munkaterületet, hogy én 102 00:04:05,340 --> 00:04:09,780 szeretné futtatni a programot az úgynevezett "a.out." 103 00:04:09,780 --> 00:04:10,550 Adja meg. 104 00:04:10,550 --> 00:04:12,474 És ott van a "hello, világot. "most a" ./ ". 105 00:04:12,474 --> 00:04:13,390 valójában fontos. 106 00:04:13,390 --> 00:04:16,050 Annak ellenére, hogy általában csak írni a nevét a parancsok, 107 00:04:16,050 --> 00:04:19,060 ha ez egy program, amit írásos, ha nem akarjuk mondani, hogy "./" 108 00:04:19,060 --> 00:04:22,460 mert ez kifejezetten megmondja a Linuxnak hogy a futtatni kívánt program neve 109 00:04:22,460 --> 00:04:26,930 "a.out", hogy van ebben, ahol dot azt jelenti, ezt a könyvtárat, hogy én vagyok jelenleg 110 00:04:26,930 --> 00:04:31,600 a, amely történetesen úgynevezett munkaterület, "a.out. 111 00:04:31,600 --> 00:04:35,410 Mert ha csak annyit mondott: "a.out," Enter, Megyek, hogy "a.out parancs nem 112 00:04:35,410 --> 00:04:38,035 találtam ", mert a computer-- mert én találtam ki "a.out;" 113 00:04:38,035 --> 00:04:40,910 nem jött a computer-- nem tudja, hol keresse azt, 114 00:04:40,910 --> 00:04:43,590 annak ellenére, hogy a jobb az orrom alá, hogy úgy mondjam. 115 00:04:43,590 --> 00:04:44,090 OKÉ. 116 00:04:44,090 --> 00:04:49,910 Így lehet megváltoztatni ezt hogy "csengés -o Hello hello.c." 117 00:04:49,910 --> 00:04:53,030 És ha én nyomd meg az Entert, milyen program fog ez kimeneti nekem? 118 00:04:53,030 --> 00:04:55,710 Mi a neve a fájl? 119 00:04:55,710 --> 00:04:57,500 Igen, vissza. 120 00:04:57,500 --> 00:04:58,479 Így van. "Helló." 121 00:04:58,479 --> 00:05:00,520 Szóval "hello" lesz A program neve 122 00:05:00,520 --> 00:05:04,610 mert már használják az úgynevezett parancssori argumentum, amely csak 123 00:05:04,610 --> 00:05:08,120 egy módja változik a viselkedése a fordító, hogy ténylegesen kimenet 124 00:05:08,120 --> 00:05:09,450 egy adott fájl nevét. 125 00:05:09,450 --> 00:05:12,400 És valóban, ha zoom ki, és nézz fel itt, 126 00:05:12,400 --> 00:05:17,430 most már nem csak a "a.out" és "hello.c", hanem a "hello" is. 127 00:05:17,430 --> 00:05:22,410 Így most már tudom csinálni "./hello, az" Enter. 128 00:05:22,410 --> 00:05:23,640 És ott van a "hello, world." 129 00:05:23,640 --> 00:05:25,640 De lastly-- és ez most már az egyezmény 130 00:05:25,640 --> 00:05:27,590 használjuk az egész félév, typically-- 131 00:05:27,590 --> 00:05:30,070 ez akkor is csak annyit ", hogy helló." 132 00:05:30,070 --> 00:05:33,370 És valóban, ez azt mondja, hogy ez akár a mai napig, mert már létezik. 133 00:05:33,370 --> 00:05:37,860 Hadd menjen előre, és távolítsa el, a Az rm parancs, mind a "a.out" - 134 00:05:37,860 --> 00:05:39,644 és azt mondják: "eltávolítani szabályos fájl a.out?" 135 00:05:39,644 --> 00:05:41,810 Ez csak azt jelenti, te Biztos, hogy törölni? 136 00:05:41,810 --> 00:05:42,880 Megyek, hogy igent mond. 137 00:05:42,880 --> 00:05:46,690 És akkor fogok, hogy távolítsa el "hello", de nem "hello.c." 138 00:05:46,690 --> 00:05:49,920 Azt fogom mondani "igen" kifejezetten, de a "y" elegendő, valamint. 139 00:05:49,920 --> 00:05:52,140 >> És most észre, ha én írja ls-- amely visszahívás, 140 00:05:52,140 --> 00:05:55,540 azt jelenti, list-- felsorolja az összes A fájlok az én mappában. 141 00:05:55,540 --> 00:05:57,850 És valóban, ha zoom ki, és nézd meg a bal felső sarokban, 142 00:05:57,850 --> 00:05:59,730 megerősíti, hogy mi ebben a mappában, akkor is, 143 00:05:59,730 --> 00:06:04,990 mintha ez címkézni IDE50 itt és nem munkaterület, ez csak "hello.c." 144 00:06:04,990 --> 00:06:09,152 Tehát most itt lent, ha "make hello," Enter, 145 00:06:09,152 --> 00:06:12,360 most látom, sokkal hosszabb parancsot, de a kifinomultabb parancsot, hogy folyik 146 00:06:12,360 --> 00:06:13,940 hogy hasznos lehet a hetekben, hogy jöjjön. 147 00:06:13,940 --> 00:06:16,720 És most azt mondani, hogy "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Szóval vessünk egy gyors túra néhány más Linux parancsok. 149 00:06:19,257 --> 00:06:21,840 Akkor miért nem tesz egy lépést vissza, és ténylegesen nézd C több 150 00:06:21,840 --> 00:06:25,020 Általában, áttértek a Scratch a C, majd végezetül egy pillantást 151 00:06:25,020 --> 00:06:27,305 Az első probléma meghatározott C. Rendben. 152 00:06:27,305 --> 00:06:30,430 Így fogok menni előre, és csak tiszta az én munkaterület ellenőrző-L csak 153 00:06:30,430 --> 00:06:31,429 tartani a képernyő tiszta. 154 00:06:31,429 --> 00:06:33,520 De ez nem funkcionális hatással másként. 155 00:06:33,520 --> 00:06:35,820 >> Emlékezzünk vissza, hogy láttunk néhány parancs most. 156 00:06:35,820 --> 00:06:39,900 Így láttuk csengés, amely általában akkor nem kell végrehajtani manuálisan többé. 157 00:06:39,900 --> 00:06:41,650 Majd helyett használja a make. 158 00:06:41,650 --> 00:06:45,290 De azt is látta, ls, ami azt mutatja, lista a fájlokat az én könyvtárba. 159 00:06:45,290 --> 00:06:48,750 És most miért there-- kettő van Fájlok most "hello", és "hello.c." 160 00:06:48,750 --> 00:06:52,240 Miért van egy csillag, vagy egy csillag után "hello"? 161 00:06:52,240 --> 00:06:54,900 Ez mit jelenthet alapján hogy mit láttunk az első héten? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Mit gondolsz? 164 00:07:00,400 --> 00:07:02,742 Mit jelent a csillag jelentenek? 165 00:07:02,742 --> 00:07:04,614 >> MÁRIA: For-- a program "hello"? 166 00:07:04,614 --> 00:07:05,530 DAVID MALAN: "Hello *". 167 00:07:05,530 --> 00:07:06,330 Igen. 168 00:07:06,330 --> 00:07:07,760 Ó igen? 169 00:07:07,760 --> 00:07:08,639 Ó, végrehajtható. 170 00:07:08,639 --> 00:07:09,180 Így van. 171 00:07:09,180 --> 00:07:10,890 Tehát ez azt jelenti, hogy "hello" végrehajtható. 172 00:07:10,890 --> 00:07:13,430 Tehát valóban, ez az, amiért Meg tudom csinálni "./hello." 173 00:07:13,430 --> 00:07:13,930 Minden rendben. 174 00:07:13,930 --> 00:07:15,179 Szóval mi mást tehetnék ide? 175 00:07:15,179 --> 00:07:17,290 Nos, kiderült, hogy én is is létre könyvtárakat. 176 00:07:17,290 --> 00:07:20,924 Szóval hadd menjen előre, és hozzon létre, Például egy "pset1" könyvtárban. 177 00:07:20,924 --> 00:07:23,590 És a probléma beállított specifikáció lesz akkor pontosan ezt, 178 00:07:23,590 --> 00:07:25,260 így nem kell emlékezni ma. 179 00:07:25,260 --> 00:07:27,340 De a "mkdir pset1" Úgy tűnik, hogy nincs hatása. 180 00:07:27,340 --> 00:07:30,540 De ismétlem, nincs hibaüzenet általában egy jó dolog. 181 00:07:30,540 --> 00:07:34,060 Tehát ha én írja: "ls" now-- ah, most Nekem van egy futtatható fájlt úgynevezett 182 00:07:34,060 --> 00:07:36,570 "hello", egy C fájl neve "hello.c." 183 00:07:36,570 --> 00:07:40,860 Majd a záró perjel, így a beszélni, azt jelenti, hogy ez egy könyvtár. 184 00:07:40,860 --> 00:07:42,510 >> Tehát valóban, most azt akarom, hogy nyissa meg. 185 00:07:42,510 --> 00:07:45,730 És én nem duplán kattintson rá, mint egy GUI, grafikus környezet. 186 00:07:45,730 --> 00:07:48,550 Én inkább azt mondják: "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Adja meg. 188 00:07:49,640 --> 00:07:53,100 Semmi érdekes úgy tűnik, hogy történt, kivéve az én kis prompt 189 00:07:53,100 --> 00:07:57,300 here-- ez a Linux módón emlékeztetné hol vagyok, akkor mi mappa van nyitva. 190 00:07:57,300 --> 00:08:00,080 Ez csak azt mondta nekem kifejezetten szemben a grafikus. 191 00:08:00,080 --> 00:08:05,100 És ha én írja: "ls" Miért látok egy másik figyelmezteti azonnal, mit gondol, 192 00:08:05,100 --> 00:08:07,269 Amikor sorolja a tartalmát pset1? 193 00:08:07,269 --> 00:08:09,310 MÁRIA: akkor valószínűleg nem Van valami ott. 194 00:08:09,310 --> 00:08:09,630 DAVID MALAN: Igen. 195 00:08:09,630 --> 00:08:11,510 Szóval akkor még nem nyilvánvaló teremtett semmit ott 196 00:08:11,510 --> 00:08:13,150 mert én csak létre a könyvtárat. 197 00:08:13,150 --> 00:08:17,690 Most, ha akartam létrehozni egy file-- számára Például, tudtam hozzon létre egy új fájlt. 198 00:08:17,690 --> 00:08:20,190 És akkor tudtam menni Mentés és mentse el, 199 00:08:20,190 --> 00:08:23,090 mint "mario.c" ha csinálsz A Standard Edition a PSET egyet. 200 00:08:23,090 --> 00:08:27,610 És akkor, mint bármely Mac vagy PC, csak válassza ki a mappát "pset1, mentése. 201 00:08:27,610 --> 00:08:28,740 És most a fájl üres. 202 00:08:28,740 --> 00:08:31,160 De nézzük újra közeli lesz a második. 203 00:08:31,160 --> 00:08:32,470 Csináljuk ls itt. 204 00:08:32,470 --> 00:08:34,470 Most látjuk "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Szóval van néhány más parancsok Érdemes szem előtt tartva több mint time-- 206 00:08:37,850 --> 00:08:41,200 egyértelmű, vagy a Control-L az, amit volna megütnie; mkdir láttunk; 207 00:08:41,200 --> 00:08:45,240 rm láttunk, valamint, amely eltávolítására vagy törlése fájl. 208 00:08:45,240 --> 00:08:49,310 Óvakodj akkor also-- és ha megnézed az online oktatóanyagok, akkor rm -rf 209 00:08:49,310 --> 00:08:52,630 egy nagyon gyakori módja a mondás Mappatöröléshez amely cucc benne. 210 00:08:52,630 --> 00:08:54,280 Csak légy szuper, szuper óvatos. 211 00:08:54,280 --> 00:08:58,780 -rf azt jelenti, rekurzív törölni akármi is 212 00:08:58,780 --> 00:09:01,150 akarsz törölni és erőszakkal törölni. 213 00:09:01,150 --> 00:09:04,630 Tehát rekurzív úton, ha ez egy mappát egy mappát egy mappát a mappa, 214 00:09:04,630 --> 00:09:05,690 törölje mindet. 215 00:09:05,690 --> 00:09:08,680 És erőszakkal azt jelenti, nem is kérdezd igen vagy nem, vagyok biztos benne? 216 00:09:08,680 --> 00:09:11,960 Szóval ez egy szuper veszélyes módja törlése rengeteg dolgot gyorsan. 217 00:09:11,960 --> 00:09:17,210 De beware-- túl gyakran csinál rettenthetetlen diák véletlenül törli, mondjuk, PSET 218 00:09:17,210 --> 00:09:18,000 egy, például. 219 00:09:18,000 --> 00:09:19,833 >> MÁRIA: És ha csak do -r, ők fognak 220 00:09:19,833 --> 00:09:21,870 hogy megkérdezzük őket az összes állományt. 221 00:09:21,870 --> 00:09:22,790 >> DAVID MALAN: Melyik közepesen idegesítő. 222 00:09:22,790 --> 00:09:23,480 >> MÁRIA: Igen. 223 00:09:23,480 --> 00:09:25,813 >> DAVID MALAN: Szóval ezért oly sokan, én benne, 224 00:09:25,813 --> 00:09:27,070 vagyok a szokással, hogy -rf. 225 00:09:27,070 --> 00:09:27,861 De ez veszélyes. 226 00:09:27,861 --> 00:09:29,010 Szóval vevő vigyázz. 227 00:09:29,010 --> 00:09:31,050 És akkor mv fajta Érdekes elemzi. 228 00:09:31,050 --> 00:09:33,600 Tehát ez a lépés parancsot, amely úgy érzi, egy kicsit furcsa 229 00:09:33,600 --> 00:09:37,260 mert akkor valóban használni, hogy fájlok áthelyezése egyik helyről a másikra. 230 00:09:37,260 --> 00:09:39,970 Tegyük fel például, hogy elrontottam. 231 00:09:39,970 --> 00:09:43,660 Tegyük fel, hogy én létrehozott egy új fájlt a PSET. 232 00:09:43,660 --> 00:09:46,320 És én mentettem meg a "greedy.c." 233 00:09:46,320 --> 00:09:49,970 De tegyük fel, véletlenül menteni A IDE50-- így az én munkaterület magát 234 00:09:49,970 --> 00:09:51,580 és nem a pset1. 235 00:09:51,580 --> 00:09:53,960 >> Láthatjuk, amennyire a bal felső sarokban. 236 00:09:53,960 --> 00:09:55,284 Van "greedy.c." 237 00:09:55,284 --> 00:09:56,450 És van néhány megoldás. 238 00:09:56,450 --> 00:09:58,324 Tehát az egyik, tudom használni a szuper felhasználóbarát módon 239 00:09:58,324 --> 00:09:59,740 csak áthúzza. 240 00:09:59,740 --> 00:10:01,910 És hogy valójában megoldhatja a problémát. 241 00:10:01,910 --> 00:10:04,967 De ma, próbálunk nézni A több misztikus, de erős módja 242 00:10:04,967 --> 00:10:05,550 teheti ezt meg. 243 00:10:05,550 --> 00:10:07,880 Szóval hadd vigyem "ls" a pset1. 244 00:10:07,880 --> 00:10:09,690 És én csak látni "mario.c." 245 00:10:09,690 --> 00:10:13,450 Hadd menjek előre, és nem "cd ..". 246 00:10:13,450 --> 00:10:15,320 Szóval CD megint változás könyvtár. 247 00:10:15,320 --> 00:10:18,130 ".." Azt jelenti, hogy mi, igaz? 248 00:10:18,130 --> 00:10:21,100 A múltkor azt mondta: "cd pset1 "belemenni pset1. 249 00:10:21,100 --> 00:10:24,360 Tehát amikor azt mondom: "cd ..", mit csinálok? 250 00:10:24,360 --> 00:10:24,910 Visszafelé. 251 00:10:24,910 --> 00:10:25,150 Igen. 252 00:10:25,150 --> 00:10:26,750 >> Szóval ez lesz az úgynevezett szülő. 253 00:10:26,750 --> 00:10:29,730 Lépj egy szinttel feljebb, mint a kilépő ki egy mappát. 254 00:10:29,730 --> 00:10:30,500 Tehát az Enter billentyűt. 255 00:10:30,500 --> 00:10:31,900 És valóban, nézd, mit tett. 256 00:10:31,900 --> 00:10:37,070 Ez késztetett engem csak a munkaterület helyett A be pset1, ami a munkaterületen. 257 00:10:37,070 --> 00:10:39,710 És most, ha a típus "ls", van egy csomó cuccot. 258 00:10:39,710 --> 00:10:41,650 Ebben van "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Tehát most hadd használja mv, hogy szó mozog "greedy.c" a pset1. 260 00:10:48,720 --> 00:10:51,120 És így sok Linux parancsok működik pontosan ilyen. 261 00:10:51,120 --> 00:10:54,470 Vesznek argumentumok vagy vesznek egy érvet vagy vesznek két parancssori 262 00:10:54,470 --> 00:10:55,449 érvek és így tovább. 263 00:10:55,449 --> 00:10:57,240 És ebben az esetben, ez Szó szerint mit csinál 264 00:10:57,240 --> 00:11:01,670 azt mondja, bár succinctly-- mozgatni greedy.c be pset1. 265 00:11:01,670 --> 00:11:02,310 Adja meg. 266 00:11:02,310 --> 00:11:03,310 Semmi sem történik. 267 00:11:03,310 --> 00:11:06,180 De ha én egy ls újra, kapzsi eltűnt. 268 00:11:06,180 --> 00:11:12,437 És ha én nem "cd pset1", Enter, majd ls újra, most már jó helyen. 269 00:11:12,437 --> 00:11:14,270 Mint félre, ha az Egyes reason-- különösen 270 00:11:14,270 --> 00:11:16,194 Ha szakaszos hálózati csatlakoztathatóság 271 00:11:16,194 --> 00:11:18,360 vagy te járkálni campus a laptop fedelét 272 00:11:18,360 --> 00:11:20,180 zárva, majd nyissa fel újra és munkaterület 273 00:11:20,180 --> 00:11:21,730 Úgy tűnik, kissé a szinkront, nem nagy ügy. 274 00:11:21,730 --> 00:11:23,646 Csak újra a böngészőt ablak, és el kell 275 00:11:23,646 --> 00:11:26,339 resync úgy, hogy a bal oldali fájlböngészőt úgy néz ki, 276 00:11:26,339 --> 00:11:27,380 mint a terminál ablakot. 277 00:11:27,380 --> 00:11:27,921 Ne aggódj. 278 00:11:27,921 --> 00:11:31,460 Kétség esetén az oldal újratöltődik, így Amíg mentette a fájlokat már. 279 00:11:31,460 --> 00:11:31,960 OKÉ. 280 00:11:31,960 --> 00:11:34,710 Tehát mv is fel lehet használni a fájlok átnevezésére. 281 00:11:34,710 --> 00:11:36,760 És vessünk egy pillantást ez a végső parancsot itt. 282 00:11:36,760 --> 00:11:39,950 Tehát suppose-- és ez szuper közös, túl, korán. 283 00:11:39,950 --> 00:11:46,400 Néhány diák időnként létrehoznak egy fájlt nevű, hadd say-- mi még egyet? 284 00:11:46,400 --> 00:11:47,730 Mint "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Szóval én csak kiabálni, a nincs ok, a nagybetűs. 286 00:11:51,080 --> 00:11:53,190 De nem ez az helyes a fájl nevét 287 00:11:53,190 --> 00:11:56,660 ha csak azért, mert a mi problémánk beállítva specifikáció nem mondtam el 288 00:11:56,660 --> 00:11:59,430 hogy mentse a fájlt nagybetűs "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Ehelyett azt várjuk, "water.c" kisbetűvel. 290 00:12:01,320 --> 00:12:03,140 És valóban, ez az problematikus, mert check50, 291 00:12:03,140 --> 00:12:04,370 program fogsz hogy megfeleljen a problémát 292 00:12:04,370 --> 00:12:07,350 beállítva, amelyik automatikusan teszteli a helyességét a kódot 293 00:12:07,350 --> 00:12:11,615 fog kiabálni veled, ha nem sikerül találni "water.c" a csupa kisbetűvel. 294 00:12:11,615 --> 00:12:12,712 >> Szóval kell rögzíteni ezt. 295 00:12:12,712 --> 00:12:14,920 Szóval sok különböző módon Ehhez az első, amely 296 00:12:14,920 --> 00:12:18,330 az lenne, hogy a Control billentyűt lenyomva vagy jobb klikk A fájlnév és csak megváltoztatni átnevezése. 297 00:12:18,330 --> 00:12:19,740 Teljesen rendben kell csinálni. 298 00:12:19,740 --> 00:12:21,820 De ez ma is nézzük csinálni egy kicsit cifrább. 299 00:12:21,820 --> 00:12:26,680 Nézzünk mv változtatni "WATER.C", hogy "water.c." 300 00:12:26,680 --> 00:12:30,690 Így akkor is használhatja az első érv nevezze át a második érv 301 00:12:30,690 --> 00:12:34,455 ha a második érv sem, a Tény, hogy egy mappát vagy egy könyvtár nevét. 302 00:12:34,455 --> 00:12:35,120 >> Minden rendben. 303 00:12:35,120 --> 00:12:39,560 És végül, egy kicsit trick-- így vagyok én munkaterület könyvtár abban a pillanatban. 304 00:12:39,560 --> 00:12:43,660 Ha azt akarom, hogy bekerüljön PSET egy, Én minden bizonnyal írja: "cd pset1." 305 00:12:43,660 --> 00:12:47,260 De ez annyira unalmas, hogy írja "pset1" vagy hosszabb fájlneveket vagy könyvtár nevét 306 00:12:47,260 --> 00:12:47,980 azóta is. 307 00:12:47,980 --> 00:12:51,960 Szóval igen gyakran Linux alatt, mit amit tehetünk, elkezd gépelés "PSE" 308 00:12:51,960 --> 00:12:56,100 és csak unatkozni, megnyomjuk a Tab, és hagyja, A számítógép rájönni az Ön számára. 309 00:12:56,100 --> 00:12:58,190 Super hasznos, hogy abba a szokás. 310 00:12:58,190 --> 00:13:01,079 Az egyetlen fogás, ha van több fájl vagy mappa kezdődő 311 00:13:01,079 --> 00:13:02,870 A "P" betű, vagy "ps" lehet, hogy 312 00:13:02,870 --> 00:13:05,525 begépelni egy pár előtt számítógép tudja, mit kell tennie. 313 00:13:05,525 --> 00:13:06,820 >> MÁRIA: Szeretjük parancsikonokat. 314 00:13:06,820 --> 00:13:08,695 >> DAVID MALAN: Ez akarat takaríthat meg, így sok időt. 315 00:13:08,695 --> 00:13:11,930 És azt is, ahogy mondta előadásában, akkor Lépjünk fel a történelemben, fel és le, 316 00:13:11,930 --> 00:13:15,461 megtalálni a közelmúltban végrehajtott parancsokat, valamint. 317 00:13:15,461 --> 00:13:15,960 Minden rendben. 318 00:13:15,960 --> 00:13:20,904 Tehát most, nézzük a figyelmét vissza hogy egy egyszerű program, hello world. 319 00:13:20,904 --> 00:13:22,195 Szóval akkor már össze ezt pontosan. 320 00:13:22,195 --> 00:13:24,050 És most miért nem veszünk Nézd meg az adattípusok 321 00:13:24,050 --> 00:13:26,776 majd átmenet némi megfelelő Scratch blokkok C. 322 00:13:26,776 --> 00:13:27,400 MÁRIA: Félelmetes. 323 00:13:27,400 --> 00:13:30,031 Tehát most, hogy már megkezdődött programok írása a C-ben 324 00:13:30,031 --> 00:13:32,530 fogunk kezdeni beszélni mintegy adattípusok és változók. 325 00:13:32,530 --> 00:13:37,570 Szóval néhány adattípusok azt szeretném tudni, most kezdődik 326 00:13:37,570 --> 00:13:39,400 azok, amelyek A kékkel. 327 00:13:39,400 --> 00:13:42,420 Tehát van int első, amely áll az egész. 328 00:13:42,420 --> 00:13:46,075 És hogy tartja egész számok, mint te Lehet, hogy guessed-- így 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 és bármely más egész szám hogy ki tud találni. 330 00:13:47,950 --> 00:13:48,730 >> DAVID MALAN: És szintén negatív. 331 00:13:48,730 --> 00:13:50,220 >> MÁRIA: És azt is negatívak, aha. 332 00:13:50,220 --> 00:13:51,450 És 0. 333 00:13:51,450 --> 00:13:54,250 Aztán ott van úszók, amely lebegőpontos számok. 334 00:13:54,250 --> 00:13:58,360 Szóval ez a valós számok amelyek tizedes jegyre. 335 00:13:58,360 --> 00:14:03,960 Tehát 5,0, 5,2, és még inkább számjegy a tizedesvessző után, 336 00:14:03,960 --> 00:14:05,620 is, és szintén negatív is. 337 00:14:05,620 --> 00:14:07,530 Aztán ott van char ami egy karaktert. 338 00:14:07,530 --> 00:14:10,240 Tehát úgy gondolom, beszélgettünk Ezt előadás ma. 339 00:14:10,240 --> 00:14:15,682 De van betűket, a example-- A, B, C-- tárolható, mint egy char. 340 00:14:15,682 --> 00:14:18,390 De akkor már sokkal több szimbólum tárolható, mint egy char. 341 00:14:18,390 --> 00:14:22,380 És azok tárolása ASCII. 342 00:14:22,380 --> 00:14:25,280 >> És akkor mi van bool, amelyek Logikai. 343 00:14:25,280 --> 00:14:29,067 És azok értékelik, hogy igaz vagy Hamis vagy 1 és 0, ill. 344 00:14:29,067 --> 00:14:31,650 DAVID MALAN: És emlékezzünk arra, hogy bool származik CS50 könyvtár. 345 00:14:31,650 --> 00:14:33,300 Szóval ez nem épült be C, de ez szuper hasznos 346 00:14:33,300 --> 00:14:34,850 hogy a fogalom igaz és hamis. 347 00:14:34,850 --> 00:14:36,990 És bár Lehet think-- vicces tény. 348 00:14:36,990 --> 00:14:43,700 A bool technikailag szüksége, hogy hány bitet, valóban, hogy képviselje Igaz versus hamis? 349 00:14:43,700 --> 00:14:47,910 Hány bit Mit gondolsz akkor lenne szükség, maximálisan? 350 00:14:47,910 --> 00:14:48,790 Ja, csak egy. 351 00:14:48,790 --> 00:14:52,077 Így kiderül, hogy a C- nem adhatok csak egy kicsit. 352 00:14:52,077 --> 00:14:54,160 A legkisebb mértékegység kaphat nyolc. 353 00:14:54,160 --> 00:14:57,090 Szóval ez egy kicsit pazarló azok vagytok segítségével egy egész bájtot vagy nyolc bit, 354 00:14:57,090 --> 00:14:58,340 képviseletére igaz vagy hamis. 355 00:14:58,340 --> 00:15:01,807 De ez már csak így ez végrehajtott C a CS50 könyvtár. 356 00:15:01,807 --> 00:15:04,890 MÁRIA: És akkor az is, hogy mi vagyunk Nem fog beszélni, mint széles körben 357 00:15:04,890 --> 00:15:08,060 jobb now-- dupla, ez a nagyobb úszókkal. 358 00:15:08,060 --> 00:15:09,811 Hosszú hosszú és rövid is az egész. 359 00:15:09,811 --> 00:15:10,643 DAVID MALAN: Valóban. 360 00:15:10,643 --> 00:15:13,190 Hacker kiadásában PSET egy, valójában használjuk hosszú, hosszú. 361 00:15:13,190 --> 00:15:15,801 De a Standard Edition ne legyen szükség. 362 00:15:15,801 --> 00:15:16,300 MÁRIA: Cool. 363 00:15:16,300 --> 00:15:17,361 OKÉ. 364 00:15:17,361 --> 00:15:20,110 Szóval operators-- ha kell valószínűleg ismeri a legtöbb ilyen. 365 00:15:20,110 --> 00:15:22,620 Emellett a +; kivonás, -. 366 00:15:22,620 --> 00:15:24,070 Szorzáskor megvan a *. 367 00:15:24,070 --> 00:15:25,900 Tehát nem az X, hogy szoktunk használni. 368 00:15:25,900 --> 00:15:27,840 Osztály, mi van a backslash. 369 00:15:27,840 --> 00:15:31,380 És modulo az utolsó üzemeltető, fogunk beszélni most. 370 00:15:31,380 --> 00:15:35,610 Ez az üzemben, amely lehetővé teszi számunkra, hogy hogy a fennmaradó egy részlege. 371 00:15:35,610 --> 00:15:40,630 Tehát, ha van 4% 2, 4 osztva 2 2 a fennmaradó 0. 372 00:15:40,630 --> 00:15:41,740 Tehát 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, ahogy gondolta volna. 375 00:15:44,870 --> 00:15:48,860 És ne feledd, ha használ az összes ilyen üzemeltetők számára a PEMDAS szabályokat. 376 00:15:48,860 --> 00:15:54,060 >> DAVID MALAN: Tehát, hogy világos legyen, ha nem 4% 2, miért van az, hogy 0, pontosan? 377 00:15:54,060 --> 00:15:57,480 >> MÁRIA: Mivel a 4 osztva 2 jelentése 2 egy fennmaradó 0. 378 00:15:57,480 --> 00:16:00,752 Így modulo ad nekünk, hogy a fennmaradó szemben a megosztásának eredménye. 379 00:16:00,752 --> 00:16:02,960 DAVID MALAN: És valóban, mit fogunk találni ezt a hasznos 380 00:16:02,960 --> 00:16:05,640 az az, hogy bizonyos problémák ez nem feltétlenül egy, 381 00:16:05,640 --> 00:16:08,040 Ha azt szeretné, hogy a korlátozó hatást gyakorolhatnak magát 382 00:16:08,040 --> 00:16:10,720 egy sor számok mint a 0-tól valamit, 383 00:16:10,720 --> 00:16:13,904 akkor a modulo tekerje körül korábban, mint például a 2 milliárd 384 00:16:13,904 --> 00:16:16,320 vagy a 4000000000 értéket beszéltünk az előadás. 385 00:16:16,320 --> 00:16:16,870 >> MÁRIA: Igen. 386 00:16:16,870 --> 00:16:19,429 És még a "kapzsi" Talán. 387 00:16:19,429 --> 00:16:21,345 DAVID MALAN: Igen, probléma állítva egy, valamint. 388 00:16:21,345 --> 00:16:22,520 MÁRIA: Igen, szép. 389 00:16:22,520 --> 00:16:24,340 DAVID MALAN: Jó hint. 390 00:16:24,340 --> 00:16:25,750 MÁRIA: Sajnálom. 391 00:16:25,750 --> 00:16:28,590 Logikai expressions-- így A logikai műveletek, 392 00:16:28,590 --> 00:16:31,770 fogunk beszélni összes ilyen, hogy itt látsz. 393 00:16:31,770 --> 00:16:35,310 Tehát most, hogy van két egyenlőség jelet felsorolt ​​egyenlők. 394 00:16:35,310 --> 00:16:38,650 Tehát ezek az összehasonlítás. 395 00:16:38,650 --> 00:16:40,830 Eddig még csak láttam egy egyenlő jel. 396 00:16:40,830 --> 00:16:44,870 Ez az, amikor mi hozzá egy értéket egy változónak. 397 00:16:44,870 --> 00:16:50,160 Tehát, ha láttunk int n = 5, majd amit rendelt 5 az n változó. 398 00:16:50,160 --> 00:16:55,600 De ha azt akarjuk használni == az összehasonlítás, tudjuk ellenőrizni, ha n == 5. 399 00:16:55,600 --> 00:16:58,310 És ha n == 5, akkor ez igaz. 400 00:16:58,310 --> 00:17:01,950 >> Szóval logikai operátorok lehetővé teszi számunkra, alapvetően, 401 00:17:01,950 --> 00:17:04,670 értékelni logikai kifejezések igaz vagy hamis. 402 00:17:04,670 --> 00:17:07,819 Tehát nem equals-- van a felkiáltójel és egyenlők. 403 00:17:07,819 --> 00:17:14,240 Szóval mi is ellenőrizze, ha n nem egyenlő 5-- így n! = 5. 404 00:17:14,240 --> 00:17:17,640 Kevesebb, mint, kisebb, vagy egyenlő, mint, nagyobb mint, nagyobb vagy egyenlő, mint, 405 00:17:17,640 --> 00:17:20,720 és akkor mi van a logikai ÉS és a logikai VAGY. 406 00:17:20,720 --> 00:17:24,060 És azok lehetővé teszik számunkra, hogy értékelje több logikai kifejezések össze 407 00:17:24,060 --> 00:17:27,930 alapvetően jön össze, mint Egy egész logikai kifejezés. 408 00:17:27,930 --> 00:17:34,970 Tehát, ha meg akarjuk találni egy számot, mondjuk, amely nagyobb, mint 5, de kevesebb mint 15 409 00:17:34,970 --> 00:17:39,810 ugyanabban az időben, mi lenne használja a logikai ÉS operátorral, hogy ha n 410 00:17:39,810 --> 00:17:42,937 nagyobb, mint 5 && n kevesebb, mint 15. 411 00:17:42,937 --> 00:17:44,770 DAVID MALAN: És itt, is, ez tényleg egyszerű 412 00:17:44,770 --> 00:17:47,290 korán véletlenül Használja csak egy jelet 413 00:17:47,290 --> 00:17:48,572 vagy egy függőleges vonal. 414 00:17:48,572 --> 00:17:51,280 És remélhetőleg a fordító kiabálni veled, mert valóban 415 00:17:51,280 --> 00:17:52,530 Van egy nagyon mást jelent. 416 00:17:52,530 --> 00:17:55,660 Azoknak kíváncsiak, ők használt bitenkénti műveletek, 417 00:17:55,660 --> 00:17:57,197 működő egyes biteket. 418 00:17:57,197 --> 00:17:58,780 De ha nem akarjuk a ketten itt. 419 00:17:58,780 --> 00:18:01,560 És szuper fontos az, hogy első, az egyenlőségjel, 420 00:18:01,560 --> 00:18:05,270 amely a operátorral, mint szemben az értékadó operátor. 421 00:18:05,270 --> 00:18:08,552 >> MÁRIA: És a függőleges sáv között található a Delete és Return. 422 00:18:08,552 --> 00:18:09,260 DAVID MALAN: Igen. 423 00:18:09,260 --> 00:18:11,420 Egy tipikus amerikai billentyűzetet. 424 00:18:11,420 --> 00:18:13,190 >> MÁRIA: Ja. 425 00:18:13,190 --> 00:18:15,890 Úgyhogy ugrani A feltételes utasításokat. 426 00:18:15,890 --> 00:18:18,300 Ebben Scratch, akkor már Már láttam, valószínűleg, 427 00:18:18,300 --> 00:18:22,730 Ha nyilatkozatok, amelyek lehetővé teszik, hogy ellenőrizze, ha valami igaz, akkor 428 00:18:22,730 --> 00:18:23,660 valami mást. 429 00:18:23,660 --> 00:18:28,410 Szóval akarhatta Ellenőrizhető a sprite 430 00:18:28,410 --> 00:18:31,410 megható néhány más sprite vagy a határ a képernyő. 431 00:18:31,410 --> 00:18:35,520 És akkor lehet, hogy szeretett volna a végén a játék, vagy valami mást. 432 00:18:35,520 --> 00:18:40,000 Szóval a szintaxis, hogy az "if (feltétel)." 433 00:18:40,000 --> 00:18:46,820 Tehát, ha a sprite hozzáér valami, akkor ne belül van a zárójelek segítségével. 434 00:18:46,820 --> 00:18:48,980 >> Aztán ott van if-else. 435 00:18:48,980 --> 00:18:54,080 Else lehetővé teszi számunkra, hogy tegyünk valamit Ha a feltétellel, hogy mi 436 00:18:54,080 --> 00:18:55,870 ellenőrizze az elején nem igaz. 437 00:18:55,870 --> 00:19:01,530 Tehát, ha a sprite érinti a átnyúló Ehhez mást csináljon valami mást. 438 00:19:01,530 --> 00:19:04,030 Szóval egyébként nem csinál valami mást. 439 00:19:04,030 --> 00:19:07,530 Aztán van egy rövid példa erre. 440 00:19:07,530 --> 00:19:11,551 Tehát, ha (military_time <12), akkor szeretné printf "Jó reggelt!" 441 00:19:11,551 --> 00:19:13,300 Mást fogunk printf "Jó estét!" 442 00:19:13,300 --> 00:19:14,860 Egyszerű példa. 443 00:19:14,860 --> 00:19:15,680 >> DAVID MALAN: Jó. 444 00:19:15,680 --> 00:19:16,760 >> MÁRIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Tehát most van switch kimutatásokat. 446 00:19:18,560 --> 00:19:21,960 Kapcsolja nyilatkozatok általánosságban lehetővé teszi számunkra, hogy sokat ugyanezt 447 00:19:21,960 --> 00:19:25,070 hogy mi csak beszélgettünk mintegy a utasításból. 448 00:19:25,070 --> 00:19:29,440 Például, most már a általános formája a switch 449 00:19:29,440 --> 00:19:33,870 amely lehetővé teszi számunkra, hogy egy változó nevű n 450 00:19:33,870 --> 00:19:37,670 és összehasonlítjuk egy csomó különböző értékek, amelyek itt 451 00:19:37,670 --> 00:19:40,010 hívott constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Lehet, hogy sokkal több. 453 00:19:41,150 --> 00:19:42,930 És azok eseteknek nevezzük. 454 00:19:42,930 --> 00:19:46,280 >> Tehát ha van egy kapcsoló statement-- és ez munkák 455 00:19:46,280 --> 00:19:50,580 Csak integers-- van egy változó ebben az esetben ez n. 456 00:19:50,580 --> 00:19:53,840 Ha a változó n értéke egyenlő constant1, mi 457 00:19:53,840 --> 00:19:59,720 majd végre néhány kódrészletet vagy valami, amit akarok. 458 00:19:59,720 --> 00:20:01,280 És akkor mi lenne megtörni. 459 00:20:01,280 --> 00:20:04,820 Tehát a szünet azt jelenti, hogy a switch 460 00:20:04,820 --> 00:20:08,120 leáll, ha a végrehajtó n egyenlő constant1, 461 00:20:08,120 --> 00:20:09,752 majd a program folytatódni fog. 462 00:20:09,752 --> 00:20:11,835 Kilép ki a kapcsolja nyilatkozatot, és ez lesz 463 00:20:11,835 --> 00:20:13,520 továbbra is csinálni valami mást. 464 00:20:13,520 --> 00:20:17,204 >> Ha azonban az n nem egyenlő constant1, majd ügy constant2 465 00:20:17,204 --> 00:20:17,870 ellenőrizni fogják. 466 00:20:17,870 --> 00:20:21,750 Tehát, ha n értéke constant2, hogy más kódrészletet kerül végrehajtásra. 467 00:20:21,750 --> 00:20:23,850 És akkor eltöröm ha ez egyenlő vele. 468 00:20:23,850 --> 00:20:27,580 És akkor mi lehet also-- nem szükségszerűen, though-- alapértelmezett esetben 469 00:20:27,580 --> 00:20:32,290 ami történik, ha n nem egyenlő olyan esetekben, hogy már szerepel. 470 00:20:32,290 --> 00:20:35,400 És az alapértelmezett esetben azt is Nem kell egy kis szünetet feltétlenül 471 00:20:35,400 --> 00:20:39,271 mert a switch tudni fogja, hogy véget kell vetni, miután az alapértelmezett 472 00:20:39,271 --> 00:20:40,270 esetben, ha ez a helyzet. 473 00:20:40,270 --> 00:20:42,140 >> DAVID MALAN: De stilisztikailag, mindig tedd oda. 474 00:20:42,140 --> 00:20:42,540 >> MÁRIA: Igen. 475 00:20:42,540 --> 00:20:42,710 >> DAVID MALAN: Igen. 476 00:20:42,710 --> 00:20:44,750 Így különösen, ha kezdő, különösen, ha azok között kevesebb, 477 00:20:44,750 --> 00:20:47,458 Kényelmes, én személy Csak ajánlani kibír az IFS 478 00:20:47,458 --> 00:20:51,564 és az IFS-elses és if-else-if-elses és így tovább, ha csak 479 00:20:51,564 --> 00:20:53,480 mert ők egy kicsit egyszerűbb. 480 00:20:53,480 --> 00:20:56,142 Ez egy szép optimalizálás, vagy néha még esztétikailag 481 00:20:56,142 --> 00:20:57,350 teszi a kód olvashatóbbá. 482 00:20:57,350 --> 00:20:59,599 És valóban, valószínűleg félévközi majd meglátjuk probléma 483 00:20:59,599 --> 00:21:02,504 felállítva, ahol ez csak jobban néz ki és könnyebben olvasható az emberek 484 00:21:02,504 --> 00:21:03,670 segítségével egy switch utasítást. 485 00:21:03,670 --> 00:21:05,460 De ne aggódj kapaszkodva ez túl korai. 486 00:21:05,460 --> 00:21:05,680 >> MÁRIA: Igen. 487 00:21:05,680 --> 00:21:08,840 Ha van egy csomó, ha nyilatkozatok, talán csak nem nagyon olvasható. 488 00:21:08,840 --> 00:21:10,965 Lehet, hogy nem nagyon gyors hogy menj át rajta. 489 00:21:10,965 --> 00:21:13,230 Így kapcsolja nyilatkozatok nagyon hasznos lehet, valamint. 490 00:21:13,230 --> 00:21:17,900 És azt is, nem remember-- nem felejtse el, hogy a szünetek vannak. 491 00:21:17,900 --> 00:21:20,330 >> DAVID MALAN: Nem emlékszem erre. 492 00:21:20,330 --> 00:21:24,890 >> MÁRIA: Mert akkor lehet esni révén az egyik esetben a másikra. 493 00:21:24,890 --> 00:21:27,930 Mondjuk az esetben constant1 Nem volt egy break utasítással benne. 494 00:21:27,930 --> 00:21:31,920 Aztán lehet, hogy esik át belsejében esetben constant2. 495 00:21:31,920 --> 00:21:35,070 És nem akarom, hogy ha mi már elérte az esetben constant1 496 00:21:35,070 --> 00:21:37,830 és ez egyenlő n. 497 00:21:37,830 --> 00:21:45,100 >> Így például, ha van egy változó n, amely egy osztály számát, 498 00:21:45,100 --> 00:21:48,990 és azt akarjuk, hogy mi ez osztály is-- ha n értéke 50, 499 00:21:48,990 --> 00:21:51,957 fogunk nyomtatni "CS50 van Bevezetés a Computer Science I. " 500 00:21:51,957 --> 00:21:53,040 Aztán megyünk megtörni. 501 00:21:53,040 --> 00:21:53,920 És ennyi. 502 00:21:53,920 --> 00:21:55,950 Ha azonban n egyenlő 51, megyünk 503 00:21:55,950 --> 00:21:58,494 nyomtatni "CS51 van Bevezetés a Computer Science II. " 504 00:21:58,494 --> 00:21:59,910 Aztán megint, mi fog törni. 505 00:21:59,910 --> 00:22:05,080 Azonban, ha majd rakjuk 124, 61, bármely Más számot, azt gondolhatja, 506 00:22:05,080 --> 00:22:06,890 vagy a program nem megy annak felismerése, hogy. 507 00:22:06,890 --> 00:22:09,010 Így fog mondani, hogy "Bocs, én vagyok Nem ismerik az osztályban. " 508 00:22:09,010 --> 00:22:10,009 És ez meg fog törni. 509 00:22:10,009 --> 00:22:12,847 DAVID MALAN: Szóval lehet igazán látni Az if, else if, else ötlet. 510 00:22:12,847 --> 00:22:15,430 Ez csak különböző szintaxis kifejező pontosan ugyanazt a gondolatot. 511 00:22:15,430 --> 00:22:17,690 >> MÁRIA: Pontosan. 512 00:22:17,690 --> 00:22:19,480 Most már a háromkomponensű szereplők. 513 00:22:19,480 --> 00:22:24,900 Tehát háromkomponensű szereplők Három parts-- feltétele, 514 00:22:24,900 --> 00:22:27,220 valamit csinálni, ha ez a feltétel igaz, 515 00:22:27,220 --> 00:22:29,730 majd valamit csinálni Amennyiben ez a feltétel hamis. 516 00:22:29,730 --> 00:22:33,400 Így látod, alapvetően, A szintaxis itt. 517 00:22:33,400 --> 00:22:37,792 Megvan a kérdőjel, és majd the-- mit nevezünk ez? 518 00:22:37,792 --> 00:22:38,750 DAVID MALAN: a vastagbélben. 519 00:22:38,750 --> 00:22:39,100 MÁRIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Köszönöm. 521 00:22:39,599 --> 00:22:41,880 Bocsánat. 522 00:22:41,880 --> 00:22:45,800 Tehát nézzük meg mi például a hátha tudunk értelmet this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Tehát itt látjuk logikai operátor == amely összehasonlítja a változó class_num 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 Tehát class_num üzletek egész. 527 00:22:55,150 --> 00:22:58,180 És ha ez egész egyenlő 50, akkor nem vagyunk 528 00:22:58,180 --> 00:23:02,810 fog tárolni "David Malan" belül a húr professzora. 529 00:23:02,810 --> 00:23:05,912 Ha osztály számát nem egyenlő 50, "Dávid nem Malan" 530 00:23:05,912 --> 00:23:07,120 lesz a professzor. 531 00:23:07,120 --> 00:23:08,630 >> DAVID MALAN: Köszönöm. 532 00:23:08,630 --> 00:23:12,110 És így ez úgy tűnik egyenértékű mit, mit mondana, első pillantásra? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MÁRIA: Számomra úgy tűnik, mint if-else. 535 00:23:19,960 --> 00:23:20,709 >> DAVID MALAN: Igen. 536 00:23:20,709 --> 00:23:24,020 És valóban, ez a fajta egy csinos egy óceánjáró, 537 00:23:24,020 --> 00:23:27,520 hogy úgy mondjam, a végrehajtási Pontosan a logikája if-else 538 00:23:27,520 --> 00:23:29,010 de mindent megtesz egy lépésben. 539 00:23:29,010 --> 00:23:29,860 >> MÁRIA: Pontosan. 540 00:23:29,860 --> 00:23:30,360 Igen. 541 00:23:30,360 --> 00:23:33,520 Tehát ha-else talán vegye fel sok helyet. 542 00:23:33,520 --> 00:23:36,283 Lehet, hogy túl hosszú valami olyan egyszerű, mint ez. 543 00:23:36,283 --> 00:23:38,350 Tehát ez is nagyon tömör és nagyon szép. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Tehát most megyünk bele néztem végrehajtó valamit újra és újra, 546 00:23:46,820 --> 00:23:50,060 így ellenőrzi a kondicionálja többször 547 00:23:50,060 --> 00:23:53,510 majd tovább csinálni valamit míg ez a feltétel igaz. 548 00:23:53,510 --> 00:23:56,740 Tehát ez elvezet minket Szépen while. 549 00:23:56,740 --> 00:23:59,270 >> A bal oldalon, van az első while ciklus. 550 00:23:59,270 --> 00:24:03,840 Tehát miközben valami igaz, tenni valamit újra és újra. 551 00:24:03,840 --> 00:24:08,850 Tehát arról, hogy észre, hogy mi állapotban van érvényesítik a tetején. 552 00:24:08,850 --> 00:24:14,150 Mivel a mi második loop-- hívunk hogy a do-while loop-- teszünk valamit, 553 00:24:14,150 --> 00:24:15,890 akkor ellenőrizze feltétele. 554 00:24:15,890 --> 00:24:17,980 És ha ez a feltétel Továbbra is igaz, 555 00:24:17,980 --> 00:24:20,150 megyünk vissza, és nem a dolog újra. 556 00:24:20,150 --> 00:24:23,360 Tehát a fő különbség az, ahol A feltétel ellenőrizni. 557 00:24:23,360 --> 00:24:29,260 És a kód soha nem lehet végrehajtani, ha a feltétel nem 558 00:24:29,260 --> 00:24:30,430 igaz a while ciklus. 559 00:24:30,430 --> 00:24:33,050 Mivel a do-while hurok, mi van a kód 560 00:24:33,050 --> 00:24:35,380 hogy mindig legalább egyszer végrehajtódik. 561 00:24:35,380 --> 00:24:37,470 , Majd miközben a feltétel Továbbra is igaz, 562 00:24:37,470 --> 00:24:39,960 mehetünk vissza, és iterációkhoz belül újra. 563 00:24:39,960 --> 00:24:43,625 Szóval miért gondolja úgy, ahogyan A do-while ciklus alatt egy while hurok? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Jobbra. 566 00:24:48,720 --> 00:24:52,600 Tehát ha azt akarjuk, hogy jelezzen a felhasználó számára valamilyen input, 567 00:24:52,600 --> 00:24:55,400 ha azt akarjuk, hogy megkérdezzük őket hogy adja meg a nevüket, 568 00:24:55,400 --> 00:24:57,342 szeretnénk legalább kérje meg őket egyszer. 569 00:24:57,342 --> 00:24:59,050 És ha azok be ez a név, nem vagyunk 570 00:24:59,050 --> 00:25:00,740 fog kérni őket újra mert mi már tudjuk. 571 00:25:00,740 --> 00:25:02,656 De ha nem lép nevüket, vagy ha 572 00:25:02,656 --> 00:25:05,787 adja valamit, ami nyilván nem egy név, 573 00:25:05,787 --> 00:25:08,120 még mindig szeretné, hogy továbbra is kérve őket a nevük. 574 00:25:08,120 --> 00:25:10,710 >> DAVID MALAN: És mi volt egy előadás mint ez a kap pozitív int 575 00:25:10,710 --> 00:25:13,550 Például, ha nincs semmi ellenőrizze az első, mert akkor még nem is 576 00:25:13,550 --> 00:25:14,190 ütött egy int. 577 00:25:14,190 --> 00:25:16,680 Tehát szeretnénk csinálni this-- kap egy int a user-- 578 00:25:16,680 --> 00:25:18,860 majd ellenőrizze, talán, újra és újra és újra. 579 00:25:18,860 --> 00:25:21,030 >> MÁRIA: Pontosan. 580 00:25:21,030 --> 00:25:22,060 Mert loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Mert hurkok lehetővé teszik számunkra, hogy szinte pontosan ugyanaz a dolog is. 582 00:25:25,842 --> 00:25:27,300 Ez valójában pontosan ugyanaz a dolog. 583 00:25:27,300 --> 00:25:30,190 Szóval nincs semmi, meg tudod csinálni a hurkok 584 00:25:30,190 --> 00:25:32,840 hogy nem lenne képes köze while. 585 00:25:32,840 --> 00:25:36,900 De hurkok tűnhet egy kicsit kicsit bonyolultabb szintaktikai 586 00:25:36,900 --> 00:25:39,730 mert Három részből belül milyen 587 00:25:39,730 --> 00:25:42,990 előtt volt, csak a állapotban while. 588 00:25:42,990 --> 00:25:48,260 Tehát az első része, amit a tengerre, a legbaloldalibb, van "int törpék = 0." 589 00:25:48,260 --> 00:25:51,490 Szóval ez az, ahol inicializálni a változó. 590 00:25:51,490 --> 00:25:55,210 >> Aztán van egy pontosvessző és a "törpék <7." 591 00:25:55,210 --> 00:25:57,100 Szóval ez az, ahol ki feltétel valójában. 592 00:25:57,100 --> 00:26:00,170 Szóval ez az, amit mi lett volna tedd csak a közben loop-- 593 00:26:00,170 --> 00:26:01,880 "míg a törpék <7." 594 00:26:01,880 --> 00:26:05,380 Itt, hogy megy a közepén a hurok. 595 00:26:05,380 --> 00:26:07,190 Tehát "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 És akkor mi utolsó rész "törpék ++" ott, ahol mi frissítjük a változó. 597 00:26:11,350 --> 00:26:15,470 Tehát a lényeg észre, hogy ez a 598 00:26:15,470 --> 00:26:22,010 fog átmenni ez a for ciklus hétszer, és végre hétszer. 599 00:26:22,010 --> 00:26:24,020 Tehát van hét törpék, és ők mind 600 00:26:24,020 --> 00:26:26,020 azt fogja mondani: "Én vagyok itt, hogy segítsen, Hófehérke " 601 00:26:26,020 --> 00:26:28,860 mert készek hogy segítsen Hófehérke. 602 00:26:28,860 --> 00:26:33,600 >> A while, mi volna az elindítását és frissítésére 603 00:26:33,600 --> 00:26:37,490 nem belül a feltétellel, újra, de előtt vagy belsejében a while ciklus 604 00:26:37,490 --> 00:26:40,210 meggyőződni arról, hogy we--, mert mindig kell azokat a részeket. 605 00:26:40,210 --> 00:26:42,835 Tehát, hogy győződjön meg arról, hogy van őket, mi volna, még hozzátette őket 606 00:26:42,835 --> 00:26:44,580 tovább, csak nem a zárójelek. 607 00:26:44,580 --> 00:26:47,288 >> DAVID MALAN: És ez így néz ki az általam elvártnál az előadásban, például 608 00:26:47,288 --> 00:26:50,250 Én szinte mindig, mint én, és n és elég unalmas változók. 609 00:26:50,250 --> 00:26:53,050 Úgy néz ki, akkor több ügyesen nevű változókat is. 610 00:26:53,050 --> 00:26:56,300 >> MÁRIA: Igen, ez valóban nagyon szép hogy egy kicsit több leíró változók 611 00:26:56,300 --> 00:26:59,400 mert különösen, ha valaki más olvasó code-- talán igazad gréder 612 00:26:59,400 --> 00:27:00,940 vagy Önnel együtt A somebody-- 613 00:27:00,940 --> 00:27:03,481 azt szeretnénk, hogy győződjön meg arról, hogy megérteni, hogy mit csinálsz. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> OKÉ. 616 00:27:06,400 --> 00:27:11,435 Tehát ez valami nagyon funky-- A hurok belsejében egy hurok. 617 00:27:11,435 --> 00:27:13,060 Nem tudom, ha mi már látott ilyet. 618 00:27:13,060 --> 00:27:13,830 Feltehetőleg nem. 619 00:27:13,830 --> 00:27:17,750 De mi is valójában this-- így elágazások helyett hurkok. 620 00:27:17,750 --> 00:27:25,130 Tehát nem mindenki akar járni, talán nekem az, hogy mi folyik itt? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID MALAN: Én viszem a stab. 623 00:27:29,490 --> 00:27:29,970 MÁRIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID MALAN: OK. 625 00:27:30,636 --> 00:27:34,690 Szóval, spoiler-- szeretnénk nyomtatni a cucc ez a jobb alsó sarokban 626 00:27:34,690 --> 00:27:35,190 ott. 627 00:27:35,190 --> 00:27:35,450 >> MÁRIA: Így van. 628 00:27:35,450 --> 00:27:35,710 Igen igen. 629 00:27:35,710 --> 00:27:38,043 >> DAVID MALAN: Tehát most már csak tedd, hogy a minta kimeneti ott. 630 00:27:38,043 --> 00:27:42,590 Szóval lehet következtetni a legfelső hurok, hogy te 631 00:27:42,590 --> 00:27:45,680 iterációt sorok a legkülső hurok, hogy úgy mondjam. 632 00:27:45,680 --> 00:27:48,107 És te iterációt oszlopok a legbelső kör. 633 00:27:48,107 --> 00:27:50,190 És intuitív, ez remélhetőleg értelme 634 00:27:50,190 --> 00:27:52,070 mert a természet a minden program láttunk 635 00:27:52,070 --> 00:27:55,570 előtt, printf, amely a funkciót mi használ, végső soron, 636 00:27:55,570 --> 00:27:58,190 képes nyomtatni cucc ki lényegében sorról sorra. 637 00:27:58,190 --> 00:27:59,960 Mint, ha már outputted egy új vonal, van 638 00:27:59,960 --> 00:28:02,876 nincs duplájára vissza nyomtatás valamit magasabb a képernyőn, legalább 639 00:28:02,876 --> 00:28:04,530 nem használja printf, mint ez. 640 00:28:04,530 --> 00:28:07,750 >> És ebben a tekintetben, ez teszi értelemben, hogy a legkülső hurok 641 00:28:07,750 --> 00:28:10,930 kell utalva a sorok mert minden adott sor, 642 00:28:10,930 --> 00:28:13,650 fogsz akar nyomtassa ki XXXXX, majd 643 00:28:13,650 --> 00:28:15,520 lépni a következő sorban, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Tehát sor az első. 645 00:28:17,317 --> 00:28:19,150 És akkor az egyes egymás után, akkor az oszlopok nyomtatása. 646 00:28:19,150 --> 00:28:21,160 Ha próbáltam csinálni az ellenkezőleg, ez valószínűleg nem 647 00:28:21,160 --> 00:28:21,690 jöjjön ki, mint ön szándékozik. 648 00:28:21,690 --> 00:28:22,190 >> MÁRIA: Igen. 649 00:28:22,190 --> 00:28:24,950 Egyszerűen nem tudtunk visszamenni az előző sorban a printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID MALAN: És ami érdekes per mai beszélgetni hatálya, 651 00:28:27,658 --> 00:28:31,600 valójában az, hogy sorban egy int ami nyilvánította a legfelső hurok. 652 00:28:31,600 --> 00:28:34,030 De észre, hogy ez még mindig belsejét, hogy úgy mondjam, 653 00:28:34,030 --> 00:28:35,982 A kapcsos zárójelek, hogy azonnal követni, 654 00:28:35,982 --> 00:28:38,440 bár ez technikailag nem az említett kapcsoszárójele. 655 00:28:38,440 --> 00:28:41,750 Tehát sor terjedelmében teljes egészében a kódrészletet, 656 00:28:41,750 --> 00:28:44,690 belül egyaránt a külső hurok és azon belül a belső hurok. 657 00:28:44,690 --> 00:28:48,050 De ezzel szemben, ha az oszlop tartalma? 658 00:28:48,050 --> 00:28:49,810 A változó oszlop? 659 00:28:49,810 --> 00:28:51,310 Igen, csak a cikluson belül. 660 00:28:51,310 --> 00:28:54,280 És ez rendben, mert mi nem való ez kívül esik a zárójelek segítségével. 661 00:28:54,280 --> 00:28:57,280 Minden, amit teszünk nyomtasson ki egy új sorban a legvégén van. 662 00:28:57,280 --> 00:28:58,670 Tehát, hogy valójában rendben van. 663 00:28:58,670 --> 00:29:03,740 >> Tehát ez az a hatása, úgy néz ki, csinál három sorban és négy oszlopban. 664 00:29:03,740 --> 00:29:04,370 >> MÁRIA: Így van. 665 00:29:04,370 --> 00:29:06,270 Tehát először megyünk keresztül az első sorban. 666 00:29:06,270 --> 00:29:10,520 És csak az első sorban, mi a négy oszlop belsejében az első sorban. 667 00:29:10,520 --> 00:29:11,980 Így nyomtassa ki a négy X. 668 00:29:11,980 --> 00:29:15,800 És akkor mi is kilép a for ciklus óta mi már kinyomtatható négy X. 669 00:29:15,800 --> 00:29:17,100 És mi nyomtatni egy új sort. 670 00:29:17,100 --> 00:29:19,920 És akkor megyünk át a Ugyanez a folyamat még két sort 671 00:29:19,920 --> 00:29:21,170 hogy összesen három. 672 00:29:21,170 --> 00:29:23,530 >> DAVID MALAN: És érdemes megjegyezni, hogy ez Csak egy műalkotás a betűtípus, az a tény, 673 00:29:23,530 --> 00:29:25,680 hogy a minta kimeneti Úgy tűnik tehát sokkal magasabb, 674 00:29:25,680 --> 00:29:27,520 Mintha ez még nem minden sorok, mint oszlopot. 675 00:29:27,520 --> 00:29:29,824 De ez csak azért, mert az X magasabb, mint amilyen széles. 676 00:29:29,824 --> 00:29:32,740 Ez minden, ami történik ott, valamint a fehér térben a sorok között. 677 00:29:32,740 --> 00:29:33,281 >> MÁRIA: Így van. 678 00:29:33,281 --> 00:29:34,792 Hűvös. 679 00:29:34,792 --> 00:29:35,750 DAVID MALAN: Rendben. 680 00:29:35,750 --> 00:29:39,830 Tehát egy gyors pillantást a problémát meg egyet, hogy bármilyen kérdése van, majd vonuljon? 681 00:29:39,830 --> 00:29:40,330 Minden rendben. 682 00:29:40,330 --> 00:29:43,164 Tehát a probléma meg egyet, van három elsődleges kihívások, végül. 683 00:29:43,164 --> 00:29:44,955 De először, megtalálod hogy a probléma meghatározott 684 00:29:44,955 --> 00:29:47,900 specifikáció, mint sok a psets idén ősszel, fog járni, akkor 685 00:29:47,900 --> 00:29:50,691 a néhány bemelegítő gyakorlatokat, pont akkor ki néhány erőforrások 686 00:29:50,691 --> 00:29:52,440 hogy lehet, hogy Nem láttam már. 687 00:29:52,440 --> 00:29:54,440 Például, CS50 van egy csomag a rövidnadrág, 688 00:29:54,440 --> 00:29:56,481 amelyek rövid videók, nem ellentétben ez, hanem, hogy a 689 00:29:56,481 --> 00:29:58,460 Nagyon téma specific-- Körülbelül öt perc, 690 00:29:58,460 --> 00:30:02,360 10 perc hosszúságú a hurkok vagy A feltételekről, illetve algoritmusok 691 00:30:02,360 --> 00:30:04,125 vagy később több fejlett témák is. 692 00:30:04,125 --> 00:30:06,000 És mi általában beágyazni azoknak a problémát 693 00:30:06,000 --> 00:30:07,950 készletek, hogy a diákok van egy forrás, amellyel 694 00:30:07,950 --> 00:30:10,840 hogy felülvizsgálja anyag, amely esetleg Már jön a Előadás vagy részben. 695 00:30:10,840 --> 00:30:13,220 De ennek az az koncentráltabb és több saját ügyében. 696 00:30:13,220 --> 00:30:15,928 >> Azt is hajlamosak embed probléma olyanokat állít nevű walkthroughs. 697 00:30:15,928 --> 00:30:20,790 Tehát szinte minden a példák én előadás, a színpadon van, azt is 698 00:30:20,790 --> 00:30:24,565 lövés a kamera előre egy lassabb, 699 00:30:24,565 --> 00:30:28,760 intimebb walkthrough által rám a laptopom, hogy a kódot, sorról sorra 700 00:30:28,760 --> 00:30:31,427 úgy, hogy az osztályban, akkor gyakran átlássa valami vagy valaki 701 00:30:31,427 --> 00:30:33,260 majd közbe egy válaszolni egy kérdésre. 702 00:30:33,260 --> 00:30:35,820 De ez nem feltétlenül mosogató A mindenki számára a közönséget. 703 00:30:35,820 --> 00:30:38,230 Így talál kódot walkthroughs a legtöbb példa 704 00:30:38,230 --> 00:30:40,950 hogy mi itt előadást úgy, hogy tud járni rajta a saját tempójában 705 00:30:40,950 --> 00:30:43,580 és vissza- vagy gyors előre- vagy ugrás teljesen, ha szeretné. 706 00:30:43,580 --> 00:30:45,356 >> Ott gyakran néhány bemelegítő kérdések 707 00:30:45,356 --> 00:30:47,105 Kérjük, hogy egyfajta megerősíti ezt az anyagot 708 00:30:47,105 --> 00:30:50,250 és győződjön meg róla, hogy te vagy a kényelmes előtt Ön folytathatja a többi PSET. 709 00:30:50,250 --> 00:30:51,700 És aztán, persze, ott van a PSET magát. 710 00:30:51,700 --> 00:30:53,450 És az egyik dolog mi nagyon tudatosan 711 00:30:53,450 --> 00:30:57,202 itt CS50 szinte minden érdektelen vagy szellemileg érdektelen 712 00:30:57,202 --> 00:30:58,910 mechanikus lépést, hogy akkor lehet, hogy nem 713 00:30:58,910 --> 00:31:00,519 szinte mindig nagyon jól dokumentált. 714 00:31:00,519 --> 00:31:03,560 Során a kifejezést, akkor kezdeni, hogy fel több költői kérdések 715 00:31:03,560 --> 00:31:06,187 mint emlékszel, hogyan kell ezt vagy azt? 716 00:31:06,187 --> 00:31:08,520 De általánosságban, talál hogy a probléma készletek kapni 717 00:31:08,520 --> 00:31:10,269 a mechanika valami olyan, hogy 718 00:31:10,269 --> 00:31:14,160 Az érdekes, intellektuális kihívások végül maradt, hogy ha a diák. 719 00:31:14,160 --> 00:31:17,390 >> Ezzel azt mondta, Zamyla, akinek mi tartott hivatkozva ma előadás, 720 00:31:17,390 --> 00:31:20,190 az egyik a régi alkalmazottak tagja, aki szintén rendelkezik walkthroughs 721 00:31:20,190 --> 00:31:24,520 konkrét PSET problémákat, mint a Mario és kapzsi, bár nem a víz az idén. 722 00:31:24,520 --> 00:31:26,540 És ez azokban walkthroughs hogy ő gyakran 723 00:31:26,540 --> 00:31:29,450 kínál néhány tippet és trükköt hogyan kell eljárni, soha nem mondom 724 00:31:29,450 --> 00:31:31,810 pontosan mit kell csinálni, de rather-- mint egy állapot, 725 00:31:31,810 --> 00:31:35,200 ha will-- így legalább egy pár ötletet, hogy ez rajtad múlik, 726 00:31:35,200 --> 00:31:37,830 végső soron dönteni hogyan kell megközelíteni őket. 727 00:31:37,830 --> 00:31:41,200 >> MÁRIA: Valahogy úgy, mint egy magas szintű megértése a logika, hogy mi 728 00:31:41,200 --> 00:31:42,220 kérünk, hogy nem. 729 00:31:42,220 --> 00:31:42,485 >> DAVID MALAN: Pontosan. 730 00:31:42,485 --> 00:31:44,190 És, sőt, Zamyla adatbankjában walkthroughs célja 731 00:31:44,190 --> 00:31:46,190 megválaszolni a leggyakrabban kérdezte kérdésre, hogy hol 732 00:31:46,190 --> 00:31:48,610 do kezdtem, különösen akkor, ha Ezeket a hosszú specifikációk 733 00:31:48,610 --> 00:31:51,960 egy kicsit ijesztő mivel az összes szöveget és képekkel, hogy van bennük. 734 00:31:51,960 --> 00:31:54,890 >> Szóval water.c, megtalálod miután befejezte azt, 735 00:31:54,890 --> 00:31:56,920 valójában viszonylag egyszerű. 736 00:31:56,920 --> 00:31:58,882 Abszolút egy csomó A fogsz bumm 737 00:31:58,882 --> 00:32:01,840 a fejeteket a falnak próbálnak hogy kitaláljuk, miért nem összeállításában 738 00:32:01,840 --> 00:32:03,450 vagy miért nem fut rendesen. 739 00:32:03,450 --> 00:32:05,040 De ha kész vele, és ha egyszer már 740 00:32:05,040 --> 00:32:07,620 egy ideig birkózott bármilyen A hibákat hogy lehet, hogy, 741 00:32:07,620 --> 00:32:09,490 rájössz, hogy ez Egy nagyon rövid programot. 742 00:32:09,490 --> 00:32:11,770 Meg lehet csinálni, mindössze néhány sornyi kódot, amelyek többsége 743 00:32:11,770 --> 00:32:15,030 láttunk itt előadás már, ha akkor össze a jobb építőkövei. 744 00:32:15,030 --> 00:32:16,810 >> És ahogy azt javasoljuk, Itt meg fogja kérdezni 745 00:32:16,810 --> 00:32:22,250 Ön határozhatja meg, hány perc Valakinek épp zuhanyoztam egyetemen. 746 00:32:22,250 --> 00:32:24,779 Mi határozza meg a problémát állítsa az arány a víz áramlását 747 00:32:24,779 --> 00:32:27,320 a, mondjuk, egy alacsony áramlási zuhanyzó fejét, ugyanúgy, mint a Seinfeld klip 748 00:32:27,320 --> 00:32:29,180 láttuk tegnap, vagy az ellenkező cikke. 749 00:32:29,180 --> 00:32:30,971 És akkor csak kell, hogy csinál egy kis matek, 750 00:32:30,971 --> 00:32:34,710 really-- számtani segítségével C mondani nekünk, hogy durván, palack víz 751 00:32:34,710 --> 00:32:37,720 az, hogy egyenértékű, ha mi vagyunk szedő n perces zuhany. 752 00:32:37,720 --> 00:32:41,389 >> Most, mario.c, ez lesz hogy egy kicsit hosszabb programot. 753 00:32:41,389 --> 00:32:42,930 Még mindig nem lesz ilyen sokáig. 754 00:32:42,930 --> 00:32:45,130 Csak néhány hosszabb sorok water.c. 755 00:32:45,130 --> 00:32:48,230 De ez lesz lehetőség hogy újra a régi iskola Mario 756 00:32:48,230 --> 00:32:50,670 piramis Super Mario Brothers vagy valamilyen nyomon tovább. 757 00:32:50,670 --> 00:32:53,510 Ez nem fog nézni, mint csinosabb vagy olyan színes, mint hogy az egyik ott. 758 00:32:53,510 --> 00:32:56,468 Mi csak fogja használni kicsit hashtags mint mi itt a képernyőn 759 00:32:56,468 --> 00:32:58,120 ASCII szöveg használatával. 760 00:32:58,120 --> 00:33:00,362 De ez megközelíti majd ugyanezt a gondolatot. 761 00:33:00,362 --> 00:33:02,570 És ez lesz az gyakorolni, hogy első pillantásra 762 00:33:02,570 --> 00:33:04,720 úgy tűnik, elég csak simple-- print egyszerű piramis. 763 00:33:04,720 --> 00:33:07,345 De van egy pár jellemzők Itt, amelyek érdekes. 764 00:33:07,345 --> 00:33:12,400 Figyeljük meg, hogy a jobb szélső éle A piramis valójában szélessége kettő. 765 00:33:12,400 --> 00:33:14,570 Szóval van két egyenlő magasság oszlopot, amely 766 00:33:14,570 --> 00:33:16,804 teszi szükségessé egy kicsit kis gondolat, hogy 767 00:33:16,804 --> 00:33:19,720 Biztosan kap, hogy pontosan így van, ahogy szemben a csak egy tökéletesen szögletes 768 00:33:19,720 --> 00:33:20,220 vonal. 769 00:33:20,220 --> 00:33:23,340 Szóval ez egy kicsit sarokba ügyben de illeszkedik a tényleges játék. 770 00:33:23,340 --> 00:33:27,610 >> És ez is, nem nyilvánvaló első Dióhéjban hogyan lehet kinyomtatni a fehér térben. 771 00:33:27,610 --> 00:33:29,430 Tehát amikor megnézem a mintakimenetet here-- 772 00:33:29,430 --> 00:33:32,440 és ez is a spec-- meg fajta néz ki, mint egy téglalapot, 773 00:33:32,440 --> 00:33:35,120 de egy átlós téglalap már levágták, 774 00:33:35,120 --> 00:33:37,320 és ez csak fehér terek, hogy úgy mondjam. 775 00:33:37,320 --> 00:33:40,100 És így a gyakran feltett kérdés itt mindig, nos, 776 00:33:40,100 --> 00:33:43,302 hogyan tudom mozgatni a hashtags mint a jobb? 777 00:33:43,302 --> 00:33:44,760 Vagy hogyan tudom kinyomtatni az üres tereket? 778 00:33:44,760 --> 00:33:46,860 És ez valóban könnyebb mint a legtöbb diák gondolja. 779 00:33:46,860 --> 00:33:47,360 Jobbra? 780 00:33:47,360 --> 00:33:51,620 Akkor közelítsük vizuálisan csak üti a szóköz egyszer vagy kétszer 781 00:33:51,620 --> 00:33:52,700 vagy három alkalommal. 782 00:33:52,700 --> 00:33:56,260 >> És még akkor is a printf mi szinte Mindig nyomtassa ki egy string vagy egy int 783 00:33:56,260 --> 00:33:59,950 vagy egy szót, mint a "hello, világ "sorozata vagy a szavak, 784 00:33:59,950 --> 00:34:03,560 akkor is csak nyomtatni idézet, tér, idézet vége. 785 00:34:03,560 --> 00:34:06,320 És hogy ténylegesen ad Ön szóköz van. 786 00:34:06,320 --> 00:34:08,330 Így tartsa szem előtt, és nem overthink ezt. 787 00:34:08,330 --> 00:34:10,570 Tényleg van, dönteni sorban sorról sorra, 788 00:34:10,570 --> 00:34:14,280 nem ellentétben a például a perce, hogy hány ilyen 789 00:34:14,280 --> 00:34:18,420 oszlopok fehér terek és hányan kell hashtags. 790 00:34:18,420 --> 00:34:21,560 Időbe fog telni egy kis időt, de ez végül egy logikai játék rendezi. 791 00:34:21,560 --> 00:34:22,060 >> MÁRIA: Igen. 792 00:34:22,060 --> 00:34:25,060 De a logika megy soronként lesz nagyon hasznos. 793 00:34:25,060 --> 00:34:25,810 DAVID MALAN: Igen. 794 00:34:25,810 --> 00:34:28,976 Azt hiszem, a minta kódot gave-- még bár nem volt egy teljes programot. 795 00:34:28,976 --> 00:34:34,247 Még mindig szükség van int, és fő és érvénytelennek és #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 Sok cuccot előadást. 797 00:34:35,580 --> 00:34:37,629 De az építőelemek Úgy tűnik, hogy ott legyen. 798 00:34:37,629 --> 00:34:39,920 És akkor végül valami egy kicsit több algoritmikus. 799 00:34:39,920 --> 00:34:43,210 Így kiderül, hogy minden alkalommal, bemegy CVS vagy kisbolt 800 00:34:43,210 --> 00:34:47,810 és valaki odaadja neked a pénztáros számlát vagy érmék változás, 801 00:34:47,810 --> 00:34:50,620 Kiderült, hogy azok az emberek, függetlenül attól, hogy tudja, akár nem, 802 00:34:50,620 --> 00:34:53,300 Valószínűleg a mi úgynevezett mohó algoritmus, 803 00:34:53,300 --> 00:34:58,170 ahol ha tartozott, azt mondják, 21 $ a változás, mert valamilyen oknál fogva 804 00:34:58,170 --> 00:35:01,580 vásárolt valamit nagyon olcsón egy nagyon nagy számla a CVS, 805 00:35:01,580 --> 00:35:05,910 akkor lenne igazán bosszantó, ha a pénztáros adta meg 21 kislemez, vagy ami még rosszabb 806 00:35:05,910 --> 00:35:07,629 Még egy csomó érmét. 807 00:35:07,629 --> 00:35:10,670 Sokkal inkább ésszerű személy valószínűleg meg kell tennie, hogy ők fognak 808 00:35:10,670 --> 00:35:14,224 megragad egy $ 20, majd egy $ 1-számlát, és kéz csak két törvényjavaslatot ebben az esetben. 809 00:35:14,224 --> 00:35:17,390 MÁRIA: Tehát ők törekszik, hogy minimalizálja A változás, hogy adja vissza hozzád. 810 00:35:17,390 --> 00:35:17,850 DAVID MALAN: Pontosan. 811 00:35:17,850 --> 00:35:19,540 És ugyanolyan foglalkozik érméket is. 812 00:35:19,540 --> 00:35:23,040 Ha tartozott, azt mondják, $ 0,50, remélhetőleg nem akarsz 50 pennyt. 813 00:35:23,040 --> 00:35:25,500 Ön helyett szeretnék két negyedévben, például. 814 00:35:25,500 --> 00:35:27,540 Nos, ez nem vállalnak hogy a pénztáros is 815 00:35:27,540 --> 00:35:29,940 elég, hogy minden felekezet ő érdemes adni neked. 816 00:35:29,940 --> 00:35:32,148 De mi teszi azt feltételezni, annyi a probléma. 817 00:35:32,148 --> 00:35:35,590 És a cél végső soron az, hogy végrehajtja a C kód mohó algoritmussal. 818 00:35:35,590 --> 00:35:37,344 Így a felhasználó jogosult írja be, hogy mennyi 819 00:35:37,344 --> 00:35:40,510 megváltoztatni ő jár neki a dollár és cent, valamilyen lebegőpontos 820 00:35:40,510 --> 00:35:41,590 értéke valószínűleg. 821 00:35:41,590 --> 00:35:45,530 És akkor meg kell csinálni a matek és kitalálni algoritmikusan, nos, 822 00:35:45,530 --> 00:35:49,020 hány érmét adhatok Ön minimálisan, hogy az Ön 823 00:35:49,020 --> 00:35:50,270 Pontosan ez az összeg a változás. 824 00:35:50,270 --> 00:35:53,470 De lesz egy Néhány trükkös részek itt, ugye? 825 00:35:53,470 --> 00:35:56,236 Mint ott van az egész pontatlanság kérdés. 826 00:35:56,236 --> 00:35:56,860 MÁRIA: Pontosan. 827 00:35:56,860 --> 00:35:59,114 Tehát lebegőpontos értékeket pontatlanság. 828 00:35:59,114 --> 00:36:00,780 Vajon beszélünk erről előadást ma? 829 00:36:00,780 --> 00:36:02,340 >> DAVID MALAN: Mi volt a utoljára előadás. 830 00:36:02,340 --> 00:36:03,506 Beszéltünk a pontatlanság. 831 00:36:03,506 --> 00:36:08,840 És nem akarja becsapni a felhasználót Az, hogy mennyi változást ő is tartozott. 832 00:36:08,840 --> 00:36:11,290 És így a végigjátszás, a A probléma beállított specifikáció, 833 00:36:11,290 --> 00:36:15,990 hogy gondolkodjon, végül, hogy hogyan lehet enyhíteni ezeket a pontatlanság 834 00:36:15,990 --> 00:36:17,280 hibák, potenciálisan. 835 00:36:17,280 --> 00:36:21,050 Ez elkerülhető, természetesen, a A bemenetek beszélünk. 836 00:36:21,050 --> 00:36:23,590 És, sőt, pennies-- talán majd elhalasztja Zamyla, 837 00:36:23,590 --> 00:36:25,136 Azt hiszem, a trükkök vannak. 838 00:36:25,136 --> 00:36:27,760 Így végül, találsz egy progresszióját problémák ezen a héten, 839 00:36:27,760 --> 00:36:30,700 Az első, amely elég kicsi, majd közepes, majd egy kicsit nagyobb. 840 00:36:30,700 --> 00:36:33,200 De mindegyik használni az épületet háztömbnyire a múlt héten, 841 00:36:33,200 --> 00:36:35,280 ettől szuperszakaszon, probléma beállított specifikáció 842 00:36:35,280 --> 00:36:36,710 hozza meg a számtalan források. 843 00:36:36,710 --> 00:36:41,000 De mégis, ha egyáltalán küzd, különösen azok körében kevésbé kényelmes 844 00:36:41,000 --> 00:36:42,917 előzetesen nem háttér, jöjjön munkaidőben 845 00:36:42,917 --> 00:36:44,958 hétfőn és kedden Szerdán és csütörtökön. 846 00:36:44,958 --> 00:36:46,950 Tovább a CS50 Beszéljétek keresztül A kurzus honlapján, 847 00:36:46,950 --> 00:36:49,080 amelyen keresztül beszélgethet A személyzet és az osztálytársak. 848 00:36:49,080 --> 00:36:51,670 >> De végül is, azt hiszem, a legjobb tanács csak korán kezdeni. 849 00:36:51,670 --> 00:36:54,711 Ez nem az a fajta osztályoknak meg kell kezdve psets szerdán 850 00:36:54,711 --> 00:36:56,640 éjszaka, vagy ami még rosszabb csütörtök este. 851 00:36:56,640 --> 00:36:59,067 >> MÁRIA: A legjobb tanács hogy megkezdődött hétfőn. 852 00:36:59,067 --> 00:36:59,900 DAVID MALAN: hétfőn. 853 00:36:59,900 --> 00:37:02,490 Tehát ha még nem kezdődött already-- nincs. 854 00:37:02,490 --> 00:37:04,732 De még ha nem is hétfő, majd kedden. 855 00:37:04,732 --> 00:37:05,690 A korábbi, annál jobb. 856 00:37:05,690 --> 00:37:08,605 És ez az oka a Természetesen annyi késő nap 857 00:37:08,605 --> 00:37:10,535 hogy adjak egy kicsit pszichológiai nyomás 858 00:37:10,535 --> 00:37:13,684 hogy korábban kezdődnek, de még mindig hagyja, dolgokat csúszik, amikor a dolgok hosszabb időt vesz igénybe 859 00:37:13,684 --> 00:37:14,350 mint gondolná. 860 00:37:14,350 --> 00:37:17,950 >> MÁRIA: És azt szeretnénk kihasználni Munkaidőben, amennyit csak tudsz, túl. 861 00:37:17,950 --> 00:37:20,291 >> DAVID MALAN: Van még kérdése? 862 00:37:20,291 --> 00:37:20,790 Minden rendben. 863 00:37:20,790 --> 00:37:22,930 Nos, miért nem tárgyalunk itt? 864 00:37:22,930 --> 00:37:23,487