1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] David J. Malan V redu. 2 00:00:08,160 --> 00:00:11,170 To je CS50, in to je konec tedna 2. 3 00:00:11,170 --> 00:00:14,650 Če pričakujete, da boste lačni po tem času jutri, vem, da bomo 4 00:00:14,650 --> 00:00:18,920 sklicati kot majhno skupino jutri, v četrtek, 01:15. 5 00:00:18,920 --> 00:00:21,460 Tam je to URL tukaj, če želite RSVP. 6 00:00:21,460 --> 00:00:25,270 Vesolje je omejeno, zato vas prosimo, oprostite, če je oblika napolni do takrat, ko 7 00:00:25,270 --> 00:00:26,680 izpolnite to. 8 00:00:26,680 --> 00:00:29,400 Še en URL pa se, da bi bilo koristno, je to. 9 00:00:29,400 --> 00:00:32,409 >> Torej, gre le za čas enega meseca, tečaj se bo na voljo 10 00:00:32,409 --> 00:00:36,090 še toliko bolj na splošno prek EDX, prek katerega bodo ljudje na internetu je 11 00:00:36,090 --> 00:00:39,580 lahko sledite skupaj sodelovati pri opravljanju zelo aktivno, v resnici. 12 00:00:39,580 --> 00:00:43,070 Prišli bodo z uporabo aparata CS50 in CS50 razpravljali in večina 13 00:00:43,070 --> 00:00:45,840 različnih programskih orodij, ki smo že bili, ki uporabljajo ta semester. 14 00:00:45,840 --> 00:00:49,030 In ena od pobud bi radi prevzeli kot poskus letos 15 00:00:49,030 --> 00:00:53,120 je videti, koliko vsebine se lahko prenesejo v drugo govorijo in 16 00:00:53,120 --> 00:00:54,110 pisni jezik. 17 00:00:54,110 --> 00:00:58,000 Torej, če imate morda interes za sodelovanje pri tem projektu, pri čemer 18 00:00:58,000 --> 00:01:02,090 bomo poskrbeli English prepisov in podnapisov za tečaj je 19 00:01:02,090 --> 00:01:05,190 predavanja in kratke hlače, seminarji in drugi profili in podobno - 20 00:01:05,190 --> 00:01:08,700 če govorim tekoče ali berljivost nek drug jezik, bomo 21 00:01:08,700 --> 00:01:12,240 radi, da vas vključijo v ta projekt, s katerim boste lahko na enem ali več od 22 00:01:12,240 --> 00:01:15,340 video posnetkov, jih prevede v jezik, ki ga poznamo zelo dobro. 23 00:01:15,340 --> 00:01:19,050 Da bi vam občutek vmesnika, tam je spletni uporabniški vmesnik 24 00:01:19,050 --> 00:01:22,330 da bomo uporabljali, da bo v bistvu ustvarili uporabniški vmesnik, kot je ta. 25 00:01:22,330 --> 00:01:24,520 To se je učil me nekaj Halloween nazaj. 26 00:01:24,520 --> 00:01:27,710 In na desni strani tam v črni barvi dostavo v teh časovnih žigov, 27 00:01:27,710 --> 00:01:31,300 boste videli različne stvari, ki ste jih dobili iz mojih ust tisti dan. 28 00:01:31,300 --> 00:01:34,660 In nato pod njo, boste lahko prevedli v drug jezik. 29 00:01:34,660 --> 00:01:37,840 Točno, kaj je preslikava med, v tem primeru, angleški 30 00:01:37,840 --> 00:01:38,660 in, recimo, španski. 31 00:01:38,660 --> 00:01:40,480 Tako da je pravzaprav zelo uporabniku prijazno orodje. 32 00:01:40,480 --> 00:01:43,690 Lahko nazaj in hitro naprej zelo hitro z bližnjicami na tipkovnici. 33 00:01:43,690 --> 00:01:46,710 Torej, če bi želeli sodelovati v tem poskusu in so vaše besede 34 00:01:46,710 --> 00:01:50,730 videli in brali potencialno tisoče ljudi, tam, prosim vas 35 00:01:50,730 --> 00:01:51,960 lahko sodeloval. 36 00:01:51,960 --> 00:01:56,940 >> Zdaj eno besedo o mucka od ponedeljka, da ne smo poslali preveč 37 00:01:56,940 --> 00:01:58,120 strašljivo sporočilo. 38 00:01:58,120 --> 00:02:02,130 Se zavedaš, da so uradne ure in kot kažejo oddelki nasvet, se 39 00:02:02,130 --> 00:02:05,110 Zasnova Seveda je zelo veliko, da so študenti sodelujejo in 40 00:02:05,110 --> 00:02:09,250 v pogovoru z dela zaradi težav in problemov sklopov skupaj. 41 00:02:09,250 --> 00:02:13,630 In res je linija pravkar prihaja do, spet je delo, ki ga na koncu 42 00:02:13,630 --> 00:02:16,420 morajo predložiti mora biti svoje. 43 00:02:16,420 --> 00:02:19,080 In tako je, čisto iskreno - v uradnih ur, to je povsem normalno - 44 00:02:19,080 --> 00:02:21,560 to je popolnoma mogoče pričakovati, čeprav - za klepet z nekaterimi 45 00:02:21,560 --> 00:02:22,370 prijatelji poleg vas. 46 00:02:22,370 --> 00:02:25,240 Če on ali ona se bori z nekaterimi temo in si tako, oh, tudi kaj 47 00:02:25,240 --> 00:02:27,750 ti dam vpogled v nekatere vrstice kode, ki sem jo napisal. 48 00:02:27,750 --> 00:02:28,290 To je v redu. 49 00:02:28,290 --> 00:02:28,700 To se zgodi. 50 00:02:28,700 --> 00:02:31,580 In to je zelo ugodno, mislim, da s procesom učenja. 51 00:02:31,580 --> 00:02:35,270 Če je črta, spet dobi, prestopil je, ko je glava nekako nagnjen preko 52 00:02:35,270 --> 00:02:38,800 tukaj veliko preveč sekund ali minut za to res, da samo še 53 00:02:38,800 --> 00:02:41,250 je odblokiranje priložnost za tvojega prijatelja. 54 00:02:41,250 --> 00:02:43,870 In seveda, če se stvari izmenjujejo prek e-pošte in Dropbox in 55 00:02:43,870 --> 00:02:45,350 podobno, tam je meja. 56 00:02:45,350 --> 00:02:48,940 Torej, z vsemi sredstvi, se počutite udobno in vas spodbuja, da klepet s prijatelji 57 00:02:48,940 --> 00:02:51,270 in sošolci o psets in še več. 58 00:02:51,270 --> 00:02:54,680 In samo zavedaš, da tisto, kar v končni fazi predložiti mora biti res 59 00:02:54,680 --> 00:02:57,780 proizvod vaše ustvarjanje in ne kdo drug. 60 00:02:57,780 --> 00:03:01,010 >> Torej, v tem smislu v cuddly bitij, poskusite 61 00:03:01,010 --> 00:03:02,820 poznam tega tipa tukaj. 62 00:03:02,820 --> 00:03:06,180 Torej, to je grozljivo cheesy film z leti. 63 00:03:06,180 --> 00:03:08,680 Je kdo tukaj videl Spaceballs? 64 00:03:08,680 --> 00:03:09,120 V redu. 65 00:03:09,120 --> 00:03:10,220 Tako lepo število tukaj. 66 00:03:10,220 --> 00:03:13,840 To je torej naša čudovito akademski način uvajanja danes končno 67 00:03:13,840 --> 00:03:15,130 pojem kriptografije. 68 00:03:15,130 --> 00:03:19,010 In tako eden od domensko specifičnih problemov pset 2, ki bo začela 69 00:03:19,010 --> 00:03:22,770 od konca jutri zvečer, je, da se potopite v svet kriptografije, ki 70 00:03:22,770 --> 00:03:26,380 je umetnost šifriranje ali premešavo informacije. 71 00:03:26,380 --> 00:03:30,160 In to na koncu se nanaša na svetu varnosti. 72 00:03:30,160 --> 00:03:34,440 >> Sedaj varnosti za večino nas na voljo v obliki dokaj preprostega mehanizmov. 73 00:03:34,440 --> 00:03:36,920 Vsi nas imajo imena in gesla. 74 00:03:36,920 --> 00:03:41,350 In vsi so zelo slabe imena in gesla, verjetno. 75 00:03:41,350 --> 00:03:45,250 Če vaše geslo je isti na več spletnih mestih, ki verjetno ne 76 00:03:45,250 --> 00:03:47,920 najboljša ideja, saj bomo razpravljali proti koncu semester. 77 00:03:47,920 --> 00:03:51,680 Če je geslo napisano na lepljivo opombo - ni šala - na vašem 78 00:03:51,680 --> 00:03:55,130 monitor, da tudi ni nujno najboljša oblika, vendar precej pogosti 79 00:03:55,130 --> 00:03:56,140 pojav. 80 00:03:56,140 --> 00:04:00,420 In če ga ne uporabljate kriptografije za šifriranje gesel, so 81 00:04:00,420 --> 00:04:01,610 še posebej ranljivi. 82 00:04:01,610 --> 00:04:04,670 Torej, če mislite, da ste pametni pa super, saj ima skrito besedo 83 00:04:04,670 --> 00:04:07,740 dokumentirati nekje na trdem disku, ki je vse svoje gesla, vendar 84 00:04:07,740 --> 00:04:10,550 je v mapi, da nihče ne bo videti v, da tudi ni zelo 85 00:04:10,550 --> 00:04:11,540 varen mehanizem. 86 00:04:11,540 --> 00:04:15,100 In kaj pset 2 bo uvedla je to umetnost kriptografije in 87 00:04:15,100 --> 00:04:18,300 kodiranja informacij, tako da so stvari, kot so gesla 88 00:04:18,300 --> 00:04:19,500 še toliko bolj varen. 89 00:04:19,500 --> 00:04:24,500 Da bi motivirali to zelo realnem svetu težave z zelo ne-realnem svetu 90 00:04:24,500 --> 00:04:28,740 Scenarij, naj vam predstavim enega od naših najljubših posnetkov tukaj od tega 91 00:04:28,740 --> 00:04:29,895 Film, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [VIDEO PREDVAJANJE] 93 00:04:30,565 --> 00:04:32,995 -Čelada, ti fanatik, kaj se dogaja? 94 00:04:32,995 --> 00:04:34,730 Kaj delaš z mojo hčerko? 95 00:04:34,730 --> 00:04:38,960 -Dovolite mi, da predstavim briljantno mlado plastični kirurg, dr Philip 96 00:04:38,960 --> 00:04:43,290 Schlotkin, največji nosu človek v celotni 97 00:04:43,290 --> 00:04:45,526 Vesolje in Beverly Hills. 98 00:04:45,526 --> 00:04:46,450 -Vaše veličanstvo. 99 00:04:46,450 --> 00:04:47,380 -Nos? 100 00:04:47,380 --> 00:04:48,035 Ne razumem. 101 00:04:48,035 --> 00:04:49,480 Ona je že imela operacijo nosu. 102 00:04:49,480 --> 00:04:51,490 Bilo je sladko 16 prisotna. 103 00:04:51,490 --> 00:04:53,090 Ne, to ni tisto, kar misliš. 104 00:04:53,090 --> 00:04:55,150 To je veliko, veliko slabše. 105 00:04:55,150 --> 00:04:59,860 Če ne mi kombinacijo za ščit zraka, bo dr Schlotkin 106 00:04:59,860 --> 00:05:04,135 dal svojo hčer nazaj svojo staro nos. 107 00:05:04,135 --> 00:05:05,385 -Ne! 108 00:05:08,202 --> 00:05:10,186 Kje si dobil to? 109 00:05:10,186 --> 00:05:11,178 V redu. 110 00:05:11,178 --> 00:05:11,674 Jaz bom povedal. 111 00:05:11,674 --> 00:05:12,666 Jaz bom povedal. 112 00:05:12,666 --> 00:05:14,154 -Ne, očka, ne. 113 00:05:14,154 --> 00:05:15,150 Ne smeš. 114 00:05:15,150 --> 00:05:16,460 Prav imaš, draga moja. 115 00:05:16,460 --> 00:05:18,450 Pogrešal bom svoj novi nos. 116 00:05:18,450 --> 00:05:21,550 Ne bom jim povedal, da kombinacija ni važno kaj. 117 00:05:21,550 --> 00:05:23,100 -Zelo dobro. 118 00:05:23,100 --> 00:05:25,510 Dr Schlotkin, da svoje najhujše. 119 00:05:25,510 --> 00:05:26,760 -Z veseljem. 120 00:05:30,560 --> 00:05:31,180 -Ne! 121 00:05:31,180 --> 00:05:33,450 Čakaj, čakaj. 122 00:05:33,450 --> 00:05:34,770 Jaz bom povedal. 123 00:05:34,770 --> 00:05:36,400 Jaz bom povedal. 124 00:05:36,400 --> 00:05:38,630 -Vedel sem, da bo delovalo. 125 00:05:38,630 --> 00:05:42,040 V redu, daj mi. 126 00:05:42,040 --> 00:05:46,890 -Kombinacija je ena. 127 00:05:46,890 --> 00:05:47,290 In-One. 128 00:05:47,290 --> 00:05:48,183 In-One. 129 00:05:48,183 --> 00:05:48,950 Dva. 130 00:05:48,950 --> 00:05:49,370 Dva. 131 00:05:49,370 --> 00:05:50,450 Dva. 132 00:05:50,450 --> 00:05:50,715 Tri- 133 00:05:50,715 --> 00:05:51,380 -Tri. 134 00:05:51,380 --> 00:05:52,390 -Tri. 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 Pet- 139 00:05:56,580 --> 00:05:57,120 -Pet. 140 00:05:57,120 --> 00:05:58,560 -Pet. 141 00:05:58,560 --> 00:06:03,770 Torej kombinacija je ena, dva, tri, štiri, pet. 142 00:06:03,770 --> 00:06:06,745 To je najbolj neumna kombinacija, ki sem jih slišal v svojem življenju. 143 00:06:06,745 --> 00:06:09,290 To so stvari idiot bi na njegovi prtljagi. 144 00:06:09,290 --> 00:06:11,540 Hvala, vaša visokost. 145 00:06:11,540 --> 00:06:12,940 Kaj ste naredili? 146 00:06:12,940 --> 00:06:14,230 I-izklopljen steno. 147 00:06:14,230 --> 00:06:14,630 -Ne, nisi. 148 00:06:14,630 --> 00:06:15,430 Spet si ugasnil cel film. 149 00:06:15,430 --> 00:06:16,722 -Verjetno sem pritisnil napačen gumb. 150 00:06:16,722 --> 00:06:18,078 No, daj nazaj. 151 00:06:18,078 --> 00:06:18,805 Postavite film nazaj. 152 00:06:18,805 --> 00:06:19,080 -Da, gospod. 153 00:06:19,080 --> 00:06:19,270 Da, gospod. 154 00:06:19,270 --> 00:06:19,830 -Gremo, Erna. 155 00:06:19,830 --> 00:06:20,270 Daj no, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Seveda veš, da bom še vedno vam račun za to. 157 00:06:27,400 --> 00:06:28,325 No, pa to deluje? 158 00:06:28,325 --> 00:06:29,550 Kje so vrata? 159 00:06:29,550 --> 00:06:29,910 -To je delal, gospod. 160 00:06:29,910 --> 00:06:30,770 Imamo kombinacijo. 161 00:06:30,770 --> 00:06:31,390 -Krasno. 162 00:06:31,390 --> 00:06:35,630 Zdaj bomo lahko vsak dih svežega zraka iz planeta Druidia. 163 00:06:35,630 --> 00:06:36,550 Kakšna je kombinacija? 164 00:06:36,550 --> 00:06:38,805 -Ena, dva, tri, štiri, pet. 165 00:06:38,805 --> 00:06:40,610 -Ena, dva, tri, štiri, pet? 166 00:06:40,610 --> 00:06:41,070 -Da. 167 00:06:41,070 --> 00:06:41,760 -To je neverjetno. 168 00:06:41,760 --> 00:06:45,200 Imam isto kombinacijo na mojo prtljago. 169 00:06:45,200 --> 00:06:47,800 Pripravite Spaceball 1 za takojšen odhod. 170 00:06:47,800 --> 00:06:48,536 -Da, gospod. 171 00:06:48,536 --> 00:06:52,350 In spremenite kombinacijo na mojo prtljago. 172 00:06:52,350 --> 00:06:53,250 -Au! 173 00:06:53,250 --> 00:06:55,020 [END VIDEO PREDVAJANJE] 174 00:06:55,020 --> 00:06:57,470 >> David J. Malan: Neverjetno film zdaj bi morali vsi videti. 175 00:07:00,600 --> 00:07:06,540 Torej, tukaj je, da ozadje z negotovimi podatkov prihaja priložnost za 176 00:07:06,540 --> 00:07:07,790 šifriranje in ga scramble. 177 00:07:07,790 --> 00:07:11,060 In tako je to, na primer, je primer šifrirano sporočilo. 178 00:07:11,060 --> 00:07:12,980 To je dejansko nekaj reče v angleščini. 179 00:07:12,980 --> 00:07:14,750 Ampak to očitno ni popolnoma jasno. 180 00:07:14,750 --> 00:07:17,360 In bomo cel krog danes draži narazen, kaj je ta skrivnost 181 00:07:17,360 --> 00:07:18,380 Sporočilo tukaj. 182 00:07:18,380 --> 00:07:22,370 Toda v resničnem svetu računalnikov, stvari sploh ne izgleda, da bi lahko 183 00:07:22,370 --> 00:07:23,440 je angleški stavki. 184 00:07:23,440 --> 00:07:27,500 Na primer, to je tisto, kar boste morda našli na standardnem Linux ali Mac ali 185 00:07:27,500 --> 00:07:32,080 Unix računalnik v datoteko, ki je bil nekoč imenovan geslo datoteko. 186 00:07:32,080 --> 00:07:34,170 Danes, je bil prestavljen na drugih mestih. 187 00:07:34,170 --> 00:07:38,660 Ampak, če pogledaš na pravem mestu, v sistemu, boste videli, ne samo vaše 188 00:07:38,660 --> 00:07:41,430 ime ali drugih oseb v sistemu, vendar boste videli 189 00:07:41,430 --> 00:07:43,410 šifrirano različico svoje geslo. 190 00:07:43,410 --> 00:07:47,800 Dejansko je beseda grobnica je nakazovalo, da je naslednja stvar šifrirana. 191 00:07:47,800 --> 00:07:52,030 In to serijo navidez naključnih črk in znakov in številk, 192 00:07:52,030 --> 00:07:56,370 tako naprej mogoče dešifrirati samo s splošno vedo nekaj skrivnosti - 193 00:07:56,370 --> 00:07:58,600 Skrivnost besedo, skrivna številka. 194 00:07:58,600 --> 00:08:02,760 In tako res, umetnost kriptografije navsezadnje izvira zaupanje nekaterih 195 00:08:02,760 --> 00:08:05,700 sortiranje in vedo nekaj, kar nekdo drug ne. 196 00:08:05,700 --> 00:08:10,010 Mi bomo raziskovali to v malo bolj podrobno danes in v pset se nadaljuje. 197 00:08:10,010 --> 00:08:11,860 >> In sedaj beseda o ustreznosti / neustreznosti. 198 00:08:11,860 --> 00:08:15,250 Torej, še posebej pa so, kot nekateri izmed vas vrgli v pset 1, naprav in 199 00:08:15,250 --> 00:08:18,390 zelo nov svet za sebe, spoznal, da so frustracije in 200 00:08:18,390 --> 00:08:21,340 zmedenost in samo tehnične težave so za pričakovati. 201 00:08:21,340 --> 00:08:24,410 Še posebej s prvo pset, kjer je samo toliko novega, ravno 202 00:08:24,410 --> 00:08:28,830 seznanjeni z ls in cd in vse te skrivnostne ukaze v novem okolju. 203 00:08:28,830 --> 00:08:32,679 In to je ločen od dejanskega materiala in se programiranja. 204 00:08:32,679 --> 00:08:35,960 Torej zavedati tudi, da gotovo obstajajo uradne ure, ki obstajajo v 205 00:08:35,960 --> 00:08:36,770 podporna struktura. 206 00:08:36,770 --> 00:08:38,620 Skupine začeli to prihaja nedelja. 207 00:08:38,620 --> 00:08:41,990 Najpomembneje pa je, če se počutiš tako, da to ni 208 00:08:41,990 --> 00:08:44,420 svet za vas, razumite, da res ne vzemite čas. 209 00:08:44,420 --> 00:08:47,520 In če ne bi bilo za to priložnost pred leti me sprejemanja razred 210 00:08:47,520 --> 00:08:50,840 / neustreznosti, po pravici povedano, nikoli ne bi niti stopil v razredu. 211 00:08:50,840 --> 00:08:53,520 In lahko spremenite do, recimo, 5. ponedeljek v teku. 212 00:08:53,520 --> 00:08:57,110 Torej, če ste na robu zdaj spoznali, da namesto glavo v nekaterih drugih 213 00:08:57,110 --> 00:09:01,000 Vode v celoti, pa gotovo menijo, da samo spremenili / neustreznosti. 214 00:09:01,000 --> 00:09:03,750 Tudi tu ni ravno ta kultura tukaj na Harvardu sprejemati stvari 215 00:09:03,750 --> 00:09:08,080 / neustreznosti, ker vsi res želi doseči ali presegla. 216 00:09:08,080 --> 00:09:11,470 Ampak odkrito povedano, to je čudovit način, da poskuša nekaj, da morda ne bo 217 00:09:11,470 --> 00:09:13,110 poznati za vas. 218 00:09:13,110 --> 00:09:17,090 In boste na koncu delaš v večini primerov zelo drobnih, morda 219 00:09:17,090 --> 00:09:18,040 veliko na svoj presenečenje. 220 00:09:18,040 --> 00:09:20,850 In bolj konkretno, kaj si mislim o ustreznosti / neustreznosti običajno počne, 221 00:09:20,850 --> 00:09:23,350 še posebej, kot ste verjetno doživeli s pset 0, če ste dodali 222 00:09:23,350 --> 00:09:27,200 v 10 ur, 15 ur, 25 ur v nekaterih pset - in ti si samo tolkel 223 00:09:27,200 --> 00:09:28,180 glavo ob zid, 224 00:09:28,180 --> 00:09:29,850 in to je že zelo pozno ponoči, 225 00:09:29,850 --> 00:09:31,880 ampak ste posneli pset kot 90% poti, 226 00:09:31,880 --> 00:09:33,780 veš, da ne morem razbrati eno stvar - 227 00:09:33,780 --> 00:09:36,830 / neustreznosti res potrebno rob off razreda, kot je ta, v katerem lahko razvrstite 228 00:09:36,830 --> 00:09:39,150 z veseljem rekel ok, vem, da to ni popoln. 229 00:09:39,150 --> 00:09:40,470 Ampak sem delal mojo rit off na to. 230 00:09:40,470 --> 00:09:42,410 Sem zelo zadovoljen s tem, kje je končal. 231 00:09:42,410 --> 00:09:44,780 In da bo izpolnil pričakovanja za / neustreznosti. 232 00:09:44,780 --> 00:09:46,850 Torej, imejte to v mislih. 233 00:09:46,850 --> 00:09:47,140 >> V redu. 234 00:09:47,140 --> 00:09:50,980 Tisti med vami, ki so si prizadevale, da uporabite Harvard University Wi-Fi vedeti 235 00:09:50,980 --> 00:09:54,780 da obstaja CS50 SSID, Wi-Fi povezave plava okoli, da 236 00:09:54,780 --> 00:09:56,520 morda imeli več sreče za. 237 00:09:56,520 --> 00:09:59,430 To je nekoliko ironično, da je geslo za to - če bi želeli poskusiti 238 00:09:59,430 --> 00:10:03,080 povezovanju s tem za boljše hitrosti in nam povejte, če to ni bolje - 239 00:10:03,080 --> 00:10:09,240 ena, dva, tri, štiri, pet, vse tja do 8, ker je 8 240 00:10:09,240 --> 00:10:10,270 bolj varna kot pet let. 241 00:10:10,270 --> 00:10:15,520 Torej, če potrebujete Wi-Fi gesla, brezžično povezavo z CS50 tukaj. 242 00:10:15,520 --> 00:10:16,950 Ena, dva, tri, štiri, pet, šest, sedem, osem. 243 00:10:16,950 --> 00:10:20,440 In post na CS50 Pogovorite se, če imate še vedno občasne težave z omrežno povezljivostjo, 244 00:10:20,440 --> 00:10:24,880 in bomo o tem obvestili pooblastila, ki jih poznate, za ta prostor. 245 00:10:24,880 --> 00:10:25,180 >> V redu. 246 00:10:25,180 --> 00:10:30,350 Tako hitro teaser, zlasti za tiste, ki ste fan fantje ali dekleta 247 00:10:30,350 --> 00:10:31,900 vse Apple stvari. 248 00:10:31,900 --> 00:10:37,566 Kaj sem izkopal iz nekaj let nazaj, je bila to sliko tukaj, ilock.c, samo da bi 249 00:10:37,566 --> 00:10:40,930 vrsta čim bolj konkretna in bolj zapleten nekaj bolj temeljnega C 250 00:10:40,930 --> 00:10:42,350 Programi, ki jih niste napisali. 251 00:10:42,350 --> 00:10:44,360 Zato sem odprl to datoteko, ilock.c. 252 00:10:44,360 --> 00:10:46,830 To je na voljo na predavanjih strani za danes. 253 00:10:46,830 --> 00:10:49,470 Na levi strani, boste videli dolg seznam funkcij. 254 00:10:49,470 --> 00:10:51,860 Torej človek, ki je napisal to napisala veliko funkcij, 255 00:10:51,860 --> 00:10:53,290 več kot le glavni. 256 00:10:53,290 --> 00:10:55,490 Bil je cel kup knjižnic tukaj. 257 00:10:55,490 --> 00:11:00,450 In če smo začeli pomikati skozi, kaj to sploh je, je zelo 258 00:11:00,450 --> 00:11:04,670 1. Menim, da tresk za izvirno iPhone. 259 00:11:04,670 --> 00:11:08,000 Ko boste želeli Bjekstvo iz zapora iPhone izvirno, kar pomeni, untether 260 00:11:08,000 --> 00:11:11,800 da od AT & T in dejansko namestiti posebno programsko opremo na njem in stvari 261 00:11:11,800 --> 00:11:13,510 da Apple ni želel, da ljudje naredijo - 262 00:11:13,510 --> 00:11:17,020 no, kdo je vzel čas, da ugotovimo, kako točno bi lahko izkoristili 263 00:11:17,020 --> 00:11:20,880 programske napake, napake, žuželke, v programsko opremo Apple. 264 00:11:20,880 --> 00:11:22,650 In tako se je rodil ilock.c. 265 00:11:22,650 --> 00:11:26,670 Da če ga pripravijo na računalnik in ga namestiti na iPhone, ki je 266 00:11:26,670 --> 00:11:29,810 je bil priključen na računalnik preko, recimo, USB kabel, bi to vam 267 00:11:29,810 --> 00:11:33,360 upravne ali koren privilegiji na vaš iPhone in vam naredil precej 268 00:11:33,360 --> 00:11:34,170 karkoli želite. 269 00:11:34,170 --> 00:11:36,740 >> In tako je bilo to zanimivo igro mačke in miši med Apple in 270 00:11:36,740 --> 00:11:39,920 preostali del sveta, zlasti če se, tako kot mnoga podjetja, poskusite, da se zaskoči 271 00:11:39,920 --> 00:11:43,220 njihove stvari navzdol, tako da lahko le to z njim, kaj nameravajo. 272 00:11:43,220 --> 00:11:46,620 Ampak hvala za ljudi, kot je ta, in njihovo razumevanje nizki ravni 273 00:11:46,620 --> 00:11:50,580 Podrobnosti in, v tem primeru, C programiranje in veliko poznanih konstruktov 274 00:11:50,580 --> 00:11:54,630 da smo začeli igrati z, ste lahko resnično vzvoda 275 00:11:54,630 --> 00:11:59,050 strojne opreme na način, ki vam ustreza, in ni nujno, da nekaj podjetij subjekt. 276 00:11:59,050 --> 00:12:01,360 Tako na primer, nimam pojma, kaj vse to počne. 277 00:12:01,360 --> 00:12:03,220 Ampak GetVersion zveni zelo preprosto. 278 00:12:03,220 --> 00:12:05,480 In izgleda, da je to funkcija, ki je napisal ta oseba. 279 00:12:05,480 --> 00:12:09,240 Vzemite neko celo število kot argument, ne vrne ničesar, ampak 280 00:12:09,240 --> 00:12:13,080 Zdi se, da z zanko za zanko tukaj in če je pogoj, če je pogoj, 281 00:12:13,080 --> 00:12:15,620 odmor, in nekako se nanaša na različico številk. 282 00:12:15,620 --> 00:12:16,700 Če smo se pomaknite navzdol - 283 00:12:16,700 --> 00:12:19,570 čeprav je veliko teh ključnih besed, se bodo nova, in tam 284 00:12:19,570 --> 00:12:22,590 cel kup funkcij tukaj nikoli nismo videli in ne bodo nikoli videli več 285 00:12:22,590 --> 00:12:23,830 potek semestra - 286 00:12:23,830 --> 00:12:27,150 Na koncu dneva pa sledi enaka pravila in logiko, da smo bili 287 00:12:27,150 --> 00:12:28,760 igranje z doslej. 288 00:12:28,760 --> 00:12:34,220 Torej, to je sedaj prestar za crack vaš iPhone 3s ali 4s ali kmalu 5s v teh dneh, 289 00:12:34,220 --> 00:12:37,320 vendar vem, da je vse zelo izhaja iz tega sveta, da smo 290 00:12:37,320 --> 00:12:38,430 vrgli. 291 00:12:38,430 --> 00:12:41,900 >> Dajmo torej pogled na malo bolj preprost primer. 292 00:12:41,900 --> 00:12:46,100 Ta je, samo da bi dobili ogreva z nekaj sintakse ter tudi nekatere druge podatke, 293 00:12:46,100 --> 00:12:49,240 Tip, ki smo govorili, niso pa res videl v C. Torej je to 294 00:12:49,240 --> 00:12:51,680 datoteka z imenom positive1.c. 295 00:12:51,680 --> 00:12:55,120 In na pripombe na vrhu, to samo zahteva, da si zagotovi 296 00:12:55,120 --> 00:12:55,960 pozitivno število. 297 00:12:55,960 --> 00:12:59,530 Torej je primer do-while zanko, ki je prijazen do uporabnika interaktivno 298 00:12:59,530 --> 00:13:01,980 programov, kjer boste morali povedati, da uporabnik nekaj storiti. 299 00:13:01,980 --> 00:13:05,190 In če ne sodelujejo, si kričati na njih ali zavrne njihov prispevek. 300 00:13:05,190 --> 00:13:11,610 Zadeva točke, bom naredil linije 19 do 24, v kolikor ima uporabnik 301 00:13:11,610 --> 00:13:14,310 ni mi dal pozitivno število. 302 00:13:14,310 --> 00:13:20,400 Zdaj je to podrobnost tukaj na liniji 18, zakaj sem nad izjavo n ves ta 303 00:13:20,400 --> 00:13:24,490 zanka konstrukt v nasprotju tik linije 22, kjer sem 304 00:13:24,490 --> 00:13:26,880 dejansko skrbi, da bi dobili n? 305 00:13:26,880 --> 00:13:27,330 Ja? 306 00:13:27,330 --> 00:13:27,780 [Neslišno] 307 00:13:27,780 --> 00:13:29,040 >> David J. Malan: Ja, tako je to vprašanje obsega. 308 00:13:29,040 --> 00:13:30,850 In v obdobju enostavnih, kaj nanaša na področje? 309 00:13:34,690 --> 00:13:36,610 Ja? 310 00:13:36,610 --> 00:13:37,860 [Neslišno] 311 00:13:40,040 --> 00:13:41,105 David J. Malan: Lahko govoriš malo glasneje? 312 00:13:41,105 --> 00:13:43,450 ZVOČNIK 1: Če imate dostop do določene spremenljivke. 313 00:13:43,450 --> 00:13:45,170 David J. Malan: Perfect. 314 00:13:45,170 --> 00:13:47,360 Če imate dostop do določene spremenljivke. 315 00:13:47,360 --> 00:13:50,400 In na splošno pravilo palca je bila doslej, da je obseg nekaterih 316 00:13:50,400 --> 00:13:55,860 spremenljivka je opredeljena z najnovejšimi zavite oklepaje, ki ste jih videli. 317 00:13:55,860 --> 00:14:02,010 In tako v tem primeru, če sem naredil napako razglasitvi n na spletu 22, 318 00:14:02,010 --> 00:14:03,010 Ta linija bi delovalo. 319 00:14:03,010 --> 00:14:10,990 Rad bi dobil int, in jaz bi ga v tem spremenljivke n v skladu 22. 320 00:14:10,990 --> 00:14:16,900 Vendar bi kateri vrstica kode zdaj nimam pojma, kaj sem govoril? 321 00:14:16,900 --> 00:14:22,650 Torej, 25, in se izkaže, 24, kot tudi, ker v tem primeru ne spada 322 00:14:22,650 --> 00:14:23,610 V zavitih oklepajih. 323 00:14:23,610 --> 00:14:27,280 Torej samo malo nadloga, ampak zelo enostavno rešiti tako, da preprosto razglasitvi 324 00:14:27,280 --> 00:14:30,140 spremenljivka zunaj same funkcije. 325 00:14:30,140 --> 00:14:32,600 >> Zdaj bomo videli kasneje danes, lahko greš korak naprej. 326 00:14:32,600 --> 00:14:34,860 In bi lahko celo malo leni - 327 00:14:34,860 --> 00:14:37,320 in to ni priporočljiv, na splošno - 328 00:14:37,320 --> 00:14:42,260 vendar pa bi lahko celo dobili leni in dal spremenljivko svetu, tako rekoč ni 329 00:14:42,260 --> 00:14:46,670 znotraj funkcije, ne znotraj zanke, vendar v samo datoteko, zunaj 330 00:14:46,670 --> 00:14:49,600 vseh funkcij ste napisali, kot sem tukaj na spletu 15. 331 00:14:49,600 --> 00:14:51,160 Ampak to je na splošno namrščil. 332 00:14:51,160 --> 00:14:55,680 Toda zavedati, da je to rešitev, včasih na druge težave, kot bomo 333 00:14:55,680 --> 00:14:56,620 sčasoma videli. 334 00:14:56,620 --> 00:14:58,130 Torej za zdaj, ga bomo kar tako pustili. 335 00:14:58,130 --> 00:15:01,030 Toda poglejmo, če lahko zapišemo samo to, da začnete izražanje sebe 336 00:15:01,030 --> 00:15:01,990 malo drugače. 337 00:15:01,990 --> 00:15:05,330 >> Torej ta program, tako da je jasno, je positive1. 338 00:15:05,330 --> 00:15:11,810 Naj gredo naprej in tukaj v moji terminalsko okno, da positive1, Enter. 339 00:15:11,810 --> 00:15:12,740 Pripravlja, v redu. 340 00:15:12,740 --> 00:15:14,910 Jaz grem teči positive1, pritisnite tipko Enter. 341 00:15:14,910 --> 00:15:16,820 Zahtevam, da mi daš pozitivno celo število. 342 00:15:16,820 --> 00:15:18,260 Jaz bom rekel -1. 343 00:15:18,260 --> 00:15:18,910 To ni delovalo. 344 00:15:18,910 --> 00:15:22,150 0, 99, se zdi, da deluje. 345 00:15:22,150 --> 00:15:23,570 Morda ne najbolj strog preskus. 346 00:15:23,570 --> 00:15:26,480 Ampak vsaj to je lepo sanity preverjanje, da smo na pravi poti. 347 00:15:26,480 --> 00:15:29,240 Torej, zdaj pa grem naprej in odprite različico 2 tega. 348 00:15:29,240 --> 00:15:32,500 In kaj je drugače že? 349 00:15:32,500 --> 00:15:35,140 Izvaja isto stvar. 350 00:15:35,140 --> 00:15:40,660 Toda kaj skakali kot očitno tokrat drugače? 351 00:15:40,660 --> 00:15:42,560 Ja, tako je to int v zeleni barvi. 352 00:15:42,560 --> 00:15:45,980 Gedit je poudarjeno v zeleni to ključno besedo, znano kot int, 353 00:15:45,980 --> 00:15:47,000 ki je podatkovni tip. 354 00:15:47,000 --> 00:15:51,080 Saj to, da ni vgrajena v vseh različicah C. morate vključiti 355 00:15:51,080 --> 00:15:52,010 posebno knjižnico. 356 00:15:52,010 --> 00:15:54,770 V našem primeru sem vključil CS50 knjižnico, tako da smo 357 00:15:54,770 --> 00:15:56,460 dostop do int. 358 00:15:56,460 --> 00:15:59,810 Toda v vrstico 18, se zdi, da ima logično vrednost, tukaj imenujejo hvaležen. 359 00:15:59,810 --> 00:16:01,040 Tako bi jaz imenoval ničesar. 360 00:16:01,040 --> 00:16:04,500 Ampak sem ga imenovali hvaležen, samo da nekako izraziti neko semantično pomen. 361 00:16:04,500 --> 00:16:07,930 Torej, najprej na liniji 18, jaz sem hvaležen, ker očitno ni 362 00:16:07,930 --> 00:16:12,150 Logična vrednost hvaležen je initialized kot neresnično, v skladu 18. 363 00:16:12,150 --> 00:16:16,890 In potem se zdi, kar sem tukaj naredil v vrsticah 21 do 23, je pravkar sem 364 00:16:16,890 --> 00:16:18,610 nekako moj predelajo logiko. 365 00:16:18,610 --> 00:16:21,020 Torej ni funkcionalno drugačen. 366 00:16:21,020 --> 00:16:26,940 Toda v vrstico 22 zdaj sem preveriti, če int si je zagotovila večja od 367 00:16:26,940 --> 00:16:31,120 0, potem pa sem preprosto spremenite vrednost hvaležen, da res. 368 00:16:31,120 --> 00:16:32,290 In zakaj sem to storil? 369 00:16:32,290 --> 00:16:35,600 Ker je v skladu 25, očitno bom preverijo stanje. 370 00:16:35,600 --> 00:16:39,380 Ali to zanko, medtem ko je hvaležen, je napačen. 371 00:16:39,380 --> 00:16:43,610 >> Zato sem predlagal, da je to alternativa za različico 1, ker je vsaj 372 00:16:43,610 --> 00:16:45,130 Malo bolj intuitivno, morda. 373 00:16:45,130 --> 00:16:46,900 To je malo bolj utemeljena v angleščini. 374 00:16:46,900 --> 00:16:51,710 Torej, naredite naslednje ko niste hvaležen, ali pa hvaležen, je napačen. 375 00:16:51,710 --> 00:16:55,890 In tokrat tudi jaz očitno ne skrbi, da se spomnimo, kaj si tipkal 376 00:16:55,890 --> 00:16:57,730 V obvestilu, ker ni spremenljivka n. 377 00:16:57,730 --> 00:16:58,650 Torej, pravzaprav sem - 378 00:16:58,650 --> 00:17:00,080 Malo laž tam. 379 00:17:00,080 --> 00:17:02,770 Funkcionalno je program nekoliko drugačna, ko bomo prišli do dna 380 00:17:02,770 --> 00:17:04,819 Zato, ker jaz ne spomnimo, kaj je n. 381 00:17:04,819 --> 00:17:09,579 Ampak sem hotel dokazati, da sem tudi, da čeprav smo videli GetInt in 382 00:17:09,579 --> 00:17:13,920 GetString ki se uporabljajo na desni strani enačaja doslej, tako da 383 00:17:13,920 --> 00:17:17,160 smemo pozabiti na vrednost, tehnično, to ni nujno potrebno. 384 00:17:17,160 --> 00:17:20,950 Če iz kakršnega koli razloga preprosto ne zanima, da shranite vrednosti, si samo želim, 385 00:17:20,950 --> 00:17:25,710 Za preverjanje vrednosti, opazili, da smo lahko enostavno napisati, da je to GetInt odprt 386 00:17:25,710 --> 00:17:27,000 paren, blizu paren. 387 00:17:27,000 --> 00:17:30,460 Ta funkcija vrača vrednost, kot smo bili pravi. 388 00:17:30,460 --> 00:17:32,010 To se dogaja, da vam vrne int. 389 00:17:32,010 --> 00:17:36,450 In tako, če menite, psihično se to dogaja, ko sem tipa v 99, GetInt 390 00:17:36,450 --> 00:17:38,160 vrne število 99. 391 00:17:38,160 --> 00:17:41,330 In tako konceptualno, to je, kot da moja koda bilo dejansko to. 392 00:17:41,330 --> 00:17:45,880 Torej, če je 99 res večje od 0, potem postane res hvaležen. 393 00:17:45,880 --> 00:17:50,420 Potem linija 25 se zaveda, ooh, smo storili zato, ker sem zdaj hvaležen. 394 00:17:50,420 --> 00:17:54,590 In v skladu 26, smo enostavno reči, hvala za pozitivno celo število, ne glede na to 395 00:17:54,590 --> 00:17:55,710 se je zgodilo, da je. 396 00:17:55,710 --> 00:17:58,900 >> Zdaj pa naredimo rahlo skladenjsko sladkorja tu, tako rekoč. 397 00:17:58,900 --> 00:18:02,990 Bomo videli, če bomo lahko počisti to vrstico 25 s tem tretji in zadnji variance 398 00:18:02,990 --> 00:18:04,640 V positive3. 399 00:18:04,640 --> 00:18:08,250 Torej, opazil edina razlika je, kaj vrstico kode? 400 00:18:11,930 --> 00:18:13,260 Ja, torej 25. 401 00:18:13,260 --> 00:18:15,520 In nikoli nismo zares videl ta trik še. 402 00:18:15,520 --> 00:18:19,510 Vendar pa smo videli klicaj v ponedeljek, ki označuje, kaj? 403 00:18:19,510 --> 00:18:20,970 Torej ne, ali negacija. 404 00:18:20,970 --> 00:18:23,460 Tako da Boolova vrednost in flip svojo vrednost. 405 00:18:23,460 --> 00:18:24,390 Res postane false. 406 00:18:24,390 --> 00:18:25,500 False postane resnica. 407 00:18:25,500 --> 00:18:28,910 Torej je to, jaz bi predlagal, je še malo bolj intuitivna od načina 408 00:18:28,910 --> 00:18:32,200 pisno kodo, ker sem še vedno inicializirati hvaležen napačen. 409 00:18:32,200 --> 00:18:33,530 Še vedno naredite naslednje. 410 00:18:33,530 --> 00:18:35,700 Sem iz hvaležen res, ko pride čas. 411 00:18:35,700 --> 00:18:40,690 Zdaj pa lahko res samo prevesti to kodo ustno leve proti desni, 412 00:18:40,690 --> 00:18:42,550 pa ne hvaležen. 413 00:18:42,550 --> 00:18:46,170 Ker je pok, ali klicaj, pomeni pojem ne, zato pa 414 00:18:46,170 --> 00:18:47,010 Ne hvaležen. 415 00:18:47,010 --> 00:18:49,740 >> Torej, še enkrat, da nismo uvedli nobenih novih konceptov na sebi. 416 00:18:49,740 --> 00:18:53,230 Govorila sva o Booleans nazaj, ko smo igrali z Scratch. 417 00:18:53,230 --> 00:18:55,690 Toda zavedati, zdaj smo lahko le začeli pisati svojo kodo 418 00:18:55,690 --> 00:18:56,550 na veliko različnih načinov. 419 00:18:56,550 --> 00:19:00,010 Torej, še posebej v pset1, če ste nekako bori, da ugotovimo, da je pot do 420 00:19:00,010 --> 00:19:03,400 napisal nek program, odds so imaš srečo, ker se dogaja, da je vsaka 421 00:19:03,400 --> 00:19:05,780 Število rešitev, ki jih lahko srečate. 422 00:19:05,780 --> 00:19:09,850 Na primer, to je le tri za celo najpreprostejši programov. 423 00:19:09,850 --> 00:19:10,180 V redu. 424 00:19:10,180 --> 00:19:13,860 In zdaj opozarjajo na ponedeljek, smo odšli na to opombo s izračunani vrednosti. 425 00:19:13,860 --> 00:19:18,280 Torej, za zelo prvič, smo pisali program, ki ne le imela glavno, 426 00:19:18,280 --> 00:19:22,240 ima tudi svoj lasten funkcijo, ki sem ga napisal tukaj. 427 00:19:22,240 --> 00:19:26,640 Torej, v skladu z 31 34, ki sem jih izvedla kocke funkcijo. 428 00:19:26,640 --> 00:19:27,800 To ni zapletena. 429 00:19:27,800 --> 00:19:29,830 To je samo-krat-krat, v tem primeru. 430 00:19:29,830 --> 00:19:34,920 Toda, kaj je pomembno pa je, da sem ob vložek v obliki in 431 00:19:34,920 --> 00:19:38,910 Jaz sem vrača moč v obliki Občasno-krat. 432 00:19:38,910 --> 00:19:43,940 >> Zdaj sem imel možnost, tako kot sem se z printf samo, da pokličete 433 00:19:43,940 --> 00:19:47,120 Ta funkcija s pozivom kocke funkcijo. 434 00:19:47,120 --> 00:19:49,470 In kocka funkcija traja nekaj vhoda. 435 00:19:49,470 --> 00:19:52,030 In kocka funkcija vrne neko moč. 436 00:19:52,030 --> 00:19:56,660 In tako se, nasprotno, le printf naredila. 437 00:19:56,660 --> 00:19:59,490 To ni vrnil vse, kar smo skrbeli - čeprav, kot je 438 00:19:59,490 --> 00:20:00,820 poleg tega pa vrne vrednost. 439 00:20:00,820 --> 00:20:02,650 Pravkar ste na splošno prezreti. 440 00:20:02,650 --> 00:20:04,000 Printf pravkar naredil nekaj. 441 00:20:04,000 --> 00:20:06,220 To je stranski učinek tiskanja na zaslonu. 442 00:20:06,220 --> 00:20:09,480 V nasprotju s tem moramo kocke funkcijo, ki 443 00:20:09,480 --> 00:20:11,400 dejansko vrne nekaj. 444 00:20:11,400 --> 00:20:12,960 >> Torej, to je na splošno - 445 00:20:12,960 --> 00:20:15,260 Za tiste, seznanjeni s tem, da je dokaj enostavna ideja. 446 00:20:15,260 --> 00:20:18,460 Toda za tiste, ki še ne poznate te ideje poteka v vložkov in pridobivanje 447 00:20:18,460 --> 00:20:21,700 nazaj izhodi, poskusimo le nekaj super enostavno. 448 00:20:21,700 --> 00:20:25,180 Ali kdo udobno prihaja na oder za kratek čas? 449 00:20:25,180 --> 00:20:27,460 Moraš biti zadovoljni s kamero na vas, kot dobro. 450 00:20:27,460 --> 00:20:27,640 Ja. 451 00:20:27,640 --> 00:20:28,610 V redu, kako ti je ime? 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 V redu, Ken. 455 00:20:29,810 --> 00:20:31,060 Pridi gor. 456 00:20:31,060 --> 00:20:34,660 Torej, Ken se bo funkcija vrste tukaj. 457 00:20:34,660 --> 00:20:35,760 In gremo naprej in to je to. 458 00:20:35,760 --> 00:20:38,790 Gremo malo domišljije. 459 00:20:38,790 --> 00:20:39,770 Me veseli, da sva se spoznala. 460 00:20:39,770 --> 00:20:41,010 Dobrodošli v središču pozornosti. 461 00:20:41,010 --> 00:20:41,980 V redu. 462 00:20:41,980 --> 00:20:45,590 Gremo ta gumb tukaj. 463 00:20:45,590 --> 00:20:46,420 V redu. 464 00:20:46,420 --> 00:20:49,490 Torej, tukaj imate sodobno tablo. 465 00:20:49,490 --> 00:20:53,050 In kaj sem jaz, je glavna funkcija, na primer. 466 00:20:53,050 --> 00:20:55,990 In nimam iPad v moji roki. 467 00:20:55,990 --> 00:20:59,000 Ne spomnim se, kako - no, pravzaprav ne moremo reči, da je. 468 00:20:59,000 --> 00:21:02,200 Jaz nimam dobrega pisanja. 469 00:21:02,200 --> 00:21:05,260 In tako zato, hočem natisniti nekaj na zaslonu za mene. 470 00:21:05,260 --> 00:21:07,470 >> Torej, jaz sem pa glavni program. 471 00:21:07,470 --> 00:21:15,060 In jaz bom, da ste rekli to, da ga v mojem pisanju piščanca in nič 472 00:21:15,060 --> 00:21:16,600 nato mimo vas vnosa. 473 00:21:16,600 --> 00:21:20,000 Tako kot neumno, čeprav je ta vaja je pojem funkcij in kliče 474 00:21:20,000 --> 00:21:22,260 funkcija in vrne funkcijo res izvira do tega. 475 00:21:22,260 --> 00:21:23,120 Jaz sem glavni. 476 00:21:23,120 --> 00:21:26,270 Pravkar sem napisal printf ("kaj"), na zaslonu. 477 00:21:26,270 --> 00:21:27,470 Tečem ta program. 478 00:21:27,470 --> 00:21:30,900 In takoj, ko dobi printf pozval, traja en argument - ali en parameter, 479 00:21:30,900 --> 00:21:31,660 včasih - 480 00:21:31,660 --> 00:21:32,780 med dvojnimi narekovaji. 481 00:21:32,780 --> 00:21:33,960 Tukaj je ta argument. 482 00:21:33,960 --> 00:21:35,740 Jaz gre v Ken. 483 00:21:35,740 --> 00:21:39,390 Zdaj je črna skrinjica napisal nekaj več leti, ki očitno 484 00:21:39,390 --> 00:21:41,070 Samo ve, kako natisniti stvari na zaslonu. 485 00:21:41,070 --> 00:21:42,320 >> Torej, izvršitev. 486 00:21:48,842 --> 00:21:49,900 To ni slabo. 487 00:21:49,900 --> 00:21:50,890 Torej, zelo dobro. 488 00:21:50,890 --> 00:21:52,900 Torej, zdaj je naredil Ken izvršitve. 489 00:21:52,900 --> 00:21:55,810 Ali je potrebno, da bi mi karkoli? 490 00:21:55,810 --> 00:21:57,240 Torej ne, da smo videli doslej. 491 00:21:57,240 --> 00:21:59,230 Spet printf, dejansko vrne številko. 492 00:21:59,230 --> 00:22:01,640 Ampak bomo prezreti, da za zdaj, ker nikoli nismo uporabljali. 493 00:22:01,640 --> 00:22:03,400 Tako da je pri Kenu. 494 00:22:03,400 --> 00:22:06,650 In zdaj glavni vrne za izvedbo - 495 00:22:06,650 --> 00:22:09,630 Glavni prevzame nadzor programa še enkrat, ker to vrstico kode, 496 00:22:09,630 --> 00:22:11,010 printf, se opravi izvršitve. 497 00:22:11,010 --> 00:22:13,890 In gremo o našem načinu izvršitve ne glede na druge linije so tam. 498 00:22:13,890 --> 00:22:14,130 >> V redu. 499 00:22:14,130 --> 00:22:17,080 Torej, zdaj poskusimo nekoliko drugačen primer. 500 00:22:17,080 --> 00:22:22,430 In tokrat sem, naj po prvi zaslon počistite tukaj. 501 00:22:22,430 --> 00:22:24,670 In tokrat bomo narediti cubing funkcijo. 502 00:22:24,670 --> 00:22:27,350 Ampak tokrat pričakujem, da bo izhodno vrednost. 503 00:22:27,350 --> 00:22:28,630 Torej, gremo naprej in to je to. 504 00:22:28,630 --> 00:22:35,680 Torej, zdaj imam vrstico kode, ki pravi x = kocka (x). 505 00:22:35,680 --> 00:22:36,930 Torej, dejansko let's - 506 00:22:41,450 --> 00:22:43,940 vrstico kode, odpoklic, tako izgleda. 507 00:22:43,940 --> 00:22:45,960 x = kocka (x). 508 00:22:45,960 --> 00:22:48,100 Torej, kako se bo to delovalo? 509 00:22:48,100 --> 00:22:50,820 Torej, gremo naprej in dal bel zaslon znova. 510 00:22:50,820 --> 00:22:55,000 In jaz bom zdaj zapišite vrednosti x, ki je v tem trenutku v 511 00:22:55,000 --> 00:23:01,080 Čas se zgodi, da se, recimo, 2, naj bo enostavno. 512 00:23:01,080 --> 00:23:04,890 Zato sem zapisal na list papirja, vrednost 2, 513 00:23:04,890 --> 00:23:06,100 , ki je moja vrednost x. 514 00:23:06,100 --> 00:23:08,250 Sem ga predati Ken. 515 00:23:08,250 --> 00:23:09,200 KEN: In jaz sem samo napisal odgovor? 516 00:23:09,200 --> 00:23:12,660 David J. Malan: Ja, kaj je samo napisal odgovor. 517 00:23:12,660 --> 00:23:13,030 Ok. 518 00:23:13,030 --> 00:23:16,280 In sedaj ima vrniti mi nekaj. 519 00:23:16,280 --> 00:23:17,560 Torej - 520 00:23:17,560 --> 00:23:18,170 popolna. 521 00:23:18,170 --> 00:23:18,840 Lepo segue. 522 00:23:18,840 --> 00:23:21,970 >> Torej, zdaj mi roke nazaj na vrednost 8, v tem primeru. 523 00:23:21,970 --> 00:23:23,220 In kaj naj naredim z njim? 524 00:23:23,220 --> 00:23:26,130 No, pravzaprav, pa poglejmo. 525 00:23:26,130 --> 00:23:26,640 Get to pravico. 526 00:23:26,640 --> 00:23:27,880 Kaj bom z njim? 527 00:23:27,880 --> 00:23:31,900 Zdaj bom izkoristil to vrednost in dejansko ga shranite v tistih 528 00:23:31,900 --> 00:23:33,400 Isti bitov v pomnilniku. 529 00:23:33,400 --> 00:23:35,030 Ampak obvestilo, sem nekako borila tukaj. 530 00:23:35,030 --> 00:23:38,280 Jaz sem malo zmeden, saj kje sem dejansko napisal vrednost x? 531 00:23:38,280 --> 00:23:41,840 Kajti to, kar sem pravkar naredil, je fizično ročno Ken kos papirja 532 00:23:41,840 --> 00:23:44,400 da je vrednost 2, kar je x. 533 00:23:44,400 --> 00:23:46,300 In res, to je točno to, kar se dogaja. 534 00:23:46,300 --> 00:23:50,100 Tako se izkaže, da če pokličete funkcijo, in hodite v argumentu 535 00:23:50,100 --> 00:23:54,130 kot "Hello World", ali hodite na argument kot 2, na splošno, si 536 00:23:54,130 --> 00:23:56,720 poteka v kopiji te trditve. 537 00:23:56,720 --> 00:24:01,020 In tako kot sem napisal številko 2 tukaj, in ga izročil Kena, da morajo 538 00:24:01,020 --> 00:24:04,760 pomeni, da sem še vedno kopijo vrednosti 2 nekje. 539 00:24:04,760 --> 00:24:08,140 Ker je res, zdaj, ko sem prišel nazaj na vrednost 8, moram iti nazaj 540 00:24:08,140 --> 00:24:12,010 RAM in dejansko napišite 8, kjer sem nekoč imel številko 2. 541 00:24:12,010 --> 00:24:15,720 >> Tako vizualno spomnite tega pojma poteka v dobesedno 542 00:24:15,720 --> 00:24:16,730 izvod vrednosti. 543 00:24:16,730 --> 00:24:19,570 Ken ima svojo stvar, mi roke spet nekaj - v tem primeru, 544 00:24:19,570 --> 00:24:20,820 vrednost kot 8. 545 00:24:20,820 --> 00:24:22,660 In potem sem moral nekaj storiti s to vrednostjo, če bi 546 00:24:22,660 --> 00:24:24,880 želite obdržati okoli. 547 00:24:24,880 --> 00:24:29,470 Torej bo vse to je vse preveč seznanjeni kmalu. 548 00:24:29,470 --> 00:24:33,082 Najlepša hvala za ta demo tukaj, Ken. 549 00:24:33,082 --> 00:24:34,820 V redu. 550 00:24:34,820 --> 00:24:36,720 Zelo dobro opravljeno. 551 00:24:36,720 --> 00:24:40,610 Torej, da vidimo, kako se navsezadnje nanaša na nekatere funkcije 552 00:24:40,610 --> 00:24:42,270 kliče, da smo bili tu. 553 00:24:42,270 --> 00:24:47,610 Torej, naj gredo naprej in nas pripelje nazaj cubing primer tukaj. 554 00:24:47,610 --> 00:24:53,080 In opazil, da če hočemo, da dejansko začnete jemati to naprej, bomo 555 00:24:53,080 --> 00:24:57,050 da morajo biti pozorni na dejstvo, da se je število x je, da je prenesel v 556 00:24:57,050 --> 00:25:01,390 Tukaj je drugačen od tistega, kar je dejansko prenesena v funkciji. 557 00:25:01,390 --> 00:25:03,940 Torej, še enkrat, to mimo kopija bo postala precej 558 00:25:03,940 --> 00:25:05,620 nem v trenutku. 559 00:25:05,620 --> 00:25:09,320 >> Torej, da pogled na nekaj, kar ne deluje čisto prav je prazna. 560 00:25:09,320 --> 00:25:11,790 Grem, da gredo naprej in odprite tretji primer hroščat, ki 561 00:25:11,790 --> 00:25:13,560 je pomanjkljiv z naravo. 562 00:25:13,560 --> 00:25:18,070 In temu se reče buggy3, in izvaja swapping funkcijo. 563 00:25:18,070 --> 00:25:23,500 Torej, tukaj imamo glavno funkcijo, ki je x in y samovoljno inicializiranega za 564 00:25:23,500 --> 00:25:24,720 1 in 2, v tem zaporedju. 565 00:25:24,720 --> 00:25:27,590 Mi lahko uporabite GetInt, vendar smo morali preprosto vajo. 566 00:25:27,590 --> 00:25:29,680 Zato je težko kodirane kot 1 in 2. 567 00:25:29,680 --> 00:25:35,330 V vrsticah 21 in 22, se očitno izpisal X in Y, 1 na linijo. 568 00:25:35,330 --> 00:25:39,620 Nato v vrstici 23, trdim, sem zamenjala te vrednote, pika, pika, pika. 569 00:25:39,620 --> 00:25:43,030 Jaz očitno pokličete funkcijo v skladu z imenom 24 swap 570 00:25:43,030 --> 00:25:44,000 ki traja dve trditvi. 571 00:25:44,000 --> 00:25:46,430 To je popolnoma legalno za funkcije, da bi dva argumenta. 572 00:25:46,430 --> 00:25:48,220 Videli smo printf to že. 573 00:25:48,220 --> 00:25:50,370 Torej, zamenjava očitno meni x in y. 574 00:25:50,370 --> 00:25:53,010 In kot že ime pove, bi upam, da se bo 575 00:25:53,010 --> 00:25:54,320 swap teh dveh vrednosti. 576 00:25:54,320 --> 00:25:57,560 Torej trdim na liniji 25, zamenjali. 577 00:25:57,560 --> 00:26:01,570 In jaz ponatis x in y, ob predpostavki, da 578 00:26:01,570 --> 00:26:02,830 oni so res zamenjali. 579 00:26:02,830 --> 00:26:04,370 Ampak, če sem dejansko zagon tega programa - 580 00:26:04,370 --> 00:26:06,060 Naj odpre terminalsko okno. 581 00:26:06,060 --> 00:26:07,750 Naj buggy3. 582 00:26:07,750 --> 00:26:09,970 Kot že ime pove, to ne bo dobro končalo. 583 00:26:09,970 --> 00:26:14,690 Ker, ko sem pritisnite tipko Enter, opazite, da je x 1. 584 00:26:14,690 --> 00:26:15,720 y 2. 585 00:26:15,720 --> 00:26:19,160 In še na koncu programa, oni so še vedno v bistvu isto. 586 00:26:19,160 --> 00:26:22,760 >> Torej, temelji na dokazu pravkar z Ken, kaj se pravzaprav dogaja? 587 00:26:22,760 --> 00:26:24,660 No, da se potopite v to swap funkcijo. 588 00:26:24,660 --> 00:26:25,800 To je super kratki. 589 00:26:25,800 --> 00:26:28,020 To je le nekaj vrstic kode dolgo. 590 00:26:28,020 --> 00:26:32,810 Toda kaj je temeljna težava temelji na preprosti zgodba 591 00:26:32,810 --> 00:26:34,270 tukaj s Ken? 592 00:26:34,270 --> 00:26:36,115 Zakaj je zamenjava pokvarjen? 593 00:26:36,115 --> 00:26:37,365 [Neslišno] 594 00:26:39,840 --> 00:26:40,460 Točno tako. 595 00:26:40,460 --> 00:26:43,610 Torej smo za shranjevanje kopijo, ni je spremenljivka sama. 596 00:26:43,610 --> 00:26:46,810 Z drugimi besedami, zamenjava očitno traja dve trditvi, int. 597 00:26:46,810 --> 00:26:49,370 Pa tud če je samovoljno imenuje in b. 598 00:26:49,370 --> 00:26:54,430 In tu gor, sem opravil v x in y, ki so oziroma 1 in 2. 599 00:26:54,430 --> 00:26:56,580 Ampak jaz ne dobesedno poteka v x. 600 00:26:56,580 --> 00:26:58,410 Ne bom dobesedno poteka v y. 601 00:26:58,410 --> 00:27:01,230 Jaz sem mimo kopijo x in kopijo y. 602 00:27:01,230 --> 00:27:05,180 To je, kot je skoraj kot da bi kopirali in prilepili v swap vrednosti, ki jih 603 00:27:05,180 --> 00:27:07,440 želite, da se dejansko manipulirati. 604 00:27:07,440 --> 00:27:11,970 Torej, če je to tako, ko sem program, začne izvajati 605 00:27:11,970 --> 00:27:14,140 linija 35, nato 36 - 606 00:27:14,140 --> 00:27:17,740 ko pridem v skladu 37, na tej točki v zgodbo, kaj je vrednost? 607 00:27:20,740 --> 00:27:24,850 Na tej točki v zgodbo, linija 37, kar je vrednost v tem trenutku? 608 00:27:24,850 --> 00:27:25,980 Zato bi moralo biti samo 1. 609 00:27:25,980 --> 00:27:26,170 Imam prav? 610 00:27:26,170 --> 00:27:29,100 Ker je x sprejet kot prvi argument. 611 00:27:29,100 --> 00:27:33,150 In ta funkcija le arbitrarno kliče svojo prvo trditev,. 612 00:27:33,150 --> 00:27:35,130 Podobno je y, drugi argument. 613 00:27:35,130 --> 00:27:37,930 In to je le arbitrarno kliče drugega argumenta b. 614 00:27:37,930 --> 00:27:40,510 >> Zdaj je to dihotomijo pravzaprav precej enostavno razložiti. 615 00:27:40,510 --> 00:27:40,880 Premisli. 616 00:27:40,880 --> 00:27:42,980 Nihče od nas ni srečal osebo, ki je napisal printf. 617 00:27:42,980 --> 00:27:49,880 Torej vsekakor, on ali ona nima pojma, kaj so naši spremenljivke 30 let kasneje se dogaja 618 00:27:49,880 --> 00:27:50,710 da se imenuje. 619 00:27:50,710 --> 00:27:55,110 Torej je treba razlikovati med pravite spremenljivke v 620 00:27:55,110 --> 00:27:59,960 Funkcije, ki jih pišeš in kaj praviš spremenljivke v funkcijah, ki jih boste 621 00:27:59,960 --> 00:28:01,770 in ne uporabljate. 622 00:28:01,770 --> 00:28:05,120 Torej, z drugimi besedami, ki sem jih napisal svoje spremenljivk, x in y. 623 00:28:05,120 --> 00:28:08,060 Ampak, če bi nekdo napisal swap funkcijo, on ali ona zagotovo 624 00:28:08,060 --> 00:28:10,480 Ne bi vedel, kaj moji spremenljivke se dogaja, da se imenuje. 625 00:28:10,480 --> 00:28:13,850 Tako, da je to, zakaj ste to dvojnost imen. 626 00:28:13,850 --> 00:28:16,800 Tehnično sem lahko to po naključju. 627 00:28:16,800 --> 00:28:19,750 Vendar bi bile še vedno sprejet kot kopije. 628 00:28:19,750 --> 00:28:22,940 To bi šele bilo čisto naključje estetsko, če je ta oseba, ki je napisal 629 00:28:22,940 --> 00:28:25,590 swap bila uporabljena ista imena. 630 00:28:25,590 --> 00:28:25,930 >> V redu. 631 00:28:25,930 --> 00:28:29,010 Torej, v tem trenutku v zgodbi, linija 37, je 1. 632 00:28:29,010 --> 00:28:30,410 b je 2. 633 00:28:30,410 --> 00:28:32,040 In zdaj sem nadaljevati, da jih swap. 634 00:28:32,040 --> 00:28:34,730 No, najprej, naj dejansko to veliko bolj preprosto. 635 00:28:34,730 --> 00:28:36,500 Ne vem, kaj te tri vrstice kode so počeli. 636 00:28:36,500 --> 00:28:37,370 Naj samo to. 637 00:28:37,370 --> 00:28:38,850 b dobi. 638 00:28:38,850 --> 00:28:40,170 dobi b. 639 00:28:40,170 --> 00:28:41,450 Done. 640 00:28:41,450 --> 00:28:43,540 Zakaj je to napačno, logično? 641 00:28:46,980 --> 00:28:48,590 To je nekako intuitivno stvar, kajne? 642 00:28:48,590 --> 00:28:50,640 Tako postane b. 643 00:28:50,640 --> 00:28:52,450 In b postane. 644 00:28:52,450 --> 00:28:55,410 Ampak problem je, da takoj, ko postavka 37 izvaja, kaj je 645 00:28:55,410 --> 00:28:58,170 vrednost in b? 646 00:28:58,170 --> 00:28:59,070 Enako, 1. 647 00:28:59,070 --> 00:29:03,460 Ker ste clobbered, če se tako izrazim, ste spremenili b, da enaka. 648 00:29:03,460 --> 00:29:06,000 Torej, ko se izvaja linija 37, ki je super. 649 00:29:06,000 --> 00:29:09,940 Zdaj imate dve kopiji številko 1 znotraj te funkcije. 650 00:29:09,940 --> 00:29:14,720 Torej, ko ste rekli, v skladu 38, dobi b, dobro, da si nekako zajebali. 651 00:29:14,720 --> 00:29:17,370 Ker ste ravno dodeljevanje 1-1. 652 00:29:17,370 --> 00:29:20,400 Si nekako izgubila vrednost, ki jo zanimalo. 653 00:29:20,400 --> 00:29:22,910 >> Torej, v prvotni različici tega opazil, kaj sem storil. 654 00:29:22,910 --> 00:29:26,620 Sem imel namesto tretjo linijo kode, ki je izgledal takole. 655 00:29:26,620 --> 00:29:29,910 Izjavljam, začasno spremenljivko - NTU je zelo pogosto ime 656 00:29:29,910 --> 00:29:31,240 za začasno spremenljivko. 657 00:29:31,240 --> 00:29:34,280 To je int, ker je za tekmo, kaj želim narediti kopijo. 658 00:29:34,280 --> 00:29:39,720 I shranite kopijo notranjosti tmp. Torej, ko je linija 37 izvršen, 659 00:29:39,720 --> 00:29:41,390 vrednost je - 660 00:29:41,390 --> 00:29:42,970 Hitro sanity check - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 Vrednost B je 2. 663 00:29:45,780 --> 00:29:48,470 In vrednost tmp je tudi 1. 664 00:29:48,470 --> 00:29:51,470 Zdaj sem izvesti linijo 38. 665 00:29:51,470 --> 00:29:57,180 Torej, ko linija 38 izvaja, prevzame vrednosti b. 666 00:29:57,180 --> 00:29:58,510 In b je 2. 667 00:29:58,510 --> 00:30:00,500 Tako je sedaj 2. 668 00:30:00,500 --> 00:30:03,110 Torej, na tej točki v zgodbo, je 2, b 2, 669 00:30:03,110 --> 00:30:05,130 tmp in je 1. 670 00:30:05,130 --> 00:30:09,330 Torej, zdaj je logično, lahko cenimo samo Pljuskanje NTU je v b. 671 00:30:09,330 --> 00:30:10,690 In končamo. 672 00:30:10,690 --> 00:30:12,170 >> Tako smo rešili ta problem. 673 00:30:12,170 --> 00:30:16,040 Na žalost, ko sem zagon tega programa v tej obliki, se dejansko ne zamenjate 674 00:30:16,040 --> 00:30:17,700 vse vrednosti. 675 00:30:17,700 --> 00:30:18,950 Vendar mora biti jasno, zakaj? 676 00:30:23,420 --> 00:30:26,310 Popravil sem logično težave s samo trenutek nazaj. 677 00:30:26,310 --> 00:30:31,150 Ampak še enkrat, če sem teči ta program, x in y ostane nespremenjena do konca leta 678 00:30:31,150 --> 00:30:33,834 programa za izvedbo. 679 00:30:33,834 --> 00:30:34,760 [Neslišno] 680 00:30:34,760 --> 00:30:36,030 David J. Malan: Torej nismo vrnili ničesar. 681 00:30:36,030 --> 00:30:36,960 Torej, to je res. 682 00:30:36,960 --> 00:30:39,880 Vendar se je izkazalo, da je malo problem, ker sem tako daleč, 683 00:30:39,880 --> 00:30:42,460 Edina stvar, ki smo jo bili sposobni vrniti, je ena stvar. 684 00:30:42,460 --> 00:30:46,540 In to je omejitev C. Lahko samo vrne res eno vrednost, 685 00:30:46,540 --> 00:30:48,970 V tem primeru, sem nekako obtičal tukaj 686 00:30:48,970 --> 00:30:51,805 ker sem lahko vrne novo vrednost x, ali sem lahko vrne 687 00:30:51,805 --> 00:30:53,160 Nova vrednost y. 688 00:30:53,160 --> 00:30:54,330 Ampak hočem tako nazaj. 689 00:30:54,330 --> 00:30:58,010 Torej se ne vrača enostavna rešitev tukaj. 690 00:30:58,010 --> 00:30:59,770 Ampak problem je bistveno zakaj? 691 00:30:59,770 --> 00:31:03,270 Kaj smo dejansko zamenjali? 692 00:31:03,270 --> 00:31:04,010 in b. 693 00:31:04,010 --> 00:31:07,670 Ampak a in b so kopije x in y, kar pomeni, da pravkar storil vse to 694 00:31:07,670 --> 00:31:10,080 delo - smo pravkar preživel kot tri minute govori o zamenjavi 695 00:31:10,080 --> 00:31:11,680 funkcija in vse tri od teh spremenljivk. 696 00:31:11,680 --> 00:31:15,090 In to je super, popolnoma prav v izolaciji. 697 00:31:15,090 --> 00:31:20,230 Toda obseg in B je le, da je v teh vrsticah tukaj. 698 00:31:20,230 --> 00:31:24,130 Torej, tako kot za zanke, če ugotovi, celo število i notranjosti za 699 00:31:24,130 --> 00:31:27,400 zanka - podobno, če ste razglasitvi in ​​b znotraj funkcije, ki 700 00:31:27,400 --> 00:31:30,550 si napisal, da si velja samo znotraj te funkcije. 701 00:31:30,550 --> 00:31:35,020 Kar pomeni, da takoj, ko se zamenjava opravi izvršilni in gremo od vrstice 24 do 702 00:31:35,020 --> 00:31:38,380 linija 25 x in y niso spremenil. 703 00:31:38,380 --> 00:31:42,580 Pravkar si zapravil veliko časa delili kopije spremenljivk. 704 00:31:42,580 --> 00:31:46,490 >> Tako se izkaže, da je rešitev za to dejansko ni očitno. 705 00:31:46,490 --> 00:31:49,210 To ni čisto dovolj, da se vrnete vrednosti, saj smo lahko 706 00:31:49,210 --> 00:31:50,320 Samo vrnejo eno vrednost. 707 00:31:50,320 --> 00:31:53,370 In jaz res ne želim, da bi zamenjali x in y sta ob istem času. 708 00:31:53,370 --> 00:31:55,020 Torej se bomo vrnili k temu. 709 00:31:55,020 --> 00:31:58,770 Toda za zdaj ugotovili, da je vprašanje bistveno izhaja iz dejstva, 710 00:31:58,770 --> 00:32:00,660 da sta a in b izvodov. 711 00:32:00,660 --> 00:32:03,450 In če so v njihovem okviru. 712 00:32:03,450 --> 00:32:04,980 No, poskusimo rešiti to na nek način. 713 00:32:04,980 --> 00:32:09,200 Naj se dejansko pomaknete nazaj in odprla, recimo, četrta različica 714 00:32:09,200 --> 00:32:11,170 tega, buggy4. 715 00:32:11,170 --> 00:32:13,230 In kaj je to? 716 00:32:13,230 --> 00:32:16,690 To je podobno, vendar enostavnejši problem pogledati, preden sprejme zabodel 717 00:32:16,690 --> 00:32:17,530 ga reševanja. 718 00:32:17,530 --> 00:32:19,440 Ta program se imenuje prirastek. 719 00:32:19,440 --> 00:32:24,320 In očitno inicializira celo število x, 1 v skladu 18. 720 00:32:24,320 --> 00:32:25,950 Nato sem trdijo x 1. 721 00:32:25,950 --> 00:32:28,020 Nato sem trditvi povečevanje, pika, pika, pika. 722 00:32:28,020 --> 00:32:29,460 Nato sem poklical prirastek. 723 00:32:29,460 --> 00:32:33,480 Potem pa v vrsticah 22 in 23 Trdim, da so se poveča. 724 00:32:33,480 --> 00:32:37,780 Trdim x Zdaj je, kar je, 2 verjetno. 725 00:32:37,780 --> 00:32:39,770 >> Vendar pa je ta program nečistnik. 726 00:32:39,770 --> 00:32:41,020 V čem je težava? 727 00:32:43,450 --> 00:32:44,418 Ja? 728 00:32:44,418 --> 00:32:45,668 [Neslišno] 729 00:32:49,260 --> 00:32:49,850 David J. Malan: Točno tako. 730 00:32:49,850 --> 00:32:52,430 Tako je bila razglašena x očitno na liniji 18. 731 00:32:52,430 --> 00:32:54,410 To je znotraj zavitih oklepajih je glavni. 732 00:32:54,410 --> 00:32:58,470 Torej preprost odgovor tukaj je, da je dobro, obstaja x tukaj. 733 00:32:58,470 --> 00:33:01,510 To ni v skladu 32. 734 00:33:01,510 --> 00:33:03,710 Torej, ta program dejansko sploh ne bo prevesti. 735 00:33:03,710 --> 00:33:07,910 Prevajalnik, ko sem poskusil priprave tega kodeksa, bo vpij name 736 00:33:07,910 --> 00:33:13,190 o nekaterih neprijavljeno identifikator ali nekaj v tem smislu. 737 00:33:13,190 --> 00:33:13,870 V bistvu, dajmo poskusiti. 738 00:33:13,870 --> 00:33:15,235 To je lahko buggy4. 739 00:33:17,780 --> 00:33:18,190 Tukaj je. 740 00:33:18,190 --> 00:33:22,030 Uporaba neprijavljenega x identifikator v skladu 32. 741 00:33:22,030 --> 00:33:25,700 In dejansko, bodimo bolj jasno danes, tako da je to koristno 742 00:33:25,700 --> 00:33:27,140 Uradne ure in doma. 743 00:33:27,140 --> 00:33:29,000 Obvestilo, da je malo cryptically napisal. 744 00:33:29,000 --> 00:33:31,560 Toda dejstvo, da je Jek vpil na nas, pravijo 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, je celo uporabno. 746 00:33:36,970 --> 00:33:41,970 To pomeni, da je napaka na liniji 32 na položaju 5 znakov. 747 00:33:41,970 --> 00:33:44,670 Torej, ena, dva, tri, štiri, pet. 748 00:33:44,670 --> 00:33:46,640 To je v resnici, kje je problem. 749 00:33:46,640 --> 00:33:49,710 In tudi, da v mislih pri uradnih ur in doma, sem srečen tukaj. 750 00:33:49,710 --> 00:33:50,740 Imam samo eno napako. 751 00:33:50,740 --> 00:33:52,660 To se dogaja, da je relativno enostavno popraviti. 752 00:33:52,660 --> 00:33:56,220 Ampak, če boste dobili celoten zaslon poln ogromnega sporočil o napakah, še enkrat, 753 00:33:56,220 --> 00:33:59,240 zavedati, da lahko Najnižja eno samo simptomatsko z dne 754 00:33:59,240 --> 00:34:00,320 za vrhunske nove. 755 00:34:00,320 --> 00:34:03,560 Torej vedno lovil svoje napake od vrha navzdol. 756 00:34:03,560 --> 00:34:06,720 Ker je lahko samo daisy verige učinek, ki vas predlaga 757 00:34:06,720 --> 00:34:09,030 Tako imajo več težav, kot jih dejansko storiti. 758 00:34:09,030 --> 00:34:14,989 >> Torej, kako bi lahko to popravimo, če je moj cilj je, da prirastek x? 759 00:34:14,989 --> 00:34:15,370 Kaj je to? 760 00:34:15,370 --> 00:34:15,620 Ok. 761 00:34:15,620 --> 00:34:16,679 Tako lahko naredimo x globalna. 762 00:34:16,679 --> 00:34:18,860 Oglejmo bližnjico, ki sem opozoril, pa že prej. 763 00:34:18,860 --> 00:34:20,550 Ampak vraga, smo morali hitro popraviti. 764 00:34:20,550 --> 00:34:23,949 Torej, recimo, int x tukaj. 765 00:34:23,949 --> 00:34:25,600 To naredi x globalna. 766 00:34:25,600 --> 00:34:28,460 Torej, zdaj je glavni dostop do njega. 767 00:34:28,460 --> 00:34:31,780 In prirastek ima dostop do njega. 768 00:34:31,780 --> 00:34:33,860 In tako mi gredo naprej in zbira sedaj. 769 00:34:33,860 --> 00:34:36,330 Naredite buggy4, Enter. 770 00:34:36,330 --> 00:34:37,440 Zdi se, da zdaj pripraviti. 771 00:34:37,440 --> 00:34:40,949 Naj teče buggy4, in zdi se, da dejansko delajo. 772 00:34:40,949 --> 00:34:42,780 No, to je ena od teh stvari - 773 00:34:42,780 --> 00:34:45,870 stori, kot ti rečem, ne kot jaz, kot sem pravkar končal. 774 00:34:45,870 --> 00:34:49,239 Ker v splošnem naši programi bodo dobili veliko bolj zanimiv in 775 00:34:49,239 --> 00:34:50,440 veliko več kot to. 776 00:34:50,440 --> 00:34:53,199 In če je vaša rešitev za težave v življenju je samo ah, dal vse 777 00:34:53,199 --> 00:34:57,550 spremenljivke na vrhu datoteke, zelo hitro naredite programi dobili 778 00:34:57,550 --> 00:34:59,700 grozljivo težko upravljati. 779 00:34:59,700 --> 00:35:02,050 To postane težje izmisliti nove imeni spremenljivk. 780 00:35:02,050 --> 00:35:05,240 To postane težje razumeti, kaj počne, kaj spremenljivka. 781 00:35:05,240 --> 00:35:08,250 >> In tako na splošno, da to ni dobra rešitev. 782 00:35:08,250 --> 00:35:09,780 Torej, kaj je to bolje. 783 00:35:09,780 --> 00:35:11,920 Ne želimo uporabiti globalno spremenljivko tukaj. 784 00:35:11,920 --> 00:35:14,050 Rad bi prirastek x. 785 00:35:14,050 --> 00:35:16,050 Torej, lahko bi očitno - 786 00:35:16,050 --> 00:35:18,450 Na koncu dneva, to je nekako neumno zgodbo, saj smo samo to. 787 00:35:18,450 --> 00:35:22,050 Ampak če nisem vedel o tem izvajalcu ali je ne smem 788 00:35:22,050 --> 00:35:27,700 spremenite v glavnem sama, kako drugače bi lahko izvajala Ken tukaj, to 789 00:35:27,700 --> 00:35:31,450 Čas ni kocko, ampak prirastek? 790 00:35:31,450 --> 00:35:32,700 Kako spremenimo te stvari tukaj? 791 00:35:32,700 --> 00:35:33,025 Ja. 792 00:35:33,025 --> 00:35:34,275 [Neslišno] 793 00:35:37,430 --> 00:35:38,000 David J. Malan: Dobro, dobro. 794 00:35:38,000 --> 00:35:40,490 Torej, zakaj ne bi šel mimo mene in x? 795 00:35:40,490 --> 00:35:44,390 In potem ne vrne, zakaj ne sem naredil obračun x + 1? 796 00:35:44,390 --> 00:35:46,370 Zdaj pa še nekaj stvari je tukaj spremenilo. 797 00:35:46,370 --> 00:35:47,530 Sem na pravi poti. 798 00:35:47,530 --> 00:35:48,910 Kaj še moram poteg? 799 00:35:48,910 --> 00:35:49,470 Nekdo drug. 800 00:35:49,470 --> 00:35:49,882 Ja? 801 00:35:49,882 --> 00:35:51,530 [Neslišno] 802 00:35:51,530 --> 00:35:53,520 David J. Malan: moram spremeniti vrnitev vrsto prirastek 803 00:35:53,520 --> 00:35:54,590 ker ne nična. 804 00:35:54,590 --> 00:35:56,650 Praznina pomeni nič se je vrnil. 805 00:35:56,650 --> 00:35:57,600 Toda jasno je, zdaj pa je. 806 00:35:57,600 --> 00:36:01,280 Torej, to pa je treba spremeniti v int, da je v skladu s kakršnimi koli 807 00:36:01,280 --> 00:36:02,580 Jaz sem pravzaprav vrača. 808 00:36:02,580 --> 00:36:04,580 >> Zdaj nekaj drugega je še vedno buggy tukaj. 809 00:36:04,580 --> 00:36:04,982 Ja? 810 00:36:04,982 --> 00:36:06,590 [Neslišno] 811 00:36:06,590 --> 00:36:07,630 David J. Malan: Torej moram prirastek x? 812 00:36:07,630 --> 00:36:10,336 [Neslišno] 813 00:36:10,336 --> 00:36:11,880 David J. Malan: Ah, tako da moram opraviti x. 814 00:36:11,880 --> 00:36:13,300 Torej moram narediti tukaj. 815 00:36:17,590 --> 00:36:19,690 Torej prototipa, moram spremeniti to tukaj. 816 00:36:19,690 --> 00:36:21,290 Torej, to je, da postane int. 817 00:36:21,290 --> 00:36:22,820 To mora postati - 818 00:36:22,820 --> 00:36:23,670 hmm. 819 00:36:23,670 --> 00:36:24,710 Pravzaprav sem napako tukaj. 820 00:36:24,710 --> 00:36:25,780 Spravimo tole prvi. 821 00:36:25,780 --> 00:36:27,990 Kaj bi to dejansko bilo? 822 00:36:27,990 --> 00:36:29,330 Torej, to je dobil, da je nekaj int. 823 00:36:29,330 --> 00:36:30,340 Lahko bi bilo x. 824 00:36:30,340 --> 00:36:33,120 Ampak odkrito povedano, če ste začeli klicati vse vaše x spremenljivke, da bo dobil 825 00:36:33,120 --> 00:36:35,250 manj jasno, kateri je kateri. 826 00:36:35,250 --> 00:36:38,210 Vzemiva poljubno izberete drug način poimenovanja za mojo 827 00:36:38,210 --> 00:36:40,220 helper funkcije, funkcije pišem. 828 00:36:40,220 --> 00:36:41,100 Bomo rekli. 829 00:36:41,100 --> 00:36:44,500 Ali bi jo lahko imenovali - recimo ji even_number še bolj izrazita. 830 00:36:44,500 --> 00:36:47,610 Torej moram vrniti ne glede na število plus 1. 831 00:36:47,610 --> 00:36:49,720 In zdaj moram spremeniti še eno stvar sem gor in 1 832 00:36:49,720 --> 00:36:50,700 Druga stvar, ki sem gor. 833 00:36:50,700 --> 00:36:54,150 Kaj moram spremeniti na spletu 21 prvi? 834 00:36:54,150 --> 00:36:55,390 Imam jih dodeli x. 835 00:36:55,390 --> 00:36:57,480 Torej, ne morem poklicati prirastka x. 836 00:36:57,480 --> 00:37:01,000 Moram se spomniti odgovor s spreminjanjem vrednosti x na 837 00:37:01,000 --> 00:37:02,020 na levi strani. 838 00:37:02,020 --> 00:37:04,930 In čeprav je x sedaj na levi in ​​desni, to je povsem v redu, saj 839 00:37:04,930 --> 00:37:08,370 desna stran dobi 1. izvede nato se plopped v levo 840 00:37:08,370 --> 00:37:10,240 ročno stvar x v tej zadevi. 841 00:37:10,240 --> 00:37:11,900 In potem končno, to je enostavno popraviti zdaj. 842 00:37:11,900 --> 00:37:15,080 To naj bi samo tekmo, kaj je spodaj. 843 00:37:15,080 --> 00:37:17,120 Int številko. 844 00:37:17,120 --> 00:37:17,320 >> V redu. 845 00:37:17,320 --> 00:37:20,290 Torej cel kup sprememb za res neumno funkcijo. 846 00:37:20,290 --> 00:37:24,250 Toda predstavnik stvari, da bomo vedno bolj želijo storiti. 847 00:37:24,250 --> 00:37:25,490 Torej, da buggy4. 848 00:37:25,490 --> 00:37:26,485 Sem nekje zajebali. 849 00:37:26,485 --> 00:37:27,520 Oh, moj bog. 850 00:37:27,520 --> 00:37:29,660 Pet napak pri, recimo, 6-line program. 851 00:37:29,660 --> 00:37:36,500 Torej, kaj je narobe na liniji 18, značaj 5? 852 00:37:36,500 --> 00:37:36,970 V redu. 853 00:37:36,970 --> 00:37:39,330 Torej moram prijaviti to int. 854 00:37:39,330 --> 00:37:39,630 V redu. 855 00:37:39,630 --> 00:37:41,790 Torej, da vidimo, cel kup drugih napak. 856 00:37:41,790 --> 00:37:42,230 Oh, moj bog. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 Ampak še enkrat, kaj je samo počistite zaslon - 859 00:37:46,020 --> 00:37:48,660 Nadzor L tu - in ponovno zagnati Jek. 860 00:37:48,660 --> 00:37:51,340 Torej 5 problemov je pravzaprav le, da je eden. 861 00:37:51,340 --> 00:37:53,500 Torej, zdaj pa teče buggy4, Enter. 862 00:37:53,500 --> 00:37:54,150 Vav. 863 00:37:54,150 --> 00:37:57,434 x je bil pravilno poveča. 864 00:37:57,434 --> 00:37:58,420 >> V redu. 865 00:37:58,420 --> 00:38:01,700 Vsa vprašanja o tem, kako prirastek številke? 866 00:38:01,700 --> 00:38:02,896 Ja? 867 00:38:02,896 --> 00:38:06,864 ZVOČNIK 2: Zakaj je tako, da lahko samo spremeni x na številko v spremenljivko 868 00:38:06,864 --> 00:38:08,860 ime in ga bomo vedeli, kaj misliš? 869 00:38:08,860 --> 00:38:09,600 David J. Malan: Dobro vprašanje. 870 00:38:09,600 --> 00:38:13,130 Kako to, da sem lahko samo spremeniti x na številko in program bo vedel 871 00:38:13,130 --> 00:38:13,990 takoj? 872 00:38:13,990 --> 00:38:16,120 Torej, še enkrat, mislim, da je to abstrakcijo. 873 00:38:16,120 --> 00:38:20,110 Torej, če sem glavni in Ken je postopen, odkrito povedano, me ne zanima 874 00:38:20,110 --> 00:38:21,540 Ken, kaj zahteva njegov iPad. 875 00:38:21,540 --> 00:38:25,350 Ni mi mar, kaj se kliče vse, kar ima opraviti z njegovim izvajanjem 876 00:38:25,350 --> 00:38:26,550 te funkcije. 877 00:38:26,550 --> 00:38:32,130 Torej, to je izvajanje Podatek, da sem glavni, ne 878 00:38:32,130 --> 00:38:33,010 skrbeti za. 879 00:38:33,010 --> 00:38:37,440 In tako preprosto spreminjanje dosledno znotraj funkcije, število tukaj 880 00:38:37,440 --> 00:38:41,340 in številko tukaj, je vse to traja tako dolgo, kot sem prevedem. 881 00:38:41,340 --> 00:38:43,820 To je neke vrste kot če pomislite - mnogi izmed nas, tiste, ki ste voznika 882 00:38:43,820 --> 00:38:46,590 Dovoljenja, ki jih poganja, ali pa ste celo vozi v avtomobilu - 883 00:38:46,590 --> 00:38:50,710 večina od nas nima pojma, kako avto deluje pod pokrovom. 884 00:38:50,710 --> 00:38:54,710 In dobesedno, če odpreš pokrov motorja, večina od nas - vključno z mano - 885 00:38:54,710 --> 00:38:56,580 ne bomo zares vedeli, kaj smo iskali na. 886 00:38:56,580 --> 00:38:58,850 Nekako tako kot bi se počutite s takimi stvarmi tem zdaj. 887 00:38:58,850 --> 00:39:01,380 Ampak ne bomo res morali skrbeti, kako avto deluje. 888 00:39:01,380 --> 00:39:05,000 Mi ne bo treba skrbeti, kaj vse palice in bati in kablov v notranjosti 889 00:39:05,000 --> 00:39:07,700 avto dejansko delaš. 890 00:39:07,700 --> 00:39:11,360 >> Torej nekaj podobnega, kar imenujete bat ni pomembno 891 00:39:11,360 --> 00:39:11,920 Tukaj v tej zadevi. 892 00:39:11,920 --> 00:39:12,490 Enako ideja. 893 00:39:12,490 --> 00:39:12,670 Ja? 894 00:39:12,670 --> 00:39:13,920 [Neslišno] 895 00:39:25,250 --> 00:39:29,530 David J. Malan: Če bi bilo več uporabe variabilnega trenutku Xa nazaj 896 00:39:29,530 --> 00:39:32,220 da bi programer, imate, da jih spremenite povsod. 897 00:39:32,220 --> 00:39:35,230 Ali pa bi lahko dobesedno storiti datoteke, Meni in nato Najdi / zamenjaj 898 00:39:35,230 --> 00:39:36,270 nekaj takega. 899 00:39:36,270 --> 00:39:40,110 Vendar boste morali sami temi spremembami. 900 00:39:40,110 --> 00:39:41,200 Moraš biti dosledni. 901 00:39:41,200 --> 00:39:42,450 [Neslišno] 902 00:39:47,200 --> 00:39:48,960 David J. Malan: zlasti, da tako kot tukaj? 903 00:39:48,960 --> 00:39:52,660 Če je to int drugo številko? 904 00:39:52,660 --> 00:39:52,940 Ja. 905 00:39:52,940 --> 00:39:56,430 Torej, da je pomembno, ko kličete funkcijo. 906 00:39:56,430 --> 00:40:00,350 Torej, če sem klical prirastek tu z nekaj vejicami nekaj, 907 00:40:00,350 --> 00:40:01,400 obstaja neposredna preslikava. 908 00:40:01,400 --> 00:40:04,490 Prva spremenljivka, kar se imenuje, je naredil kopijo prvega 909 00:40:04,490 --> 00:40:05,480 Argument tukaj. 910 00:40:05,480 --> 00:40:07,280 Oprostite, ta ne bi smela biti oklepaj. 911 00:40:07,280 --> 00:40:09,300 Drugi argument poravna z druge. 912 00:40:09,300 --> 00:40:11,220 >> Tako da, ja, zadeve. 913 00:40:11,220 --> 00:40:11,490 V redu. 914 00:40:11,490 --> 00:40:13,360 Žal sem dolgo pot do tja. 915 00:40:13,360 --> 00:40:14,610 Druga vprašanja? 916 00:40:16,460 --> 00:40:16,850 V redu. 917 00:40:16,850 --> 00:40:20,300 Torej, da vidimo, če ne moremo naslikati sliko, kaj se pravzaprav dogaja 918 00:40:20,300 --> 00:40:22,160 Tukaj pod pokrovom, tako rekoč. 919 00:40:22,160 --> 00:40:26,310 Torej, to je pravokotnik, ki lahko predstavljajo pomnilnik računalnika. 920 00:40:26,310 --> 00:40:31,240 Torej, tudi če nimate pojma, kako spomin deluje in kako deluje RAM, vsaj 921 00:40:31,240 --> 00:40:33,590 Predvidevamo, da imate grozde njem teh dneh. 922 00:40:33,590 --> 00:40:34,740 Imaš MB njej. 923 00:40:34,740 --> 00:40:35,760 Imaš gigabajtov njim. 924 00:40:35,760 --> 00:40:40,690 In vemo, da od nič tedna bajt je samo, kaj? 925 00:40:40,690 --> 00:40:41,280 8 bitov. 926 00:40:41,280 --> 00:40:42,730 V redu, torej 8 ničle in narave. 927 00:40:42,730 --> 00:40:46,300 Torej, če ima računalnik koncert RAM, 2 nastopov RAM-a v teh dneh, morate 928 00:40:46,300 --> 00:40:54,450 ali 2 milijardi milijarda bajtov pomnilnika, ali približno 8 milijard 16000000000 929 00:40:54,450 --> 00:40:56,560 bitov, notranjost računalnika. 930 00:40:56,560 --> 00:40:59,710 Zdaj pa za razliko od malega Volneno primer Willy, ni magnetni delci 931 00:40:59,710 --> 00:41:00,560 običajno več. 932 00:41:00,560 --> 00:41:04,470 Vedno bolj v prenosnih računalnikih vsaj to Solid State diski SSD, da je, 933 00:41:04,470 --> 00:41:05,560 Samo nimajo gibljivih delov. 934 00:41:05,560 --> 00:41:06,710 To je vse elektronsko. 935 00:41:06,710 --> 00:41:08,070 To je vse na elektriko. 936 00:41:08,070 --> 00:41:12,360 Torej mislim, čeprav, to je samo pravokotnika, ki predstavlja eno ali dve 937 00:41:12,360 --> 00:41:13,930 gigabajta pomnilnika, ki ga imajo. 938 00:41:13,930 --> 00:41:15,500 >> Torej je kos pomnilnika. 939 00:41:15,500 --> 00:41:20,460 Zdaj je svet računalništva je nekako ločen koščkih 940 00:41:20,460 --> 00:41:22,570 spomin na različne stvari. 941 00:41:22,570 --> 00:41:25,930 Tako na primer, če je to računalnika RAM - kot ga je predlagala 942 00:41:25,930 --> 00:41:30,400 pravokotnik tam - Izkazalo se je, da je po dogovoru na vrhu vašega RAM-a, tako da 943 00:41:30,400 --> 00:41:33,170 govoriti, je na splošno, kar se imenuje besedilo segment. 944 00:41:33,170 --> 00:41:35,910 Tisti, ki so ničle in tiste, ki ste jih pripravljeni. 945 00:41:35,910 --> 00:41:39,040 Torej, ko smo si ogledali pod pokrovom, kaj a.out je vse 946 00:41:39,040 --> 00:41:40,360 na ničli, in tisti, ki - 947 00:41:40,360 --> 00:41:44,000 Ko zaženete program, se te ničle in tisti, ki nalagajo iz trdega 948 00:41:44,000 --> 00:41:46,290 pogon v nekaj, kar ti RAM. 949 00:41:46,290 --> 00:41:48,950 In v RAM, oni dajo na vrhu. 950 00:41:48,950 --> 00:41:50,330 Sedaj medtem, imate druge stvari. 951 00:41:50,330 --> 00:41:53,060 Initialized podatkov, nezaceto podatkov. 952 00:41:53,060 --> 00:41:56,440 Ti redi pomnilnika se nanašajo na globalne spremenljivke, ki 953 00:41:56,440 --> 00:41:57,530 ne uporabljajo pogosto. 954 00:41:57,530 --> 00:42:00,630 Ampak včasih, če boste to storili, končajo tam kot dobro. 955 00:42:00,630 --> 00:42:01,620 Potem je tu še nekaj drugih stvari. 956 00:42:01,620 --> 00:42:04,130 Okolje spremenljivk, ki jih ne bodo porabili veliko časa na. 957 00:42:04,130 --> 00:42:06,120 Potem pa bosta dve pomembni stvari, da pridejo nazaj skozi to 958 00:42:06,120 --> 00:42:08,130 semester, kup in kup. 959 00:42:08,130 --> 00:42:12,280 >> Tako je večina spomin računalnika pridržane ko teče program za 960 00:42:12,280 --> 00:42:14,880 nekaj, kar ti stack in nekaj, kar ti kup. 961 00:42:14,880 --> 00:42:16,940 In ne bomo govorili o kupu danes, vendar bomo 962 00:42:16,940 --> 00:42:18,180 govorimo o kupu. 963 00:42:18,180 --> 00:42:22,910 In je sklad namenjen pričarajo vizualno kot jedilnici 964 00:42:22,910 --> 00:42:26,120 zdroba pladnji v Mather doma, ali kjer koli se zgodi, da se, kadar je to 965 00:42:26,120 --> 00:42:27,810 jedilnica osebja, ki jih čistijo vsak dan. 966 00:42:27,810 --> 00:42:30,180 Jih zlagajo od tal gor. 967 00:42:30,180 --> 00:42:33,800 In prav v spominu, da je ta ideja, ki postavlja nekaj na 968 00:42:33,800 --> 00:42:36,740 nakladanje, dajanje nekaj na kup, s čimer nekaj na kupu. 969 00:42:36,740 --> 00:42:38,000 In kaj mislimo s tem? 970 00:42:38,000 --> 00:42:41,430 No, da povečate samo spodnji polovici slike, vašega računalnika 971 00:42:41,430 --> 00:42:43,990 RAM-a, da predlaga naslednje. 972 00:42:43,990 --> 00:42:48,300 Izkazalo se je, da ko zaženete program, kot a.out ali hello, ne glede na 973 00:42:48,300 --> 00:42:49,920 Program je, da ste napisali, 974 00:42:49,920 --> 00:42:53,030 spet so te ničle in tisti, naložen s trdega diska - kar je 975 00:42:53,030 --> 00:42:56,190 dolgoročno hrambo, ostane tam tudi, ko si potegnite vtikač - 976 00:42:56,190 --> 00:42:57,220 naložen v RAM. 977 00:42:57,220 --> 00:42:59,020 RAM je hitrejši od trdih diskov. 978 00:42:59,020 --> 00:43:00,700 To je manjši od trdih diskov. 979 00:43:00,700 --> 00:43:03,490 Ampak to je, kadar programi v živo, ko ste jih izvaja. 980 00:43:03,490 --> 00:43:06,380 >> Torej dvokliknete program na Mac ali PC - to je naložen z 981 00:43:06,380 --> 00:43:07,750 trdega diska v RAM. 982 00:43:07,750 --> 00:43:11,760 Takoj, ko je naložen v RAM, se ničle in tisti, ki gredo na pot vrhu, 983 00:43:11,760 --> 00:43:13,130 tako imenovane besedilo segment. 984 00:43:13,130 --> 00:43:17,040 Potem pa takoj, ko se program dejansko začne delovati, glavni 985 00:43:17,040 --> 00:43:18,140 Funkcija se imenuje. 986 00:43:18,140 --> 00:43:21,070 In glavno, kar smo videli, je pogosto lokalnih spremenljivk. 987 00:43:21,070 --> 00:43:24,560 In to je ints in godala in znakov, in podobno. 988 00:43:24,560 --> 00:43:28,300 Torej, če vaš program, ki ste napisali ali program, ki ga imajo 989 00:43:28,300 --> 00:43:33,680 dvojno kliknili uporabljajo nekatere spremenljivke znotraj glavnem končajo na 990 00:43:33,680 --> 00:43:37,020 spodnji strani kup pomnilnika, tako rekoč. 991 00:43:37,020 --> 00:43:39,160 Zdaj, bolj konkretno, kaj to dejansko pomeni? 992 00:43:39,160 --> 00:43:44,080 To samo pomeni, da če bomo šli na številko stvari - 993 00:43:44,080 --> 00:43:49,380 če smo bili, da bo število bajtov RAM-a v računalniku, opazite, da 994 00:43:49,380 --> 00:43:51,650 to je lahko bajt številka nič. 995 00:43:51,650 --> 00:43:56,130 To je lahko bajt številka ena, dva, tri, štiri, pet, šest, vsi 996 00:43:56,130 --> 00:43:57,290 Tako do všeč - 997 00:43:57,290 --> 00:44:01,520 2000000000 bi vso pot tja gor na vrhu. 998 00:44:01,520 --> 00:44:05,960 Torej, z drugimi besedami, ko govorimo o RAM in spomin glede bajte, da 999 00:44:05,960 --> 00:44:09,680 samo pomeni, da je nekdo odločil, kaj štetje vseh 1000 00:44:09,680 --> 00:44:11,110 tiste kose pomnilnika. 1001 00:44:11,110 --> 00:44:16,950 >> Torej, ko boste potrebovali 32 bitov za notr, ali pa boste potrebovali 8 bitov za char, kjer je 1002 00:44:16,950 --> 00:44:18,320 da končajo v spomin? 1003 00:44:18,320 --> 00:44:20,650 No konceptualno so pravkar končala na dnu tega 1004 00:44:20,650 --> 00:44:21,780 stvar, ki se imenuje sklad. 1005 00:44:21,780 --> 00:44:25,670 Ampak kaj je zanimivo, zdaj, ko glavna zahteva funkcija. 1006 00:44:25,670 --> 00:44:28,830 Recimo funkcijo imenovano foo, le poljubno ime. 1007 00:44:28,830 --> 00:44:32,480 Kaj se zgodi, je glavni na dnu te kup pomnilnika. 1008 00:44:32,480 --> 00:44:35,630 Foo je zdaj dal na vrhu glavnega pomnilnika. 1009 00:44:35,630 --> 00:44:40,020 Torej, vse lokalne spremenljivke, ki foo je končal nekakšno konceptualno zgoraj 1010 00:44:40,020 --> 00:44:40,770 tistih v glavnem. 1011 00:44:40,770 --> 00:44:46,920 Če foo poziva novo funkcijo, imenovano bar, te spremenljivke končal tukaj. 1012 00:44:46,920 --> 00:44:49,790 Če vrstica zahteva nekaj drugega, tukaj, tukaj, tukaj. 1013 00:44:49,790 --> 00:44:53,900 Torej, kaj je zanimivo teče program, ki je, kot praviš funkcije, 1014 00:44:53,900 --> 00:44:57,720 in ker te funkcije klic funkcije, in ker te funkcije klice funkcij, 1015 00:44:57,720 --> 00:45:00,980 si zgraditi to kup funkcij v spominu. 1016 00:45:00,980 --> 00:45:06,740 In le enkrat vrne se začnete dobili ta vrnil spomin. 1017 00:45:06,740 --> 00:45:11,190 Torej, eden izmed najlažjih načinov, da zmanjka pomnilnika v računalniškem programu, je 1018 00:45:11,190 --> 00:45:14,170 napišite funkcije, ki jih nikoli ne vrnejo. 1019 00:45:14,170 --> 00:45:16,650 >> Tako na primer, kaj je pokazati toliko s 1020 00:45:16,650 --> 00:45:18,460 namerno buggy program. 1021 00:45:18,460 --> 00:45:24,690 Naj gredo naprej in ne vključujejo # , int main (void). 1022 00:45:24,690 --> 00:45:31,270 In jaz bom storiti, ko (2> 1), ki verjetno ne bodo nikoli 1023 00:45:31,270 --> 00:45:33,370 sprememb na nas. 1024 00:45:33,370 --> 00:45:37,720 In mi daj zdaj in ne printf. 1025 00:45:37,720 --> 00:45:39,950 Pravzaprav, da se dogaja, da je manj vizualno zanimive. 1026 00:45:39,950 --> 00:45:40,460 Naredimo to. 1027 00:45:40,460 --> 00:45:44,840 Za int (i = 0; i> 0). 1028 00:45:44,840 --> 00:45:49,740 Naj bo to napako, sem + +. 1029 00:45:49,740 --> 00:45:51,150 In da ne printf tukaj. 1030 00:45:51,150 --> 00:45:52,550 Naj praksi, kar sem pridigal. 1031 00:45:52,550 --> 00:45:54,090 Pa način tukaj. 1032 00:45:54,090 --> 00:46:00,860 Praznina zbor, in bomo rekli, int i. 1033 00:46:00,860 --> 00:46:02,295 In potem bom rekel, printf - 1034 00:46:04,871 --> 00:46:06,790 Oh, naredimo to bolj zanimivo. 1035 00:46:06,790 --> 00:46:08,350 Naj se dejansko ne natisne ničesar. 1036 00:46:08,350 --> 00:46:10,530 Naj samo to. 1037 00:46:10,530 --> 00:46:11,780 Chorus (i). 1038 00:46:16,630 --> 00:46:17,000 >> V redu. 1039 00:46:17,000 --> 00:46:20,040 Torej, to je Otroški voziček zakaj? 1040 00:46:20,040 --> 00:46:22,850 Delam to gor, kot sem šel, ker je program dejansko ne storiti ničesar 1041 00:46:22,850 --> 00:46:23,420 obresti. 1042 00:46:23,420 --> 00:46:24,670 Ampak to ni cilj. 1043 00:46:24,670 --> 00:46:30,440 Cilj je, da napišete program, katerega glavna funkcija pa kaj, očitno? 1044 00:46:30,440 --> 00:46:31,370 Sam klic. 1045 00:46:31,370 --> 00:46:32,600 In pravzaprav ne potrebujemo zanko. 1046 00:46:32,600 --> 00:46:36,070 Naj tudi poenostaviti to samo zato, da ne bi smeli pozabiti na resnično 1047 00:46:36,070 --> 00:46:37,310 Temeljna napaka. 1048 00:46:37,310 --> 00:46:39,200 Glavna zahteva chorus peti nekaj refren. 1049 00:46:39,200 --> 00:46:41,760 Potem pa sem naredil nekaj neumnega, in sem imel refren Chorus klicev, ker sem domnevala, 1050 00:46:41,760 --> 00:46:43,550 nekdo drug je, da bo njegovo izvajanje mogoče. 1051 00:46:43,550 --> 00:46:45,960 In zdaj se to ne bo še prevesti. 1052 00:46:45,960 --> 00:46:48,340 Moram narediti kaj? 1053 00:46:48,340 --> 00:46:49,700 Rabim prototip, spomnim se. 1054 00:46:49,700 --> 00:46:55,520 Torej moram imeti gor void refren (int i). 1055 00:46:55,520 --> 00:46:57,470 >> Torej, zdaj, če grem dol - 1056 00:46:57,470 --> 00:46:59,030 pravzaprav, kaj je uporabiti večje okno. 1057 00:46:59,030 --> 00:47:01,670 Gremo naprej in da refren. 1058 00:47:01,670 --> 00:47:06,000 Gremo naprej in da refren. 1059 00:47:06,000 --> 00:47:08,302 Uporaba neznanega prijavitelju i. 1060 00:47:08,302 --> 00:47:09,860 Oh, to je bilo neumno. 1061 00:47:09,860 --> 00:47:11,020 Ne potrebujemo argument. 1062 00:47:11,020 --> 00:47:13,680 Naj samo to. 1063 00:47:13,680 --> 00:47:14,550 Želim si, da smo začeli na ta način. 1064 00:47:14,550 --> 00:47:16,160 Bilo bi veliko lažje napisati program. 1065 00:47:16,160 --> 00:47:20,100 Torej obstaja. 1066 00:47:20,100 --> 00:47:23,870 Zdaj greva v mojo terminalsko okno, ponovno zaženite Jek. 1067 00:47:23,870 --> 00:47:26,900 In tukaj smo. 1068 00:47:26,900 --> 00:47:28,020 To je bilo res hitro. 1069 00:47:28,020 --> 00:47:30,690 Kaj se je dejansko zgodilo, kajne? 1070 00:47:30,690 --> 00:47:33,430 No, zdaj bom dodati tiskanja linijo, tako da bomo videli. 1071 00:47:33,430 --> 00:47:41,330 Naj povem printf, recimo, da sem tukaj. 1072 00:47:41,330 --> 00:47:43,470 Ok, ne spremenljivke, ga bomo pustiti tako. 1073 00:47:43,470 --> 00:47:44,860 Naj ponovno zagnati narediti. 1074 00:47:44,860 --> 00:47:47,940 Naj ponovno zagnati zbor. 1075 00:47:47,940 --> 00:47:51,235 In daj no. 1076 00:47:53,880 --> 00:47:55,130 Kar naprej. 1077 00:47:57,630 --> 00:47:59,750 Kot prahi, zakaj je ni doživel še? 1078 00:47:59,750 --> 00:48:02,050 Segmentacija je zgodila napaka, super hitro, preden. 1079 00:48:02,050 --> 00:48:04,250 [Neslišno] 1080 00:48:04,250 --> 00:48:04,830 David J. Malan: Točno tako. 1081 00:48:04,830 --> 00:48:06,350 Zato je potreben čas za tiskanje. 1082 00:48:06,350 --> 00:48:08,370 Samo traja več dela o delu računalnika. 1083 00:48:08,370 --> 00:48:09,550 In to je to. 1084 00:48:09,550 --> 00:48:10,620 Segmentacija napaka. 1085 00:48:10,620 --> 00:48:12,140 >> Torej, opazil, kako hitro delovanje programov. 1086 00:48:12,140 --> 00:48:14,110 Če ne tiska nič, super hiter. 1087 00:48:14,110 --> 00:48:18,100 Ampak še vedno imam to napako segmentacije, ker kaj se je dogajalo? 1088 00:48:18,100 --> 00:48:21,310 No, če pomislite, kako je spomin računalnika, določenimi v tem 1089 00:48:21,310 --> 00:48:22,890 zgodi, da je glavni. 1090 00:48:22,890 --> 00:48:23,800 Ampak tukaj - 1091 00:48:23,800 --> 00:48:28,670 kaj je samo to imenujemo refren, in recimo ta refren. 1092 00:48:28,670 --> 00:48:33,420 In zdaj, če jaz moje estetiko v redu, to je samo hotel reči, refren, 1093 00:48:33,420 --> 00:48:38,060 zbor, zbor, zbor, zbor, zbor, zbor, ad nauseum. 1094 00:48:38,060 --> 00:48:39,920 In na koncu, kaj se bo zgodilo? 1095 00:48:39,920 --> 00:48:46,690 Če velika slika dobesedno to, kaj se je pravkar zgodilo konceptualno? 1096 00:48:46,690 --> 00:48:48,320 Sveženj prekoračitve kup. 1097 00:48:48,320 --> 00:48:52,400 Ali še huje, si prekoračil vse, vključno z besedilom segmentu, ki je 1098 00:48:52,400 --> 00:48:54,530 na ničli, in tisti, ki predstavljajo svoj program. 1099 00:48:54,530 --> 00:48:56,690 Skratka, to je samo super, super slabo. 1100 00:48:56,690 --> 00:48:56,860 Imam prav? 1101 00:48:56,860 --> 00:48:58,620 Vaš program je spiraled izpod nadzora. 1102 00:48:58,620 --> 00:49:02,840 Tako boste uporabljali več pomnilnika, kot si namenjen vsem, ker neumen 1103 00:49:02,840 --> 00:49:03,920 napaka v tem primeru. 1104 00:49:03,920 --> 00:49:08,160 Ali je v tem primeru zelo namerno naredil Funkcija se kliče. 1105 00:49:08,160 --> 00:49:09,210 No, to še ni vse slabo. 1106 00:49:09,210 --> 00:49:12,540 Funkcije se kliče dejansko ima veliko moč 1107 00:49:12,540 --> 00:49:13,700 če ga uporabljate pravilno. 1108 00:49:13,700 --> 00:49:15,650 Nisem ga uporablja pravilno tukaj. 1109 00:49:15,650 --> 00:49:16,940 >> Torej, to ni vse slabo. 1110 00:49:16,940 --> 00:49:20,620 Toda dejstvo, da nikoli nisem ustaviti sebe kliče, je temeljni 1111 00:49:20,620 --> 00:49:23,050 Slabost tukaj tega programa. 1112 00:49:23,050 --> 00:49:25,090 Torej, kam gremo z vsem tem? 1113 00:49:25,090 --> 00:49:26,230 No, kaj se v resnici dogaja? 1114 00:49:26,230 --> 00:49:30,010 Ko sem poklical prirastek funkcije, kot smo počeli v tistih primerih, 1115 00:49:30,010 --> 00:49:33,290 Imam vrednost kot 1, da sem noter padejo 1116 00:49:33,290 --> 00:49:35,820 Grem mimo v kopiji številka ena. 1117 00:49:35,820 --> 00:49:37,080 Tako se zgodi naslednje. 1118 00:49:37,080 --> 00:49:40,390 Torej gremo v shrambo primer. 1119 00:49:40,390 --> 00:49:44,230 In ta človek tu. 1120 00:49:44,230 --> 00:49:46,800 Torej, tukaj je, kaj se dejansko dogaja. 1121 00:49:46,800 --> 00:49:50,770 Ko sem poklical prirastek, in sem mimo in x, slikovno, kaj je 1122 00:49:50,770 --> 00:49:53,660 dogaja je to - 1123 00:49:53,660 --> 00:50:00,240 če imam vrednost 1 shranjene tukaj in dejansko sem poklical prirastek, ki 1124 00:50:00,240 --> 00:50:02,680 se zdaj imenuje refren - 1125 00:50:02,680 --> 00:50:04,010 ja, to me je vrgel tukaj. 1126 00:50:04,010 --> 00:50:06,750 Torej, kaj je to imenujemo prirastek. 1127 00:50:06,750 --> 00:50:09,420 In ne vemo, kaj je to poleg funkcije bo treba. 1128 00:50:09,420 --> 00:50:14,270 Torej, kaj se pravzaprav dogaja tu nekje v glavnem imam kos 1129 00:50:14,270 --> 00:50:16,670 pomnilnika, ki je shranjevanje številko 1. 1130 00:50:16,670 --> 00:50:19,730 Ko sem poklical prirastek, sem z drugo kos pomnilnika, zdaj pa 1131 00:50:19,730 --> 00:50:20,840 imeti kopijo 1. 1132 00:50:20,840 --> 00:50:25,480 Ko sem prirastek te vrednosti, to postane 2 - hudo napisan na 1133 00:50:25,480 --> 00:50:26,420 Zaslon tukaj. 1134 00:50:26,420 --> 00:50:30,550 Ampak potem, kaj se bo zgodilo takoj, ko prirastka vrne? 1135 00:50:30,550 --> 00:50:34,610 Ta spomin dobi samo vrnejo na operacijski sistem, kar pomeni, da vse 1136 00:50:34,610 --> 00:50:37,470 ste storili nič koristno. 1137 00:50:37,470 --> 00:50:43,460 1, ki je bil prvotno iz main je še dejansko obstaja. 1138 00:50:43,460 --> 00:50:44,650 >> Torej, kam gremo s tem? 1139 00:50:44,650 --> 00:50:49,400 No, izkazalo se je, da je v spomin imate to back to back zaporedje 1140 00:50:49,400 --> 00:50:50,940 zlogov, ki jih lahko dajo stvari noter 1141 00:50:50,940 --> 00:50:53,760 In izkazalo se je, da smo že videli nekaj, kar vključuje dajanje 1142 00:50:53,760 --> 00:50:55,100 stvari, back to back to back to back. 1143 00:50:55,100 --> 00:51:00,170 Kaj je niz, ki temelji na teden 1 in 2 tedna zdaj? 1144 00:51:00,170 --> 00:51:01,840 Torej, to je samo zbirka znakov. 1145 00:51:01,840 --> 00:51:05,290 Tako se je izkazalo, tako kot si lahko postavite številke v spominu, podobno lahko 1146 00:51:05,290 --> 00:51:06,900 postaviti znake v spominu. 1147 00:51:06,900 --> 00:51:09,810 In ko smo začeli polaganje znake v spomin na hrbtni strani za nazaj, da 1148 00:51:09,810 --> 00:51:12,800 nazaj, se je izkazalo, da je uporaba najenostavnejših stvari, kot za zanke ali 1149 00:51:12,800 --> 00:51:14,510 while zanko, lahko izbirate - 1150 00:51:14,510 --> 00:51:17,130 od leve proti desni preko znakov v nizu - 1151 00:51:17,130 --> 00:51:20,720 in jih začele vmasirajte v različnih znakov v celoti. 1152 00:51:20,720 --> 00:51:25,550 Lahko postane B. B lahko postane C. Tako da na koncu, bomo lahko 1153 00:51:25,550 --> 00:51:28,830 Angleški stavek, ki dejansko smiselna in pretvorbo vseh tistih 1154 00:51:28,830 --> 00:51:32,440 črke eno za drugo s hojo skozi spomin našega računalnika prepustiti 1155 00:51:32,440 --> 00:51:34,300 Pravica do dejansko šifriranje. 1156 00:51:34,300 --> 00:51:36,590 >> Torej vzamemo 5-minutni odmor tukaj, in ko se vrnemo, bomo 1157 00:51:36,590 --> 00:51:39,060 začetek tega procesa kodiranja informacij. 1158 00:51:41,640 --> 00:51:43,180 >> V redu. 1159 00:51:43,180 --> 00:51:48,440 Torej, preden se potopite v določeni CRYPTO in te stvari se imenuje nizi, kaj mi 1160 00:51:48,440 --> 00:51:51,610 pavza za vsa vprašanja, ker se počutim, kot da sem res nekako megleno nekaterih 1161 00:51:51,610 --> 00:51:52,230 o teh temah. 1162 00:51:52,230 --> 00:51:53,940 Torej, kaj je zdaj popraviti, če lahko. 1163 00:51:53,940 --> 00:51:56,480 Tako smo pravkar govorili o izračunani vrednosti. 1164 00:51:56,480 --> 00:51:58,630 Pogovarjali smo se o argumentih. 1165 00:51:58,630 --> 00:52:02,330 In smo se pogovarjali o tem pojmu, ki jih bomo vrnili v prihodnjih tednih 1166 00:52:02,330 --> 00:52:07,140 prihaja, si spomin kot cel kup teh nalaganjem 1167 00:52:07,140 --> 00:52:08,540 pladnji, tako rekoč. 1168 00:52:08,540 --> 00:52:13,460 Od spodaj gor, tako da je vsaka posoda, ki dobi dal na sklad predstavlja 1169 00:52:13,460 --> 00:52:15,160 funkcija je, da se trenutno imenuje. 1170 00:52:17,970 --> 00:52:20,300 Kakšno vprašanje? 1171 00:52:20,300 --> 00:52:22,890 Torej, kako gre - naj poskusim sprašujem. 1172 00:52:22,890 --> 00:52:25,520 Držim uničil, ampak zdaj it's - you've vsi videli dečkovo obraz. 1173 00:52:25,520 --> 00:52:27,020 Torej bomo vrnili k temu. 1174 00:52:27,020 --> 00:52:29,700 >> Torej, kaj mi postavite vprašanje tukaj. 1175 00:52:29,700 --> 00:52:34,810 Naj poenostaviti to nazaj, kar je bil pred nekaj naše prejšnje Q & A. 1176 00:52:34,810 --> 00:52:41,730 In dejstvo, da je prirastek ima odprto oklepajev, int številka, zaprt 1177 00:52:41,730 --> 00:52:42,260 oklepaj. 1178 00:52:42,260 --> 00:52:46,370 Kaj int številka predstavlja? 1179 00:52:46,370 --> 00:52:47,250 [Neslišno] 1180 00:52:47,250 --> 00:52:47,870 David J. Malan: argument. 1181 00:52:47,870 --> 00:52:50,732 Ok, ampak kaj je razlog? 1182 00:52:50,732 --> 00:52:51,620 [Neslišno] 1183 00:52:51,620 --> 00:52:52,500 David J. Malan: Žal mi je, kaj je to? 1184 00:52:52,500 --> 00:52:53,150 SPEAKER 3: Nekaj, kar boste peljali noter 1185 00:52:53,150 --> 00:52:53,570 David J. Malan: Ok. 1186 00:52:53,570 --> 00:52:54,780 Torej nekaj, kar boste peljali noter 1187 00:52:54,780 --> 00:52:56,560 In na splošno, to je samo vhod. 1188 00:52:56,560 --> 00:52:59,860 Če pišete funkcijo in to funkcijo opravlja na cilj v življenju je, da to 1189 00:52:59,860 --> 00:53:03,290 nekaj malo drugačen vsakič, ko ga uporabljate, potem je edini način za 1190 00:53:03,290 --> 00:53:07,710 , da bi se res zgodilo, se zdi, da se ji z vložkom tako, da 1191 00:53:07,710 --> 00:53:10,180 lahko naredite nekaj drugačnega s tem vhodu vsakič. 1192 00:53:10,180 --> 00:53:13,590 >> Torej boste morali določiti dve stvari, ko se funkcija vhodov. 1193 00:53:13,590 --> 00:53:17,240 Morate navesti ime, ki ga želite dati to vhod za izključno 1194 00:53:17,240 --> 00:53:20,790 svoje udobje, tako da lahko sklicujete nanjo v funkcijo, ki jo 1195 00:53:20,790 --> 00:53:23,610 sami pišete, kot sem jaz tukaj, v skladu 32. 1196 00:53:23,610 --> 00:53:27,840 Vendar pa boste morali navesti svoje vrste, saj je C programski jezik 1197 00:53:27,840 --> 00:53:28,840 da tako zahteva 1198 00:53:28,840 --> 00:53:31,810 da če hočeš spremenljivko, boste morali povedati računalnik, kaj 1199 00:53:31,810 --> 00:53:32,790 vrsta podatkov je, 1200 00:53:32,790 --> 00:53:35,540 v veliki meri tako, da se ve, koliko bitov 1201 00:53:35,540 --> 00:53:37,230 dodeliti za to spremenljivko. 1202 00:53:37,230 --> 00:53:38,600 Ker bi bilo šest - 1203 00:53:38,600 --> 00:53:39,990 Žal to ne bo šest. 1204 00:53:39,990 --> 00:53:41,050 Lahko je 16. 1205 00:53:41,050 --> 00:53:41,630 To je lahko 8. 1206 00:53:41,630 --> 00:53:44,410 To je lahko 32, celo 64. 1207 00:53:44,410 --> 00:53:45,820 Ampak računalnik mora vedeti. 1208 00:53:45,820 --> 00:53:49,110 Zdaj int na levi strani predstavlja, kaj je v nasprotju? 1209 00:53:52,825 --> 00:53:53,780 [Neslišno] 1210 00:53:53,780 --> 00:53:54,570 David J. Malan: Kaj je to? 1211 00:53:54,570 --> 00:53:55,390 [Neslišno] 1212 00:53:55,390 --> 00:53:57,920 David J. Malan: tip funkcije in, natančneje, 1213 00:53:57,920 --> 00:53:59,755 Vrsta njegovih rezultatov. 1214 00:53:59,755 --> 00:54:00,220 Prav. 1215 00:54:00,220 --> 00:54:04,220 Torej, ker je stvar v oklepaju predstavlja vložek, če obstaja, 1216 00:54:04,220 --> 00:54:06,640 stvar na levi predstavlja svojo proizvodnjo. 1217 00:54:06,640 --> 00:54:10,560 In v tem primeru očitno prirastek vrne int. 1218 00:54:10,560 --> 00:54:14,590 In tako je vrnitev int tip te funkcije. 1219 00:54:14,590 --> 00:54:16,090 >> Kaj to pomeni, da se vrnete? 1220 00:54:16,090 --> 00:54:19,810 Dobesedno, uporabite ključno besedo donos. 1221 00:54:19,810 --> 00:54:24,640 In če, kaj se vračajo na desni strani je ključna beseda 1222 00:54:24,640 --> 00:54:28,340 celo število, potem je to dejansko v skladu s tem, kar smo obljubili. 1223 00:54:28,340 --> 00:54:31,110 Ti ne bi mogel storiti kaj takega - 1224 00:54:31,110 --> 00:54:32,280 Pozdravljen svet - 1225 00:54:32,280 --> 00:54:33,500 ker je to niz. 1226 00:54:33,500 --> 00:54:35,440 Očitno to ni celo število. 1227 00:54:35,440 --> 00:54:40,450 Torej na kratko, breme je res na nas, programer, da je specifična, saj 1228 00:54:40,450 --> 00:54:44,730 s tem, kar smo vračajo in nato dejansko iti na njeno vrnitev. 1229 00:54:44,730 --> 00:54:49,030 In potem bi malenkost bolj jasen okvir - 1230 00:54:49,030 --> 00:54:50,080 pa je spet. 1231 00:54:50,080 --> 00:54:51,060 Kontekst - 1232 00:54:51,060 --> 00:54:52,830 Veliko presenečenje prihaja v trenutku. 1233 00:54:52,830 --> 00:54:57,720 Kontekst tukaj je, da računalnika spomin, še enkrat, 1234 00:54:57,720 --> 00:54:59,070 GB, 2 GB, karkoli. 1235 00:54:59,070 --> 00:54:59,630 Mogoče je več. 1236 00:54:59,630 --> 00:55:00,540 Mogoče je manj. 1237 00:55:00,540 --> 00:55:03,750 Ampak računalnik ga vidi kot ob različnih oddelkov. 1238 00:55:03,750 --> 00:55:04,860 Nekaj ​​gre dol. 1239 00:55:04,860 --> 00:55:06,020 Nekaj ​​drugega gre gor. 1240 00:55:06,020 --> 00:55:07,540 Različne stvari se dogaja v sredini. 1241 00:55:07,540 --> 00:55:09,300 In danes smo pravkar začeli povedal to zgodbo. 1242 00:55:09,300 --> 00:55:11,130 >> Ampak bomo vrnili k temu daljšem časovnem obdobju. 1243 00:55:11,130 --> 00:55:15,000 Za zdaj je le del spomina res skrbi, je del besedila 1244 00:55:15,000 --> 00:55:17,160 ker to preprosto predstavlja ničel in enic 1245 00:55:17,160 --> 00:55:18,460 Jek, da je izhodni. 1246 00:55:18,460 --> 00:55:21,570 Torej, ko zaženete ukaz na tipkovnici, kot a.out, ali pa dvakrat 1247 00:55:21,570 --> 00:55:25,350 kliknite na ikono Mac OS ali Windows, je vaš program naložiti s trdega 1248 00:55:25,350 --> 00:55:26,930 voziti v RAM. 1249 00:55:26,930 --> 00:55:30,850 In to je plopped na vrhu RAM računalnika, tako rekoč. 1250 00:55:30,850 --> 00:55:35,470 Sedaj medtem, kot je vaš program zažene in glavni gets imenovane v 1251 00:55:35,470 --> 00:55:39,240 Program, ki ga je napisal ali program Microsoft ali Apple napisal, vsak od njenih 1252 00:55:39,240 --> 00:55:42,930 lokalne spremenljivke končajo tam dol na dnu pomnilnika računalnika. 1253 00:55:42,930 --> 00:55:46,490 Ampak, če glavna zahteva drugo funkcijo, ki ima samo po sebi spremenljivk ali 1254 00:55:46,490 --> 00:55:48,340 Argumenti, ki jih na koncu nad njo. 1255 00:55:48,340 --> 00:55:50,670 In če je ta funkcija zahteva nekaj, končajo nad njo, 1256 00:55:50,670 --> 00:55:51,840 nad njo, nad njo. 1257 00:55:51,840 --> 00:55:56,100 In šele ko je funkcija opravi izvršitve ne Sveženj pladnjev, tako 1258 00:55:56,100 --> 00:55:58,320 govoriti, začne, da bi dobili nižje in nižje. 1259 00:55:58,320 --> 00:56:03,370 In to je tisto, nato pa na kratko pojasni, zakaj, ko ste klic kocka - 1260 00:56:03,370 --> 00:56:04,660 ali pokličete prirastek - 1261 00:56:04,660 --> 00:56:06,490 ti gre v kopiji vrednosti. 1262 00:56:06,490 --> 00:56:09,840 In kaj to pomeni slikovno je, da ste dobesedno pisanjem 1263 00:56:09,840 --> 00:56:14,540 številka 1 v drugem delu pomnilnika, ki spreminja 1-2, v primeru 1264 00:56:14,540 --> 00:56:15,360 prirastek - 1265 00:56:15,360 --> 00:56:17,450 ali do 8, v primeru kocke - 1266 00:56:17,450 --> 00:56:21,450 in nato vrgel proč, da je spomin takoj, ko je prirastek ali kocke 1267 00:56:21,450 --> 00:56:23,410 funkcija vrne. 1268 00:56:23,410 --> 00:56:24,267 >> Vprašanje. 1269 00:56:24,267 --> 00:56:25,517 [Neslišno] 1270 00:56:28,090 --> 00:56:29,970 David J. Malan: Kje - so globalne spremenljivke shranjene v kaj je 1271 00:56:29,970 --> 00:56:32,960 Trenutno se imenuje initialized podatkov ali nezaceto podatkov. 1272 00:56:32,960 --> 00:56:35,900 Razlika je v tem, če imate globalno spremenljivko in jo določite 1273 00:56:35,900 --> 00:56:39,530 Takoj vrednost z enačajem, se konča na vrhu je. 1274 00:56:39,530 --> 00:56:43,390 In če si rekel int x podpičje brez vrednosti, se konča nekoliko 1275 00:56:43,390 --> 00:56:46,670 nižje RAM preprosto po dogovoru. 1276 00:56:46,670 --> 00:56:49,308 Druga vprašanja. 1277 00:56:49,308 --> 00:56:49,750 V redu. 1278 00:56:49,750 --> 00:56:53,040 >> Tako bo ta slika prišla nazaj, smo dobili močnejši s tem, kaj lahko storimo 1279 00:56:53,040 --> 00:56:53,830 z računalnikom. 1280 00:56:53,830 --> 00:56:58,790 Ampak za zdaj, imejmo kratek uvod v kriptografijo, posebna vrsta 1281 00:56:58,790 --> 00:57:01,910 kriptografije, ki ne rešuje vseh težav na svetu, vendar ne reši 1282 00:57:01,910 --> 00:57:02,480 nekatere od njih. 1283 00:57:02,480 --> 00:57:06,090 V tem primeru je tukaj imamo nekaj, kar ti skrivni ključ kriptografija. 1284 00:57:06,090 --> 00:57:10,430 In skrivni ključ kriptografija, kot že ime pove, ima svojo varnost 1285 00:57:10,430 --> 00:57:11,330 od skrivnosti. 1286 00:57:11,330 --> 00:57:14,720 Tako na primer, če ste že v osnovni šoli in ste mimo 1287 00:57:14,720 --> 00:57:18,040 mala skrivnost ljubezensko pismo na fant ali dekle, ki ga na tlačnem - če ste 1288 00:57:18,040 --> 00:57:20,820 želel opraviti, da se z občinstvom, ti verjetno ne bi pisal 1289 00:57:20,820 --> 00:57:24,120 kot opomba v angleščini ali karkoli vaš materni jezik, temveč si 1290 00:57:24,120 --> 00:57:25,800 Morda šifriranje. 1291 00:57:25,800 --> 00:57:27,820 Ali pa boste morda le jim pošljete sporočilo v teh dneh. 1292 00:57:27,820 --> 00:57:30,310 Morda pa bi si dejansko pass jim seznanil celotnem razredu. 1293 00:57:30,310 --> 00:57:33,820 In to storiti varno, tako da vaši prijatelji in učitelj 1294 00:57:33,820 --> 00:57:36,820 Ne vem, kaj pišete, boste morda prišli do precej preprost 1295 00:57:36,820 --> 00:57:37,800 Algoritem - 1296 00:57:37,800 --> 00:57:39,290 mladi, čeprav ste morda - 1297 00:57:39,290 --> 00:57:40,780 da samo Izokrenuti besede. 1298 00:57:40,780 --> 00:57:44,390 Torej, namesto pisanja, lahko napišete B. Namesto B, lahko napišete 1299 00:57:44,390 --> 00:57:46,670 C. Namesto C, lahko pišete D in tako naprej. 1300 00:57:46,670 --> 00:57:50,020 Ali pa bi lahko prišli do bolj zapletenega prevod pisem 1301 00:57:50,020 --> 00:57:51,300 z različnimi črkami. 1302 00:57:51,300 --> 00:57:55,440 Ampak ulov je fant ali dekle, ki jim pošiljate to sporočilo mora 1303 00:57:55,440 --> 00:57:56,850 veš kaj. 1304 00:57:56,850 --> 00:57:59,620 Kar je tisto, kar je očitno? 1305 00:57:59,620 --> 00:58:01,400 Všeč mi je, kaj je tvoj skrivnost. 1306 00:58:01,400 --> 00:58:04,620 Všeč mi je, kaj je to preslikava med AS in BS in DS in DS? 1307 00:58:04,620 --> 00:58:08,780 Je samo dodati eno, tako rekoč za vsako od črk, da gredo iz 1308 00:58:08,780 --> 00:58:09,730 B, B in C? 1309 00:58:09,730 --> 00:58:11,350 Je bolj zapleten kot to? 1310 00:58:11,350 --> 00:58:16,450 Torej vi in ​​vaš simpatijo morajo imeti te tajne informacije. 1311 00:58:16,450 --> 00:58:18,170 Ampak obstaja nekakšna Catch-22 tukaj. 1312 00:58:18,170 --> 00:58:20,760 Če je to zelo prvič ste pošiljanje to ljubezensko pismo prek 1313 00:58:20,760 --> 00:58:25,590 razred, kako je to fant ali dekle bo vedel, kaj je skrivnost tudi ni? 1314 00:58:25,590 --> 00:58:28,450 Torej skrivni ključ kripto ni rešitev za vse probleme sveta. 1315 00:58:28,450 --> 00:58:30,490 In tam je pravzaprav odnos, da bomo prišli nazaj proti 1316 00:58:30,490 --> 00:58:31,370 semester konec. 1317 00:58:31,370 --> 00:58:35,970 >> Podobno se nihče od nas verjetno nikoli poslala - 1318 00:58:35,970 --> 00:58:39,453 podobno, pa večina izmed nas ne pozna nekoga, ki dela na primer na 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 In vendar so mnogi od nas verjetno kupil stvari na Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 In že smo se naučili, da domneva, da ti e-poslovanje 1322 00:58:45,670 --> 00:58:47,060 Transakcije so varni. 1323 00:58:47,060 --> 00:58:47,210 Imam prav? 1324 00:58:47,210 --> 00:58:49,310 Naslov URL verjetno pravi https. 1325 00:58:49,310 --> 00:58:51,590 Tam je morda neumno malo ključavnico ikona nekje. 1326 00:58:51,590 --> 00:58:54,680 Obstaja kakšna kriptografije zagotavljanje podatkov o kreditni kartici 1327 00:58:54,680 --> 00:58:56,980 med vami in Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 In vendar, če kriptografija vključuje vedo nekaj skrivnosti, pa vendar ne vem 1329 00:59:00,410 --> 00:59:03,330 poznate koga na Amazon in sem zagotovo ni urejeno vse vrste 1330 00:59:03,330 --> 00:59:07,350 Skrivnost z nekom na Amazon, kako je moj računalnik ali moj brskalnik to počne? 1331 00:59:07,350 --> 00:59:10,100 No, izkazalo se je druga vrsta kriptografije, ki skupaj rešujejo 1332 00:59:10,100 --> 00:59:10,740 ta problem. 1333 00:59:10,740 --> 00:59:13,610 Toda danes, se bomo osredotočili na preproste 1, kjer se lahko dogovorite na 1334 00:59:13,610 --> 00:59:18,480 vnaprej vedeti nekaj skrivnosti, kot plus 1 ali nekaj kartiranje med AS in BS. 1335 00:59:18,480 --> 00:59:20,710 >> In proces kriptografije splošno vključuje to. 1336 00:59:20,710 --> 00:59:23,550 Imaš nekaj golo besedilo, prikazano tukaj na levi. 1337 00:59:23,550 --> 00:59:26,260 Si ga vodijo skozi neke vrste algoritem ali postopek 1338 00:59:26,260 --> 00:59:27,670 za njegovo šifriranje. 1339 00:59:27,670 --> 00:59:31,390 Mogoče je to le postane B, B postane C. In potem si na koncu z 1340 00:59:31,390 --> 00:59:32,260 šifra besedilo. 1341 00:59:32,260 --> 00:59:36,450 Medtem, ko vaš simpatijo prejme tajne vedite, on ali ona mora nato 1342 00:59:36,450 --> 00:59:39,950 dešifrira s splošno spreminjanje tega algoritem, tako da se 1343 00:59:39,950 --> 00:59:41,640 podprejo golo besedilo. 1344 00:59:41,640 --> 00:59:43,860 Zdaj obstajajo fizične inkarnacije tega. 1345 00:59:43,860 --> 00:59:46,720 Na primer, to je skrivnost dekoder prstan. 1346 00:59:46,720 --> 00:59:50,060 In to je prstan v smislu, da obstajata dva pokliče tukaj. 1347 00:59:50,060 --> 00:59:53,630 Na zunanjem obodu to stvar, tam črke od A do Z, 1348 00:59:53,630 --> 00:59:55,110 čeprav so si v naključnem vrstnem redu. 1349 00:59:55,110 --> 00:59:58,410 In na notranji strani, tam je pravzaprav nekaj številk, tako da se s tem 1350 00:59:58,410 --> 01:00:02,940 obroč, lahko nekako obrnejo navzven, vendar ne v notranjosti, da se postavijo v vrsto 1351 01:00:02,940 --> 01:00:04,110 črk. 1352 01:00:04,110 --> 01:00:08,290 In v posnetku boste kmalu videli - nekateri od njih ste lahko videli 24/7 1353 01:00:08,290 --> 01:00:11,120 okoli božičnega iz filma imenovano Božična zgodba. 1354 01:00:11,120 --> 01:00:16,050 Videli boste, da je malo Ralphie bil tako nestrpen, da ugotovimo, kaj malo siroto 1355 01:00:16,050 --> 01:00:19,810 Skrivnost sporočilo Annie je bila z njim, ki so bili posredovani, mislim, da 1356 01:00:19,810 --> 01:00:22,810 obliki številčnih sporočil na serijski polje. 1357 01:00:22,810 --> 01:00:26,760 In ti si se kopičijo vse majhne kartice, ki ste jih dobili 1358 01:00:26,760 --> 01:00:27,480 V polje žit. 1359 01:00:27,480 --> 01:00:28,320 Imeli ste jih pošljete noter 1360 01:00:28,320 --> 01:00:31,060 Moral si priti nazaj skrivnost obroč dekoder, tako da lahko končno ugotovimo 1361 01:00:31,060 --> 01:00:34,190 kaj je preslikava med črkami in številkami, 1362 01:00:34,190 --> 01:00:35,420 ali črke in črke. 1363 01:00:35,420 --> 01:00:39,790 Zato sem dal ta kratek posnetek iz Božična zgodba motivirati pset 2 in 1364 01:00:39,790 --> 01:00:42,340 naša razprava, v trenutku, z nizi. 1365 01:00:42,340 --> 01:00:43,773 Torej, tukaj imamo Ralphie. 1366 01:00:43,773 --> 01:00:44,126 >> [VIDEO PREDVAJANJE] 1367 01:00:44,126 --> 01:00:47,470 -Se je znano, da vsi po vrsti, ki je Ralph Parker se imenuje 1368 01:00:47,470 --> 01:00:50,690 član Little Orphan Annie kroga Secret in pravico za vse 1369 01:00:50,690 --> 01:00:53,500 v čast in koristi se pojavljajo z njim. 1370 01:00:53,500 --> 01:00:56,040 -Podpisal, Little Orphan Annie. 1371 01:00:56,040 --> 01:00:58,730 Sopodpiše, Pierre Andre! 1372 01:00:58,730 --> 01:01:00,150 V črnila! 1373 01:01:00,150 --> 01:01:02,910 Priznanja in koristi, že pri starosti 9. 1374 01:01:09,970 --> 01:01:10,730 Dajmo, dajmo s tem. 1375 01:01:10,730 --> 01:01:15,000 Ne rabim vse, da jazz o kriminalcih in pirate. 1376 01:01:15,000 --> 01:01:17,624 -Poslušaj jutri zvečer na zaključni avanturo Črna 1377 01:01:17,624 --> 01:01:19,710 Piratsko ladjo. 1378 01:01:19,710 --> 01:01:23,380 Zdaj je čas za skrivno sporočilo Annie za vas člani 1379 01:01:23,380 --> 01:01:25,670 The Secret Circle. 1380 01:01:25,670 --> 01:01:30,260 Ne pozabite, da otroci lahko samo člani Secret kroga Annie je dekodirati 1381 01:01:30,260 --> 01:01:31,660 Skrivnost je Annie sporočilo. 1382 01:01:31,660 --> 01:01:36,230 Ne pozabite, Annie je odvisno od vas. 1383 01:01:36,230 --> 01:01:38,720 Nastavite zatiči B2. 1384 01:01:38,720 --> 01:01:41,040 Tukaj je sporočilo. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Jaz sem v svojem prvem sestanku skrivnost. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 Pierre je v veliki nocoj glasu. 1389 01:01:51,700 --> 01:01:54,890 Jaz lahko povem, da je bila današnja sporočilo zelo pomembno. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 To je sporočilo od Annie sama. 1392 01:01:58,590 --> 01:01:59,840 Ne pozabite, ne povej nikomur. 1393 01:02:04,570 --> 01:02:08,750 -90 Sekund kasneje, sem v edinem prostoru v hiši, kjer fant 9 1394 01:02:08,750 --> 01:02:12,980 bi lahko sedeli v zasebnost in dekodiranje. 1395 01:02:12,980 --> 01:02:17,130 Aha, B. sem šel naprej. 1396 01:02:17,130 --> 01:02:20,330 E. Prva beseda je lahko. 1397 01:02:20,330 --> 01:02:22,670 S. Prihajal je lažje zdaj. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 Oh, daj no, Ralphie. 1400 01:02:26,510 --> 01:02:28,430 Moram iti. 1401 01:02:28,430 --> 01:02:30,350 Takoj se dol, ma. 1402 01:02:30,350 --> 01:02:33,720 -Gee duša. 1403 01:02:33,720 --> 01:02:38,270 -T, O. Bodite prepričani, da. 1404 01:02:38,270 --> 01:02:40,000 Bodite prepričani, da česa? 1405 01:02:40,000 --> 01:02:42,105 Kaj je bilo malo Orphan Annie poskuša povedati? 1406 01:02:42,105 --> 01:02:43,095 Bodite prepričani, da česa? 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy je iti. 1409 01:02:44,580 --> 01:02:45,570 Bi, prosim, pridi ven? 1410 01:02:45,570 --> 01:02:46,560 V redu, mama. 1411 01:02:46,560 --> 01:02:48,540 Pridem takoj. 1412 01:02:48,540 --> 01:02:50,580 -Bil sem bližje zdaj. 1413 01:02:50,580 --> 01:02:52,550 Napetost je bilo grozno. 1414 01:02:52,550 --> 01:02:53,355 Kaj je bilo? 1415 01:02:53,355 --> 01:02:56,315 Usoda našega planeta lahko visi na nitki. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy mora iti. 1418 01:02:59,165 --> 01:03:02,310 Takoj se ven, za zjokat. 1419 01:03:02,310 --> 01:03:04,000 -Joj, že skoraj tam. 1420 01:03:04,000 --> 01:03:05,180 Moji prsti letel. 1421 01:03:05,180 --> 01:03:07,150 Moj um je bil jekla past. 1422 01:03:07,150 --> 01:03:08,790 Vsak por vibrira. 1423 01:03:08,790 --> 01:03:10,040 Bilo je skoraj čista. 1424 01:03:10,040 --> 01:03:13,400 Ja, ja, ja, ja. 1425 01:03:13,400 --> 01:03:18,960 -Bodite prepričani, da popij Ovaltine. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 Crummy komercialno? 1428 01:03:28,200 --> 01:03:29,640 Kurbin sin. 1429 01:03:29,640 --> 01:03:33,340 [END VIDEO PREDVAJANJE] 1430 01:03:33,340 --> 01:03:36,040 >> David J. Malan: Torej imamo kriptografije. 1431 01:03:36,040 --> 01:03:39,670 Torej, kako v računalniku, lahko gremo o izvajanju ali 1432 01:03:39,670 --> 01:03:40,950 predstavljajo stvari, kot je ta? 1433 01:03:40,950 --> 01:03:44,430 Torej, potrebujemo način izražanja sebe malo bolj fleksibilno kot 1434 01:03:44,430 --> 01:03:46,420 naši spremenljivke so doslej dovoljeno. 1435 01:03:46,420 --> 01:03:47,370 Imeli smo ints. 1436 01:03:47,370 --> 01:03:48,380 Imeli smo znakov. 1437 01:03:48,380 --> 01:03:50,790 Imeli smo boje in v dvojicah in nekaj drugih. 1438 01:03:50,790 --> 01:03:55,050 Ampak to so unikatni pomnilnika, ki v resnici ne nam omogočajo 1439 01:03:55,050 --> 01:03:58,010 predstavljajo stvari, kot besed in stavkov in izrazov. 1440 01:03:58,010 --> 01:04:00,200 Dejansko smo tako imenovane nize stvari. 1441 01:04:00,200 --> 01:04:03,650 Ampak mi je obljubil, da je to res samo poenostavitev v CS50 1442 01:04:03,650 --> 01:04:07,020 knjižnica, ki smo nameravajo lupine nazaj. 1443 01:04:07,020 --> 01:04:08,970 >> In tako začnimo za to tukaj. 1444 01:04:08,970 --> 01:04:11,130 Naj gredo naprej in odpiranje datotek - 1445 01:04:11,130 --> 01:04:13,770 Vse te datoteke so na voljo na spletu kot običajno - 1446 01:04:13,770 --> 01:04:19,120 pozval array.c rešiti problem povezan s strunami, vendar slika 1447 01:04:19,120 --> 01:04:23,040 slika tule, kako jih bomo uporabili nekaj imenovano matriko. 1448 01:04:23,040 --> 01:04:25,530 Matrika je podatkovni tip. 1449 01:04:25,530 --> 01:04:31,320 To je tip spremenljivke, z menoj, da je več manjših vrst podatkov 1450 01:04:31,320 --> 01:04:34,150 znotraj nje back to back to back to back. 1451 01:04:34,150 --> 01:04:37,700 Tako na primer, če želimo napisati malo program, ki vam omogoča vaš 1452 01:04:37,700 --> 01:04:42,110 kviz povprečje za tečaj kot 50, ki ima 2 kvize, si lahko zelo enostavno 1453 01:04:42,110 --> 01:04:45,170 napisati ta program - temelji tudi na nekaterih snovi prejšnji teden - 1454 01:04:45,170 --> 01:04:47,770 z GetInt in nekaj spremenljivk. 1455 01:04:47,770 --> 01:04:51,920 Int quiz1, int quiz2, in to je precej preprosta. 1456 01:04:51,920 --> 01:04:55,930 To je morda 10, 20 vrstic kode, največ, za izvajanje programa, ki zahteva 1457 01:04:55,930 --> 01:05:01,170 si za dve kviz rezultatov in nato izračuna njihovo povprečje jih dodate 1458 01:05:01,170 --> 01:05:03,850 skupaj delimo z 2, nato pa tiskanje rezultatov. 1459 01:05:03,850 --> 01:05:06,380 Mi bi morali storiti, da kar takoj zdaj, ko 1460 01:05:06,380 --> 01:05:07,510 nekaj več minut. 1461 01:05:07,510 --> 01:05:11,005 >> Ampak problem je, da predvidevam, da je 50 imel tri ali štiri kvizov. 1462 01:05:11,005 --> 01:05:13,510 Recimo, da ste želeli uporabiti isti program za razred, ki je imel 1463 01:05:13,510 --> 01:05:14,850 tedenski kvizi. 1464 01:05:14,850 --> 01:05:16,610 Pomislite na razred, ki je tedensko kvizov. 1465 01:05:16,610 --> 01:05:20,610 Če je tako ali tako 16 tednov na semester, imate zdaj 16 spremenljivk - 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 Takoj, ko boste začeli videvati to odpuščanje, to kopiranje in lepljenje 1468 01:05:27,560 --> 01:05:31,390 kode, bi morala začeti, da bi si želel je bilo bolje tako. 1469 01:05:31,390 --> 01:05:33,930 In na srečo, zaradi nizi, pa je. 1470 01:05:33,930 --> 01:05:34,980 Torej, kaj je to. 1471 01:05:34,980 --> 01:05:38,430 Najprej naj vam predstavim zelo preprosta stvar, ki smo jih doslej niso uporabljali, 1472 01:05:38,430 --> 01:05:40,140 vendar boste ugotovili, da občasno v kodi. 1473 01:05:40,140 --> 01:05:42,360 To je tisto, kar je splošno imenujemo konstanta. 1474 01:05:42,360 --> 01:05:45,790 Torej, to je stalnica v smislu, da se ta vrednost ne spremeni. 1475 01:05:45,790 --> 01:05:49,210 Konvenciji o človekovih pri ustvarjanju konstanta je, da uporabite ves kapital 1476 01:05:49,210 --> 01:05:51,940 črke, samo zato, da resnično izstopa v kodi. 1477 01:05:51,940 --> 01:05:55,960 In posebna ključna beseda, ki jo uporabljajo v C # je definirati. 1478 01:05:55,960 --> 01:06:00,250 Torej, če ste rekli # define, nato presledek, nato pa besedo, ki jo želite uporabiti za 1479 01:06:00,250 --> 01:06:03,260 Konstanta ime, nato pa je vrednost konstante. 1480 01:06:03,260 --> 01:06:06,180 Torej, z odpovednim rokom, to je drugačen od dodeljevanju nekaj spremenljivko. 1481 01:06:06,180 --> 01:06:07,020 Ni enačaj. 1482 01:06:07,020 --> 01:06:08,240 Ni podpičje. 1483 01:06:08,240 --> 01:06:11,410 To je tisto, kar je splošno znano kot Preprocessor direktive, temveč bolj na 1484 01:06:11,410 --> 01:06:12,210 da je še čas. 1485 01:06:12,210 --> 01:06:18,540 >> Za zdaj, to ustvarja nespremenljiva pozval vrednost kvizi, katere dejanski 1486 01:06:18,540 --> 01:06:19,940 številčna vrednost je 2. 1487 01:06:19,940 --> 01:06:24,020 Torej, kjerkoli vidite, kvizi, kvizi, kvizi vsej tej zadevi, to je 1488 01:06:24,020 --> 01:06:25,410 samo številka 2. 1489 01:06:25,410 --> 01:06:28,100 Zdaj, če gledam na glavni zdaj, da vidimo, kako to deluje. 1490 01:06:28,100 --> 01:06:29,500 Sprva je videti malce skrivnosten. 1491 01:06:29,500 --> 01:06:31,340 Ampak to je vse stvari iz tedna 1. 1492 01:06:31,340 --> 01:06:32,710 Vprašaj uporabnika za razrede. 1493 01:06:32,710 --> 01:06:33,630 Kako to storiti? 1494 01:06:33,630 --> 01:06:35,470 No, v vrstico 22 - 1495 01:06:35,470 --> 01:06:37,210 to je res sočen del - 1496 01:06:37,210 --> 01:06:40,960 Izjavljam, plovec, ne pa samo eno float. 1497 01:06:40,960 --> 01:06:44,620 Jaz sem razglasitvi, temveč niz s plavajočo vejico. 1498 01:06:44,620 --> 01:06:49,100 Ta spremenljivka se dogaja, da se imenuje razrede, kot je vsebovano tukaj. 1499 01:06:49,100 --> 01:06:53,080 Ampak samo kos novim sintakso potem so ti oglati oklepaji, dejstvo, 1500 01:06:53,080 --> 01:06:59,350 da sem rekel obtoku ocene in nato oklepaj in nato številko. 1501 01:06:59,350 --> 01:07:02,460 Obvestilo, če je to konstanta, to je tako kot smo to naredili. 1502 01:07:02,460 --> 01:07:06,890 To pomeni, hej računalnik, daj mi dve boje, in naj skupaj imenujemo 1503 01:07:06,890 --> 01:07:08,220 jih razredov. 1504 01:07:08,220 --> 01:07:11,920 To je v nasprotju z veliko bolj dolgočasno postopku, kot je ta. 1505 01:07:11,920 --> 01:07:15,850 Float Grade1, plavajo grade2, in tako naprej. 1506 01:07:15,850 --> 01:07:20,010 Torej matrika nam omogoča, da izvajajo to zamisel, vendar veliko manj messily v 1507 01:07:20,010 --> 01:07:24,630 tak način, da bomo lahko napisali eno vrstico kode, namesto, recimo, 16 za 16 1508 01:07:24,630 --> 01:07:25,740 teden semester. 1509 01:07:25,740 --> 01:07:29,950 Zato nisem hotel, da je težko koda 2, ker če menite o tem zdaj 1510 01:07:29,950 --> 01:07:34,160 Logično - Predvidevam, naslednje leto CS50 spremembe 3 kvizi namesto tega. 1511 01:07:34,160 --> 01:07:35,510 In sem imel številko 2 tukaj. 1512 01:07:35,510 --> 01:07:36,600 Imel sem številko 2 tukaj. 1513 01:07:36,600 --> 01:07:37,580 Imel sem številko 2 tukaj. 1514 01:07:37,580 --> 01:07:38,560 Imel sem številko 2 tukaj. 1515 01:07:38,560 --> 01:07:43,180 To postane zelo dolgočasno in zelo težko zajebal in da se po nesreči spremenite 1516 01:07:43,180 --> 01:07:47,690 1 vrednost 3 in pogrešam kakšno drugo vrednost 2. 1517 01:07:47,690 --> 01:07:52,460 Zato bom namesto abstraktnih to stran, uporabite ta konstanta, kot njenega 1518 01:07:52,460 --> 01:07:54,120 ime pove, se ne spreminja. 1519 01:07:54,120 --> 01:07:57,710 In zdaj, ne glede na to, ali imamo različne kvize letos ali naslednje, sem 1520 01:07:57,710 --> 01:08:01,210 Samo, da ga spremeni na enem mestu, tu na vrhu. 1521 01:08:01,210 --> 01:08:02,720 >> Tako, da je vse, kar je konstanta. 1522 01:08:02,720 --> 01:08:08,680 Medtem pa nova konceptualna značilnost je, da za matriko. 1523 01:08:08,680 --> 01:08:14,660 Tako so oglati oklepaji, da mi to veliko boje in mi omogoča, da skupaj 1524 01:08:14,660 --> 01:08:16,630 Pravimo jim razrede tukaj. 1525 01:08:16,630 --> 01:08:17,990 In zdaj poglejmo, kaj bom naredil. 1526 01:08:17,990 --> 01:08:20,359 Tukaj, v skladu 24 je za začetek zanke. 1527 01:08:20,359 --> 01:08:22,260 To je res nič posebnega. 1528 01:08:22,260 --> 01:08:25,060 To je samo z uporabo kvizov namesto težko kodirane številke. 1529 01:08:25,060 --> 01:08:27,790 Ampak ni nič drugačen intelektualno tam od prejšnjega tedna. 1530 01:08:27,790 --> 01:08:29,040 To je samo printf. 1531 01:08:29,040 --> 01:08:35,490 Torej printf ("kviz številka% d od% d"), ker želim, da natisnete daj mi kviz 1532 01:08:35,490 --> 01:08:38,050 Številka ena od dveh, nato pa dva 2. 1533 01:08:38,050 --> 01:08:39,850 Torej, to je zgolj estetski stvar. 1534 01:08:39,850 --> 01:08:42,500 Toda zanimivo je zdaj v skladu 27. 1535 01:08:42,500 --> 01:08:48,310 Da bi zapolnili v enem od dveh ogradi s plavajočo vejico 1536 01:08:48,310 --> 01:08:51,029 vrednost, lahko ponovno uporabite oglate oklepaje. 1537 01:08:51,029 --> 01:08:55,620 V tem primeru, sem uporabljam, ker je ta zanka se je začelo z i izenačila 1538 01:08:55,620 --> 01:08:57,560 kakšno vrednost, očitno? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Torej na prvi ponovitvi te zanke je, kot da sem 1541 01:09:01,350 --> 01:09:02,689 je to napisal v šifrah. 1542 01:09:02,689 --> 01:09:05,580 Toda na drugi ponovitvi te zanke je, kot da sem 1543 01:09:05,580 --> 01:09:07,750 to napisal v mojem kodo. 1544 01:09:07,750 --> 01:09:10,750 Toda dejstvo, da sem z uporabo spremenljivke je kot nalašč, saj, kot je ime 1545 01:09:10,750 --> 01:09:14,300 predlaga, da se različne svojo vrednost na vsaki ponovitvi. 1546 01:09:14,300 --> 01:09:17,370 Torej sem polnjenje tem polju eno mesto naenkrat. 1547 01:09:17,370 --> 01:09:18,910 Kaj to polje videti? 1548 01:09:18,910 --> 01:09:21,430 No, razlog, da sem narisal to super preprost pravokotnik na zaslonu tukaj 1549 01:09:21,430 --> 01:09:23,350 prej je bil zaradi tega. 1550 01:09:23,350 --> 01:09:27,279 Matrika je le kos pomnilnika sledil nov kos pomnilnika, 1551 01:09:27,279 --> 01:09:30,109 sledijo drug kos pomnilnika, in tako naprej. 1552 01:09:30,109 --> 01:09:35,260 Torej, če mi je matrika velikosti 2, v tem primeru tukaj, vse bi rad počel s 1553 01:09:35,260 --> 01:09:37,590 vnašati v mojih kviz rezultatov, kot tu. 1554 01:09:37,590 --> 01:09:39,430 Imam 100, glede tega. 1555 01:09:39,430 --> 01:09:42,020 In potem sem dobil 99 na to. 1556 01:09:42,020 --> 01:09:46,040 Potem je ta spomin celo ne uporabljajo, saj sem samo vprašal 1557 01:09:46,040 --> 01:09:48,689 Računalnik za matriko velikosti 2. 1558 01:09:48,689 --> 01:09:50,180 Ti trgi so še vedno tam. 1559 01:09:50,180 --> 01:09:50,340 Imam prav? 1560 01:09:50,340 --> 01:09:52,500 Imate še 2 GB RAM-a, tudi če ste le 1561 01:09:52,500 --> 01:09:53,979 prosi za dva plovcev. 1562 01:09:53,979 --> 01:09:58,710 Torej, ideja je, da se nizi računalnik samo traja kos pomnilnika 1563 01:09:58,710 --> 01:10:03,230 in nato porazdeli manjše kose back to back to back to back. 1564 01:10:03,230 --> 01:10:04,740 In da je vse, kar je matrika. 1565 01:10:04,740 --> 01:10:09,080 To je mejna kos pomnilnika, znotraj katerega lahko postavite stvari. 1566 01:10:09,080 --> 01:10:12,400 >> No, to se zgodi, da naredite le malo dolgočasno računanje. 1567 01:10:12,400 --> 01:10:16,170 Če bi se pomaknite dol, to je, če sem potem ponoviti čez polje. 1568 01:10:16,170 --> 01:10:19,410 Sem prišel s seštevanjem vseh vrednosti v matriki. 1569 01:10:19,410 --> 01:10:22,390 In potem sem uporabo okroglo funkcije tu dejansko storijo 1570 01:10:22,390 --> 01:10:23,940 Skratka, deljeno s kvizi. 1571 01:10:23,940 --> 01:10:27,450 Ampak mi pomahal z roko si to kot nekakšen dovolj aritmetične za zdaj. 1572 01:10:27,450 --> 01:10:30,010 Ampak vse to počne zame konec koncev se izračuna povprečje. 1573 01:10:30,010 --> 01:10:33,640 Torej, najprej kviz plus 2. kviz, deljeno z 2, nato pa tiskanje 1574 01:10:33,640 --> 01:10:34,700 ven kot notr. 1575 01:10:34,700 --> 01:10:39,030 >> Ampak kaj je zdaj prehod na drug primer, imenovano niz1, 1576 01:10:39,030 --> 01:10:42,370 ki riše podobno sliko, ampak s pomočjo vrvice. 1577 01:10:42,370 --> 01:10:45,550 Naj gredo naprej in poenostaviti le za trenutek. 1578 01:10:45,550 --> 01:10:48,340 In oprosti zamik za zdaj. 1579 01:10:48,340 --> 01:10:52,280 Obvestilo v vrstici 19 tega primera, sem dobil niz s strani uporabnika. 1580 01:10:52,280 --> 01:10:55,780 Toda opazil, kaj sem počel v naslednji vrsticah 22 naprej. 1581 01:10:55,780 --> 01:11:00,260 Jaz sem pravzaprav ponavljanjem od i do - in to je nov trik - 1582 01:11:00,260 --> 01:11:02,730 strlen, dolžina niza. 1583 01:11:02,730 --> 01:11:07,010 To je funkcija, ki ima C, če se boste peljali to niz, pove 1584 01:11:07,010 --> 01:11:08,950 si, koliko znakov je v tem nizu. 1585 01:11:08,950 --> 01:11:09,440 To je vse. 1586 01:11:09,440 --> 01:11:12,520 Dejstvo, da je strlen namesto dolžine niza je samo zato, ker je 1587 01:11:12,520 --> 01:11:13,040 bolj skope. 1588 01:11:13,040 --> 01:11:17,100 Pred 30 leti so ljudje všeč, da napišete stvari, kot na kratko kot je mogoče. 1589 01:11:17,100 --> 01:11:19,080 Tako da smo ohranili to konvencijo tukaj. 1590 01:11:19,080 --> 01:11:21,730 i + + pomeni le i prirastek v vsaki ponovitvi. 1591 01:11:21,730 --> 01:11:24,310 In zdaj opazil to, kar je res zanimivo. 1592 01:11:24,310 --> 01:11:28,730 Torej, v skladu 24, povem računalnik, daj mi znak, 8 1593 01:11:28,730 --> 01:11:30,770 bitov, in ga imenujemo c. 1594 01:11:30,770 --> 01:11:35,370 Ampak kaj je to na desni strani govoriš? 1595 01:11:35,370 --> 01:11:38,150 V angleščini, kaj to pomeni? 1596 01:11:38,150 --> 01:11:40,070 [Neslišno] 1597 01:11:40,070 --> 01:11:40,490 David J. Malan: Točno tako. 1598 01:11:40,490 --> 01:11:42,390 Daj mi prvi znak v polje. 1599 01:11:42,390 --> 01:11:45,400 Ali bolj splošno, daj mi i-ti znak v polje. 1600 01:11:45,400 --> 01:11:48,230 In spoznali, da je zdaj pomembno, da so znanstvenike s področja računalništva, smo dejansko 1601 01:11:48,230 --> 01:11:49,330 šteto od 0. 1602 01:11:49,330 --> 01:11:51,290 Nimaš diskrecijsko zdaj začeti s tem. 1603 01:11:51,290 --> 01:11:54,580 Zdaj imate, da se obnašajo v skladu s pričakovanji računalnika in 1604 01:11:54,580 --> 01:11:58,010 šteti od nič, ker [0] se bo 1. 1605 01:11:58,010 --> 01:11:59,670 znakov v nizu. 1606 01:11:59,670 --> 01:12:01,320 [1] se bo drugi. 1607 01:12:01,320 --> 01:12:03,610 [2] se bo tretja in tako naprej. 1608 01:12:03,610 --> 01:12:08,840 Torej ta program, če ga pripravijo - to je spet niz1. 1609 01:12:08,840 --> 01:12:11,040 >> Torej, da niz1. 1610 01:12:11,040 --> 01:12:16,730 In zdaj sem prost niz1 v mojem terminalskem oknu. 1611 01:12:16,730 --> 01:12:19,180 Čaka na vhod, tako da bom s tipom, recimo, David. 1612 01:12:19,180 --> 01:12:20,080 Enter. 1613 01:12:20,080 --> 01:12:23,350 In zdaj se natisne David vse na različnih progah, saj 1614 01:12:23,350 --> 01:12:24,430 opazili, kaj počnem. 1615 01:12:24,430 --> 01:12:27,510 Jaz tiskanje en znak naenkrat. 1616 01:12:27,510 --> 01:12:29,100 Zdaj ne bom šel v podrobnosti o tem danes. 1617 01:12:29,100 --> 01:12:31,610 Ampak sem izbrisal nekaj trenutkov pred tem preverite tukaj. 1618 01:12:31,610 --> 01:12:36,310 Izkazalo se je, da če se uporabnik ne deluje pravilno, kontradiktornost, ali pa samo 1619 01:12:36,310 --> 01:12:41,780 zmeden, lahko dejansko ne bi prinesla niz obširneje. 1620 01:12:41,780 --> 01:12:43,640 Če ste zadeli napačno tipko na tipkovnici, lahko daš 1621 01:12:43,640 --> 01:12:44,390 št niz sploh. 1622 01:12:44,390 --> 01:12:47,790 Ali pa, če ste zlobni, lahko poskusite prilepite v vrednosti Gigabyte z dne 1623 01:12:47,790 --> 01:12:49,380 esej izpolniti tega niza. 1624 01:12:49,380 --> 01:12:52,060 In če računalniku zmanjka spomina, se je izkazalo, da bomo 1625 01:12:52,060 --> 01:12:54,310 , da bi dobili nazaj to posebno vrednost, imenovano null. 1626 01:12:54,310 --> 01:12:57,550 Torej za zdaj, samo vem, da je to posebno vrednost imenujemo null da 1627 01:12:57,550 --> 01:13:01,000 nam bo omogočilo, da preveri, ko bomo iz spomina, med drugim. 1628 01:13:01,000 --> 01:13:07,330 >> Ampak, če sem odprla zdaj niz2, opazil eno razliko tukaj. 1629 01:13:07,330 --> 01:13:09,760 Obvestilo eno razliko tukaj z niz2. 1630 01:13:09,760 --> 01:13:13,260 Z niz2, ta zanka je malo drugačna. 1631 01:13:13,260 --> 01:13:16,350 Naj brisanje ničel, tako da lahko govorimo o tistih, drugič. 1632 01:13:16,350 --> 01:13:18,460 Toda kaj je drugače približno za zanko tokrat? 1633 01:13:21,580 --> 01:13:23,160 In sem šel nazaj na prejšnji primer. 1634 01:13:23,160 --> 01:13:24,800 Torej, to je različica 2. 1635 01:13:24,800 --> 01:13:27,020 To je različica 1. 1636 01:13:27,020 --> 01:13:31,935 Ena, dve, ena dve. 1637 01:13:35,030 --> 01:13:38,240 Torej strlen klic je kje? 1638 01:13:38,240 --> 01:13:40,420 To je v prvi del za zanko. 1639 01:13:40,420 --> 01:13:43,060 Vsak misli, zakaj to delam? 1640 01:13:43,060 --> 01:13:43,690 Ja. 1641 01:13:43,690 --> 01:13:46,010 [Neslišno] 1642 01:13:46,010 --> 01:13:47,630 David J. Malan: Torej ne kliči funkcije vsak čas. 1643 01:13:47,630 --> 01:13:48,040 Točno tako. 1644 01:13:48,040 --> 01:13:50,350 Odpoklic iz for zanke, da so si zelo enostavna, ko ste nekako 1645 01:13:50,350 --> 01:13:52,180 Razumem, da je to inicializacijo, se 1646 01:13:52,180 --> 01:13:53,330 stanje in posodobitev. 1647 01:13:53,330 --> 01:13:55,430 Problem je, da je pogoj zgodi na vsakih 1648 01:13:55,430 --> 01:13:56,600 ponovitev zanke. 1649 01:13:56,600 --> 01:13:59,930 In tako se je v tem primeru v tej zadevi, kar je slabo, o tem, 1650 01:13:59,930 --> 01:14:03,500 da je to moje stanje? 1651 01:14:03,500 --> 01:14:05,920 Kličeš strlen znova in znova in znova. 1652 01:14:05,920 --> 01:14:08,990 Ampak, ko sem ga vnesli v DAVID, dolžina tega niza je pet. 1653 01:14:08,990 --> 01:14:11,560 In to ne bo spremenilo na vsaki ponovitvi zanke, saj je 1654 01:14:11,560 --> 01:14:15,560 Niz je še vedno D-V-I-D. Torej, to je namig, kaj se dogaja, da postanejo 1655 01:14:15,560 --> 01:14:19,650 bolj pomembna ideja, znan kot oblikovanje odločitev, kadar je to - pač ne 1656 01:14:19,650 --> 01:14:21,640 da računalnik to nepotrebno delo. 1657 01:14:21,640 --> 01:14:25,630 >> Zdaj pa tako kot slepar predogled pset 2, pset 2 v standardni različici je 1658 01:14:25,630 --> 01:14:28,850 vas bo izpodbijala dejansko izvajajo nekaj več, nekaj šifre 1659 01:14:28,850 --> 01:14:32,650 Število šifrirnih algoritmov, tako da lahko oba šifriranje in dešifriranje 1660 01:14:32,650 --> 01:14:35,530 skrivnih sporočil, podobno kot eni Ralphie je dešifriral. 1661 01:14:35,530 --> 01:14:38,720 V hacker izdaji pset 2, smo šli malo naprej. 1662 01:14:38,720 --> 01:14:42,010 Bomo izročil datoteko iz dejanskega računalniškega sistema, ki vsebuje 1663 01:14:42,010 --> 01:14:45,690 Cel kup imen in gesel dejanskih šifriranih in izziv 1664 01:14:45,690 --> 01:14:49,110 Za heker izdaja se bo crack teh gesel in slika 1665 01:14:49,110 --> 01:14:53,060 kaj kriptografije ali kaj skrivnost je bila uporabljena za dejansko 1666 01:14:53,060 --> 01:14:55,080 pridobivanje teh gesel. 1667 01:14:55,080 --> 01:14:58,360 In mi bomo to z novo funkcijo, tu v C, da bom dal 1668 01:14:58,360 --> 01:15:02,200 si demo, znan kot argumenti v ukazni vrstici. 1669 01:15:02,200 --> 01:15:05,930 >> Tako se je izkazalo, kot morda nekateri od vas videl v oddelku ali v učbenikih, 1670 01:15:05,930 --> 01:15:09,850 Glavna nima vedno za neveljavne v oklepajih. 1671 01:15:09,850 --> 01:15:14,060 Izkaže se, da lahko glavni zapišemo tudi takole, z dvema argumentov, 1672 01:15:14,060 --> 01:15:19,690 argc in argv, kjer argc je število besed, ki jih vnesete po 1673 01:15:19,690 --> 01:15:21,940 ime programa na ukazni vrstici. 1674 01:15:21,940 --> 01:15:24,550 In argv je dejanska besede. 1675 01:15:24,550 --> 01:15:29,470 In ko so oglati oklepaji tam kažejo, argv je očitno polje. 1676 01:15:29,470 --> 01:15:33,720 To se dogaja, da je niz po nizu po nizu v pomnilniku. 1677 01:15:33,720 --> 01:15:36,170 Torej, kaj bomo mogli storiti, začenši z pset 2, se 1678 01:15:36,170 --> 01:15:37,310 nekaj takega. 1679 01:15:37,310 --> 01:15:42,450 Če naredim argv1, ki je na primer, da bomo vrnili v ponedeljek, in vodijo 1680 01:15:42,450 --> 01:15:45,180 je, opazite, da se ne zdi, da storiti ničesar še. 1681 01:15:45,180 --> 01:15:47,050 Prav tako natisne svoje ime. 1682 01:15:47,050 --> 01:15:53,220 Ampak, če rečem zbogom razred, obvestilo, da ta program očitno ponavlja 1683 01:15:53,220 --> 01:15:57,030 v vsakem od besed, ki so vnesli v ukazno vrstico. 1684 01:15:57,030 --> 01:16:02,050 In sredstvo, s katerim bomo pridobili dostop do besed, ki jih ima uporabnik 1685 01:16:02,050 --> 01:16:06,780 vnesli v ukazno vrstico je s spremembo glavni, ki se začne ta konec tedna, od notr 1686 01:16:06,780 --> 01:16:10,710 main (void) int main (argc, argv). 1687 01:16:10,710 --> 01:16:13,700 In bo tako rodil argumente v ukazni vrstici. 1688 01:16:13,700 --> 01:16:17,210 In ko se res sofisticiran na to, boste lahko pisali 1689 01:16:17,210 --> 01:16:21,370 Res trippy programi, kot je tale tukaj, ki presega presegajo 1690 01:16:21,370 --> 01:16:25,520 nekatere funkcije smo naredili doslej, ampak vse zelo močna. 1691 01:16:25,520 --> 01:16:27,330 >> Torej bomo pustim pri tem na zaslonu. 1692 01:16:27,330 --> 01:16:29,160 In se vidimo v ponedeljek.