1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] DAVID J. Malan: Rendben. 2 00:00:08,160 --> 00:00:11,170 Ez CS50, és ez a vége a hét kettő. 3 00:00:11,170 --> 00:00:14,650 Ha azt várod, hogy éhes ez idő tájt holnap, tudom, hogy megyünk 4 00:00:14,650 --> 00:00:18,920 összehívását, mint egy kis csoport holnap, csütörtök 01:15. 5 00:00:18,920 --> 00:00:21,460 Van egy URL-t ide, ha szeretné RSVP. 6 00:00:21,460 --> 00:00:25,270 Tér korlátozott, ezért kérlek bocsáss meg, ha az űrlap töltötte fel, hogy mikor 7 00:00:25,270 --> 00:00:26,680 töltse ki ezt. 8 00:00:26,680 --> 00:00:29,400 Egy másik URL azonban, hogy érdekesnek ez. 9 00:00:29,400 --> 00:00:32,409 >> Tehát csak körülbelül egy hónap múlva, a tanfolyam lesz bocsátani 10 00:00:32,409 --> 00:00:36,090 annál is inkább, nagyjából keresztül EDX, amelyen keresztül emberek az interneten lesz 11 00:00:36,090 --> 00:00:39,580 követhette végig, vegyenek részt a tanfolyam elég aktívan, sőt. 12 00:00:39,580 --> 00:00:43,070 Fogják használni a gép és a CS50 CS50 Fórum és a legtöbb 13 00:00:43,070 --> 00:00:45,840 a különböző szoftverek, hogy mi már használ ebben a félévben. 14 00:00:45,840 --> 00:00:49,030 És az egyik kezdeményezések szeretnénk vállalni, mint egy kísérlet ebben az évben 15 00:00:49,030 --> 00:00:53,120 is, hogy lásd, mennyi tartalom tudjuk lefordítani más beszélt és 16 00:00:53,120 --> 00:00:54,110 írott nyelv. 17 00:00:54,110 --> 00:00:58,000 Tehát, ha lehet, érdekükben áll részt ebben a projektben, ahol 18 00:00:58,000 --> 00:01:02,090 adunk angol nyelvű átirata és a feliratok a kurzus 19 00:01:02,090 --> 00:01:05,190 előadások és rövidnadrág és szemináriumok és szakaszok és hasonlók - 20 00:01:05,190 --> 00:01:08,700 ha beszél folyékonyan, vagy írjon folyékonyan más nyelv, mi lenne 21 00:01:08,700 --> 00:01:12,240 Szeretem, hogy vegyenek téged ebben a projektben, ahol veszel egy vagy több 22 00:01:12,240 --> 00:01:15,340 videókat, fordítsa őket nyelven tudja elég jól. 23 00:01:15,340 --> 00:01:19,050 Ahhoz, hogy te egyfajta a felület, itt van ez a web-alapú felhasználói felület 24 00:01:19,050 --> 00:01:22,330 hogy mi fog használni, hogy létre fog hozni lényegében egy UI, mint ez. 25 00:01:22,330 --> 00:01:24,520 Ezt nekem tanítás néhány Halloween napja. 26 00:01:24,520 --> 00:01:27,710 És a jobb oldalon van a fekete mellett e időbélyegeket, 27 00:01:27,710 --> 00:01:31,300 látni fogja a különböző dolgokat, hogy kijött az én számból azon a napon. 28 00:01:31,300 --> 00:01:34,660 És akkor ez alatt, akkor képes lesz arra, hogy lefordítani egy másik nyelvre. 29 00:01:34,660 --> 00:01:37,840 Pontosan mi a térképezés között, ebben az esetben, angol 30 00:01:37,840 --> 00:01:38,660 és, mondjuk, spanyol. 31 00:01:38,660 --> 00:01:40,480 Tehát ez valójában egy nagyon felhasználóbarát eszköz. 32 00:01:40,480 --> 00:01:43,690 A visszatekerés és előre tekerés nagyon könnyen a billentyűparancsokat. 33 00:01:43,690 --> 00:01:46,710 Tehát, ha azt szeretné, hogy vegyen részt ebben a kísérletben, és a szavakat 34 00:01:46,710 --> 00:01:50,730 látható és olvasható legyen az esetleg több ezer emberek odakinn, kérjük ne érezzük 35 00:01:50,730 --> 00:01:51,960 A részvétel ingyenes. 36 00:01:51,960 --> 00:01:56,940 >> Most egy szót, ami a kiscicát, hétfő, nehogy küldtünk túlságosan 37 00:01:56,940 --> 00:01:58,120 ijesztő üzenet. 38 00:01:58,120 --> 00:02:02,130 Tedd észre, hogy a munkaidőn utalnak és szakaszok arra utalnak, a 39 00:02:02,130 --> 00:02:05,110 design a tanfolyam nagyon, hogy a diákok és az együttműködés 40 00:02:05,110 --> 00:02:09,250 beszél dolgozni a probléma készletek és problémákkal együtt. 41 00:02:09,250 --> 00:02:13,630 És tényleg a vonal, csak jön le, hogy ismét a munkát, amit végül 42 00:02:13,630 --> 00:02:16,420 kell benyújtania legyen saját. 43 00:02:16,420 --> 00:02:19,080 És ez így van, őszintén szólva - a munkaidőn, ez teljesen normális - 44 00:02:19,080 --> 00:02:21,560 ez teljesen várható, még akkor is -, hogy beszélgetni néhány 45 00:02:21,560 --> 00:02:22,370 barátok melletted. 46 00:02:22,370 --> 00:02:25,240 Ha ő küzd valamilyen témában, és te, mint, oh, hát hadd 47 00:02:25,240 --> 00:02:27,750 adjak egy pillantást néhány sort, hogy én írtam. 48 00:02:27,750 --> 00:02:28,290 Ez rendben van. 49 00:02:28,290 --> 00:02:28,700 Ez történik. 50 00:02:28,700 --> 00:02:31,580 És ez nagyon kedvező, azt hiszem, a tanulási folyamat. 51 00:02:31,580 --> 00:02:35,270 Amennyiben a vonal ismét lesz át, amikor a fej mozgatásával fajta felett 52 00:02:35,270 --> 00:02:38,800 Itt túl sok másodperc vagy perc, hogy tényleg, ha csak 53 00:02:38,800 --> 00:02:41,250 volt egy feloldási lehetőség a barátod. 54 00:02:41,250 --> 00:02:43,870 És természetesen, amikor a dolgok cserélt e-mailen és Dropbox és 55 00:02:43,870 --> 00:02:45,350 hasonló, ott is van a vonalban. 56 00:02:45,350 --> 00:02:48,940 Szóval, minden eszközzel, jól érzik magukat, és úgy érzi, ösztönözni kell beszélgetni a barátokkal 57 00:02:48,940 --> 00:02:51,270 és osztálytársai mintegy psets és így tovább. 58 00:02:51,270 --> 00:02:54,680 És csak észre, hogy amit végül be kéne lennie 59 00:02:54,680 --> 00:02:57,780 terméket a teremtés, és nem valaki más. 60 00:02:57,780 --> 00:03:01,010 >> Így ugyanabban a szellemben az ennivaló lények, lehet, hogy 61 00:03:01,010 --> 00:03:02,820 ismerik ezt a fickót itt. 62 00:03:02,820 --> 00:03:06,180 Tehát ez egy horrifically giccses film évvel ezelőtt. 63 00:03:06,180 --> 00:03:08,680 Van itt valaki látott Spaceballs? 64 00:03:08,680 --> 00:03:09,120 Rendben van. 65 00:03:09,120 --> 00:03:10,220 Tehát egy jó szám van. 66 00:03:10,220 --> 00:03:13,840 Szóval ez a mi csodálatosan tudományos módon bevezetésének ma végül 67 00:03:13,840 --> 00:03:15,130 fogalma kriptográfia. 68 00:03:15,130 --> 00:03:19,010 És így az egyik tartomány specifikus problémák Pset 2, ami jön 69 00:03:19,010 --> 00:03:22,770 out késő holnap este, hogy belevetik magukat a világ a kriptográfia, amely 70 00:03:22,770 --> 00:03:26,380 a művészet titkosítására vagy kódolási információkat. 71 00:03:26,380 --> 00:03:30,160 És ez végül is vonatkozik, hogy a világ biztonságát. 72 00:03:30,160 --> 00:03:34,440 >> Most a biztonság a legtöbb számunkra formájában érkezik a meglehetősen világi mechanizmusok. 73 00:03:34,440 --> 00:03:36,920 Mindannyiunk felhasználóneveket és jelszavakat. 74 00:03:36,920 --> 00:03:41,350 És mindannyian nagyon rossz felhasználónevek és jelszavak, valószínűleg. 75 00:03:41,350 --> 00:03:45,250 Ha a jelszó megegyezik több webhelyen, ez valószínűleg nem 76 00:03:45,250 --> 00:03:47,920 a legjobb ötlet, ahogy megbeszéljük felé félév végén. 77 00:03:47,920 --> 00:03:51,680 Ha a jelszó van írva egy ragadós jegyzet - nem vicc - a 78 00:03:51,680 --> 00:03:55,130 monitor, ez is, nem feltétlenül a legjobb design, de elég gyakori 79 00:03:55,130 --> 00:03:56,140 jelenség. 80 00:03:56,140 --> 00:04:00,420 És ha nem használ titkosítást titkosítja a jelszavakat, azok 81 00:04:00,420 --> 00:04:01,610 különösen veszélyeztetettek. 82 00:04:01,610 --> 00:04:04,670 Tehát, ha azt hiszed, hogy szuper okos azáltal, hogy egy rejtett Szó 83 00:04:04,670 --> 00:04:07,740 dokumentálja valahol a merevlemezen, hogy az összes a jelszavakat, hanem 84 00:04:07,740 --> 00:04:10,550 ez egy mappában, hogy senki nem fog nézni, ez is nem egy nagyon 85 00:04:10,550 --> 00:04:11,540 biztonságos mechanizmus. 86 00:04:11,540 --> 00:04:15,100 És mi Pset 2 fog bevezetni ez művészet a kriptográfia és a 87 00:04:15,100 --> 00:04:18,300 kódolási információkat annak érdekében, hogy a dolgok, mint például a jelszavak 88 00:04:18,300 --> 00:04:19,500 annál biztonságosabb. 89 00:04:19,500 --> 00:04:24,500 Annak érdekében, hogy ösztönözze ezt a nagyon valós probléma, nagyon nem valós 90 00:04:24,500 --> 00:04:28,740 forgatókönyv, hadd mutassam be az egyik kedvenc klipeket ide a 91 00:04:28,740 --> 00:04:29,895 film, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [VIDEO LEJÁTSZÁS] 93 00:04:30,565 --> 00:04:32,995 -Sisak, te ördög, mi folyik itt? 94 00:04:32,995 --> 00:04:34,730 Mit csinálsz a lányommal? 95 00:04:34,730 --> 00:04:38,960 -Engedjék meg, hogy bemutassam a ragyogó ifjú plasztikai sebész, Dr. Philip 96 00:04:38,960 --> 00:04:43,290 Schlotkin a legnagyobb orrműtét ember az egész 97 00:04:43,290 --> 00:04:45,526 világegyetem és Beverly Hills. 98 00:04:45,526 --> 00:04:46,450 -Felség. 99 00:04:46,450 --> 00:04:47,380 -Orr munkát? 100 00:04:47,380 --> 00:04:48,035 Nem értem. 101 00:04:48,035 --> 00:04:49,480 Ő már volt egy orr munkát. 102 00:04:49,480 --> 00:04:51,490 Ez egy édes 16 jelen. 103 00:04:51,490 --> 00:04:53,090 -Nem, ez nem az, amire gondolsz. 104 00:04:53,090 --> 00:04:55,150 Ez sokkal, de sokkal rosszabb. 105 00:04:55,150 --> 00:04:59,860 Ha nem adja ide a kombináció a levegő pajzs, Dr. Schlotkin fog 106 00:04:59,860 --> 00:05:04,135 adja meg a lánya vissza a régi orrát. 107 00:05:04,135 --> 00:05:05,385 -Nem! 108 00:05:08,202 --> 00:05:10,186 Hol szerezted ezt? 109 00:05:10,186 --> 00:05:11,178 -Rendben. 110 00:05:11,178 --> 00:05:11,674 Megmondom. 111 00:05:11,674 --> 00:05:12,666 Megmondom. 112 00:05:12,666 --> 00:05:14,154 -Nem, apa, nem. 113 00:05:14,154 --> 00:05:15,150 Azt nem szabad. 114 00:05:15,150 --> 00:05:16,460 -Igazad van, kedvesem. 115 00:05:16,460 --> 00:05:18,450 Hiányozni fog az új orrát. 116 00:05:18,450 --> 00:05:21,550 De nem fogok mondani nekik a kombináció nem számít, mit. 117 00:05:21,550 --> 00:05:23,100 -Nagyon jól. 118 00:05:23,100 --> 00:05:25,510 Dr. Schlotkin, nem a legrosszabb. 119 00:05:25,510 --> 00:05:26,760 -Szívesen. 120 00:05:30,560 --> 00:05:31,180 -Nem! 121 00:05:31,180 --> 00:05:33,450 Várj, várj. 122 00:05:33,450 --> 00:05:34,770 Megmondom. 123 00:05:34,770 --> 00:05:36,400 Megmondom. 124 00:05:36,400 --> 00:05:38,630 -Tudtam, hogy ez működni fog. 125 00:05:38,630 --> 00:05:42,040 Rendben, add ide. 126 00:05:42,040 --> 00:05:46,890 -A kombináció egy. 127 00:05:46,890 --> 00:05:47,290 -One. 128 00:05:47,290 --> 00:05:48,183 -One. 129 00:05:48,183 --> 00:05:48,950 -Two. 130 00:05:48,950 --> 00:05:49,370 -Two. 131 00:05:49,370 --> 00:05:50,450 -Two. 132 00:05:50,450 --> 00:05:50,715 -Three 133 00:05:50,715 --> 00:05:51,380 -Három. 134 00:05:51,380 --> 00:05:52,390 -Három. 135 00:05:52,390 --> 00:05:53,200 -Four. 136 00:05:53,200 --> 00:05:53,720 -Four. 137 00:05:53,720 --> 00:05:55,830 -Four. 138 00:05:55,830 --> 00:05:56,580 -Five 139 00:05:56,580 --> 00:05:57,120 -Öt. 140 00:05:57,120 --> 00:05:58,560 -Öt. 141 00:05:58,560 --> 00:06:03,770 -Tehát a kombináció egy, kettő, három, négy, öt. 142 00:06:03,770 --> 00:06:06,745 Ez a leghülyébb kombináció, amit valaha hallottam életemben. 143 00:06:06,745 --> 00:06:09,290 Ez az a fajta dolog, amit egy idióta lenne az ő poggyászában. 144 00:06:09,290 --> 00:06:11,540 -Köszönöm, fenség. 145 00:06:11,540 --> 00:06:12,940 -Mit csináltál? 146 00:06:12,940 --> 00:06:14,230 -I kikapcsolta a falon. 147 00:06:14,230 --> 00:06:14,630 -Nem, nem. 148 00:06:14,630 --> 00:06:15,430 Ha ki van kapcsolva az egész filmet. 149 00:06:15,430 --> 00:06:16,722 -I kell nyomni a megfelelő gombot. 150 00:06:16,722 --> 00:06:18,078 Nos, tedd vissza. 151 00:06:18,078 --> 00:06:18,805 Tegye a film vissza. 152 00:06:18,805 --> 00:06:19,080 -Igen, uram. 153 00:06:19,080 --> 00:06:19,270 Igen, uram. 154 00:06:19,270 --> 00:06:19,830 -Menjünk, Erna. 155 00:06:19,830 --> 00:06:20,270 Gyere, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Persze, tudod, hogy én még a számla kiállításához ezt. 157 00:06:27,400 --> 00:06:28,325 Nos, nem működik? 158 00:06:28,325 --> 00:06:29,550 Hol van a kapu? 159 00:06:29,550 --> 00:06:29,910 -Ez működött, uram. 160 00:06:29,910 --> 00:06:30,770 Megvan a kombináció. 161 00:06:30,770 --> 00:06:31,390 -Remek. 162 00:06:31,390 --> 00:06:35,630 Most már tudjuk, hogy minden utolsó kis friss levegőt a bolygó Druidia. 163 00:06:35,630 --> 00:06:36,550 Mi a kombinációt? 164 00:06:36,550 --> 00:06:38,805 -Egy, kettő, három, négy, öt. 165 00:06:38,805 --> 00:06:40,610 -Egy, kettő, három, négy, öt? 166 00:06:40,610 --> 00:06:41,070 -Igen. 167 00:06:41,070 --> 00:06:41,760 -Ez csodálatos. 168 00:06:41,760 --> 00:06:45,200 Megvan az azonos kombináció a csomagom. 169 00:06:45,200 --> 00:06:47,800 Készítsünk Spaceball 1 azonnali indulásra. 170 00:06:47,800 --> 00:06:48,536 -Igen, uram. 171 00:06:48,536 --> 00:06:52,350 És változik a kombináció én csomagmegőrzőt. 172 00:06:52,350 --> 00:06:53,250 -Oh! 173 00:06:53,250 --> 00:06:55,020 [END VIDEÓ LEJÁTSZÁS] 174 00:06:55,020 --> 00:06:57,470 >> DAVID J. Malan: egy csodálatos film, amit meg kell most minden látni. 175 00:07:00,600 --> 00:07:06,540 Így a kontextus itt az, hogy a bizonytalan adat érkezik lehetőséget 176 00:07:06,540 --> 00:07:07,790 titkosítja, és összekeveri azt. 177 00:07:07,790 --> 00:07:11,060 És így ez, például, egy példa a titkosított üzenet. 178 00:07:11,060 --> 00:07:12,980 Ez tényleg mond valamit angolul. 179 00:07:12,980 --> 00:07:14,750 De ez nyilvánvalóan nem teljesen nyilvánvaló. 180 00:07:14,750 --> 00:07:17,360 És mi jön teljes kört ma ugratni kívül mi ez titok 181 00:07:17,360 --> 00:07:18,380 üzenet itt. 182 00:07:18,380 --> 00:07:22,370 De a valóságban a számítógépek, a dolgok nem is néz ki, mint azok esetleg 183 00:07:22,370 --> 00:07:23,440 az angol kifejezéseket. 184 00:07:23,440 --> 00:07:27,500 Például, ez az, amit lehet, hogy talál egy szabványos Linux vagy Mac vagy 185 00:07:27,500 --> 00:07:32,080 Unix számítógépes fájlban volt egyszer régen az úgynevezett jelszó fájl. 186 00:07:32,080 --> 00:07:34,170 Manapság ez már költözött más helyeken. 187 00:07:34,170 --> 00:07:38,660 De ha megnézi a megfelelő helyre a rendszer, akkor látni nem csak a 188 00:07:38,660 --> 00:07:41,430 felhasználónév vagy a többi ember a rendszert, de akkor megjelenik egy 189 00:07:41,430 --> 00:07:43,410 titkosított változata a jelszó. 190 00:07:43,410 --> 00:07:47,800 Valóban, a szó kripta ott azt javasolja, hogy a következő dolgok titkosított. 191 00:07:47,800 --> 00:07:52,030 És ez a sorozat látszólag véletlenszerű betűk és karakterek és számok 192 00:07:52,030 --> 00:07:56,370 így tovább lehet visszafejteni csak általánosságban ismeretében valami titkos - 193 00:07:56,370 --> 00:07:58,600 egy titkos szót, egy titkos számot. 194 00:07:58,600 --> 00:08:02,760 És valóban, a művészet a kriptográfia végső soron attól függ, hogy megbízik az egyes 195 00:08:02,760 --> 00:08:05,700 sort, és tudván, hogy valami mást nem. 196 00:08:05,700 --> 00:08:10,010 Fogjuk felfedezni ezt egy kicsit részletesebben ma és a Pset jönni. 197 00:08:10,010 --> 00:08:11,860 >> És most egy szó a pass / fail. 198 00:08:11,860 --> 00:08:15,250 Így különösen, mint néhány már lebukott Pset 1, a készülék és a 199 00:08:15,250 --> 00:08:18,390 egy teljesen új világot magadnak, felismerte, hogy frusztrációt és 200 00:08:18,390 --> 00:08:21,340 zavart, és csak technikai nehézségek várhatók. 201 00:08:21,340 --> 00:08:24,410 Különösen az első Pset, ahol csak annyi az új, csak most 202 00:08:24,410 --> 00:08:28,830 ismernie ls, CD és ezek arcane parancsok egy új környezetben. 203 00:08:28,830 --> 00:08:32,679 És ez független a tényleges anyagi és a programozás is. 204 00:08:32,679 --> 00:08:35,960 Szóval észre azt is, hogy vannak olyan munkaidőn hogy léteznek 205 00:08:35,960 --> 00:08:36,770 a támogatási struktúrát. 206 00:08:36,770 --> 00:08:38,620 Szakasza kezdődik a jövő vasárnap. 207 00:08:38,620 --> 00:08:41,990 De a legfontosabb, ha érzel magadban csak, hogy nem ez a 208 00:08:41,990 --> 00:08:44,420 világ neked, rájönnek, hogy ez tényleg nem csak időt vesz igénybe. 209 00:08:44,420 --> 00:08:47,520 És ha nem lettek volna ezt a lehetőséget évvel ezelőtt engem vesz egy osztály 210 00:08:47,520 --> 00:08:50,840 megfelelt / nem felelt, őszintén, soha nem lett volna, még a lábát az osztályteremben. 211 00:08:50,840 --> 00:08:53,520 És tudod változtatni ezt-ig, mondjuk, az ötödik hétfőn természetesen. 212 00:08:53,520 --> 00:08:57,110 Tehát, ha te vagy a szélén most észre, hogy ahelyett, hogy fejét néhány más 213 00:08:57,110 --> 00:09:01,000 vizeken összesen, akkor biztosan csak úgy változik át / nem. 214 00:09:01,000 --> 00:09:03,750 Ismét ott nem igazán ez a kultúra itt Harvard figyelembe dolgok 215 00:09:03,750 --> 00:09:08,080 megfelelt / nem felelt, mivel mindenki nagyon szeretne elérni, vagy túl is. 216 00:09:08,080 --> 00:09:11,470 De őszintén szólva, ez egy csodálatos módon próbál valami arra, hogy esetleg nem 217 00:09:11,470 --> 00:09:13,110 ismerős lehet az Ön számára. 218 00:09:13,110 --> 00:09:17,090 És akkor a végén csinál a legtöbb esetben meglehetősen finom, talán 219 00:09:17,090 --> 00:09:18,040 sok a meglepetés. 220 00:09:18,040 --> 00:09:20,850 És Konkrétabban, mit gondolok megfelelt / nem felelt általában nem, 221 00:09:20,850 --> 00:09:23,350 különösen azért, mert lehet, hogy tapasztalt Pset 0, ha már fel 222 00:09:23,350 --> 00:09:27,200 10 óra, 15 óra, 25 óra a néhány Pset - és te csak dörömböl 223 00:09:27,200 --> 00:09:28,180 a fejét a falnak, 224 00:09:28,180 --> 00:09:29,850 és ez egyre szuper késő este, 225 00:09:29,850 --> 00:09:31,880 de már megtette a Pset mint 90%-át az út, 226 00:09:31,880 --> 00:09:33,780 tudod, nem tudod kitalálni egy dolog - 227 00:09:33,780 --> 00:09:36,830 megfelelt / nem igazán úgy élét egy osztály, mint ez, ahol meg lehet rendezni 228 00:09:36,830 --> 00:09:39,150 A boldogan mondjuk oké, tudom, hogy ez nem tökéletes. 229 00:09:39,150 --> 00:09:40,470 De én dolgoztam a seggem ebben. 230 00:09:40,470 --> 00:09:42,410 Én nagyon boldog, ha véget ért fel. 231 00:09:42,410 --> 00:09:44,780 És ez megfelel a vonatkozó várakozások / nem felelt meg. 232 00:09:44,780 --> 00:09:46,850 Szóval, hogy tartsa szem előtt. 233 00:09:46,850 --> 00:09:47,140 >> Rendben van. 234 00:09:47,140 --> 00:09:50,980 Tehát azok, akik küzdöttek, hogy használja a Harvard Egyetem Wi-Fi know 235 00:09:50,980 --> 00:09:54,780 hogy van egy CS50 SSID-t, a Wi-Fi kapcsolat lebeg, hogy 236 00:09:54,780 --> 00:09:56,520 Lehet, jobb szerencsét. 237 00:09:56,520 --> 00:09:59,430 Ez egy kicsit ironikus, hogy a jelszót e -, ha szeretné kipróbálni 238 00:09:59,430 --> 00:10:03,080 kapcsolódás ezt a jobb sebesség és tudassa velünk, ha ez nem jobb - 239 00:10:03,080 --> 00:10:09,240 egy, kettő, három, négy, öt, egészen akár nyolc mert nyolcas 240 00:10:09,240 --> 00:10:10,270 sokkal biztonságosabb, mint öt. 241 00:10:10,270 --> 00:10:15,520 Tehát, ha szükség van a Wi-Fi jelszavát, csatlakoztassa a CS50 vezeték nélküli itt. 242 00:10:15,520 --> 00:10:16,950 Egy, kettő, három, négy, öt, hat, hét, nyolc. 243 00:10:16,950 --> 00:10:20,440 És hozzászólás CS50 Beszéljétek ha még időszakos kapcsolódási problémák, 244 00:10:20,440 --> 00:10:24,880 és mi hagyja, hogy a hatalom lehet tudni, ezen a helyen. 245 00:10:24,880 --> 00:10:25,180 >> Rendben van. 246 00:10:25,180 --> 00:10:30,350 Tehát egy gyors teaser, különösen azok számára, akik rajongó fiú vagy lány 247 00:10:30,350 --> 00:10:31,900 minden dolog Apple. 248 00:10:31,900 --> 00:10:37,566 Amit kiásták a néhány évvel ezelőtt volt, ezt a fájlt itt ilock.c, csak azért, hogy 249 00:10:37,566 --> 00:10:40,930 fajta, hogy több konkrét és bonyolultabb néhány a több alap C 250 00:10:40,930 --> 00:10:42,350 programokat voltunk írásban. 251 00:10:42,350 --> 00:10:44,360 Szóval nyitni ezt a fájlt, ilock.c. 252 00:10:44,360 --> 00:10:46,830 Ez elérhető az előadások oldalon ma. 253 00:10:46,830 --> 00:10:49,470 A bal oldali, látsz egy hosszú listát a funkciók. 254 00:10:49,470 --> 00:10:51,860 Szóval a fickó, aki írta ezt írta egy csomó funkciók, 255 00:10:51,860 --> 00:10:53,290 több, mint fő. 256 00:10:53,290 --> 00:10:55,490 Valaha egy csomó könyvtárak itt. 257 00:10:55,490 --> 00:11:00,450 És ha elkezdünk lapozást, mi ez valójában a nagyon 258 00:11:00,450 --> 00:11:04,670 1. Azt hiszem, kiváló az eredeti iPhone. 259 00:11:04,670 --> 00:11:08,000 Ha akarta jailbreak az eredeti iPhone, ami azt jelenti, untether 260 00:11:08,000 --> 00:11:11,800 hogy az AT & T és a ténylegesen telepíteni speciális szoftver rá, és a dolgok 261 00:11:11,800 --> 00:11:13,510 , hogy az Apple nem akarta az embereket - 262 00:11:13,510 --> 00:11:17,020 Nos, valaki volt az ideje, hogy kitaláljuk, hogy pontosan hogyan tudnák kihasználni 263 00:11:17,020 --> 00:11:20,880 szoftver hibák, tévedések, hibák, az Apple szoftver. 264 00:11:20,880 --> 00:11:22,650 És így született ilock.c. 265 00:11:22,650 --> 00:11:26,670 Hogy ha össze azt a számítógépet, és telepítettem rá egy iPhone, hogy 266 00:11:26,670 --> 00:11:29,810 csatlakoztatva volt a számítógéphez, mondjuk, egy USB kábel, ez Önnek 267 00:11:29,810 --> 00:11:33,360 közigazgatási vagy root az iPhone, és hagyja, te elég sok 268 00:11:33,360 --> 00:11:34,170 amit akarsz. 269 00:11:34,170 --> 00:11:36,740 >> És így volt ez a csodálatos macska-egér játék között az Apple és 270 00:11:36,740 --> 00:11:39,920 A világ többi része, különösen azok, mint sok vállalat, próbálja lezárni 271 00:11:39,920 --> 00:11:43,220 a dolgukat le úgy, hogy csak akkor tudjuk csinálni vele, amit kívánt. 272 00:11:43,220 --> 00:11:46,620 De hála az emberek, mint ez és azok megértése alacsony szintű 273 00:11:46,620 --> 00:11:50,580 részletek és, hogy ebben az esetben, a C programozási és egy csomó ismerős konstrukciók 274 00:11:50,580 --> 00:11:54,630 hogy már elkezdett játszani, meg tudja-e valóban kihasználhatják a 275 00:11:54,630 --> 00:11:59,050 hardver módon ahogy jónak látod, és nem feltétlenül egyes vállalati egység. 276 00:11:59,050 --> 00:12:01,360 Így például, fogalmam sincs, mi ez csinál. 277 00:12:01,360 --> 00:12:03,220 De GetVersion hangzik elég egyértelmű. 278 00:12:03,220 --> 00:12:05,480 És úgy tűnik ez egy olyan funkció, hogy ez a személy írta. 279 00:12:05,480 --> 00:12:09,240 Vegyünk valami egész, mint egy érvet, nem ad vissza semmit, de 280 00:12:09,240 --> 00:12:13,080 Úgy tűnik a hurok a hurok az itt és ha a feltétel, ha a feltétel, 281 00:12:13,080 --> 00:12:15,620 szünet, és valahogy kapcsolódik verziószámát. 282 00:12:15,620 --> 00:12:16,700 Ha lapozzunk lefelé - 283 00:12:16,700 --> 00:12:19,570 bár sok ilyen kulcsszavak lesznek új, és van egy 284 00:12:19,570 --> 00:12:22,590 csomó funkciók itt még sosem láttam, és talán soha nem lát át 285 00:12:22,590 --> 00:12:23,830 során a félév - 286 00:12:23,830 --> 00:12:27,150 a végén a nap, ebből az következik, ugyanazokat a szabályokat és logikát, hogy mi már 287 00:12:27,150 --> 00:12:28,760 játszik eddig. 288 00:12:28,760 --> 00:12:34,220 Szóval ez túl öreg ahhoz, hogy kiváló az iPhone 3s vagy 4s vagy hamarosan 5s, ezekben a napokban, 289 00:12:34,220 --> 00:12:37,320 de tudjuk, hogy ez mind nagyon származik a világ, hogy már 290 00:12:37,320 --> 00:12:38,430 lebukott. 291 00:12:38,430 --> 00:12:41,900 >> Szóval vessünk egy pillantást egy kicsit több egyszerű példát. 292 00:12:41,900 --> 00:12:46,100 Ez az egy, csak kap bemelegíteni néhány szintaktikai és még néhány egyéb adatokat 293 00:12:46,100 --> 00:12:49,240 típus, hogy már beszéltünk, de még nem igazán látott C. Tehát ez egy 294 00:12:49,240 --> 00:12:51,680 nevű fájl positive1.c. 295 00:12:51,680 --> 00:12:55,120 És per az észrevételeket a tetején, ez csak azt követeli, hogy a felhasználó ad 296 00:12:55,120 --> 00:12:55,960 pozitív szám. 297 00:12:55,960 --> 00:12:59,530 Szóval ez egy példa a do-while ciklus, ami szép és jó a felhasználó által interaktív 298 00:12:59,530 --> 00:13:01,980 programokat, ahol meg kell mondani a felhasználónak, hogy tegyen valamit. 299 00:13:01,980 --> 00:13:05,190 És ha nem működnek együtt, akkor kiabálni őket, vagy elutasítja a bemenet. 300 00:13:05,190 --> 00:13:11,610 Case pont, fogok csinálni sorok 19 keresztül 24 mindaddig, amíg a felhasználó 301 00:13:11,610 --> 00:13:14,310 nem adott nekem egy pozitív szám. 302 00:13:14,310 --> 00:13:20,400 Most ezt a részletet itt a 18 vezetéken, miért kijelentem n fent ez az egész 303 00:13:20,400 --> 00:13:24,490 hurok konstrukció szemben a közvetlenül a 22 vonal, ahol 304 00:13:24,490 --> 00:13:26,880 tényleg érdekel, hogy n? 305 00:13:26,880 --> 00:13:27,330 Igen? 306 00:13:27,330 --> 00:13:27,780 [Hallhatatlan] 307 00:13:27,780 --> 00:13:29,040 >> DAVID J. Malan: Igen, így ez a kérdés hatályát. 308 00:13:29,040 --> 00:13:30,850 És laikus távon mit hatálya utal? 309 00:13:34,690 --> 00:13:36,610 Igen? 310 00:13:36,610 --> 00:13:37,860 [Hallhatatlan] 311 00:13:40,040 --> 00:13:41,105 DAVID J. Malan: Tud beszélni egy kicsit hangosabban? 312 00:13:41,105 --> 00:13:43,450 SPEAKER 1: Hol lehet elérni egy adott változó. 313 00:13:43,450 --> 00:13:45,170 DAVID J. Malan: Perfect. 314 00:13:45,170 --> 00:13:47,360 Ha el tudja érni egy adott változó. 315 00:13:47,360 --> 00:13:50,400 És általában, a ökölszabály eddig az volt, hogy a körét egyes 316 00:13:50,400 --> 00:13:55,860 változó határozza meg a legutóbbi kapcsos zárójelek, amit látott. 317 00:13:55,860 --> 00:14:02,010 És ebben az esetben, ha elkövette azt a hibát nyilvánító n on-line 22, 318 00:14:02,010 --> 00:14:03,010 hogy a vonal fog működni. 319 00:14:03,010 --> 00:14:10,990 Szeretnék kap egy int, és azt helyezze be, hogy az n változó sorban 22. 320 00:14:10,990 --> 00:14:16,900 De melyik kódsor hogy most fogalmam sincs, miről beszélsz? 321 00:14:16,900 --> 00:14:22,650 Így 25, és kiderült, hogy 24, is, mivel ebben az esetben, kívül esik 322 00:14:22,650 --> 00:14:23,610 A kapcsos zárójelek. 323 00:14:23,610 --> 00:14:27,280 Szóval, csak egy kicsit kellemetlen, de nagyon könnyen megoldható egyszerűen nyilvánító 324 00:14:27,280 --> 00:14:30,140 a változó külső a funkciót is. 325 00:14:30,140 --> 00:14:32,600 >> Most majd meglátjuk később ma, akkor egy lépéssel tovább. 326 00:14:32,600 --> 00:14:34,860 És akkor még egy kicsit lusta - 327 00:14:34,860 --> 00:14:37,320 és ez nem javasolható, általában - 328 00:14:37,320 --> 00:14:42,260 de akkor még csak lusta, és tegye a változó világban, hogy úgy mondjam, nem 329 00:14:42,260 --> 00:14:46,670 belsejében egy függvény, nem belül a hurok, de a fájl maga, kívül 330 00:14:46,670 --> 00:14:49,600 az összes olyan funkciót, amit írt, mint én itt a 15. sor. 331 00:14:49,600 --> 00:14:51,160 De ez általában elítélik. 332 00:14:51,160 --> 00:14:55,680 De észre ezt a megoldást néha más problémákat, mivel mi 333 00:14:55,680 --> 00:14:56,620 végül látni. 334 00:14:56,620 --> 00:14:58,130 Tehát most, akkor hagyjuk, mint ez. 335 00:14:58,130 --> 00:15:01,030 De lássuk, tudjuk átírni ezt csak elindítani kifejező magunknak egy 336 00:15:01,030 --> 00:15:01,990 kicsit másképp. 337 00:15:01,990 --> 00:15:05,330 >> Szóval ez a program, csak hogy világos legyen, nem positive1. 338 00:15:05,330 --> 00:15:11,810 Hadd menjek előre, itt és a terminál ablakban győződjön positive1, Enter. 339 00:15:11,810 --> 00:15:12,740 Lefordul, oké. 340 00:15:12,740 --> 00:15:14,910 Megyek futni positive1, nyomd meg az Entert. 341 00:15:14,910 --> 00:15:16,820 Követelem, hogy adjon nekem egy pozitív egész szám. 342 00:15:16,820 --> 00:15:18,260 Azt mondom -1. 343 00:15:18,260 --> 00:15:18,910 Ez nem működik. 344 00:15:18,910 --> 00:15:22,150 0, 99, úgy tűnik, hogy működik. 345 00:15:22,150 --> 00:15:23,570 Lehet, hogy nem a legszigorúbb vizsgálat. 346 00:15:23,570 --> 00:15:26,480 De legalább ez egy szép józanság ellenőrzést, hogy mi vagyunk a helyes úton halad. 347 00:15:26,480 --> 00:15:29,240 És most hadd menjek előre, és nyissa változata két e. 348 00:15:29,240 --> 00:15:32,500 És mi a különbség már? 349 00:15:32,500 --> 00:15:35,140 Hajtja végre ugyanaz. 350 00:15:35,140 --> 00:15:40,660 De mi ugrott ki, mint egyértelműen különbözik ebben az időben? 351 00:15:40,660 --> 00:15:42,560 Igen, ez a bool zöld. 352 00:15:42,560 --> 00:15:45,980 Gedit kiemelte a zöld ez a kulcsszó nevei bool, 353 00:15:45,980 --> 00:15:47,000 amely egy adattípust. 354 00:15:47,000 --> 00:15:51,080 Ez nem jön beépített összes változatára C. Be kell tartalmaznia 355 00:15:51,080 --> 00:15:52,010 specifikus könyvtár. 356 00:15:52,010 --> 00:15:54,770 A mi esetünkben azt tartalmazza a CS50 könyvtárban, hogy mi 357 00:15:54,770 --> 00:15:56,460 férhetnek hozzá bool. 358 00:15:56,460 --> 00:15:59,810 De a 18 vezetéken, akkor úgy tűnik, hogy egy logikai érték van az úgynevezett hálás. 359 00:15:59,810 --> 00:16:01,040 Így tudtam hívják ezt a valamit. 360 00:16:01,040 --> 00:16:04,500 De én nevezték hálás csak egyfajta közvetíteni néhány szemantikai jelentését. 361 00:16:04,500 --> 00:16:07,930 Így kezdetben on line 18 vagyok nyilvánvalóan nem hálás, mert a 362 00:16:07,930 --> 00:16:12,150 Logikai érték hálás inicializálódik false sorban 18. 363 00:16:12,150 --> 00:16:16,890 És akkor úgy tűnik, hogy mit tettem itt sorok 21-től a 23-én már csak 364 00:16:16,890 --> 00:16:18,610 fajta átírt én logika. 365 00:16:18,610 --> 00:16:21,020 Tehát nem funkcionálisan különböző. 366 00:16:21,020 --> 00:16:26,940 De a 22 most, azt ellenőrizze, hogy a int a felhasználó megadta nagyobb 367 00:16:26,940 --> 00:16:31,120 0, akkor egyszerűen módosítsa az értéket a hálás igaz. 368 00:16:31,120 --> 00:16:32,290 És miért ne tenném? 369 00:16:32,290 --> 00:16:35,600 Mert a 25 vezetéken, úgy tűnik, megyek, hogy ellenőrizze a feltételt. 370 00:16:35,600 --> 00:16:39,380 Ehhez hurok miközben hálás hamis. 371 00:16:39,380 --> 00:16:43,610 >> Szóval, azt javaslom, hogy ez egy alternatív változata, mert ez legalább egy 372 00:16:43,610 --> 00:16:45,130 kicsit intuitív, talán. 373 00:16:45,130 --> 00:16:46,900 Ez egy kicsit több, földelt angolul. 374 00:16:46,900 --> 00:16:51,710 Szóval tegye a következőket, miközben nem vagyunk hálásak, vagy pedig hálás hamis. 375 00:16:51,710 --> 00:16:55,890 És ez alkalommal is, én nyilvánvalóan nem érdekel, emlékezni, amit a felhasználó beírt 376 00:16:55,890 --> 00:16:57,730 be, mert értesítésben nincs változó n. 377 00:16:57,730 --> 00:16:58,650 Így valójában, I - 378 00:16:58,650 --> 00:17:00,080 Egy kis fehér hazugság van. 379 00:17:00,080 --> 00:17:02,770 Funkcionálisan a program egy kicsit más, ha eljutunk az alján 380 00:17:02,770 --> 00:17:04,819 mert én nem emlékszem, mi n. 381 00:17:04,819 --> 00:17:09,579 De azt akartam bizonyítani, itt is, hogy bár láttuk getInt és 382 00:17:09,579 --> 00:17:13,920 GetString használ a jobb oldali egyenlőségjellel eddig annak érdekében, hogy 383 00:17:13,920 --> 00:17:17,160 emlékszünk az érték, technikailag, ez nem feltétlenül szükséges. 384 00:17:17,160 --> 00:17:20,950 Ha bármilyen okból, csak nem érdekel, hogy mentse az érték, ha csak akar 385 00:17:20,950 --> 00:17:25,710 hogy ellenőrizze az érték, észre, hogy egyszerűen írni ezt getInt nyitott 386 00:17:25,710 --> 00:17:27,000 paren, közeli paren. 387 00:17:27,000 --> 00:17:30,460 Ez a funkció megy vissza értéket, ahogy már mondtam. 388 00:17:30,460 --> 00:17:32,010 Ez lesz, hogy ismét egy int. 389 00:17:32,010 --> 00:17:36,450 És így, ha úgy gondolja, szellemileg ezen történik, mikor írja be a 99, getInt 390 00:17:36,450 --> 00:17:38,160 visszaadja a szám 99. 391 00:17:38,160 --> 00:17:41,330 És így fogalmilag, ez mintha a kód valójában ezt. 392 00:17:41,330 --> 00:17:45,880 Tehát, ha 99 valóban nagyobb, mint 0, akkor hálás lesz igaz. 393 00:17:45,880 --> 00:17:50,420 Aztán 25 vezetéken felismeri ó, készen vagyunk, mert én vagyok most már hálás. 394 00:17:50,420 --> 00:17:54,590 És sorban 26, egyszerűen mondjuk, köszönhetően a pozitív egész szám, bármi is 395 00:17:54,590 --> 00:17:55,710 történt, hogy legyen. 396 00:17:55,710 --> 00:17:58,900 >> Most csináljuk enyhe szintaktikai cukor van, hogy úgy mondjam. 397 00:17:58,900 --> 00:18:02,990 Lássuk, ha tudjuk megtisztítani ebben a sorban a 25. A harmadik és egyben utolsó variancia 398 00:18:02,990 --> 00:18:04,640 A positive3. 399 00:18:04,640 --> 00:18:08,250 Tehát észre a különbség csak az, hogy milyen kódsort? 400 00:18:11,930 --> 00:18:13,260 Igen, 25. 401 00:18:13,260 --> 00:18:15,520 És most már nem is láttam ezt a trükköt csak még. 402 00:18:15,520 --> 00:18:19,510 De mi volt látni a felkiáltójel hétfőn, amely jelzi, mi? 403 00:18:19,510 --> 00:18:20,970 Szóval nem, vagy tagadás. 404 00:18:20,970 --> 00:18:23,460 Tehát hogy egy logikai érték, és fordítsa az értékét. 405 00:18:23,460 --> 00:18:24,390 Igaz hamisnak bizonyul. 406 00:18:24,390 --> 00:18:25,500 False lesz igaz. 407 00:18:25,500 --> 00:18:28,910 Szóval, azt javaslom, még egy kicsit intuitív olyan módon 408 00:18:28,910 --> 00:18:32,200 írni a kódot, mert még mindig inicializálni hálás hamis. 409 00:18:32,200 --> 00:18:33,530 Még mindig tegye a következőket. 410 00:18:33,530 --> 00:18:35,700 Én meg hálás igaz, ha eljön az ideje. 411 00:18:35,700 --> 00:18:40,690 De most már tényleg csak lefordítani ezt a kódot szóban balról jobbra, 412 00:18:40,690 --> 00:18:42,550 miközben nem hálás. 413 00:18:42,550 --> 00:18:46,170 Mert bumm, vagy felkiáltójel, jelöli a fogalom nem, így amíg 414 00:18:46,170 --> 00:18:47,010 Nem hálás. 415 00:18:47,010 --> 00:18:49,740 >> Tehát újra, még nem vezetett be új fogalmakat per se. 416 00:18:49,740 --> 00:18:53,230 Már beszéltünk Logikai vissza, amikor mi játszottunk Scratch. 417 00:18:53,230 --> 00:18:55,690 De észre, most már csak írjuk be a kódot a 418 00:18:55,690 --> 00:18:56,550 számos különböző módon. 419 00:18:56,550 --> 00:19:00,010 Így különösen a pset1, ha valamilyen küzd, hogy kitaláljuk, az utat 420 00:19:00,010 --> 00:19:03,400 levelet néhány program, esély akkor a szerencse, mert nem lesz semmi 421 00:19:03,400 --> 00:19:05,780 megoldások számát, hogy megtörténhet rajta. 422 00:19:05,780 --> 00:19:09,850 Például, ez csak három még a legegyszerűbb program. 423 00:19:09,850 --> 00:19:10,180 Rendben van. 424 00:19:10,180 --> 00:19:13,860 És most emlékszem, hétfőn hagytuk e jegyzet visszatérési értékeket. 425 00:19:13,860 --> 00:19:18,280 Tehát a legelső alkalommal, írtunk egy program, ami nem csak azt main, 426 00:19:18,280 --> 00:19:22,240 is megvan a saját egyedi funkció, hogy én írtam ide. 427 00:19:22,240 --> 00:19:26,640 Így sor 31 keresztül 34, már végre egy kocka funkciót. 428 00:19:26,640 --> 00:19:27,800 Ez nem bonyolult. 429 00:19:27,800 --> 00:19:29,830 Ez csak egy alkalommal egy alkalommal egy, ebben az esetben. 430 00:19:29,830 --> 00:19:34,920 De mi a fontos benne, hogy elviszem input formájában és 431 00:19:34,920 --> 00:19:38,910 Én vissza kibocsátás formájában egy alkalommal egy alkalommal egy. 432 00:19:38,910 --> 00:19:43,940 >> Szóval most megvan a képessége, ugyanúgy, mint régen a printf egyedül, hogy hívja 433 00:19:43,940 --> 00:19:47,120 ezt a funkciót hívja a kocka funkciót. 434 00:19:47,120 --> 00:19:49,470 És a kocka függvény némi bemenet. 435 00:19:49,470 --> 00:19:52,030 És a kocka függvény valamilyen kimenetet. 436 00:19:52,030 --> 00:19:56,660 És így ezzel szemben printf csináltál valamit. 437 00:19:56,660 --> 00:19:59,490 Ez nem adott vissza semmit, hogy törődik - bár, mint 438 00:19:59,490 --> 00:20:00,820 félretéve, ez nem ad vissza értéket. 439 00:20:00,820 --> 00:20:02,650 Csak általában figyelmen kívül hagyja. 440 00:20:02,650 --> 00:20:04,000 Printf csináltam valamit. 441 00:20:04,000 --> 00:20:06,220 Ez volt a mellékhatása nyomtatás a képernyőn. 442 00:20:06,220 --> 00:20:09,480 Ezzel szemben itt van a kocka funkció, amely 443 00:20:09,480 --> 00:20:11,400 ténylegesen visszatér valamit. 444 00:20:11,400 --> 00:20:12,960 >> Szóval ez általában - 445 00:20:12,960 --> 00:20:15,260 azok ismerik ezt, ez egy meglehetősen egyszerű ötlet. 446 00:20:15,260 --> 00:20:18,460 De azok számára, kevésbé ismerik ezt az ötletet az elhaladó bemenetek és egyre 447 00:20:18,460 --> 00:20:21,700 vissza kimenetek, próbáljuk csak valami szuper egyszerű. 448 00:20:21,700 --> 00:20:25,180 Van valaki kényelmes jön a színpadra röviden? 449 00:20:25,180 --> 00:20:27,460 Van, hogy kényelmes a kamera akkor is. 450 00:20:27,460 --> 00:20:27,640 Igen. 451 00:20:27,640 --> 00:20:28,610 Oké, mi a neve? 452 00:20:28,610 --> 00:20:29,020 KEN: Ken. 453 00:20:29,020 --> 00:20:29,420 DAVID J. Malan: Ken. 454 00:20:29,420 --> 00:20:29,810 Rendben, Ken. 455 00:20:29,810 --> 00:20:31,060 Gyere fel. 456 00:20:31,060 --> 00:20:34,660 Szóval Ken lesz függvénye a fajta itt. 457 00:20:34,660 --> 00:20:35,760 És menjünk előre, és ezt. 458 00:20:35,760 --> 00:20:38,790 Menjünk egy kicsit díszes. 459 00:20:38,790 --> 00:20:39,770 Örülök, hogy megismerhetem. 460 00:20:39,770 --> 00:20:41,010 Üdvözöljük a középpontban. 461 00:20:41,010 --> 00:20:41,980 Rendben van. 462 00:20:41,980 --> 00:20:45,590 Nézzük meg ezt a gombot nyomja meg itt. 463 00:20:45,590 --> 00:20:46,420 Rendben van. 464 00:20:46,420 --> 00:20:49,490 Tehát itt van egy modern táblára. 465 00:20:49,490 --> 00:20:53,050 És mi én vagyok a fő funkciója, például. 466 00:20:53,050 --> 00:20:55,990 És nincs iPad a kezemben. 467 00:20:55,990 --> 00:20:59,000 Nem igazán emlékszem, hogyan - nos, igazából nem lehet azt mondani, hogy az. 468 00:20:59,000 --> 00:21:02,200 Nem igazán jó kézírás. 469 00:21:02,200 --> 00:21:05,260 És ezért szeretném, ha nyomtatni valamit a képernyőn nekem. 470 00:21:05,260 --> 00:21:07,470 >> Szóval én volt a fő program. 471 00:21:07,470 --> 00:21:15,060 És megyek, hogy azt mondod, ezt írásban, hogy az én csirke semmiből, 472 00:21:15,060 --> 00:21:16,600 akkor tompított Önnek egy bemenet. 473 00:21:16,600 --> 00:21:20,000 Szóval, buta bár ez a gyakorlat, a fogalom a funkciók és a hívás 474 00:21:20,000 --> 00:21:22,260 funkció és visszatérő függvény tényleg csapódik le, hogy ezt. 475 00:21:22,260 --> 00:21:23,120 I am Main. 476 00:21:23,120 --> 00:21:26,270 Épp most írta printf ("valami") a képernyőn. 477 00:21:26,270 --> 00:21:27,470 Én fut a program. 478 00:21:27,470 --> 00:21:30,900 És amint printf hívódik meg vesz egy érv - vagy egy paraméter, 479 00:21:30,900 --> 00:21:31,660 néha - 480 00:21:31,660 --> 00:21:32,780 dupla idézőjelek közé. 481 00:21:32,780 --> 00:21:33,960 Itt van ez az érvelés. 482 00:21:33,960 --> 00:21:35,740 Én beengedné Ken. 483 00:21:35,740 --> 00:21:39,390 Most van egy fekete doboz írásbeli néhány néhány évvel ezelőtt, hogy látszólag 484 00:21:39,390 --> 00:21:41,070 Csak tudja, hogyan kell nyomtatni a dolgokat a képernyőn. 485 00:21:41,070 --> 00:21:42,320 >> Szóval, végre. 486 00:21:48,842 --> 00:21:49,900 Ez nem rossz. 487 00:21:49,900 --> 00:21:50,890 Szóval, nagyon jó. 488 00:21:50,890 --> 00:21:52,900 Tehát most Ken történik végrehajtó. 489 00:21:52,900 --> 00:21:55,810 Vajon kell, hogy adja nekem valamit vissza? 490 00:21:55,810 --> 00:21:57,240 Tehát nem az, hogy láttunk eddig. 491 00:21:57,240 --> 00:21:59,230 Ismét printf jelent valójában vissza egy számot. 492 00:21:59,230 --> 00:22:01,640 De fogunk figyelmen kívül hagyni, hogy most, mert még sosem használta. 493 00:22:01,640 --> 00:22:03,400 Szóval ez azt Ken. 494 00:22:03,400 --> 00:22:06,650 És most fő jön vissza, hogy végre - 495 00:22:06,650 --> 00:22:09,630 fő veszi át az irányítást a programot újra, mert ez kódsort, 496 00:22:09,630 --> 00:22:11,010 printf, történik végrehajtó. 497 00:22:11,010 --> 00:22:13,890 És megyünk mi módon végrehajtó bármely más vonalak vannak. 498 00:22:13,890 --> 00:22:14,130 >> Rendben van. 499 00:22:14,130 --> 00:22:17,080 Tehát most próbáljunk egy kicsit más példát. 500 00:22:17,080 --> 00:22:22,430 És ezúttal itt, nézzük először törölje a képernyőt itt. 501 00:22:22,430 --> 00:22:24,670 És ez időben, akkor tegye a kocka funkciót. 502 00:22:24,670 --> 00:22:27,350 De ez alkalommal, azt várom a kimeneti érték. 503 00:22:27,350 --> 00:22:28,630 Akkor menjünk előre, és ezt. 504 00:22:28,630 --> 00:22:35,680 Szóval most van egy sor kódot, hogy azt mondja x = cube (x). 505 00:22:35,680 --> 00:22:36,930 Tehát valójában let's - 506 00:22:41,450 --> 00:22:43,940 A kódsor, visszahívás, úgy néz ki, mint ez. 507 00:22:43,940 --> 00:22:45,960 x = kocka (x). 508 00:22:45,960 --> 00:22:48,100 Hogy fog ez működni? 509 00:22:48,100 --> 00:22:50,820 Akkor menjünk előre, és kapsz egy fehér képernyő újra. 510 00:22:50,820 --> 00:22:55,000 És fogok írni most le az x értéke, ami ebben a pillanatban 511 00:22:55,000 --> 00:23:01,080 időben történik, hogy, mondjuk, 2,, hogy ez egyszerű. 512 00:23:01,080 --> 00:23:04,890 Szóval írtam le egy darab papírra a értéke 2, 513 00:23:04,890 --> 00:23:06,100 ami az én értéke x. 514 00:23:06,100 --> 00:23:08,250 Adom, hogy Ken. 515 00:23:08,250 --> 00:23:09,200 KEN: Én csak annyit írj a válasz? 516 00:23:09,200 --> 00:23:12,660 DAVID J. Malan: Igen, nézzük csak írni a választ. 517 00:23:12,660 --> 00:23:13,030 Oké. 518 00:23:13,030 --> 00:23:16,280 És most vissza kell térnie nekem valamit. 519 00:23:16,280 --> 00:23:17,560 So - 520 00:23:17,560 --> 00:23:18,170 tökéletes. 521 00:23:18,170 --> 00:23:18,840 Szép Segue. 522 00:23:18,840 --> 00:23:21,970 >> Tehát most átadja vissza értéke 8, ebben az esetben. 523 00:23:21,970 --> 00:23:23,220 És mit csináljak vele? 524 00:23:23,220 --> 00:23:26,130 Nos, lássuk csak. 525 00:23:26,130 --> 00:23:26,640 Feliratkozás ezt a jogot. 526 00:23:26,640 --> 00:23:27,880 Mit fogok csinálni vele? 527 00:23:27,880 --> 00:23:31,900 Most fogom venni ezt az értéket, és valójában tárolja azokat 528 00:23:31,900 --> 00:23:33,400 ugyanazok a bitek a memóriában. 529 00:23:33,400 --> 00:23:35,030 De hirdetmény vagyok a fajta küzd itt. 530 00:23:35,030 --> 00:23:38,280 Én egy kicsit zavaros, mert ha tudom valójában írni az x értéke? 531 00:23:38,280 --> 00:23:41,840 Mert azt, amit most tenni, fizikailag viszont Ken egy darab papírt 532 00:23:41,840 --> 00:23:44,400 , hogy ha a 2 értéket, ami volt x. 533 00:23:44,400 --> 00:23:46,300 És valóban, ez pontosan mi történik. 534 00:23:46,300 --> 00:23:50,100 Így kiderül, hogy ha hív egy függvényt, és adja át egy érv 535 00:23:50,100 --> 00:23:54,130 mint a "hello world", vagy át egy érv, mint a 2, általában, te 536 00:23:54,130 --> 00:23:56,720 halad egy példányát ezt az érvelést. 537 00:23:56,720 --> 00:24:01,020 És ahogy írtam le a 2-es szám van, és átnyújtotta Ken, hogy meg kell 538 00:24:01,020 --> 00:24:04,760 azt jelenti, hogy még mindig van egy példánya a 2 értéket valahol. 539 00:24:04,760 --> 00:24:08,140 Mert valóban, most, hogy kaptam vissza az érték 8, mennem kell vissza 540 00:24:08,140 --> 00:24:12,010 RAM és ténylegesen írd le 8, ahol egyszer volt a 2-es szám. 541 00:24:12,010 --> 00:24:15,720 >> Szóval vizuálisan emlékezzen erre fogalma elhaladó szó 542 00:24:15,720 --> 00:24:16,730 egy példányát az értéket. 543 00:24:16,730 --> 00:24:19,570 Ken teszi a dolgát, a kezek vissza valamit - ebben az esetben, 544 00:24:19,570 --> 00:24:20,820 értéket, mint a 8. 545 00:24:20,820 --> 00:24:22,660 És akkor kell csinálni valamit, ezt az értéket, ha 546 00:24:22,660 --> 00:24:24,880 akarja tartani körül. 547 00:24:24,880 --> 00:24:29,470 Tehát az összes ez lesz a túlságosan is ismerős előtt hosszú. 548 00:24:29,470 --> 00:24:33,082 Nagyon köszönöm, hogy erre a demo itt, Ken. 549 00:24:33,082 --> 00:24:34,820 Rendben van. 550 00:24:34,820 --> 00:24:36,720 Nagyon jól sikerült. 551 00:24:36,720 --> 00:24:40,610 Akkor lássuk, hogyan, hogy végül kapcsolódik néhány funkció 552 00:24:40,610 --> 00:24:42,270 hív, hogy mi már itt. 553 00:24:42,270 --> 00:24:47,610 Szóval hadd menjen előre, és visz minket vissza a kocka példának. 554 00:24:47,610 --> 00:24:53,080 És észre, hogy ha azt akarjuk, hogy valóban elkezdené szedni ezt tovább, megyünk 555 00:24:53,080 --> 00:24:57,050 hogy kell szem előtt azt a tényt, hogy az x szám, ami alatt telt el 556 00:24:57,050 --> 00:25:01,390 itt más, mint amit ez ténylegesen átment a funkciót. 557 00:25:01,390 --> 00:25:03,940 Szóval ez megint eltelt példányt fog válni meglehetősen 558 00:25:03,940 --> 00:25:05,620 valaminek megfelelő egy pillanat. 559 00:25:05,620 --> 00:25:09,320 >> Szóval vessünk egy pillantást a valamit, ami nem egészen helyes működése még. 560 00:25:09,320 --> 00:25:11,790 Én megyek előre, és nyissa 1/3 buggy például, amely 561 00:25:11,790 --> 00:25:13,560 hibás a természet. 562 00:25:13,560 --> 00:25:18,070 És ezt hívják buggy3, és végrehajtja a csere funkciót. 563 00:25:18,070 --> 00:25:23,500 Tehát itt van egy fő funkciója, amely az x és y önkényesen inicializálva 564 00:25:23,500 --> 00:25:24,720 Az 1. és 2., illetve. 565 00:25:24,720 --> 00:25:27,590 Jól jönne getInt, de csak kell egy egyszerű feladat. 566 00:25:27,590 --> 00:25:29,680 Szóval ez kemény kódolt az 1 és 2. 567 00:25:29,680 --> 00:25:35,330 A vonalak 21 és 22, akkor nyilvánvalóan ki kell nyomtatni, x és y, soronként egyet. 568 00:25:35,330 --> 00:25:39,620 Ezután on line 23, azt állítom, én csere ezeket az értékeket, pont, pont, pont. 569 00:25:39,620 --> 00:25:43,030 Úgy tűnik, hívja a funkciót a 24 vezetéken nevezett csere 570 00:25:43,030 --> 00:25:44,000 hogy a két argumentuma. 571 00:25:44,000 --> 00:25:46,430 Ez teljesen legális a funkciókat, hogy két érveket. 572 00:25:46,430 --> 00:25:48,220 Láttuk printf csináld már. 573 00:25:48,220 --> 00:25:50,370 Így csere látszólag úgy x és y. 574 00:25:50,370 --> 00:25:53,010 És ahogy a neve is sugallja, azt remélem, hogy ez fog 575 00:25:53,010 --> 00:25:54,320 csere a két érték. 576 00:25:54,320 --> 00:25:57,560 Így aztán azt állítják, on-line 25, cserélték. 577 00:25:57,560 --> 00:26:01,570 És én reprint x és y, feltételezve, hogy 578 00:26:01,570 --> 00:26:02,830 ők már valóban cserélték. 579 00:26:02,830 --> 00:26:04,370 De ha tényleg futtatni ezt a programot - 580 00:26:04,370 --> 00:26:06,060 hadd nyit egy terminál ablakot. 581 00:26:06,060 --> 00:26:07,750 Hadd buggy3. 582 00:26:07,750 --> 00:26:09,970 Ahogy a neve is sugallja, ez nem lesz jó vége. 583 00:26:09,970 --> 00:26:14,690 Mert mikor Enter, észreveheti, hogy x 1 lehet. 584 00:26:14,690 --> 00:26:15,720 y értéke 2. 585 00:26:15,720 --> 00:26:19,160 És mégis a végén a program, hogy még mindig, valójában, az ugyanaz. 586 00:26:19,160 --> 00:26:22,760 >> Tehát alapuló demonstrációs most Ken, mi folyik itt valójában? 587 00:26:22,760 --> 00:26:24,660 Nos, belevetik magukat a csere funkciót. 588 00:26:24,660 --> 00:26:25,800 Ez szuper rövid. 589 00:26:25,800 --> 00:26:28,020 Ez csak néhány sornyi kódot hosszú. 590 00:26:28,020 --> 00:26:32,810 De mi az alapvető probléma alapuló egyszerű elmesélt 591 00:26:32,810 --> 00:26:34,270 ide Ken? 592 00:26:34,270 --> 00:26:36,115 Miért csere törve? 593 00:26:36,115 --> 00:26:37,365 [Hallhatatlan] 594 00:26:39,840 --> 00:26:40,460 Pontosan. 595 00:26:40,460 --> 00:26:43,610 Szóval tárolására egy másolatot, nem a változó magát. 596 00:26:43,610 --> 00:26:46,810 Más szóval, swap látszólag két argumentuma egy int. 597 00:26:46,810 --> 00:26:49,370 És ez önkényesen hívják és b. 598 00:26:49,370 --> 00:26:54,430 És itt, amit átadott x és y, amelyek rendre 1 és 2. 599 00:26:54,430 --> 00:26:56,580 De én nem szó szerint halad x. 600 00:26:56,580 --> 00:26:58,410 Én nem szó szerint halad y. 601 00:26:58,410 --> 00:27:01,230 Én halad egy példányát x és y egy példányát. 602 00:27:01,230 --> 00:27:05,180 Olyan ez, mint majdnem olyan mintha illesztenie a swap értékeket 603 00:27:05,180 --> 00:27:07,440 azt akarja, hogy ténylegesen manipulálni. 604 00:27:07,440 --> 00:27:11,970 Tehát, ha ez a helyzet, amikor a program, start végrehajtó 605 00:27:11,970 --> 00:27:14,140 vonal 35, majd 36 - 606 00:27:14,140 --> 00:27:17,740 amikor megkapom a vonal 37, ezen a ponton a történet, mi az értéke? 607 00:27:20,740 --> 00:27:24,850 Ezen a ponton a történet, 37. sor, mi az értéke ezen a ponton? 608 00:27:24,850 --> 00:27:25,980 Így kéne lennie 1. 609 00:27:25,980 --> 00:27:26,170 Igaz? 610 00:27:26,170 --> 00:27:29,100 Mivel az x-ben született az első érvet. 611 00:27:29,100 --> 00:27:33,150 És ez a funkció csak önkényesen hívja az első érv, a. 612 00:27:33,150 --> 00:27:35,130 Hasonlóan az y, a második argumentum. 613 00:27:35,130 --> 00:27:37,930 És ez csak önkényesen hívja a második érvet b. 614 00:27:37,930 --> 00:27:40,510 >> Most ez a kettősség valójában meglehetősen egyszerűen magyarázta. 615 00:27:40,510 --> 00:27:40,880 Gondolj bele. 616 00:27:40,880 --> 00:27:42,980 Egyikünk sem találkozott, aki írta printf. 617 00:27:42,980 --> 00:27:49,880 Szóval biztosan, ő nem tudja, mi a változók 30 évvel később megy 618 00:27:49,880 --> 00:27:50,710 lehet nevezni. 619 00:27:50,710 --> 00:27:55,110 Tehát ott kell, hogy legyen a különbséget, amit úgy hívnak változók 620 00:27:55,110 --> 00:27:59,960 funkciók írsz, és amit úgy hívnak változókat függvények te 621 00:27:59,960 --> 00:28:01,770 hívó vagy használ. 622 00:28:01,770 --> 00:28:05,120 Más szóval, írtam változók x és y. 623 00:28:05,120 --> 00:28:08,060 De ha valaki más írt a csere funkciót, ő biztosan 624 00:28:08,060 --> 00:28:10,480 Nem tudom, mi az én változók lesznek hívják. 625 00:28:10,480 --> 00:28:13,850 Szóval, rájönnek, hogy ez miért van ez a kettősség a neveket. 626 00:28:13,850 --> 00:28:16,800 Technikailag, én is ezt véletlenül. 627 00:28:16,800 --> 00:28:19,750 De akkor is telt el, mint példányban. 628 00:28:19,750 --> 00:28:22,940 Ez csak egy tiszta véletlen esztétikailag ha ez a személy, aki írta 629 00:28:22,940 --> 00:28:25,590 csere is használják ugyanazt a nevet. 630 00:28:25,590 --> 00:28:25,930 >> Rendben van. 631 00:28:25,930 --> 00:28:29,010 Tehát ezen a ponton a történet, 37. sor, egy 1 lehet. 632 00:28:29,010 --> 00:28:30,410 b értéke 2. 633 00:28:30,410 --> 00:28:32,040 És most folytassa cserélni őket. 634 00:28:32,040 --> 00:28:34,730 Hát először is, hadd ténylegesen ezt sokkal egyszerűbben. 635 00:28:34,730 --> 00:28:36,500 Én nem tudom, mi az a három sornyi kódot csinál. 636 00:28:36,500 --> 00:28:37,370 Hadd ezt. 637 00:28:37,370 --> 00:28:38,850 b kap. 638 00:28:38,850 --> 00:28:40,170 kap a b. 639 00:28:40,170 --> 00:28:41,450 Kész. 640 00:28:41,450 --> 00:28:43,540 Miért van ez törött, logikusan? 641 00:28:46,980 --> 00:28:48,590 Ez a fajta az intuitív dolog, igaz? 642 00:28:48,590 --> 00:28:50,640 Tehát lesz b. 643 00:28:50,640 --> 00:28:52,450 És b válik. 644 00:28:52,450 --> 00:28:55,410 De a probléma az, hogy amint a 37. sor hajtja végre, mi a 645 00:28:55,410 --> 00:28:58,170 értéke és b? 646 00:28:58,170 --> 00:28:59,070 Ugyanaz, 1. 647 00:28:59,070 --> 00:29:03,460 Mert már ütközés, hogy úgy mondjam, már megváltoztatta b, hogy megegyezzen a. 648 00:29:03,460 --> 00:29:06,000 Tehát, ha 37. sor végrehajtásra kerül, ez nagyszerű. 649 00:29:06,000 --> 00:29:09,940 Most már van két példányban az 1. számú belül ezt a funkciót. 650 00:29:09,940 --> 00:29:14,720 Tehát, ha mondjuk a 38, a b kap, nos, te milyen csavaros. 651 00:29:14,720 --> 00:29:17,370 Mert te csak hozzárendelése 1-1. 652 00:29:17,370 --> 00:29:20,400 Már a fajta elvesztette értéket törődött. 653 00:29:20,400 --> 00:29:22,910 >> Tehát az eredeti változata, észre amit tettem. 654 00:29:22,910 --> 00:29:26,620 Én inkább volt egy harmadik sor kódot úgy nézett ki, mint ez. 655 00:29:26,620 --> 00:29:29,910 Kijelentem, ideiglenes változó - tmp egy nagyon gyakori név 656 00:29:29,910 --> 00:29:31,240 egy ideiglenes változót. 657 00:29:31,240 --> 00:29:34,280 Ez egy int, mert van, hogy megfeleljen, amit szeretnénk, hogy egy másolatot. 658 00:29:34,280 --> 00:29:39,720 Tárolom egy példányát a belsejében tmp. Tehát, ha 37. sor teljesítette, 659 00:29:39,720 --> 00:29:41,390 a értéke az - 660 00:29:41,390 --> 00:29:42,970 gyors józanság check - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 Értéke b értéke 2. 663 00:29:45,780 --> 00:29:48,470 És az értéke tmp is 1. 664 00:29:48,470 --> 00:29:51,470 Szóval most végre sor 38. 665 00:29:51,470 --> 00:29:57,180 Szóval egyszer sor 38 hajt végre, a veszi értékének b. 666 00:29:57,180 --> 00:29:58,510 És b 2 volt. 667 00:29:58,510 --> 00:30:00,500 Tehát egy most 2. 668 00:30:00,500 --> 00:30:03,110 Tehát ezen a ponton a történet, a 2, b 2, 669 00:30:03,110 --> 00:30:05,130 és TMP 1 lehet. 670 00:30:05,130 --> 00:30:09,330 Tehát most logikusan, tudjuk csak puff tmp értékét a b. 671 00:30:09,330 --> 00:30:10,690 És mi történt. 672 00:30:10,690 --> 00:30:12,170 >> Így már megoldotta ezt a problémát. 673 00:30:12,170 --> 00:30:16,040 Sajnos, amikor fut a program ebben a formában, akkor valójában nem csere 674 00:30:16,040 --> 00:30:17,700 érték. 675 00:30:17,700 --> 00:30:18,950 De egyértelmű, miért? 676 00:30:23,420 --> 00:30:26,310 Én rögzíteni a logikai problémát csak egy pillanattal ezelőtt. 677 00:30:26,310 --> 00:30:31,150 De ismétlem, ha futtatni ezt a programot, az x és y változatlan marad végére 678 00:30:31,150 --> 00:30:33,834 a program végrehajtását. 679 00:30:33,834 --> 00:30:34,760 [Hallhatatlan] 680 00:30:34,760 --> 00:30:36,030 DAVID J. Malan: Szóval már nem tért vissza semmit. 681 00:30:36,030 --> 00:30:36,960 Szóval ez igaz. 682 00:30:36,960 --> 00:30:39,880 De kiderült, hogy van egy kis probléma itt, mert eddig a 683 00:30:39,880 --> 00:30:42,460 egyetlen dolog, amit tudtunk, hogy visszatérjen egy dolog. 684 00:30:42,460 --> 00:30:46,540 És ez korlátozza a C. Egyszerre csak vissza igazán egy érték, 685 00:30:46,540 --> 00:30:48,970 ebben az esetben én vagyok a fajta itt ragadtunk 686 00:30:48,970 --> 00:30:51,805 mert tudtam vissza az új érték az x, illetve tudtam vissza a 687 00:30:51,805 --> 00:30:53,160 új érték y. 688 00:30:53,160 --> 00:30:54,330 De azt akarom, mindkettő vissza. 689 00:30:54,330 --> 00:30:58,010 Tehát visszatérve nem az egyszerű megoldás van. 690 00:30:58,010 --> 00:30:59,770 De a probléma alapvetően az oka? 691 00:30:59,770 --> 00:31:03,270 Mit értünk tulajdonképpen elcserélték? 692 00:31:03,270 --> 00:31:04,010 a és b. 693 00:31:04,010 --> 00:31:07,670 De a és b másolatai x és y, ami azt jelenti, hogy csak tette mindezt 694 00:31:07,670 --> 00:31:10,080 munka - mi most töltöttem, mint három perc alatt beszél a csere 695 00:31:10,080 --> 00:31:11,680 funkciója és mindhárom változó. 696 00:31:11,680 --> 00:31:15,090 És ez nagyszerű, tökéletesen helyes elszigetelten. 697 00:31:15,090 --> 00:31:20,230 De a és b hatáskörét csupán ezeket a sorokat itt. 698 00:31:20,230 --> 00:31:24,130 Szóval, mint egy for ciklus, ha kijelentem integer i belül a 699 00:31:24,130 --> 00:31:27,400 loop - hasonlóképpen, ha nyilvánításáról és b belsejében, hogy a funkció 700 00:31:27,400 --> 00:31:30,550 írtál, ők csak akkor érvényes belül ezt a funkciót. 701 00:31:30,550 --> 00:31:35,020 Ami azt jelenti, amint csere történik végrehajtó és megyünk sorból a 24 702 00:31:35,020 --> 00:31:38,380 25 vezetéken, X és Y jelentése nem változott. 703 00:31:38,380 --> 00:31:42,580 Te csak elpazarolt egy csomó időt cseréje példányban változók. 704 00:31:42,580 --> 00:31:46,490 >> Így kiderül, hogy a megoldást, ez valójában nem nyilvánvaló. 705 00:31:46,490 --> 00:31:49,210 Ez nem teljesen elegendő visszatérni értékeket, mert tudjuk 706 00:31:49,210 --> 00:31:50,320 csak egy értéket ad vissza. 707 00:31:50,320 --> 00:31:53,370 És én tényleg szeretnék cserélni mind x és y ugyanabban az időben. 708 00:31:53,370 --> 00:31:55,020 Így fogunk visszatérni ehhez. 709 00:31:55,020 --> 00:31:58,770 De most észre, hogy a kérdés alapvetően abból fakad, 710 00:31:58,770 --> 00:32:00,660 hogy a és b másolatok. 711 00:32:00,660 --> 00:32:03,450 És itt a saját körét. 712 00:32:03,450 --> 00:32:04,980 Nos, próbáljuk meg megoldani ezt valamilyen módon. 713 00:32:04,980 --> 00:32:09,200 Hadd ténylegesen lépjünk vissza, és nyissa fel, mondjuk, a negyedik változat 714 00:32:09,200 --> 00:32:11,170 E, buggy4. 715 00:32:11,170 --> 00:32:13,230 És mi van ezzel? 716 00:32:13,230 --> 00:32:16,690 Ez egy hasonló, de egyszerűbb probléma, hogy nézd meg, mielőtt veszünk egy stab 717 00:32:16,690 --> 00:32:17,530 megoldására. 718 00:32:17,530 --> 00:32:19,440 Ez a program az úgynevezett növekmény. 719 00:32:19,440 --> 00:32:24,320 És ez nyilvánvalóan inicializálja az x értéke 1-et a 18 vezetéken. 720 00:32:24,320 --> 00:32:25,950 Aztán igénypont x 1 lehet. 721 00:32:25,950 --> 00:32:28,020 Aztán állítás növelésével, pont, pont, pont. 722 00:32:28,020 --> 00:32:29,460 Én majd hívja növekmény. 723 00:32:29,460 --> 00:32:33,480 De aztán a vonalak 22 és 23, azt állítják, ez már növekszik. 724 00:32:33,480 --> 00:32:37,780 Azt állítják, x ma bármi is az, 2 feltehetőleg. 725 00:32:37,780 --> 00:32:39,770 >> De ez a program hibás. 726 00:32:39,770 --> 00:32:41,020 Mi a baj? 727 00:32:43,450 --> 00:32:44,418 Igen? 728 00:32:44,418 --> 00:32:45,668 [Hallhatatlan] 729 00:32:49,260 --> 00:32:49,850 DAVID J. Malan: Pontosan. 730 00:32:49,850 --> 00:32:52,430 Tehát x nyilvánították nyilvánvalóan on line 18. 731 00:32:52,430 --> 00:32:54,410 Ez a belső fontosabb a kapcsos zárójeleket. 732 00:32:54,410 --> 00:32:58,470 Tehát az egyszerű válasz az, hogy, nos, x létezik itt. 733 00:32:58,470 --> 00:33:01,510 Nem létezik a sorban 32. 734 00:33:01,510 --> 00:33:03,710 Szóval, ez a program valójában nem is összeállít. 735 00:33:03,710 --> 00:33:07,910 A fordító, amikor megpróbálom összeállításakor ezt a kódot, fog kiabálni velem 736 00:33:07,910 --> 00:33:13,190 néhány be nem jelentett azonosítója vagy valami ebben az értelemben. 737 00:33:13,190 --> 00:33:13,870 Tény, hogy próbáljuk meg. 738 00:33:13,870 --> 00:33:15,235 Ez teszi buggy4. 739 00:33:17,780 --> 00:33:18,190 Ott van. 740 00:33:18,190 --> 00:33:22,030 A be nem jelentett azonosító x sorban 32. 741 00:33:22,030 --> 00:33:25,700 És valóban, legyünk kifejezettebben ma itt, hogy ez hasznos 742 00:33:25,700 --> 00:33:27,140 nyitvatartási és otthon. 743 00:33:27,140 --> 00:33:29,000 Figyelje meg, hogy ez egy kicsit rejtélyesen írva. 744 00:33:29,000 --> 00:33:31,560 De az a tény, hogy a csengés már kiabált nekünk, mondván: 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, valóban hasznos. 746 00:33:36,970 --> 00:33:41,970 Ez azt jelenti, hogy a hiba a vonalon a 32 karakter helyzetben öt. 747 00:33:41,970 --> 00:33:44,670 Így egy, kettő, három, négy, öt. 748 00:33:44,670 --> 00:33:46,640 Ez, ugyanis, ahol a probléma. 749 00:33:46,640 --> 00:33:49,710 És azt is szem előtt tartani, a munkaidőn és otthoni Szerencsés vagyok itt. 750 00:33:49,710 --> 00:33:50,740 Van egy hibát. 751 00:33:50,740 --> 00:33:52,660 Ez lesz viszonylag könnyen kijavítani. 752 00:33:52,660 --> 00:33:56,220 De ha egy egész képernyő teljes elsöprő hibaüzenetek újra, 753 00:33:56,220 --> 00:33:59,240 észre, hogy a legalsó 1, hogy csak tünete 754 00:33:59,240 --> 00:34:00,320 a legfelső is. 755 00:34:00,320 --> 00:34:03,560 Tehát mindig üldözőbe le a hibákat fentről lefelé. 756 00:34:03,560 --> 00:34:06,720 Mert lehet, hogy csak egy láncba miszerint javasol Ön 757 00:34:06,720 --> 00:34:09,030 már sokkal több problémát, mint amennyit ténylegesen. 758 00:34:09,030 --> 00:34:14,989 >> Szóval, hogyan tudnánk kijavítani ezt, ha a cél az, hogy növelni x? 759 00:34:14,989 --> 00:34:15,370 Mi ez? 760 00:34:15,370 --> 00:34:15,620 Oké. 761 00:34:15,620 --> 00:34:16,679 Tehát tudjuk, hogy x globális. 762 00:34:16,679 --> 00:34:18,860 Vegyük a parancsikont, hogy figyelmeztetett korábban. 763 00:34:18,860 --> 00:34:20,550 De a fene, csak kell egy gyors javítást. 764 00:34:20,550 --> 00:34:23,949 Tehát mondjuk int x itt. 765 00:34:23,949 --> 00:34:25,600 Ez teszi x globális. 766 00:34:25,600 --> 00:34:28,460 Tehát most fő fér hozzá. 767 00:34:28,460 --> 00:34:31,780 És növekmény fér hozzá. 768 00:34:31,780 --> 00:34:33,860 És hadd menjen előre, és fordítsd ezt most. 769 00:34:33,860 --> 00:34:36,330 Győződjön buggy4, Enter. 770 00:34:36,330 --> 00:34:37,440 Úgy tűnik összeállításához most. 771 00:34:37,440 --> 00:34:40,949 Fussunk buggy4, és úgy tűnik, hogy valóban működik. 772 00:34:40,949 --> 00:34:42,780 Most ez az egyik ezeket a dolgokat - 773 00:34:42,780 --> 00:34:45,870 tedd, amit mondok, nem tudom, mert épp most végeztem itt. 774 00:34:45,870 --> 00:34:49,239 Mert általában a programokat fog kapni sokkal érdekesebb és 775 00:34:49,239 --> 00:34:50,440 sokkal hosszabb, mint ez. 776 00:34:50,440 --> 00:34:53,199 És ha a megoldást az élet problémáira csak ah, tegye az összes 777 00:34:53,199 --> 00:34:57,550 változók a tetején a fájl nagyon gyorsan tegye programok kap 778 00:34:57,550 --> 00:34:59,700 horrifically nehéz kezelni. 779 00:34:59,700 --> 00:35:02,050 Egyre nehezebb kitalálni új változó nevét. 780 00:35:02,050 --> 00:35:05,240 Egyre nehezebb megérteni, hogy mit változó mit csinál. 781 00:35:05,240 --> 00:35:08,250 >> És így általában, ez nem egy jó megoldás. 782 00:35:08,250 --> 00:35:09,780 Szóval ezt jobban. 783 00:35:09,780 --> 00:35:11,920 Nem akarjuk, hogy egy globális változót itt. 784 00:35:11,920 --> 00:35:14,050 Én szeretnék növelni x. 785 00:35:14,050 --> 00:35:16,050 Szóval tudtam nyilvánvalóan - 786 00:35:16,050 --> 00:35:18,450 a végén a nap, ez a fajta ostoba történetet, mert mi csak ezt. 787 00:35:18,450 --> 00:35:22,050 De ha nem tudtam róla üzemben, vagy én nem volt szabad 788 00:35:22,050 --> 00:35:27,700 változtassa meg a fő önmagában, hogyan mást tehettem volna végre Ken ide, ez a 789 00:35:27,700 --> 00:35:31,450 ideig nem kocka, hanem növelni? 790 00:35:31,450 --> 00:35:32,700 Hogyan módosítható ez a dolog itt? 791 00:35:32,700 --> 00:35:33,025 Igen. 792 00:35:33,025 --> 00:35:34,275 [Hallhatatlan] 793 00:35:37,430 --> 00:35:38,000 DAVID J. Malan: Oké, jó. 794 00:35:38,000 --> 00:35:40,490 Akkor miért nem adom át az x? 795 00:35:40,490 --> 00:35:44,390 És akkor ahelyett, vissza, miért nem csak ezt return x + 1? 796 00:35:44,390 --> 00:35:46,370 Most, egy pár dolgot meg kell változtatni itt. 797 00:35:46,370 --> 00:35:47,530 Én vagyok a jó úton halad. 798 00:35:47,530 --> 00:35:48,910 Mit kell tennem, hogy csípés? 799 00:35:48,910 --> 00:35:49,470 Valaki más. 800 00:35:49,470 --> 00:35:49,882 Igen? 801 00:35:49,882 --> 00:35:51,530 [Hallhatatlan] 802 00:35:51,530 --> 00:35:53,520 DAVID J. Malan: Meg kell változtatni a visszatérési típus növekmény 803 00:35:53,520 --> 00:35:54,590 mert nem érvényteleníti. 804 00:35:54,590 --> 00:35:56,650 Void semmit nem jelent ez, hogy visszatért. 805 00:35:56,650 --> 00:35:57,600 Világos azonban, hogy most ez. 806 00:35:57,600 --> 00:36:01,280 Szóval meg kell változtatnia, hogy int összhangban kell lennie bármilyen 807 00:36:01,280 --> 00:36:02,580 Én tényleg visszatér. 808 00:36:02,580 --> 00:36:04,580 >> Most valami mást még hibás itt van. 809 00:36:04,580 --> 00:36:04,982 Igen? 810 00:36:04,982 --> 00:36:06,590 [Hallhatatlan] 811 00:36:06,590 --> 00:36:07,630 DAVID J. Malan: Tehát azt kell növelni x? 812 00:36:07,630 --> 00:36:10,336 [Hallhatatlan] 813 00:36:10,336 --> 00:36:11,880 DAVID J. Malan: Ah, ezért kell átadni x. 814 00:36:11,880 --> 00:36:13,300 Szóval kell, hogy ezt itt. 815 00:36:17,590 --> 00:36:19,690 Tehát a prototípus, azt kell megváltoztatni ezt itt. 816 00:36:19,690 --> 00:36:21,290 Tehát ez kell válnia int. 817 00:36:21,290 --> 00:36:22,820 Ez lesz - 818 00:36:22,820 --> 00:36:23,670 hmm. 819 00:36:23,670 --> 00:36:24,710 Igazából van egy bug idelent. 820 00:36:24,710 --> 00:36:25,780 Nézzük erősít ez egy első. 821 00:36:25,780 --> 00:36:27,990 Mi ez valójában? 822 00:36:27,990 --> 00:36:29,330 Szóval ez van, hogy egy int valamit. 823 00:36:29,330 --> 00:36:30,340 Lehet x. 824 00:36:30,340 --> 00:36:33,120 De őszintén szólva, ha elkezdesz hívja az összes változó x, ez fog kapni 825 00:36:33,120 --> 00:36:35,250 kevésbé világos, hogy melyik melyik. 826 00:36:35,250 --> 00:36:38,210 Szóval csak önkényesen válasszon másik elnevezési for my 827 00:36:38,210 --> 00:36:40,220 segítő funkciók, a funkciók írok. 828 00:36:40,220 --> 00:36:41,100 Hívjuk meg a. 829 00:36:41,100 --> 00:36:44,500 Vagy lehetne nevezni - nevezzük even_number, hogy még világosabbá tegye. 830 00:36:44,500 --> 00:36:47,610 Így aztán vissza kell térni függetlenül a szám plusz 1. 831 00:36:47,610 --> 00:36:49,720 És most meg kell változtatni egy dolog ide és egy 832 00:36:49,720 --> 00:36:50,700 más dolog itt. 833 00:36:50,700 --> 00:36:54,150 Mit kell változtatni jarat: 21 az első? 834 00:36:54,150 --> 00:36:55,390 El kell rendelni, hogy x. 835 00:36:55,390 --> 00:36:57,480 Szóval nem lehet csak hívni növekmény x. 836 00:36:57,480 --> 00:37:01,000 Meg kell emlékezni a választ a változó értéke x az 837 00:37:01,000 --> 00:37:02,020 a bal oldalon. 838 00:37:02,020 --> 00:37:04,930 És bár x most a bal és a jobb, ez teljesen jó, mert 839 00:37:04,930 --> 00:37:08,370 a jobb oldali kerül végrehajtásra, az első, majd kerül lehuppant a baloldali 840 00:37:08,370 --> 00:37:10,240 kéz dolog, x ebben az esetben. 841 00:37:10,240 --> 00:37:11,900 És végül, ez egy egyszerű fix most. 842 00:37:11,900 --> 00:37:15,080 Ez csak a meccsek, mi lent. 843 00:37:15,080 --> 00:37:17,120 Int. szám. 844 00:37:17,120 --> 00:37:17,320 >> Rendben van. 845 00:37:17,320 --> 00:37:20,290 Szóval egy csomó változás egy igazán hülye funkciót. 846 00:37:20,290 --> 00:37:24,250 De a reprezentatív dolog, hogy mi lesz egyre inkább szeretnénk csinálni. 847 00:37:24,250 --> 00:37:25,490 Tehát, hogy buggy4. 848 00:37:25,490 --> 00:37:26,485 Már elcsesztem valahol. 849 00:37:26,485 --> 00:37:27,520 Ó, istenem. 850 00:37:27,520 --> 00:37:29,660 Öt hibák, mondjuk, egy hat-line program. 851 00:37:29,660 --> 00:37:36,500 Szóval, mi a baj a 18. sor, karakter 5? 852 00:37:36,500 --> 00:37:36,970 Rendben van. 853 00:37:36,970 --> 00:37:39,330 Szóval ezt bejelenteni int. 854 00:37:39,330 --> 00:37:39,630 Rendben van. 855 00:37:39,630 --> 00:37:41,790 Tehát lássuk, egy csomó egyéb hibákat. 856 00:37:41,790 --> 00:37:42,230 Istenem. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 De ismétlem, nézzük csak törölje a képernyőt - 859 00:37:46,020 --> 00:37:48,660 Ellenőrző L itt - és újra-run csenget. 860 00:37:48,660 --> 00:37:51,340 Tehát 5 probléma valójában csak az egyik. 861 00:37:51,340 --> 00:37:53,500 Tehát most fussunk buggy4, Enter. 862 00:37:53,500 --> 00:37:54,150 Hú. 863 00:37:54,150 --> 00:37:57,434 x lett eggyel helyesen. 864 00:37:57,434 --> 00:37:58,420 >> Rendben van. 865 00:37:58,420 --> 00:38:01,700 Van még kérdése, hogy hogyan növekmény számok? 866 00:38:01,700 --> 00:38:02,896 Igen? 867 00:38:02,896 --> 00:38:06,864 SPEAKER 2: Miért van az, hogy ha csak változtatni x számot a változó 868 00:38:06,864 --> 00:38:08,860 nevét és akkor tudod, mit jelent? 869 00:38:08,860 --> 00:38:09,600 DAVID J. Malan: Jó kérdés. 870 00:38:09,600 --> 00:38:13,130 Hogy van az, hogy én is csak megváltoztatni x számra, és a program tudni fogja, 871 00:38:13,130 --> 00:38:13,990 azonnal? 872 00:38:13,990 --> 00:38:16,120 Szóval újra gondolni rá, mint e absztrakció. 873 00:38:16,120 --> 00:38:20,110 Szóval, ha én vagyok a fő-és Ken inkrementális, őszintén, nem is érdekel 874 00:38:20,110 --> 00:38:21,540 amit Ken hívja a iPad. 875 00:38:21,540 --> 00:38:25,350 Nem érdekel, amit ő semmit, hogy köze van a végrehajtás 876 00:38:25,350 --> 00:38:26,550 ezt a funkciót. 877 00:38:26,550 --> 00:38:32,130 Tehát ez egy olyan végrehajtási részlet, hogy én, a fő, nem 878 00:38:32,130 --> 00:38:33,010 kell törődnünk. 879 00:38:33,010 --> 00:38:37,440 És így egyszerűen csak a változó következetesen belsejében a függvény, a szám itt 880 00:38:37,440 --> 00:38:41,340 száma és itt, már kész is van, amíg én újrafordítani. 881 00:38:41,340 --> 00:38:43,820 Ez a fajta, mint ha belegondolsz - sokan közülünk, azok, a vezető 882 00:38:43,820 --> 00:38:46,590 engedélyek, akik már hajtott, vagy ha már akár hajtott egy autó - 883 00:38:46,590 --> 00:38:50,710 legtöbbünknek fogalma sincs, hogyan működik egy autó a motorháztető alatt. 884 00:38:50,710 --> 00:38:54,710 És szó szerint, ha megnyitja a motorháztető, a legtöbben - magamat is beleértve - 885 00:38:54,710 --> 00:38:56,580 nem fognak igazán tudom, mit keresünk. 886 00:38:56,580 --> 00:38:58,850 Mintha úgy érezheti, a dolgok, mint ez most. 887 00:38:58,850 --> 00:39:01,380 De nem igazán érdekel, hogy hogyan kell az autó működik. 888 00:39:01,380 --> 00:39:05,000 Nem érdekel, hogy mit kell az összes botok és dugattyúk és kábelek belsejében 889 00:39:05,000 --> 00:39:07,700 az autó ténylegesen csinál. 890 00:39:07,700 --> 00:39:11,360 >> Szóval, valami hasonlót, amit úgy hívnak a dugattyú nem számít 891 00:39:11,360 --> 00:39:11,920 itt ebben az esetben. 892 00:39:11,920 --> 00:39:12,490 Same ötlet. 893 00:39:12,490 --> 00:39:12,670 Igen? 894 00:39:12,670 --> 00:39:13,920 [Hallhatatlan] 895 00:39:25,250 --> 00:39:29,530 DAVID J. Malan: Ha több felhasználási változó xa perccel ezelőtt 896 00:39:29,530 --> 00:39:32,220 te, a programozó, kellene megváltoztatni őket mindenhol. 897 00:39:32,220 --> 00:39:35,230 Vagy tudnál csinálni szó Fájl menü, majd a Keresés / Csere 898 00:39:35,230 --> 00:39:36,270 valami ilyesmi. 899 00:39:36,270 --> 00:39:40,110 De meg kell majd tenni ezeket a változtatásokat magad. 900 00:39:40,110 --> 00:39:41,200 Meg kell lennie. 901 00:39:41,200 --> 00:39:42,450 [Hallhatatlan] 902 00:39:47,200 --> 00:39:48,960 DAVID J. Malan: A fontossági sorrendben, mint itt? 903 00:39:48,960 --> 00:39:52,660 Ha ez int egy másik számot? 904 00:39:52,660 --> 00:39:52,940 Igen. 905 00:39:52,940 --> 00:39:56,430 Szóval, hogy számít, ha a funkció meghívása. 906 00:39:56,430 --> 00:40:00,350 Tehát, ha én hívó növekmény itt valami vesszővel valamit, 907 00:40:00,350 --> 00:40:01,400 van egy közvetlen leképezés. 908 00:40:01,400 --> 00:40:04,490 Az első változó, bármi is hívják, készül egy példányát az első 909 00:40:04,490 --> 00:40:05,480 érv ide. 910 00:40:05,480 --> 00:40:07,280 Sajnáljuk, de ez nem lehet egy zárójelet. 911 00:40:07,280 --> 00:40:09,300 A második érv egy vonalban áll a második. 912 00:40:09,300 --> 00:40:11,220 >> Így annak érdekében, igen, számít. 913 00:40:11,220 --> 00:40:11,490 Rendben van. 914 00:40:11,490 --> 00:40:13,360 Sajnálom, hogy vett egy hosszú utat kell eljutni oda. 915 00:40:13,360 --> 00:40:14,610 Egyéb kérdés? 916 00:40:16,460 --> 00:40:16,850 Rendben van. 917 00:40:16,850 --> 00:40:20,300 Tehát lássuk, ha nem tudjuk festeni a képet, hogy mi folyik itt valójában 918 00:40:20,300 --> 00:40:22,160 van a motorháztető alatt, hogy úgy mondjam. 919 00:40:22,160 --> 00:40:26,310 Tehát ez egy téglalap, amely képviseli a számítógép memóriájában. 920 00:40:26,310 --> 00:40:31,240 Tehát akkor is, ha fogalma sincs, hogyan működik a memória, vagy hogyan RAM működik, legalábbis 921 00:40:31,240 --> 00:40:33,590 feltételezzük, hogy van csokor is ezekben a napokban. 922 00:40:33,590 --> 00:40:34,740 Van megabájt is. 923 00:40:34,740 --> 00:40:35,760 Van gigabyte meg. 924 00:40:35,760 --> 00:40:40,690 És tudjuk, hogy a hét nulla byte éppen mi? 925 00:40:40,690 --> 00:40:41,280 8 bit. 926 00:40:41,280 --> 00:40:42,730 Rendben, tehát 8 nullák és egyesek. 927 00:40:42,730 --> 00:40:46,300 Tehát ha a számítógép rendelkezik koncert RAM, 2 giga RAM ezekben a napokban, van egy 928 00:40:46,300 --> 00:40:54,450 milliárd vagy 2 milliárd bájt memóriával, vagy durván 8 milliárd 16000000000 929 00:40:54,450 --> 00:40:56,560 bit, belsejében a számítógépen. 930 00:40:56,560 --> 00:40:59,710 Most, ellentétben a kis gyapjas Willy például, ez nem mágneses részecskék 931 00:40:59,710 --> 00:41:00,560 jellemzően többé. 932 00:41:00,560 --> 00:41:04,470 Egyre inkább a laptopok legalább ez szilárdtest-meghajtók, SSD, hogy a 933 00:41:04,470 --> 00:41:05,560 Csak még nem tartalmaz mozgó alkatrészeket. 934 00:41:05,560 --> 00:41:06,710 Ez mind elektronikus. 935 00:41:06,710 --> 00:41:08,070 Ez az összes villamosenergia-alapú. 936 00:41:08,070 --> 00:41:12,360 Ezért gondolom, bár ennek a téglalapnak, mint csak képviseli egy vagy két 937 00:41:12,360 --> 00:41:13,930 gigabájt memória van. 938 00:41:13,930 --> 00:41:15,500 >> Szóval ez egy darab memória. 939 00:41:15,500 --> 00:41:20,460 Most a világ számítógép-tudomány egyfajta megosztjuk le darabokat 940 00:41:20,460 --> 00:41:22,570 memória különböző dolgokat. 941 00:41:22,570 --> 00:41:25,930 Így például, ha ez a számítógép RAM - ahogy azt a 942 00:41:25,930 --> 00:41:30,400 téglalap van - derült ki, hogy megegyezés, a tetején a RAM, így 943 00:41:30,400 --> 00:41:33,170 beszélni, általában az úgynevezett szöveges szegmensben. 944 00:41:33,170 --> 00:41:35,910 Ezek a nullák és egyesek, hogy már össze. 945 00:41:35,910 --> 00:41:39,040 Tehát amikor mi már megnézték a motorháztető alatt milyen a.out van, minden 946 00:41:39,040 --> 00:41:40,360 A nullák és egyesek - 947 00:41:40,360 --> 00:41:44,000 futtatásakor a program, ezek a nullák és egyesek töltik a merevlemez 948 00:41:44,000 --> 00:41:46,290 meghajtót úgynevezett RAM. 949 00:41:46,290 --> 00:41:48,950 És a RAM, ők be a tetején. 950 00:41:48,950 --> 00:41:50,330 Most közben, van más dolog. 951 00:41:50,330 --> 00:41:53,060 Inicializált adatok inicializálatlan adatok. 952 00:41:53,060 --> 00:41:56,440 A két rend memória, nézze meg a globális változók, amelyek 953 00:41:56,440 --> 00:41:57,530 nem gyakran használják. 954 00:41:57,530 --> 00:42:00,630 De néha, ha nem, akkor a végén ott is. 955 00:42:00,630 --> 00:42:01,620 Aztán ott van egy másik dolog. 956 00:42:01,620 --> 00:42:04,130 Környezeti változók, amelyet nem töltenek sok időt. 957 00:42:04,130 --> 00:42:06,120 De aztán két fontos dolog, hogy vissza fog térni az ebben 958 00:42:06,120 --> 00:42:08,130 félév, verem és a kupac. 959 00:42:08,130 --> 00:42:12,280 >> Tehát a legtöbb számítógép memóriájában van fenntartva, ha fut a program 960 00:42:12,280 --> 00:42:14,880 valamit úgynevezett stack és valami úgynevezett kupac. 961 00:42:14,880 --> 00:42:16,940 És nem fogunk beszélni a halom ma, de mi lesz 962 00:42:16,940 --> 00:42:18,180 beszélni a köteget. 963 00:42:18,180 --> 00:42:22,910 És a verem hivatott megidézni a vizuális olyan, mint az étkezőben 964 00:42:22,910 --> 00:42:26,120 étkezés tálcák Mather House, vagy bárhol megtörténhet, hogy, amennyiben a 965 00:42:26,120 --> 00:42:27,810 étkező staff tisztítsa meg őket minden nap. 966 00:42:27,810 --> 00:42:30,180 A verem őket fel emeleten fel. 967 00:42:30,180 --> 00:42:33,800 És hasonlóképpen a memóriában van, ez az ötlet hozatala valamit a 968 00:42:33,800 --> 00:42:36,740 verem, amivel valamit a stack, amivel valamit a verem. 969 00:42:36,740 --> 00:42:38,000 És mit is jelent ez? 970 00:42:38,000 --> 00:42:41,430 Nos, nagyításához csak az alsó fele ezt a képet, a számítógép 971 00:42:41,430 --> 00:42:43,990 RAM, tegyen javaslatot a következő. 972 00:42:43,990 --> 00:42:48,300 Kiderült, hogy amikor fut a program, mint a a.out vagy hello, bármi 973 00:42:48,300 --> 00:42:49,920 a program, hogy írtál, 974 00:42:49,920 --> 00:42:53,030 ismét a nullák és egyesek töltik fel a merevlemezen - ami 975 00:42:53,030 --> 00:42:56,190 hosszú távú tárolás, ott marad akkor is, ha kihúzza a dugót - 976 00:42:56,190 --> 00:42:57,220 betöltött RAM. 977 00:42:57,220 --> 00:42:59,020 RAM gyorsabb, mint a merevlemez. 978 00:42:59,020 --> 00:43:00,700 Ez kisebb, mint a merevlemezek. 979 00:43:00,700 --> 00:43:03,490 De ez az, ahol programokat élnek, miközben futsz őket. 980 00:43:03,490 --> 00:43:06,380 >> Szóval duplán kattintva a program a Mac vagy PC - ez betöltött 981 00:43:06,380 --> 00:43:07,750 merevlemezt a RAM-ba. 982 00:43:07,750 --> 00:43:11,760 Amint meg van töltve a RAM-ba, a nullák és egyesek megy az út tetején, a 983 00:43:11,760 --> 00:43:13,130 úgynevezett text szegmensben. 984 00:43:13,130 --> 00:43:17,040 De aztán, amint a program valóban elindul, a fő 985 00:43:17,040 --> 00:43:18,140 függvény. 986 00:43:18,140 --> 00:43:21,070 És a legfontosabb, ahogy láttuk, gyakran a helyi változók. 987 00:43:21,070 --> 00:43:24,560 És ez ints és vonósokra, valamint karakter és hasonlók. 988 00:43:24,560 --> 00:43:28,300 Tehát, ha a program, hogy már megírt, vagy a program, hogy van 989 00:43:28,300 --> 00:43:33,680 dupla kattintás használt bizonyos változók belsejében a fő, hogy végül a 990 00:43:33,680 --> 00:43:37,020 alján a verem a memória, hogy úgy mondjam. 991 00:43:37,020 --> 00:43:39,160 Most még konkrétabban, mit jelent ez valójában? 992 00:43:39,160 --> 00:43:44,080 Ez csak azt jelenti, hogy ha megyünk számlálni a dolgokat - 993 00:43:44,080 --> 00:43:49,380 ha megyünk száma a byte RAM a számítógép észleli, hogy 994 00:43:49,380 --> 00:43:51,650 Ez lehet byte szám nulla. 995 00:43:51,650 --> 00:43:56,130 Ez lehet az bájt számú egy, kettő, három, négy, öt, hat, Az összes 996 00:43:56,130 --> 00:43:57,290 az utat egészen hasonló - 997 00:43:57,290 --> 00:44:01,520 2 milliárd lesz egészen ott a tetején. 998 00:44:01,520 --> 00:44:05,960 Más szóval, amikor arról beszélünk, RAM memória szempontjából bájt, akkor 999 00:44:05,960 --> 00:44:09,680 csak azt jelenti, hogy valaki úgy döntött, hogy mit kell számozni egyes 1000 00:44:09,680 --> 00:44:11,110 e darabokat memória. 1001 00:44:11,110 --> 00:44:16,950 >> Tehát, ha szüksége van 32 bites egy int, vagy meg kell 8 bit egy karakter, ha 1002 00:44:16,950 --> 00:44:18,320 vajon a végén a memória? 1003 00:44:18,320 --> 00:44:20,650 Nos fogalmilag, csak a végén az alján ennek 1004 00:44:20,650 --> 00:44:21,780 nevezett dolog a köteget. 1005 00:44:21,780 --> 00:44:25,670 De mi az érdekes most, amikor fő meghív egy függvényt. 1006 00:44:25,670 --> 00:44:28,830 Tegyük fel, hogy a nevezett funkció ize, csak egy tetszőleges nevet. 1007 00:44:28,830 --> 00:44:32,480 Mi történik a fő alján van e halom memória. 1008 00:44:32,480 --> 00:44:35,630 Foo most kerül a tetején a fő memóriában. 1009 00:44:35,630 --> 00:44:40,020 Tehát a helyi változók ize van a végén egyfajta fogalmi fenti 1010 00:44:40,020 --> 00:44:40,770 ezek a fő. 1011 00:44:40,770 --> 00:44:46,920 Ha foo felhívja másik funkció nevű bárban, azokat a változókat végül itt. 1012 00:44:46,920 --> 00:44:49,790 Ha bar felhívja valami mást, itt, itt, itt. 1013 00:44:49,790 --> 00:44:53,900 Szóval, mi érdekes fut egy program, hogy ha szükséges funkciókat, 1014 00:44:53,900 --> 00:44:57,720 és mivel ezeket a funkciókat szükséges funkciókat, és mivel ezeket a funkciókat szükséges funkciókat, 1015 00:44:57,720 --> 00:45:00,980 építesz ezt stack funkciók a memóriában. 1016 00:45:00,980 --> 00:45:06,740 És csak egyszer egy függvény mit kezdeni, hogy a memória vissza. 1017 00:45:06,740 --> 00:45:11,190 Tehát az egyik legegyszerűbb módja, hogy elfogy a memória egy számítógépes programot 1018 00:45:11,190 --> 00:45:14,170 levelet funkciókat, hogy soha nem tér vissza. 1019 00:45:14,170 --> 00:45:16,650 >> Így például, most bizonyítani annyira egy 1020 00:45:16,650 --> 00:45:18,460 szándékosan hibás program. 1021 00:45:18,460 --> 00:45:24,690 Hadd menjek előre, és nem # include , int main (void). 1022 00:45:24,690 --> 00:45:31,270 És én fogom csinálni, miközben (2> 1), amely valószínűleg nem fog soha 1023 00:45:31,270 --> 00:45:33,370 változtatni minket. 1024 00:45:33,370 --> 00:45:37,720 És hadd menjen előre, és most nem printf. 1025 00:45:37,720 --> 00:45:39,950 Igazából, ez lesz kevésbé vizuálisan érdekes. 1026 00:45:39,950 --> 00:45:40,460 Csináljuk ezt. 1027 00:45:40,460 --> 00:45:44,840 For int (i = 0; i> 0). 1028 00:45:44,840 --> 00:45:49,740 Nézzük, hogy ezt a hibát, i + +. 1029 00:45:49,740 --> 00:45:51,150 És ne printf itt. 1030 00:45:51,150 --> 00:45:52,550 Nézzük gyakorlatban mit prédikált. 1031 00:45:52,550 --> 00:45:54,090 Nézzünk egy módszer. 1032 00:45:54,090 --> 00:46:00,860 Void kórus, és mi mondjuk int i. 1033 00:46:00,860 --> 00:46:02,295 És akkor fogok mondani, printf - 1034 00:46:04,871 --> 00:46:06,790 oh, tegyük ezt sokkal érdekesebb. 1035 00:46:06,790 --> 00:46:08,350 Nézzük valójában nem nyomtat semmit. 1036 00:46:08,350 --> 00:46:10,530 Nézzük csak ezt. 1037 00:46:10,530 --> 00:46:11,780 Kórus (i). 1038 00:46:16,630 --> 00:46:17,000 >> Rendben van. 1039 00:46:17,000 --> 00:46:20,040 Szóval ez hibás, mert miért? 1040 00:46:20,040 --> 00:46:22,850 Én találtam ki, ahogy megy, mert a program valójában nem csinál semmit 1041 00:46:22,850 --> 00:46:23,420 érdekes. 1042 00:46:23,420 --> 00:46:24,670 De nem ez a cél. 1043 00:46:24,670 --> 00:46:30,440 A cél az, hogy írjon egy programot, amelynek fő funkciója mit csinál, úgy tűnik? 1044 00:46:30,440 --> 00:46:31,370 Hívjon magát. 1045 00:46:31,370 --> 00:46:32,600 És valóban, nem kell a hurok. 1046 00:46:32,600 --> 00:46:36,070 Nézzük még egyszerűsítése csak azért, hogy ne veszítsük szem elől, hogy valóban a 1047 00:46:36,070 --> 00:46:37,310 alapvető hiba. 1048 00:46:37,310 --> 00:46:39,200 Main felhívja kórus énekelni valami kórus. 1049 00:46:39,200 --> 00:46:41,760 Aztán csináltam valami hülyeséget, és volt kórus hívás kórus, mert azt feltételeztem, 1050 00:46:41,760 --> 00:46:43,550 valaki akarta végrehajtására talán. 1051 00:46:43,550 --> 00:46:45,960 És most ez nem fog fordítani még. 1052 00:46:45,960 --> 00:46:48,340 Azt kell, hogy mit csináljon? 1053 00:46:48,340 --> 00:46:49,700 Szükségem van a prototípus, emlékszem. 1054 00:46:49,700 --> 00:46:55,520 Szóval kell, hogy ide void kórus (int i). 1055 00:46:55,520 --> 00:46:57,470 >> Tehát most, ha én lemegyek ide - 1056 00:46:57,470 --> 00:46:59,030 valójában, hadd használja a nagyobb ablakban. 1057 00:46:59,030 --> 00:47:01,670 Menjünk előre, és hogy a kórus. 1058 00:47:01,670 --> 00:47:06,000 Menjünk előre, és hogy a kórus. 1059 00:47:06,000 --> 00:47:08,302 Használata azonosítatlan felvevő i. 1060 00:47:08,302 --> 00:47:09,860 Ó, ez hülyeség volt. 1061 00:47:09,860 --> 00:47:11,020 Nem kell az érvet. 1062 00:47:11,020 --> 00:47:13,680 Nézzük csak ezt. 1063 00:47:13,680 --> 00:47:14,550 Bárcsak mi kezdte így. 1064 00:47:14,550 --> 00:47:16,160 Nem lett volna sokkal könnyebb programot írni. 1065 00:47:16,160 --> 00:47:20,100 Tehát ott. 1066 00:47:20,100 --> 00:47:23,870 Most menjünk át a terminál ablak, re-run csenget. 1067 00:47:23,870 --> 00:47:26,900 És itt is vagyunk. 1068 00:47:26,900 --> 00:47:28,020 Ez nagyon gyors. 1069 00:47:28,020 --> 00:47:30,690 Mi valójában csak történt, igaz? 1070 00:47:30,690 --> 00:47:33,430 Nos, most fogok hozzá a nyomtatási sort, így látjuk. 1071 00:47:33,430 --> 00:47:41,330 Akkor hadd mondjam printf, mondjuk, itt vagyok. 1072 00:47:41,330 --> 00:47:43,470 Oké, nincs változó, akkor hagyjuk így. 1073 00:47:43,470 --> 00:47:44,860 Hadd futtassa újra tenni. 1074 00:47:44,860 --> 00:47:47,940 Hadd újra futni kórus. 1075 00:47:47,940 --> 00:47:51,235 És gyerünk. 1076 00:47:53,880 --> 00:47:55,130 Folytasd. 1077 00:47:57,630 --> 00:47:59,750 Mint félretéve, miért nem zuhant még? 1078 00:47:59,750 --> 00:48:02,050 A szegmentációs hiba történt szupergyors előtt. 1079 00:48:02,050 --> 00:48:04,250 [Hallhatatlan] 1080 00:48:04,250 --> 00:48:04,830 DAVID J. Malan: Pontosan. 1081 00:48:04,830 --> 00:48:06,350 Tehát idő kell nyomtatni. 1082 00:48:06,350 --> 00:48:08,370 Ez csak úgy több munkát a számítógép részét. 1083 00:48:08,370 --> 00:48:09,550 És ott is van. 1084 00:48:09,550 --> 00:48:10,620 Szegmentálás hiba. 1085 00:48:10,620 --> 00:48:12,140 >> Szóval észre, hogy milyen gyorsan programok futtatása. 1086 00:48:12,140 --> 00:48:14,110 Ha nem nyomtat semmit, szuper gyors. 1087 00:48:14,110 --> 00:48:18,100 De még mindig van ez a szegmens hiba, mert mi történik? 1088 00:48:18,100 --> 00:48:21,310 Nos, ha úgy gondolja, arról, hogy a számítógép memóriája megállapított, a 1089 00:48:21,310 --> 00:48:22,890 történetesen fő. 1090 00:48:22,890 --> 00:48:23,800 De itt - 1091 00:48:23,800 --> 00:48:28,670 hívjuk csak ezt a kórus, és hívjuk ezt a kórus. 1092 00:48:28,670 --> 00:48:33,420 És most, ha én azon vagyok, esztétika van, ez csak fog mondani refrén, 1093 00:48:33,420 --> 00:48:38,060 kórus, kórus, kórus, kórus, kórus, kórus, hirdetés nauseum. 1094 00:48:38,060 --> 00:48:39,920 És végül, mi fog történni? 1095 00:48:39,920 --> 00:48:46,690 Ha a nagy képet szó ez, mi történik, csak fogalmilag? 1096 00:48:46,690 --> 00:48:48,320 A stack túllépése a kupac. 1097 00:48:48,320 --> 00:48:52,400 Vagy ami még rosszabb, csak túllépését mindent, beleértve a szöveget szegmens, amely 1098 00:48:52,400 --> 00:48:54,530 A nullák és egyesek, hogy képviselje a program. 1099 00:48:54,530 --> 00:48:56,690 Röviden, ez csak szuper, szuper rossz. 1100 00:48:56,690 --> 00:48:56,860 Igaz? 1101 00:48:56,860 --> 00:48:58,620 A program nőttek ki az ellenőrzés alól. 1102 00:48:58,620 --> 00:49:02,840 Te így több memóriát használ, mint amennyit tervezett mindez azért, mert egy hülye 1103 00:49:02,840 --> 00:49:03,920 hibát, ebben az esetben. 1104 00:49:03,920 --> 00:49:08,160 Vagy ebben az esetben, egy nagyon tudatosan végzett funkció nevezte magát. 1105 00:49:08,160 --> 00:49:09,210 Most ez még nem minden rossz. 1106 00:49:09,210 --> 00:49:12,540 Funkciók nevezik magukat valójában nagy teljesítmény 1107 00:49:12,540 --> 00:49:13,700 ha használják azt. 1108 00:49:13,700 --> 00:49:15,650 Én nem használtam helyesen ide. 1109 00:49:15,650 --> 00:49:16,940 >> Szóval ez nem minden rossz. 1110 00:49:16,940 --> 00:49:20,620 De az a tény, hogy én valójában sosem hagyja abba hív magam alapvető 1111 00:49:20,620 --> 00:49:23,050 gyengesége itt ezt a programot. 1112 00:49:23,050 --> 00:49:25,090 Szóval, hová megyünk mindezt? 1113 00:49:25,090 --> 00:49:26,230 Nos, mi történik valójában? 1114 00:49:26,230 --> 00:49:30,010 Amikor hívja a növekmény funkció, mint mi csinálunk az említett példák 1115 00:49:30,010 --> 00:49:33,290 Nekem van egy érték, mint 1, hogy átadom be 1116 00:49:33,290 --> 00:49:35,820 Elmegyek egy példányát az első számú. 1117 00:49:35,820 --> 00:49:37,080 Tehát a következő történik. 1118 00:49:37,080 --> 00:49:40,390 Akkor menjünk be a növekmény példa. 1119 00:49:40,390 --> 00:49:44,230 És ez a fickó jog ide. 1120 00:49:44,230 --> 00:49:46,800 Tehát itt van, mi történik valójában. 1121 00:49:46,800 --> 00:49:50,770 Amikor felhívtam növedék, és átadom az x, piktogramokat ábrázoló mi 1122 00:49:50,770 --> 00:49:53,660 megy itt van ez - 1123 00:49:53,660 --> 00:50:00,240 ha van értéke 1 tárolják itt, és én tényleg hívni növedék, amely 1124 00:50:00,240 --> 00:50:02,680 most hívott kórus - 1125 00:50:02,680 --> 00:50:04,010 Igen, ez dobott le engem ide. 1126 00:50:04,010 --> 00:50:06,750 Így hívjuk ezt a növekmény. 1127 00:50:06,750 --> 00:50:09,420 És nem tudom, mi ez a következő funkció lesz. 1128 00:50:09,420 --> 00:50:14,270 Szóval, mi is történik itt van valahol a fő, van egy darab 1129 00:50:14,270 --> 00:50:16,670 memória tárolja az 1-es szám. 1130 00:50:16,670 --> 00:50:19,730 Amikor hívom növedék, én egy másik darabja a memóriát, de most már 1131 00:50:19,730 --> 00:50:20,840 van másolat 1. 1132 00:50:20,840 --> 00:50:25,480 Amikor növeljük ezt az értéket, ez lesz 2 - rettenetesen írt 1133 00:50:25,480 --> 00:50:26,420 képernyő van. 1134 00:50:26,420 --> 00:50:30,550 De akkor mi történik, amint a növekedés visszatér? 1135 00:50:30,550 --> 00:50:34,610 Ez a memória csak gets adta vissza az operációs rendszer, ami azt jelenti, az összes 1136 00:50:34,610 --> 00:50:37,470 tettél semmi hasznos. 1137 00:50:37,470 --> 00:50:43,460 Az egyik, hogy eredetileg szereplő fő továbbra is ténylegesen ott van. 1138 00:50:43,460 --> 00:50:44,650 >> Szóval, hová megyünk ezzel? 1139 00:50:44,650 --> 00:50:49,400 Nos, kiderült, hogy a memóriában van ez back to back sorozat 1140 00:50:49,400 --> 00:50:50,940 bájtok berakhatja stuff be 1141 00:50:50,940 --> 00:50:53,760 És kiderül, hogy már láttam valamit, ami magában foglalja üzembe 1142 00:50:53,760 --> 00:50:55,100 dolgok, háttal hátra hátra. 1143 00:50:55,100 --> 00:51:00,170 Mi egy string alapján heti egy és most heti kettő? 1144 00:51:00,170 --> 00:51:01,840 Tehát ez csak egy gyűjtemény a karakter. 1145 00:51:01,840 --> 00:51:05,290 Szóval kiderült, ahogy akkor tegye számokat a memóriában, hasonlóképpen akkor 1146 00:51:05,290 --> 00:51:06,900 be karaktereket a memóriában. 1147 00:51:06,900 --> 00:51:09,810 És amint kezdjük üzembe karakterek a memóriában háttal való visszatéréshez 1148 00:51:09,810 --> 00:51:12,800 vissza, kiderül, hogy a legegyszerűbb dolgok, mint a for ciklus vagy 1149 00:51:12,800 --> 00:51:14,510 a while ciklus, akkor navigálhat - 1150 00:51:14,510 --> 00:51:17,130 balról jobbra az egy karakterlánc karaktereinek - 1151 00:51:17,130 --> 00:51:20,720 és meg kell kezdeni masszírozó azokat különböző karakter összesen. 1152 00:51:20,720 --> 00:51:25,550 A válhat B. B válhat C. Szóval, hogy végül, tudjuk vállalni a 1153 00:51:25,550 --> 00:51:28,830 Angol mondat, hogy valóban van értelme és átalakítani minden egyes ilyen 1154 00:51:28,830 --> 00:51:32,440 betűket egyesével haladva végig a számítógép memóriájában maradt 1155 00:51:32,440 --> 00:51:34,300 jogot, hogy ténylegesen titkosítja. 1156 00:51:34,300 --> 00:51:36,590 >> Akkor nézzük az öt perces szünet van, és mikor jön vissza, akkor 1157 00:51:36,590 --> 00:51:39,060 kezdődik ez a folyamat a kódolási információ. 1158 00:51:41,640 --> 00:51:43,180 >> Rendben van. 1159 00:51:43,180 --> 00:51:48,440 Szóval mielőtt merülni néhány crypto és ezek a dolgok néven tömbök, hadd 1160 00:51:48,440 --> 00:51:51,610 szünet bármilyen kérdése van, mert úgy érzem, hogy tényleg ilyen zavaros egyes 1161 00:51:51,610 --> 00:51:52,230 azok a témák. 1162 00:51:52,230 --> 00:51:53,940 Szóval erősít most, ha tudunk. 1163 00:51:53,940 --> 00:51:56,480 Szóval csak beszélgettünk visszatérési értékeket. 1164 00:51:56,480 --> 00:51:58,630 Beszéltünk érveket. 1165 00:51:58,630 --> 00:52:02,330 És megbeszéltük ezt a fogalmat, amelyet akkor jön vissza a hét 1166 00:52:02,330 --> 00:52:07,140 jönnek, megtekintését memória egy csomó ilyen halmozott 1167 00:52:07,140 --> 00:52:08,540 tálcák, hogy úgy mondjam. 1168 00:52:08,540 --> 00:52:13,460 Alulról akár úgy, hogy minden egyes tálcára, hogy lesz fektetni a stack jelentése 1169 00:52:13,460 --> 00:52:15,160 egy függvény, ami jelenleg hívják. 1170 00:52:17,970 --> 00:52:20,300 Van még kérdése? 1171 00:52:20,300 --> 00:52:22,890 Szóval, mi a helyzet - hadd próbáljam feltettem egy kérdést. 1172 00:52:22,890 --> 00:52:25,520 Én folyamatosan romlik, de most már ez - you've minden látta a fiú arcát. 1173 00:52:25,520 --> 00:52:27,020 Szóval jövünk vissza ezt. 1174 00:52:27,020 --> 00:52:29,700 >> Szóval hadd kérdezzen itt. 1175 00:52:29,700 --> 00:52:34,810 Hadd egyszerűsíteni ezt vissza, hogy milyen volt, mielőtt néhány korábbi Q & A. 1176 00:52:34,810 --> 00:52:41,730 És az a tény, hogy a növekmény már nyitott zárójelet, int szám, zárt 1177 00:52:41,730 --> 00:52:42,260 zárójelet. 1178 00:52:42,260 --> 00:52:46,370 Mit jelent int szám képvisel? 1179 00:52:46,370 --> 00:52:47,250 [Hallhatatlan] 1180 00:52:47,250 --> 00:52:47,870 DAVID J. Malan: Egy érv. 1181 00:52:47,870 --> 00:52:50,732 Oké, de mi ez egy érv? 1182 00:52:50,732 --> 00:52:51,620 [Hallhatatlan] 1183 00:52:51,620 --> 00:52:52,500 DAVID J. Malan: Bocs, mi az? 1184 00:52:52,500 --> 00:52:53,150 SPEAKER 3: Valami, amit át be 1185 00:52:53,150 --> 00:52:53,570 DAVID J. Malan: Oké. 1186 00:52:53,570 --> 00:52:54,780 Tehát valami, amit át be 1187 00:52:54,780 --> 00:52:56,560 És általában, ez csak a bemenet. 1188 00:52:56,560 --> 00:52:59,860 Ha írsz egy függvényt, és a funkció célja az életben, hogy nem 1189 00:52:59,860 --> 00:53:03,290 egy kicsit más minden alkalommal, amikor használja, akkor az egyetlen módja, 1190 00:53:03,290 --> 00:53:07,710 hogy ez megtörténjen tényleg úgy tűnik, hogy biztosítsa számára bemenetet, hogy az 1191 00:53:07,710 --> 00:53:10,180 tehetünk valami mást, hogy a bemeneti minden egyes alkalommal. 1192 00:53:10,180 --> 00:53:13,590 >> Szóval, meg kell adnia két dolog, ha egy függvény bemenetek. 1193 00:53:13,590 --> 00:53:17,240 Meg kell adni a kívánt nevet adni, hogy a bemenet, pusztán 1194 00:53:17,240 --> 00:53:20,790 a saját kényelme, így lehet hivatkozni, hogy a funkció, amit 1195 00:53:20,790 --> 00:53:23,610 magát írunk, ahogy én tettem itt sorban 32. 1196 00:53:23,610 --> 00:53:27,840 De azt is meg kell határozni a típus, mert a C programozási nyelv 1197 00:53:27,840 --> 00:53:28,840 hogy csak szükség 1198 00:53:28,840 --> 00:53:31,810 hogy ha egy változó, meg kell mondanod a számítógépet, mit 1199 00:53:31,810 --> 00:53:32,790 adatokat adja meg, 1200 00:53:32,790 --> 00:53:35,540 nagy részben azért, hogy az tudja, hány bit 1201 00:53:35,540 --> 00:53:37,230 kiosztani az adott változót. 1202 00:53:37,230 --> 00:53:38,600 Mert lehet, hogy hat - 1203 00:53:38,600 --> 00:53:39,990 Sajnáljuk, de ez nem lesz hat. 1204 00:53:39,990 --> 00:53:41,050 Lehet 16. 1205 00:53:41,050 --> 00:53:41,630 Ez a 8. 1206 00:53:41,630 --> 00:53:44,410 Ez lehet 32, még 64. 1207 00:53:44,410 --> 00:53:45,820 De a számítógép tudnia kell. 1208 00:53:45,820 --> 00:53:49,110 Most az int a bal oldali képviseli azt, amit ezzel szemben? 1209 00:53:52,825 --> 00:53:53,780 [Hallhatatlan] 1210 00:53:53,780 --> 00:53:54,570 DAVID J. Malan: Mi ez? 1211 00:53:54,570 --> 00:53:55,390 [Hallhatatlan] 1212 00:53:55,390 --> 00:53:57,920 David J. Malan: A típus a funkció és, pontosabban, az 1213 00:53:57,920 --> 00:53:59,755 típusú termelését. 1214 00:53:59,755 --> 00:54:00,220 Rendben. 1215 00:54:00,220 --> 00:54:04,220 Tehát mivel a dolog zárójelben képviseli bemenet, ha van ilyen, a 1216 00:54:04,220 --> 00:54:06,640 dolog, hogy a bal oldali képviseli kimenet. 1217 00:54:06,640 --> 00:54:10,560 És ebben az esetben a növekmény látszólag ad vissza int. 1218 00:54:10,560 --> 00:54:14,590 És így int a visszatérési típus ezt a funkciót. 1219 00:54:14,590 --> 00:54:16,090 >> Mit jelent az, hogy vissza? 1220 00:54:16,090 --> 00:54:19,810 Szó szerint, akkor használja a kulcsszó vissza. 1221 00:54:19,810 --> 00:54:24,640 És akkor, ha amit vissza jobbra a kulcsszó egy 1222 00:54:24,640 --> 00:54:28,340 egész, akkor ez valóban megfelel amit ígért. 1223 00:54:28,340 --> 00:54:31,110 Te nem tehetett ilyet - 1224 00:54:31,110 --> 00:54:32,280 hello, világ - 1225 00:54:32,280 --> 00:54:33,500 mert ez egy string. 1226 00:54:33,500 --> 00:54:35,440 Nyilvánvaló, hogy nem egész szám. 1227 00:54:35,440 --> 00:54:40,450 Tehát röviden, a teher valóban minket, a programozó, hogy egyedi, mint 1228 00:54:40,450 --> 00:54:44,730 , amit mi vissza, és aztán tényleg megy a visszaküldésével. 1229 00:54:44,730 --> 00:54:49,030 És akkor, hogy egy srác világosabb összefüggésben - 1230 00:54:49,030 --> 00:54:50,080 Ott van megint. 1231 00:54:50,080 --> 00:54:51,060 A háttér - 1232 00:54:51,060 --> 00:54:52,830 nagy meglepetés jön, csak egy pillanatra. 1233 00:54:52,830 --> 00:54:57,720 A kontextus itt most az, hogy a számítógép memóriája, ismét egy 1234 00:54:57,720 --> 00:54:59,070 gigabyte, két gigabájt, mindegy. 1235 00:54:59,070 --> 00:54:59,630 Lehet, hogy több. 1236 00:54:59,630 --> 00:55:00,540 Talán kevesebb. 1237 00:55:00,540 --> 00:55:03,750 De a számítógép látja azt, hogy különböző szakaszok. 1238 00:55:03,750 --> 00:55:04,860 Valami megy le oda. 1239 00:55:04,860 --> 00:55:06,020 Valami más megy fel oda. 1240 00:55:06,020 --> 00:55:07,540 Különböző cucc megy a közepén. 1241 00:55:07,540 --> 00:55:09,300 És ma, csak kezdeni mondom ezt a történetet. 1242 00:55:09,300 --> 00:55:11,130 >> De majd jön vissza erre az idő múlásával. 1243 00:55:11,130 --> 00:55:15,000 Jelenleg az egyetlen darab memória tényleg érdekel a szöveg szegmens 1244 00:55:15,000 --> 00:55:17,160 mert csak képviseli a nullák és egyesek 1245 00:55:17,160 --> 00:55:18,460 hogy csenget a kimeneten. 1246 00:55:18,460 --> 00:55:21,570 Tehát, ha egy parancs futtatható a billentyűzetet, mint a.out, vagy dupla 1247 00:55:21,570 --> 00:55:25,350 kattintson egy ikonra a Mac OS vagy Windows, a program van betöltve a merevlemez 1248 00:55:25,350 --> 00:55:26,930 vezetni a RAM-ba. 1249 00:55:26,930 --> 00:55:30,850 És ez lehuppant a tetején a számítógép RAM, hogy úgy mondjam. 1250 00:55:30,850 --> 00:55:35,470 Most közben, mivel a program elindul és fontosabb lesz az úgynevezett a 1251 00:55:35,470 --> 00:55:39,240 program, amit írt, vagy a program a Microsoft vagy az Apple írta, annak bármely 1252 00:55:39,240 --> 00:55:42,930 lokális változók a végén ott az alján a számítógép memóriájában. 1253 00:55:42,930 --> 00:55:46,490 De ha felhívja fő egyéb funkció maga változók vagy 1254 00:55:46,490 --> 00:55:48,340 érvek, a végén fölé. 1255 00:55:48,340 --> 00:55:50,670 És ha ezt a funkciót hívja valamit, a végén fölötte, 1256 00:55:50,670 --> 00:55:51,840 fölötte, felette. 1257 00:55:51,840 --> 00:55:56,100 És csak ha egy funkciót történik végrehajtó működik a köteg tálcák, így 1258 00:55:56,100 --> 00:55:58,320 beszélni, kezdenek egyre alacsonyabb. 1259 00:55:58,320 --> 00:56:03,370 És ez az, amit akkor, dióhéjban, megmagyarázza, hogy miért, mikor hívja kocka - 1260 00:56:03,370 --> 00:56:04,660 vagy hívja növekmény - 1261 00:56:04,660 --> 00:56:06,490 te halad egy példányát az értéket. 1262 00:56:06,490 --> 00:56:09,840 És hogy ez mit jelent piktogramokat ábrázoló, hogy te szó szerint írásban 1263 00:56:09,840 --> 00:56:14,540 1-es szám egy másik részén memória, a változó, hogy 1, 2-ben az esetben, 1264 00:56:14,540 --> 00:56:15,360 növekmény - 1265 00:56:15,360 --> 00:56:17,450 vagy egy 8, abban az esetben, kocka - 1266 00:56:17,450 --> 00:56:21,450 és azután, hogy a dob memória el amint a növekedés vagy a kocka 1267 00:56:21,450 --> 00:56:23,410 függvény. 1268 00:56:23,410 --> 00:56:24,267 >> Kérdés. 1269 00:56:24,267 --> 00:56:25,517 [Hallhatatlan] 1270 00:56:28,090 --> 00:56:29,970 DAVID J. Malan: Hol - globális változók tárolják mi 1271 00:56:29,970 --> 00:56:32,960 Jelenleg az úgynevezett inicializált adatok vagy inicializálatlan adatok. 1272 00:56:32,960 --> 00:56:35,900 A különbség az, hogy, ha van egy globális változó, és rendelje hozzá 1273 00:56:35,900 --> 00:56:39,530 Azonnal egy értéket egyenlőségjel, azt végül a tetején ott. 1274 00:56:39,530 --> 00:56:43,390 És ha csak annyit int x pontosvessző nélkül értéket, végül enyhén 1275 00:56:43,390 --> 00:56:46,670 alacsonyabb RAM egyszerűen ilyen egyezmény. 1276 00:56:46,670 --> 00:56:49,308 Egyéb kérdések. 1277 00:56:49,308 --> 00:56:49,750 Rendben van. 1278 00:56:49,750 --> 00:56:53,040 >> Tehát ez a kép jön vissza, mint mi, hogy több erős, amit tehetünk 1279 00:56:53,040 --> 00:56:53,830 a számítógéppel. 1280 00:56:53,830 --> 00:56:58,790 De most vessünk egy rövid intro a kriptográfia, egy bizonyos típusú 1281 00:56:58,790 --> 00:57:01,910 titkosítás ez nem oldja meg a világ összes problémáit, de nem oldja meg 1282 00:57:01,910 --> 00:57:02,480 néhányat. 1283 00:57:02,480 --> 00:57:06,090 Ebben az esetben itt van egy úgynevezett titkos kulcsú titkosítás. 1284 00:57:06,090 --> 00:57:10,430 És a titkos kulcsú, amint azt a neve is sugallja, abból a biztonsági 1285 00:57:10,430 --> 00:57:11,330 Egy titok. 1286 00:57:11,330 --> 00:57:14,720 Így például, ha újra az iskolában, és te halad a 1287 00:57:14,720 --> 00:57:18,040 kis titka szerelmes levelet, hogy a fiú, vagy lány, akkor a zúzás - ha 1288 00:57:18,040 --> 00:57:20,820 akarta átadni, hogy a közönség, akkor valószínűleg nem írna 1289 00:57:20,820 --> 00:57:24,120 egy ilyen megjegyzést angol vagy bármi is a anyanyelve, hanem, ha 1290 00:57:24,120 --> 00:57:25,800 Lehet titkosítja. 1291 00:57:25,800 --> 00:57:27,820 Vagy lehet, hogy csak küldje el a szöveges üzenetet ezekben a napokban. 1292 00:57:27,820 --> 00:57:30,310 De lehet, hogy tényleg át őket egy megjegyzés az egész osztályteremben. 1293 00:57:30,310 --> 00:57:33,820 És hogy ezt biztonságosan, oly módon, hogy a barátok és a tanár 1294 00:57:33,820 --> 00:57:36,820 Nem tudom, mit írsz, lehet, hogy jön egy viszonylag egyszerű 1295 00:57:36,820 --> 00:57:37,800 algoritmus - 1296 00:57:37,800 --> 00:57:39,290 fiatal, bár lehet, hogy - 1297 00:57:39,290 --> 00:57:40,780 hogy csak tülekedés a szavakat. 1298 00:57:40,780 --> 00:57:44,390 Tehát ahelyett, hogy az írás egy, talán levelet B. helyett a B, akkor írjon 1299 00:57:44,390 --> 00:57:46,670 C. A helyett a C, lehet, ír D, és így tovább. 1300 00:57:46,670 --> 00:57:50,020 Vagy tudnál jönni egy kifinomultabb fordítását betűk 1301 00:57:50,020 --> 00:57:51,300 különböző betűket. 1302 00:57:51,300 --> 00:57:55,440 De a fogás a fiú vagy lány, akire te küldése tudomásul kell 1303 00:57:55,440 --> 00:57:56,850 tud valamit. 1304 00:57:56,850 --> 00:57:59,620 Ami mi is, természetesen! 1305 00:57:59,620 --> 00:58:01,400 Mint, mi a titka. 1306 00:58:01,400 --> 00:58:04,620 Mint mi ez közötti leképezés As és Bs és Cs és Ds? 1307 00:58:04,620 --> 00:58:08,780 Vajon csak hozzá egy, hogy úgy mondjam, az egyes betűk menni 1308 00:58:08,780 --> 00:58:09,730 A-B, B-C? 1309 00:58:09,730 --> 00:58:11,350 Ez bonyolultabb, mint ez? 1310 00:58:11,350 --> 00:58:16,450 Szóval, te és a törje szükségük van e titkos információkat. 1311 00:58:16,450 --> 00:58:18,170 De van egyfajta 22-es csapdája van. 1312 00:58:18,170 --> 00:58:20,760 Ha ez az első alkalom, hogy ezt a szerelmes levelet küldött a 1313 00:58:20,760 --> 00:58:25,590 osztály, hogyan, hogy fiú vagy lány lesz tudni, hogy mi a titok, még van? 1314 00:58:25,590 --> 00:58:28,450 Szóval titkos kulcs crypto nem oldja meg a világ összes problémáit. 1315 00:58:28,450 --> 00:58:30,490 És van valójában egy kapcsolat, mi jön vissza felé 1316 00:58:30,490 --> 00:58:31,370 félév végén. 1317 00:58:31,370 --> 00:58:35,970 >> Hasonlóképpen, van egyikünk talán valaha küldött - 1318 00:58:35,970 --> 00:58:39,453 hasonlóképpen, akkor a legtöbben nem tudják, hogy valaki, hogy működik, például, a 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 És mégis, sokan valószínűleg vásárolt cuccot az Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 És mi már tanítottak, hogy azt feltételezik, hogy ezek az e-kereskedelem 1322 00:58:45,670 --> 00:58:47,060 tranzakciók biztonságos. 1323 00:58:47,060 --> 00:58:47,210 Igaz? 1324 00:58:47,210 --> 00:58:49,310 Az URL valószínűleg mondja https. 1325 00:58:49,310 --> 00:58:51,590 Van talán egy hülye kis lakat ikon valahol. 1326 00:58:51,590 --> 00:58:54,680 Van valamiféle titkosítás biztosítására a hitelkártya adatait 1327 00:58:54,680 --> 00:58:56,980 közted és az Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 És mégis, ha a titkosítás magában tudva valami titkos, és még én nem 1329 00:59:00,410 --> 00:59:03,330 tudja valaki az Amazon, és én már biztosan nem rendezett semmilyen 1330 00:59:03,330 --> 00:59:07,350 titkos valakivel Amazon, hogyan kell a számítógép, vagy a böngésző csinálja ezt? 1331 00:59:07,350 --> 00:59:10,100 Nos, kiderült, van más típusú titkosítás teljesen, hogy megoldja 1332 00:59:10,100 --> 00:59:10,740 ezt a problémát. 1333 00:59:10,740 --> 00:59:13,610 De ma, akkor összpontosítani egyszerű, ahol meg lehet rendezni a 1334 00:59:13,610 --> 00:59:18,480 előre tudni, hogy valami titkos, mint a plusz 1 vagy valamilyen közötti leképezés As és Bs. 1335 00:59:18,480 --> 00:59:20,710 >> És a folyamat a kriptográfia általában magában foglalja ezt. 1336 00:59:20,710 --> 00:59:23,550 Van néhány egyszerű szöveg, látható itt a bal oldalon. 1337 00:59:23,550 --> 00:59:26,260 Te fuss át valamilyen algoritmus vagy az eljárás 1338 00:59:26,260 --> 00:59:27,670 titkosításához rá. 1339 00:59:27,670 --> 00:59:31,390 Lehet, hogy csak egy lesz B, B válik C. És akkor a végén a 1340 00:59:31,390 --> 00:59:32,260 titkosított szöveg legyen. 1341 00:59:32,260 --> 00:59:36,450 Közben, ha a szív megkapja a titkot jegyzet, ő kell majd 1342 00:59:36,450 --> 00:59:39,950 visszafejteni általánosan tolató hogy algoritmust úgy, hogy 1343 00:59:39,950 --> 00:59:41,640 vissza a sima szöveget. 1344 00:59:41,640 --> 00:59:43,860 Most már vannak fizikai inkarnációja ezt. 1345 00:59:43,860 --> 00:59:46,720 Például, ez egy kis titok dekóder gyűrű. 1346 00:59:46,720 --> 00:59:50,060 És ez egy gyűrű, abban az értelemben, hogy van 2 tárcsázza van. 1347 00:59:50,060 --> 00:59:53,630 A külső kerülete ez a dolog, van betűk A-tól Z-ig, 1348 00:59:53,630 --> 00:59:55,110 bár ők véletlenszerű sorrendben. 1349 00:59:55,110 --> 00:59:58,410 És a belsejében van valójában néhány számot, úgy, hogy ezzel a 1350 00:59:58,410 --> 01:00:02,940 gyűrű, akkor milyen kapcsolja be a külső, de a belső, hogy sorban 1351 01:00:02,940 --> 01:00:04,110 számok betűk. 1352 01:00:04,110 --> 01:00:08,290 És a klip fogsz látni - melyek közül néhány talán már látott 24/7 1353 01:00:08,290 --> 01:00:11,120 körül a karácsonyi szezonban egy film nevű A Christmas Story. 1354 01:00:11,120 --> 01:00:16,050 Látni fogod, hogy a kis Ralphie annyira lelkes, hogy kitaláljuk, milyen kis árva 1355 01:00:16,050 --> 01:00:19,810 Annie titkos üzenete az volt, hogy neki, hogy közölték, azt hiszem, a 1356 01:00:19,810 --> 01:00:22,810 képezik a numerikus üzenetek egy soros doboz. 1357 01:00:22,810 --> 01:00:26,760 És meg kellett felhalmozódnak az apró kártyák jött 1358 01:00:26,760 --> 01:00:27,480 A gabona mezőbe. 1359 01:00:27,480 --> 01:00:28,320 Meg kellett postázni őket! 1360 01:00:28,320 --> 01:00:31,060 Meg kellett, hogy újra a titkos dekódoló gyűrűt, így végre kitalálni 1361 01:00:31,060 --> 01:00:34,190 hogy mi a leképezés között betűk és számok, 1362 01:00:34,190 --> 01:00:35,420 vagy betűk és levelek. 1363 01:00:35,420 --> 01:00:39,790 Szóval neked ezt a rövid klipet A Christmas Story motiválni Pset 2 és 1364 01:00:39,790 --> 01:00:42,340 a vita, hogy egy pillanatra, a tömbök. 1365 01:00:42,340 --> 01:00:43,773 Tehát itt van Ralphie. 1366 01:00:43,773 --> 01:00:44,126 >> [VIDEO LEJÁTSZÁS] 1367 01:00:44,126 --> 01:00:47,470 -Legyen ismert, hogy minden rendű és rangú, hogy Ralph Parker-t nevezi ki 1368 01:00:47,470 --> 01:00:50,690 tagja a Kis Árva Annie Secret Circle és jogosult valamennyi 1369 01:00:50,690 --> 01:00:53,500 A kitüntetés és juttatások előforduló hozzá. 1370 01:00:53,500 --> 01:00:56,040 -Aláírás, Little Orphan Annie. 1371 01:00:56,040 --> 01:00:58,730 Ellenjegyezte, Pierre Andre! 1372 01:00:58,730 --> 01:01:00,150 A tinta! 1373 01:01:00,150 --> 01:01:02,910 Kitüntetések és előnyök már évesen kilenc. 1374 01:01:09,970 --> 01:01:10,730 Gyere, menjünk be vele. 1375 01:01:10,730 --> 01:01:15,000 Nem kell minden jazz-ről csempészek és kalózok. 1376 01:01:15,000 --> 01:01:17,624 -Figyelj, holnap este a záró kalandja The Black 1377 01:01:17,624 --> 01:01:19,710 Pirate Ship. 1378 01:01:19,710 --> 01:01:23,380 Most itt az ideje, hogy Annie titkos üzenete Önnek tagok 1379 01:01:23,380 --> 01:01:25,670 A Secret Circle. 1380 01:01:25,670 --> 01:01:30,260 Ne feledje, a gyerekek, csak a tagok az Annie Secret Circle tudja dekódolni 1381 01:01:30,260 --> 01:01:31,660 Annie titkos üzenete. 1382 01:01:31,660 --> 01:01:36,230 Ne feledje, Annie függ neked. 1383 01:01:36,230 --> 01:01:38,720 Állítsa be a csapok a B2. 1384 01:01:38,720 --> 01:01:41,040 Itt van az üzenet. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Én vagyok az első titkos találkozón. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 -Pierre volt, nagy hangon ma este. 1389 01:01:51,700 --> 01:01:54,890 Elmondhatom, hogy ma este üzenete az volt igazán fontos. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 Ez egy üzenet Annie magát. 1392 01:01:58,590 --> 01:01:59,840 Ne felejtsd el, ne mondd el senkinek. 1393 01:02:04,570 --> 01:02:08,750 -90 Másodpercekkel később, én vagyok az egyetlen szoba a házban, ahol a fiú kilenc 1394 01:02:08,750 --> 01:02:12,980 tudott ülni magánélet és dekódolni. 1395 01:02:12,980 --> 01:02:17,130 Aha, B. elmentem a következő. 1396 01:02:17,130 --> 01:02:20,330 E. Az első szó legyen. 1397 01:02:20,330 --> 01:02:22,670 S. Ez jött könnyebb most. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 -Oh, ugyan már, Ralphie. 1400 01:02:26,510 --> 01:02:28,430 Mennem kell. 1401 01:02:28,430 --> 01:02:30,350 -Leszek lent, ma. 1402 01:02:30,350 --> 01:02:33,720 -Gee zseniális. 1403 01:02:33,720 --> 01:02:38,270 -T, O. Mindenképpen. 1404 01:02:38,270 --> 01:02:40,000 Ügyeljen arra, hogy mit? 1405 01:02:40,000 --> 01:02:42,105 Mi volt a Kis Árva Annie mondani? 1406 01:02:42,105 --> 01:02:43,095 Ügyeljen arra, hogy mit? 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy már mennem kell. 1409 01:02:44,580 --> 01:02:45,570 Fogsz kérem, jöjjön ki? 1410 01:02:45,570 --> 01:02:46,560 -Rendben, ma. 1411 01:02:46,560 --> 01:02:48,540 Mindjárt ki. 1412 01:02:48,540 --> 01:02:50,580 -Én egyre közelebb van. 1413 01:02:50,580 --> 01:02:52,550 A feszültség borzalmas volt. 1414 01:02:52,550 --> 01:02:53,355 Mi volt az? 1415 01:02:53,355 --> 01:02:56,315 A sorsa a bolygó is lefagy a mérlegben. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy kell mennie. 1418 01:02:59,165 --> 01:03:02,310 -Leszek rögtön, az isten szerelmére. 1419 01:03:02,310 --> 01:03:04,000 -Gee, majdnem ott. 1420 01:03:04,000 --> 01:03:05,180 Ujjaim repült. 1421 01:03:05,180 --> 01:03:07,150 Az agyam egy acél csapda. 1422 01:03:07,150 --> 01:03:08,790 Minden pórus vibrált. 1423 01:03:08,790 --> 01:03:10,040 Már majdnem világos. 1424 01:03:10,040 --> 01:03:13,400 Igen, igen, igen, igen. 1425 01:03:13,400 --> 01:03:18,960 -Ügyeljen arra, hogy igyon meg Ovaltine. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 Egy vacak kereskedelmi? 1428 01:03:28,200 --> 01:03:29,640 A kurva anyját. 1429 01:03:29,640 --> 01:03:33,340 [END VIDEÓ LEJÁTSZÁS] 1430 01:03:33,340 --> 01:03:36,040 >> DAVID J. Malan: Tehát ott van titkosítás. 1431 01:03:36,040 --> 01:03:39,670 Szóval, hogy a számítógép mehetünk végre akarja hajtani, vagy 1432 01:03:39,670 --> 01:03:40,950 képviselő dolgok, mint ez? 1433 01:03:40,950 --> 01:03:44,430 Nos, szükségünk van egy kifejezési módja magunkat egy kicsit rugalmasabban 1434 01:03:44,430 --> 01:03:46,420 a változók eddig tették. 1435 01:03:46,420 --> 01:03:47,370 Már volt ints. 1436 01:03:47,370 --> 01:03:48,380 Már volt karakter. 1437 01:03:48,380 --> 01:03:50,790 Már volt úszók és kétágyas és egy pár mások. 1438 01:03:50,790 --> 01:03:55,050 De ezek egyedi darab memória nem igazán teszi lehetővé számunkra, hogy 1439 01:03:55,050 --> 01:03:58,010 kifejezni dolgokat, mint a szavak és a mondatok és kifejezések. 1440 01:03:58,010 --> 01:04:00,200 Sőt, most már az úgynevezett ilyen dolgokat szálakat. 1441 01:04:00,200 --> 01:04:03,650 De megígérte, hogy ez tényleg csak egy egyszerűsítés CS50 1442 01:04:03,650 --> 01:04:07,020 könyvtár, hogy mi kívánó héjúak vissza. 1443 01:04:07,020 --> 01:04:08,970 >> És így kezdjük erre itt. 1444 01:04:08,970 --> 01:04:11,130 Hadd menjek előre, és megnyitja a fájlt - 1445 01:04:11,130 --> 01:04:13,770 az összes ilyen fájlok szokásos online - 1446 01:04:13,770 --> 01:04:19,120 hívott array.c megoldani a problémát független strings, de fest 1447 01:04:19,120 --> 01:04:23,040 kép itt, hogy hogyan lehet használni egy úgynevezett egy tömb. 1448 01:04:23,040 --> 01:04:25,530 Egy tömb adattípust. 1449 01:04:25,530 --> 01:04:31,320 Ez egy változó típusa, a fajta, amely több kisebb adattípusok 1450 01:04:31,320 --> 01:04:34,150 belül vissza háttal hátra. 1451 01:04:34,150 --> 01:04:37,700 Így például, ha azt akarjuk, hogy írjon egy kis programot, amely megadja a 1452 01:04:37,700 --> 01:04:42,110 quiz átlagosan egy tanfolyamot, mint a 50, amely két, kvízeket, akkor nagyon könnyen 1453 01:04:42,110 --> 01:04:45,170 írni ezt a program - alapján még néhány múlt heti anyag - 1454 01:04:45,170 --> 01:04:47,770 segítségével getInt és egy pár változók. 1455 01:04:47,770 --> 01:04:51,920 Int quiz1, int quiz2, és ez elég egyértelmű. 1456 01:04:51,920 --> 01:04:55,930 Ez talán 10, 20 sornyi kódot, max, programjának végrehajtása, amely arra kéri az Európai 1457 01:04:55,930 --> 01:05:01,170 Felhasználói két kvíz eredmény, majd kiszámítja az átlagos hozzáadni azokat 1458 01:05:01,170 --> 01:05:03,850 együtt, elosztjuk kettővel, és majd a nyomtatás az eredményeket. 1459 01:05:03,850 --> 01:05:06,380 Mi valószínűleg csinálni elég könnyen jelenleg követően 1460 01:05:06,380 --> 01:05:07,510 néhány percek számát. 1461 01:05:07,510 --> 01:05:11,005 >> De a probléma az, hogy tegyük fel, hogy 50 három vetélkedők vagy négy. 1462 01:05:11,005 --> 01:05:13,510 Tegyük fel, hogy akarta, hogy ugyanazt a programot egy osztály, hogy már 1463 01:05:13,510 --> 01:05:14,850 heti kvízek. 1464 01:05:14,850 --> 01:05:16,610 Gondolj egy osztály, amely a heti vetélkedők. 1465 01:05:16,610 --> 01:05:20,610 Ha van, mint a 16 vagy úgy hét a félév, most már 16 változó - 1466 01:05:20,610 --> 01:05:24,270 int quiz1, int quiz2, int quiz3, int quiz4. 1467 01:05:24,270 --> 01:05:27,560 Amint elkezdi látni ezt a redundancia, a másolás és beillesztés 1468 01:05:27,560 --> 01:05:31,390 A kód, meg kell kezdeni, hogy szeretne volt egy jobb út. 1469 01:05:31,390 --> 01:05:33,930 És szerencsére, mert a tömbök van. 1470 01:05:33,930 --> 01:05:34,980 Akkor csináljuk. 1471 01:05:34,980 --> 01:05:38,430 Először is, hadd mutassam be egy nagyon egyszerű dolog, hogy már nem használt eddig, 1472 01:05:38,430 --> 01:05:40,140 de látni fogod, hogy esetenként kódot. 1473 01:05:40,140 --> 01:05:42,360 Ez az, ami általában úgynevezett állandó. 1474 01:05:42,360 --> 01:05:45,790 Tehát ez egy állandó abban az értelemben, hogy ez az érték nem változik. 1475 01:05:45,790 --> 01:05:49,210 Az emberi egyezmény létrehozása során konstans legyen használni az összes tőke 1476 01:05:49,210 --> 01:05:51,940 betűk, csak úgy, hogy valóban kiemelkedik a kódban. 1477 01:05:51,940 --> 01:05:55,960 És a speciális kulcsszó, hogy használja a C # define. 1478 01:05:55,960 --> 01:06:00,250 Tehát, ha mondjuk # define, majd egy szóközt, majd a kívánt szó használni 1479 01:06:00,250 --> 01:06:03,260 a konstans nevét, és majd az értékét a konstans. 1480 01:06:03,260 --> 01:06:06,180 Szóval értesítést, ez eltér hozzárendelése valamit egy változót. 1481 01:06:06,180 --> 01:06:07,020 Nincs egyenlőségjel. 1482 01:06:07,020 --> 01:06:08,240 Nincs pontosvessző. 1483 01:06:08,240 --> 01:06:11,410 Ez az, amit az általánosan ismert, mint egy előfeldolgozó irányelv, hanem inkább a 1484 01:06:11,410 --> 01:06:12,210 hogy egy másik alkalommal. 1485 01:06:12,210 --> 01:06:18,540 >> Most, ez létrehoz egy változatlan értéket nevezzük vetélkedők, amelyek tényleges 1486 01:06:18,540 --> 01:06:19,940 numerikus érték 2. 1487 01:06:19,940 --> 01:06:24,020 Így bárhol látod kvízjátékok, vetélkedők, kvízjátékok során ezt a fájlt, ez 1488 01:06:24,020 --> 01:06:25,410 csak a 2-es szám. 1489 01:06:25,410 --> 01:06:28,100 Most, ha ránézek fő most lássuk, hogyan is működik ez. 1490 01:06:28,100 --> 01:06:29,500 Eleinte, úgy néz ki, egy kicsit rejtélyes. 1491 01:06:29,500 --> 01:06:31,340 De ez az egész cuccot a héten egy. 1492 01:06:31,340 --> 01:06:32,710 Kérje meg a felhasználót a fokozatok. 1493 01:06:32,710 --> 01:06:33,630 Hogyan tudjuk ezt megtenni? 1494 01:06:33,630 --> 01:06:35,470 Nos, sorban 22 - 1495 01:06:35,470 --> 01:06:37,210 ez tényleg a szaftos rész - 1496 01:06:37,210 --> 01:06:40,960 Kijelentem float, de nem csak egy úszó. 1497 01:06:40,960 --> 01:06:44,620 Én nyilvánította, inkább egy sor lebegőpontos értékek. 1498 01:06:44,620 --> 01:06:49,100 Ezt a változót fog hívni fokozatok, mint hallgatólagos itt. 1499 01:06:49,100 --> 01:06:53,080 De az egyetlen darab új szintaxis, akkor ezek a szögletes zárójelek azt a tényt, 1500 01:06:53,080 --> 01:06:59,350 azt mondtam float évfolyamon, majd nyitó zárójel, majd egy számot. 1501 01:06:59,350 --> 01:07:02,460 Értesítés, ha ez állandó, ez olyan, mint tettük ezt. 1502 01:07:02,460 --> 01:07:06,890 Ez azt jelenti, hé számítógép, adj 2 úszók, és hagyja, hogy a kollektív szükséges 1503 01:07:06,890 --> 01:07:08,220 őket fokozatok. 1504 01:07:08,220 --> 01:07:11,920 Ez ellentétben áll egy sokkal inkább unalmas folyamat ilyen. 1505 01:07:11,920 --> 01:07:15,850 Úszó grade1, úszó grade2, és így tovább. 1506 01:07:15,850 --> 01:07:20,010 Tehát egy tömböt lehetővé teszi számunkra, hogy végre ezt a gondolatot, de sokkal kevésbé messily, a 1507 01:07:20,010 --> 01:07:24,630 olyan módon, hogy tudjuk írni egy sor kód helyett, mondjuk, 16 egy 16 1508 01:07:24,630 --> 01:07:25,740 hét félév. 1509 01:07:25,740 --> 01:07:29,950 Szóval nem akartam hard-2-es kód, mert ha úgy gondolja, erre most 1510 01:07:29,950 --> 01:07:34,160 logikusan - tegyük fel jövőre CS50 változások 3 kvízek helyett. 1511 01:07:34,160 --> 01:07:35,510 És volt a 2-es szám van. 1512 01:07:35,510 --> 01:07:36,600 Volt a 2-es szám van. 1513 01:07:36,600 --> 01:07:37,580 Volt a 2-es szám van. 1514 01:07:37,580 --> 01:07:38,560 Volt a 2-es szám van. 1515 01:07:38,560 --> 01:07:43,180 Ez lesz nagyon unalmas és nagyon könnyen csavar, és véletlenül megváltoztatni 1516 01:07:43,180 --> 01:07:47,690 egy értéket a 3. és hiányzik néhány más érték a 2. 1517 01:07:47,690 --> 01:07:52,460 Szóval megyek helyette elvont ezt el, és ezt a konstans, hogy mivel az 1518 01:07:52,460 --> 01:07:54,120 neve is mutatja, soha nem változik. 1519 01:07:54,120 --> 01:07:57,710 És most, nem számít, hogy mi a különböző vetélkedők idén vagy jövőre, I 1520 01:07:57,710 --> 01:08:01,210 Csak meg kell változtatni, hogy egy helyen, akár itt a tetején. 1521 01:08:01,210 --> 01:08:02,720 >> Szóval ez minden állandók. 1522 01:08:02,720 --> 01:08:08,680 Eközben az új fogalmi jellemzője az, hogy egy tömb. 1523 01:08:08,680 --> 01:08:14,660 Tehát a szögletes zárójelek add nekem ezt a sok úszók és lehetővé teszi számomra együttesen 1524 01:08:14,660 --> 01:08:16,630 hívja őket fokozatok itt. 1525 01:08:16,630 --> 01:08:17,990 És most lássuk, mit fogok csinálni. 1526 01:08:17,990 --> 01:08:20,359 Itt sorban 24 a kezdete a hurok. 1527 01:08:20,359 --> 01:08:22,260 Ez tényleg semmi fantázia. 1528 01:08:22,260 --> 01:08:25,060 Ez csak a vetélkedők helyett beégetett számot. 1529 01:08:25,060 --> 01:08:27,790 De nincs semmi intellektuálisan más ott a múlt héten. 1530 01:08:27,790 --> 01:08:29,040 Ez csak printf. 1531 01:08:29,040 --> 01:08:35,490 Szóval printf ("kvíz-szám% d% d"), mert én csak azt szeretném, hogy nyomtassa ki nekem quiz 1532 01:08:35,490 --> 01:08:38,050 számú két és majd két, két. 1533 01:08:38,050 --> 01:08:39,850 Tehát ez pusztán esztétikai dolog. 1534 01:08:39,850 --> 01:08:42,500 De az érdekes rész most már összhangban van az 27. 1535 01:08:42,500 --> 01:08:48,310 Annak érdekében, hogy kitöltse az egyik két helykitöltõvel egy lebegőpontos 1536 01:08:48,310 --> 01:08:51,029 értéket, akkor újra használni szögletes zárójelben. 1537 01:08:51,029 --> 01:08:55,620 Ebben az esetben én vagyok a i, mert ez a for ciklus kezdődött i egyenlő 1538 01:08:55,620 --> 01:08:57,560 milyen értéket, úgy tűnik? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Tehát az első iterációs e hurok, az olyan, mintha én 1541 01:09:01,350 --> 01:09:02,689 írta ezt a kódot. 1542 01:09:02,689 --> 01:09:05,580 De a második iteráció e hurok, az olyan, mintha én 1543 01:09:05,580 --> 01:09:07,750 írta ezt a kódot. 1544 01:09:07,750 --> 01:09:10,750 De az a tény, hogy én vagyok egy változó tökéletes, mert, mint a neve 1545 01:09:10,750 --> 01:09:14,300 javasolja, ez változó értéke minden iteráció. 1546 01:09:14,300 --> 01:09:17,370 Szóval kitöltésével ezt a tömböt egy helyen egy időben. 1547 01:09:17,370 --> 01:09:18,910 Mit jelent ez a tömb néz ki? 1548 01:09:18,910 --> 01:09:21,430 Nos, az ok, amiért felhívta a szuper egyszerű téglalap a képernyőn itt 1549 01:09:21,430 --> 01:09:23,350 mielőtt volt az oka. 1550 01:09:23,350 --> 01:09:27,279 Egy tömb csak egy darab memória, majd egy másik darabja a memóriát, 1551 01:09:27,279 --> 01:09:30,109 majd egy másik darab a memória, és így tovább. 1552 01:09:30,109 --> 01:09:35,260 Szóval, ha a tömb mérete 2, ebben az esetben is, minden, amit tenne a 1553 01:09:35,260 --> 01:09:37,590 gépelni az én kvíz eredmények, mint itt. 1554 01:09:37,590 --> 01:09:39,430 Van 100 ez. 1555 01:09:39,430 --> 01:09:42,020 És akkor kaptam a 99 ez. 1556 01:09:42,020 --> 01:09:46,040 Akkor ez a memória talán nem is lehet használni, mert én még csak kérte a 1557 01:09:46,040 --> 01:09:48,689 számítógépet egy sor 2-es méret. 1558 01:09:48,689 --> 01:09:50,180 Ezek a terek még mindig ott vannak. 1559 01:09:50,180 --> 01:09:50,340 Igaz? 1560 01:09:50,340 --> 01:09:52,500 Még mindig van két gigabájt RAM-mal, akkor is, ha csak a 1561 01:09:52,500 --> 01:09:53,979 kér két úszók. 1562 01:09:53,979 --> 01:09:58,710 Tehát az ötlet mögött tömbök, hogy a számítógép csak úgy egy darab memória 1563 01:09:58,710 --> 01:10:03,230 majd arányosítja kisebb darabokra háttal hátra hátra. 1564 01:10:03,230 --> 01:10:04,740 És ez minden egy tömb. 1565 01:10:04,740 --> 01:10:09,080 Ez egy folytonos darab memória, belsejében, ahol Ön a dolgokat. 1566 01:10:09,080 --> 01:10:12,400 >> Most ez történik, akkor nem csak valami unalmas számtani. 1567 01:10:12,400 --> 01:10:16,170 Ha görgessen itt, ez az, ahol én, akkor iterációkhoz a tömbben. 1568 01:10:16,170 --> 01:10:19,410 Jöttem fel az összegzése minden érték a tömbben. 1569 01:10:19,410 --> 01:10:22,390 És aztán használhatod a round függvény itt ténylegesen a 1570 01:10:22,390 --> 01:10:23,940 Összefoglalva osztva vetélkedők. 1571 01:10:23,940 --> 01:10:27,450 De hadd lóbálja a kezét, hogy a fajta elég aritmetikai most. 1572 01:10:27,450 --> 01:10:30,010 De minden, ami csinál nekem végeredményben kiszámításánál egy átlagos. 1573 01:10:30,010 --> 01:10:33,640 Tehát először kvíz plus 2. kvíz, osztva 2-vel, majd a nyomtatás 1574 01:10:33,640 --> 01:10:34,700 ki, mint egy int. 1575 01:10:34,700 --> 01:10:39,030 >> De térjünk most átmenet egy másik példát nevű sztring1, 1576 01:10:39,030 --> 01:10:42,370 amely hasonló képet fest, de a szálakat. 1577 01:10:42,370 --> 01:10:45,550 Hadd menjek előre, és egyszerűsíteni ezt csak egy pillanatra. 1578 01:10:45,550 --> 01:10:48,340 És bocsásd meg a behúzás most. 1579 01:10:48,340 --> 01:10:52,280 Közleményt a 19 E példa, kapok egy string a felhasználó elől. 1580 01:10:52,280 --> 01:10:55,780 De észre, mit csinálsz a következő vonalak 22-től kezdődően. 1581 01:10:55,780 --> 01:11:00,260 Én valójában iterációjával tól i-ig - és ez egy új trükk - 1582 01:11:00,260 --> 01:11:02,730 strlen, string hosszát. 1583 01:11:02,730 --> 01:11:07,010 Ez a funkció, hogy jön a C, hogy ha át, hogy egy string, azt mondja 1584 01:11:07,010 --> 01:11:08,950 hogy hány karakter van, hogy a string. 1585 01:11:08,950 --> 01:11:09,440 Ez minden. 1586 01:11:09,440 --> 01:11:12,520 Az a tény, hogy ez strlen helyett string hossza mindössze azért, mert 1587 01:11:12,520 --> 01:11:13,040 tömörebb. 1588 01:11:13,040 --> 01:11:17,100 30 évvel ezelőtt, az emberek szerették írni dolgokat tömören, amennyire csak lehetséges. 1589 01:11:17,100 --> 01:11:19,080 Így már tartanak az egyezmény ide. 1590 01:11:19,080 --> 01:11:21,730 i + + csak azt jelenti, növeljük i egyes iteráció. 1591 01:11:21,730 --> 01:11:24,310 És most észre, ami igazán érdekes. 1592 01:11:24,310 --> 01:11:28,730 Tehát a 24. sor, azt mondom számítógép, adj egy karaktert, nyolc 1593 01:11:28,730 --> 01:11:30,770 bit, és hívja meg c. 1594 01:11:30,770 --> 01:11:35,370 De mi ez a jobb oldali mond? 1595 01:11:35,370 --> 01:11:38,150 Magyarul, ez mit jelent? 1596 01:11:38,150 --> 01:11:40,070 [Hallhatatlan] 1597 01:11:40,070 --> 01:11:40,490 DAVID J. Malan: Pontosan. 1598 01:11:40,490 --> 01:11:42,390 Add ide az első karakter a tömbben. 1599 01:11:42,390 --> 01:11:45,400 Vagy még általánosabban, add nekem az i-edik karaktere a tömbben. 1600 01:11:45,400 --> 01:11:48,230 És észre fontos most, hogy a számítógép-tudósok vagyunk valójában 1601 01:11:48,230 --> 01:11:49,330 számlálás 0-tól. 1602 01:11:49,330 --> 01:11:51,290 Nem mérlegelési most kezdeni ezt. 1603 01:11:51,290 --> 01:11:54,580 Most meg kell viselkedni összhangban a számítógép elvárásait és 1604 01:11:54,580 --> 01:11:58,010 számít nulla, mert [0] lesz az első 1605 01:11:58,010 --> 01:11:59,670 karaktert a string. 1606 01:11:59,670 --> 01:12:01,320 [1] lesz a második. 1607 01:12:01,320 --> 01:12:03,610 [2] lesz a harmadik, és így tovább. 1608 01:12:03,610 --> 01:12:08,840 Szóval ezt a programot, ha azt fordítsd le - ez ismét string1. 1609 01:12:08,840 --> 01:12:11,040 >> Tehát, hogy string1. 1610 01:12:11,040 --> 01:12:16,730 És most fut string1 az én terminál ablakban. 1611 01:12:16,730 --> 01:12:19,180 Ez vár bemenet, így fogok gépelni, mondjuk, David. 1612 01:12:19,180 --> 01:12:20,080 Az Enter billentyűt. 1613 01:12:20,080 --> 01:12:23,350 És most kiírja DAVID mindezt különböző vonalak, mert 1614 01:12:23,350 --> 01:12:24,430 észre, hogy mit csinálok. 1615 01:12:24,430 --> 01:12:27,510 Én nyomtat egy karaktert egy időben. 1616 01:12:27,510 --> 01:12:29,100 Most nem megyünk bele részletesen ma ezt. 1617 01:12:29,100 --> 01:12:31,610 De el kell hagyni egy pillanattal ezelőtt ezt az ellenőrzést itt. 1618 01:12:31,610 --> 01:12:36,310 Kiderült, hogy ha a felhasználó nem működött megfelelően, ellenséges, vagy csak 1619 01:12:36,310 --> 01:12:41,780 zavaros, akkor valóban nem adnak egy sor hosszasan. 1620 01:12:41,780 --> 01:12:43,640 Ha bejön a rossz gombot a billentyűzeten, akkor adhat 1621 01:12:43,640 --> 01:12:44,390 nincs karakterlánc egyáltalán. 1622 01:12:44,390 --> 01:12:47,790 Vagy ha rosszindulatú, akkor megpróbál beilleszteni egy gigabájt érdemes egy 1623 01:12:47,790 --> 01:12:49,380 esszé, hogy töltse ki ezt a fonalat. 1624 01:12:49,380 --> 01:12:52,060 És ha a számítógép elfogy a memória, kiderül, hogy megyünk 1625 01:12:52,060 --> 01:12:54,310 hogy újra ezt a különleges értéket nevezzük null. 1626 01:12:54,310 --> 01:12:57,550 Tehát most már, csak tudom, hogy van ez a különleges értéket, hogy az úgynevezett null 1627 01:12:57,550 --> 01:13:01,000 lehetővé teszi számunkra, hogy ellenőrizze, amikor elfogyott a memória, többek között. 1628 01:13:01,000 --> 01:13:07,330 >> De ha kinyitom most string2, észre egy különbség van. 1629 01:13:07,330 --> 01:13:09,760 Értesítés egy különbség itt string2. 1630 01:13:09,760 --> 01:13:13,260 Ezzel string2, ez a for ciklus egy kicsit más. 1631 01:13:13,260 --> 01:13:16,350 Hadd törölje a null annak érdekében, hogy meg tudjuk beszélni ezeket egy másik alkalommal. 1632 01:13:16,350 --> 01:13:18,460 De mi más a for ciklus ebben az időben? 1633 01:13:21,580 --> 01:13:23,160 És mehetek vissza az előző példában. 1634 01:13:23,160 --> 01:13:24,800 Szóval ez változat kettő. 1635 01:13:24,800 --> 01:13:27,020 Ez a verzió egy. 1636 01:13:27,020 --> 01:13:31,935 Egy, kettő, egy, kettő. 1637 01:13:35,030 --> 01:13:38,240 Tehát a strlen hívás hol? 1638 01:13:38,240 --> 01:13:40,420 Ez az első része a hurok. 1639 01:13:40,420 --> 01:13:43,060 Minden gondolat, hogy miért csinálom ezt? 1640 01:13:43,060 --> 01:13:43,690 Igen. 1641 01:13:43,690 --> 01:13:46,010 [Hallhatatlan] 1642 01:13:46,010 --> 01:13:47,630 DAVID J. Malan: Szóval nem kérdőjelezik meg a függvény minden egyes alkalommal. 1643 01:13:47,630 --> 01:13:48,040 Pontosan. 1644 01:13:48,040 --> 01:13:50,350 Emlékezzünk vissza, honnan a hurok, hogy ők szuper egyszerű, ha egyszer valami 1645 01:13:50,350 --> 01:13:52,180 Megértjük, hogy ez az inicializálás, a 1646 01:13:52,180 --> 01:13:53,330 állapotban van, és a frissítés. 1647 01:13:53,330 --> 01:13:55,430 A probléma az, hogy a feltétel történik minden 1648 01:13:55,430 --> 01:13:56,600 iteráció a hurok. 1649 01:13:56,600 --> 01:13:59,930 És így ebben a példában itt, mi a rossz, az a tény, 1650 01:13:59,930 --> 01:14:03,500 hogy ez az én állapotot? 1651 01:14:03,500 --> 01:14:05,920 Te hívó strlen újra és újra és újra. 1652 01:14:05,920 --> 01:14:08,990 De ha egyszer már beírt DAVID, a hossza a string öt. 1653 01:14:08,990 --> 01:14:11,560 És ez nem fog megváltozni minden iteráció a hurok, mert a 1654 01:14:11,560 --> 01:14:15,560 húr mindig D-A-V-I-D. Szóval ez egy tipp, hogy mi folyik itt, hogy legyen egy 1655 01:14:15,560 --> 01:14:19,650 egyre fontosabb gondolat ismert tervezési döntés, ha - csak nem 1656 01:14:19,650 --> 01:14:21,640 hogy a számítógép nem felesleges munkát. 1657 01:14:21,640 --> 01:14:25,630 >> Most, mint egy besurranó elõnézetét Pset 2, Pset 2 a standard kiadás 1658 01:14:25,630 --> 01:14:28,850 megy kihívás, hogy ténylegesen alkalmazni bizonyos számú titkosítási, néhány 1659 01:14:28,850 --> 01:14:32,650 számos titkosítási algoritmusok, hogy akkor mind a titkosítani és visszafejteni 1660 01:14:32,650 --> 01:14:35,530 titkos üzeneteket, ugyanúgy, mint az egyik Ralphie ott dekódolni. 1661 01:14:35,530 --> 01:14:38,720 A hacker kiadás Pset 2, fogunk menni egy kicsit tovább. 1662 01:14:38,720 --> 01:14:42,010 Fogunk átadni egy fájlt tényleges számítógépes rendszer, amely tartalmaz egy 1663 01:14:42,010 --> 01:14:45,690 csomó felhasználónevek és a tényleges titkosított jelszavakat, és a kihívás 1664 01:14:45,690 --> 01:14:49,110 A hacker verzió lesz feltörni ezeket a jelszavakat és a szám 1665 01:14:49,110 --> 01:14:53,060 hogy mi kriptográfia, vagy mi titkos használták ténylegesen 1666 01:14:53,060 --> 01:14:55,080 generálni ezeket a jelszavakat. 1667 01:14:55,080 --> 01:14:58,360 És mi lesz, hogy ezt az egy új funkció itt a C, hogy adok 1668 01:14:58,360 --> 01:15:02,200 csak egy demo néven ismert parancssori argumentumok. 1669 01:15:02,200 --> 01:15:05,930 >> Így kiderül, mint néhány talán már látható a szakaszban vagy tankönyveket, 1670 01:15:05,930 --> 01:15:09,850 fő nem mindig kell semmisnek zárójelben. 1671 01:15:09,850 --> 01:15:14,060 Kiderül, hogy fő is lehet írni, mint ez a két érv, 1672 01:15:14,060 --> 01:15:19,690 argc és argv, ahol argc a szavak száma, hogy a beírt után 1673 01:15:19,690 --> 01:15:21,940 a program nevét a parancssorban. 1674 01:15:21,940 --> 01:15:24,550 És argv a tényleges szavakat. 1675 01:15:24,550 --> 01:15:29,470 És ahogy a szögletes zárójelek ott utalnak, argv nyilvánvalóan egy tömb. 1676 01:15:29,470 --> 01:15:33,720 Ez lesz egy string után egy string után egy string a memóriában. 1677 01:15:33,720 --> 01:15:36,170 Szóval mit fogunk tudni csinálni, kezdve a Pset 2, a 1678 01:15:36,170 --> 01:15:37,310 valami ilyesmi. 1679 01:15:37,310 --> 01:15:42,450 Ha teszek argv1, amely példa jövünk vissza hétfőn, és fuss 1680 01:15:42,450 --> 01:15:45,180 azt, észre, hogy nem úgy tűnik, hogy semmit sem. 1681 01:15:45,180 --> 01:15:47,050 Csak kiírja a saját nevét. 1682 01:15:47,050 --> 01:15:53,220 De ha azt mondom, viszlát osztály, azt tapasztaljuk, hogy ez a program látszólag végigmegy 1683 01:15:53,220 --> 01:15:57,030 át az egyes szavak, amelyeket írt a billentyűket. 1684 01:15:57,030 --> 01:16:02,050 És az eszközöket, amelyek segítségével fogunk hozzáférni szó, hogy a felhasználó 1685 01:16:02,050 --> 01:16:06,780 beírt a prompt módosítja fő kezdődően ezen a hétvégén, az int 1686 01:16:06,780 --> 01:16:10,710 main (void) hova int main (argc, argv). 1687 01:16:10,710 --> 01:16:13,700 És így fog megszületni parancssori argumentumok. 1688 01:16:13,700 --> 01:16:17,210 És ha egyszer igazán kifinomult most ezt, akkor képes lesz arra, hogy írjon 1689 01:16:17,210 --> 01:16:21,370 Tényleg trippy programok, mint például ez itt, amely fölé és azon túl 1690 01:16:21,370 --> 01:16:25,520 bizonyos funkcióit tettünk eddig, de minden nagyon erős. 1691 01:16:25,520 --> 01:16:27,330 >> Így fogjuk elhagyni ezt e a képernyőn. 1692 01:16:27,330 --> 01:16:29,160 És mi lesz látni hétfőn.