1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] David J. MALAN: U redu. 2 00:00:08,160 --> 00:00:11,170 Ovo je CS50, a to je kraj tjedna dva. 3 00:00:11,170 --> 00:00:14,650 Ako očekujete da ćete biti gladni oko tog vremena sutra, znam da ćemo 4 00:00:14,650 --> 00:00:18,920 da sazove kao male skupine sutra, četvrtak, 13:15. 5 00:00:18,920 --> 00:00:21,460 Tu je ovaj URL ovdje ako želite RSVP. 6 00:00:21,460 --> 00:00:25,270 Prostor je ograničen, pa molimo oprosti ako oblik je popunio po vremenu 7 00:00:25,270 --> 00:00:26,680 ispunite ovo. 8 00:00:26,680 --> 00:00:29,400 Drugi URL ipak da bi moglo biti od interesa je to. 9 00:00:29,400 --> 00:00:32,409 >> Dakle, u samo oko mjesec dana, tečaj će biti dostupan 10 00:00:32,409 --> 00:00:36,090 sve više šire putem EDX, preko kojeg ljudi na internetu će biti 11 00:00:36,090 --> 00:00:39,580 moći pratiti zajedno, sudjelovati u tijeku prilično aktivno, u stvari. 12 00:00:39,580 --> 00:00:43,070 Oni će se koristiti CS50 CS50 Appliance i raspraviti i najveći dio 13 00:00:43,070 --> 00:00:45,840 razni softverski alati koji smo već koriste ovaj semestar. 14 00:00:45,840 --> 00:00:49,030 A jedna od inicijativa bismo željeli da se na kao eksperiment ove godine 15 00:00:49,030 --> 00:00:53,120 je da se vidi koliko sadržaj možemo prevesti u drugi govori i 16 00:00:53,120 --> 00:00:54,110 pisani jezici. 17 00:00:54,110 --> 00:00:58,000 Dakle, ako ste možda imaju interes za sudjelovanje u ovom projektu, pri čemu 18 00:00:58,000 --> 00:01:02,090 ćemo pružiti engleskog transkripte i titlova za tečaj je 19 00:01:02,090 --> 00:01:05,190 predavanja i kratke hlače i seminari i profili i slično - 20 00:01:05,190 --> 00:01:08,700 ako tečno ili pisati tečno neki drugi jezik, što bi 21 00:01:08,700 --> 00:01:12,240 volim vas sudjelovati u ovom projektu, u kojem ste se na jedan ili više od 22 00:01:12,240 --> 00:01:15,340 videa ih prevodio na jezik znate prilično dobro. 23 00:01:15,340 --> 00:01:19,050 Da vam dati osjećaj sučelja, tu je ova web-based korisničko sučelje 24 00:01:19,050 --> 00:01:22,330 da ćemo se pomoću koje će stvoriti bitno je UI ovako. 25 00:01:22,330 --> 00:01:24,520 To je mene učeći neke Halloween prije. 26 00:01:24,520 --> 00:01:27,710 I na desnoj strani tamo u crnoj pored tih vremenskih pečata, 27 00:01:27,710 --> 00:01:31,300 ćete vidjeti razne stvari koje su došle iz usta taj dan. 28 00:01:31,300 --> 00:01:34,660 A onda ispod nje, vi ćete biti u mogućnosti prevesti na neki drugi jezik. 29 00:01:34,660 --> 00:01:37,840 Točno ono što je mapiranje između, u ovom slučaju, engleski 30 00:01:37,840 --> 00:01:38,660 i, recimo, španjolski. 31 00:01:38,660 --> 00:01:40,480 Dakle, to je zapravo vrlo user-friendly alat. 32 00:01:40,480 --> 00:01:43,690 Možete premotati i brzo naprijed vrlo lako s prečaca na tipkovnici. 33 00:01:43,690 --> 00:01:46,710 Dakle, ako želite sudjelovati u ovom eksperimentu i imati svoje riječi 34 00:01:46,710 --> 00:01:50,730 vidjeli i pročitali potencijalno tisuća ljudi vani, nemojte se osjećati 35 00:01:50,730 --> 00:01:51,960 besplatno sudjelovati. 36 00:01:51,960 --> 00:01:56,940 >> Sada jedna riječ o mačića od ponedjeljka, da smo poslali pretjerano 37 00:01:56,940 --> 00:01:58,120 zastrašujuće poruke. 38 00:01:58,120 --> 00:02:02,130 Da li shvatiti da kao radno vrijeme predložiti i kao dijelovi sugeriraju, 39 00:02:02,130 --> 00:02:05,110 Dizajn je naravno jako puno da su učenici surađuju i 40 00:02:05,110 --> 00:02:09,250 govori da rade kroz problema setovima i problemima zajedno. 41 00:02:09,250 --> 00:02:13,630 I doista linija samo svodi na, opet, rad u konačnici 42 00:02:13,630 --> 00:02:16,420 treba dostaviti trebao biti vaš vlastiti. 43 00:02:16,420 --> 00:02:19,080 I tako je, sasvim iskreno - u uredovno vrijeme, to je sasvim normalno - 44 00:02:19,080 --> 00:02:21,560 to totalno se očekuje, čak i - da se razgovor s nekim 45 00:02:21,560 --> 00:02:22,370 prijatelji pored vas. 46 00:02:22,370 --> 00:02:25,240 Ako on ili ona se bori s nekim temu, a ti si kao, oh, dobro neka 47 00:02:25,240 --> 00:02:27,750 mi vam dati uvid u neke linije koda koji sam napisao. 48 00:02:27,750 --> 00:02:28,290 To je u redu. 49 00:02:28,290 --> 00:02:28,700 To se događa. 50 00:02:28,700 --> 00:02:31,580 I to je jako pogodno, mislim, s procesom učenja. 51 00:02:31,580 --> 00:02:35,270 Gdje je linija, opet, dobiva prešao je kada je glava vrsta naginje nad 52 00:02:35,270 --> 00:02:38,800 ovdje daleko previše sekundi ili minuta za koji stvarno imaju samo 53 00:02:38,800 --> 00:02:41,250 bio deblokadi prilika za svog prijatelja. 54 00:02:41,250 --> 00:02:43,870 I svakako, kada se stvari mijenjaju putem e-maila i ispuštanje i 55 00:02:43,870 --> 00:02:45,350 kao, tamo je linija. 56 00:02:45,350 --> 00:02:48,940 Dakle, svim sredstvima, osjećaju ugodno i osjećaju ohrabreni za razgovor s prijateljima 57 00:02:48,940 --> 00:02:51,270 i kolege o psets i još mnogo toga. 58 00:02:51,270 --> 00:02:54,680 I samo shvatiti da ono što u konačnici predati stvarno treba biti 59 00:02:54,680 --> 00:02:57,780 proizvod vaše stvaranje, a ne netko drugi. 60 00:02:57,780 --> 00:03:01,010 >> Dakle, u istoj venu cuddly stvorenja, možda 61 00:03:01,010 --> 00:03:02,820 znam ovog momka ovdje. 62 00:03:02,820 --> 00:03:06,180 Dakle, ovo je horrifically sladunjav film iz godina. 63 00:03:06,180 --> 00:03:08,680 Svatko ovdje vidio Spaceballs? 64 00:03:08,680 --> 00:03:09,120 U redu. 65 00:03:09,120 --> 00:03:10,220 Dakle, dobar broj ovdje. 66 00:03:10,220 --> 00:03:13,840 Dakle, ovo je naš predivno akademski način uvođenja danas u konačnici 67 00:03:13,840 --> 00:03:15,130 pojam kriptografije. 68 00:03:15,130 --> 00:03:19,010 I tako jedan od domena specifičnih problema za pset 2, koji će doći 69 00:03:19,010 --> 00:03:22,770 iz kasnog sutra navečer, je zaroniti u svijet kriptografije, koji 70 00:03:22,770 --> 00:03:26,380 je umjetnost šifriranjem ili remećenje informacije. 71 00:03:26,380 --> 00:03:30,160 I to u konačnici odnosi na svijet sigurnosti. 72 00:03:30,160 --> 00:03:34,440 >> Sada sigurnosti za većinu nas dolazi u obliku prilično svjetovnim mehanizama. 73 00:03:34,440 --> 00:03:36,920 Svi od nas imaju korisnička imena i lozinke. 74 00:03:36,920 --> 00:03:41,350 A svi mi imamo jako loš korisnička imena i lozinke, najvjerojatnije. 75 00:03:41,350 --> 00:03:45,250 Ako je vaša lozinka je isti na više stranica, to vjerojatno nije 76 00:03:45,250 --> 00:03:47,920 najbolja ideja, kao što ćemo raspraviti prema semestra kraja. 77 00:03:47,920 --> 00:03:51,680 Ako je vaša lozinka je napisan na sticky note - nije šala - na vašem 78 00:03:51,680 --> 00:03:55,130 monitor, da previše ne nužno i najbolji dizajn, ali vrlo česta 79 00:03:55,130 --> 00:03:56,140 fenomen. 80 00:03:56,140 --> 00:04:00,420 A ako ne koristite kriptografiju za šifriranje vaše lozinke, oni su 81 00:04:00,420 --> 00:04:01,610 posebno osjetljivi. 82 00:04:01,610 --> 00:04:04,670 Dakle, ako mislite da ste se super pametan vlasništvo skriveni Word 83 00:04:04,670 --> 00:04:07,740 dokumentirati negdje na tvrdom disku koji ima sve svoje lozinke, ali 84 00:04:07,740 --> 00:04:10,550 to je u mapu da nitko ne ide gledati u, da previše nije vrlo 85 00:04:10,550 --> 00:04:11,540 siguran mehanizam. 86 00:04:11,540 --> 00:04:15,100 I tako ono što pset 2 će uvesti je ova umjetnost kriptografije i 87 00:04:15,100 --> 00:04:18,300 remećenje informacije, tako da su stvari poput lozinki 88 00:04:18,300 --> 00:04:19,500 sve više siguran. 89 00:04:19,500 --> 00:04:24,500 Dakle, kao motivirati ovu vrlo stvarna problem s vrlo ne-stvarnom svijetu 90 00:04:24,500 --> 00:04:28,740 scenarij, dopustite mi da vam predstaviti jedan od naših omiljenih spotova ovdje od toga 91 00:04:28,740 --> 00:04:29,895 film, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [Video reprodukciju] 93 00:04:30,565 --> 00:04:32,995 -Kaciga, što đavo, što se događa? 94 00:04:32,995 --> 00:04:34,730 Što radiš s mojom kćeri? 95 00:04:34,730 --> 00:04:38,960 -Dopustite mi da vam predstavim briljantni mladi plastični kirurg, dr. Philip 96 00:04:38,960 --> 00:04:43,290 Schlotkin, najveći nos posao čovjek u cijeli 97 00:04:43,290 --> 00:04:45,526 svemir i 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 posao? 100 00:04:47,380 --> 00:04:48,035 Ne razumijem. 101 00:04:48,035 --> 00:04:49,480 Ona je već imao operaciju nosa. 102 00:04:49,480 --> 00:04:51,490 To je slatko 16 sadašnjosti. 103 00:04:51,490 --> 00:04:53,090 -Ne, to nije ono što mislite. 104 00:04:53,090 --> 00:04:55,150 To je puno, puno gora. 105 00:04:55,150 --> 00:04:59,860 Ako ne daj mi kombinaciju zračnog štita, dr. Schlotkin će 106 00:04:59,860 --> 00:05:04,135 dati svoju kćer natrag svog starog nos. 107 00:05:04,135 --> 00:05:05,385 -Ne! 108 00:05:08,202 --> 00:05:10,186 Odakle vam to? 109 00:05:10,186 --> 00:05:11,178 -U redu. 110 00:05:11,178 --> 00:05:11,674 Reći ću. 111 00:05:11,674 --> 00:05:12,666 Reći ću. 112 00:05:12,666 --> 00:05:14,154 -Ne, tata, br. 113 00:05:14,154 --> 00:05:15,150 Vi ne morate. 114 00:05:15,150 --> 00:05:16,460 -Nema pravo, dragi moj. 115 00:05:16,460 --> 00:05:18,450 Ja ću propustiti svoj novi nos. 116 00:05:18,450 --> 00:05:21,550 Ali neću reći im kombinaciju bez obzira. 117 00:05:21,550 --> 00:05:23,100 -Vrlo dobro. 118 00:05:23,100 --> 00:05:25,510 Dr. Schlotkin, učiniti vaš najgori. 119 00:05:25,510 --> 00:05:26,760 -Moj zadovoljstvo. 120 00:05:30,560 --> 00:05:31,180 -Ne! 121 00:05:31,180 --> 00:05:33,450 Čekaj, čekaj. 122 00:05:33,450 --> 00:05:34,770 Reći ću. 123 00:05:34,770 --> 00:05:36,400 Reći ću. 124 00:05:36,400 --> 00:05:38,630 -Znao sam da će to raditi. 125 00:05:38,630 --> 00:05:42,040 U redu, daj mi. 126 00:05:42,040 --> 00:05:46,890 -Kombinacija je jedna. 127 00:05:46,890 --> 00:05:47,290 -Jedan. 128 00:05:47,290 --> 00:05:48,183 -Jedan. 129 00:05:48,183 --> 00:05:48,950 -Dvije. 130 00:05:48,950 --> 00:05:49,370 -Dvije. 131 00:05:49,370 --> 00:05:50,450 -Dvije. 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 -Četiri. 136 00:05:53,200 --> 00:05:53,720 -Četiri. 137 00:05:53,720 --> 00:05:55,830 -Četiri. 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 -Tako je kombinacija je jedan, dva, tri, četiri, pet. 142 00:06:03,770 --> 00:06:06,745 To je najgluplji kombinacija koju sam ikad čuo u životu. 143 00:06:06,745 --> 00:06:09,290 To je vrsta stvar bi idiot imati na svojoj prtljazi. 144 00:06:09,290 --> 00:06:11,540 -Hvala, vaše veličanstvo. 145 00:06:11,540 --> 00:06:12,940 -Što si učinio? 146 00:06:12,940 --> 00:06:14,230 -Ja isključen zid. 147 00:06:14,230 --> 00:06:14,630 -Ne, nisi. 148 00:06:14,630 --> 00:06:15,430 Vi isključen cijeli film. 149 00:06:15,430 --> 00:06:16,722 -Mora da sam pritisnuo pogrešnu tipku. 150 00:06:16,722 --> 00:06:18,078 -Pa, stavite ga na leđa. 151 00:06:18,078 --> 00:06:18,805 Stavite film na leđa. 152 00:06:18,805 --> 00:06:19,080 -Da, gospodine. 153 00:06:19,080 --> 00:06:19,270 Da, gospodine. 154 00:06:19,270 --> 00:06:19,830 -Idemo, Erna. 155 00:06:19,830 --> 00:06:20,270 Dođite, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Naravno da znam ja još uvijek ćete morati vam naplatiti za to. 157 00:06:27,400 --> 00:06:28,325 -Pa, nije to rade? 158 00:06:28,325 --> 00:06:29,550 Gdje je vrata? 159 00:06:29,550 --> 00:06:29,910 -To je radio, gospodine. 160 00:06:29,910 --> 00:06:30,770 Imamo kombinaciju. 161 00:06:30,770 --> 00:06:31,390 -Izvrsno. 162 00:06:31,390 --> 00:06:35,630 Sada možemo uzeti svaki zadnji dašak svježeg zraka iz planeta Druidia. 163 00:06:35,630 --> 00:06:36,550 Što je kombinacija? 164 00:06:36,550 --> 00:06:38,805 -Jedan, dva, tri, četiri, pet. 165 00:06:38,805 --> 00:06:40,610 -Jedan, dva, tri, četiri, pet? 166 00:06:40,610 --> 00:06:41,070 -Da. 167 00:06:41,070 --> 00:06:41,760 -To je nevjerojatno. 168 00:06:41,760 --> 00:06:45,200 Imam istu kombinaciju na svoju prtljagu. 169 00:06:45,200 --> 00:06:47,800 Pripremite SpaceBall jedan za hitnu odlaska. 170 00:06:47,800 --> 00:06:48,536 -Da, gospodine. 171 00:06:48,536 --> 00:06:52,350 -I promijeniti kombinaciju svoju prtljagu. 172 00:06:52,350 --> 00:06:53,250 -Ow! 173 00:06:53,250 --> 00:06:55,020 [END video reprodukciju] 174 00:06:55,020 --> 00:06:57,470 >> David J. MALAN: nevjerojatna film sada treba sve vidjeti. 175 00:07:00,600 --> 00:07:06,540 Dakle, u kontekstu ovdje je da s nesigurnim podacima dolazi priliku 176 00:07:06,540 --> 00:07:07,790 to šifriranje i da ga otimati. 177 00:07:07,790 --> 00:07:11,060 I tako to, na primjer, je primjer šifrirane poruke. 178 00:07:11,060 --> 00:07:12,980 To zapravo govori nešto na engleskom jeziku. 179 00:07:12,980 --> 00:07:14,750 Ali to očito nije u potpunosti jasno. 180 00:07:14,750 --> 00:07:17,360 I mi ćemo doći puni krug danas zafrkavati, osim što je to tajna 181 00:07:17,360 --> 00:07:18,380 Poruka je ovdje. 182 00:07:18,380 --> 00:07:22,370 No, u stvarnom svijetu računala, stvari uopće ne izgledaju kao da bi mogli 183 00:07:22,370 --> 00:07:23,440 biti engleski izrazi. 184 00:07:23,440 --> 00:07:27,500 Na primjer, to je ono što bi mogli naći na standardnom Linux ili Mac ili 185 00:07:27,500 --> 00:07:32,080 Unix računalo u datoteku koja je nekad davno nazvao lozinka datoteku. 186 00:07:32,080 --> 00:07:34,170 Danas, to je bio premješten na drugim mjestima. 187 00:07:34,170 --> 00:07:38,660 No, ako pogledate na pravom mjestu na sustavu, vidjet ćete ne samo vaš 188 00:07:38,660 --> 00:07:41,430 korisničko ime ili da od drugih ljudi u sustavu, ali vidjet ćete 189 00:07:41,430 --> 00:07:43,410 kodiran verzija njihovog lozinkom. 190 00:07:43,410 --> 00:07:47,800 Doista, riječ kripta postoji sugerira da sljedeća stvar je šifriran. 191 00:07:47,800 --> 00:07:52,030 I ova serija naizgled slučajnih slova i znakova i brojeva i 192 00:07:52,030 --> 00:07:56,370 slično se može dešifrirati samo općenito znajući neke tajnu - 193 00:07:56,370 --> 00:07:58,600 tajna riječ, tajni broj. 194 00:07:58,600 --> 00:08:02,760 I tako je doista, umjetnost kriptografije konačnici svodi na povjerenje nekih 195 00:08:02,760 --> 00:08:05,700 sortiranje i znajući nešto što netko drugi ne. 196 00:08:05,700 --> 00:08:10,010 Mi ćemo istražiti to malo detaljnije i danas u pset doći. 197 00:08:10,010 --> 00:08:11,860 >> A sada riječ o pass / fail. 198 00:08:11,860 --> 00:08:15,250 Dakle, posebno, kao što neki od vas su zaronili u pset 1, aparata, a 199 00:08:15,250 --> 00:08:18,390 vrlo novi svijet za sebe, shvatio da frustracije i 200 00:08:18,390 --> 00:08:21,340 zbunjenost i samo tehničke teškoće se očekuje. 201 00:08:21,340 --> 00:08:24,410 Pogotovo s prvim pset, gdje postoji samo toliko nova, samo dobivanje 202 00:08:24,410 --> 00:08:28,830 upoznati s ls i cd i svih tih kompliciranih naredbi u novom okruženju. 203 00:08:28,830 --> 00:08:32,679 I to je odvojen od stvarnog materijala i sama programiranje. 204 00:08:32,679 --> 00:08:35,960 Dakle shvatiti, također, da postoje sigurno radno vrijeme koje postoje kao 205 00:08:35,960 --> 00:08:36,770 potpornu strukturu. 206 00:08:36,770 --> 00:08:38,620 Sekcije početi ovaj dolazak nedjelja. 207 00:08:38,620 --> 00:08:41,990 Ali što je najvažnije, ako ste osjećaj samo da to nije 208 00:08:41,990 --> 00:08:44,420 svijet za vas, shvatite da je to zapravo samo ne uzeti vremena. 209 00:08:44,420 --> 00:08:47,520 A da nije za ovu priliku godina za mene uzimanje klase 210 00:08:47,520 --> 00:08:50,840 proći / ne, iskreno, ja nikad ne bi ni kročiti u učionici. 211 00:08:50,840 --> 00:08:53,520 I možete promijeniti ovo gore dok, recimo, peti ponedjeljak tečaja. 212 00:08:53,520 --> 00:08:57,110 Dakle, ako ste na rubu sada, shvatite da umjesto glave u neki drugi 213 00:08:57,110 --> 00:09:01,000 Vode uopce, svakako ne smatram samo mijenja proći / ne. 214 00:09:01,000 --> 00:09:03,750 Opet, ne postoji stvarno ta kultura ovdje na Harvardu uzimanja stvari 215 00:09:03,750 --> 00:09:08,080 proći / uspjeti jer svi stvarno želi postići ili overachieve. 216 00:09:08,080 --> 00:09:11,470 Ali iskreno, ovo je prekrasan način pokušava nešto da se ne bi mogli 217 00:09:11,470 --> 00:09:13,110 biti upoznat s tobom. 218 00:09:13,110 --> 00:09:17,090 A vi ćete završiti radi u većini slučajeva sasvim fino, možda 219 00:09:17,090 --> 00:09:18,040 puno na svoj iznenađenje. 220 00:09:18,040 --> 00:09:20,850 I u više konkretnim uvjetima, što mislim proći / ne općenito ne, 221 00:09:20,850 --> 00:09:23,350 posebno kao što ste možda doživjeli s pset 0, ako ste stavili 222 00:09:23,350 --> 00:09:27,200 u 10 sati, 15 sati, 25 sati u nekom pset - i vi ste samo lupanje 223 00:09:27,200 --> 00:09:28,180 glavu uza zid, 224 00:09:28,180 --> 00:09:29,850 i to je sve super kasno u noć, 225 00:09:29,850 --> 00:09:31,880 ali ste uzeli pset kao 90% na putu, 226 00:09:31,880 --> 00:09:33,780 znate da jednostavno ne mogu shvatiti jednu stvar - 227 00:09:33,780 --> 00:09:36,830 proći / ne stvarno potrebno rub off klase kao što je ovaj, gdje možete sortirati 228 00:09:36,830 --> 00:09:39,150 od sretno reći ok, znam da to nije savršen. 229 00:09:39,150 --> 00:09:40,470 Ali ja sam radila moje dupe off na ovo. 230 00:09:40,470 --> 00:09:42,410 Prilično sam zadovoljan gdje je završio. 231 00:09:42,410 --> 00:09:44,780 I da će ispuniti očekivanja za pass / fail. 232 00:09:44,780 --> 00:09:46,850 Dakle, ne to na umu. 233 00:09:46,850 --> 00:09:47,140 >> U redu. 234 00:09:47,140 --> 00:09:50,980 Dakle, one od vas koji su se borili za korištenje Harvard University Wi-Fi znati 235 00:09:50,980 --> 00:09:54,780 da postoji CS50 SSID, Wi-Fi veza plutajući oko koje 236 00:09:54,780 --> 00:09:56,520 možda imati više sreće za. 237 00:09:56,520 --> 00:09:59,430 To je malo ironično da lozinka za to - ako želite probati 238 00:09:59,430 --> 00:10:03,080 spajanja na ovo za boljim brzinama i javite nam ako to nije bolje - 239 00:10:03,080 --> 00:10:09,240 jedan, dva, tri, četiri, pet, sve do osam, jer je osam 240 00:10:09,240 --> 00:10:10,270 sigurniji od pet. 241 00:10:10,270 --> 00:10:15,520 Dakle, ako vam je potrebna Wi-Fi lozinku, povezati CS50 bežično ovdje. 242 00:10:15,520 --> 00:10:16,950 Jedan, dva, tri, četiri, pet, šest, sedam, osam. 243 00:10:16,950 --> 00:10:20,440 A post na CS50 Raspravljajte ako još uvijek imate problema s povezivanjem s prekidima, 244 00:10:20,440 --> 00:10:24,880 a mi ćemo pustiti ovlasti koje se znaju za taj prostor. 245 00:10:24,880 --> 00:10:25,180 >> U redu. 246 00:10:25,180 --> 00:10:30,350 Tako brzo zadirkivač, pogotovo za one od vas koji su ventilator dječaci i djevojčice 247 00:10:30,350 --> 00:10:31,900 od svih stvari Apple. 248 00:10:31,900 --> 00:10:37,566 Ono što sam iskopao od prije nekoliko godina vratio je ovu sliku ovdje, ilock.c, samo da 249 00:10:37,566 --> 00:10:40,930 vrsta napraviti konkretniji i složeniji neke od više osnovnih C 250 00:10:40,930 --> 00:10:42,350 programi smo pisali. 251 00:10:42,350 --> 00:10:44,360 Tako sam otvorio ovu sliku, ilock.c. 252 00:10:44,360 --> 00:10:46,830 To je dostupan na stranici predavanja za danas. 253 00:10:46,830 --> 00:10:49,470 Na lijevoj strani, vidjet ćete dugo popis funkcija. 254 00:10:49,470 --> 00:10:51,860 Dakle, čovjek koji je napisao ovo napisao gore puno funkcija, 255 00:10:51,860 --> 00:10:53,290 više nego samo glavni. 256 00:10:53,290 --> 00:10:55,490 On se koristi cijela hrpa knjižnicama ovdje. 257 00:10:55,490 --> 00:11:00,450 A ako ćemo početi listanje, što je to zapravo je vrlo 258 00:11:00,450 --> 00:11:04,670 prvi je, vjerujem, ispucati za originalni iPhone. 259 00:11:04,670 --> 00:11:08,000 Kada ste htjeli jailbreak izvorni iPhone, što znači untether 260 00:11:08,000 --> 00:11:11,800 to iz AT & T i zapravo instalirati poseban softver na njega i raditi stvari 261 00:11:11,800 --> 00:11:13,510 da Apple ne želi da ljudi učiniti - 262 00:11:13,510 --> 00:11:17,020 dobro, netko uzeo vremena za shvatiti točno kako bi mogli eksploatirati 263 00:11:17,020 --> 00:11:20,880 softver nedostatke, pogreške, kukci, u Appleovim softverom. 264 00:11:20,880 --> 00:11:22,650 I tako je rođen ilock.c. 265 00:11:22,650 --> 00:11:26,670 To ako ga sastavio na računalu i instalirati na iPhone toj 266 00:11:26,670 --> 00:11:29,810 bio povezan s računalom putem, recimo, USB kabel, to će vam dati 267 00:11:29,810 --> 00:11:33,360 upravne ili korijen privilegije na vašem iPhone i neka vam je činiti prilično 268 00:11:33,360 --> 00:11:34,170 što god želite. 269 00:11:34,170 --> 00:11:36,740 >> I tako je bilo to fascinantno mačka i miš igra između Apple i 270 00:11:36,740 --> 00:11:39,920 Ostatak svijeta posebno jer su se, poput mnogih tvrtki, pokušati zaključati 271 00:11:39,920 --> 00:11:43,220 njihove stvari dolje, tako da možete učiniti samo s njim što namjeravaju. 272 00:11:43,220 --> 00:11:46,620 No, zahvaljujući ljudima kao što je ovaj i njihovo razumijevanje niske razine 273 00:11:46,620 --> 00:11:50,580 pojedinosti i, u ovom slučaju, C programiranje i puno poznatih konstrukata 274 00:11:50,580 --> 00:11:54,630 da smo počeli igrati sa, vi ste u mogućnosti da se stvarno utjecati 275 00:11:54,630 --> 00:11:59,050 hardver na način što vidite stane, a ne nužno neki korporativni entitet. 276 00:11:59,050 --> 00:12:01,360 Tako na primjer, nemam pojma što se sve ovo radi. 277 00:12:01,360 --> 00:12:03,220 Ali GetVersion zvuči prilično jednostavan. 278 00:12:03,220 --> 00:12:05,480 I to izgleda ovako je funkcija da je ta osoba napisala. 279 00:12:05,480 --> 00:12:09,240 Uzmi neku cjelobrojnu kao argument, ne vraća ništa, ali 280 00:12:09,240 --> 00:12:13,080 Čini se da petlja s for petlje ovdje i ako stanje, ako je uvjet, 281 00:12:13,080 --> 00:12:15,620 razbiti, i nekako se odnosi na brojeve verzija. 282 00:12:15,620 --> 00:12:16,700 Ako mi se pomaknite prema dolje - 283 00:12:16,700 --> 00:12:19,570 iako mnoge od tih ključnih riječi će biti novi, a tu je 284 00:12:19,570 --> 00:12:22,590 cijeli niz funkcija u ovdje nikada nismo vidjeli i nikada ne može vidjeti preko 285 00:12:22,590 --> 00:12:23,830 tijek nastave - 286 00:12:23,830 --> 00:12:27,150 Na kraju dana, slijedi ista pravila i logike da smo bili 287 00:12:27,150 --> 00:12:28,760 igrati s tako daleko. 288 00:12:28,760 --> 00:12:34,220 Dakle, ovo je daleko prestara za ispucati svoj iPhone 3S 4ke ili će uskoro 5s, ovih dana, 289 00:12:34,220 --> 00:12:37,320 ali znam da je to sve jako puno izvedeni iz ovog svijeta da smo 290 00:12:37,320 --> 00:12:38,430 zaronio. 291 00:12:38,430 --> 00:12:41,900 >> Tako ćemo pogledati malo više jednostavnom primjeru. 292 00:12:41,900 --> 00:12:46,100 Ovo je jedna, samo da bi se grijao s nekom sintaksom i neki drugi podaci 293 00:12:46,100 --> 00:12:49,240 Vrsta da smo razgovarali o, ali nisu stvarno vidio u C. Dakle, ovo je 294 00:12:49,240 --> 00:12:51,680 file zove positive1.c. 295 00:12:51,680 --> 00:12:55,120 I po komentarima na vrhu, to samo zahtijeva da korisnik pružiti 296 00:12:55,120 --> 00:12:55,960 pozitivan broj. 297 00:12:55,960 --> 00:12:59,530 Dakle, to je primjer ne-while petlje, koja je lijepo za korisnički interaktivne 298 00:12:59,530 --> 00:13:01,980 programi gdje vam je potrebno da korisniku reći nešto učiniti. 299 00:13:01,980 --> 00:13:05,190 A ako oni ne surađuju, vi vikati na njih ili odbiti njihov doprinos. 300 00:13:05,190 --> 00:13:11,610 Slučaj u točki, ja ću to učiniti linije 19 do 24, tako dugo dok korisnik ima 301 00:13:11,610 --> 00:13:14,310 nije mi dao pozitivan broj. 302 00:13:14,310 --> 00:13:20,400 Sada je ovaj detalj ovdje na liniji 18, zašto sam proglasiti n iznad cijela ova 303 00:13:20,400 --> 00:13:24,490 petlje konstrukt za razliku tik do linije 22, gdje sam 304 00:13:24,490 --> 00:13:26,880 zapravo stalo da se n? 305 00:13:26,880 --> 00:13:27,330 Da? 306 00:13:27,330 --> 00:13:27,780 [Nečujan] 307 00:13:27,780 --> 00:13:29,040 >> David J. MALAN: Da, tako da je ovo pitanje opsega. 308 00:13:29,040 --> 00:13:30,850 I u laik pojam, što se odnose na opseg? 309 00:13:34,690 --> 00:13:36,610 Da? 310 00:13:36,610 --> 00:13:37,860 [Nečujan] 311 00:13:40,040 --> 00:13:41,105 David J. MALAN: Možete li govoriti malo glasnije? 312 00:13:41,105 --> 00:13:43,450 ZVUČNIK 1: Gdje možete pristupiti određenu varijablu. 313 00:13:43,450 --> 00:13:45,170 David J. MALAN: Savršeno. 314 00:13:45,170 --> 00:13:47,360 Gdje možete pristupiti određenu varijablu. 315 00:13:47,360 --> 00:13:50,400 I općenito, pravilo dosad je bio da je opseg nekih 316 00:13:50,400 --> 00:13:55,860 varijabla je definirana posljednjim vitičastih zagrada koje ste vidjeli. 317 00:13:55,860 --> 00:14:02,010 I tako, u ovom slučaju, ako sam napravio pogrešku tvrdeći n na liniji 22, 318 00:14:02,010 --> 00:14:03,010 da linija će raditi. 319 00:14:03,010 --> 00:14:10,990 Ja bih dobiti int, i ja bih ga stavio u tu varijablu n u skladu 22. 320 00:14:10,990 --> 00:14:16,900 No, što linija koda sada bi imao pojma što pričam? 321 00:14:16,900 --> 00:14:22,650 Dakle, 25, i to ispada 24, kao dobro, jer u ovom slučaju, to je izvan 322 00:14:22,650 --> 00:14:23,610 od vitičastih zagrada. 323 00:14:23,610 --> 00:14:27,280 Dakle, samo malo smetnja, ali vrlo lako riješiti jednostavno izjavljujući 324 00:14:27,280 --> 00:14:30,140 varijabla izvan funkcije sama. 325 00:14:30,140 --> 00:14:32,600 >> Sada ćemo vidjeti kasnije danas, možete ići korak dalje. 326 00:14:32,600 --> 00:14:34,860 A čak bi mogao dobiti malo lijen - 327 00:14:34,860 --> 00:14:37,320 a to je da se ne preporuča se, općenito - 328 00:14:37,320 --> 00:14:42,260 ali čak mogao dobiti lijen i staviti varijablu na globalnoj razini, da se tako izrazim, ne 329 00:14:42,260 --> 00:14:46,670 unutar funkcije, a ne unutar petlje, ali u spisu sama, izvan 330 00:14:46,670 --> 00:14:49,600 svih funkcija ste napisali, kao što sam učinio ovdje na liniji 15. 331 00:14:49,600 --> 00:14:51,160 No, to se općenito frowned. 332 00:14:51,160 --> 00:14:55,680 Ali shvatite ovo je rješenje ponekad do drugih problema, kao što ćemo 333 00:14:55,680 --> 00:14:56,620 na kraju vidjeti. 334 00:14:56,620 --> 00:14:58,130 Dakle, za sada, mi ćemo ga ostaviti kao što je ovaj. 335 00:14:58,130 --> 00:15:01,030 Ali neka je vidjeti ako mi može prepisati to samo za početak izražavanje sebe 336 00:15:01,030 --> 00:15:01,990 malo drugačije. 337 00:15:01,990 --> 00:15:05,330 >> Dakle, ovaj program, samo da bude jasno, je positive1. 338 00:15:05,330 --> 00:15:11,810 Dopustite mi da ide naprijed i ovdje u mom terminal prozoru napraviti positive1, Enter. 339 00:15:11,810 --> 00:15:12,740 Sastavlja, ok. 340 00:15:12,740 --> 00:15:14,910 Idem pokrenuti positive1, pritisnite Enter. 341 00:15:14,910 --> 00:15:16,820 Zahtijevam da li mi dati pozitivan cijeli broj. 342 00:15:16,820 --> 00:15:18,260 Reći ću -1. 343 00:15:18,260 --> 00:15:18,910 To nije uspjelo. 344 00:15:18,910 --> 00:15:22,150 0, 99, koji izgleda kao da rade. 345 00:15:22,150 --> 00:15:23,570 Možda ne najrigoroznije testiranje. 346 00:15:23,570 --> 00:15:26,480 No, barem je lijepo razum ček da smo na pravom putu. 347 00:15:26,480 --> 00:15:29,240 Pa sada neka mi ići naprijed i otvoriti verziju dva za to. 348 00:15:29,240 --> 00:15:32,500 I ono što je drugačije već? 349 00:15:32,500 --> 00:15:35,140 Ona provodi istu stvar. 350 00:15:35,140 --> 00:15:40,660 No, ono što je iskakanja kao jasno različite ovom trenutku? 351 00:15:40,660 --> 00:15:42,560 Da, tako to bool u zelenom. 352 00:15:42,560 --> 00:15:45,980 Gedit je istaknuo u zelenom ovu ključnu poznat kao bool, 353 00:15:45,980 --> 00:15:47,000 koja je vrsta podataka. 354 00:15:47,000 --> 00:15:51,080 To ne dolazi ugrađen u svim verzijama C. Trebate uključiti 355 00:15:51,080 --> 00:15:52,010 specifična knjižnica. 356 00:15:52,010 --> 00:15:54,770 U našem slučaju, ja uključen CS50 knjižnicu, tako da smo 357 00:15:54,770 --> 00:15:56,460 imati pristup bool. 358 00:15:56,460 --> 00:15:59,810 No, u skladu 18, mi se čini da imaju Boolean vrijednost ovdje zove zahvalni. 359 00:15:59,810 --> 00:16:01,040 Tako sam mogao nazvati ovaj ništa. 360 00:16:01,040 --> 00:16:04,500 Ali ja to nazvao zahvalni samo vrsta prenijeti neke semantičke značenje. 361 00:16:04,500 --> 00:16:07,930 Dakle, u početku na liniji 18, ja sam očito nije zahvalan jer 362 00:16:07,930 --> 00:16:12,150 Boolean vrijednost zahvalni inicijaliziran na false u skladu 18. 363 00:16:12,150 --> 00:16:16,890 A onda čini ono što sam učinio ovdje u linijama 21 do 23 je upravo sam 364 00:16:16,890 --> 00:16:18,610 vrsta prepisivati ​​moj logiku. 365 00:16:18,610 --> 00:16:21,020 Dakle, ne funkcionalno drukčiji. 366 00:16:21,020 --> 00:16:26,940 No, u skladu 22 sada, mogu provjeriti ako int korisnik pružio je veći od 367 00:16:26,940 --> 00:16:31,120 0, onda sam jednostavno promijenite vrijednost zahvalni istina. 368 00:16:31,120 --> 00:16:32,290 A zašto mi to učiniti? 369 00:16:32,290 --> 00:16:35,600 Budući da je u skladu 25, očito, idem provjeriti stanje. 370 00:16:35,600 --> 00:16:39,380 Učinite ovu petlju dok zahvalna je lažna. 371 00:16:39,380 --> 00:16:43,610 >> Dakle, ja predlažem ovo kao alternativa verziji jedan, jer to je najmanje 372 00:16:43,610 --> 00:16:45,130 malo više intuitivno, možda. 373 00:16:45,130 --> 00:16:46,900 To je malo više utemeljena na engleskom jeziku. 374 00:16:46,900 --> 00:16:51,710 Dakle, učiniti sljedeće dok niste zahvalni ili dok zahvalna je lažna. 375 00:16:51,710 --> 00:16:55,890 I ovaj put, previše, ja očito ne zanima da zapamtite ono što korisnik unese 376 00:16:55,890 --> 00:16:57,730 u zbog najave nema varijabla n. 377 00:16:57,730 --> 00:16:58,650 Pa zapravo, ja - 378 00:16:58,650 --> 00:17:00,080 malo bijelog laž postoji. 379 00:17:00,080 --> 00:17:02,770 Funkcionalno, program je malo drugačija nakon što smo dobili na dnu 380 00:17:02,770 --> 00:17:04,819 to jer nisam sjećanja na ono što je n. 381 00:17:04,819 --> 00:17:09,579 Ali ja sam htjela pokazati ovdje da, iako smo vidjeli i GetInt 382 00:17:09,579 --> 00:17:13,920 GetString se koristi i na desnoj strani znakom jednakosti tako daleko, tako da 383 00:17:13,920 --> 00:17:17,160 Prisjetimo se vrijednost, tehnički, to nije nužno potrebno. 384 00:17:17,160 --> 00:17:20,950 Ako iz bilo kojeg razloga jednostavno ne briga za spremanje vrijednosti, samo želite 385 00:17:20,950 --> 00:17:25,710 provjeriti vrijednost, primijetiti da možemo jednostavno napisati ovo kao GetInt otvoren 386 00:17:25,710 --> 00:17:27,000 zagr, blizu zagr. 387 00:17:27,000 --> 00:17:30,460 To je funkcija će vratiti vrijednost, kao da smo bili govori. 388 00:17:30,460 --> 00:17:32,010 To će vam vratiti int. 389 00:17:32,010 --> 00:17:36,450 I tako, ako ste mentalno mislim da se to dogodi, kad sam upisati 99, GetInt 390 00:17:36,450 --> 00:17:38,160 vraća broj 99. 391 00:17:38,160 --> 00:17:41,330 I tako konceptualno, to je kao da mi je kod su zapravo to. 392 00:17:41,330 --> 00:17:45,880 Dakle, ako 99 je doista veći od 0, tada zahvalni postaje istina. 393 00:17:45,880 --> 00:17:50,420 Zatim linija 25 shvaća ooh, mi smo učinili jer sam sada zahvalni. 394 00:17:50,420 --> 00:17:54,590 I u skladu 26, mi jednostavno reći, hvala za pozitivan cijeli broj, bez obzira na to 395 00:17:54,590 --> 00:17:55,710 dogodilo se. 396 00:17:55,710 --> 00:17:58,900 >> Sada ćemo napraviti malu sintaktičkih šećer ovdje, da se tako izrazim. 397 00:17:58,900 --> 00:18:02,990 Hajdemo vidjeti možemo li počistiti ovu liniju 25 sa ovom trećem i posljednjem varijance 398 00:18:02,990 --> 00:18:04,640 u positive3. 399 00:18:04,640 --> 00:18:08,250 Dakle primjetiti jedina razlika sada je ono linija koda? 400 00:18:11,930 --> 00:18:13,260 Da, 25 godina. 401 00:18:13,260 --> 00:18:15,520 I nismo si stvarno vidio ovaj trik samo još. 402 00:18:15,520 --> 00:18:19,510 Ali nismo vidjeli uskličnik na ponedjeljak, što označava što? 403 00:18:19,510 --> 00:18:20,970 Dakle, ne, ili negacija. 404 00:18:20,970 --> 00:18:23,460 Tako se Boolean vrijednost i okrenuti svoju vrijednost. 405 00:18:23,460 --> 00:18:24,390 Istina postaje laž. 406 00:18:24,390 --> 00:18:25,500 Lažna postaje istina. 407 00:18:25,500 --> 00:18:28,910 Dakle, ovo, ja bih predložiti, je čak i malo više od intuitivno način 408 00:18:28,910 --> 00:18:32,200 pisanje koda, jer sam još uvijek inicijalizirati zahvalan lažna. 409 00:18:32,200 --> 00:18:33,530 Ja još uvijek učiniti sljedeće. 410 00:18:33,530 --> 00:18:35,700 Postavio sam zahvalan istina kad dođe vrijeme. 411 00:18:35,700 --> 00:18:40,690 No, sada možete zaista samo prevesti ovaj kod verbalno lijeva na desno, 412 00:18:40,690 --> 00:18:42,550 dok ne zahvalni. 413 00:18:42,550 --> 00:18:46,170 Zbog prasak, ili uskličnik, označava pojam ne, pa dok 414 00:18:46,170 --> 00:18:47,010 nije zahvalna. 415 00:18:47,010 --> 00:18:49,740 >> Pa opet, ne bismo uveli neke nove koncepte po sebi. 416 00:18:49,740 --> 00:18:53,230 Razgovarali smo o logičke natrag kada smo igrali s nule. 417 00:18:53,230 --> 00:18:55,690 Ali shvatite sada možemo samo početi pisati našu kôda 418 00:18:55,690 --> 00:18:56,550 mnogo različitih načina. 419 00:18:56,550 --> 00:19:00,010 Dakle, posebno u pset1, ako ste vrsta bore shvatiti način na 420 00:19:00,010 --> 00:19:03,400 napisati neki program, izgledi su da ste u sreću, jer postoji će biti bilo 421 00:19:03,400 --> 00:19:05,780 broj rješenja koje se mogu dogoditi na. 422 00:19:05,780 --> 00:19:09,850 Na primjer, ovo je samo tri za čak najjednostavniji programa. 423 00:19:09,850 --> 00:19:10,180 U redu. 424 00:19:10,180 --> 00:19:13,860 I sad sjetiti u ponedjeljak, ostavili smo na ovoj bilješci sa povratnih vrijednosti. 425 00:19:13,860 --> 00:19:18,280 Tako je za vrlo prvi put, pisali smo program koji ne samo da imaju glavni, 426 00:19:18,280 --> 00:19:22,240 ona također ima svoju vlastitu prilagođenu funkciju da sam napisao ovdje. 427 00:19:22,240 --> 00:19:26,640 Dakle, u skladu 31 kroz 34, ja sam provela kocke funkciju. 428 00:19:26,640 --> 00:19:27,800 To nije složen. 429 00:19:27,800 --> 00:19:29,830 To je samo puta prije puta, u ovom slučaju. 430 00:19:29,830 --> 00:19:34,920 No, ono što je važno o tome da je uzimam ulaz u obliku i 431 00:19:34,920 --> 00:19:38,910 Sam vraća izlaz u obliku puta puta a. 432 00:19:38,910 --> 00:19:43,940 >> Dakle, sada imam sposobnost, baš kao i ja se s printf sama, nazvati 433 00:19:43,940 --> 00:19:47,120 ova funkcija pozivom na kocke funkciju. 434 00:19:47,120 --> 00:19:49,470 A kocka funkcija uzima neki ulaz. 435 00:19:49,470 --> 00:19:52,030 A kocka funkcija vraća neku izlaz. 436 00:19:52,030 --> 00:19:56,660 I tako s druge strane, printf upravo učinio nešto. 437 00:19:56,660 --> 00:19:59,490 To nisu vratili ništa da mi stalo - iako, kao 438 00:19:59,490 --> 00:20:00,820 stranu, to ne vratiti vrijednost. 439 00:20:00,820 --> 00:20:02,650 Vi samo općenito ga ignorirati. 440 00:20:02,650 --> 00:20:04,000 Printf upravo učinio nešto. 441 00:20:04,000 --> 00:20:06,220 Ona je imala nuspojava ispis na zaslonu. 442 00:20:06,220 --> 00:20:09,480 Za razliku od ovdje, imamo kocke funkciju, koja 443 00:20:09,480 --> 00:20:11,400 zapravo vraća nešto. 444 00:20:11,400 --> 00:20:12,960 >> Dakle, ovo je općenito - 445 00:20:12,960 --> 00:20:15,260 za one upoznati s tim, to je prilično jednostavan ideja. 446 00:20:15,260 --> 00:20:18,460 No, za one manje upoznati s ovom idejom prolazi u ulaza i dobivanje 447 00:20:18,460 --> 00:20:21,700 natrag izlaza, pokušajmo samo nešto super jednostavna. 448 00:20:21,700 --> 00:20:25,180 Je li itko ugodno dolazi na pozornicu nakratko? 449 00:20:25,180 --> 00:20:27,460 Morate biti udoban s kamerom na vas, kao dobro. 450 00:20:27,460 --> 00:20:27,640 Da. 451 00:20:27,640 --> 00:20:28,610 Dobro, što je vaše 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 U redu, Ken. 455 00:20:29,810 --> 00:20:31,060 Dođi gore. 456 00:20:31,060 --> 00:20:34,660 Dakle, Ken će biti funkcija sorti ovdje. 457 00:20:34,660 --> 00:20:35,760 I neka je ići naprijed i učiniti. 458 00:20:35,760 --> 00:20:38,790 Idemo malo fancy. 459 00:20:38,790 --> 00:20:39,770 Drago mi je. 460 00:20:39,770 --> 00:20:41,010 Dobrodošli na središnjoj pozornici. 461 00:20:41,010 --> 00:20:41,980 U redu. 462 00:20:41,980 --> 00:20:45,590 Ajmo pogoditi ovaj gumb ovdje. 463 00:20:45,590 --> 00:20:46,420 U redu. 464 00:20:46,420 --> 00:20:49,490 Dakle ovdje imate modernu školsku ploču. 465 00:20:49,490 --> 00:20:53,050 A što sam je glavna funkcija, na primjer. 466 00:20:53,050 --> 00:20:55,990 I nemam iPad u ruci. 467 00:20:55,990 --> 00:20:59,000 Ja stvarno ne sjećam kako - dobro, zapravo, ne mogu reći da. 468 00:20:59,000 --> 00:21:02,200 Ja ne stvarno imati dobar rukopis. 469 00:21:02,200 --> 00:21:05,260 I stoga, želim da nešto ispisati na zaslonu za mene. 470 00:21:05,260 --> 00:21:07,470 >> Dakle, ja sam se glavni program. 471 00:21:07,470 --> 00:21:15,060 I ja ću vam reći da je ovo imati ga pisati u mom piletina nule i 472 00:21:15,060 --> 00:21:16,600 onda prolazi vam ulaz. 473 00:21:16,600 --> 00:21:20,000 Dakle, kao blesav, iako je ova vježba je pojam funkcije i pozivajući 474 00:21:20,000 --> 00:21:22,260 funkcija i vraćanje funkcije zapravo svodi na to. 475 00:21:22,260 --> 00:21:23,120 Ja sam glavni. 476 00:21:23,120 --> 00:21:26,270 Upravo sam napisao printf ("nešto") na zaslonu. 477 00:21:26,270 --> 00:21:27,470 Ja sam trčanje ovaj program. 478 00:21:27,470 --> 00:21:30,900 I čim printf dobiva zove, to traje jedan argument - ili jedan parametar, 479 00:21:30,900 --> 00:21:31,660 ponekad - 480 00:21:31,660 --> 00:21:32,780 između dvostrukih navodnika. 481 00:21:32,780 --> 00:21:33,960 Ovdje je taj argument. 482 00:21:33,960 --> 00:21:35,740 Ja sam ga prolazi na Kena. 483 00:21:35,740 --> 00:21:39,390 Sada je crna kutija napisao neki broj godina koji očito 484 00:21:39,390 --> 00:21:41,070 samo zna kako ispisati stvari na zaslonu. 485 00:21:41,070 --> 00:21:42,320 >> Dakle, izvršavati. 486 00:21:48,842 --> 00:21:49,900 To nije loše. 487 00:21:49,900 --> 00:21:50,890 Dakle, vrlo dobro. 488 00:21:50,890 --> 00:21:52,900 Tako sada Ken je učinio izvršenja. 489 00:21:52,900 --> 00:21:55,810 Da li je potrebno predati mi ništa natrag? 490 00:21:55,810 --> 00:21:57,240 Dakle, nije da smo vidjeli dosad. 491 00:21:57,240 --> 00:21:59,230 Opet, printf zapravo ne vraća broj. 492 00:21:59,230 --> 00:22:01,640 No, mi ćemo zanemariti činjenicu da za sada jer mi nikad ga koristi. 493 00:22:01,640 --> 00:22:03,400 Dakle, to je to za Kena. 494 00:22:03,400 --> 00:22:06,650 I tako sada glavni vraća za izvršenje - 495 00:22:06,650 --> 00:22:09,630 Glavni preuzima kontrolu programa ponovo jer tu liniju koda, 496 00:22:09,630 --> 00:22:11,010 printf, radi izvršenja. 497 00:22:11,010 --> 00:22:13,890 I idemo o našem putu izvršenja bilo druge linije su tu. 498 00:22:13,890 --> 00:22:14,130 >> U redu. 499 00:22:14,130 --> 00:22:17,080 Dakle, sada idemo pokušati malo drugačiji primjer. 500 00:22:17,080 --> 00:22:22,430 I ovaj put sam ovdje, neka prvi jasan zaslon ovdje. 501 00:22:22,430 --> 00:22:24,670 I ovaj put, mi ćemo učiniti cubing funkciju. 502 00:22:24,670 --> 00:22:27,350 No, ovaj put, ja očekujem izlaznu vrijednost. 503 00:22:27,350 --> 00:22:28,630 Dakle, idemo naprijed i to učiniti. 504 00:22:28,630 --> 00:22:35,680 Dakle, sada imam liniju koda koji kaže x = kocka (x). 505 00:22:35,680 --> 00:22:36,930 Tako zapravo let's - 506 00:22:41,450 --> 00:22:43,940 linija koda, podsjetimo, izgleda ovako. 507 00:22:43,940 --> 00:22:45,960 x = kocke (x). 508 00:22:45,960 --> 00:22:48,100 Pa kako će to raditi? 509 00:22:48,100 --> 00:22:50,820 Dakle, idemo naprijed i dati vam bijeli zaslon opet. 510 00:22:50,820 --> 00:22:55,000 I ja ću napisati sada dolje vrijednosti x, što je u ovom trenutku u 511 00:22:55,000 --> 00:23:01,080 Vrijeme se događa da se, recimo, dva, da bi ga jednostavno. 512 00:23:01,080 --> 00:23:04,890 Dakle, ja sam napisao dolje na komad papira vrijednost 2, 513 00:23:04,890 --> 00:23:06,100 što je moja vrijednost x. 514 00:23:06,100 --> 00:23:08,250 Ja ga predati na Kena. 515 00:23:08,250 --> 00:23:09,200 KEN: I ja sam samo napisati odgovor? 516 00:23:09,200 --> 00:23:12,660 David J. MALAN: Da, ajmo samo napisati odgovor. 517 00:23:12,660 --> 00:23:13,030 Ok. 518 00:23:13,030 --> 00:23:16,280 I sad on mora vratiti mi nešto. 519 00:23:16,280 --> 00:23:17,560 Dakle - 520 00:23:17,560 --> 00:23:18,170 savršena. 521 00:23:18,170 --> 00:23:18,840 Lijepo segue. 522 00:23:18,840 --> 00:23:21,970 >> Dakle, sada mi je ruke unatrag vrijednost 8, u ovom slučaju. 523 00:23:21,970 --> 00:23:23,220 A što da radim s njim? 524 00:23:23,220 --> 00:23:26,130 Pa, zapravo, da vidimo. 525 00:23:26,130 --> 00:23:26,640 Get to pravo. 526 00:23:26,640 --> 00:23:27,880 Što ću učiniti s njom? 527 00:23:27,880 --> 00:23:31,900 Sada ću uzeti tu vrijednost i zapravo ga pohraniti u onima 528 00:23:31,900 --> 00:23:33,400 Isti bitova u memoriji. 529 00:23:33,400 --> 00:23:35,030 Ali primijetite, ja sam vrsta bori ovdje. 530 00:23:35,030 --> 00:23:38,280 Ja sam malo zbunjen, jer gdje sam zapravo napisati vrijednost x? 531 00:23:38,280 --> 00:23:41,840 Jer ono što sam upravo učinio je fizički ruka Ken komad papira 532 00:23:41,840 --> 00:23:44,400 da je vrijednost 2, koji je bio x. 533 00:23:44,400 --> 00:23:46,300 I doista, to je upravo ono što se događa. 534 00:23:46,300 --> 00:23:50,100 Tako ispada da kad zoveš funkciju, a da prođe u argumentu 535 00:23:50,100 --> 00:23:54,130 sviđa "Hello World" ili da prođe u argument kao dva, općenito, ti si 536 00:23:54,130 --> 00:23:56,720 prolazi u kopiju tog argumenta. 537 00:23:56,720 --> 00:24:01,020 I tako kao što sam zapisao broj dva ovdje i predao ga Ken, da mora 538 00:24:01,020 --> 00:24:04,760 znači da još uvijek imam kopiju vrijednosti 2 negdje. 539 00:24:04,760 --> 00:24:08,140 Jer doista, sad da sam se vratio vrijednost 8, moram se vratiti u 540 00:24:08,140 --> 00:24:12,010 RAM-a i zapravo napiši 8 gdje sam nekada imao broj dva. 541 00:24:12,010 --> 00:24:15,720 >> Dakle, vizualno zapamtite ovu ideju prolazi u doslovno 542 00:24:15,720 --> 00:24:16,730 Kopija vrijednosti. 543 00:24:16,730 --> 00:24:19,570 Ken svoje, mi pruži natrag nešto - u ovom slučaju, 544 00:24:19,570 --> 00:24:20,820 vrijednost kao 8. 545 00:24:20,820 --> 00:24:22,660 I onda moram nešto učiniti s tom vrijednosti, ako sam 546 00:24:22,660 --> 00:24:24,880 želim ga zadržati. 547 00:24:24,880 --> 00:24:29,470 Dakle, sve to će biti sve previše upoznat prije dugo. 548 00:24:29,470 --> 00:24:33,082 Hvala vam toliko za ovaj demo ovdje, Kena. 549 00:24:33,082 --> 00:24:34,820 U redu. 550 00:24:34,820 --> 00:24:36,720 Vrlo dobro učinio. 551 00:24:36,720 --> 00:24:40,610 Dakle, neka je vidjeti kako se to u konačnici odnosi na neke od funkcija 552 00:24:40,610 --> 00:24:42,270 pozivom da smo radili ovdje. 553 00:24:42,270 --> 00:24:47,610 Pa neka mi ići naprijed i vratiti nas u cubing primjer ovdje. 554 00:24:47,610 --> 00:24:53,080 I primijetiti da ako želimo da se zapravo početi uzimati ovo dalje, idemo 555 00:24:53,080 --> 00:24:57,050 morati biti svjesni činjenice da je broj x koji je se donesenim u 556 00:24:57,050 --> 00:25:01,390 ovdje je drugačije od onoga što se zapravo prenosi u funkciju. 557 00:25:01,390 --> 00:25:03,940 Pa opet, ovo je donio primjerak će postati vrlo 558 00:25:03,940 --> 00:25:05,620 germane u samo trenutak. 559 00:25:05,620 --> 00:25:09,320 >> Tako ćemo pogledati nešto što ne sasvim rade upravo gostiju. 560 00:25:09,320 --> 00:25:11,790 Ja ću ići naprijed i otvoriti trećine lud primjer, koji 561 00:25:11,790 --> 00:25:13,560 je manjkav po prirodi. 562 00:25:13,560 --> 00:25:18,070 I to se zove buggy3, a provodi zamjene funkciju. 563 00:25:18,070 --> 00:25:23,500 Dakle, ovdje imamo glavnu funkciju da je x i y samovoljno pokrenutog na 564 00:25:23,500 --> 00:25:24,720 1 i 2, respektivno. 565 00:25:24,720 --> 00:25:27,590 Mogli bismo koristiti GetInt, ali samo mi treba jednostavan vježbe. 566 00:25:27,590 --> 00:25:29,680 Dakle, teško je kodirana kao jedan i dva. 567 00:25:29,680 --> 00:25:35,330 U linijama 21 i 22, što je očito isprintati X i Y, jedan po retku. 568 00:25:35,330 --> 00:25:39,620 Zatim, na liniji 23, tvrdim ja sam zamjene tih vrijednosti, dot, dot, dot. 569 00:25:39,620 --> 00:25:43,030 Ja očito pozvati funkciju u skladu 24 zove zamjena 570 00:25:43,030 --> 00:25:44,000 koja traje dva argumenta. 571 00:25:44,000 --> 00:25:46,430 To je potpuno čitljiv za funkcije uzeti dva argumenta. 572 00:25:46,430 --> 00:25:48,220 Vidjeli smo printf to već. 573 00:25:48,220 --> 00:25:50,370 Dakle, zamjena očito traje xiy. 574 00:25:50,370 --> 00:25:53,010 I kao što mu ime sugerira, ja se nadam da će to 575 00:25:53,010 --> 00:25:54,320 zamijeniti ove dvije vrijednosti. 576 00:25:54,320 --> 00:25:57,560 Pa onda ja tvrdim na liniji 25, zamijenili. 577 00:25:57,560 --> 00:26:01,570 I ja ispišite xiy pod pretpostavkom da 578 00:26:01,570 --> 00:26:02,830 oni doista smo zamijenili. 579 00:26:02,830 --> 00:26:04,370 Ali, ako sam zapravo pokrenuti ovaj program - 580 00:26:04,370 --> 00:26:06,060 neka mi otvoriti prozor terminala. 581 00:26:06,060 --> 00:26:07,750 Dopustite mi da buggy3. 582 00:26:07,750 --> 00:26:09,970 Kao što ime sugerira, ovo ne ide na dobro završiti. 583 00:26:09,970 --> 00:26:14,690 Jer kada sam pogodio Enter, primijetiti da je x 1. 584 00:26:14,690 --> 00:26:15,720 y je 2. 585 00:26:15,720 --> 00:26:19,160 I još na kraju programa, oni su još uvijek, u stvari, isto. 586 00:26:19,160 --> 00:26:22,760 >> Dakle, na temelju demonstracije samo sada s Kenom, što se zapravo događa? 587 00:26:22,760 --> 00:26:24,660 Pa, neka je roniti u ovom swapu funkciji. 588 00:26:24,660 --> 00:26:25,800 To je super kratka. 589 00:26:25,800 --> 00:26:28,020 To je samo nekoliko linija koda dugo. 590 00:26:28,020 --> 00:26:32,810 No, ono što je temeljni problem temelji se na jednostavnom priča 591 00:26:32,810 --> 00:26:34,270 ovdje s Kenom? 592 00:26:34,270 --> 00:26:36,115 Zašto je zamjena slomljena? 593 00:26:36,115 --> 00:26:37,365 [Nečujan] 594 00:26:39,840 --> 00:26:40,460 Točno. 595 00:26:40,460 --> 00:26:43,610 Tako smo pohranu na kopiju, a ne varijabla sama. 596 00:26:43,610 --> 00:26:46,810 Drugim riječima, swap navodno traje dva argumenta, int. 597 00:26:46,810 --> 00:26:49,370 I to se zove samovoljno i b. 598 00:26:49,370 --> 00:26:54,430 I ovdje, ja sam prošao u X i Y, koji su redom 1 i 2. 599 00:26:54,430 --> 00:26:56,580 Ali ja nisam doslovno prolazi u x. 600 00:26:56,580 --> 00:26:58,410 Nisam doslovno prolazi u y. 601 00:26:58,410 --> 00:27:01,230 Ja sam prolazeći kopiju x i kopiju y. 602 00:27:01,230 --> 00:27:05,180 To je kao gotovo kao da ste kopirati i zalijepiti u zamjenu vrijednosti koje 603 00:27:05,180 --> 00:27:07,440 želite to zapravo manipulirati. 604 00:27:07,440 --> 00:27:11,970 Dakle, ako je to slučaj, kada sam, program početi izvršavanju 605 00:27:11,970 --> 00:27:14,140 linija 35, a zatim 36 - 606 00:27:14,140 --> 00:27:17,740 kad dođem na liniji 37, u ovom trenutku u priči, što je vrijednost? 607 00:27:20,740 --> 00:27:24,850 U ovom trenutku u priči, linije 37, što je vrijednost u ovom trenutku? 608 00:27:24,850 --> 00:27:25,980 Dakle, to je samo trebao biti jedan. 609 00:27:25,980 --> 00:27:26,170 Točno? 610 00:27:26,170 --> 00:27:29,100 Budući x donesen kao prvi argument. 611 00:27:29,100 --> 00:27:33,150 I ova funkcija samo proizvoljno poziva svoj prvi argument,. 612 00:27:33,150 --> 00:27:35,130 Slično je y, drugi argument. 613 00:27:35,130 --> 00:27:37,930 A to je samo proizvoljno pozivom drugi argument b. 614 00:27:37,930 --> 00:27:40,510 >> Sada ova dihotomija zapravo prilično jednostavno objašnjeno. 615 00:27:40,510 --> 00:27:40,880 Razmislite o tome. 616 00:27:40,880 --> 00:27:42,980 Nitko od nas su se susreli osobu koja je napisao printf. 617 00:27:42,980 --> 00:27:49,880 Dakle, sigurno, on ili ona nema pojma što naši varijable 30 godina kasnije se ide 618 00:27:49,880 --> 00:27:50,710 da se zove. 619 00:27:50,710 --> 00:27:55,110 Dakle, mora postojati razlika između onoga što nazivamo varijable u 620 00:27:55,110 --> 00:27:59,960 Funkcije pišete i ono što nazivamo varijable u funkcijama koje ste 621 00:27:59,960 --> 00:28:01,770 pozivom ili korištenjem. 622 00:28:01,770 --> 00:28:05,120 Dakle, drugim riječima, ja sam napisao moje varijable kao xiy. 623 00:28:05,120 --> 00:28:08,060 Ali ako netko drugi je napisao swap funkciju, on ili ona svakako 624 00:28:08,060 --> 00:28:10,480 ne bi znali što moji varijable će biti pozvan. 625 00:28:10,480 --> 00:28:13,850 Dakle, shvatite da je to razlog zašto ste ovu dvojnost imena. 626 00:28:13,850 --> 00:28:16,800 Tehnički, mogao sam to učiniti slučajno. 627 00:28:16,800 --> 00:28:19,750 No, oni će i dalje biti donesen kao kopija. 628 00:28:19,750 --> 00:28:22,940 To bi bila samo čista slučajnost estetski ako toj osobi koja je napisala 629 00:28:22,940 --> 00:28:25,590 Swap je koristiti ista imena. 630 00:28:25,590 --> 00:28:25,930 >> U redu. 631 00:28:25,930 --> 00:28:29,010 Dakle, u ovom trenutku u priči, linije 37, je jedna. 632 00:28:29,010 --> 00:28:30,410 b je 2. 633 00:28:30,410 --> 00:28:32,040 I sada sam nastaviti kako bi ih zamijeniti. 634 00:28:32,040 --> 00:28:34,730 Pa prije svega, dopustite mi da zapravo to učiniti mnogo više jednostavno. 635 00:28:34,730 --> 00:28:36,500 Ne znam što ti tri linije koda su radili. 636 00:28:36,500 --> 00:28:37,370 Dopustite mi samo to učiniti. 637 00:28:37,370 --> 00:28:38,850 b dobiva. 638 00:28:38,850 --> 00:28:40,170 dobiva b.. 639 00:28:40,170 --> 00:28:41,450 Gotovo. 640 00:28:41,450 --> 00:28:43,540 Zašto je to slomljen, logično? 641 00:28:46,980 --> 00:28:48,590 To je vrsta intuitivnog stvar, zar ne? 642 00:28:48,590 --> 00:28:50,640 Tako postaje b. 643 00:28:50,640 --> 00:28:52,450 I b postaje. 644 00:28:52,450 --> 00:28:55,410 No, problem je u tome da čim linije 37 izvršava, što je 645 00:28:55,410 --> 00:28:58,170 vrijednost i B? 646 00:28:58,170 --> 00:28:59,070 Isto, 1. 647 00:28:59,070 --> 00:29:03,460 Budući da ste razbijen, da se tako izrazim, ti si se promijenio b jednaka. 648 00:29:03,460 --> 00:29:06,000 Tako jednom linije 37 je pogubljen, to je super. 649 00:29:06,000 --> 00:29:09,940 Sada imate dvije kopije broj 1 unutar ove funkcije. 650 00:29:09,940 --> 00:29:14,720 Pa onda kada kažeš u skladu 38, dobiva b, dobro, ti si vrsta pijan. 651 00:29:14,720 --> 00:29:17,370 Budući da ste samo dodjeljivanjem 1 do 1. 652 00:29:17,370 --> 00:29:20,400 Vi ste vrsta izgubila vrijednost koju stalo. 653 00:29:20,400 --> 00:29:22,910 >> Dakle, u originalnoj verziji to primijetiti ono što sam učinio. 654 00:29:22,910 --> 00:29:26,620 Ja umjesto imao trećine liniju koda koji je izgledao ovako. 655 00:29:26,620 --> 00:29:29,910 Izjavljujem privremenu varijablu - tmp je vrlo čest naziv 656 00:29:29,910 --> 00:29:31,240 za privremenu varijablu. 657 00:29:31,240 --> 00:29:34,280 To je int jer mora odgovarati što želim napraviti kopiju. 658 00:29:34,280 --> 00:29:39,720 Ja pohraniti kopiju unutrašnjosti tmp. Tako jednom linije 37 je pogubljen, 659 00:29:39,720 --> 00:29:41,390 vrijednost je - 660 00:29:41,390 --> 00:29:42,970 brzo razum ček - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 Vrijednost b je 2. 663 00:29:45,780 --> 00:29:48,470 I vrijednost tmp je 1. 664 00:29:48,470 --> 00:29:51,470 Dakle, sada sam izvršiti liniju 38. 665 00:29:51,470 --> 00:29:57,180 Tako jednom linija 38 izvršava, preuzima vrijednosti b. 666 00:29:57,180 --> 00:29:58,510 I b je dva. 667 00:29:58,510 --> 00:30:00,500 Tako je sada dvije. 668 00:30:00,500 --> 00:30:03,110 Tako u ovom trenutku u priči, je 2, b je 2, 669 00:30:03,110 --> 00:30:05,130 i tmp je 1. 670 00:30:05,130 --> 00:30:09,330 Dakle, sada logično, mi može samo pasti MPT je vrijednost u b.. 671 00:30:09,330 --> 00:30:10,690 I mi smo gotovi. 672 00:30:10,690 --> 00:30:12,170 >> Tako smo riješiti taj problem. 673 00:30:12,170 --> 00:30:16,040 Nažalost, kad sam pokrenuti ovaj program u ovom obliku, to zapravo ne zamijene 674 00:30:16,040 --> 00:30:17,700 bilo vrijednosti. 675 00:30:17,700 --> 00:30:18,950 Ali da bude jasno, zašto? 676 00:30:23,420 --> 00:30:26,310 Sredio sam logički problem od samo trenutak prije. 677 00:30:26,310 --> 00:30:31,150 Ali opet, ako sam pokrenuti ovaj program, x i y ostaju nepromijenjene do kraja 678 00:30:31,150 --> 00:30:33,834 programski izvršenje. 679 00:30:33,834 --> 00:30:34,760 [Nečujan] 680 00:30:34,760 --> 00:30:36,030 David J. MALAN: Pa nismo vratili ništa. 681 00:30:36,030 --> 00:30:36,960 Dakle, to je istina. 682 00:30:36,960 --> 00:30:39,880 No, ispostavilo se da je malo problem ovdje, jer do sada, 683 00:30:39,880 --> 00:30:42,460 Jedino što smo bili u mogućnosti vratiti je jedna stvar. 684 00:30:42,460 --> 00:30:46,540 A to je ograničenje C. Možete samo vratiti stvarno jedna vrijednost, 685 00:30:46,540 --> 00:30:48,970 u kojem slučaju, ja sam vrsta zaglavi ovdje 686 00:30:48,970 --> 00:30:51,805 jer bih se mogao vratiti na novu vrijednost x ili bih se mogao vratiti 687 00:30:51,805 --> 00:30:53,160 nova vrijednost y. 688 00:30:53,160 --> 00:30:54,330 No, želim i leđa. 689 00:30:54,330 --> 00:30:58,010 Dakle povratka nije jednostavno rješenje ovdje. 690 00:30:58,010 --> 00:30:59,770 No, problem je fundamentalno zašto? 691 00:30:59,770 --> 00:31:03,270 Što smo zapravo zamijenili? 692 00:31:03,270 --> 00:31:04,010 a i b. 693 00:31:04,010 --> 00:31:07,670 No, i b su kopije X i Y, što znači da smo upravo učinio sve ovo 694 00:31:07,670 --> 00:31:10,080 raditi - samo smo proveli kao tri minute govori o zamjeni 695 00:31:10,080 --> 00:31:11,680 funkcija i sva tri od ovih varijabli. 696 00:31:11,680 --> 00:31:15,090 I to je super, savršeno točno u izolaciji. 697 00:31:15,090 --> 00:31:20,230 Ali i B opseg samo je u tim linijama ovdje. 698 00:31:20,230 --> 00:31:24,130 Dakle, baš kao i za petlju, ako proglasi cijeli sam unutra za 699 00:31:24,130 --> 00:31:27,400 petlja - Isto tako, ako ste proglašenja i b unutar funkcije koje 700 00:31:27,400 --> 00:31:30,550 ste napisali, oni vrijede samo unutar te funkcije. 701 00:31:30,550 --> 00:31:35,020 Što znači čim swap učinio izvršenja i idemo iz linije 24 do 702 00:31:35,020 --> 00:31:38,380 linija 25, x i y nisu uopće promijenio. 703 00:31:38,380 --> 00:31:42,580 Vi samo izgubiti puno vremena zamjene kopije varijabli. 704 00:31:42,580 --> 00:31:46,490 >> Tako ispada da je rješenje za to je zapravo ne-očigledan. 705 00:31:46,490 --> 00:31:49,210 To nije sasvim dovoljan za povratak vrijednosti, jer možemo 706 00:31:49,210 --> 00:31:50,320 samo vratiti jednu vrijednost. 707 00:31:50,320 --> 00:31:53,370 I ja stvarno ne želim mijenjati i xiy u isto vrijeme. 708 00:31:53,370 --> 00:31:55,020 Tako ćemo se vratiti na to. 709 00:31:55,020 --> 00:31:58,770 Ali za sada, shvatite da je problem u osnovi proizlazi iz činjenice 710 00:31:58,770 --> 00:32:00,660 da a i b su kopije. 711 00:32:00,660 --> 00:32:03,450 I oni su u svom djelokrugu. 712 00:32:03,450 --> 00:32:04,980 Pa, hajdemo pokušati riješiti to na neki način. 713 00:32:04,980 --> 00:32:09,200 Dopustite mi zapravo dođite ovamo i otvoriti, recimo, četvrta varijanta 714 00:32:09,200 --> 00:32:11,170 toga, buggy4. 715 00:32:11,170 --> 00:32:13,230 A što je to? 716 00:32:13,230 --> 00:32:16,690 To je slično, ali jednostavniji problem pogledati prije nego što smo se rana na 717 00:32:16,690 --> 00:32:17,530 ga rješava. 718 00:32:17,530 --> 00:32:19,440 Ovaj program se zove prirast. 719 00:32:19,440 --> 00:32:24,320 I to očito inicijalizira je x cijeli broj 1 na liniji 18. 720 00:32:24,320 --> 00:32:25,950 I onda zahtjevu x je 1. 721 00:32:25,950 --> 00:32:28,020 I onda tvrde povećavanjem, dot, dot, dot. 722 00:32:28,020 --> 00:32:29,460 I onda nazvati prirast. 723 00:32:29,460 --> 00:32:33,480 Ali onda u redovima 22 i 23, ja tvrdim da je bio porastao. 724 00:32:33,480 --> 00:32:37,780 Tvrdim x je sada ono što je, dva vjerojatno. 725 00:32:37,780 --> 00:32:39,770 >> No, ovaj program je lud. 726 00:32:39,770 --> 00:32:41,020 U čemu je problem? 727 00:32:43,450 --> 00:32:44,418 Da? 728 00:32:44,418 --> 00:32:45,668 [Nečujan] 729 00:32:49,260 --> 00:32:49,850 David J. MALAN: Točno. 730 00:32:49,850 --> 00:32:52,430 Dakle, x je proglašen očito na liniji 18. 731 00:32:52,430 --> 00:32:54,410 To je u glavnom u vitičastim zagradama. 732 00:32:54,410 --> 00:32:58,470 Dakle, jednostavan odgovor je da, dobro, x postoji ovdje. 733 00:32:58,470 --> 00:33:01,510 To ne postoji u liniji 32. 734 00:33:01,510 --> 00:33:03,710 Dakle, ovaj program zapravo uopće neće sastaviti. 735 00:33:03,710 --> 00:33:07,910 Prevodilac, kad sam pokušati sastavljanja ovog zakona, ide vikati na mene 736 00:33:07,910 --> 00:33:13,190 o nekim neprijavljenog identifikator ili nešto u tom smislu. 737 00:33:13,190 --> 00:33:13,870 U stvari, pokušajmo. 738 00:33:13,870 --> 00:33:15,235 Ovo je napraviti buggy4. 739 00:33:17,780 --> 00:33:18,190 Tu je. 740 00:33:18,190 --> 00:33:22,030 Koristite neprijavljenog identifikator x u skladu 32. 741 00:33:22,030 --> 00:33:25,700 A zapravo, budimo precizniji danas ovdje, tako da je to korisno u 742 00:33:25,700 --> 00:33:27,140 radno vrijeme i kod kuće. 743 00:33:27,140 --> 00:33:29,000 Primijetit ćete da je to malo šifrirano napisano. 744 00:33:29,000 --> 00:33:31,560 No, činjenica da zveka ima vikao na nas, rekavši 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, je zapravo korisno. 746 00:33:36,970 --> 00:33:41,970 To znači da je pogreška na liniji 32 u znaka pet. 747 00:33:41,970 --> 00:33:44,670 Dakle, jedan, dva, tri, četiri, pet. 748 00:33:44,670 --> 00:33:46,640 To je, u stvari, gdje je problem. 749 00:33:46,640 --> 00:33:49,710 I također treba imati na umu pri radnog vremena i kod kuće, ja sam sretan ovdje. 750 00:33:49,710 --> 00:33:50,740 Imam jedan pogrešku. 751 00:33:50,740 --> 00:33:52,660 To će biti relativno lako popraviti. 752 00:33:52,660 --> 00:33:56,220 Ali ako se cijeli ekran pun neodoljiv poruka o pogrešci, opet, 753 00:33:56,220 --> 00:33:59,240 shvatiti da najniži jedna samo može biti simptomatična 754 00:33:59,240 --> 00:34:00,320 najviši one. 755 00:34:00,320 --> 00:34:03,560 Dakle, uvijek juriti dolje svoje greške odozgo prema dolje. 756 00:34:03,560 --> 00:34:06,720 Jer postoji samo može biti tratinčica lanca efekt koji vas upućuje 757 00:34:06,720 --> 00:34:09,030 imaju način više problema nego što zapravo rade. 758 00:34:09,030 --> 00:34:14,989 >> Dakle, kako bismo mogli popraviti ako mi je cilj povećavati x? 759 00:34:14,989 --> 00:34:15,370 Što je to? 760 00:34:15,370 --> 00:34:15,620 Ok. 761 00:34:15,620 --> 00:34:16,679 Dakle, možemo napraviti x globalno. 762 00:34:16,679 --> 00:34:18,860 Ajmo uzeti prečac koji sam upozorio ranije. 763 00:34:18,860 --> 00:34:20,550 Ali pakao, samo mi treba brzo popraviti. 764 00:34:20,550 --> 00:34:23,949 Pa recimo samo int x ovdje. 765 00:34:23,949 --> 00:34:25,600 To čini x globalno. 766 00:34:25,600 --> 00:34:28,460 Dakle, sada glavni ima pristup do njega. 767 00:34:28,460 --> 00:34:31,780 I prirast ima pristup do njega. 768 00:34:31,780 --> 00:34:33,860 I tako me pusti naprijed i sastaviti to sada. 769 00:34:33,860 --> 00:34:36,330 Napravite buggy4, Enter. 770 00:34:36,330 --> 00:34:37,440 Čini se da sastaviti sada. 771 00:34:37,440 --> 00:34:40,949 Ajmo pokrenuti buggy4, a čini se da se zapravo radi. 772 00:34:40,949 --> 00:34:42,780 Sada je to jedna od tih stvari - 773 00:34:42,780 --> 00:34:45,870 učiniti kao što sam rekao, ne kao ja, kao što sam učinio ovdje. 774 00:34:45,870 --> 00:34:49,239 Jer u cjelini, naši programi će dobiti puno više zanimljiv i 775 00:34:49,239 --> 00:34:50,440 puno više od toga. 776 00:34:50,440 --> 00:34:53,199 A ako je vaš rješenje životnih problema je samo ah, staviti sve 777 00:34:53,199 --> 00:34:57,550 varijable na vrhu datoteke, vrlo brzo učiniti programi dobiti 778 00:34:57,550 --> 00:34:59,700 horrifically teško upravljati. 779 00:34:59,700 --> 00:35:02,050 Ona dobiva teže smisliti nove varijable imena. 780 00:35:02,050 --> 00:35:05,240 Ona dobiva teže shvatiti što varijabla radi što. 781 00:35:05,240 --> 00:35:08,250 >> I tako u cjelini, to nije dobro rješenje. 782 00:35:08,250 --> 00:35:09,780 Pa hajdemo to učiniti bolje. 783 00:35:09,780 --> 00:35:11,920 Mi ne želimo koristiti globalnu varijablu ovdje. 784 00:35:11,920 --> 00:35:14,050 Ja ne želim povećavati x. 785 00:35:14,050 --> 00:35:16,050 Tako sam mogao očito - 786 00:35:16,050 --> 00:35:18,450 Na kraju dana, to je poput glupog priče, jer smo upravo to učiniti. 787 00:35:18,450 --> 00:35:22,050 Ali ako nisam znao o tom operateru, ili nisam smjela 788 00:35:22,050 --> 00:35:27,700 ga promijeniti u glavni sama, kako drugi ne bi mogao sam provesti Kena ovamo, to 789 00:35:27,700 --> 00:35:31,450 Vrijeme ne kocka, ali povećajte? 790 00:35:31,450 --> 00:35:32,700 Kako mogu promijeniti tu stvar ovdje? 791 00:35:32,700 --> 00:35:33,025 Da. 792 00:35:33,025 --> 00:35:34,275 [Nečujan] 793 00:35:37,430 --> 00:35:38,000 David J. MALAN: Dobro, dobro. 794 00:35:38,000 --> 00:35:40,490 Pa zašto ne bih proći x? 795 00:35:40,490 --> 00:35:44,390 I onda umjesto da ga vrate, zašto ne bih baš ne vraćaju x + 1? 796 00:35:44,390 --> 00:35:46,370 Sada, par više stvari moraju promijeniti ovdje. 797 00:35:46,370 --> 00:35:47,530 Ja sam na pravom putu. 798 00:35:47,530 --> 00:35:48,910 Što još trebam Tweak? 799 00:35:48,910 --> 00:35:49,470 Netko drugi. 800 00:35:49,470 --> 00:35:49,882 Da? 801 00:35:49,882 --> 00:35:51,530 [Nečujan] 802 00:35:51,530 --> 00:35:53,520 David J. MALAN: Trebam promijeniti povratnu vrstu prirasta 803 00:35:53,520 --> 00:35:54,590 jer to ne poništava. 804 00:35:54,590 --> 00:35:56,650 Void znači ništa se nije vratio se. 805 00:35:56,650 --> 00:35:57,600 Ali, jasno, sada je to. 806 00:35:57,600 --> 00:36:01,280 Dakle, to treba promijeniti int biti u skladu s onim 807 00:36:01,280 --> 00:36:02,580 Ja sam zapravo vraćaju. 808 00:36:02,580 --> 00:36:04,580 >> Sada je nešto drugo još uvijek lud ovdje. 809 00:36:04,580 --> 00:36:04,982 Da? 810 00:36:04,982 --> 00:36:06,590 [Nečujan] 811 00:36:06,590 --> 00:36:07,630 David J. MALAN: Dakle trebam povećavati x? 812 00:36:07,630 --> 00:36:10,336 [Nečujan] 813 00:36:10,336 --> 00:36:11,880 David J. MALAN: Ah, tako da moram proći x. 814 00:36:11,880 --> 00:36:13,300 Dakle, moram to učiniti ovdje. 815 00:36:17,590 --> 00:36:19,690 Dakle prototip, moram promijeniti ovaj ovdje. 816 00:36:19,690 --> 00:36:21,290 Dakle, to mora postati 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 Ja sam zapravo imaju bug ovdje dolje. 820 00:36:24,710 --> 00:36:25,780 Ajmo riješiti ovo jednom prvi. 821 00:36:25,780 --> 00:36:27,990 Što bi to zapravo biti? 822 00:36:27,990 --> 00:36:29,330 Dakle, to je dobio biti int nešto. 823 00:36:29,330 --> 00:36:30,340 To bi mogao biti x. 824 00:36:30,340 --> 00:36:33,120 Ali iskreno, ako počnete poziva sve svoje varijable x, to je idući u dobiti 825 00:36:33,120 --> 00:36:35,250 sve manje i manje jasno što je što. 826 00:36:35,250 --> 00:36:38,210 Dakle, neka je samo proizvoljno odabrati neku drugu konvenciji imenovanja za moju 827 00:36:38,210 --> 00:36:40,220 pomoćne funkcije, funkcije pišem. 828 00:36:40,220 --> 00:36:41,100 Mi ćemo to nazvati. 829 00:36:41,100 --> 00:36:44,500 Ili bismo mogli nazvati - nazovimo ga even_number biti čak i precizniji. 830 00:36:44,500 --> 00:36:47,610 Pa onda moram vratiti ono što je broj plus 1. 831 00:36:47,610 --> 00:36:49,720 I sada moram promijeniti jednu drugu stvar ovdje i jedan 832 00:36:49,720 --> 00:36:50,700 Druga stvar ovdje. 833 00:36:50,700 --> 00:36:54,150 Što moram promijeniti na liniji 21 prvi? 834 00:36:54,150 --> 00:36:55,390 Moram ga dodijeliti x. 835 00:36:55,390 --> 00:36:57,480 Pa ja ne mogu samo pozvati inkrementalni x. 836 00:36:57,480 --> 00:37:01,000 Moram se sjetiti odgovor promjenom vrijednost od x na 837 00:37:01,000 --> 00:37:02,020 lijeve strane. 838 00:37:02,020 --> 00:37:04,930 I premda x je sada na lijevo i desno, to je potpuno u redu, jer 839 00:37:04,930 --> 00:37:08,370 desnoj strani dobiva pogubili prvi onda dobiva plopped u lijevo 840 00:37:08,370 --> 00:37:10,240 ruka stvar, x, u ovom slučaju. 841 00:37:10,240 --> 00:37:11,900 I onda na kraju, to je lako popraviti sada. 842 00:37:11,900 --> 00:37:15,080 Ovo je samo trebao odgovarati što je dolje. 843 00:37:15,080 --> 00:37:17,120 Interesi broj. 844 00:37:17,120 --> 00:37:17,320 >> U redu. 845 00:37:17,320 --> 00:37:20,290 Dakle, cijela hrpa promjena za stvarno glupo funkciji. 846 00:37:20,290 --> 00:37:24,250 No predstavnik stvari koje mi se sve ćete želite učiniti. 847 00:37:24,250 --> 00:37:25,490 Tako bi buggy4. 848 00:37:25,490 --> 00:37:26,485 Ja sam zeznuo negdje. 849 00:37:26,485 --> 00:37:27,520 Bože moj. 850 00:37:27,520 --> 00:37:29,660 Pet pogrešaka u, kao, šest-line program. 851 00:37:29,660 --> 00:37:36,500 Dakle, ono što je krivo na liniji 18, lik 5? 852 00:37:36,500 --> 00:37:36,970 U redu. 853 00:37:36,970 --> 00:37:39,330 Dakle, moram proglasiti ovaj int. 854 00:37:39,330 --> 00:37:39,630 U redu. 855 00:37:39,630 --> 00:37:41,790 Tako ćemo vidjeti, hrpu drugih pogrešaka. 856 00:37:41,790 --> 00:37:42,230 O moj bože. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 Ali opet, neka je samo jasan zaslon - 859 00:37:46,020 --> 00:37:48,660 Kontrola L ovdje - i re-run zveka. 860 00:37:48,660 --> 00:37:51,340 Dakle, pet problema je zapravo samo da je jedan. 861 00:37:51,340 --> 00:37:53,500 Dakle, sada idemo pokrenuti buggy4, Enter. 862 00:37:53,500 --> 00:37:54,150 Uh. 863 00:37:54,150 --> 00:37:57,434 x je porastao ispravno. 864 00:37:57,434 --> 00:37:58,420 >> U redu. 865 00:37:58,420 --> 00:38:01,700 Sva pitanja o tome kako za povećanje broja? 866 00:38:01,700 --> 00:38:02,896 Da? 867 00:38:02,896 --> 00:38:06,864 ZVUČNIK 2: Zašto je to da možete samo promijeniti x na broj u varijablu 868 00:38:06,864 --> 00:38:08,860 imenovati i to ću znati što znači? 869 00:38:08,860 --> 00:38:09,600 David J. MALAN: Dobro pitanje. 870 00:38:09,600 --> 00:38:13,130 Kako to da ja mogu samo promijeniti x broju i program će znati 871 00:38:13,130 --> 00:38:13,990 odmah? 872 00:38:13,990 --> 00:38:16,120 Pa opet, mislim da je to ovaj apstrakcije. 873 00:38:16,120 --> 00:38:20,110 Dakle, ako sam glavni i Ken je inkrementalni, iskreno, ne zanima me 874 00:38:20,110 --> 00:38:21,540 što Ken poziva svoju ipad. 875 00:38:21,540 --> 00:38:25,350 Ne zanima me što on naziva sve što ima veze s njegovom provedbom 876 00:38:25,350 --> 00:38:26,550 ove funkcionalnosti. 877 00:38:26,550 --> 00:38:32,130 Dakle, ovo je provedba detalj koji sam, uglavnom, ne 878 00:38:32,130 --> 00:38:33,010 morati brinuti o tome. 879 00:38:33,010 --> 00:38:37,440 I tako jednostavno mijenja dosljedno unutar funkcije, broj ovdje 880 00:38:37,440 --> 00:38:41,340 i broj ovdje, sve je to traje tako dugo kao što sam rekompiliranje. 881 00:38:41,340 --> 00:38:43,820 To je vrsta kao i ako mislite o tome - mnogi od nas, one od vas s vozača 882 00:38:43,820 --> 00:38:46,590 licence koji ste protjerani, ili ako čak sam odvezao u automobilu - 883 00:38:46,590 --> 00:38:50,710 većina nas nema pojma kako se auto radi ispod haube. 884 00:38:50,710 --> 00:38:54,710 I doslovno, ako vam se otvoriti haubu, većina nas - uključujući i mene - 885 00:38:54,710 --> 00:38:56,580 se ne događa da znam što gledamo. 886 00:38:56,580 --> 00:38:58,850 Nešto kao možda ćete osjetiti sa stvari kao što je ovaj sada. 887 00:38:58,850 --> 00:39:01,380 Ali mi stvarno ne moraju brinuti kako automobil radi. 888 00:39:01,380 --> 00:39:05,000 Mi ne moramo brinuti što sve šipke i klipova i kablova unutar mjesta 889 00:39:05,000 --> 00:39:07,700 automobil zapravo rade. 890 00:39:07,700 --> 00:39:11,360 >> Dakle, nešto poput onoga što vi zovete klip ne smeta 891 00:39:11,360 --> 00:39:11,920 ovdje u ovom slučaju. 892 00:39:11,920 --> 00:39:12,490 Sve ideja. 893 00:39:12,490 --> 00:39:12,670 Da? 894 00:39:12,670 --> 00:39:13,920 [Nečujan] 895 00:39:25,250 --> 00:39:29,530 David J. MALAN: Ako je bilo više koristi od varijabilnog Xa trenutak prije, 896 00:39:29,530 --> 00:39:32,220 ti, programer, morat će ih promijeniti posvuda. 897 00:39:32,220 --> 00:39:35,230 Ili ste doslovno mogli učiniti File, Izbornik, a zatim Pronađi / Zamijeni, 898 00:39:35,230 --> 00:39:36,270 nešto slično. 899 00:39:36,270 --> 00:39:40,110 No, ti si idući u morati napraviti tih promjena sebe. 900 00:39:40,110 --> 00:39:41,200 Morate biti dosljedna. 901 00:39:41,200 --> 00:39:42,450 [Nečujan] 902 00:39:47,200 --> 00:39:48,960 David J. MALAN: Posebno bi kao ovdje? 903 00:39:48,960 --> 00:39:52,660 Ako je ovo bila int drugi broj? 904 00:39:52,660 --> 00:39:52,940 Da. 905 00:39:52,940 --> 00:39:56,430 Dakle, kako je bitno kada se zove funkciju. 906 00:39:56,430 --> 00:40:00,350 Dakle, ako sam se zovete prirast ovdje s nečim zarez nešto, 907 00:40:00,350 --> 00:40:01,400 postoji izravna mapiranje. 908 00:40:01,400 --> 00:40:04,490 Prvi varijabla, bez obzira na to zove, je napravio kopiju prvi 909 00:40:04,490 --> 00:40:05,480 Argument ovamo. 910 00:40:05,480 --> 00:40:07,280 Nažalost, to ne bi trebao biti zagrada. 911 00:40:07,280 --> 00:40:09,300 Drugi argument linije se s jednom drugom. 912 00:40:09,300 --> 00:40:11,220 >> Tako bi, da je bitno. 913 00:40:11,220 --> 00:40:11,490 U redu. 914 00:40:11,490 --> 00:40:13,360 Žao mi je dug put kako do njih doći. 915 00:40:13,360 --> 00:40:14,610 Ostala pitanja? 916 00:40:16,460 --> 00:40:16,850 U redu. 917 00:40:16,850 --> 00:40:20,300 Dakle, neka je vidjeti ako ne možemo slikati sliku o tome što se zapravo događa 918 00:40:20,300 --> 00:40:22,160 ovdje ispod haube, da se tako izrazim. 919 00:40:22,160 --> 00:40:26,310 Dakle, ovo je pravokutnik koji bi mogli predstavljati memoriju računala. 920 00:40:26,310 --> 00:40:31,240 Dakle, čak i ako nemate pojma koliko memorije radi ili koliko RAM-radovi, barem 921 00:40:31,240 --> 00:40:33,590 Pretpostavljamo da imate grozdovima to ovih dana. 922 00:40:33,590 --> 00:40:34,740 Imaš megabajta njega. 923 00:40:34,740 --> 00:40:35,760 Imaš gigabajta njega. 924 00:40:35,760 --> 00:40:40,690 A mi znamo iz tjedna nule da bajt je samo ono što? 925 00:40:40,690 --> 00:40:41,280 8 bita. 926 00:40:41,280 --> 00:40:42,730 Točno, pa osam nula i one. 927 00:40:42,730 --> 00:40:46,300 Dakle, ako vaše računalo ima koncert RAM-a, dva nastupa RAM ovih dana, imate 928 00:40:46,300 --> 00:40:54,450 milijardi ili 2000000000 bajtova memorije, ili otprilike 8000000000 ili 16000000000 929 00:40:54,450 --> 00:40:56,560 bita, unutar vašeg računala. 930 00:40:56,560 --> 00:40:59,710 Sada za razliku od malog vunasta Willy primjer, to nije magnetski čestice 931 00:40:59,710 --> 00:41:00,560 obično više. 932 00:41:00,560 --> 00:41:04,470 Sve u prijenosnicima najmanje, to je solid state diskova, SSD-ovi, da 933 00:41:04,470 --> 00:41:05,560 Jednostavno nemaju pokretnih dijelova. 934 00:41:05,560 --> 00:41:06,710 To je sve elektronički. 935 00:41:06,710 --> 00:41:08,070 To je sve struja temelji. 936 00:41:08,070 --> 00:41:12,360 Dakle, mislim, ipak, ovog pravokutnika kao samo predstavlja jedan ili dva 937 00:41:12,360 --> 00:41:13,930 gigabajta memorije koju imaju. 938 00:41:13,930 --> 00:41:15,500 >> Dakle, to je komad memorije. 939 00:41:15,500 --> 00:41:20,460 Sada svijet informatike ima neku vrstu podijelila s komadima 940 00:41:20,460 --> 00:41:22,570 memorija raditi različite stvari. 941 00:41:22,570 --> 00:41:25,930 Tako na primjer, ako je to vaše računalo RAM - kako je predložio 942 00:41:25,930 --> 00:41:30,400 pravokutnik tamo - Ispada da je po konvenciji, na vrhu vašeg RAM-a, tako 943 00:41:30,400 --> 00:41:33,170 govoriti, općenito je ono što se zove tekst segmentu. 944 00:41:33,170 --> 00:41:35,910 Oni su nula i one koje ste sastavio. 945 00:41:35,910 --> 00:41:39,040 Dakle, kada smo gledali ispod haube na ono a.out je, sve 946 00:41:39,040 --> 00:41:40,360 su nula i one - 947 00:41:40,360 --> 00:41:44,000 kada pokrenete program, te nula i one se učitava s tvrdog 948 00:41:44,000 --> 00:41:46,290 pogon na nešto što se zove RAM-a. 949 00:41:46,290 --> 00:41:48,950 I u RAM, oni stavili na vrhu. 950 00:41:48,950 --> 00:41:50,330 Sada međuvremenu, imate i druge stvari. 951 00:41:50,330 --> 00:41:53,060 Inicijalizirane podaci, nepokrenute podataka. 952 00:41:53,060 --> 00:41:56,440 Te dvije swaths sjećanja odnose se na globalne varijable, koje 953 00:41:56,440 --> 00:41:57,530 ne često koriste. 954 00:41:57,530 --> 00:42:00,630 Ali ponekad, ako to učinite, oni završiti tamo gore, kao dobro. 955 00:42:00,630 --> 00:42:01,620 Zatim tu je neke druge stvari. 956 00:42:01,620 --> 00:42:04,130 Okoliš varijable, koje nećemo potrošiti puno vremena na. 957 00:42:04,130 --> 00:42:06,120 Ali onda dvije važne stvari koje će se vratiti u cijelom ovom 958 00:42:06,120 --> 00:42:08,130 semestar, stog i hrpa. 959 00:42:08,130 --> 00:42:12,280 >> Dakle, većina računala memorije rezerviran kada je pokrenut program 960 00:42:12,280 --> 00:42:14,880 nešto što se zove snop i nešto što se zove hrpu. 961 00:42:14,880 --> 00:42:16,940 I nećemo razgovarati o hrpi danas, ali ćemo 962 00:42:16,940 --> 00:42:18,180 govoriti o stog. 963 00:42:18,180 --> 00:42:22,910 I stoga je značilo da dočarati vizualni poput blagovaonici 964 00:42:22,910 --> 00:42:26,120 obrok ladice u Mather doma, ili gdje god vam se dogoditi da se, gdje je 965 00:42:26,120 --> 00:42:27,810 blagovaonica osoblje očistite ih svaki dan. 966 00:42:27,810 --> 00:42:30,180 Oni ih stog gore od poda na gore. 967 00:42:30,180 --> 00:42:33,800 A slično je u memoriji, tu je ova ideja stavljanja nešto na 968 00:42:33,800 --> 00:42:36,740 stog, stavljajući nešto na hrpu, stavljajući nešto na hrpi. 969 00:42:36,740 --> 00:42:38,000 A što mi znači ova? 970 00:42:38,000 --> 00:42:41,430 Pa, neka je uvećali samo u donjoj polovici ove slike, vaše računalo je 971 00:42:41,430 --> 00:42:43,990 RAM-a, predložiti sljedeće. 972 00:42:43,990 --> 00:42:48,300 Ispada da kad pokrenete program kao što je a.out ili bok, bez obzira na 973 00:42:48,300 --> 00:42:49,920 Program je u tome što ste napisali, 974 00:42:49,920 --> 00:42:53,030 opet, ta nula i one se učitava s tvrdog diska - što je 975 00:42:53,030 --> 00:42:56,190 dugotrajno skladištenje, ostaje čak i kada povući utikač - 976 00:42:56,190 --> 00:42:57,220 učitava u RAM. 977 00:42:57,220 --> 00:42:59,020 RAM je brže od tvrdih diskova. 978 00:42:59,020 --> 00:43:00,700 To je manje od tvrdih diskova. 979 00:43:00,700 --> 00:43:03,490 Ali to je gdje programi živjeti dok god ih izvodi. 980 00:43:03,490 --> 00:43:06,380 >> Dakle, dvostruko kliknuti program na Mac ili PC - to je učitati iz 981 00:43:06,380 --> 00:43:07,750 hard disk u RAM. 982 00:43:07,750 --> 00:43:11,760 Čim se to učita u RAM, su nula i one idu na način vrhu, 983 00:43:11,760 --> 00:43:13,130 tzv tekst segmentu. 984 00:43:13,130 --> 00:43:17,040 Ali onda čim se vaš program zapravo počinje prikazivati, glavni 985 00:43:17,040 --> 00:43:18,140 Funkcija se zove. 986 00:43:18,140 --> 00:43:21,070 A glavni, kao što smo vidjeli, često ima lokalne varijable. 987 00:43:21,070 --> 00:43:24,560 I to je Ints i gudače i znakovi i slično. 988 00:43:24,560 --> 00:43:28,300 Dakle, ako vaš program koji ste napisali ili program koji ste 989 00:43:28,300 --> 00:43:33,680 dvokliknuli koristiti neke varijable unutar glavna, oni završiti na 990 00:43:33,680 --> 00:43:37,020 dnu vašeg stog memorije, da se tako izrazim. 991 00:43:37,020 --> 00:43:39,160 Sada više konkretno, što to zapravo znači? 992 00:43:39,160 --> 00:43:44,080 To samo znači da, ako smo išli na broj stvari - 993 00:43:44,080 --> 00:43:49,380 ako idemo na broj bajtova RAM na računalu, primijetiti da 994 00:43:49,380 --> 00:43:51,650 to bi moglo biti byte nula broj. 995 00:43:51,650 --> 00:43:56,130 To bi moglo biti byte broj jedan, dva, tri, četiri, pet, šest, sve 996 00:43:56,130 --> 00:43:57,290 način do sviđa - 997 00:43:57,290 --> 00:44:01,520 2000000000 će biti sve gore na vrhu. 998 00:44:01,520 --> 00:44:05,960 Dakle, drugim riječima, kada govorimo o RAM-a ili memorije u smislu bajtovima, to 999 00:44:05,960 --> 00:44:09,680 samo znači da je netko odlučio što će prebrojiti svaki 1000 00:44:09,680 --> 00:44:11,110 ti komadi memorije. 1001 00:44:11,110 --> 00:44:16,950 >> Dakle, kada vam je potrebno 32 bita za int, ili trebate osam bitova za char, gdje je 1002 00:44:16,950 --> 00:44:18,320 oni završiti u sjećanju? 1003 00:44:18,320 --> 00:44:20,650 Pa konceptualno, oni samo završiti na dnu ove 1004 00:44:20,650 --> 00:44:21,780 stvar se zove snop. 1005 00:44:21,780 --> 00:44:25,670 No, ono što je zanimljivo sada kada je glavni poziva funkcija. 1006 00:44:25,670 --> 00:44:28,830 Pretpostavimo funkciju pod nazivom foo, samo proizvoljna ime. 1007 00:44:28,830 --> 00:44:32,480 Što se događa je glavni je na dnu ovog stog memorije. 1008 00:44:32,480 --> 00:44:35,630 Foo sada staviti na vrhu glavni u sjećanju. 1009 00:44:35,630 --> 00:44:40,020 Dakle, sve lokalne varijable koje foo je završiti neku vrstu konceptualno iznad 1010 00:44:40,020 --> 00:44:40,770 onima u glavni. 1011 00:44:40,770 --> 00:44:46,920 Ako foo zove drugi funkciju zvanu bar one varijable završiti ovdje. 1012 00:44:46,920 --> 00:44:49,790 Ako bar zove nešto drugo, ovdje, ovdje, ovdje. 1013 00:44:49,790 --> 00:44:53,900 Dakle, ono što je zanimljivo o pokretanju programa je u tome što vi zovete funkcije, 1014 00:44:53,900 --> 00:44:57,720 i kao one funkcije poziva funkcije, kao i one funkcije poziva funkcije, 1015 00:44:57,720 --> 00:45:00,980 da podigne ovu hrpu funkcija u memoriji. 1016 00:45:00,980 --> 00:45:06,740 I samo jednom funkcija vraća ne počnete dobivanje tog memoriju natrag. 1017 00:45:06,740 --> 00:45:11,190 Dakle, jedan od najlakših načina da ponestane memorije računalnog programa je 1018 00:45:11,190 --> 00:45:14,170 napisati funkcije koje nikada ne vrate. 1019 00:45:14,170 --> 00:45:16,650 >> Tako na primjer, neka je pokazati koliko s 1020 00:45:16,650 --> 00:45:18,460 namjerno lud programa. 1021 00:45:18,460 --> 00:45:24,690 Pusti me naprijed i nemojte # include , int main (void). 1022 00:45:24,690 --> 00:45:31,270 I ja ću to učiniti dok (2> 1), koji vjerojatno neće nikada 1023 00:45:31,270 --> 00:45:33,370 promijeniti na nas. 1024 00:45:33,370 --> 00:45:37,720 I neka mi sada ići naprijed i učiniti printf. 1025 00:45:37,720 --> 00:45:39,950 Zapravo, to će biti manje vizualno zanimljiva. 1026 00:45:39,950 --> 00:45:40,460 Ajmo to učiniti. 1027 00:45:40,460 --> 00:45:44,840 Za int (i = 0; i> 0). 1028 00:45:44,840 --> 00:45:49,740 Ajmo napraviti takvu pogrešku, i + +. 1029 00:45:49,740 --> 00:45:51,150 I nemojmo printf ovdje. 1030 00:45:51,150 --> 00:45:52,550 Ajmo vježbati ono što sam propovijedao. 1031 00:45:52,550 --> 00:45:54,090 Popijmo metodu ovdje. 1032 00:45:54,090 --> 00:46:00,860 Void zbor, a mi ćemo reći int i. 1033 00:46:00,860 --> 00:46:02,295 A onda ću reći, printf - 1034 00:46:04,871 --> 00:46:06,790 oh, hajdemo napraviti ovo više zanimljiv. 1035 00:46:06,790 --> 00:46:08,350 Ajmo zapravo ne ispisivati ​​ništa at svi. 1036 00:46:08,350 --> 00:46:10,530 Ajmo to učiniti. 1037 00:46:10,530 --> 00:46:11,780 Chorus (i). 1038 00:46:16,630 --> 00:46:17,000 >> U redu. 1039 00:46:17,000 --> 00:46:20,040 Dakle, ovo je lud, jer zašto? 1040 00:46:20,040 --> 00:46:22,850 Ja izmišljam kao što sam ići jer je program zapravo ne učiniti ništa 1041 00:46:22,850 --> 00:46:23,420 od interesa. 1042 00:46:23,420 --> 00:46:24,670 No, to nije cilj. 1043 00:46:24,670 --> 00:46:30,440 Cilj je napisati program čiji je glavna funkcija što radi, očito? 1044 00:46:30,440 --> 00:46:31,370 Se poziva. 1045 00:46:31,370 --> 00:46:32,600 I zapravo, ne trebamo petlju. 1046 00:46:32,600 --> 00:46:36,070 Ajmo još pojednostaviti to samo kako ne bi izgubili iz vida stvarno 1047 00:46:36,070 --> 00:46:37,310 Temeljni bug. 1048 00:46:37,310 --> 00:46:39,200 Glavni pozivi zbor pjevati neki refren. 1049 00:46:39,200 --> 00:46:41,760 Tada sam učinio nešto glupo, a ja sam imao refren zborski poziva, jer sam preuzela 1050 00:46:41,760 --> 00:46:43,550 netko drugi će ga provesti možda. 1051 00:46:43,550 --> 00:46:45,960 I sad to ne ide sastaviti još. 1052 00:46:45,960 --> 00:46:48,340 Trebam učiniti što? 1053 00:46:48,340 --> 00:46:49,700 Trebam prototip, zapamtite. 1054 00:46:49,700 --> 00:46:55,520 Dakle, moram imati ovdje void refren (int i);. 1055 00:46:55,520 --> 00:46:57,470 >> Pa sad, ako odem ovdje dolje - 1056 00:46:57,470 --> 00:46:59,030 zapravo, ajmo koristiti veći prozor. 1057 00:46:59,030 --> 00:47:01,670 Idemo naprijed i napraviti refren. 1058 00:47:01,670 --> 00:47:06,000 Idemo naprijed i napraviti refren. 1059 00:47:06,000 --> 00:47:08,302 Korištenje neidentificiranog declarer ja. 1060 00:47:08,302 --> 00:47:09,860 Oh, to je glupo. 1061 00:47:09,860 --> 00:47:11,020 Mi ne trebamo argument. 1062 00:47:11,020 --> 00:47:13,680 Ajmo to učiniti. 1063 00:47:13,680 --> 00:47:14,550 Želja mi je počeo ovaj način. 1064 00:47:14,550 --> 00:47:16,160 To bi bilo puno lakše program za pisanje. 1065 00:47:16,160 --> 00:47:20,100 Dakle postoji. 1066 00:47:20,100 --> 00:47:23,870 Sada idemo do mog prozora terminala, ponovno pokrenuti zveka. 1067 00:47:23,870 --> 00:47:26,900 I ovdje mi ići. 1068 00:47:26,900 --> 00:47:28,020 To je bilo jako brzo. 1069 00:47:28,020 --> 00:47:30,690 Što se zapravo dogodilo baš, iako? 1070 00:47:30,690 --> 00:47:33,430 Pa, sada ću dodati ispisa linija, tako da možemo vidjeti. 1071 00:47:33,430 --> 00:47:41,330 Dakle, dopustite mi da kažem printf, recimo, ja sam ovdje. 1072 00:47:41,330 --> 00:47:43,470 Ok, nema varijabli, mi ćemo ga ostaviti kao što je to. 1073 00:47:43,470 --> 00:47:44,860 Dopustite mi da ponovno pokrenuti napraviti. 1074 00:47:44,860 --> 00:47:47,940 Dopustite mi da ponovno mali zbor. 1075 00:47:47,940 --> 00:47:51,235 I hajde. 1076 00:47:53,880 --> 00:47:55,130 Imajte ide. 1077 00:47:57,630 --> 00:47:59,750 Kao na stranu, zašto je ne srušio još? 1078 00:47:59,750 --> 00:48:02,050 Segmentacija kriv dogodilo superbrzo prije. 1079 00:48:02,050 --> 00:48:04,250 [Nečujan] 1080 00:48:04,250 --> 00:48:04,830 David J. MALAN: Točno. 1081 00:48:04,830 --> 00:48:06,350 Tako je potrebno vrijeme za ispis. 1082 00:48:06,350 --> 00:48:08,370 Potrebno je samo više rada na računalu strane. 1083 00:48:08,370 --> 00:48:09,550 I to je to. 1084 00:48:09,550 --> 00:48:10,620 Segmentacija kriv. 1085 00:48:10,620 --> 00:48:12,140 >> Dakle primijetiti koliko brzo programi pokrenuti. 1086 00:48:12,140 --> 00:48:14,110 Ako ne ispisuje ništa, super brzo. 1087 00:48:14,110 --> 00:48:18,100 Ali mi još uvijek imamo ovu segmentacije grešku jer ono što se događa? 1088 00:48:18,100 --> 00:48:21,310 Pa, ako mislite o tome kako vaše računalo 'pamćenje je iznio, to 1089 00:48:21,310 --> 00:48:22,890 dogoditi da bude glavna. 1090 00:48:22,890 --> 00:48:23,800 Ali ovdje - 1091 00:48:23,800 --> 00:48:28,670 ajmo samo nazovite ovaj refren, a nazovimo ovu refren. 1092 00:48:28,670 --> 00:48:33,420 I sad, ako ja moje estetiku pravo, ovo je samo htio reći refren, 1093 00:48:33,420 --> 00:48:38,060 zbor, zbor, zbor, zbor, zbor, zbor, oglas nauseum. 1094 00:48:38,060 --> 00:48:39,920 I na kraju, ono što će se dogoditi? 1095 00:48:39,920 --> 00:48:46,690 Ako velika slika doslovno je ovo, što se upravo događa konceptualno? 1096 00:48:46,690 --> 00:48:48,320 Stog prekoračenja hrpi. 1097 00:48:48,320 --> 00:48:52,400 Ili još gore, samo prekoračenje sve, uključujući tekst segmentu, koji je 1098 00:48:52,400 --> 00:48:54,530 su nula i one koji predstavljaju svoj program. 1099 00:48:54,530 --> 00:48:56,690 Ukratko, to je samo super, super loše. 1100 00:48:56,690 --> 00:48:56,860 Točno? 1101 00:48:56,860 --> 00:48:58,620 Vaš program spiralu izvan kontrole. 1102 00:48:58,620 --> 00:49:02,840 Vi koristite način više memorije nego što namjerava sve zbog glupo 1103 00:49:02,840 --> 00:49:03,920 pogreška, u ovom slučaju. 1104 00:49:03,920 --> 00:49:08,160 Ili, u ovom slučaju, vrlo namjerno učinio funkcija se zove. 1105 00:49:08,160 --> 00:49:09,210 Sada to nije sve loše. 1106 00:49:09,210 --> 00:49:12,540 Funkcije se pozivaju zapravo ima veliku moć 1107 00:49:12,540 --> 00:49:13,700 kada ga koristite pravilno. 1108 00:49:13,700 --> 00:49:15,650 Nisam ga se pravilno koristi ovdje. 1109 00:49:15,650 --> 00:49:16,940 >> Dakle, to nije sve loše. 1110 00:49:16,940 --> 00:49:20,620 No, činjenica da sam nikada zapravo zaustaviti sebe nazivajući je temeljni 1111 00:49:20,620 --> 00:49:23,050 Slabost ovdje ovog programa. 1112 00:49:23,050 --> 00:49:25,090 Dakle, gdje ćemo uz sve ovo? 1113 00:49:25,090 --> 00:49:26,230 Pa, što se stvarno događa? 1114 00:49:26,230 --> 00:49:30,010 Kad sam nazvati prirast funkcije, kao što smo radili u tim primjerima, 1115 00:49:30,010 --> 00:49:33,290 Imam vrijednost kao jedan koji sam proći u. 1116 00:49:33,290 --> 00:49:35,820 Ja proći u kopiji broj jedan. 1117 00:49:35,820 --> 00:49:37,080 Dakle, sljedeće će se dogoditi. 1118 00:49:37,080 --> 00:49:40,390 Dakle, idemo u prirasta primjer. 1119 00:49:40,390 --> 00:49:44,230 A ovaj tip upravo ovdje. 1120 00:49:44,230 --> 00:49:46,800 Dakle, ovdje je ono što se zapravo događa. 1121 00:49:46,800 --> 00:49:50,770 Kada sam nazvao prirasta, a ja proći u x, slikovito što je 1122 00:49:50,770 --> 00:49:53,660 ovdje događa je to - 1123 00:49:53,660 --> 00:50:00,240 ako imam vrijednost jednog pohranjene ovdje, a ja sam zapravo nazvati prirasta, koji 1124 00:50:00,240 --> 00:50:02,680 sada se zove refren - 1125 00:50:02,680 --> 00:50:04,010 da, to me bacanje izvan ovdje. 1126 00:50:04,010 --> 00:50:06,750 Dakle, nazovimo ovaj prirast. 1127 00:50:06,750 --> 00:50:09,420 I ne znamo što je to sljedeća funkcija će biti. 1128 00:50:09,420 --> 00:50:14,270 Dakle, ono što se zapravo događa je ovdje negdje u glavnom, imam komad 1129 00:50:14,270 --> 00:50:16,670 memorije koja je spremanje broj 1. 1130 00:50:16,670 --> 00:50:19,730 Kad sam nazvati prirasta, ja sam koristeći drugi komad memorije, ali sada sam 1131 00:50:19,730 --> 00:50:20,840 imaju kopiju 1. 1132 00:50:20,840 --> 00:50:25,480 Kad sam povećajte tu vrijednost, to postaje 2 - užasno napisan na 1133 00:50:25,480 --> 00:50:26,420 zaslon ovdje. 1134 00:50:26,420 --> 00:50:30,550 Ali onda, što će se dogoditi čim prirasta vraća? 1135 00:50:30,550 --> 00:50:34,610 Ova memorija samo dobiva vrati na operativnom sustavu, što znači sve 1136 00:50:34,610 --> 00:50:37,470 ste učinili ništa korisno. 1137 00:50:37,470 --> 00:50:43,460 Onaj koji je izvorno bio sadržan u glavnom je još uvijek zapravo postoji. 1138 00:50:43,460 --> 00:50:44,650 >> Dakle, gdje ćemo s tim? 1139 00:50:44,650 --> 00:50:49,400 Pa, ispada da se u memoriji imate to natrag na leđa slijed 1140 00:50:49,400 --> 00:50:50,940 bajtova koje možete staviti stvari unutra 1141 00:50:50,940 --> 00:50:53,760 I ispada da smo već vidjeli nešto što uključuje stavljanjem 1142 00:50:53,760 --> 00:50:55,100 stvari vratiti natrag na leđa na leđa. 1143 00:50:55,100 --> 00:51:00,170 Što je string, temelji se na tjedan jedan, a sada tjedan dva? 1144 00:51:00,170 --> 00:51:01,840 Dakle, to je samo skup znakova. 1145 00:51:01,840 --> 00:51:05,290 Tako ispada, baš kao što možete staviti brojeve u memoriji, slično možete 1146 00:51:05,290 --> 00:51:06,900 staviti znakove u sjećanju. 1147 00:51:06,900 --> 00:51:09,810 A kad ćemo početi stavljanjem znakova u memoriji natrag na leđa na leđa 1148 00:51:09,810 --> 00:51:12,800 natrag, ispada da koriste najjednostavnije stvari kao što je za petlje ili 1149 00:51:12,800 --> 00:51:14,510 petlja dok je, možemo ponoviti - 1150 00:51:14,510 --> 00:51:17,130 s lijeva na desno preko znakova u nizu - 1151 00:51:17,130 --> 00:51:20,720 i početi ih masirati u različite likove uopce. 1152 00:51:20,720 --> 00:51:25,550 Mogla postati B. B mogao postati C. Tako da u konačnici, možemo uzeti 1153 00:51:25,550 --> 00:51:28,830 Hrvatski rečenica koja zapravo ima smisla i pretvoriti svaki od onih 1154 00:51:28,830 --> 00:51:32,440 Slova jednom na vrijeme šetnjom kroz naše memorije računala lijevo 1155 00:51:32,440 --> 00:51:34,300 Pravo da se zapravo šifriranje. 1156 00:51:34,300 --> 00:51:36,590 >> Tako ćemo uzeti našu pet minuta pauze ovdje, i kad smo se vratiti, mi ćemo 1157 00:51:36,590 --> 00:51:39,060 započeti ovaj proces remećenje informacije. 1158 00:51:41,640 --> 00:51:43,180 >> U redu. 1159 00:51:43,180 --> 00:51:48,440 Dakle, prije nego što smo zaroniti u nekim kripto i te stvari naziva polja, neka mi 1160 00:51:48,440 --> 00:51:51,610 stanka za sva pitanja jer se osjećam kao da sam stvarno vrsta zbrkane neke od 1161 00:51:51,610 --> 00:51:52,230 tim temama. 1162 00:51:52,230 --> 00:51:53,940 Tako ćemo popraviti sada, ako možemo. 1163 00:51:53,940 --> 00:51:56,480 Tako smo samo razgovarali o povratnih vrijednosti. 1164 00:51:56,480 --> 00:51:58,630 Razgovarali smo o argumentima. 1165 00:51:58,630 --> 00:52:02,330 I razgovarali smo o tom pojmu, koji ćemo se vratiti u narednim tjednima 1166 00:52:02,330 --> 00:52:07,140 dolaze, od gledanja memoriju kao cijela hrpa tih složenom 1167 00:52:07,140 --> 00:52:08,540 ladice, da se tako izrazim. 1168 00:52:08,540 --> 00:52:13,460 Od dna na gore, tako da svaka ladica da se stavi na stog predstavlja 1169 00:52:13,460 --> 00:52:15,160 funkcija koja trenutno se zove. 1170 00:52:17,970 --> 00:52:20,300 Ima li pitanja? 1171 00:52:20,300 --> 00:52:22,890 Pa o tome - neka mi probati molba pitanje. 1172 00:52:22,890 --> 00:52:25,520 Držim da pokvari, ali sada it's - you've svi vidjeli dječakovo lice. 1173 00:52:25,520 --> 00:52:27,020 Dakle, mi ćemo se vratiti na to. 1174 00:52:27,020 --> 00:52:29,700 >> Pa neka mi postaviti pitanje ovdje. 1175 00:52:29,700 --> 00:52:34,810 Dopustite mi da pojednostaviti ovaj leđa na ono što je bilo prije neke naše ranije Q & A. 1176 00:52:34,810 --> 00:52:41,730 A činjenica da je prirast ima otvorenu zagradu, int broj, zatvoren 1177 00:52:41,730 --> 00:52:42,260 zagrada. 1178 00:52:42,260 --> 00:52:46,370 Što int broj predstavlja? 1179 00:52:46,370 --> 00:52:47,250 [Nečujan] 1180 00:52:47,250 --> 00:52:47,870 David J. MALAN: argument. 1181 00:52:47,870 --> 00:52:50,732 Ok, ali ono što je argument? 1182 00:52:50,732 --> 00:52:51,620 [Nečujan] 1183 00:52:51,620 --> 00:52:52,500 David J. MALAN: Žao mi je, što je to? 1184 00:52:52,500 --> 00:52:53,150 ZVUČNIK 3: Nešto što prođe u. 1185 00:52:53,150 --> 00:52:53,570 David J. MALAN: Ok. 1186 00:52:53,570 --> 00:52:54,780 Dakle, nešto što prođe u. 1187 00:52:54,780 --> 00:52:56,560 I općenito, to je samo ulaz. 1188 00:52:56,560 --> 00:52:59,860 Ako pišete funkciju i tu funkciju je svrha u životu je učiniti 1189 00:52:59,860 --> 00:53:03,290 nešto malo drugačiji svaki put kada ga koristiti, onda je jedini način za 1190 00:53:03,290 --> 00:53:07,710 da se to dogodi stvarno čini da bi se to osigurati sa ulaza, tako da se 1191 00:53:07,710 --> 00:53:10,180 može napraviti nešto drugačije s tim input svaki put. 1192 00:53:10,180 --> 00:53:13,590 >> Dakle, potrebno je navesti dvije stvari kada funkcija uzima ulaza. 1193 00:53:13,590 --> 00:53:17,240 Morate navesti ime koje želite dati taj ulaz, isključivo 1194 00:53:17,240 --> 00:53:20,790 svoju praktičnost, tako da se može odnositi na njega u funkciji koju 1195 00:53:20,790 --> 00:53:23,610 sami pišete, kao što sam učinio ovdje u liniji 32. 1196 00:53:23,610 --> 00:53:27,840 No, također je potrebno da odredite svoj tip jer je C programski jezik 1197 00:53:27,840 --> 00:53:28,840 samo da zahtijeva 1198 00:53:28,840 --> 00:53:31,810 da, ako želite varijablu, morate reći računalu što 1199 00:53:31,810 --> 00:53:32,790 data type je, 1200 00:53:32,790 --> 00:53:35,540 u velikom dijelu, tako da se ne zna koliko bita 1201 00:53:35,540 --> 00:53:37,230 izdvojiti za tu varijablu. 1202 00:53:37,230 --> 00:53:38,600 Budući da bi to moglo biti šest - 1203 00:53:38,600 --> 00:53:39,990 Žao nam je, to neće biti šest. 1204 00:53:39,990 --> 00:53:41,050 To može biti 16 godina. 1205 00:53:41,050 --> 00:53:41,630 To može biti osam. 1206 00:53:41,630 --> 00:53:44,410 To može biti 32, čak 64. 1207 00:53:44,410 --> 00:53:45,820 No, računalo treba znati. 1208 00:53:45,820 --> 00:53:49,110 Sada int na lijevoj strani predstavlja ono što je, za razliku? 1209 00:53:52,825 --> 00:53:53,780 [Nečujan] 1210 00:53:53,780 --> 00:53:54,570 David J. MALAN: Što je to? 1211 00:53:54,570 --> 00:53:55,390 [Nečujan] 1212 00:53:55,390 --> 00:53:57,920 David J. MALAN: tip funkcije i, točnije, 1213 00:53:57,920 --> 00:53:59,755 Vrsta svoje proizvodnje. 1214 00:53:59,755 --> 00:54:00,220 Točno. 1215 00:54:00,220 --> 00:54:04,220 Dakle, dok je stvar u zagradi predstavlja njegov ulaz, ako ih ima, 1216 00:54:04,220 --> 00:54:06,640 stvar s lijeve strane predstavlja svoj izlaz. 1217 00:54:06,640 --> 00:54:10,560 I u ovom slučaju, prirast očito vraća int. 1218 00:54:10,560 --> 00:54:14,590 I tako int je povratni tip ove funkcije. 1219 00:54:14,590 --> 00:54:16,090 >> Što to znači da se vrate? 1220 00:54:16,090 --> 00:54:19,810 Doslovno, koristite ključne povratak. 1221 00:54:19,810 --> 00:54:24,640 I onda ako je ono što se vraćaju s desne strane ključnu riječ 1222 00:54:24,640 --> 00:54:28,340 cijeli broj, onda je to doista u skladu s onim što smo obećali. 1223 00:54:28,340 --> 00:54:31,110 Vi ne bi mogao učiniti nešto ovako - 1224 00:54:31,110 --> 00:54:32,280 Pozdrav, svijet - 1225 00:54:32,280 --> 00:54:33,500 jer je niz. 1226 00:54:33,500 --> 00:54:35,440 Očito to nije cijeli broj. 1227 00:54:35,440 --> 00:54:40,450 Dakle, u kratko, teret je stvarno na nas, programer, biti specifičan kao 1228 00:54:40,450 --> 00:54:44,730 za što smo se vraćaju i onda zapravo ide o tome povratka. 1229 00:54:44,730 --> 00:54:49,030 A onda bi tad više jasno kontekst - 1230 00:54:49,030 --> 00:54:50,080 tamo je opet. 1231 00:54:50,080 --> 00:54:51,060 Kontekst - 1232 00:54:51,060 --> 00:54:52,830 veliko iznenađenje dolaze u samo jednom trenutku. 1233 00:54:52,830 --> 00:54:57,720 Kontekst ovdje sada da vaše računalo 'pamćenje je, opet, 1234 00:54:57,720 --> 00:54:59,070 gigabajt, dva gigabajta, što god. 1235 00:54:59,070 --> 00:54:59,630 Možda je to i više. 1236 00:54:59,630 --> 00:55:00,540 Možda je manje. 1237 00:55:00,540 --> 00:55:03,750 No, računalo ga pogleda kao da različite dijelove. 1238 00:55:03,750 --> 00:55:04,860 Nešto ide tamo dolje. 1239 00:55:04,860 --> 00:55:06,020 Nešto drugo ide gore. 1240 00:55:06,020 --> 00:55:07,540 Različite stvari ide u sredini. 1241 00:55:07,540 --> 00:55:09,300 I danas, mi samo početi govoriti ovu priču. 1242 00:55:09,300 --> 00:55:11,130 >> No, vratit ćemo se na ovaj tijekom vremena. 1243 00:55:11,130 --> 00:55:15,000 Za sada, samo komad memorije mi stvarno stalo je tekst segment 1244 00:55:15,000 --> 00:55:17,160 jer to samo predstavlja nula i one 1245 00:55:17,160 --> 00:55:18,460 da zveka je outputted. 1246 00:55:18,460 --> 00:55:21,570 Dakle, kada ste pokrenuti naredbu na tipkovnici kao a.out, ili dvostruka 1247 00:55:21,570 --> 00:55:25,350 kliknite ikonu na Mac OS ili Windows, vaš program je učitan s tvrdom 1248 00:55:25,350 --> 00:55:26,930 voziti u RAM. 1249 00:55:26,930 --> 00:55:30,850 I to je plopped na vrhu vašeg računala RAM-a, da se tako izrazim. 1250 00:55:30,850 --> 00:55:35,470 Sada u međuvremenu, kao i vaš program počinje prikazivati ​​i glavni dobiva pozvao u 1251 00:55:35,470 --> 00:55:39,240 Program je napisao ili program Microsoft ili Apple pisao, bilo koja od njezinih 1252 00:55:39,240 --> 00:55:42,930 lokalne varijable završiti tamo dolje na dnu vašeg računala memorije. 1253 00:55:42,930 --> 00:55:46,490 Ali ako glavna zove drugi funkciju koja sama po sebi ima varijable ili 1254 00:55:46,490 --> 00:55:48,340 argumenti, oni završiti iznad nje. 1255 00:55:48,340 --> 00:55:50,670 A ako je to funkcija poziva nešto, oni završiti iznad nje, 1256 00:55:50,670 --> 00:55:51,840 iznad njega, iznad njega. 1257 00:55:51,840 --> 00:55:56,100 I samo jednom funkcija se obavlja izvršenje radi hrpu ladica, tako 1258 00:55:56,100 --> 00:55:58,320 govoriti, početi da se niže i niže. 1259 00:55:58,320 --> 00:56:03,370 A to je ono što se tada, u malom, objašnjava zašto je, kada nazovete kocka - 1260 00:56:03,370 --> 00:56:04,660 ili nazovete prirast - 1261 00:56:04,660 --> 00:56:06,490 god prolazi u kopiju vrijednosti. 1262 00:56:06,490 --> 00:56:09,840 A što to znači slikovito je da doslovno pišeš 1263 00:56:09,840 --> 00:56:14,540 broj 1 u drugom dijelu memorije, mijenja da 1 do 2, u slučaju 1264 00:56:14,540 --> 00:56:15,360 prirast - 1265 00:56:15,360 --> 00:56:17,450 ili na 8, u slučaju kocke - 1266 00:56:17,450 --> 00:56:21,450 i onda bacanje da sjećanje daleko čim prirasta ili kocka 1267 00:56:21,450 --> 00:56:23,410 funkcija vraća. 1268 00:56:23,410 --> 00:56:24,267 >> Pitanje. 1269 00:56:24,267 --> 00:56:25,517 [Nečujan] 1270 00:56:28,090 --> 00:56:29,970 David J. MALAN: Gdje - globalne varijable su pohranjene u ono što je 1271 00:56:29,970 --> 00:56:32,960 Trenutno zove inicijalizirati podatke ili nepokrenute podataka. 1272 00:56:32,960 --> 00:56:35,900 Razlika je u tome, ako imate globalnu varijablu, a vi ga dodijeliti 1273 00:56:35,900 --> 00:56:39,530 Odmah vrijednost sa znaka jednakosti, to završi na vrhu postoji. 1274 00:56:39,530 --> 00:56:43,390 A ako ste samo reći int x zarez bez vrijednosti, to završi blago 1275 00:56:43,390 --> 00:56:46,670 niža u RAM jednostavno konvenciji. 1276 00:56:46,670 --> 00:56:49,308 Ostala pitanja. 1277 00:56:49,308 --> 00:56:49,750 U redu. 1278 00:56:49,750 --> 00:56:53,040 >> Dakle, ova slika će se vratiti kao što smo dobili više snažan s onim što možemo učiniti 1279 00:56:53,040 --> 00:56:53,830 s računalom. 1280 00:56:53,830 --> 00:56:58,790 Ali za sada, neka je imaju kratak uvod u kriptografiju, specifična vrsta 1281 00:56:58,790 --> 00:57:01,910 kriptografija da ne riješiti sve svjetske probleme, ali ne rješava 1282 00:57:01,910 --> 00:57:02,480 su neki od njih. 1283 00:57:02,480 --> 00:57:06,090 U ovom slučaju ovdje, imamo nešto što se zove kriptografija s tajnim ključem. 1284 00:57:06,090 --> 00:57:10,430 I kriptografija s tajnim ključem, kao što ime sugerira, proizlazi svoju sigurnost 1285 00:57:10,430 --> 00:57:11,330 iz tajnosti. 1286 00:57:11,330 --> 00:57:14,720 Tako na primjer, ako ste se vratili u osnovnoj školi, a vi ste prolazu 1287 00:57:14,720 --> 00:57:18,040 mala tajna ljubavno pismo na dječaka ili djevojčicu koju drobljenje na - ako 1288 00:57:18,040 --> 00:57:20,820 htjela proći da se kroz publiku, vjerojatno ne bi napisati 1289 00:57:20,820 --> 00:57:24,120 kao bilješka na engleskom ili bilo što vaš materinji jezik je, štoviše, da 1290 00:57:24,120 --> 00:57:25,800 Možda ga kodirati. 1291 00:57:25,800 --> 00:57:27,820 Ili možda samo im poslati SMS poruku ovih dana. 1292 00:57:27,820 --> 00:57:30,310 No, možda zapravo prođe im notu cijelom razredu. 1293 00:57:30,310 --> 00:57:33,820 A za to sigurno, tako da vaši prijatelji i nastavnike 1294 00:57:33,820 --> 00:57:36,820 ne znam što ti pišeš, možda ćete doći do prilično jednostavan 1295 00:57:36,820 --> 00:57:37,800 Algoritam - 1296 00:57:37,800 --> 00:57:39,290 Mlada iako bi moglo biti - 1297 00:57:39,290 --> 00:57:40,780 samo otimati riječi. 1298 00:57:40,780 --> 00:57:44,390 Dakle, umjesto pisanja, možda ćete napisati B. Umjesto B, možda ćete napisati 1299 00:57:44,390 --> 00:57:46,670 C. Umjesto C, možda ćete napisati D, i tako dalje. 1300 00:57:46,670 --> 00:57:50,020 Ili ste mogli doći do više sofisticirane prijevodu slova 1301 00:57:50,020 --> 00:57:51,300 različitim slovima. 1302 00:57:51,300 --> 00:57:55,440 No, kvaka je dječak ili djevojčica na koju šaljete ovu poruku treba 1303 00:57:55,440 --> 00:57:56,850 znati nešto. 1304 00:57:56,850 --> 00:57:59,620 Što je ono što, očito? 1305 00:57:59,620 --> 00:58:01,400 Sviđa mi se, ono što vaša tajna je. 1306 00:58:01,400 --> 00:58:04,620 Kao što je to mapiranje između kao i BS i CS i DS? 1307 00:58:04,620 --> 00:58:08,780 Je li to samo dodao jedan, da tako kažemo, da svaki od slova otići iz 1308 00:58:08,780 --> 00:58:09,730 A do točke B, B i C? 1309 00:58:09,730 --> 00:58:11,350 Je li to složeniji od toga? 1310 00:58:11,350 --> 00:58:16,450 Dakle, vi i vaš simpatiju trebaju imati ovu tajnu informaciju. 1311 00:58:16,450 --> 00:58:18,170 No, tu je vrsta ulova-22 ovdje. 1312 00:58:18,170 --> 00:58:20,760 Ako je ovo vrlo prvi put šaljete ovo ljubavno pismo kroz 1313 00:58:20,760 --> 00:58:25,590 klase, kako je to dječak ili djevojčica će znati što je tajna, čak je? 1314 00:58:25,590 --> 00:58:28,450 Dakle tajni ključ kripto ne riješiti sve svjetske probleme. 1315 00:58:28,450 --> 00:58:30,490 I tu je zapravo odnos koji ćemo se vratiti prema 1316 00:58:30,490 --> 00:58:31,370 Semestar je kraj. 1317 00:58:31,370 --> 00:58:35,970 >> Isto tako, imate nitko od nas vjerojatno ikada poslan - 1318 00:58:35,970 --> 00:58:39,453 slično, ne većina nas ne zna nekoga da radi, na primjer, na 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 Pa ipak, mnogi od nas vjerojatno su kupili stvari na Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 I mi smo učili pretpostaviti da ti e-commerce 1322 00:58:45,670 --> 00:58:47,060 transakcije su sigurne. 1323 00:58:47,060 --> 00:58:47,210 Točno? 1324 00:58:47,210 --> 00:58:49,310 URL vjerojatno kaže https. 1325 00:58:49,310 --> 00:58:51,590 Tu je možda glupo lokota ikona negdje. 1326 00:58:51,590 --> 00:58:54,680 Postoji neka vrsta kriptografije osiguravanje vaše podatke o kreditnoj kartici 1327 00:58:54,680 --> 00:58:56,980 između vas i Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 Pa ipak, ako kriptografija uključuje znajući neke tajne, a još ne znam 1329 00:59:00,410 --> 00:59:03,330 znam nikoga na Amazonu, a ja sam sigurno nije dogovoreno bilo kakve 1330 00:59:03,330 --> 00:59:07,350 tajna s nekim na Amazonu, kako je moje računalo ili moj preglednik to? 1331 00:59:07,350 --> 00:59:10,100 Pa, ispada da je druge vrste kriptografije ukupno da rješavaju 1332 00:59:10,100 --> 00:59:10,740 taj problem. 1333 00:59:10,740 --> 00:59:13,610 No, za danas, mi ćemo se fokusirati na jednostavan jedan, gdje možete organizirati u 1334 00:59:13,610 --> 00:59:18,480 unaprijed znati neke tajne, kao što je plus jedan ili nekom mapiranje između kao i BS. 1335 00:59:18,480 --> 00:59:20,710 >> A proces kriptografije općenito uključuje ovo. 1336 00:59:20,710 --> 00:59:23,550 Imate neki običan tekst, prikazano ovdje na lijevoj strani. 1337 00:59:23,550 --> 00:59:26,260 Možete ga pokrenuti kroz neku vrstu algoritma ili postupka 1338 00:59:26,260 --> 00:59:27,670 za to kriptiranje. 1339 00:59:27,670 --> 00:59:31,390 Možda je to samo postaje B, B postaje C. I onda ćete završiti s 1340 00:59:31,390 --> 00:59:32,260 šifra teksta. 1341 00:59:32,260 --> 00:59:36,450 U međuvremenu, nakon što svoju simpatiju prima na znanje tajnu, on ili ona mora onda 1342 00:59:36,450 --> 00:59:39,950 dešifriranje to po pravilu unazad da algoritam kako bi dobili 1343 00:59:39,950 --> 00:59:41,640 natrag na običan tekst. 1344 00:59:41,640 --> 00:59:43,860 Sada postoje fizički inkarnacije to. 1345 00:59:43,860 --> 00:59:46,720 Na primjer, to je mala tajna dekoder prsten. 1346 00:59:46,720 --> 00:59:50,060 A ovo je prsten u smislu da postoje dvije biranja ovdje. 1347 00:59:50,060 --> 00:59:53,630 Na vanjskom rubu ove stvari, tu je slova od A do Z, 1348 00:59:53,630 --> 00:59:55,110 iako su u slučajnim redoslijedom. 1349 00:59:55,110 --> 00:59:58,410 I iznutra, tu je zapravo neki brojevi, kao da s ovom 1350 00:59:58,410 --> 01:00:02,940 prsten, možete pretvoriti vrsta izvana, ali ne iznutra kako bi se redati 1351 01:00:02,940 --> 01:00:04,110 brojevi s pismima. 1352 01:00:04,110 --> 01:00:08,290 I u isječak ste o kako bi vidjeli - od kojih neki možda ste vidjeli 24/7 1353 01:00:08,290 --> 01:00:11,120 oko božićne sezone iz filma pod nazivom Božićna priča. 1354 01:00:11,120 --> 01:00:16,050 Vidjet ćete da je malo Ralphie je bio toliko željan shvatiti ono malo siroče 1355 01:00:16,050 --> 01:00:19,810 Annie tajna poruka bila mu da je komunicirao, mislim, u 1356 01:00:19,810 --> 01:00:22,810 obliku numeričkih poruka na serijske kutije. 1357 01:00:22,810 --> 01:00:26,760 A ti morao akumulirati sve malo kartice koje ste dobili 1358 01:00:26,760 --> 01:00:27,480 u žitarica okvir. 1359 01:00:27,480 --> 01:00:28,320 Morao si ih poslati u. 1360 01:00:28,320 --> 01:00:31,060 Vi morali vratiti tajni dekodera prsten, tako da napokon mogu shvatiti 1361 01:00:31,060 --> 01:00:34,190 što je mapiranje između slova i brojki, 1362 01:00:34,190 --> 01:00:35,420 ili slova i slova. 1363 01:00:35,420 --> 01:00:39,790 Tako sam vam dati ovaj kratki isječak iz A Christmas Story motivirati pset 2 i 1364 01:00:39,790 --> 01:00:42,340 naša rasprava, u ovom trenutku, od polja. 1365 01:00:42,340 --> 01:00:43,773 Dakle, ovdje imamo Ralphie. 1366 01:00:43,773 --> 01:00:44,126 >> [Video reprodukciju] 1367 01:00:44,126 --> 01:00:47,470 -Bilo da je poznat svima i raznovrstan da Ralph Parker imenuje se 1368 01:00:47,470 --> 01:00:50,690 član Little Orphan Annie Secret Circle i ima pravo na sve 1369 01:00:50,690 --> 01:00:53,500 se počasti i beneficije događa s njima. 1370 01:00:53,500 --> 01:00:56,040 -Potpisan, Little Orphan Annie. 1371 01:00:56,040 --> 01:00:58,730 Supotpisali, Pierre Andre! 1372 01:00:58,730 --> 01:01:00,150 U tinte! 1373 01:01:00,150 --> 01:01:02,910 Priznanja i beneficije, već u dobi od devet. 1374 01:01:09,970 --> 01:01:10,730 Hajde, idemo s njim. 1375 01:01:10,730 --> 01:01:15,000 Ne trebam sav taj jazz o krijumčara i gusara. 1376 01:01:15,000 --> 01:01:17,624 -Slušajte sutra navečer za zaključni avanturu Crna 1377 01:01:17,624 --> 01:01:19,710 Gusarski brod. 1378 01:01:19,710 --> 01:01:23,380 Sada je vrijeme za Annie tajne poruke za vas članovi 1379 01:01:23,380 --> 01:01:25,670 od Secret Circle. 1380 01:01:25,670 --> 01:01:30,260 Zapamtite, djeca, samo članovi Annie Secret Circle može dekodirati 1381 01:01:30,260 --> 01:01:31,660 Annie tajna poruka. 1382 01:01:31,660 --> 01:01:36,230 Zapamtite, Annie je ovisno o vama. 1383 01:01:36,230 --> 01:01:38,720 Postavite svoje igle do B2. 1384 01:01:38,720 --> 01:01:41,040 Ovdje je poruka. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Ja sam u mom prvom tajnom sastanku. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 -Pierre je bio u velikoj glasa večeras. 1389 01:01:51,700 --> 01:01:54,890 Mogao bih reći da je večerašnji poruka je jako važno. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 To je poruka od Annie sama. 1392 01:01:58,590 --> 01:01:59,840 Zapamtite, nemojte reći nikome. 1393 01:02:04,570 --> 01:02:08,750 -90 Sekundi kasnije, ja sam u samo prostoriju u kući gdje je dječak od devet 1394 01:02:08,750 --> 01:02:12,980 mogao sjediti u privatnost i dekodirati. 1395 01:02:12,980 --> 01:02:17,130 Aha, B. sam otišao na drugu. 1396 01:02:17,130 --> 01:02:20,330 E. Prva riječ je biti. 1397 01:02:20,330 --> 01:02:22,670 S. je dolazio lakše sada. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 -Oh, hajde, Ralphie. 1400 01:02:26,510 --> 01:02:28,430 Moram ići. 1401 01:02:28,430 --> 01:02:30,350 -Ja ću biti dolje, ma. 1402 01:02:30,350 --> 01:02:33,720 -Ajme čudo. 1403 01:02:33,720 --> 01:02:38,270 -T, O. Budite sigurni da. 1404 01:02:38,270 --> 01:02:40,000 Budite sigurni da što? 1405 01:02:40,000 --> 01:02:42,105 Što je Little Orphan Annie pokušava reći? 1406 01:02:42,105 --> 01:02:43,095 Budite sigurni da što? 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy je dobio to ići. 1409 01:02:44,580 --> 01:02:45,570 Hoćete li izaći? 1410 01:02:45,570 --> 01:02:46,560 -U redu, ma. 1411 01:02:46,560 --> 01:02:48,540 Ja ću biti van. 1412 01:02:48,540 --> 01:02:50,580 -Ja sam sve bliže sada. 1413 01:02:50,580 --> 01:02:52,550 Napetost je bila strašna. 1414 01:02:52,550 --> 01:02:53,355 Što je to? 1415 01:02:53,355 --> 01:02:56,315 Sudbina planeta može držati u ravnoteži. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy je dobio to ići. 1418 01:02:59,165 --> 01:03:02,310 -Ja ću biti pravo iz, za plakanje naglas. 1419 01:03:02,310 --> 01:03:04,000 -Ajme, gotovo je. 1420 01:03:04,000 --> 01:03:05,180 Moji prsti letjeli. 1421 01:03:05,180 --> 01:03:07,150 Moj um je bio čelika zamka. 1422 01:03:07,150 --> 01:03:08,790 Svaka pora vibrira. 1423 01:03:08,790 --> 01:03:10,040 To je gotovo jasno. 1424 01:03:10,040 --> 01:03:13,400 Da, da, da, da. 1425 01:03:13,400 --> 01:03:18,960 -Budite sigurni da pijete svoj Ovaltine. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 Bijedan komercijalni? 1428 01:03:28,200 --> 01:03:29,640 Kurvin sin. 1429 01:03:29,640 --> 01:03:33,340 [END video reprodukciju] 1430 01:03:33,340 --> 01:03:36,040 >> David J. MALAN: Dakle, tu imamo kriptografiju. 1431 01:03:36,040 --> 01:03:39,670 Pa kako se u računalu možemo ići o primjeni ili 1432 01:03:39,670 --> 01:03:40,950 predstavlja stvari kao što je ovaj? 1433 01:03:40,950 --> 01:03:44,430 Pa, trebamo način izražavanja sebe malo više nego fleksibilno 1434 01:03:44,430 --> 01:03:46,420 naši varijable dosad su dozvoljeni. 1435 01:03:46,420 --> 01:03:47,370 Mi smo imali Ints. 1436 01:03:47,370 --> 01:03:48,380 Mi smo imali znakova. 1437 01:03:48,380 --> 01:03:50,790 Mi smo imali pliva i dubl i nekoliko drugih. 1438 01:03:50,790 --> 01:03:55,050 No, oni su pojedini komadi memorije koja stvarno ne dozvoljavaju nam da 1439 01:03:55,050 --> 01:03:58,010 izraziti stvari kao što su riječi i rečenica i fraza. 1440 01:03:58,010 --> 01:04:00,200 Doista, mi smo pozvani takve stvari konce. 1441 01:04:00,200 --> 01:04:03,650 Ali mi je obećao da je to zapravo samo pojednostavljenje u CS50 1442 01:04:03,650 --> 01:04:07,020 knjižnica da smo s namjerom da guliti natrag. 1443 01:04:07,020 --> 01:04:08,970 >> I tako krenimo učiniti da se ovdje. 1444 01:04:08,970 --> 01:04:11,130 Pusti me naprijed i otvoriti datoteku - 1445 01:04:11,130 --> 01:04:13,770 sve ove datoteke dostupni su kao i obično online - 1446 01:04:13,770 --> 01:04:19,120 zove array.c riješiti problem nevezano za gudače, ali da se boje 1447 01:04:19,120 --> 01:04:23,040 slika ovdje kako bismo mogli koristiti nešto zove niz. 1448 01:04:23,040 --> 01:04:25,530 Niz je tip podataka. 1449 01:04:25,530 --> 01:04:31,320 To je tip varijable, vrsta, koja ima više manjih vrsta podataka 1450 01:04:31,320 --> 01:04:34,150 unutar nje natrag na leđa natrag na leđa. 1451 01:04:34,150 --> 01:04:37,700 Tako na primjer, ako želimo napisati mali program koji vam daje svoj 1452 01:04:37,700 --> 01:04:42,110 kviz prosjek za naravno kao i 50 koji ima dva kvizove, mogao bi vrlo lako 1453 01:04:42,110 --> 01:04:45,170 napisati ovaj program - temelji ni na neke od prošlotjednog materijala - 1454 01:04:45,170 --> 01:04:47,770 pomoću GetInt i par varijabli. 1455 01:04:47,770 --> 01:04:51,920 Interesi quiz1, int quiz2, i to je prilično jednostavan. 1456 01:04:51,920 --> 01:04:55,930 To je možda 10, 20 linija koda, max, provesti program koji traži 1457 01:04:55,930 --> 01:05:01,170 Korisnik za dvije kviz rezultate i zatim izračunava njihov prosjek dodavanjem 1458 01:05:01,170 --> 01:05:03,850 zajedno, dijeljenjem po dva, a zatim ispisa rezultata. 1459 01:05:03,850 --> 01:05:06,380 Vjerojatno smo mogli učiniti da prilično lako sada nakon 1460 01:05:06,380 --> 01:05:07,510 neki broj minuta. 1461 01:05:07,510 --> 01:05:11,005 >> No, problem je u tome da pretpostavimo da je 50 imala tri ili četiri kvizova. 1462 01:05:11,005 --> 01:05:13,510 Pretpostavimo da ste htjeli koristiti isti program za klasu koja je imala 1463 01:05:13,510 --> 01:05:14,850 tjedno kvizova. 1464 01:05:14,850 --> 01:05:16,610 Razmislite o razredu koji je tjednik kvizovi. 1465 01:05:16,610 --> 01:05:20,610 Ako je kao 16 ili tako tjedana u semestru, sada imate 16 varijable - 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 Čim počnete vidjeti ovu redundantnost, to kopiranje i lijepljenje 1468 01:05:27,560 --> 01:05:31,390 koda, to bi trebalo početi da želite tamo bili bolji način. 1469 01:05:31,390 --> 01:05:33,930 I hvala bogu, jer matrica, tu je. 1470 01:05:33,930 --> 01:05:34,980 Tako ćemo to učiniti. 1471 01:05:34,980 --> 01:05:38,430 Prvo, neka mi predstaviti vrlo jednostavnu stvar da nismo ste koristili do sada, 1472 01:05:38,430 --> 01:05:40,140 ali vidjet ćete ga povremeno u kodu. 1473 01:05:40,140 --> 01:05:42,360 To je ono što se općenito zove konstanta. 1474 01:05:42,360 --> 01:05:45,790 Dakle, to je konstanta u smislu da ta vrijednost ne mijenja. 1475 01:05:45,790 --> 01:05:49,210 Ljudska konvencija pri izradi konstanta koristiti sav kapital 1476 01:05:49,210 --> 01:05:51,940 slova, samo tako da se stvarno ističe u kodu. 1477 01:05:51,940 --> 01:05:55,960 A posebna ključna riječ koju koriste u C # define. 1478 01:05:55,960 --> 01:06:00,250 Dakle, ako vam kažem # define, zatim razmak, a zatim riječ koju želite koristiti za 1479 01:06:00,250 --> 01:06:03,260 Konstanta je ime, a zatim vrijednost konstantna. 1480 01:06:03,260 --> 01:06:06,180 Dakle, obavijesti, ovo je drugačiji od dodjele nešto u varijablu. 1481 01:06:06,180 --> 01:06:07,020 Nema znaka jednakosti. 1482 01:06:07,020 --> 01:06:08,240 Nema zarez. 1483 01:06:08,240 --> 01:06:11,410 To je ono što je općenito poznat kao preprocesor direktive, ali više na 1484 01:06:11,410 --> 01:06:12,210 da drugi put. 1485 01:06:12,210 --> 01:06:18,540 >> Za sada, to stvara nepromjenjiva vrijednost zove KVIZOVI čija stvarna 1486 01:06:18,540 --> 01:06:19,940 brojčana vrijednost je 2. 1487 01:06:19,940 --> 01:06:24,020 Pa gdje ste vidjeli kvizovi, kvizovi, kvizovi tijekom ove datoteke, to je 1488 01:06:24,020 --> 01:06:25,410 samo broj 2. 1489 01:06:25,410 --> 01:06:28,100 Sada, ako gledam glavni sada, hajdemo vidjeti kako se to radi. 1490 01:06:28,100 --> 01:06:29,500 Isprva, to izgleda malo zagonetan. 1491 01:06:29,500 --> 01:06:31,340 Ali to je sve stvari iz tjedna jedan. 1492 01:06:31,340 --> 01:06:32,710 Pitajte korisnika za ocjenama. 1493 01:06:32,710 --> 01:06:33,630 Kako ćemo to učiniti? 1494 01:06:33,630 --> 01:06:35,470 Pa, u skladu 22 - 1495 01:06:35,470 --> 01:06:37,210 ovo je stvarno sočan dio - 1496 01:06:37,210 --> 01:06:40,960 Ja proglasiti plovak, ali ne samo jedan float. 1497 01:06:40,960 --> 01:06:44,620 Ja sam izjavljuje, nego niz pomičnim zarezom vrijednosti. 1498 01:06:44,620 --> 01:06:49,100 To varijabla će biti pozvani razreda, kao podrazumijeva ovdje. 1499 01:06:49,100 --> 01:06:53,080 Ali samo dio nove sintakse onda su ti četvornih nosači, činjenica 1500 01:06:53,080 --> 01:06:59,350 da sam rekao plutaju razreda, a zatim otvorite zagradu i onda broj. 1501 01:06:59,350 --> 01:07:02,460 Obavijest, ako je to konstanta, to je baš kao što smo to učinili. 1502 01:07:02,460 --> 01:07:06,890 To znači hej računalo, dajte mi dvije splavi, i ajmo kolektivno nazivaju 1503 01:07:06,890 --> 01:07:08,220 ih razreda. 1504 01:07:08,220 --> 01:07:11,920 To je u suprotnosti s puno više zamoran proces kao što je ovaj. 1505 01:07:11,920 --> 01:07:15,850 Float Grade1, plutaju grade2, i tako dalje. 1506 01:07:15,850 --> 01:07:20,010 Dakle, niz nam omogućuje da provedbu tu ideju, ali mnogo manje messily, u 1507 01:07:20,010 --> 01:07:24,630 na takav način da možemo napisati jedan redak koda umjesto, recimo, 16 za 16 1508 01:07:24,630 --> 01:07:25,740 tjedan semestar. 1509 01:07:25,740 --> 01:07:29,950 Dakle, ja ne želim da teško kod dvije, jer ako mislite o tome sada 1510 01:07:29,950 --> 01:07:34,160 logično - Pretpostavljam da iduće godine CS50 promjene 3 kvizovi umjesto. 1511 01:07:34,160 --> 01:07:35,510 I ja sam imao broj dva ovdje. 1512 01:07:35,510 --> 01:07:36,600 Imao sam broj dva ovdje. 1513 01:07:36,600 --> 01:07:37,580 Imao sam broj dva ovdje. 1514 01:07:37,580 --> 01:07:38,560 Imao sam broj dva ovdje. 1515 01:07:38,560 --> 01:07:43,180 To postaje vrlo zamorno i vrlo lako zeznuti i da slučajno promijeniti 1516 01:07:43,180 --> 01:07:47,690 jedna vrijednost 3 i propustiti neke druge vrijednosti dva. 1517 01:07:47,690 --> 01:07:52,460 Dakle, ja ću umjesto apstraktne to daleko i koristiti ovu konstantu koja, kao i njegova 1518 01:07:52,460 --> 01:07:54,120 ime sugerira, nikada ne mijenja. 1519 01:07:54,120 --> 01:07:57,710 A sada, bez obzira na to da li imamo različite kvizove ove godine ili sljedeće, ja 1520 01:07:57,710 --> 01:08:01,210 samo da ga promijeniti na jednom mjestu, ovdje na vrhu. 1521 01:08:01,210 --> 01:08:02,720 >> Dakle, to je sve što je konstanta. 1522 01:08:02,720 --> 01:08:08,680 U međuvremenu, novi konceptualni značajka je da je niz. 1523 01:08:08,680 --> 01:08:14,660 Dakle uglatih zagrada mi dati toliko pliva i mi omogućuje kolektivno 1524 01:08:14,660 --> 01:08:16,630 zovu ih razreda ovdje. 1525 01:08:16,630 --> 01:08:17,990 Dakle, sada ćemo vidjeti što ću učiniti. 1526 01:08:17,990 --> 01:08:20,359 Ovdje u skladu 24 je početak za petlju. 1527 01:08:20,359 --> 01:08:22,260 Ovo je stvarno ništa fancy. 1528 01:08:22,260 --> 01:08:25,060 To je samo pomoću kvizova umjesto tvrdog kodiranom broju. 1529 01:08:25,060 --> 01:08:27,790 Ali nema ništa intelektualno drukčiji postoji od prošlog tjedna. 1530 01:08:27,790 --> 01:08:29,040 Ovo je samo printf. 1531 01:08:29,040 --> 01:08:35,490 Dakle printf ("kviz broj% d od% d"), jer samo želim isprintati daj mi kviz 1532 01:08:35,490 --> 01:08:38,050 broj jedan od dva, a zatim dva dva. 1533 01:08:38,050 --> 01:08:39,850 Dakle, ovo je čisto estetski stvar. 1534 01:08:39,850 --> 01:08:42,500 No, najzanimljiviji dio je sada u redu 27. 1535 01:08:42,500 --> 01:08:48,310 Kako bi se popunila u jednoj od dviju rezerviranih s pomičnim zarezom 1536 01:08:48,310 --> 01:08:51,029 vrijednost, što opet koristiti uglate zagrade. 1537 01:08:51,029 --> 01:08:55,620 U ovom slučaju, ja sam pomoću jer to za petlje je započeo s ja izjednačavanje 1538 01:08:55,620 --> 01:08:57,560 ono vrijednost, očito? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Dakle, na prvoj iteraciji ove petlje, to je kao da ja 1541 01:09:01,350 --> 01:09:02,689 ovo napisao u kodu. 1542 01:09:02,689 --> 01:09:05,580 No, na drugoj iteraciji ove petlje, to je kao da ja 1543 01:09:05,580 --> 01:09:07,750 ovo napisao u mom kodu. 1544 01:09:07,750 --> 01:09:10,750 No, činjenica da sam koristeći varijablu je savršen, jer, kao što sam naziv 1545 01:09:10,750 --> 01:09:14,300 sugerira, to je različite svoju vrijednost na svakoj iteraciji. 1546 01:09:14,300 --> 01:09:17,370 Dakle, ja sam za punjenje tom obilju jedno mjesto na vrijeme. 1547 01:09:17,370 --> 01:09:18,910 Što to polje izgleda? 1548 01:09:18,910 --> 01:09:21,430 Pa, razlog zbog kojeg sam nacrtao ovo super jednostavan pravokutnik na zaslonu ovdje 1549 01:09:21,430 --> 01:09:23,350 prije nego što je iz tog razloga. 1550 01:09:23,350 --> 01:09:27,279 Niz je samo komad memorije slijedi drugi komad memorije, 1551 01:09:27,279 --> 01:09:30,109 slijedi drugi komad memorije, i tako dalje. 1552 01:09:30,109 --> 01:09:35,260 Dakle, ako moj polje je veličine 2, u ovom slučaju ovdje, sve bih raditi po 1553 01:09:35,260 --> 01:09:37,590 upisivati ​​u mojim kviz rezultate, sviđa mi se ovdje. 1554 01:09:37,590 --> 01:09:39,430 Dobio sam 100 na ovom jednom. 1555 01:09:39,430 --> 01:09:42,020 A onda sam dobio 99 na ovom jednom. 1556 01:09:42,020 --> 01:09:46,040 Onda ova memorija možda čak i ne mogu koristiti jer sam samo pitao 1557 01:09:46,040 --> 01:09:48,689 računalo za niz veličine dva. 1558 01:09:48,689 --> 01:09:50,180 Ti kvadrati su još uvijek tamo. 1559 01:09:50,180 --> 01:09:50,340 Točno? 1560 01:09:50,340 --> 01:09:52,500 Vi još uvijek imate dva gigabajta RAM-a, čak i ako ste samo 1561 01:09:52,500 --> 01:09:53,979 molba za dva kola. 1562 01:09:53,979 --> 01:09:58,710 Dakle, ideja iza polja je da računalo traje samo komad memorije 1563 01:09:58,710 --> 01:10:03,230 a zatim razdijeliti manjih komada natrag na leđa natrag na leđa. 1564 01:10:03,230 --> 01:10:04,740 I tako to je sve niz je. 1565 01:10:04,740 --> 01:10:09,080 To je granični komad memorije, unutar kojih možete staviti stvari. 1566 01:10:09,080 --> 01:10:12,400 >> Sada se to dogodi onda napraviti samo neki dosadan aritmetiku. 1567 01:10:12,400 --> 01:10:16,170 Ako sam dođite ovdje, ovo je mjesto gdje sam tada ponoviti preko polja. 1568 01:10:16,170 --> 01:10:19,410 Ja se s zbroja svih vrijednosti u polju. 1569 01:10:19,410 --> 01:10:22,390 I onda sam koristiti okrugli funkciju ovdje zapravo 1570 01:10:22,390 --> 01:10:23,940 Ukratko podijeljena kvizovima. 1571 01:10:23,940 --> 01:10:27,450 No, dopustite mi mahati moje ruke na to kao svojevrsno dovoljno aritmetike za sada. 1572 01:10:27,450 --> 01:10:30,010 No, sve što radi za mene konačnici je računanje prosjeka. 1573 01:10:30,010 --> 01:10:33,640 Tako je prvi kviz plus drugi kviz, podijeljena dva, a zatim ispis 1574 01:10:33,640 --> 01:10:34,700 to je kao int. 1575 01:10:34,700 --> 01:10:39,030 >> Ali neka je sada prijelaz na drugi primjer zove string1, 1576 01:10:39,030 --> 01:10:42,370 koji oslikava sličnu sliku, ali pomoću žice. 1577 01:10:42,370 --> 01:10:45,550 Pusti me naprijed i pojednostaviti to samo na trenutak. 1578 01:10:45,550 --> 01:10:48,340 I oprosti uvlačenje za sada. 1579 01:10:48,340 --> 01:10:52,280 Obavijest u skladu 19. ovoga primjer, ja dobiti niz od korisnika. 1580 01:10:52,280 --> 01:10:55,780 No, ono što sam primijetio pored radim u redovima 22 naprijed. 1581 01:10:55,780 --> 01:11:00,260 Ja sam zapravo Ponavljanje iz i do - i to je novi trik - 1582 01:11:00,260 --> 01:11:02,730 strlen, dužina niza. 1583 01:11:02,730 --> 01:11:07,010 To je funkcija koja dolazi s C da ako prođe ga niz, što govori 1584 01:11:07,010 --> 01:11:08,950 vi koliko su likovi u tom nizu. 1585 01:11:08,950 --> 01:11:09,440 To je sve. 1586 01:11:09,440 --> 01:11:12,520 Činjenica da je strlen umjesto niza duljine je samo zato što je 1587 01:11:12,520 --> 01:11:13,040 više sažet. 1588 01:11:13,040 --> 01:11:17,100 Prije 30 godina, ljudi volio pisati stvari kao jezgrovito moguće. 1589 01:11:17,100 --> 01:11:19,080 Tako smo zadržao tu konvenciju ovdje. 1590 01:11:19,080 --> 01:11:21,730 i + + samo znači da sam povećavati u svakoj iteraciji. 1591 01:11:21,730 --> 01:11:24,310 I sada primijetiti, što je jako zanimljivo. 1592 01:11:24,310 --> 01:11:28,730 Dakle, u skladu 24, kažem računalo, daj mi znak, osam 1593 01:11:28,730 --> 01:11:30,770 bita, i to nazvati c. 1594 01:11:30,770 --> 01:11:35,370 No, ono što je ovaj na desnoj strani govori? 1595 01:11:35,370 --> 01:11:38,150 U engleskom jeziku, što znači da predstavljaju? 1596 01:11:38,150 --> 01:11:40,070 [Nečujan] 1597 01:11:40,070 --> 01:11:40,490 David J. MALAN: Točno. 1598 01:11:40,490 --> 01:11:42,390 Daj mi prvi znak u nizu. 1599 01:11:42,390 --> 01:11:45,400 Ili općenito, daj mi i-ti znak u polju. 1600 01:11:45,400 --> 01:11:48,230 I shvatiti da je važno da sada kao računalnih znanstvenika, mi smo zapravo 1601 01:11:48,230 --> 01:11:49,330 računajući od 0. 1602 01:11:49,330 --> 01:11:51,290 Vi nemate diskrecije sada početi raditi ovo. 1603 01:11:51,290 --> 01:11:54,580 Sada imate da se ponašaju u skladu s računalom očekivanjima i 1604 01:11:54,580 --> 01:11:58,010 brojati od nule, jer [0] će biti prvi 1605 01:11:58,010 --> 01:11:59,670 lik u nizu. 1606 01:11:59,670 --> 01:12:01,320 [1] će biti drugi. 1607 01:12:01,320 --> 01:12:03,610 [2] će biti treći, i tako dalje. 1608 01:12:03,610 --> 01:12:08,840 Dakle, ovaj program, ako sam ga sastaviti - to je, opet, string1. 1609 01:12:08,840 --> 01:12:11,040 >> Tako bi string1. 1610 01:12:11,040 --> 01:12:16,730 I sada sam pokrenuti string1 u mom prozor terminala. 1611 01:12:16,730 --> 01:12:19,180 To je čekao ulaz, tako da ću upisati, recimo, Davida. 1612 01:12:19,180 --> 01:12:20,080 Upišite. 1613 01:12:20,080 --> 01:12:23,350 A sada ga ispisuje David svi na različitim linijama, jer 1614 01:12:23,350 --> 01:12:24,430 primijetiti ono što radim. 1615 01:12:24,430 --> 01:12:27,510 Ja sam ispis jednog znaka na vrijeme. 1616 01:12:27,510 --> 01:12:29,100 Sada nećemo ići u detalje o tome danas. 1617 01:12:29,100 --> 01:12:31,610 Ali Izbrisao sam trenutak prije ove provjere ovdje. 1618 01:12:31,610 --> 01:12:36,310 Ispada da ako korisnik ispravno, suparnički, ili samo 1619 01:12:36,310 --> 01:12:41,780 zbunjen, što zapravo može uspjeti dati niz neke dužine. 1620 01:12:41,780 --> 01:12:43,640 Ako pogodak pogrešnu tipku na tipkovnici, što može dati 1621 01:12:43,640 --> 01:12:44,390 ne string uopće. 1622 01:12:44,390 --> 01:12:47,790 Ili ako ste zlonamjerni, možete pokušati zalijepiti u gigabajt vrijedi od 1623 01:12:47,790 --> 01:12:49,380 esej ispuniti ovaj niz. 1624 01:12:49,380 --> 01:12:52,060 A ako računalo ponestane memorije, ispada da idemo 1625 01:12:52,060 --> 01:12:54,310 da se vratim ovu posebnu vrijednost zove null. 1626 01:12:54,310 --> 01:12:57,550 Dakle, za sada, samo znam da je ovo posebna vrijednost zove nulta da 1627 01:12:57,550 --> 01:13:01,000 će nam omogućiti da provjerite kada smo iz memorije, između ostalog. 1628 01:13:01,000 --> 01:13:07,330 >> Ali, ako sam otvoriti sada string2, primijetit jedan razliku ovdje. 1629 01:13:07,330 --> 01:13:09,760 Obavijest jedna razlika ovdje s string2. 1630 01:13:09,760 --> 01:13:13,260 S string2, to za petlje je malo drugačija. 1631 01:13:13,260 --> 01:13:16,350 Dopustite mi izbrisati ugašenih, tako da možemo govoriti o onima drugi put. 1632 01:13:16,350 --> 01:13:18,460 No, ono što je drugačije u for petlji ovaj put? 1633 01:13:21,580 --> 01:13:23,160 I mogu se vratiti na prethodni primjer. 1634 01:13:23,160 --> 01:13:24,800 Tako da je verzija dva. 1635 01:13:24,800 --> 01:13:27,020 Ova je verzija jednog. 1636 01:13:27,020 --> 01:13:31,935 Jedan, dva, jedan dva. 1637 01:13:35,030 --> 01:13:38,240 Dakle, strlen poziv je gdje? 1638 01:13:38,240 --> 01:13:40,420 To je u prvom dijelu za petlju. 1639 01:13:40,420 --> 01:13:43,060 Bilo misli o tome zašto radim ovo? 1640 01:13:43,060 --> 01:13:43,690 Da. 1641 01:13:43,690 --> 01:13:46,010 [Nečujan] 1642 01:13:46,010 --> 01:13:47,630 David J. MALAN: Dakle, mi ne poziva funkcija svaki put. 1643 01:13:47,630 --> 01:13:48,040 Točno. 1644 01:13:48,040 --> 01:13:50,350 Podsjetimo iz petlje za koje su oni super jednostavna nakon što vrsta 1645 01:13:50,350 --> 01:13:52,180 Razumijem da je to inicijalizacija, 1646 01:13:52,180 --> 01:13:53,330 stanje, a ažuriranje. 1647 01:13:53,330 --> 01:13:55,430 Problem je u tome što se događa stanje na svaki 1648 01:13:55,430 --> 01:13:56,600 iteracija petlje. 1649 01:13:56,600 --> 01:13:59,930 I tako u ovom primjeru ovdje, ono što je loše o činjenici 1650 01:13:59,930 --> 01:14:03,500 da je ovo moje stanje? 1651 01:14:03,500 --> 01:14:05,920 Vi zovete strlen opet i opet i opet. 1652 01:14:05,920 --> 01:14:08,990 Ali jednom sam upisali u DAVID, duljina tog niza je pet. 1653 01:14:08,990 --> 01:14:11,560 I to se neće promijeniti na svakom iteracija petlje jer 1654 01:14:11,560 --> 01:14:15,560 niz je još D-A-V-I-D. Dakle, ovo je naznaka na ono što će postati 1655 01:14:15,560 --> 01:14:19,650 sve važnija ideja poznat kao dizajna odluke, gdje je - samo ne 1656 01:14:19,650 --> 01:14:21,640 napraviti računalo učiniti nepotreban posao. 1657 01:14:21,640 --> 01:14:25,630 >> Sada samo kao doušnik pregled pset 2, pset 2 u standardnom izdanju je 1658 01:14:25,630 --> 01:14:28,850 će vam izazov da se zapravo provesti neki broj šifre, neke 1659 01:14:28,850 --> 01:14:32,650 broj algoritme šifriranja, tako da možete i šifriranje i dešifriranje 1660 01:14:32,650 --> 01:14:35,530 tajne poruke, baš kao i jedan Ralphie postoji dekodirati. 1661 01:14:35,530 --> 01:14:38,720 U hakerske izdanju pset 2, idemo ići malo dalje. 1662 01:14:38,720 --> 01:14:42,010 Mi ćemo predati vam datoteku iz stvarnog računalnog sustava koji sadrži 1663 01:14:42,010 --> 01:14:45,690 cijela hrpa korisničkih imena i lozinki stvarnih šifrirane i izazov 1664 01:14:45,690 --> 01:14:49,110 za haker izdanje će biti ispucati one lozinke i slici 1665 01:14:49,110 --> 01:14:53,060 od čega kriptografske ili ono što je tajna koristi da se zapravo 1666 01:14:53,060 --> 01:14:55,080 generirati one lozinke. 1667 01:14:55,080 --> 01:14:58,360 A mi ćemo to učiniti pomoću novu značajku ovdje o C da ću dati 1668 01:14:58,360 --> 01:15:02,200 samo demo, poznat kao naredbenog retka argumente. 1669 01:15:02,200 --> 01:15:05,930 >> Tako ispada, kao što neki od vas možda vidio u dijelu ili u udžbenicima, 1670 01:15:05,930 --> 01:15:09,850 Glavna ne mora uvijek biti nevažeće u zagradama. 1671 01:15:09,850 --> 01:15:14,060 Ispada da glavna također može pisati ovako, s dva argumenta, 1672 01:15:14,060 --> 01:15:19,690 argc i argv, gdje argc je broj riječi koje upišete nakon 1673 01:15:19,690 --> 01:15:21,940 programski ime na naredbenog retka. 1674 01:15:21,940 --> 01:15:24,550 I argv je stvarni riječi. 1675 01:15:24,550 --> 01:15:29,470 I kao uglatim zagradama tamo sugeriraju, argv je očito polje. 1676 01:15:29,470 --> 01:15:33,720 To će biti niz nakon niza nakon niza u sjećanju. 1677 01:15:33,720 --> 01:15:36,170 Dakle, ono što ćemo biti u mogućnosti to učiniti, počevši s pset 2, je 1678 01:15:36,170 --> 01:15:37,310 nešto kao što je ovaj. 1679 01:15:37,310 --> 01:15:42,450 Ako sam napraviti argv1, koji je primjer vratit ćemo se u ponedjeljak, i pokrenuti 1680 01:15:42,450 --> 01:15:45,180 to, primijetiti da to ne čini ništa učiniti još. 1681 01:15:45,180 --> 01:15:47,050 To samo ispisuje svoje ime. 1682 01:15:47,050 --> 01:15:53,220 Ali ako kažem zbogom klase, obavijest da je ovaj program očito ponovi 1683 01:15:53,220 --> 01:15:57,030 tijekom svake od riječi koje su upisali u redak. 1684 01:15:57,030 --> 01:16:02,050 A način na koji ćemo dobiti pristup riječi koje korisnik ima 1685 01:16:02,050 --> 01:16:06,780 upisali na brz je promjenom glavni, počevši od ovog vikenda, od int 1686 01:16:06,780 --> 01:16:10,710 glavni (void) na int main (argc, argv). 1687 01:16:10,710 --> 01:16:13,700 I tako će biti rođen argumente naredbenog retka. 1688 01:16:13,700 --> 01:16:17,210 I jednom kada se stvarno sofisticiran na to, vi ćete biti u mogućnosti pisati 1689 01:16:17,210 --> 01:16:21,370 stvarno trippy programi, kao što je ovaj jedan ovdje, koja ide iznad i izvan 1690 01:16:21,370 --> 01:16:25,520 neke od funkcionalnosti koje smo učinili do sada, ali sve vrlo moćan. 1691 01:16:25,520 --> 01:16:27,330 >> Dakle, ostavit ćemo to s tim na zaslonu. 1692 01:16:27,330 --> 01:16:29,160 A mi ćemo vas vidjeti u ponedjeljak.