1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [2 savaitė, Tęsinys] 2 00:00:02,270 --> 00:00:04,220 [David J. Malan, Harvardo universitetas] 3 00:00:04,220 --> 00:00:06,880 [Tai CS50. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 Gerai. Tai CS50, o tai yra 2 savaitės pabaigos. 5 00:00:10,990 --> 00:00:14,410 Jei tikitės, kad būtų alkanas, rytoj maždaug šiuo metu, 6 00:00:14,410 --> 00:00:18,620 žinau, kad mes ketiname surengti mažoje grupelėje rytoj, ketvirtadienį, 13:15. 7 00:00:18,620 --> 00:00:21,360 Yra toks URL čia, jei norite RSVP. 8 00:00:21,360 --> 00:00:26,740 Erdvė yra ribota, todėl prašome atleisti, jei forma yra užpildyta iki to laiko, jums užpildyti formą. 9 00:00:26,740 --> 00:00:29,300 Eilinė URL, nors, kad gali būti įdomūs. 10 00:00:29,300 --> 00:00:32,369 Tik apie mėnesį laiko, žinoma, bus prieinama 11 00:00:32,369 --> 00:00:36,890 plačiau per EDX, internete, per kurią žmonės galės sekti kartu, 12 00:00:36,890 --> 00:00:39,380 gana aktyviai dalyvauti kurso, iš tikrųjų. 13 00:00:39,380 --> 00:00:42,270 Jie bus naudojant CS50 Appliance ir CS50 Aptarti 14 00:00:42,270 --> 00:00:45,490 ir labiausiai įvairių programinės įrangos įrankius, kad mes jau buvo naudojant šį pusmetį. 15 00:00:45,490 --> 00:00:48,710 Ir viena iš iniciatyvų, mes norėtume priimti kaip eksperimentą šiemet 16 00:00:48,710 --> 00:00:51,930 yra pamatyti, tik kaip daug turinio, mes galime išversti 17 00:00:51,930 --> 00:00:53,960 į kitas sakytinių ir rašytinių kalbų. 18 00:00:53,960 --> 00:00:57,500 Taigi, jei jūs galite turėti susidomėjimą dalyvauti šiame projekte 19 00:00:57,500 --> 00:01:02,270 , pagal kurią mes suteiksime anglišką išrašai ir subtitrus Žinoma, paskaitų 20 00:01:02,270 --> 00:01:05,450 ir šortai ir seminarai ir specialieji profiliai ir panašūs dirbiniai, 21 00:01:05,450 --> 00:01:08,200 jei kalbėti laisvai arba laisvai rašyti nors kitą kalbą, 22 00:01:08,200 --> 00:01:12,290 mes norėtume užsiimti jums šio projekto, kuriuo į vieną ar daugiau vaizdo įrašus, 23 00:01:12,290 --> 00:01:15,200 paversti juos kalba, gerai žino. 24 00:01:15,200 --> 00:01:18,700 >> Norėdami suteikti jums sąsajos jausmą, yra tai interneto vartotojo sąsaja 25 00:01:18,700 --> 00:01:22,090 kad mes naudoti, kad bus sukurti iš esmės kaip tai UI. 26 00:01:22,090 --> 00:01:24,290 Tai buvo man mokyti kai Helovinas prieš 27 00:01:24,290 --> 00:01:27,390 ir dešinėje pusėje yra juodos, šalia šių laiko, 28 00:01:27,390 --> 00:01:31,210 pamatysite įvairių dalykų, kad atėjo iš mano burnos tą pačią dieną, 29 00:01:31,210 --> 00:01:34,850 ir tada po juo bus galima išversti į kurią nors kitą kalbą 30 00:01:34,850 --> 00:01:38,690 , ką žemėlapių, šiuo atveju, anglų ir, tarkim, Ispanija. 31 00:01:38,690 --> 00:01:40,440 Taigi, tai tikrai labai patogus įrankis. 32 00:01:40,440 --> 00:01:43,370 Galite atsukti atgal ir pirmyn labai lengvai naudodami sparčiuosius klaviatūros klavišus. 33 00:01:43,370 --> 00:01:47,490 Taigi, jei norėtumėte dalyvauti šiame eksperimente ir turi matyti ir skaityti jūsų žodžiai 34 00:01:47,490 --> 00:01:51,850 potencialiai tūkstančiai žmonių ten, prašome nedvejodami dalyvauti. 35 00:01:51,850 --> 00:01:54,350 Vienas žodis apie nuo pirmadienio kačiukas. 36 00:01:54,350 --> 00:02:00,350 Kitaip mes išsiuntėme pernelyg baisu pranešimą, suprantate, kad, kaip rodo darbo valandos: 37 00:02:00,350 --> 00:02:03,300 fasoniniai rodo, kurso dizainas yra labai 38 00:02:03,300 --> 00:02:07,360 , studentams bendradarbiauti ir kalbėti dirbti per probleminių rinkinių 39 00:02:07,360 --> 00:02:11,260 ir problemos kartu, ir tikrai pakanka tiesiog nužengia į 40 00:02:11,260 --> 00:02:16,010 dar kartą, darbas, jūs galų gale pateikti turėtų būti jūsų pačių. 41 00:02:16,010 --> 00:02:18,860 Ir taip gana garbingai, darbo valandomis, tai visiškai normalu, 42 00:02:18,860 --> 00:02:22,240 tai visiškai galima tikėtis net kalbasi su tikru Draugas šalia tavęs. 43 00:02:22,240 --> 00:02:24,370 >> Jei jis ar ji kovoja su tam tikru klausimu, ir jūs kaip, 44 00:02:24,370 --> 00:02:27,940 "O, gerai, leiskite man duoti jums, kad aš parašiau tam tikros eilutės kodo žvilgsnis", tai gerai, 45 00:02:27,940 --> 00:02:31,250 tai atsitiks, ir tai yra labai palanki, manau, mokymosi procese. 46 00:02:31,250 --> 00:02:36,750 Jei linija tampa kirto, kai galva yra tarsi pakreipus čia pernelyg daug sekundes 47 00:02:36,750 --> 00:02:41,160 minučių, kad tikrai ką tik buvo atblokavimo galimybė jūsų draugas, 48 00:02:41,160 --> 00:02:44,160 ir, žinoma, kai viskas pasidaro keičiamasi elektroniniu paštu ir "Dropbox" ir pan. 49 00:02:44,160 --> 00:02:45,640 ten taip pat yra linija. 50 00:02:45,640 --> 00:02:48,620 Taigi visomis priemonėmis jaustis patogiai ir jaučiasi skatinami kalbėtis su draugais 51 00:02:48,620 --> 00:02:52,810 ir klasiokų apie psets ir vis tik suvokti, kad tai, ką jūs galiausiai pateikti 52 00:02:52,810 --> 00:02:57,340 tikrai turėtų būti savo vietas, o ne kažkas kitas produktas. 53 00:02:57,340 --> 00:03:00,490 Ir taip vienas iš konkrečios srities problemų pset2 54 00:03:00,490 --> 00:03:04,740 kuris ateis pavėluotai rytoj vakare pasinerti į Kriptografija pasaulyje, 55 00:03:04,740 --> 00:03:08,970 kuris yra šifravimo arba kodavimo informaciją menas, 56 00:03:08,970 --> 00:03:12,600 o tai galiausiai prie saugumo pasaulyje. 57 00:03:12,600 --> 00:03:16,560 Dabar daugeliui iš mūsų saugumas yra gana žemiškas mechanizmų. 58 00:03:16,560 --> 00:03:19,050 Visi turime vardus ir slaptažodžius, 59 00:03:19,050 --> 00:03:23,450 ir visi mes turime labai blogų vardus ir slaptažodžius, greičiausiai. 60 00:03:23,450 --> 00:03:28,240 >> Jei jūsų slaptažodis yra keletą svetainių, kad tikriausiai ne pati geriausia idėja, 61 00:03:28,240 --> 00:03:30,070 kaip mes aptarsime link semestro pabaigoje. 62 00:03:30,070 --> 00:03:34,720 Jei jūsų slaptažodis parašytas ant lipni dėmesį - ne juokai - dėl savo monitoriaus, 63 00:03:34,720 --> 00:03:38,350 tai irgi nebūtinai geriausias dizainas, bet gana dažnas reiškinys. 64 00:03:38,350 --> 00:03:42,470 Ir jei nesate naudojant kriptografiją užšifruoti savo slaptažodžius, 65 00:03:42,470 --> 00:03:44,210 jie yra ypač pažeidžiami. 66 00:03:44,210 --> 00:03:47,270 Taigi, jei jūs manote, kad esate yra super protingas, paslėptą Word dokumentą 67 00:03:47,270 --> 00:03:49,910 kažkur kietajame diske, kad visus savo slaptažodžius 68 00:03:49,910 --> 00:03:53,670 bet tai aplanke, kad niekas ketina ieškoti, tai irgi nėra labai saugus mechanizmas. 69 00:03:53,670 --> 00:03:56,990 Ir kas pset2 bus pristatyti tai kriptografija menas 70 00:03:56,990 --> 00:04:02,010 ir kodavimo informaciją, kad dalykų, pavyzdžiui, slaptažodžius yra saugesnis. 71 00:04:02,010 --> 00:04:05,790 Kontekstas čia yra tai, kad pavojingomis duomenų 72 00:04:05,790 --> 00:04:07,930 ateina galimybę užšifruoti ją ir peštynės. 73 00:04:07,930 --> 00:04:11,470 Ir todėl tai, pavyzdžiui, yra šifruotą pranešimo pavyzdys. 74 00:04:11,470 --> 00:04:14,700 Tai iš tikrųjų kažką sako, anglų kalba, tačiau tai aiškiai nėra visiškai akivaizdus. 75 00:04:14,700 --> 00:04:18,279 Ir mes ateiti Full Circle šiandien erzinti, išskyrus tai, kas čia yra šis slaptas pranešimas. 76 00:04:18,279 --> 00:04:23,490 Bet realiame pasaulyje kompiuterių dalykų nereikia net pažvelgti, kaip jie gali būti anglų frazių. 77 00:04:23,490 --> 00:04:28,430 Pavyzdžiui, tai, ką galite rasti ant standartinės Linux ar Mac ar UNIX kompiuterio 78 00:04:28,430 --> 00:04:32,070 faile, kuris buvo kadaise "slaptažodžio failas. 79 00:04:32,070 --> 00:04:34,200 >> Šiandien jis buvo perkeltas į kitas vietas. 80 00:04:34,200 --> 00:04:39,210 Bet, jei jums atrodo teisinga vietoje sistemos, pamatysite ne tik savo vardą 81 00:04:39,210 --> 00:04:43,400 arba, kad kitais žmonėmis sistemos, bet jūs pamatysite slaptažodžio šifruotą versiją. 82 00:04:43,400 --> 00:04:47,980 Iš tiesų, žodis kripta yra rodo, kad medžiaga yra užšifruotas, 83 00:04:47,980 --> 00:04:52,680 ir šis iš pažiūros atsitiktinių raidžių ir simbolių ir skaičių serija ir tt 84 00:04:52,680 --> 00:04:56,480 galima iššifruoti tik paprastai žinant kažkokią paslaptį - 85 00:04:56,480 --> 00:04:58,840 slaptas žodis, slapta 86 00:04:58,840 --> 00:05:03,160 ir tt Iš tiesų, kriptografija galiausiai suvesta menas pasitikėjimo tam tikros rūšies 87 00:05:03,160 --> 00:05:05,650 ir žinant kažką, kad kažkas nėra. 88 00:05:05,650 --> 00:05:10,090 Taigi, mes ištirti tai šiek tiek išsamiau šiandien ir į pset ateiti. 89 00:05:10,090 --> 00:05:12,200 Ir dabar atitikimo / neatitikimo žodis. 90 00:05:12,200 --> 00:05:15,360 Ypač, kaip kai kurie iš jūsų nėrė į pset1, Prietaisai, 91 00:05:15,360 --> 00:05:19,080 ir labai naujas pasaulis save, suvokti, kad nusivylimas ir sumišimas 92 00:05:19,080 --> 00:05:21,700 ir tik techniniai sunkumai yra gana galima tikėtis, 93 00:05:21,700 --> 00:05:24,180 ypač su pirmuoju pset, kur yra tik tiek daug naujo, 94 00:05:24,180 --> 00:05:27,730 tik susipažinti su ls ir CD, ir visi šitie Slaptas komandos 95 00:05:27,730 --> 00:05:33,050 ir nauja aplinka, ir kad atskirtas nuo faktinės medžiagos ir programavimo pati. 96 00:05:33,050 --> 00:05:36,940 Taip suprasti, taip pat, kad yra žinoma, biuro darbo valandomis, kad egzistuoja paramos struktūros. 97 00:05:36,940 --> 00:05:38,880 >> Sekcijos pradėti šį ateinantį sekmadienį. 98 00:05:38,880 --> 00:05:42,960 Bet svarbiausia, jei esate jausmas, tik tai, kad tai ne tas pasaulis, 99 00:05:42,960 --> 00:05:44,710 suprasti, kad ji tikrai tiesiog reikia laiko. 100 00:05:44,710 --> 00:05:48,600 Ir jeigu ne tai už šią galimybę, prieš keletą metų man imtis klasės verčių atitikimo / neatitikimo, 101 00:05:48,600 --> 00:05:50,990 sąžiningai, aš niekada net nustatyti snukio klasėje. 102 00:05:50,990 --> 00:05:53,690 Ir jūs galite pakeisti iki, tarkim, penktas nuo pirmadienio kurso, 103 00:05:53,690 --> 00:05:58,280 todėl, jei esate ant krašto, suprantame, kad, o ne galva į kai kituose vandenyse apskritai, 104 00:05:58,280 --> 00:06:01,260 , be jokios abejonės, kad tiesiog pakeisti verčių atitikimo / neatitikimo. 105 00:06:01,260 --> 00:06:04,570 Vėlgi, tikrai ši kultūra čia Harvardo atsižvelgiant dalykų atitikimo / neatitikimo 106 00:06:04,570 --> 00:06:08,670 nes visi tikrai nori pasiekti ar overachieve 107 00:06:08,670 --> 00:06:11,130 bet atvirai kalbant, tai yra puikus būdas bando kažką iš 108 00:06:11,130 --> 00:06:16,720 kad gali būti susipažinę su jumis, ir jūs galų gale padaryti, daugeliu atvejų, gana gerai, 109 00:06:16,720 --> 00:06:18,210 galbūt daug savo nuostabą. 110 00:06:18,210 --> 00:06:20,980 Ir daugiau konkrečiai, ką aš galvoju atitikimo / neatitikimo paprastai veikia, 111 00:06:20,980 --> 00:06:22,940 ypač, kaip jūs galbūt patyrėte su pset0, 112 00:06:22,940 --> 00:06:26,560 jei jūs įtraukėte į tam tikrą pset 10 valandų, 15 valandų, 25 val 113 00:06:26,560 --> 00:06:29,920 ir jūs tiesiog banking galvą į sieną ir ji darosi itin vėlai naktį 114 00:06:29,920 --> 00:06:33,950 , bet jūs atlikote pset 90%, kaip ir jūs tiesiog negali išsiaiškinti vieną dalyką, 115 00:06:33,950 --> 00:06:36,520 atitikimo / neatitikimo tikrai mano kraštą, panašaus į tai klasei, 116 00:06:36,520 --> 00:06:39,100 , kur Jūs galite rūšiuoti laimingai pasakyti: "Gerai, aš žinau, tai nėra tobula, 117 00:06:39,100 --> 00:06:42,350 bet dirbau my ass off, aš esu labai laimingas su kur jis galų gale, " 118 00:06:42,350 --> 00:06:44,850 ir kad bus patenkinti lūkesčius pravažiuojančio / nepavyks. 119 00:06:44,850 --> 00:06:47,540 Taigi, keep that in mind. Gerai. 120 00:06:47,540 --> 00:06:50,520 >> Taigi tiems, kurie stengėsi naudoti Harvardo universiteto Wi-Fi, 121 00:06:50,520 --> 00:06:54,780 žinoti, kad yra CS50 SSID, Wi-Fi "ryšys, plūduriuojančius aplink 122 00:06:54,780 --> 00:06:56,490 , kad jums gali tekti geriau sekasi. 123 00:06:56,490 --> 00:07:00,130 Tai šiek tiek ironiška, kad šis slaptažodį, jei jūs norėtumėte pabandyti prisijungti prie šios 124 00:07:00,130 --> 00:07:08,350 geriau greičiu - ir leiskite mums žinoti, jei ji ne geriau - 12345, visą kelią iki 8 125 00:07:08,350 --> 00:07:10,910 nes 8 yra saugesnis nei 5. 126 00:07:10,910 --> 00:07:16,910 Taigi, jei jums reikia Wi-Fi slaptažodį, prisijungti prie CS50 belaidžiu būdu čia, 12.345.678, 127 00:07:16,910 --> 00:07:20,380 ir paskelbkite CS50 Aptarkite, jei jūs vis dar turite pertrūkiais ryšio problemas, 128 00:07:20,380 --> 00:07:25,420 ir mes pranešime, įgaliojimus, žino šioje vietoje. Gerai. 129 00:07:25,420 --> 00:07:32,230 Taip greitai kibinimas, ypač tiems iš jūsų, kurie ventiliatoriaus berniukai ar mergaitės visų dalykų Apple. 130 00:07:32,230 --> 00:07:37,460 Ką aš iškasti prieš kelis metus atgal buvo šį failą čia, iUnlock.c 131 00:07:37,460 --> 00:07:39,930 tiesiog rūšies padaryti betono ir sudėtingesnių 132 00:07:39,930 --> 00:07:42,560 kai daugiau pagrindinių C programas, mes buvo raštu. 133 00:07:42,560 --> 00:07:46,910 Taigi, aš atvėrė šį failą, iUnlock.c. Šiandien paskaitų puslapyje. 134 00:07:46,910 --> 00:07:49,810 Kairėje pusėje pamatysite ilgą sąrašą funkcijų. 135 00:07:49,810 --> 00:07:53,230 Taigi kolegos, Kas parašė šią surašė daug funkcijų, daugiau nei tik pagrindinis. 136 00:07:53,230 --> 00:07:57,340 Jis naudojamas visa krūva bibliotekų čia, ir jei mes pradėsime slinkti per 137 00:07:57,340 --> 00:08:04,890 ką tai iš tikrųjų yra, yra pirmasis, manau, kreko originalus iPhone. 138 00:08:04,890 --> 00:08:09,830 >> Kai tu nori originalaus iPhone Jailbreak, o tai reiškia untether AT & T 139 00:08:09,830 --> 00:08:13,710 ir iš tikrųjų įdiegti specialią programinę įrangą ir daryti tai, ko, kad "Apple" nenorėjo, kad žmonės darytų, 140 00:08:13,710 --> 00:08:18,480 kažkas paėmė laiko išsiaiškinti tiksliai, kaip jie galėtų išnaudoti programinės įrangos trūkumus, 141 00:08:18,480 --> 00:08:22,690 klaidų, blakės, Apple programinė įranga, ir taip gimė iUnlock.c - 142 00:08:22,690 --> 00:08:26,760 , kad jei surinkti jį į savo kompiuterį ir įdiegti ją į "iPhone" 143 00:08:26,760 --> 00:08:29,430 , kuris buvo prijungtas prie kompiuterio, tarkim, per USB kabelį, 144 00:08:29,430 --> 00:08:32,450 tai jums administracines arba iš šaknų ir privilegijas jūsų iPhone 145 00:08:32,450 --> 00:08:34,620 ir leidžia daryti beveik viską, ką nori. 146 00:08:34,620 --> 00:08:36,400 Ir taip ten buvo šioje įdomioje katės ir pelės žaidimas 147 00:08:36,400 --> 00:08:39,340 tarp "Apple" ir "likusio pasaulio, ypač kai jie, kaip ir daugelis kompanijų, 148 00:08:39,340 --> 00:08:43,350 pabandykite užrakinti savo stuff žemyn taip, kad jūs galite tik su juo daryti ką jie ketina. 149 00:08:43,350 --> 00:08:47,360 Bet dėka žmonių kaip ir žemo lygio detalių supratimą - 150 00:08:47,360 --> 00:08:50,830 ir šiuo atveju C programavimo - ir daug gerai pažįstamų konstruktų 151 00:08:50,830 --> 00:08:55,280 kad mes pradėjome žaisti su, galite tikrai sverto aparatūros 152 00:08:55,280 --> 00:08:59,250 tokiu būdu, kuris jums atrodo tinkama, ir nebūtinai tam tikrą juridinį asmenį. 153 00:08:59,250 --> 00:09:01,600 Taigi, pavyzdžiui, aš neįsivaizduoju, ką visa tai veikia, 154 00:09:01,600 --> 00:09:03,580 bet GetVersion skamba gana paprasta, 155 00:09:03,580 --> 00:09:05,710 ir atrodo, kad tai yra funkcija, kad šis asmuo rašė. 156 00:09:05,710 --> 00:09:09,250 Tai užtrunka šiek tiek natūra sveikojo skaičiaus kaip argumentu, negrąžina nieko, 157 00:09:09,250 --> 00:09:13,710 bet atrodo, kad linijos už linijos čia ir jei sąlyga, jei sąlyga pertraukos 158 00:09:13,710 --> 00:09:16,770 ir kažkaip susijęs su versijos numerius, jei mes slinkti žemyn, 159 00:09:16,770 --> 00:09:19,650 nors šių raktažodžių daug ketinate būti naujas. 160 00:09:19,650 --> 00:09:22,590 Ir ten visai daug funkcijų čia niekada nesame matę ir gali kada nors pamatyti 161 00:09:22,590 --> 00:09:24,350 per semestro metu. 162 00:09:24,350 --> 00:09:29,160 >> Tuo dienos pabaigos, pagal tas pačias taisykles ir logika, kad mes buvo žaisti su iki šiol. 163 00:09:29,160 --> 00:09:34,340 Taigi tai yra pernelyg senas, kad nulaužti jūsų iPhone 3s ar 4s arba greičiau 5s šias dienas, 164 00:09:34,340 --> 00:09:38,830 bet žinau, kad visa tai labai kilęs iš šio pasaulio, kad mes nėrė į. 165 00:09:38,830 --> 00:09:42,280 Paimkime bent šiek tiek daugiau paprastas pavyzdys atrodo: 166 00:09:42,280 --> 00:09:46,260 tai viena, tik gauti pašildytas su kai kurių sintaksė ir taip pat kai kurios kitos duomenų tipas 167 00:09:46,260 --> 00:09:48,910 kad mes kalbėjome apie, bet ne iš tikrųjų matyti C. 168 00:09:48,910 --> 00:09:53,670 Tai failas, kuris vadinamas positive1.c, ir vienam viršuje pastabų, 169 00:09:53,670 --> 00:09:56,070 tai tiesiog reikalauja, kad vartotojas pateiktų teigiamą skaičių. 170 00:09:56,070 --> 00:09:59,910 Todėl do-while cikle, kuris yra gražus naudotojo interaktyvių programų pavyzdys 171 00:09:59,910 --> 00:10:02,070 kur jums reikia pranešti vartotojui, ką nors padaryti, 172 00:10:02,070 --> 00:10:05,530 ir jei jie nebendradarbiauja jūs klykauti į juos arba atmesti savo indėlį. 173 00:10:05,530 --> 00:10:10,480 Byla punktas: "Aš einu daryti linijas 19 iki 24 174 00:10:10,480 --> 00:10:14,620 tol, kol vartotojas dar davė man teigiamą skaičių. 175 00:10:14,620 --> 00:10:21,340 Ši detalė on line 18, kodėl aš pareiškiu, n virš visos šios Looping statyti 176 00:10:21,340 --> 00:10:26,870 , o ne šalia 22 eilutė, kur aš iš tikrųjų rūpi gauti n? Taip. 177 00:10:26,870 --> 00:10:29,330 [Studentas] taikymo sritį. >> Taip, todėl šis taikymo srities klausimas. 178 00:10:29,330 --> 00:10:31,770 Ir profanas sąlygomis, ką apimtis kreiptis? 179 00:10:34,880 --> 00:10:41,560 Taip. >> [Nesigirdi studentas atsakas] >> Ar galite kalbėti šiek tiek garsiau? 180 00:10:41,560 --> 00:10:45,440 [Studentas] Kur galima prieiti prie šio kintamojo. >> Perfect. 181 00:10:45,440 --> 00:10:47,610 Kur galite gauti tam tikrą kintamąjį. 182 00:10:47,610 --> 00:10:50,990 Ir apskritai, nykščio taisykle iki šiol buvo, kad kai kintamasis 183 00:10:50,990 --> 00:10:56,140 yra apibrėžta naujausius Garbanotasis petnešos, kad jūs mačiau. 184 00:10:56,140 --> 00:11:03,070 >> Ir todėl šiuo atveju, jei aš padariau klaidą paskelbti n on line 22, kad linija būtų dirbti. 185 00:11:03,070 --> 00:11:10,840 Norėčiau gauti int, ir aš įdėti jį į tą kintamąjį n 22 eilutėje, 186 00:11:10,840 --> 00:11:17,060 bet kuria linija kodo dabar neįsivaizduoju, ką aš kalbu apie? >> [Studentas] 25. 187 00:11:17,060 --> 00:11:23,840 [Malan] 25, ir paaiškėja, 24, taip pat dėl ​​to, kad šiuo atveju jis nepatenka garbanotieji petnešų. 188 00:11:23,840 --> 00:11:28,550 Taigi, tiesiog šiek tiek nepatogumų, tačiau labai lengvai išsprendžiama tiesiog paskelbti kintamasis 189 00:11:28,550 --> 00:11:30,700 ne pačios funkcijos. 190 00:11:30,700 --> 00:11:32,760 Pamatysite vėliau šiandien galite žengti dar vieną žingsnį 191 00:11:32,760 --> 00:11:34,940 ir jūs galite gauti net šiek tiek tingus. 192 00:11:34,940 --> 00:11:39,660 Ir tai yra nerekomenduotina apskritai, bet jūs galite net gauti tingus 193 00:11:39,660 --> 00:11:44,150 ir įdėti kintamąjį visame pasaulyje, taip sakant, ne viduje funkcijos, o ne viduje kilpa, 194 00:11:44,150 --> 00:11:49,800 , bet failo, ne visas funkcijas, jums parašiau, kaip aš čia on line 15. 195 00:11:49,800 --> 00:11:55,220 Tai paprastai frowned, bet suprantame, kad tai kartais kitų problemų sprendimas, 196 00:11:55,220 --> 00:11:56,910 kaip mes galų gale pamatyti. 197 00:11:56,910 --> 00:11:59,500 Taigi dabar mes palikti jį, kaip šis, bet galime pamatyti, jei mes galime perrašyti 198 00:11:59,500 --> 00:12:02,360 tik pradėti išreikšti save šiek tiek kitaip. 199 00:12:02,360 --> 00:12:05,550 Ši programa, tiesiog, kad būtų aišku, yra positive1. 200 00:12:05,550 --> 00:12:11,980 Leiskite man eiti į priekį ir savo terminalo lange positive1, įveskite. 201 00:12:11,980 --> 00:12:15,080 Kaupia gerai. Aš ruošiuosi paleisti positive1, paspauskite Enter. 202 00:12:15,080 --> 00:12:19,250 Reikalauju, kad galite man duoti teigiamą sveikąjį skaičių. Pasakysiu -1. Tai nepadėjo. 203 00:12:19,250 --> 00:12:22,340 0, 99. Kad atrodo į darbą. 204 00:12:22,340 --> 00:12:25,310 Gal ne griežčiausių bandymų, bet bent jau gražus normalumas patikrinimas 205 00:12:25,310 --> 00:12:27,100 , kad esame teisingame kelyje. 206 00:12:27,100 --> 00:12:29,570 >> Taigi dabar leiskite man eiti į priekį ir atidaryti versija 2, 207 00:12:29,570 --> 00:12:32,800 ir kas yra skirtinga jau? 208 00:12:32,800 --> 00:12:39,030 Ji įgyvendina tą patį, bet kas šokinėja kaip aiškiai skiriasi šiuo metu? 209 00:12:40,790 --> 00:12:47,090 Bool Šis žaliai. Jis yra paryškinamas žalia, bool, kuris yra duomenų tipas žinomas kaip šis raktinis žodis. 210 00:12:47,090 --> 00:12:50,510 Jis nėra ateis pastatytas visiems C versijas 211 00:12:50,510 --> 00:12:52,650 Jums reikia įtraukti konkrečią biblioteką. 212 00:12:52,650 --> 00:12:56,460 Mūsų atveju, aš įtraukti CS50 biblioteką, kad mes turime prieigą prie Bool. 213 00:12:56,460 --> 00:12:59,860 , Bet atitinka 18, mes, atrodo, čia vadinama Būlio vertė dėkinga. 214 00:12:59,860 --> 00:13:02,190 Aš galėjo pavadino tai nieko, bet aš jį pavadino dėkinga 215 00:13:02,190 --> 00:13:04,750 tiesiog rūšies perteikti tam tikrą semantinę prasmę. 216 00:13:04,750 --> 00:13:07,700 Taigi, iš pradžių on line 18, aš, matyt, ne dėkinga 217 00:13:07,700 --> 00:13:12,230 nes yra inicializuoti Būlio vertė dėkingi false atitinka 18. 218 00:13:12,230 --> 00:13:16,500 Ir tada atrodo, ką aš padariau čia linijų 21 iki 23 219 00:13:16,500 --> 00:13:19,200 yra tai, aš tiesiog rūšies perrašyti savo logiką. 220 00:13:19,200 --> 00:13:26,100 Taip ne funkciškai skiriasi, bet 22 eilutėje dabar aš patikrinti, ar int vartotojas 221 00:13:26,100 --> 00:13:31,360 yra didesnis už 0, tada aš tiesiog pakeisti dėkingi tiesa. 222 00:13:31,360 --> 00:13:35,590 Ir kodėl man tai padaryti? Dėl 25 eilutėje, matyt aš ruošiuosi patikrinti sąlygą. 223 00:13:35,590 --> 00:13:39,760 Tai padaryti kilpą, nes esu dėkingas, yra klaidinga. 224 00:13:39,760 --> 00:13:42,960 Taigi, aš pasiūliau, tai kaip alternatyva versijos 1 225 00:13:42,960 --> 00:13:47,050 , nes jis bent šiek tiek daugiau intuityvus, galbūt, tai šiek tiek daugiau pagrįstas anglų kalba. 226 00:13:47,050 --> 00:13:51,980 Taigi, atlikite šiuos veiksmus, o jūs nesate dėkinga, nes esu dėkingas, yra klaidinga. 227 00:13:51,980 --> 00:13:56,220 Ir šį kartą aš taip pat, matyt, neturi rūpintis prisiminti tai, ką vartotojas turi įvesti 228 00:13:56,220 --> 00:14:00,050 nes įspėjimo nėra kintamasis n, todėl iš tikrųjų, mažai baltas melas. 229 00:14:00,050 --> 00:14:03,290 >> Funkciškai, programa yra šiek tiek kitokia, kai mes turime jį iš apačios 230 00:14:03,290 --> 00:14:04,960 nes aš ne prisiminti, ką n. 231 00:14:04,960 --> 00:14:09,120 Bet aš norėjau parodyti, čia per daug, kad net jei mes matėme GetInt 232 00:14:09,120 --> 00:14:13,780 ir GetString naudojamas ant dešinėje pusėje lygybės ženklo iki šiol 233 00:14:13,780 --> 00:14:17,310 todėl, kad mes prisimintume vertę, techniškai, tai nėra tikrai būtina. 234 00:14:17,310 --> 00:14:20,290 Jei dėl kokios nors priežasties jūs tiesiog nerūpi, kad įrašytumėte reikšmę, 235 00:14:20,290 --> 00:14:25,540 jūs tiesiog norite patikrinti vertę, pastebėsite, kad mes galime tiesiog parašyti tai, kaip GetInt 236 00:14:25,540 --> 00:14:27,320 atviras skliaustas, netoli paren. 237 00:14:27,320 --> 00:14:30,570 Kad funkcija grąžina reikšmę, kaip mes buvo suprantama. 238 00:14:30,570 --> 00:14:32,220 Ji ketina suteikti jums atgal į int. 239 00:14:32,220 --> 00:14:34,460 Ir todėl, jei mintyse galvoja tai vyksta, 240 00:14:34,460 --> 00:14:38,190 kai aš tipo 99 GetInt grąžina skaičių 99 241 00:14:38,190 --> 00:14:41,840 ir taip konceptualiai, tai kaip nors mano kodas buvo iš tikrųjų tai. 242 00:14:41,840 --> 00:14:45,950 99 Taigi, jei iš tiesų yra didesnis už 0, tada dėkingi tampa tiesa, 243 00:14:45,950 --> 00:14:50,810 linija 25 supranta, ooh, mes padarėme, nes aš dabar dėkinga, 244 00:14:50,810 --> 00:14:53,970 ir 26 eilutėje, mes tiesiog pasakyti "Ačiū už teigiamas sveikasis skaičius!" 245 00:14:53,970 --> 00:14:55,960 kokia ji nutiko. 246 00:14:55,960 --> 00:14:59,140 Dabar galime padaryti šiek tiek cukraus sintaksinę čia, taip sakant. 247 00:14:59,140 --> 00:15:04,670 Leiskite pamatyti, jei mes galime išvalyti šią eilutę 25 su šio trečiojo ir paskutiniojo varianto positive3. 248 00:15:04,670 --> 00:15:13,600 >> Pranešimas vienintelis skirtumas yra tai, ką eilutę kodo? >> [Studentas] 25. >> [Malan] Taip, 25. 249 00:15:13,600 --> 00:15:17,680 Ir mes tikrai matė šį triuką tik dar, bet mes pamatyti, šauktukas, pirmadienį, 250 00:15:17,680 --> 00:15:21,070 kuris reiškia ką? >> [Studentas]. >> Ne arba paneigimas. 251 00:15:21,070 --> 00:15:23,510 Taigi imtis Būlio vertė ir apversti savo vertę. 252 00:15:23,510 --> 00:15:25,810 Tiesa tampa klaidinga, klaidinga tampa realybe. 253 00:15:25,810 --> 00:15:30,420 Taigi, aš norėčiau pasiūlyti, yra net šiek tiek labiau intuityvus, rašyti kodą 254 00:15:30,420 --> 00:15:33,430 nes aš vis dar inicijuoti dėkingi false, aš vis dar atlikite šiuos veiksmus, 255 00:15:33,430 --> 00:15:36,010 Aš nustačiau dėkinga, tiesa, kai ateis laikas, 256 00:15:36,010 --> 00:15:40,880 tačiau dabar jūs galite tiesiog išversti šį kodą žodžiu iš kairės į dešinę, 257 00:15:40,880 --> 00:15:45,630 o (dėkinga!), nes sprogimo ar šauktukas reiškia ne sąvoka, 258 00:15:45,630 --> 00:15:47,580 taip, o ne dėkinga. 259 00:15:47,580 --> 00:15:49,900 Taigi dar kartą, mes jokių naujų sąvokas per se. 260 00:15:49,900 --> 00:15:53,730 Mes kalbėjome apie loginę atgal, kai mes grojo su nulio, 261 00:15:53,730 --> 00:15:56,720 bet suprantame, dabar mes galime tiesiog pradėti rašyti savo kodą įvairiais būdais. 262 00:15:56,720 --> 00:16:01,060 Taigi ypač pset1 jei esate tarsi stengiasi išsiaiškinti rašyti tam tikrą programą, 263 00:16:01,060 --> 00:16:04,340 šansai yra jums pasisekė, nes ten gali būti bet koks sprendimų skaičius 264 00:16:04,340 --> 00:16:06,110 kad jums gali atsitikti. 265 00:16:06,110 --> 00:16:10,500 Pavyzdžiui, tai tik 3 net paprasčiausių programų. Gerai. 266 00:16:10,500 --> 00:16:14,200 Ir dabar priminti, pirmadienį, mes palikome su grįžtamaisiais vertybių šio pranešimo. 267 00:16:14,200 --> 00:16:18,450 Taigi, pirmą kartą mes parašėme programą, kuri ne tik turi pagrindinis 268 00:16:18,450 --> 00:16:22,550 ji taip pat turi savo funkcija individualizuotos, kad aš parašiau čia. 269 00:16:22,550 --> 00:16:26,810 Taigi 31 eilutėje per 34 įdiegėme kubo funkciją. 270 00:16:26,810 --> 00:16:30,240 Tai nėra sudėtinga. Tai tik a * šiuo atveju. 271 00:16:30,240 --> 00:16:34,750 Tačiau tai, ką svarbu apie tai, kad aš indėlį į 272 00:16:34,750 --> 00:16:39,180 ir aš sugrįžus išėjimas * a *. 273 00:16:39,180 --> 00:16:43,560 Taigi, dabar turiu galimybę, panašiai kaip aš naudojamas vien tik su prinf 274 00:16:43,560 --> 00:16:47,240 skambinti šią funkciją paskambinus kubo funkciją. 275 00:16:47,240 --> 00:16:51,970 >> Ir kubas funkcija užtrunka tam tikrą įvestį, kubas funkcija grąžina kažkokią išvestį. 276 00:16:51,970 --> 00:16:56,960 Priešingai, printf tiesiog padarė kažką. 277 00:16:56,960 --> 00:17:00,840 Jis negrįžo nieko, kad mes rūpinosi apie, nors, kaip panaikinti ji grąžina reikšmę; 278 00:17:00,840 --> 00:17:03,110 jūs tiesiog paprastai jį ignoruoti. 279 00:17:03,110 --> 00:17:06,510 Printf tiesiog padarė kažką. Jis turėjo šalutinį poveikį spausdinti į ekraną. 280 00:17:06,510 --> 00:17:11,770 Priešingai čia, turime kubo funkciją, kuris iš tikrųjų grįžta kažką. 281 00:17:11,770 --> 00:17:15,520 Taigi, tiems, kurie susipažinę su šiuo, tai gana paprasta idėja. 282 00:17:15,520 --> 00:17:19,640 Bet tiems, kurie mažiau susipažinę su šia einančios į sąnaudų ir grįžti rezultatus idėja, 283 00:17:19,640 --> 00:17:21,950 pabandykime tiesiog kažkas super paprasta. 284 00:17:21,950 --> 00:17:25,490 Ar kas nors patogiai artėja scenoje trumpai? 285 00:17:25,490 --> 00:17:28,040 Jūs turite būti patogus su kamera jums taip pat. Taip? Gerai. 286 00:17:28,040 --> 00:17:31,240 Koks tavo vardas? >> [Studentas] Ken. >> Ken. Gerai. Ken, iki. 287 00:17:31,240 --> 00:17:35,050 Ken rūšių funkcija bus čia. 288 00:17:35,050 --> 00:17:38,720 Eikime į priekį ir tai padaryti. Galime gauti šiek tiek fantazijos. 289 00:17:38,720 --> 00:17:42,260 Malonu jus matyti. Sveiki atvykę į centre. Gerai. 290 00:17:42,260 --> 00:17:46,640 Leiskite paspausti šį mygtuką. Gerai. 291 00:17:46,640 --> 00:17:49,820 Taigi čia jūs turite modernią Lenta 292 00:17:49,820 --> 00:17:53,470 ir tai, ką aš yra pagrindinė funkcija, pavyzdžiui, 293 00:17:53,470 --> 00:17:56,460 ir aš neturiu į mano rankas iPad. 294 00:17:56,460 --> 00:17:59,710 >> Aš tikrai ne prisiminti, kaip - Na, aš negali pasakyti, kad. 295 00:17:59,710 --> 00:18:02,480 Aš ne iš tikrųjų turėti gerą rankraštį, 296 00:18:02,480 --> 00:18:05,520 ir todėl aš noriu jums ką nors atspausdinti už mane ant ekrano. 297 00:18:05,520 --> 00:18:12,040 Aš pagrindinė programa, ir aš norėčiau, kad jūs pasakyti, tai 298 00:18:12,040 --> 00:18:16,720 rašyti mano vištienos nulio ir tada perduoti jums įvestį. 299 00:18:16,720 --> 00:18:20,400 Tokie kvaili, nors šis pratimas yra, funkcijų samprata ir telefono funkciją 300 00:18:20,400 --> 00:18:22,400 ir grąžinimo funkciją tikrai suvesta į tai. 301 00:18:22,400 --> 00:18:26,260 Esu pagrindinis, aš ką tik parašė printf, kotiravimu Unquote kažką ekrane, 302 00:18:26,260 --> 00:18:29,110 Aš einu į šią programą, ir kuo greičiau printf iškviečiamas, 303 00:18:29,110 --> 00:18:32,880 ji užima vieną argumentą ar vienas parametras, kartais tarp dvigubų kabučių. 304 00:18:32,880 --> 00:18:35,880 Čia yra, kad argumentas. Aš perduoti ją Ken. 305 00:18:35,880 --> 00:18:39,020 Jis yra parašęs keletą metų atgal "black box" 306 00:18:39,020 --> 00:18:41,510 , kad, matyt, tik žino,, kaip spausdinti dalykų ekrane. 307 00:18:41,510 --> 00:18:43,150 Taigi atlikti. 308 00:18:49,280 --> 00:18:51,280 Tai nėra blogai. Labai geras. 309 00:18:51,280 --> 00:18:55,510 Taigi dabar Ken daroma vykdyti. Ar jis turi perduoti man nieko atgal? 310 00:18:55,510 --> 00:18:57,470 Ne todėl, kad mes matėme iki šiol. 311 00:18:57,470 --> 00:19:00,460 Vėlgi, printf tikrųjų grįžti numerį, bet mes ketiname ignoruoti, kad dabar 312 00:19:00,460 --> 00:19:03,470 , nes mes niekada naudojo jį. Taigi, kad tai Ken. 313 00:19:03,470 --> 00:19:08,580 Ir todėl dabar pagrindinis vėl perima kontrolės programos 314 00:19:08,580 --> 00:19:11,060 , dėl to, kad kodo eilutę printf, daroma vykdyti. 315 00:19:11,060 --> 00:19:14,050 Ir mes einame apie mūsų kelią, vykdyti kokios kitos eilutės yra ten. 316 00:19:14,050 --> 00:19:17,320 Taigi, dabar pabandykime šiek tiek kitokį pavyzdį. 317 00:19:17,320 --> 00:19:24,940 Šį kartą tegul pirmas išvalyti ekraną, ir šį kartą mes padarysime Kubas funkciją, 318 00:19:24,940 --> 00:19:27,080 bet šį kartą, tikiuosi, kad išvesties vertę. 319 00:19:27,080 --> 00:19:29,180 >> Taigi eikime į priekį ir tai padaryti. 320 00:19:29,180 --> 00:19:35,790 Dabar turiu kodo eilutę, kad sako, x gauna kubą x. 321 00:19:41,370 --> 00:19:46,370 Kodo eilutę, prisiminti, atrodo taip: x = kubas (x); 322 00:19:46,370 --> 00:19:50,930 Taigi, kaip tai vyksta į darbą? Eikime į priekį ir suteikti jums baltas ekranas vėl. 323 00:19:50,930 --> 00:19:54,070 Aš einu užsirašyti x vertę, 324 00:19:54,070 --> 00:20:01,400 , kuris šiuo metu metu būna, kad, tarkim, 2 keep it simple. 325 00:20:01,400 --> 00:20:06,150 Užsirašiau ant popieriaus lapo 2 vertė, kuri yra mano x vertė. 326 00:20:06,150 --> 00:20:10,920 Aš nuneškite jį Ken. >> Ir aš tiesiog parašyti atsakymą? >> Taip, tegul tiesiog rašyti atsakymą. 327 00:20:12,760 --> 00:20:18,940 Gerai. Ir dabar jis turi grąžinti man kažką. Tobula. Nice Segue. 328 00:20:18,940 --> 00:20:23,120 Taigi dabar jis paduoda man atgal 8 vertę šiuo atveju, ir ką man su juo daryti? 329 00:20:23,120 --> 00:20:28,250 Iš tikrųjų - pažiūrėkime, gauti šią teisę. Ką man su juo daryti? 330 00:20:28,250 --> 00:20:33,440 Dabar aš ruošiuosi į šią vertę ir iš tikrųjų laikyti ją tų pačių atmintyje bitų. 331 00:20:33,440 --> 00:20:35,170 , Bet pastebėsite, aš tipo kovoja čia. 332 00:20:35,170 --> 00:20:38,210 Aš esu šiek tiek supainioti, nes kai aš iš tikrųjų rašyti x vertę, 333 00:20:38,210 --> 00:20:43,150 nes tai, ką aš ką tik padarė, yra fiziškai ranka Ken popieriaus gabalas, kuris turėjo vertė Vertė 2, 334 00:20:43,150 --> 00:20:46,590 kuris buvo x, ir iš tiesų, tai būtent tai, kas atsitiko. 335 00:20:46,590 --> 00:20:50,210 Taigi paaiškėja, kad kai skambinate funkciją ir pereisite į argumentą, 336 00:20:50,210 --> 00:20:53,290 kaip hello, pasaulis ar pereisite argumento kaip 2, 337 00:20:53,290 --> 00:20:57,110 paprastai, jūs artimųjų į šį argumentą kopiją. 338 00:20:57,110 --> 00:21:00,730 Ir taip kaip aš užrašė skaičių 2 čia ir perdavė jį į Ken 339 00:21:00,730 --> 00:21:04,720 tai reiškia, jog aš vis dar turiu vertės 2 kopiją kažkur 340 00:21:04,720 --> 00:21:08,890 nes iš tiesų, dabar, kad aš Dotarłeś atgal dydis 8, man reikia grįžti į RAM 341 00:21:08,890 --> 00:21:12,130 ir faktiškai užsirašyti 8 kur Aš vieną kartą turėjo skaitmeniu "2". 342 00:21:12,130 --> 00:21:16,950 Taigi vizualiai, prisiminti šią sąvoką perduoti, pažodžiui, vertės kopiją. 343 00:21:16,950 --> 00:21:20,780 >> Ken ar jo dalykas, rankas man atgal kažką - šiuo atveju reikšmę kaip 8 - 344 00:21:20,780 --> 00:21:24,980 ir tada aš turiu kažką daryti su tos vertės, jei noriu, kad aplink. 345 00:21:24,980 --> 00:21:29,650 Taigi, visa tai sugrįš būti pernelyg pažįstami prieš ilgas. 346 00:21:29,650 --> 00:21:34,920 Thank you so much už šio demo čia, Ken. [Plojimai] 347 00:21:34,920 --> 00:21:36,920 Labai gerai padaryta. 348 00:21:36,920 --> 00:21:42,690 Pažiūrėkime, kaip, kad galiausiai kai funkcijos, kuriam skambinate, kad mes čia darai. 349 00:21:42,690 --> 00:21:47,910 Leiskite man eiti į priekį ir gražina mus į Kubas pavyzdžiui čia. 350 00:21:47,910 --> 00:21:53,300 Atkreipkite dėmesį, kad, jei norime, kad iš tikrųjų pradėdami vartoti šį toliau, 351 00:21:53,300 --> 00:21:57,570 mes ketiname turėti atkreips dėmesį ir į tai, kad skaičius x, perduota čia 352 00:21:57,570 --> 00:22:01,530 yra skirtingas, kas iš tikrųjų yra perduodama į funkciją. 353 00:22:01,530 --> 00:22:05,880 Taigi dar kartą, tai kopija praeiti taps gana Priklauso tik akimirką. 354 00:22:05,880 --> 00:22:09,580 Paimkime bent kažką, kad nėra gana dirbti dar atrodo. 355 00:22:09,580 --> 00:22:13,250 Aš ruošiuosi eiti į priekį ir atidaryti trečią Buggy kurios, pavyzdžiui, yra ydinga iš prigimties, 356 00:22:13,250 --> 00:22:18,550 ir ji vadinama buggy3 ir įgyvendina apsikeitimo funkcija. 357 00:22:18,550 --> 00:22:25,110 Čia mes turime pagrindinę funkciją, kad x ir y savavališkai inicijuotas 1 ir 2, atitinkamai. 358 00:22:25,110 --> 00:22:27,700 Mes galime naudoti GetInt, bet mes tiesiog reikia paprasto naudotis, 359 00:22:27,700 --> 00:22:30,170 todėl sunku koduojamos kaip 1 ir 2. 360 00:22:30,170 --> 00:22:35,340 21 ir 22 eilutėse, mes, matyt, atspausdinti X ir Y 1 už linijos. 361 00:22:35,340 --> 00:22:39,720 23 on-line, aš patvirtinu, aš Swapping šias vertybes, tašką, taškas, taškas. 362 00:22:39,720 --> 00:22:44,170 Aš, matyt, vadina linijos funkcija 24 vadinamoji apsikeitimo sandorius, kurie trunka 2 argumentus. 363 00:22:44,170 --> 00:22:48,300 Funkcijos 2 argumentus jis visiškai teisėtu. Mes matėme, printf padaryti jį jau. 364 00:22:48,300 --> 00:22:51,830 >> Taigi, apsikeitimo, matyt, mano X ir Y, ir, kaip rodo jo pavadinimas, 365 00:22:51,830 --> 00:22:54,670 Aš tikiuosi, kad ji ketina sukeisti šiuos 2 reikšmes. 366 00:22:54,670 --> 00:23:00,090 Taigi, aš reikalauti on line 25 "pavertė!" ir aš perspausdinti X ir Y 367 00:23:00,090 --> 00:23:03,070 darant prielaidą, kad jie iš tiesų buvo pavertė. 368 00:23:03,070 --> 00:23:06,080 Bet jei aš iš tikrųjų paleisti šią programą - leiskite man atverti terminalo langą, 369 00:23:06,080 --> 00:23:09,860 leiskite man padaryti buggy3 - kaip rodo pavadinimas, tai ne baigsis gerai 370 00:23:09,860 --> 00:23:15,770 nes kai aš paspauskite "Enter", pastebėsite, kad x 1, y 2, 371 00:23:15,770 --> 00:23:19,420 ir dar tuo, programos pabaigoje, jie vis dar yra, iš tiesų, tas pats. 372 00:23:19,420 --> 00:23:22,960 Taigi remiantis demonstravimo tik dabar su Ken, kas iš tikrųjų vyksta? 373 00:23:22,960 --> 00:23:28,710 Tegul neria į šio apsikeitimo funkcija. Tai itin trumpas. Tai tik keletą eilučių kodo ilgą. 374 00:23:28,710 --> 00:23:34,520 Bet kas pagrindinė problema, remiantis paprasta istorija, papasakojo čia su Ken? 375 00:23:34,520 --> 00:23:36,670 Kodėl apsikeitimo neveikia? 376 00:23:36,670 --> 00:23:39,660 [Studentas] Tu saugoti kopiją, o ne konkretaus kintamojo dydžio. 377 00:23:39,660 --> 00:23:43,980 Tiksliai. Mes saugoti kopiją, o ne kintamasis. 378 00:23:43,980 --> 00:23:47,170 Kitaip tariant, apsikeitimo, matyt, trunka 2 argumentus, int, 379 00:23:47,170 --> 00:23:49,370 ir tai sąlygiškai pavadinta a ir b punktai 380 00:23:49,370 --> 00:23:54,420 ir čia aš jau praėjo, X ir Y, kurie yra atitinkamai 1 ir 2, 381 00:23:54,420 --> 00:23:58,770 bet aš ne pažodžiui perduoti x, aš ne pažodžiui eina y, 382 00:23:58,770 --> 00:24:01,450 Aš artimųjų x kopiją ir y kopiją. 383 00:24:01,450 --> 00:24:04,510 Tai beveik taip, lyg jūs kopijuoti ir įklijuoti į apsikeitimo sandorio 384 00:24:04,510 --> 00:24:07,810 vertybės, kurios norite, kad ji iš tikrųjų manipuliuoti. 385 00:24:07,810 --> 00:24:14,480 Taigi, jei tai yra tas atvejis, kai aš programa pradėti vykdyti linija 35 tada 36, 386 00:24:14,480 --> 00:24:18,650 kai gaunu 37 eilutėje, Šiuo istorija, kas yra vertė? 387 00:24:21,040 --> 00:24:25,050 Šiuo istorija, linija 37, kas yra vertė šiuo metu? >> [Studentas] 1. 388 00:24:25,050 --> 00:24:29,280 Malan] Tai tiesiog turėtų būti 1, teisė, kad X buvo priimtas kaip pirmąjį argumentą, 389 00:24:29,280 --> 00:24:33,080 ir ši funkcija tiesiog savavališkai skambina savo pirmąjį argumentą. 390 00:24:33,080 --> 00:24:38,200 Taip pat yra y apie antrąjį argumentą, ir tai tik savavališkai paskambinę antrasis argumentas b. 391 00:24:38,200 --> 00:24:40,990 >> Ši dichotomija yra tikrai gana tiesiog paaiškino. Pagalvokite apie tai. 392 00:24:40,990 --> 00:24:43,320 Nė vienas iš mūsų susitiko asmuo, kuris parašė printf, 393 00:24:43,320 --> 00:24:50,770 todėl tikrai, jis ar ji neturi jokios idėjos, ką mūsų kintamieji po 30 metų bus vadinamas. 394 00:24:50,770 --> 00:24:56,650 Taigi, turi būti skirtumas tarp to, ką vadiname kintamųjų funkcijų rašote 395 00:24:56,650 --> 00:25:02,080 ir ką jūs vadinate kintamųjų funkcijų, jūs skambinate arba naudojant. 396 00:25:02,080 --> 00:25:05,340 Taigi, kitaip tariant, aš parašiau savo kintamuosius x ir y, 397 00:25:05,340 --> 00:25:08,890 bet jei kažkas buvo parašyta apsikeitimo funkcija, jis ar ji tikrai nežino, 398 00:25:08,890 --> 00:25:10,690 ką mano kintamieji bus vadinamas, 399 00:25:10,690 --> 00:25:13,830 taip suprantu, kad tai, kodėl jūs turite šią vardų dvilypumą. 400 00:25:13,830 --> 00:25:16,750 Techniškai, galėčiau tai padaryti sutapimas, 401 00:25:16,750 --> 00:25:20,080 bet jis vis tiek būtų priimtas, kopijas. 402 00:25:20,080 --> 00:25:23,650 Tai būtų tiesiog grynas atsitiktinumas, estetiškai, jei tas asmuo, kuris parašė apsikeitimo sandorius, 403 00:25:23,650 --> 00:25:26,150 buvo naudojamas tais pačiais pavadinimais. 404 00:25:26,150 --> 00:25:32,370 Taigi Šiuo istorija, linija 37, yra 1, b 2, ir dabar aš pereiti prie apsikeitimo juos. 405 00:25:32,370 --> 00:25:34,900 Visų pirma, leiskite man iš tikrųjų tai padaryti daug paprasčiau. 406 00:25:34,900 --> 00:25:36,690 Aš nežinau, ką darė šie 3 eilučių kodo. 407 00:25:36,690 --> 00:25:41,210 Leiskite man tiesiog atlikite šiuos veiksmus: b = a; = b; padaryta. 408 00:25:41,210 --> 00:25:44,690 Kodėl tai yra skaldytų, logiškai? 409 00:25:46,490 --> 00:25:48,900 Tai tipo intuityvi dalykas, tiesa? 410 00:25:48,900 --> 00:25:52,560 Taigi tampa b ir b tampa, 411 00:25:52,560 --> 00:25:57,730 tačiau problema yra ta, kad kuo greičiau linija 37 vykdo, kas yra A ir B vertė? 412 00:25:57,730 --> 00:26:03,410 Tas pats, 1, nes jūs clobbered, taip sakant, jūs pasikeitė B lygi. 413 00:26:03,410 --> 00:26:08,890 Taigi, kai linija įvykdė 37, tai puiku, dabar jūs turite 2 kopijų skaičiumi 1 414 00:26:08,890 --> 00:26:13,350 viduje šios funkcijos, taip, tada, kai jūs sakote, atitinka 38 a = b, 415 00:26:13,350 --> 00:26:17,640 jūs tipo prisukamas, nes jūs tik priskiriant 1-1. 416 00:26:17,640 --> 00:26:20,580 Jūs rūšies prarado vertę, kurią rūpinosi apie. 417 00:26:20,580 --> 00:26:23,220 Taigi iš pradinės versijos, atkreipkite dėmesį, ką aš padariau. 418 00:26:23,220 --> 00:26:26,850 Aš vietoj trečiosios eilutės kodą, kuris atrodė taip. 419 00:26:26,850 --> 00:26:28,580 Aš pareiškiu, laikiną kintamąjį. 420 00:26:28,580 --> 00:26:32,170 >> Tmp yra labai dažnas vardas laikino kintamojo, o tai yra int 421 00:26:32,170 --> 00:26:34,580 nes ji turi sutapti, ką aš noriu padaryti kopiją. 422 00:26:34,580 --> 00:26:39,770 Galiu laikyti kopiją tmp viduje, todėl, kai linija įvykdė 37 423 00:26:39,770 --> 00:26:45,860 vertė yra - greitai normalumas patikrinimas - 1, B vertė yra 2, 424 00:26:45,860 --> 00:26:48,970 ir tmp vertė taip pat yra 1. 425 00:26:48,970 --> 00:26:52,060 Taigi, dabar aš atlikti linija 38. 426 00:26:52,060 --> 00:27:00,540 Kai linija 38 vykdo, įgauna b vertei. Ir b 2, todėl dabar yra 2. 427 00:27:00,540 --> 00:27:05,210 Šiuo istorija, yra 2, b 2, ir tmp yra 1, 428 00:27:05,210 --> 00:27:11,060 todėl dabar logiškai, mes galime tiesiog Plop tmp vertė į B ir baigsime. 429 00:27:11,060 --> 00:27:12,800 Taigi, mes išspręsti šią problemą. 430 00:27:12,800 --> 00:27:17,720 Deja, kai aš paleisti šią programą šią formą, jis nėra iš tikrųjų apsikeitimo visas vertes. 431 00:27:17,720 --> 00:27:20,100 , Tačiau turi būti aišku, kodėl? 432 00:27:23,660 --> 00:27:26,450 I fixed loginių problemų, nuo vos prieš akimirką, 433 00:27:26,450 --> 00:27:31,020 bet vėlgi, jei aš paleisti šią programą, x ir y išlieka nepakitę 434 00:27:31,020 --> 00:27:33,310 programos vykdymo pabaigos. 435 00:27:33,310 --> 00:27:37,220 [Nesigirdi studentas komentaras] >> Mes negrąžinami nieko, kad tai tiesa. 436 00:27:37,220 --> 00:27:39,670 Tačiau paaiškėja, yra šiek tiek problemų, nes čia iki šiol, 437 00:27:39,670 --> 00:27:44,170 Vienintelis dalykas, mes negalėjo grįžti yra vienas dalykas, ir tai yra C. apribojimas 438 00:27:44,170 --> 00:27:49,070 Galite grįžti tik tikrai vieną reikšmę, tokiu atveju aš natūra įstrigo čia 439 00:27:49,070 --> 00:27:53,310 nes aš negalėjau grįžti naują vertę x, ar aš galėtų grįžti y naują vertę, 440 00:27:53,310 --> 00:27:55,190 bet aš noriu, tiek atgal. 441 00:27:55,190 --> 00:27:58,650 Taigi, grįžtant nėra paprastas sprendimas. 442 00:27:58,650 --> 00:28:01,710 Tačiau problema iš esmės yra, kodėl? Ką mes iš tikrųjų pavertė? 443 00:28:01,710 --> 00:28:04,190 [Studentas] a ir b. >> A ir b. 444 00:28:04,190 --> 00:28:08,230 Tačiau a ir b yra X ir Y, tai reiškia, mes tiesiog padarė viską, šio darbo kopijos, 445 00:28:08,230 --> 00:28:11,650 mes tiesiog praleido apsikeitimo funkcija ir visų šių kintamųjų 3 kalbame apie 3 minutes, 446 00:28:11,650 --> 00:28:15,420 ir kad puiku, visiškai teisingai, atskirai, 447 00:28:15,420 --> 00:28:20,740 bet ir b taikymo sritis tik čia Šiose eilutėse. 448 00:28:20,740 --> 00:28:24,790 >> Taigi, kaip ir už linijos, jei paskelbti sveikasis skaičius i viduje už linijos, 449 00:28:24,790 --> 00:28:28,760 Panašiai, jei jūs skelbiantis A ir B funkcijos viduje, kad rašėte, 450 00:28:28,760 --> 00:28:33,320 jie galioja tik šios funkcijos viduje, o tai reiškia, kuo greičiau apsikeitimo daroma vykdant 451 00:28:33,320 --> 00:28:38,470 ir mes einame iš LINE 25 24 eilutėje, x ir y nėra pasikeitė ne visi. 452 00:28:38,470 --> 00:28:42,790 Jūs tiesiog švaistomi visai daug metu apsikeičiama kintamųjų kopijas. 453 00:28:42,790 --> 00:28:47,010 Taigi paaiškėja, kad sprendimas yra tai tikrai ne akivaizdus. 454 00:28:47,010 --> 00:28:50,670 Tai ne visai pakanka grąžinti reikšmes, nes mes galime grąžinti tik 1 kartą vertė, 455 00:28:50,670 --> 00:28:53,470 ir aš tikrai norite apsikeitimo x ir y, tuo pačiu metu, 456 00:28:53,470 --> 00:28:55,210 todėl mes ketiname grįžti į tai. 457 00:28:55,210 --> 00:29:01,020 Bet dabar, reikia suprasti, kad klausimas iš esmės kilęs iš to, kad a ir b yra kopijos 458 00:29:01,020 --> 00:29:03,630 ir jie yra savo taikymo sritį. 459 00:29:03,630 --> 00:29:05,050 Pabandykime išspręsti šią problemą tam tikru būdu. 460 00:29:05,050 --> 00:29:11,250 Leiskite man iš tikrųjų slinkti atgal čia ir atverti, tarkim, ketvirtą variantą, buggy4. 461 00:29:11,250 --> 00:29:13,370 Ką apie tai? 462 00:29:13,370 --> 00:29:17,810 Tai yra panašus, bet paprastesnis problema, pažvelgti į tai, kol mes imtis Pabandyti išspręsti. 463 00:29:17,810 --> 00:29:24,190 Ši programa yra vadinamas prieaugis, ir matyt, inicijuoja x sveikasis skaičius 1 atitinka 18. 464 00:29:24,190 --> 00:29:28,150 Tada aš reikalauti, x 1, aš tada reikalauti "incrementing ..." 465 00:29:28,150 --> 00:29:33,730 Aš tada skambinti prieaugį, bet tada į 22 ir 23 eilutes, aš patvirtinu, jis buvo padidinamas, 466 00:29:33,730 --> 00:29:40,220 Teigia, x yra dabar, kokia ji yra - 2, matyt, - bet ši programa yra Buggy. 467 00:29:40,220 --> 00:29:42,610 Kokia tai problema? 468 00:29:43,440 --> 00:29:50,160 Taip. >> [Nesigirdi studentas atsakas] >> Taip. 469 00:29:50,160 --> 00:29:52,490 SO x pareiškė, akivaizdu, kad 18 on-line. 470 00:29:52,490 --> 00:29:54,700 Tai yra viduje pagrindinis klamrami. 471 00:29:54,700 --> 00:29:58,440 Taigi paprastas atsakymas čia yra tai, kad x yra čia, 472 00:29:58,440 --> 00:30:03,930 ji neegzistuoja 32 eilutėje, todėl ši programa tikrai nebus net sudaryti. 473 00:30:03,930 --> 00:30:07,940 Sudarytojas, kai bandau sudaryti šį kodą ketina klykauti ne man 474 00:30:07,940 --> 00:30:14,100 apie kai nedeklaruoto identifikatorius arba kažką šiuo klausimu. Tiesą sakant, pabandykime. 475 00:30:14,100 --> 00:30:18,470 Tai padaryti buggy4. Ji yra. 476 00:30:18,470 --> 00:30:22,110 Naudoti nedeklaruojamo identifikatorius "X" 32 eilutėje. 477 00:30:22,110 --> 00:30:25,580 Ir iš tiesų, galime būti aiškiai čia šiandien taip, kad tai yra naudinga 478 00:30:25,580 --> 00:30:27,580 darbo valandomis, ir namuose. 479 00:30:27,580 --> 00:30:29,300 >> Atkreipkite dėmesį, kad tai šiek tiek cryptically parašyta. 480 00:30:29,300 --> 00:30:37,270 Tačiau tai, kad Apsukite metalinis garsas turi rėkė į mus, sakydamas buggy4.c: 32:5, yra iš tikrųjų naudinga. 481 00:30:37,270 --> 00:30:42,050 Tai reiškia, kad klaida yra ne simbolių pozicijos 5 32 eilutėje. 482 00:30:42,050 --> 00:30:46,700 So 1, 2, 3, 4, 5. Štai, iš tiesų, kai problema yra. 483 00:30:46,700 --> 00:30:49,790 Ir taip pat, taip pat nepamiršti, darbo valandomis, ir namuose, aš esu laimingas čia. 484 00:30:49,790 --> 00:30:52,990 Turiu vieną klaidą. Tai bus gana lengva nustatyti. 485 00:30:52,990 --> 00:30:55,990 Bet jei jūs gaunate visą ekraną, pilną didžioji klaidų pranešimų, 486 00:30:55,990 --> 00:31:00,330 dar kartą suprasti, kad gali būti tik simptominis viršutinis vienas apatinis. 487 00:31:00,330 --> 00:31:03,450 Todėl visada Chase žemyn klaidas iš viršaus į apačią 488 00:31:03,450 --> 00:31:05,820 , nes ten gali būti tiesiog Ziedlapķēde efektas 489 00:31:05,820 --> 00:31:09,240 kad siūlo, jūs turite būdas daugiau problemų, negu jūs iš tikrųjų. 490 00:31:09,240 --> 00:31:15,150 Taigi, kaip mes galime išspręsti šią problemą, jei mano tikslas yra prieaugio x? >> [Studentas] x pasaulio. 491 00:31:15,150 --> 00:31:17,060 Gerai, kad mes galime padaryti x Global. 492 00:31:17,060 --> 00:31:20,480 Paimkime nuorodą, kad aš perspėjo apie anksčiau, bet gi, mums tik reikia greitai nustatyti, 493 00:31:20,480 --> 00:31:25,730 todėl galime tik pasakyti, int x, čia. Tai daro x Global. 494 00:31:25,730 --> 00:31:31,800 Taigi dabar turi prieigą prie jo ir prieaugio turi prieigą prie jo pagrindinis 495 00:31:31,800 --> 00:31:34,110 ir todėl leiskite man eiti į priekį ir kaupti tai dabar. 496 00:31:34,110 --> 00:31:37,630 Padaryti buggy4, "Enter". Atrodo sudaryti dabar. 497 00:31:37,630 --> 00:31:41,230 Apsvarstykite, buggy4. Ir atrodo, kad faktiškai dirba. 498 00:31:41,230 --> 00:31:45,150 Tai yra vienas iš šių dalykų, kad padaryti, kaip aš sakau, o ne kaip aš, 499 00:31:45,150 --> 00:31:47,010 kaip aš tiesiog padaryti čia, nes apskritai, 500 00:31:47,010 --> 00:31:50,440 mūsų programos ketinate gauti daug įdomiau ir daug ilgiau, nei tai, 501 00:31:50,440 --> 00:31:56,390 ir, jei jūsų gyvenimo problemų sprendimas tiesiog įdėti visus kintamuosius failo viršuje 502 00:31:56,390 --> 00:31:59,690 labai greitai programos gauti horrifically sunku valdyti. 503 00:31:59,690 --> 00:32:02,190 Ji pasireiškia sunkiau sugalvoti naujų kintamųjų vardai, 504 00:32:02,190 --> 00:32:05,240 ji pasireiškia sunkiau suprasti, ką kintamasis yra tai, ką, 505 00:32:05,240 --> 00:32:08,460 ir apskritai, tai yra nėra geras sprendimas. 506 00:32:08,460 --> 00:32:10,030 Todėl galime tai padaryti geriau. 507 00:32:10,030 --> 00:32:12,160 Mes nenorime naudoti pasaulinį kintamąjį. 508 00:32:12,160 --> 00:32:16,240 >> Aš noriu prieaugio x, kad galėčiau akivaizdžiai 509 00:32:16,240 --> 00:32:18,670 dienos pabaigoje, tai yra rūšies kvailas istorija, nes mes tiesiog tai padaryti - 510 00:32:18,670 --> 00:32:24,450 bet jei aš ne žinoti apie tokio subjekto ar aš nebuvo leista jį pakeisti pagrindinio pati, 511 00:32:24,450 --> 00:32:30,730 kaip kitaip galėčiau įgyvendinti Ken čia šį kartą ne kubo, bet prieaugio? 512 00:32:31,380 --> 00:32:33,190 Kaip aš galiu pasikeisti tai, ką čia? Taip. 513 00:32:33,190 --> 00:32:38,480 [Studentas] Pereiti į x ir tada grįžti [nesigirdi] >> Gerai, gerai. 514 00:32:38,480 --> 00:32:41,900 Tad kodėl gi ne galiu perduoti x ir tada, o ne grąžinti, 515 00:32:41,900 --> 00:32:44,870 kodėl ne aš tiesiog grąžinti x + 1. 516 00:32:44,870 --> 00:32:47,710 Pora daugiau ką keisti čia. Aš esu teisingame kelyje. 517 00:32:47,710 --> 00:32:49,770 Ką dar man reikia įgnybti? Kas nors kitas. Taip. 518 00:32:49,770 --> 00:32:51,740 [Nesigirdi studentas atsakas] 519 00:32:51,740 --> 00:32:54,730 Man reikia pakeisti grįžimo tipo prieaugio, nes jis negaliojančiomis. 520 00:32:54,730 --> 00:32:57,780 Void reiškia nieko yra grąžinamas, bet aiškiai dabar ji yra, 521 00:32:57,780 --> 00:32:59,830 , todėl tai turi pakeisti - >> [studentas] int. 522 00:32:59,830 --> 00:33:02,740 int turi būti suderinti su kokia aš tikrai grįžta. 523 00:33:02,740 --> 00:33:05,180 Dabar kažkas vis dar Buggy čia. Taip. 524 00:33:05,180 --> 00:33:08,400 [Nesigirdi studentas atsakas] >> [Malan] Taigi man reikia prieaugio x? 525 00:33:08,400 --> 00:33:12,080 [Nesigirdi studentas atsakas] >> [Malan] Ak, kad man reikia praeiti x. 526 00:33:12,080 --> 00:33:16,660 Taigi man reikia tai padaryti čia. >> [Nesigirdi studentas komentaras] 527 00:33:16,660 --> 00:33:20,050 [Malan] Taigi, prototipas, turiu pakeisti čia. 528 00:33:20,050 --> 00:33:22,930 Taigi, tai turi tapti int, tai turi tapti 529 00:33:22,930 --> 00:33:25,620 hmm, aš iš tikrųjų turi apie klaidą čia. Leiskite išspręsti šią iš pradžių. 530 00:33:25,620 --> 00:33:29,590 Ką tai turėtų būti iš tiesų? Tai turi būti int kažkas. 531 00:33:29,590 --> 00:33:32,700 Tai gali būti x, bet atvirai, jei pradėsite Kreipiamės į visus savo kintamieji x, 532 00:33:32,700 --> 00:33:35,390 ji ketina gauti mažiau aišku, kas yra kas. 533 00:33:35,390 --> 00:33:39,560 >> Todėl galime tik savavališkai pasirinkti kitą pavadinimų konvencijos mano pagalbininkas funkcijas, 534 00:33:39,560 --> 00:33:41,940 funkcijos, aš rašau. Mes jį vadiname, ar galėtume vadinti - 535 00:33:41,940 --> 00:33:45,010 Tegul jį vadiname skaičius būtų dar aiškesnis. 536 00:33:45,010 --> 00:33:47,560 Taigi tada aš turiu grįžti, bet skaičius plius 1, 537 00:33:47,560 --> 00:33:50,740 ir dabar turiu pakeisti 1 kitas dalykas, čia ir vienas kitas dalykas čia. 538 00:33:50,740 --> 00:33:54,350 Ką turiu pakeisti eilutę 21? >> [Nesigirdi studentas atsakas] 539 00:33:54,350 --> 00:33:57,610 [Malan] Turiu perduoti jas x. Aš negaliu tiesiog paskambinti prieaugis (x). 540 00:33:57,610 --> 00:34:01,960 Man reikia prisiminti atsakymą keičiant x reikšmė kairėje pusėje. 541 00:34:01,960 --> 00:34:04,680 Ir nors čia x yra dabar į kairę ir į dešinę, kad visiškai gerai 542 00:34:04,680 --> 00:34:08,860 nes dešinėje pusėje pirmiausia paleidžiama vykdyti gauna plopped į kairėje dalykas - 543 00:34:08,860 --> 00:34:10,600 x šiuo atveju. 544 00:34:10,600 --> 00:34:12,159 Ir tada galiausiai, tai lengva nustatyti. 545 00:34:12,159 --> 00:34:17,230 Tai tiesiog reikia suderinti, kas yra žemiau, int numeris. 546 00:34:17,230 --> 00:34:20,570 Taigi visa krūva pakeitimų tikrai kvailas funkcija 547 00:34:20,570 --> 00:34:24,420 bet atstovas dalykų, kad mes vis labiau nori daryti. 548 00:34:24,420 --> 00:34:27,090 Todėl įsitikinkite, buggy4. Aš įsukus kažkur. 549 00:34:27,090 --> 00:34:30,139 O, Dieve. Penkios klaidos 6-line programos. 550 00:34:30,139 --> 00:34:35,690 Taigi, kas yra negerai on line 18 5, charakteris? 551 00:34:35,690 --> 00:34:39,610 Taigi, aš turiu deklaruoti savo, int. 552 00:34:39,610 --> 00:34:41,920 Pažiūrėkime. Yra visa krūva kitų klaidų. 553 00:34:41,920 --> 00:34:47,010 O, mano Dievas - 19, 18, 21 - bet vėl, tegul tiesiog išvalyti ekraną, Valdymo L, 554 00:34:47,010 --> 00:34:49,380 ir iš naujo Apsukite metalinis garsas. 555 00:34:49,380 --> 00:34:51,340 Taigi 5 problemos iš tikrųjų yra tik tai, kad 1. 556 00:34:51,340 --> 00:34:57,520 Taigi dabar galime paleisti buggy4, "Enter". FIU, x buvo padidinamas teisingai. 557 00:34:57,520 --> 00:35:02,720 Gerai. Kokių nors klausimų apie tai, kaip prieaugio skaičius? Taip. 558 00:35:02,720 --> 00:35:09,870 [Nesigirdi studentas klausimas] >> Geras klausimas. 559 00:35:09,870 --> 00:35:14,220 Kaip tai, kad aš galiu tiesiog pakeisti x skaičių ir programa bus iš karto žinoti? 560 00:35:14,220 --> 00:35:16,200 >> Vėlgi, manau, apie tai, kaip šios abstrakcijos. 561 00:35:16,200 --> 00:35:21,600 Taigi, jei aš esu pagrindinis ir Kenas yra prieaugis, atvirai, aš ne rūpintis, ką Ken vadina savo "iPad". 562 00:35:21,600 --> 00:35:26,570 Man nerūpi, ką jis vadina nieko, kad turi daryti su savo šios funkcijos įgyvendinimą. 563 00:35:26,570 --> 00:35:33,340 Tai įgyvendinimas detalė, kad aš, pagrindinė, nereikia rūpintis. 564 00:35:33,340 --> 00:35:38,250 Ir taip tiesiog pakeisti jį nuolat viduje funkcija - čia ir numeris čia 565 00:35:38,250 --> 00:35:40,960 yra visa tai trunka taip ilgai, kaip aš perkompiliuoti. 566 00:35:40,960 --> 00:35:44,180 Tai tarsi patinka, jei jūs manote apie daugelis iš mūsų, tiems iš jūsų, su vairuotojų pažymėjimus 567 00:35:44,180 --> 00:35:46,770 , kurie sukelia arba jei jūs net važiuoti automobilyje, 568 00:35:46,770 --> 00:35:50,950 dauguma iš mūsų neįsivaizduoju, kaip automobilis veikia po kapotu. 569 00:35:50,950 --> 00:35:54,970 Ir tiesiogine prasme, jeigu Jūs atidarote gaubtą, dauguma iš mūsų - tarp jų ir aš - 570 00:35:54,970 --> 00:35:56,940 nesiruošia tikrai žinote, ką mes ieškome, 571 00:35:56,940 --> 00:35:59,220 rūšies, kaip jūs galite jausti dalykų, kaip šios teisės dabar. 572 00:35:59,220 --> 00:36:01,480 Bet mes tikrai turime rūpintis, kaip veikia automobilis, 573 00:36:01,480 --> 00:36:05,970 mes neturime rūpintis, ką visi strypai ir stūmoklius ir kabelių viduje iš automobilio 574 00:36:05,970 --> 00:36:08,160 iš tikrųjų daro. 575 00:36:08,160 --> 00:36:12,770 Taigi kažkas panašaus į tai, ką vadiname stūmoklio čia šiuo atveju nesvarbu. Pati idėja. 576 00:36:12,770 --> 00:36:25,300 Taip. >> [Nesigirdi studentas klausimas] 577 00:36:25,300 --> 00:36:29,180 Jei yra daugiau naudoja kintamojo xa metu prieš 578 00:36:29,180 --> 00:36:32,150 jūs, programuotojas, turėtų pakeisti juos visur. 579 00:36:32,150 --> 00:36:36,600 Arba jūs tiesiog gali padaryti failą, meniu, ir tada ieškoti, pakeisti - kažką panašaus, kad - 580 00:36:36,600 --> 00:36:39,170 , bet jūs ketinate turi atlikti šiuos pakeitimus sau. 581 00:36:39,170 --> 00:36:47,450 Jūs turite būti nuoseklūs. >> [Studentas] Jei yra keli kintamieji [nesigirdi] 582 00:36:47,450 --> 00:36:53,100 Tikra tvarka kaip čia, jei tai buvo int kitą numerį? >> [Studentas] Teisingas. 583 00:36:53,100 --> 00:36:56,590 [Malan] Taip. Užsakymo svarbu, kai skambinate funkciją. 584 00:36:56,590 --> 00:37:00,050 >> Taigi, jei aš vadino prieaugis čia su kažkuo kableliais kažką, 585 00:37:00,050 --> 00:37:01,680 yra tiesioginis žemėlapių. 586 00:37:01,680 --> 00:37:05,690 Pirmasis kintamasis, kokia ji vadinama, yra pirmojo argumento per čia kopiją. 587 00:37:05,690 --> 00:37:07,760 Atsiprašau. Tai neturėtų būti skliausto. 588 00:37:07,760 --> 00:37:11,490 Antrasis argumentas linijos iki su antrąją. Taigi, kad taip, klausimai. Gerai. 589 00:37:11,490 --> 00:37:17,020 Atsiprašau. Aš paėmė ilgą kelią, kad ten patekti. Kiti klausimai? Gerai. 590 00:37:17,020 --> 00:37:20,610 Taigi pažiūrėkime, jei mes negalime dažų vaizdą apie tai, kas iš tikrųjų vyksta čia 591 00:37:20,610 --> 00:37:23,090 po kapotu, taip sakant. 592 00:37:23,090 --> 00:37:26,640 Tai stačiakampis, gali atstovauti jūsų kompiuterio atminties. 593 00:37:26,640 --> 00:37:30,970 Net jei jūs neturite idėjos, kaip atmintis veikia arba kaip RAM darbai, 594 00:37:30,970 --> 00:37:33,940 bent jau manyti, kad turite kekių šių dienų. 595 00:37:33,940 --> 00:37:36,280 Jūs turite megabaitų, jūs turite gigabaitų, 596 00:37:36,280 --> 00:37:40,870 ir mes žinome, nuo 0 savaitę, baitų yra tai, ką? >> [Studentas] 8 bitai. 597 00:37:40,870 --> 00:37:42,950 8 bitai, tiesa? Taigi 8 nuliai ir 1. 598 00:37:42,950 --> 00:37:45,880 Taigi, jei jūsų kompiuteryje yra RAM koncertą, 2 koncertai RAM šių dienų, 599 00:37:45,880 --> 00:37:55,030 turite milijardą arba 2 mlrd. baitųatminties arba maždaug 8 milijardų eurų arba 16 milijardų bitų 600 00:37:55,030 --> 00:37:56,890 viduje kompiuterio. 601 00:37:56,890 --> 00:38:00,590 Skirtingai nei mažai vilnonis Willy Pavyzdžiui, tai nėra magnetinės dalelės paprastai nebėra. 602 00:38:00,590 --> 00:38:04,450 Vis nešiojamieji kompiuteriai mažiausiai - tai kietojo kūno diskai, SSD, 603 00:38:04,450 --> 00:38:08,580 , kad tiesiog neturi judančių dalių. Visa tai yra elektroninis. Tai visi elektros energijos. 604 00:38:08,580 --> 00:38:14,060 Todėl manau, kad šio stačiakampio kaip tik atstovaujanti 1 arba 2 gigabaitų atminties, kad jūs turite. 605 00:38:14,060 --> 00:38:16,020 >> Todėl atminties riekė. 606 00:38:16,020 --> 00:38:19,830 Kompiuterių mokslo pasaulyje yra tarsi atitverta 607 00:38:19,830 --> 00:38:22,950 gabaliukus atminties, tai skirtingi dalykai. 608 00:38:22,950 --> 00:38:27,190 Pavyzdžiui, jei tai yra jūsų kompiuterio RAM, kaip siūloma pagal stačiakampio ten, 609 00:38:27,190 --> 00:38:31,130 paaiškėja, kad pagal susitarimą, jūsų RAM viršuje, taip sakant, 610 00:38:31,130 --> 00:38:33,660 paprastai yra tai, kas vadinama teksto segmentas. 611 00:38:33,660 --> 00:38:36,740 Tie, kurie 0s ir 1s, kad jūs turite surinkti. 612 00:38:36,740 --> 00:38:39,020 Taigi, kai mes pažvelgė po kapotu, ne ką a.out 613 00:38:39,020 --> 00:38:41,980 visa tai 0s ir 1s, kai paleidžiate programą, 614 00:38:41,980 --> 00:38:46,290 tiems 0s ir 1s yra pakraunami iš jūsų kietojo disko į kažką vadinama RAM, 615 00:38:46,290 --> 00:38:49,320 ir jie įdėti RAM viršuje. 616 00:38:49,320 --> 00:38:52,770 Tuo tarpu, jūs turite kitų dalykų: inicijuoja duomenis, uninitialize duomenis. 617 00:38:52,770 --> 00:38:57,510 Tos 2 swaths atminties kreiptis į globalių kintamųjų, kurie jums nereikia dažnai naudoja 618 00:38:57,510 --> 00:39:00,760 bet kartais, jei jūs darote, jie galų gale ten taip pat. 619 00:39:00,760 --> 00:39:04,260 Tada ten kai kurių kitų dalykų: aplinkos kintamieji, kuriuos mes ne išleisti daug laiko, 620 00:39:04,260 --> 00:39:06,860 bet tada 2 svarbių dalykų, kad bus grįžti visą semestrą, 621 00:39:06,860 --> 00:39:08,550 kamino ir krūvos. 622 00:39:08,550 --> 00:39:12,210 Taigi, dauguma iš jūsų kompiuterio atmintyje yra saugomos, kai buvo paleista programa 623 00:39:12,210 --> 00:39:15,370 kažko vadinamas kamino ir kažką vadinama krūvos. 624 00:39:15,370 --> 00:39:18,840 Mes neketiname kalbėti apie krūvos šiandien, bet mes kalbame apie kamino. 625 00:39:18,840 --> 00:39:24,600 Kamino yra skirtas įsivaizduoti vizualus ir valgomajame valgio padėklai Mather House 626 00:39:24,600 --> 00:39:28,110 arba, kad ir kur bebūtumėte būti ten, kur valgykla darbuotojai valyti juos kasdien, 627 00:39:28,110 --> 00:39:30,180 jie sukrauti juos nuo grindų iki 628 00:39:30,180 --> 00:39:34,550 ir panašiai, atminties, yra ši idėja pradėti kažką ant kamino, 629 00:39:34,550 --> 00:39:36,860 pradėti kažką ant kamino, pradėti kažką kamino. 630 00:39:36,860 --> 00:39:38,240 Ir ką reiškia šis? 631 00:39:38,240 --> 00:39:41,860 >> Leiskite padidinti tik apatinėje šioje nuotraukoje, kompiuterio RAM, 632 00:39:41,860 --> 00:39:44,330 pasiūlyti šias. 633 00:39:44,330 --> 00:39:48,170 Pasirodo, kad kai paleidžiate programą, kaip a.out arba Hello - 634 00:39:48,170 --> 00:39:50,100 kokia programa yra kad rašėte - 635 00:39:50,100 --> 00:39:54,020 vėl, tie 0s ir 1s yra įkelti iš savo kietąjį diską, kuris yra ilgalaikio saugojimo, 636 00:39:54,020 --> 00:39:57,230 lieka ten, net jei jūs traukite už kištuko, pakrautas į RAM. 637 00:39:57,230 --> 00:40:00,610 RAM greičiau nei kietieji diskai - tai mažesni nei standžiųjų diskų - 638 00:40:00,610 --> 00:40:03,300 bet tai kur programos gyventi, o jūs naudojate juos. 639 00:40:03,300 --> 00:40:08,230 Taigi, jūs dukart spustelėkite programą ant Mac arba PC, jis pakrautas iš kietojo disko į operatyvią atmintį. 640 00:40:08,230 --> 00:40:11,520 Iš karto, kai jis pakrautas į RAM, 0s ir 1s eiti į tai, kaip viršuje, 641 00:40:11,520 --> 00:40:16,610 vadinamoji teksto segmentas, bet tada kuo greičiau jūsų programa iš tikrųjų prasideda, 642 00:40:16,610 --> 00:40:21,360 pagrindinė funkcija yra vadinama, ir pagrindinis, kaip mes matėme, dažnai yra vietos kintamieji, 643 00:40:21,360 --> 00:40:24,870 ir ji turi Ints ir styginiams ir simbolių ir pan. 644 00:40:24,870 --> 00:40:29,180 Taigi, jei jūsų programa, kad jūs turite raštu arba programa, kad jūs turite du kartus paspausti 645 00:40:29,180 --> 00:40:32,970 naudojamas kai kurių kintamųjų, viduje prie Maino, 646 00:40:32,970 --> 00:40:37,240 jie galų gale savo atminties kamino apačioje, taip sakant. 647 00:40:37,240 --> 00:40:39,410 Konkrečiau, ką tai iš tikrųjų reiškia? 648 00:40:39,410 --> 00:40:48,450 Tai tiesiog reiškia, kad, jei mes ketiname skaičius baitų RAM savo kompiuteryje, 649 00:40:48,450 --> 00:40:55,750 pastebėsite, kad tai gali būti baitų skaičius "0", tai gali būti baitų skaičius 1, 2, 3, 4, 5, 6, 650 00:40:55,750 --> 00:41:01,480 visą kelią iki 2 milijardų būtų visą kelią iki ten viršuje. 651 00:41:01,480 --> 00:41:05,880 Taigi, kitaip tariant, kai mes kalbame apie RAM arba atminties baitų, 652 00:41:05,880 --> 00:41:11,500 tai tiesiog reiškia, kad kažkas nusprendė ką sunumeruoja kiekvieną iš šių atminties gabaliukus. 653 00:41:11,500 --> 00:41:16,650 Taigi, kai jūs turite 32 bitų int, ar jums reikia 8 bitai char, 654 00:41:16,650 --> 00:41:18,840 kur jie galų gale į atmintį? 655 00:41:18,840 --> 00:41:22,350 >> Konceptualiai, jie tiesiog galų gale šis dalykas, vadinamas kamino apačioje. 656 00:41:22,350 --> 00:41:25,870 Bet kas įdomu, dabar, kai pagrindinis ragina funkcija - 657 00:41:25,870 --> 00:41:28,750 Tarkime, funkcija vadinama Foo, tiesiog savavališkai vardas 658 00:41:28,750 --> 00:41:32,330 kas atsitinka, yra pagrindinis šios atminties kamino apačioje; 659 00:41:32,330 --> 00:41:35,680 foo dabar yra ant Maino atmintyje. 660 00:41:35,680 --> 00:41:40,990 Taigi foo vietinius kintamuosius, kurie turi baigtis rūšiuoti konceptualiai ypač tiems, pagrindinis. 661 00:41:40,990 --> 00:41:47,070 Jei foo ragina kitą funkciją, vadinamą baras, šie kintamieji galų gale čia. 662 00:41:47,070 --> 00:41:50,120 Jei juosta ragina ką nors kita, čia, čia, čia. 663 00:41:50,120 --> 00:41:53,830 Taigi, kas įdomu paleista programa yra ta, kad, kaip jūs Skambinimo funkcijos 664 00:41:53,830 --> 00:41:57,750 ir kaip šios funkcijos Skambinimo funkcijos ir kaip šios funkcijos Skambinimo funkcijos, 665 00:41:57,750 --> 00:42:01,470 jums sukurti šią atminties funkcijų krūvą. 666 00:42:01,470 --> 00:42:06,890 Ir tik kartą per funkcija grąžina jums pradėti gauti, kad atminties atgal. 667 00:42:06,890 --> 00:42:10,860 Taigi, vienas iš paprasčiausių būdų, kaip paleisti iš atminties į kompiuterinę programą 668 00:42:10,860 --> 00:42:14,360 yra parašyti funkcijas, kad niekada grįžti. 669 00:42:14,360 --> 00:42:18,900 Taigi, pavyzdžiui, galime įrodyti, kiek su tyčia Buggy programą. 670 00:42:18,900 --> 00:42:22,230 Leiskite man eiti į priekį ir padaryti # include , 671 00:42:22,230 --> 00:42:25,000 int main (void), 672 00:42:25,000 --> 00:42:32,940 ir aš ruošiuosi daryti, o (2> 1), kuris tikriausiai nebus kada nors pakeisti į mus, 673 00:42:32,940 --> 00:42:37,560 ir leiskite man eiti į priekį, dabar ir daryti printf. 674 00:42:37,560 --> 00:42:40,700 Tiesą sakant, tai bus mažiau vizualiai įdomus. Darykime tai. 675 00:42:40,700 --> 00:42:50,240 Int i = 0; i> 0 - galime padaryti šią klaidą - i + +. 676 00:42:50,240 --> 00:42:52,720 Ir tegul ne printf čia. Tegul praktiškai tai, ką aš pamokslavo. 677 00:42:52,720 --> 00:43:00,190 Tegul turi metodą, void choras, ir mes pasakyti, int i, 678 00:43:00,190 --> 00:43:06,830 ir tada aš ruošiuosi pasakyti printf - ne, padarykime tai įdomiau. 679 00:43:06,830 --> 00:43:15,790 Leiskite tikrai ne spausdinti ką nors ne visi. Tegul tik tai padaryti: choras (i). 680 00:43:15,790 --> 00:43:20,390 Gerai. Taigi tai yra Buggy nes kodėl? 681 00:43:20,390 --> 00:43:23,380 Aš tai kaip aš eiti, nes programa nėra iš tikrųjų nieko daryti interesų. 682 00:43:23,380 --> 00:43:25,320 >> Bet tai nėra tikslas. 683 00:43:25,320 --> 00:43:29,630 Tikslas yra rašyti programą, kurios pagrindinė funkcija ką daro, matyt? 684 00:43:30,720 --> 00:43:32,860 Pati. Ir iš tikrųjų, mes nereikia kilpą. 685 00:43:32,860 --> 00:43:37,200 Leiskite netgi supaprastinti, tai tik taip, kad nebūtų pamiršti tikrai pagrindinės klaidą. 686 00:43:37,200 --> 00:43:39,640 Pagrindiniai ragina choras dainuoti kai choras, 687 00:43:39,640 --> 00:43:41,440 tada aš kažką kvaila ir aš turėjo chorus skambučių choras 688 00:43:41,440 --> 00:43:43,760 nes aš manyti, kažkas buvo gal ją įgyvendinti, 689 00:43:43,760 --> 00:43:47,210 o dabar tai nesiruošia sudaryti dar. Man reikia daryti tai, ką? 690 00:43:47,210 --> 00:43:49,970 Man reikia prototipą, prisiminti. 691 00:43:49,970 --> 00:43:56,110 Taigi man reikia, kad čia void choras (int i); 692 00:43:56,110 --> 00:43:59,210 Taigi dabar, jei aš einu čia - iš tiesų, galime naudoti didesnį langas. 693 00:43:59,210 --> 00:44:01,980 Eikime į priekį ir padaryti choras. 694 00:44:01,980 --> 00:44:06,490 Eikime į priekį ir padaryti choras. 695 00:44:06,490 --> 00:44:08,370 Nedeklaruojamo identifikatorių i. 696 00:44:08,370 --> 00:44:12,500 O, kad buvo kvaila. Mums nereikia argumento. Tegul tik tai padaryti. 697 00:44:12,500 --> 00:44:16,370 Linkiu, kad pradėjo šį kelią. Būtų buvę daug lengviau programa rašyti. 698 00:44:16,370 --> 00:44:25,590 Yra. Dabar leiskite eiti per mano terminalo lange, pakartotas Apsukite metalinis garsas, ir čia mes einame. 699 00:44:25,590 --> 00:44:28,460 Tai buvo iš tiesų greitai. 700 00:44:28,460 --> 00:44:31,150 Kas iš tikrųjų tiesiog atsitiko, nors? 701 00:44:31,150 --> 00:44:33,730 Na, dabar aš pridėsiu spausdinimo liniją, todėl mes galime pamatyti. 702 00:44:33,730 --> 00:44:43,490 Leiskite man pasakyti printf ("Aš esu čia") - kintamieji nėra. Jį paliksime, kaip kad. 703 00:44:43,490 --> 00:44:47,480 Leiskite man iš naujo paleisti padaryti. Leiskite man pakartotas choras. 704 00:44:47,480 --> 00:44:57,380 Ir ... come on. Nesustoti. 705 00:44:57,380 --> 00:44:59,930 Kaip panaikinti, kodėl tai nėra sudužo dar? 706 00:44:59,930 --> 00:45:02,080 Segmentavimo kaltės įvyko prieš super greitai. 707 00:45:02,080 --> 00:45:06,570 [Nesigirdi studentas atsakas] >> Taip. Todėl užtrunka laiko spausdinti, tiesa? 708 00:45:06,570 --> 00:45:08,610 Jis tiesiog reikia daugiau kompiuterio darbą. 709 00:45:08,610 --> 00:45:10,620 Ir ten yra: Segmentavimas kaltė. 710 00:45:10,620 --> 00:45:12,340 >> Taigi pastebėsite, kaip greitai programas paleisti. 711 00:45:12,340 --> 00:45:14,130 Jei jūs nieko nespausdina, super greitai. 712 00:45:14,130 --> 00:45:18,770 Bet mes vis dar turime šį segmentavimo kaltės, nes tai, kas vyksta? 713 00:45:18,770 --> 00:45:21,210 , Jei jūs manote apie tai, kaip jūsų kompiuterio atminties yra išdėstyti, 714 00:45:21,210 --> 00:45:28,740 tai atsitinka būti pagrindinis, bet čia galime tik paskambinti šį choras, ir tegul vadiname šį priedainį. 715 00:45:28,740 --> 00:45:34,550 Ir dabar, jei aš tai padaryti savo estetiką, teisę, tai tiesiog vyksta pasakyti, choras, choras, choras, 716 00:45:34,550 --> 00:45:40,550 choras, choras, choras, choras, skelbimą nauseum, ir, galų gale, kas nutiks? 717 00:45:40,550 --> 00:45:45,630 Jei vaizdą, pažodžiui, yra tai, kas atsitinka konceptualiai? 718 00:45:46,520 --> 00:45:48,630 Kamino viršijimus krūvos. 719 00:45:48,630 --> 00:45:51,940 Arba, dar blogiau, jūs tiesiog viršijo viską, įskaitant teksto segmente, 720 00:45:51,940 --> 00:45:54,590 0s ir 1s, kurie atstovauja savo programą. 721 00:45:54,590 --> 00:45:57,080 Trumpai tariant, tai yra tiesiog super, super blogai. 722 00:45:57,080 --> 00:45:58,830 Jūsų programa spiralled iš kontrolės. 723 00:45:58,830 --> 00:46:01,220 Jūs naudojate būdas daugiau atminties nei manėte 724 00:46:01,220 --> 00:46:03,960 visi, nes kvaila klaida šiuo atveju, 725 00:46:03,960 --> 00:46:08,040 ar šiuo atveju labai sąmoningai padaryta funkcija skambinama. 726 00:46:08,040 --> 00:46:09,500 Dabar, tai yra ne visi blogi. 727 00:46:09,500 --> 00:46:13,800 Funkcijos, vadinančios save iš tikrųjų turi didelę galią, kai jūs jį naudoti teisingai. 728 00:46:13,800 --> 00:46:15,800 Aš ne naudoti jį teisingai čia. 729 00:46:15,800 --> 00:46:19,780 Taigi tai yra ne visi blogi, bet tai, kad aš niekada iš tikrųjų sustabdyti paskambinus save 730 00:46:19,780 --> 00:46:23,520 yra pagrindinis silpnumas čia šios programos. 731 00:46:23,520 --> 00:46:26,400 Taigi, kur mes einame su visa tai? Kas iš tikrųjų vyksta? 732 00:46:26,400 --> 00:46:30,340 Kai aš vadinu prieaugio funkciją, kaip mes darome šių pavyzdžių, 733 00:46:30,340 --> 00:46:33,420 Turiu kaip 1 i kirsti. 734 00:46:33,420 --> 00:46:37,570 Galiu perduoti skaičiumi 1 kopiją, kad taip atsitinka. 735 00:46:37,570 --> 00:46:44,240 Eikime į prieaugio Pavyzdžiui, ši teisė čia vaikinas. 736 00:46:44,240 --> 00:46:46,870 Štai kas iš tikrųjų vyksta. 737 00:46:46,870 --> 00:46:53,400 Kai aš vadinu prieaugį ir galiu perduoti x, pictorially, kas čia vyksta. 738 00:46:53,400 --> 00:46:59,520 >> Jeigu aš turiu čia saugomi vertė yra lygi 1, ir aš iš tikrųjų skambinti prieaugis, 739 00:46:59,520 --> 00:47:04,330 , kuris dabar vadinamas choras - iPad mesti man čia išlipti. 740 00:47:04,330 --> 00:47:09,760 Susisiekime Šis padidėjimas, ir mes nežinome, ką ši funkcija bus. 741 00:47:09,760 --> 00:47:14,840 Taigi, kas iš tikrųjų vyksta kažkur čia pagrindinis Turiu atminties riekė 742 00:47:14,840 --> 00:47:17,000 kad kaupia skaičių 1. 743 00:47:17,000 --> 00:47:19,380 Kai aš vadinu prieaugį, aš naudoju kitą atminties riekė, 744 00:47:19,380 --> 00:47:21,230 bet dabar turiu 1 kopiją. 745 00:47:21,230 --> 00:47:26,660 Kai aš prieaugio tą vertę, tai tampa 2, 746 00:47:26,660 --> 00:47:30,560 tačiau tai, kas atsitinka, kuo greičiau prieaugio grįžta? 747 00:47:30,560 --> 00:47:33,630 Ši atmintis tik bus grąžintas į operacinę sistemą, 748 00:47:33,630 --> 00:47:37,450 , o tai reiškia, jūs padaryti nieko naudinga. 749 00:47:37,450 --> 00:47:43,120 1, kuris iš pradžių buvo pateikta pagrindinio vis dar iš tikrųjų egzistuoja. 750 00:47:43,120 --> 00:47:44,890 Taigi, kur mes einame su tuo? 751 00:47:44,890 --> 00:47:49,770 Pasirodo, kad atmintyje turite šią atgal-to-back baitų seką 752 00:47:49,770 --> 00:47:53,050 , kad jūs galite įdėti stuff, ir paaiškėja, kad mes jau matėme kažką 753 00:47:53,050 --> 00:47:55,390 , kuris apima juos atgal atgal atgal atgal. 754 00:47:55,390 --> 00:47:59,860 Kas yra eilutė, remiantis 1 savaitę, ir dabar 2-ąją savaitę? 755 00:48:00,020 --> 00:48:01,980 Tai tik ženklų kolekcija. 756 00:48:01,980 --> 00:48:04,310 Taigi paaiškėja, kaip jūs galite įdėti atminties skaičių, 757 00:48:04,310 --> 00:48:06,990 taip pat jūs galite įdėti atminties simbolių. 758 00:48:06,990 --> 00:48:10,530 Ir kai mes pradėti naudoti simbolių atmintyje atgal atgal atgal atgal 759 00:48:10,530 --> 00:48:13,620 it turns out, kad naudojant paprasčiausių dalykų, pavyzdžiui, linijos ar while cikle, 760 00:48:13,620 --> 00:48:17,170 mes galime pakartoti iš kairės į dešinę per simbolių į eilutę 761 00:48:17,170 --> 00:48:20,600 ir pradėkite masažuoti juos į skirtingų charakterių, iš viso - 762 00:48:20,600 --> 00:48:23,370 gali tapti b, b gali tapti c 763 00:48:23,370 --> 00:48:27,780 , kad galiausiai, mes galime imtis anglišką sakinį, kad iš tikrųjų prasminga 764 00:48:27,780 --> 00:48:30,310 ir paversti kiekvieną iš šių laiškų 1 metu 765 00:48:30,310 --> 00:48:34,400 vaikščioti per mūsų kompiuterio atmintyje, iš kairės į dešinę, kad iš tikrųjų užšifruoti. 766 00:48:34,400 --> 00:48:35,810 Todėl galime imtis mūsų penkių minučių pertrauką, 767 00:48:35,810 --> 00:48:40,730 ir kai mes einame atgal, mes pradėsime šią informaciją kodavimo procesą. 768 00:48:42,020 --> 00:48:43,520 >> Gerai. 769 00:48:43,520 --> 00:48:48,070 Prieš mums pasinerti į tam tikrą kriptografijos ir šie dalykai vadinami matricos, 770 00:48:48,070 --> 00:48:51,470 leiskite man pristabdyti visus klausimus, nes aš jaučiuosi kaip aš tikrai rūšies painiojamos 771 00:48:51,470 --> 00:48:54,080 kai kurie iš šių temų. Todėl galime išspręsti dabar, jei mes galime. 772 00:48:54,080 --> 00:48:58,700 Mes tiesiog kalbėjomės apie grąžinti reikšmes, mes kalbėjome apie argumentų, 773 00:48:58,700 --> 00:49:03,250 ir mes kalbėjome apie šią sąvoką, kuriuos mes grįžti per kelias savaites ateiti, 774 00:49:03,250 --> 00:49:08,720 peržiūrėti atminties, visa krūva šių sukrauti padėklai, taip sakant, 775 00:49:08,720 --> 00:49:12,660 iš apačios On Up, tokia, kad kiekvienas, kad gauna įdėti kamino dėklas 776 00:49:12,660 --> 00:49:16,530 sudaro funkcija, kuri šiuo metu yra vadinamas. 777 00:49:17,900 --> 00:49:20,260 Turite klausimų? 778 00:49:20,260 --> 00:49:22,640 Leiskite man užduoti klausimą čia. 779 00:49:22,640 --> 00:49:27,890 Leiskite man supaprastinti šį atgal, kas buvo prieš kai kurie iš mūsų anksčiau Q & A 780 00:49:27,890 --> 00:49:35,570 Tai, kad prieaugis turi atvirą skliaustų, int numeris, uždaras skliausteliuose - 781 00:49:35,570 --> 00:49:39,110 ką int numeris? 782 00:49:39,110 --> 00:49:42,790 [Studentas] argumentas. >> Argumentas. Gerai. Bet koks argumentas? 783 00:49:42,790 --> 00:49:46,370 [Nesigirdi studentas atsakas] >> Kas tai? >> [Studentas] Kažkas, kad jums perduoti. 784 00:49:46,370 --> 00:49:49,940 Gerai, kad kažkas, kad jums perduoti in Ir apskritai, tai tik įėjimo. 785 00:49:49,940 --> 00:49:52,450 Jei jūs raštu funkciją ir šią funkciją tikslą gyvenime 786 00:49:52,450 --> 00:49:55,770 yra padaryti kažką šiek tiek skiriasi kiekvieną kartą, kai jį naudoti, 787 00:49:55,770 --> 00:50:00,110 tada vienintelis būdas, kad taip atsitiktų iš tikrųjų atrodytų, kad suteikti jai įvesties 788 00:50:00,110 --> 00:50:03,510 taip, kad jis gali padaryti kažką kitaip, kad įvesties kiekvieną kartą. 789 00:50:03,510 --> 00:50:06,650 >> Taigi, jums reikia nurodyti du dalykus, kai funkcija, įvesties. 790 00:50:06,650 --> 00:50:09,590 Jums reikia nurodyti vardą, kurį norite suteikti, kad pirkimo 791 00:50:09,590 --> 00:50:12,700 grynai savo patogumui, kad jūs galite kreiptis į jį 792 00:50:12,700 --> 00:50:16,540 funkcijos, kad jūs pats rašote, kaip aš čia 32 eilutėje. 793 00:50:16,540 --> 00:50:20,800 Bet jūs taip pat reikia nurodyti jo tipą, nes C yra programavimo kalba 794 00:50:20,800 --> 00:50:25,940 , kad tiesiog reikia, kad jei norite kintamąjį, turite pasakyti kompiuterio duomenų tipas, 795 00:50:25,940 --> 00:50:30,200 didele dalimi taip, kad jis žino,, kiek bitų skirti šiam kintamajam 796 00:50:30,200 --> 00:50:33,020 nes tai galėtų būti 6 - atsiprašau, ji negali būti 6. 797 00:50:33,020 --> 00:50:37,080 Tai gali būti 16, gali būti 8, ji gali būti 32, net 64 798 00:50:37,080 --> 00:50:39,130 bet kompiuteris turi žinoti. 799 00:50:39,130 --> 00:50:43,180 Dabar, int kairėje pusėje yra kas, priešingai? 800 00:50:46,350 --> 00:50:48,850 [Nesigirdi studentas atsakas] >> Kas tai? >> [Studentas] Tipas funkcija. 801 00:50:48,850 --> 00:50:53,610 Funkcijos tipą ir, konkrečiai kalbant, jos rezultatų tipas. Į dešinę. 802 00:50:53,610 --> 00:50:57,380 Taigi, o skliausteliuose dalykas atstovauja jo indėlis, jei tokių yra, 803 00:50:57,380 --> 00:50:59,660 dalykas, į kairę savo produkciją. 804 00:50:59,660 --> 00:51:03,530 Ir šiuo atveju, prieaugio, matyt, grąžina int, 805 00:51:03,530 --> 00:51:07,690 ir taip int yra grįžimo tipo šios funkcijos. 806 00:51:07,690 --> 00:51:09,340 Ką tai reiškia grįžti? 807 00:51:09,340 --> 00:51:15,090 Pažodžiui, galite naudoti raktažodžių deklaraciją ir tada, jei tai, ką jūs grįžta 808 00:51:15,090 --> 00:51:18,600 į dešinę nuo raktinio žodžio yra sveikasis skaičius, 809 00:51:18,600 --> 00:51:21,660 tada, kad yra iš tikrųjų atitinka su tuo, kas buvo žadėta. 810 00:51:21,660 --> 00:51:26,410 Tu negali padaryti kažką panašaus į tai - Hello, World - dėl to, kad yra eilutė. 811 00:51:26,410 --> 00:51:28,860 >> Akivaizdu, kad tai yra ne sveikasis skaičius. 812 00:51:28,860 --> 00:51:33,140 Taigi trumpai tariant, ši našta yra tikrai mums, programuotojas, tiksliau 813 00:51:33,140 --> 00:51:37,770 ką mes grįžta ir tada iš tikrųjų eiti apie grįžimą. 814 00:51:37,770 --> 00:51:43,440 Kontekstas čia dabar yra, kad jūsų kompiuterio atminties gigabaitų, 2 GB - 815 00:51:43,440 --> 00:51:45,920 kokia - gal daugiau, gal mažiau, 816 00:51:45,920 --> 00:51:49,050 bet kompiuteris tai mato kaip skirtingus skirsnius. 817 00:51:49,050 --> 00:51:51,200 Kažkas ten, kažkas eina ten, 818 00:51:51,200 --> 00:51:54,290 kitoks stuff eina per vidurį, ir šiandien mes tiesiog pradėti pasakoja istoriją, 819 00:51:54,290 --> 00:51:56,340 bet mes grįžti į šios laikui bėgant. 820 00:51:56,340 --> 00:51:59,980 Nes dabar, mes tikrai rūpi tik atminties gabalas teksto segmentas 821 00:51:59,980 --> 00:52:03,360 nes, kad tik 0s ir 1s, kad Apsukite metalinis garsas išvedamas. 822 00:52:03,360 --> 00:52:06,050 Taigi, kai jūs paleisti komandą kaip a.out klaviatūra 823 00:52:06,050 --> 00:52:09,110 arba dukart spustelėkite piktogramą Mac OS arba Windows 824 00:52:09,110 --> 00:52:11,880 jūsų programa yra pakrautas iš jūsų kietojo disko į RAM 825 00:52:11,880 --> 00:52:16,330 ir tai plopped kompiuterio RAM viršuje, taip sakant. 826 00:52:16,330 --> 00:52:20,450 Tuo tarpu, kaip jūsų programa pradeda veikti ir pagrindinis iškviečiamas 827 00:52:20,450 --> 00:52:23,640 programą, kurią parašė arba programa Microsoft ar Apple rašė 828 00:52:23,640 --> 00:52:27,860 bet kuri jos vietos kintamųjų galų gale ten kompiuterio atmintyje apačioje. 829 00:52:27,860 --> 00:52:33,230 Bet jei pagrindiniai ragina kita funkcija, kuri pati turi kintamuosius arba argumentus, jie galų gale virš jo. 830 00:52:33,230 --> 00:52:36,680 Ir, jei tai funkcija reikalauja kažką, jie galų gale virš jo, virš jo, virš jo. 831 00:52:36,680 --> 00:52:41,460 >> , Ir tik vieną kartą funkcija atliekama vykdant nėra padėklai kamino, taip sakant, 832 00:52:41,460 --> 00:52:43,240 pradeda gauti mažesnes. 833 00:52:43,240 --> 00:52:48,250 Ir tai, ką tada trumpai tariant, paaiškina, kodėl kai skambinate kubą 834 00:52:48,250 --> 00:52:51,550 ar jūs vadinate prieaugį, jūs einančios vertės kopiją. 835 00:52:51,550 --> 00:52:55,520 Ir ką tai reiškia pictorially yra, kad jūs tiesiog rašau skaičių 1 836 00:52:55,520 --> 00:53:00,460 kitą atminties dalis, keičiant, kad 1 iki 2 prieaugio atveju 837 00:53:00,460 --> 00:53:04,820 arba 8 Kubo atveju ir tada mesti, kad atmintis 838 00:53:04,820 --> 00:53:09,140 kuo greičiau prieaugio arba kubo funkcija grąžina. Klausimas. 839 00:53:09,140 --> 00:53:12,900 [Studentas] Kur saugomi globalių kintamųjų? 840 00:53:12,900 --> 00:53:18,100 Globalūs kintamieji yra saugomi, kas dabar vadinama inicializuoti duomenų ar niezainicjowanymi duomenų 841 00:53:18,100 --> 00:53:21,920 skirtumas yra, jei turite pasaulinį kintamąjį ir priskirti ją nedelsiant vertę 842 00:53:21,920 --> 00:53:24,640 su lygybės ženklą, jis baigiasi ten viršuje 843 00:53:24,640 --> 00:53:29,200 ir jei jūs tiesiog pasakyti int x; reikšmės neturintis, tai galų gale šiek tiek mažesnis RAM 844 00:53:29,200 --> 00:53:31,710 tiesiog pagal susitarimą. 845 00:53:31,710 --> 00:53:34,940 Kiti klausimai? Gerai. 846 00:53:34,940 --> 00:53:37,340 Taigi šį paveiksliuką grįš, kaip mes gauti daugiau galingas 847 00:53:37,340 --> 00:53:39,170 su tuo, ką mes galime padaryti su kompiuteriu, 848 00:53:39,170 --> 00:53:42,720 bet dabar galime turėti trumpą intro kriptografija, 849 00:53:42,720 --> 00:53:46,080 tam tikros rūšies kriptografija, tai nepadeda išspręsti visų pasaulio problemų 850 00:53:46,080 --> 00:53:47,720 tačiau išspręsti kai kuriuos iš jų. 851 00:53:47,720 --> 00:53:51,700 Šiuo atveju čia, mes turime kažką vadinama paslaptis rakto kriptografija. 852 00:53:51,700 --> 00:53:56,410 Paslaptis rakto kriptografija, kaip rodo pavadinimas, kilęs jos saugumą nuo paslaptis. 853 00:53:56,410 --> 00:54:00,690 >> Pavyzdžiui, jei jums buvo pradinėje mokykloje ir ėjo šiek slaptą meilės laišką 854 00:54:00,690 --> 00:54:04,850 berniukas ar mergaitė, jūs trupinimo, jei norite pereiti, kad dėmesį per auditoriją, 855 00:54:04,850 --> 00:54:08,380 tikriausiai nebūtų įrašyti tokią pastabą anglų arba kokia jūsų gimtoji kalba. 856 00:54:08,380 --> 00:54:13,340 Vietoj to, galite užšifruoti ją arba galite tiesiog nusiųsti tekstinį pranešimą šių dienų. 857 00:54:13,340 --> 00:54:15,460 , Bet jūs iš tiesų gali perduoti jiems pastabą visoje klasėje. 858 00:54:15,460 --> 00:54:18,700 Ir tai padaryti saugiai tokiu būdu, kad jūsų draugai ir mokytojų 859 00:54:18,700 --> 00:54:22,650 nežinau, ką rašote, jums gali sugalvoti gana paprasta algoritmą, 860 00:54:22,650 --> 00:54:25,920 jauna, nors jums gali būti, kad tiesiog peštynės žodžius. 861 00:54:25,920 --> 00:54:28,130 Taigi vietoj raštu, jums gali rašyti b, 862 00:54:28,130 --> 00:54:30,220 vietoj b, jums gali rašyti C, 863 00:54:30,220 --> 00:54:32,140 vietoj C jums gali rašyti D, ir tt. 864 00:54:32,140 --> 00:54:34,360 Ar galima sugalvoti sudėtingesnį vertimas 865 00:54:34,360 --> 00:54:36,720 raidžių skirtingomis raidėmis. 866 00:54:36,720 --> 00:54:39,740 Bet laimikis berniukas ar mergaitė, kam jūs siunčiate šį pranešimą 867 00:54:39,740 --> 00:54:45,020 kažkas, kuris yra tai, kas, be abejo, reikia žinoti? >> [Studentas] Ką jūs siunčiate. 868 00:54:45,020 --> 00:54:49,720 Ką jūsų paslaptis, kaip tai, kas yra tai, kad tarp ir pusryčiai ir C ir D's žemėlapių. 869 00:54:49,720 --> 00:54:54,650 Tai tiesiog pridėjus 1 iš raidžių nuo a iki b, b-c? 870 00:54:54,650 --> 00:54:56,670 Tai yra sudėtingesnis nei tas? 871 00:54:56,670 --> 00:55:01,540 >> Kad jūs ir jūsų traiškyti reikia turėti šį slaptą informaciją, 872 00:55:01,540 --> 00:55:03,190 bet ten rūšies Catch-22 čia. 873 00:55:03,190 --> 00:55:06,830 Jei tai yra pirmą kartą, jūs siunčiate šį meilės laišką per klasės, 874 00:55:06,830 --> 00:55:10,720 Kaip tai berniukas ar mergaitė, žinoti, kas paslaptis net? 875 00:55:10,720 --> 00:55:13,930 Taigi paslaptis rakto kriptografija neišsprendžia visų pasaulio problemų, 876 00:55:13,930 --> 00:55:16,320 ir yra iš tikrųjų santykiai, kad mes grįžti į semestro pabaigoje. 877 00:55:16,320 --> 00:55:25,110 Panašiai padaryti daugelis iš mūsų nežino, ką nors, kad dirba, pavyzdžiui, "Amazon.com", 878 00:55:25,110 --> 00:55:28,190 ir dar daugelis iš mūsų tikriausiai nusipirko stuff "Amazon.com 879 00:55:28,190 --> 00:55:31,990 ir mes buvo mokomi daryti prielaidą, kad šios e-komercijos sandoriai yra saugus. 880 00:55:31,990 --> 00:55:36,470 URL tikriausiai sako, "https", ten gal kvailas mažai spynos piktograma kažkur, 881 00:55:36,470 --> 00:55:39,930 kriptografijos rūšis yra keletas apsaugoti savo kredito kortelės informaciją 882 00:55:39,930 --> 00:55:42,160 tarp jūsų ir "Amazon.com". 883 00:55:42,160 --> 00:55:45,430 Ir dar, jei kriptografija reikia žinoti kažkokią paslaptį 884 00:55:45,430 --> 00:55:48,620 ir dar aš ne žinoti, kas "Amazon" ir aš tikrai nesudėti bet paslaptis natūra 885 00:55:48,620 --> 00:55:52,710 kažkas ne "Amazon", kaip mano kompiuteris ar mano naršyklė tai daryti? 886 00:55:52,710 --> 00:55:55,720 Pasirodo, ten yra kitų tipų kriptografijos apskritai, kad išspręsti šią problemą. 887 00:55:55,720 --> 00:55:57,670 Tačiau šiandien, mes sutelkti dėmesį į paprasta 888 00:55:57,670 --> 00:56:00,290 kur jūs galite pasirūpinti iš anksto žino kažkokią paslaptį, 889 00:56:00,290 --> 00:56:03,760 kaip +1 arba kai tarp A ir B žemėlapių. 890 00:56:03,760 --> 00:56:05,840 Ir kriptografijos procesas paprastai apima. 891 00:56:05,840 --> 00:56:08,620 Turite kokių nors paprasto teksto, pavaizduotas čia kairėje, 892 00:56:08,620 --> 00:56:12,930 jį paleisti per kažkokį algoritmą ar procedūros šifravimo - 893 00:56:12,930 --> 00:56:15,100 gal tai tiesiog tampa B ir B tampa c 894 00:56:15,100 --> 00:56:17,490 ir tada jūs galų gale su ciphertext. 895 00:56:17,490 --> 00:56:20,380 Tuo tarpu, jei jūsų sutraiškyti gauna šią paslaptį dėmesį, 896 00:56:20,380 --> 00:56:24,200 jis ar ji tada iššifruoti visuotinai atbuline eiga šio algoritmo 897 00:56:24,200 --> 00:56:27,190 siekiant gauti paprastą tekstą. 898 00:56:27,190 --> 00:56:28,960 Yra fizines įsikūnijimai. 899 00:56:28,960 --> 00:56:31,680 >> Pavyzdžiui, tai yra šiek tiek paslaptis dekoderis žiedas, 900 00:56:31,680 --> 00:56:35,110 ir tai yra ta prasme, kad dviejų surenka čia žiedas. 901 00:56:35,110 --> 00:56:38,490 Į lauko periferijoje šis dalykas, ten raidės nuo a iki z, 902 00:56:38,490 --> 00:56:40,340 nors jie atsitiktine tvarka, 903 00:56:40,340 --> 00:56:42,880 ir į vidų, yra iš tikrųjų kai kurie numeriai 904 00:56:42,880 --> 00:56:46,620 pavyzdžiui, kad šį žiedą galite rūšies pasukti išorės, tačiau ne viduje 905 00:56:46,620 --> 00:56:49,140 išsirikiuoti numerius su raidėmis. 906 00:56:49,140 --> 00:56:53,020 Iš filmo vadinamas Kalėdų istorija, pamatysite, kad mažai Ralphie 907 00:56:53,020 --> 00:56:58,000 buvo taip nori išsiaiškinti, kas Little RETI Annie paslaptis pranešimas buvo jam 908 00:56:58,000 --> 00:57:02,570 , kuri buvo perduota, manau, skaičių pranešimų dėl javų lauką 909 00:57:02,570 --> 00:57:07,220 ir jums teko sukaupti visi šiek tiek korteles, kad atėjo grūdų langelyje, 910 00:57:07,220 --> 00:57:09,770 jums teko mail juos, jūs turėjo grįžti slaptą dekoderis žiedą 911 00:57:09,770 --> 00:57:13,910 taip, kad jūs galite pagaliau išsiaiškinti, kas kartografavimo tarp raidžių ir skaičių 912 00:57:13,910 --> 00:57:15,550 arba raidėmis ir raidžių. 913 00:57:15,550 --> 00:57:19,520 Kaip į kompiuterį galime eiti apie dalykų, pavyzdžiui, įgyvendinant arba jam atstovauti? 914 00:57:19,520 --> 00:57:22,560 Mums reikia išreikšti save šiek tiek lanksčiau 915 00:57:22,560 --> 00:57:25,080 nei mūsų kintamieji, iki šiol leido. 916 00:57:25,080 --> 00:57:29,000 Mes turėjome int, mes turėjo simbolių, mes turėjo float ir double ir keli kiti, 917 00:57:29,000 --> 00:57:34,200 bet tie, kurie individualūs atminties vienetų, kurie nėra tikrai leidžia mums išreikšti dalykus 918 00:57:34,200 --> 00:57:36,440 kaip žodžių ir sakinių ir frazių. 919 00:57:36,440 --> 00:57:38,630 Iš tiesų, mes vadinami tokius dalykus eilutes, 920 00:57:38,630 --> 00:57:42,660 tačiau mes pažadame, kad tai tikrai tik supaprastinimas CS50 bibliotekoje 921 00:57:42,660 --> 00:57:45,540 kad mes, ketinantis žievelės atgal. 922 00:57:45,540 --> 00:57:47,500 Ir todėl pradėkime tai padaryti čia. 923 00:57:47,500 --> 00:57:49,840 Leiskite man eiti į priekį ir atverti failą - 924 00:57:49,840 --> 00:57:54,100 visi iš šių failų nėra, kaip įprasta, internetu - vadinamasis array.c 925 00:57:54,100 --> 00:57:58,960 išspręsti problemą, nesusijusių su stygos, bet kad dažai nuotrauką 926 00:57:58,960 --> 00:58:01,520 apie tai, kaip mes galime naudoti kažką vadinama masyvas. 927 00:58:01,520 --> 00:58:04,050 >> Masyvas yra duomenų tipas. 928 00:58:04,050 --> 00:58:10,730 Tai tipo kintama rūšių, kad turi keletą mažesnių duomenų tipai ir jame esantys 929 00:58:10,730 --> 00:58:12,680 atgal atgal atgal atgal. 930 00:58:12,680 --> 00:58:16,980 Taigi, pavyzdžiui, jei mes norėjome rašyti maža programa, kuri suteikia jums viktorina vidurkį 931 00:58:16,980 --> 00:58:19,780 kaip 50, kad turi 2 viktorinos, 932 00:58:19,780 --> 00:58:23,450 galima labai lengvai rašyti šią programą, pagrįstą net kai praėjusią savaitę medžiagos 933 00:58:23,450 --> 00:58:28,830 , naudojant GetInt ir kintamųjų pora: int quiz1, int quiz2. 934 00:58:28,830 --> 00:58:30,550 Ir tai gana paprasta. 935 00:58:30,550 --> 00:58:33,500 Tai galbūt 10, 20 eilučių kodo max įdiegti programą 936 00:58:33,500 --> 00:58:38,940 kad klausia, už 2 viktorinų balai vartotoją ir tada apskaičiuoja Jų vidutinis 937 00:58:38,940 --> 00:58:42,020 įtraukdami juos kartu, dalijant iš 2, tada spausdinti rezultatus. 938 00:58:42,020 --> 00:58:46,400 Mes turbūt galėtų padaryti, kad gana lengvai dabar po tam tikro minučių. 939 00:58:46,400 --> 00:58:49,450 Tačiau problema yra ta, kad tarkime, kad 50 turėjo 3 viktorinos arba 4. 940 00:58:49,450 --> 00:58:52,830 Tarkime, kad jūs norite naudoti tą pačią programą klasėje, buvo savaitraščio viktorinos. 941 00:58:52,830 --> 00:58:55,100 Galvoti apie tai grupei, kuri buvo per savaitę viktorinos. 942 00:58:55,100 --> 00:58:58,840 Jei yra 16 arba savaites per semestrą, dabar jūs turite 16 kintamuosius: 943 00:58:58,840 --> 00:59:03,030 int quiz1, int quiz2, int quiz3, int quiz4. 944 00:59:03,030 --> 00:59:06,870 Kaip tik jūs pradėsite matyti šį atleidimo iš darbo, tai kopijuoti ir įklijuoti kodo, 945 00:59:06,870 --> 00:59:09,810 ji turėtų pradėti, kad norite, kad buvo geresnis būdas. 946 00:59:09,810 --> 00:59:13,610 Ir laimei, nes masyvų yra. Todėl galime tai padaryti. 947 00:59:13,610 --> 00:59:16,700 Pirma, leiskite man pristatyti labai paprastas dalykas, kad mes iki šiol nėra naudojamas, 948 00:59:16,700 --> 00:59:18,820 bet pamatysite jį retkarčiais kodą. 949 00:59:18,820 --> 00:59:21,270 >> Tai yra tai, kas paprastai vadinama konstanta. 950 00:59:21,270 --> 00:59:24,410 Taigi, tai ta prasme, kad ši vertė niekada keičia konstanta. 951 00:59:24,410 --> 00:59:26,450 Žmogaus konvencija kuriant konstanta 952 00:59:26,450 --> 00:59:30,420 naudoti visas didžiąsias raides tik todėl, kad ji tikrai išsiskiria savo kodą, 953 00:59:30,420 --> 00:59:34,270 ir konkrečių raktinių žodžių, kad jūs naudojate, C # define. 954 00:59:34,270 --> 00:59:39,970 Taigi, mes sakome, # define, tada tarpą, tada žodį, kurį norite naudoti The Constant pavadinimą 955 00:59:39,970 --> 00:59:41,730 ir tada konstantos reikšmę. 956 00:59:41,730 --> 00:59:44,710 Atkreipkite dėmesį, tai skiriasi nuo priskiriant kažką kintamojo. 957 00:59:44,710 --> 00:59:46,430 Nėra jokios lygybės simboliu, yra ne kabliataškis. 958 00:59:46,430 --> 00:59:49,140 Tai yra tai, kas paprastai žinomas kaip Preprocessor direktyvą, 959 00:59:49,140 --> 00:59:50,840 kad kitą kartą, bet daugiau. 960 00:59:50,840 --> 00:59:56,350 Nes dabar, tai sukuria nekintamą vertę, vadinamą viktorinos 961 00:59:56,350 --> 00:59:58,290 kurios faktinės skaitinė vertė yra 2. 962 00:59:58,290 --> 01:00:02,180 Visur, kur matyti viktorinomis, viktorinos, viktorinos per šį failą, 963 01:00:02,180 --> 01:00:04,230 tai tik numeris 2. 964 01:00:04,230 --> 01:00:06,550 Jei aš žiūriu pagrindinis dabar, galime pamatyti, kaip tai veikia. 965 01:00:06,550 --> 01:00:09,770 Pirmiausia ji atrodo šiek tiek paslaptingas, bet tai visi nuo 1 savaitės stuff. 966 01:00:09,770 --> 01:00:12,210 Užduoti vartotojo klasėms. Kaip mes tai darome? 967 01:00:12,210 --> 01:00:17,350 22 eilutė - tai tikrai sultingas - deklaruoti plūdę 968 01:00:17,350 --> 01:00:23,240 bet ne tik vienas plūduriuoti. Aš deklaravimo, o slankiojo kablelio vertybių masyvo. 969 01:00:23,240 --> 01:00:27,700 Šis kintamasis bus vadinamas klasių, kaip teigiama čia, 970 01:00:27,700 --> 01:00:31,420 bet tik naujos sintaksės gabalas, tada šie skliaustus. 971 01:00:31,420 --> 01:00:37,280 Tai, kad aš jau sakiau plūdės pažymius ir tada skliaustai atidaromi ir tada skaičius - 972 01:00:37,280 --> 01:00:40,980 pastebėti, jei tai yra pastovi, tai tik, kaip mes padarėme tai - 973 01:00:40,980 --> 01:00:46,840 tai reiškia: "Ei, kompiuteris, duok man 2 plūdės ir tegul kartu jiems skambinti klasių." 974 01:00:46,840 --> 01:00:51,780 >> Tai priešingai yra daug labiau varginantis procesas, panašaus į tai: float Grade1; 975 01:00:51,780 --> 01:00:54,580 plaukti Grade2; ir kt. 976 01:00:54,580 --> 01:00:58,310 Taigi pasirinkimas leidžia mums įgyvendinti šią idėją, tačiau daug mažiau messily, 977 01:00:58,310 --> 01:01:04,560 tokiu būdu, kad mes galime rašyti 1 eilutę kodo, o ne, tarkim, 16 - 16 savaičių semestras. 978 01:01:04,560 --> 01:01:09,060 Nenorėjau į sunkiai kodekso 2, nes jei jūs manote apie tai dabar logiškai, 979 01:01:09,060 --> 01:01:12,560 CS50 pokyčiai 3 viktorinos, o ne, tarkime, kitais metais 980 01:01:12,560 --> 01:01:15,010 ir turėjau skaičių 2 čia, turėjau skaitmeniu "2", 981 01:01:15,010 --> 01:01:17,210 Aš turėjau skaitmeniu "2", skaičių 2 čia. 982 01:01:17,210 --> 01:01:19,890 Jis tampa labai varginantis ir labai lengva susukti 983 01:01:19,890 --> 01:01:26,550 ir netyčia pakeisti 1 kartą vertė 3 ir praleisti šiek tiek kitą vertę 2. 984 01:01:26,550 --> 01:01:30,660 Todėl aš, o ne abstraktus šį toli ir naudoti ši konstanta, kad, 985 01:01:30,660 --> 01:01:32,520 kaip rodo jo pavadinimas, niekada nesikeičia. 986 01:01:32,520 --> 01:01:35,870 Ir dabar nesvarbu, ar mes turime skirtingas viktorinos šiais ar kitą, 987 01:01:35,870 --> 01:01:39,380 Aš tiesiog jį pakeisti vienoje vietoje čia viršuje. 988 01:01:39,380 --> 01:01:41,230 Taigi, kad visi konstanta. 989 01:01:41,230 --> 01:01:47,100 Tuo tarpu naujas konceptualus bruožas yra tai, kad masyvo. 990 01:01:47,100 --> 01:01:55,030 Taigi laužtiniuose skliaustuose duoti man tai daug plūdės ir leidžia man kartu skambinti jiems pažymiai čia. 991 01:01:55,030 --> 01:01:56,720 Taigi, dabar galime pamatyti, ką aš ruošiuosi daryti. 992 01:01:56,720 --> 01:01:59,220 Čia 24 eilutėje yra už linijos pradžia. 993 01:01:59,220 --> 01:02:03,380 >> Tai tikrai nieko išgalvotas. Tai tiesiog naudojant viktorinos vietoj sunkiai užkoduotų skaičių. 994 01:02:03,380 --> 01:02:06,740 Bet ten nieko intelektualiai skiriasi iš praeitą savaitę. 995 01:02:06,740 --> 01:02:11,650 Tai tik printf, printf ("Viktorina #% d iš% d:") 996 01:02:11,650 --> 01:02:16,670 nes aš tik noriu atsispausdinti, duok man viktorina iš 2 1 numerį ir tada 2 iš 2. 997 01:02:16,670 --> 01:02:18,480 Todėl tai yra grynai estetinis dalykas. 998 01:02:18,480 --> 01:02:21,000 Bet įdomiausia dalis dabar yra 27 eilutėje. 999 01:02:21,000 --> 01:02:27,840 Siekiant užpildyti vieną iš dviejų vietos rezervavimo ženklai su slankaus kablelio skaičius, 1000 01:02:27,840 --> 01:02:29,640 jūs vėl naudoti skliaustus. 1001 01:02:29,640 --> 01:02:35,170 Šiuo atveju, aš naudoju, nes tai už linijos pradėjo su i lygus Kokią vertę, matyt? 1002 01:02:35,170 --> 01:02:36,670 [Studentas] 0. >> [Malan] 0. 1003 01:02:36,670 --> 01:02:40,990 Pirmajam iteracijos procesui šio ciklo, tai kaip nors parašiau kodu, 1004 01:02:40,990 --> 01:02:46,310 bet antrajame iteracijos šio ciklo, tai kaip nors parašiau, mano kodas. 1005 01:02:46,310 --> 01:02:49,970 Bet faktas, kad aš naudoju kintamąjį yra tobulas, nes, kaip rodo pavadinimas, 1006 01:02:49,970 --> 01:02:52,600 tai skirtingos savo vertę ant kiekvieno iteracijos 1007 01:02:52,600 --> 01:02:55,900 todėl aš užpildyti šio masyvo vienoje vietoje vienu metu. 1008 01:02:55,900 --> 01:02:57,380 Ką šis masyvas atrodo? 1009 01:02:57,380 --> 01:03:01,570 Anksčiau buvo priežastis, kodėl aš čia padarė super paprastą stačiakampį ekrane dėl šios priežasties. 1010 01:03:01,570 --> 01:03:05,590 Masyvas yra tik atminties riekė po kitos atminties riekė 1011 01:03:05,590 --> 01:03:08,570 kitos atminties riekė ir kt. 1012 01:03:08,570 --> 01:03:13,120 Taigi, jei mano masyvas yra 2 dydžio, šiuo atveju čia viskas, ką būtų daryti 1013 01:03:13,120 --> 01:03:20,200 rašyti mano viktorinų balai kaip čia - aš turiu 100 apie šį vieną, ir tada aš turiu 99 dėl šio vieno 1014 01:03:20,200 --> 01:03:24,970 tada ši atmintis gali net būti naudojamas, nes aš tik paprašė kompiuterį 1015 01:03:24,970 --> 01:03:26,840 masyvo dydis 2. 1016 01:03:26,840 --> 01:03:28,600 Šios kvadratų yra vis dar ten, tiesa? 1017 01:03:28,600 --> 01:03:32,670 Jūs vis dar turite 2 GB RAM, net jei jūs tik prašo 2 plūdės. 1018 01:03:32,670 --> 01:03:36,840 Taigi už masyvų idėja, kad kompiuteris tik mano atminties riekė 1019 01:03:36,840 --> 01:03:41,340 ir tada paskirsto mažesnius gabalus atgal atgal atgal atgal. 1020 01:03:41,340 --> 01:03:43,310 Ir taip, kad visas masyvas. 1021 01:03:43,310 --> 01:03:47,350 >> Tai gretutinė riekė atminties viduje, apie kurį jūs galite įdėti dalykų. 1022 01:03:47,350 --> 01:03:50,700 Tai atsitinka tada padaryti tik šiek tiek nuobodu aritmetiką. 1023 01:03:50,700 --> 01:03:54,640 Jei aš slinkti žemyn čia, tai kur aš tada pakartoti per masyvo. 1024 01:03:54,640 --> 01:03:58,020 Aš sugalvoti su visų masyvo reikšmių apibendrinimo, 1025 01:03:58,020 --> 01:04:02,470 ir tada galiu naudoti apvalios funkciją čia iš tikrųjų sumą, padalintą iš viktorinos. 1026 01:04:02,470 --> 01:04:06,320 Bet leiskite man pamojuoti savo jėgas, kad pakankamai aritmetinis nes dabar kaip rūšiuoti. 1027 01:04:06,320 --> 01:04:08,370 Bet visa tai daro už mane galiausiai apskaičiuojant vidurkį. 1028 01:04:08,370 --> 01:04:13,580 Taigi pirmoji viktorina plius 2. viktorina padalinti iš 2 ir tada spausdinti jį kaip int. 1029 01:04:13,580 --> 01:04:17,280 Bet tegul dabar perėjimas į kitą, pavyzdžiui, vadinamas String1 1030 01:04:17,280 --> 01:04:20,700 dažai panašų vaizdą, bet naudojant styginiams. 1031 01:04:20,700 --> 01:04:23,940 Leiskite man eiti į priekį ir supaprastinti tai vos akimirką. 1032 01:04:23,940 --> 01:04:27,090 Atleisk dabar įdubimas. 1033 01:04:27,090 --> 01:04:30,870 Šiame pavyzdyje 19 eilutėje skelbimą, man nuo vartotojo eilutę. 1034 01:04:30,870 --> 01:04:34,640 , Bet pastebėsite, ką aš kitą daro linijų 22 pirmyn. 1035 01:04:34,640 --> 01:04:41,250 Aš tikrai iteravimu nuo i iki ir tai yra naujas triukas - strlen, eilutės ilgis. 1036 01:04:41,250 --> 01:04:44,880 Tai funkcija, kuri ateina su C, kad jei pereisite eilutę, 1037 01:04:44,880 --> 01:04:47,730 jis jums pasakys, kiek simbolių yra toje eilutėje. Štai ir viskas. 1038 01:04:47,730 --> 01:04:51,550 Ir tai, kad ji strlen vietoj eilutės ilgis yra tik todėl, kad daugiau glausta. 1039 01:04:51,550 --> 01:04:55,100 Prieš trisdešimt metų, žmonės mėgo rašyti dalykus trumpai, kaip įmanoma, 1040 01:04:55,100 --> 01:04:57,630 todėl mes čia laikyti šią konvenciją. 1041 01:04:57,630 --> 01:05:00,660 i + + tiesiog reiškia prieaugio i kiekvienos iteracijos. 1042 01:05:00,660 --> 01:05:02,990 Ir dabar pastebėti, kuris yra tikrai įdomus. 1043 01:05:02,990 --> 01:05:09,180 Atitinka 24, aš sakau: "Kompiuteris, duok man ženklą, 8 bitai, ir jį vadiname c". 1044 01:05:09,180 --> 01:05:12,630 Bet kas tai yra dešinėje pusėje sakydamas? 1045 01:05:13,490 --> 01:05:16,530 Anglų kalba, ką tai? 1046 01:05:16,530 --> 01:05:18,730 [Studentas] Pirmasis simbolis masyve. 1047 01:05:18,730 --> 01:05:20,790 Tiksliai. Duok man pirmąją raidę masyvo. 1048 01:05:20,790 --> 01:05:24,090 Arba, apskritai, duok man ith masyvo simbolį. 1049 01:05:24,090 --> 01:05:26,100 Ir suvokti, labai svarbu, kad, kaip kompiuterių mokslininkų, 1050 01:05:26,100 --> 01:05:27,890 mes iš tikrųjų skaičiuoti nuo 0. 1051 01:05:27,890 --> 01:05:29,720 >> Jūs neturite savo nuožiūra dabar pradėti tai daryti. 1052 01:05:29,720 --> 01:05:34,160 Dabar jūs turite elgtis pagal kompiuterio lūkesčius ir skaičiuojami nuo 0 1053 01:05:34,160 --> 01:05:38,180 nes [0] bus pirmasis simbolis eilutę, 1054 01:05:38,180 --> 01:05:42,150 [1] bus antrasis [2] bus trečią ir tt. 1055 01:05:42,150 --> 01:05:49,720 Todėl ši programa, jei aš kompiliuoti, tai vėl String1, todėl įsitikinkite, String1 1056 01:05:49,720 --> 01:05:54,670 ir dabar aš paleisti String1 mano terminalo lange. 1057 01:05:54,670 --> 01:05:58,330 Jis laukia įvedimo, todėl aš ketina įvesti Dovydui Įveskite 1058 01:05:58,330 --> 01:06:02,540 ir dabar jis spausdina Dovydui visa skirtingomis linijomis, nes pranešimas, ką aš darau. 1059 01:06:02,540 --> 01:06:05,820 Aš spausdinti vieną simbolį vienu metu. 1060 01:06:05,820 --> 01:06:10,100 Mes negalime eiti į smulkmenas šiandien apie tai, bet aš ištrinti šio patikrinimo metu senumo. 1061 01:06:10,100 --> 01:06:15,480 It turns out, kad jei vartotojas yra netinkamas elgesys, rungimosi principu, ar tiesiog supainioti, 1062 01:06:15,480 --> 01:06:20,210 jūs iš tikrųjų galite nepateikia kai kurių ilgio eilutę. 1063 01:06:20,210 --> 01:06:22,860 Jei paspausite neteisingą mygtuką ant klaviatūros, jūs galite nesuteikia eilutę, 1064 01:06:22,860 --> 01:06:26,950 arba jei esate kenksminga, galite bandyti įterpti Gigabyte vertės esė 1065 01:06:26,950 --> 01:06:29,290 užpildyti šią eilutę, ir jei kompiuteris veikia iš atminties, 1066 01:06:29,290 --> 01:06:32,710 paaiškėja, kad mes ketiname grįžti šią ypatingą vertę, vadinama NULL. 1067 01:06:32,710 --> 01:06:35,580 Taigi dabar, tiesiog žinau, kad ten tai ypatingą vertę, vadinama NULL 1068 01:06:35,580 --> 01:06:39,580 , kuris leis mums patikrinti, kai mes iš atminties, be kitų dalykų. 1069 01:06:39,580 --> 01:06:45,630 Bet jei aš atverti dabar String2, pastebėti vienas skirtumas čia. 1070 01:06:45,630 --> 01:06:48,210 Pranešimas vienas skirtumas čia String2 1071 01:06:48,210 --> 01:06:51,340 Su String2, for ciklas yra šiek tiek kitoks. 1072 01:06:51,340 --> 01:06:55,010 >> Leiskite man ištrinti nulls, kad galėtume kalbėti apie tuos, kitą kartą. 1073 01:06:55,010 --> 01:06:57,800 Kuo skiriasi apie už linijos šį kartą? 1074 01:06:59,620 --> 01:07:01,670 Aš galiu eiti atgal į ankstesniame pavyzdyje. 1075 01:07:01,670 --> 01:07:08,580 Taip, kad 2 versija, tai versija 1. 1, 2. 1076 01:07:08,580 --> 01:07:11,980 1, 2. 1077 01:07:13,520 --> 01:07:16,660 Strlen skambutis kur? 1078 01:07:16,660 --> 01:07:18,860 Tai pirmosios dalies už linijos. 1079 01:07:18,860 --> 01:07:21,830 Bet mintis, kodėl aš darau tai? Taip. 1080 01:07:21,830 --> 01:07:24,560 [Studentas] Taigi jums nereikia skambinti funkcija kiekvieną kartą. 1081 01:07:24,560 --> 01:07:26,440 [Malan] Taigi mes vadiname funkcija kiekvieną kartą. Tiksliai. 1082 01:07:26,440 --> 01:07:28,300 Atšaukti iš kilpos, kad jie super paprasta 1083 01:07:28,300 --> 01:07:31,770 kai jūs tarsi suprantu, kad tai iniciacijos, ši sąlyga, ir atnaujintame variante. 1084 01:07:31,770 --> 01:07:34,750 Problema ta, kad ši sąlyga vyksta kiekvieną kilpą iteracijos. 1085 01:07:34,750 --> 01:07:40,010 Ir taip, šiame pavyzdyje čia, kas yra blogas apie tai, kad tai yra mano būklė? 1086 01:07:40,010 --> 01:07:41,830 [Studentas] Jūs skambinate strlen. 1087 01:07:41,830 --> 01:07:44,340 [Malan] Jūs skambinate strlen vėl ir vėl ir vėl. 1088 01:07:44,340 --> 01:07:47,410 Bet kai aš įvedėte Dovydu, tos eilutės ilgis yra 5, 1089 01:07:47,410 --> 01:07:49,650 ir jis nesiruošia keisti kiekvieno kilpa iteracijos 1090 01:07:49,650 --> 01:07:51,670 dėl to, kad eilutė yra dar D-v-i-d. 1091 01:07:51,670 --> 01:07:55,320 Taigi tai, kas vyksta, tampa vis svarbesne idėja užuomina 1092 01:07:55,320 --> 01:08:00,410 žinomas kaip dizaino sprendimo galiojimo, kai tiesiog negali padaryti kompiuterį daryti nereikalingą darbą. 1093 01:08:00,410 --> 01:08:03,920 >> Lygiai taip pat, kaip nukniaukti peržiūra pset2, pset2 standartinis leidimas 1094 01:08:03,920 --> 01:08:07,030 bus iššūkis jums, kad iš tikrųjų įgyvendinti tam tikrą šifrai, 1095 01:08:07,030 --> 01:08:10,410 kai kurie šifravimo algoritmai, kad galite užšifruoti 1096 01:08:10,410 --> 01:08:13,840 iššifruoti slaptas žinutes, panašiai kaip viena Ralphie iššifruoti. 1097 01:08:13,840 --> 01:08:16,810 Hacker leidimas pset2, mes ketiname eiti šiek tiek toliau. 1098 01:08:16,810 --> 01:08:19,649 Mes ketiname perduoti failą iš faktinė kompiuterinės sistemos 1099 01:08:19,649 --> 01:08:23,479 , kuriame yra visa krūva vardus ir faktinių saugiame slaptažodžius, 1100 01:08:23,479 --> 01:08:26,939 hacker leidimas iššūkis bus nulaužti tuos slaptažodžius 1101 01:08:26,939 --> 01:08:33,200 ir išsiaiškinti, ką kriptografija ar ką paslaptis buvo naudojamas iš tikrųjų tuos slaptažodžius. 1102 01:08:33,200 --> 01:08:36,109 Ir mes ketiname tai padaryti naudojant naują funkciją C 1103 01:08:36,109 --> 01:08:40,630 kad aš duosiu jums tik demo žinomas kaip komandinės eilutės argumentai. 1104 01:08:40,630 --> 01:08:44,229 It turns out, kaip kai kurie iš jūsų gali matyti skirsnyje ar vadovėlių, 1105 01:08:44,229 --> 01:08:48,260 pagrindinis ne visada turi negaliojančiu skliausteliuose. 1106 01:08:48,260 --> 01:08:52,430 Pasirodo, kad pagrindinis taip pat gali būti parašyta, kaip tai, su dviem argumentais, 1107 01:08:52,430 --> 01:08:56,870 argc ir argv, kur argc yra žodžių skaičius 1108 01:08:56,870 --> 01:09:00,020 kad įvedate po programos pavadinimo komandinę eilutę 1109 01:09:00,020 --> 01:09:03,420 ir argv yra tikrasis žodžiai. 1110 01:09:03,420 --> 01:09:07,540 Ir kaip laužtiniuose skliaustuose ten rodo, argv, matyt, masyvas. 1111 01:09:07,540 --> 01:09:12,210 Tai bus po po atminties eilutę eilutę eilutę. 1112 01:09:12,210 --> 01:09:16,010 >> Taigi, ką mes ketiname, kad būtų galima padaryti, pradedant pset 2 yra kažkas panašaus į tai. 1113 01:09:16,010 --> 01:09:21,350 Jei aš darau argv1, kuri yra pavyzdys, mes grįžti pirmadienį, ir paleisti jį, 1114 01:09:21,350 --> 01:09:23,370 pastebėsite, kad ji neatrodo, kad daryti ką nors dar. 1115 01:09:23,370 --> 01:09:25,490 Jis tiesiog spausdina savo pavadinimą. 1116 01:09:25,490 --> 01:09:31,479 Bet jei aš pasakysiu sudie klasė, pastaboje (įspėjime), kad ši programa akivaizdžiai kartojasi 1117 01:09:31,479 --> 01:09:35,479 per kiekvieną iš žodžių, kurie buvo įvesti komandinėje eilutėje. 1118 01:09:35,479 --> 01:09:41,630 Ir būdas, kuriuo mes prieiti prie žodžių, kad vartotojas įvesti komandinėje eilutėje 1119 01:09:41,630 --> 01:09:49,160 keičiant pagrindinė prasideda šį savaitgalį iš int main (void) int main (argc, argv) 1120 01:09:49,160 --> 01:09:52,050 ir taip gims komandinės eilutės argumentai. 1121 01:09:52,050 --> 01:09:57,100 Ir kai jūs gaunate tikrai sudėtingas, galėsite rašyti tikrai trippy programas 1122 01:09:57,100 --> 01:09:59,610 tokių kaip šis, kuris eina virš ir už 1123 01:09:59,610 --> 01:10:03,940 kai funkcionalumo mes padarėme iki šiol, bet gana galingas. 1124 01:10:03,940 --> 01:10:08,950 >> Taigi, mes palikti šį ekrane, ir mes matome, pirmadienį. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]