1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [GROJA MUZIKA] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> David J. Malan: Gerai, tai yra CS50. 5 00:00:16,240 --> 00:00:18,010 Ir tai yra viena savaitę. 6 00:00:18,010 --> 00:00:22,050 Taigi priminti, kad paskutinį kartą nulinis savaitę mes sutelktas į skaičiavimo mąstymo. 7 00:00:22,050 --> 00:00:25,440 Ir mes perkėlėme iš kad Nulio, grafinis programavimas 8 00:00:25,440 --> 00:00:27,360 kalba iš mūsų draugų ne MIT Media Lab. 9 00:00:27,360 --> 00:00:31,730 >> Ir su nulio, tai mes ištirti idėjos, kaip funkcijų, ir sąlygos, 10 00:00:31,730 --> 00:00:35,210 ir kilpos, ir kintamieji, ir net įvykiai ir siūlai, ir dar daugiau. 11 00:00:35,210 --> 00:00:37,880 Ir šiandien, mes ketiname toliau naudoti šias idėjas, 12 00:00:37,880 --> 00:00:40,630 ir tikrai vartojate juos suteikta, tačiau paversti juos 13 00:00:40,630 --> 00:00:44,220 į kitą kalbą, žinomas kaip C. dabar C yra labiau tradicinis kalba. 14 00:00:44,220 --> 00:00:46,020 Tai žemesnio lygio kalba, jei bus. 15 00:00:46,020 --> 00:00:47,300 >> Tai grynai tekstinę. 16 00:00:47,300 --> 00:00:49,910 Ir taip iš pirmo žvilgsnio, tai visi ketiname ieškoti gana paslaptingas 17 00:00:49,910 --> 00:00:51,430 jei jūs niekada užprogramuotas anksčiau. 18 00:00:51,430 --> 00:00:53,530 Mes ketiname turėti kabliataškiai ir skliaustai, 19 00:00:53,530 --> 00:00:55,150 ir garbanotas petnešos, ir dar daugiau. 20 00:00:55,150 --> 00:00:57,240 Bet suprantu, kad net nors sintaksė 21 00:00:57,240 --> 00:01:00,600 apie atrodyti šiek tiek susipažinę dauguma iš jūsų, matyti anksčiau, kad. 22 00:01:00,600 --> 00:01:03,220 Ir pabandyti pamatyti idėjas kad yra, iš tiesų, žino, 23 00:01:03,220 --> 00:01:06,750 nes čia savaitę vienas ką pradėsime daryti yra palyginti, 24 00:01:06,750 --> 00:01:08,980 Iš pradžių, Scratch, palyginti su C 25 00:01:08,980 --> 00:01:12,350 >> Taigi, pavyzdžiui, prisimena, kad kai mes įgyvendinti pirmasis mūsų programos 26 00:01:12,350 --> 00:01:16,220 Paskutinį kartą mes turėjome bloką, kad atrodė šiek tiek kažkas panašaus this-- kada 27 00:01:16,220 --> 00:01:19,990 Žaliosios vėliavos paspausti, o tada mes turėjome vienas ar daugiau įspūdį po juo, 28 00:01:19,990 --> 00:01:22,150 šiuo atveju, tarkim, Hello world. 29 00:01:22,150 --> 00:01:24,870 Taigi, iš tiesų, nulio, Kai paspaudžiu, kad žalioji vėliava 30 00:01:24,870 --> 00:01:27,390 paleisti savo programą, todėl kalbėti, tai yra 31 00:01:27,390 --> 00:01:29,520 blokų, kad gauti įvykdytas, arba paleisti. 32 00:01:29,520 --> 00:01:32,230 Ir būtent, įbrėžimams sakė, Labas, pasauli. 33 00:01:32,230 --> 00:01:35,377 >> Dabar, aš galėjo nustatyti skirtingi žodžiai čia. 34 00:01:35,377 --> 00:01:37,960 Bet mes matome, kad, tiesą sakant, daugelis Šių blocks-- Ir iš tiesų, 35 00:01:37,960 --> 00:01:41,880 C daug functions-- gali būti Parametrizuotieji ar individualų 36 00:01:41,880 --> 00:01:43,150 daryti skirtingus dalykus. 37 00:01:43,150 --> 00:01:45,520 Iš tiesų, į C temperatūroje, jei mes norite konvertuoti, dabar 38 00:01:45,520 --> 00:01:47,567 tai įbrėžimams programa šios kita kalba, 39 00:01:47,567 --> 00:01:49,650 mes ketiname parašyti tiek kažkas panašaus į tai. 40 00:01:49,650 --> 00:01:52,540 >> Natūralu, kad yra kai nepažįstamas sintaksė yra labiausiai tikėtina, INT, 41 00:01:52,540 --> 00:01:54,380 ir skliaustai ir tuščia. 42 00:01:54,380 --> 00:01:57,740 Bet printf--, net jei būtų manau, kad tai būtų tik spausdinti. 43 00:01:57,740 --> 00:02:00,120 Bet Spausdinti reiškia Spausdinti suformatuotas, kaip mes greitai pamatyti. 44 00:02:00,120 --> 00:02:02,140 Tai tiesiog spausdinti į ekraną kokia 45 00:02:02,140 --> 00:02:05,990 yra viduje tų skliausteliuose, kuris Žinoma, šiuo atveju yra hello world. 46 00:02:05,990 --> 00:02:09,290 >> Tačiau jūs pastebėsite, kai kurie kiti sintaksė, kai kabutes, 47 00:02:09,290 --> 00:02:11,890 kad tuo tikslu skliaustai, pusiau-gaubtinės žarnos ir pan. 48 00:02:11,890 --> 00:02:15,027 Taigi ten yra pridėtinių tiek, taip sakant, tiek pažintinių 49 00:02:15,027 --> 00:02:17,860 ir sintaksiškai, kad mes ketiname turėti prisiminti prieš ilgas. 50 00:02:17,860 --> 00:02:20,720 Bet suprantu, kad su praktika, tai pradės iššokti į tave. 51 00:02:20,720 --> 00:02:24,920 >> Iš tiesų, tegul dėmesį, kad vienas funkcija specifically-- šiuo atveju, 52 00:02:24,920 --> 00:02:26,290 sako hello world. 53 00:02:26,290 --> 00:02:27,560 Taigi pasakyti, kad funkcija. 54 00:02:27,560 --> 00:02:31,320 Sveiki pasaulis yra jos parametras, arba argumentas, jo pritaikymas. 55 00:02:31,320 --> 00:02:34,320 >> Ir C lygiavertiškumas yra tik bus šį vieną eilutę čia 56 00:02:34,320 --> 00:02:38,710 kur printf yra lygiavertis, tarkim, dvigubas cituojamas virvutė, labas 57 00:02:38,710 --> 00:02:41,470 pasaulyje yra lygiavertis, žinoma, į tai, kas į baltą dėžutę ten. 58 00:02:41,470 --> 00:02:45,680 Ir Backslash N, nors šiek tiek keista ir nėra nuo nulio, 59 00:02:45,680 --> 00:02:49,380 tiesiog ketina turėti poveikį mes matyti kompiuterio, kaip mano Mac arba PC, 60 00:02:49,380 --> 00:02:51,660 tiesiog judinant žymeklį į kitą eilutę. 61 00:02:51,660 --> 00:02:53,970 Tai kaip pataikyti Įveskite savo klaviatūroje. 62 00:02:53,970 --> 00:02:55,580 >> Taigi mes matome, kad vėl prieš ilgas. 63 00:02:55,580 --> 00:02:58,640 Bet pirmiausia, tegul tai žiūrėti Kitas pavyzdys vyrių atveju. 64 00:02:58,640 --> 00:03:02,830 Mes turėjome šį amžinai kilpa paskutinį kartą, kuris buvo įspūdį serija 65 00:03:02,830 --> 00:03:05,490 kad padarė kažką pažodžiui forever-- šiuo atveju, 66 00:03:05,490 --> 00:03:08,360 pasakyti, Hello world, Hello world, Hello world, Hello world. 67 00:03:08,360 --> 00:03:10,350 Taigi, tai begalinis ciklas dizainas. 68 00:03:10,350 --> 00:03:14,580 >> C, jei norime įgyvendinti šią pačią idėją, mes galime tiesiog tai padaryti. 69 00:03:14,580 --> 00:03:19,570 Nors tiesa, printf Sveiki world-- dabar o, tik semantiškai, rūšies 70 00:03:19,570 --> 00:03:23,090 asocijuosis su daro idėja kažkas ir vėl, ir vėl, ir vėl, 71 00:03:23,090 --> 00:03:23,980 ir kaip ilgai? 72 00:03:23,980 --> 00:03:27,990 Na, true-- Prisiminkite, kad tiesa yra tik arba viena. 73 00:03:27,990 --> 00:03:30,660 >> Ir tiesa, žinoma, visuomet tiesa. 74 00:03:30,660 --> 00:03:33,060 Taigi tai tipo beprasmė pareiškimas tiesiog pasakyti tiesa. 75 00:03:33,060 --> 00:03:36,890 Bet iš tikrųjų, tai yra sąmoningas, nes jei tiesa yra tik visada teisinga, 76 00:03:36,890 --> 00:03:40,850 nei, o tiesa tiesiog reiškia, jei šiek tiek netiesiogiai, 77 00:03:40,850 --> 00:03:44,070 kad šių eilučių kodo tarp tų garbanotas petnešos 78 00:03:44,070 --> 00:03:48,320 tiesiog reikia atlikti iš naujo, ir vėl, ir vėl, ir iš tikrųjų niekada sustoti. 79 00:03:48,320 --> 00:03:50,230 >> Bet jei jūs norite, kad jūsų kilpa sustoti, kaip mes 80 00:03:50,230 --> 00:03:54,500 darė paskutinį kartą kažką panašaus tai, pakartoti šiuos 50 kartų, 81 00:03:54,500 --> 00:03:57,700 C galėsime daryti tą patį, ką tai vadinamas už loop-- raktažodį 82 00:03:57,700 --> 00:03:59,330 nėra, o, bet. 83 00:03:59,330 --> 00:04:03,290 Ir tada mes turime keletą naujų sintaksė čia su int i lygu 0, I mažiau nei 50 metų, 84 00:04:03,290 --> 00:04:03,880 i ++. 85 00:04:03,880 --> 00:04:05,430 Ir mes grįžti prie to. 86 00:04:05,430 --> 00:04:09,660 Bet tai yra tiesiog kaip mes norėtume išversti nulio blokų rinkinys 87 00:04:09,660 --> 00:04:13,079 iki C eilučių kodo rinkinys. 88 00:04:13,079 --> 00:04:14,450 >> Tuo tarpu, mano kintamuosius. 89 00:04:14,450 --> 00:04:16,540 Ir, tiesą sakant, mes tiesiog mačiau vieną prieš momentas. 90 00:04:16,540 --> 00:04:21,220 Ir iš nulio atveju, jei mes norėjau paskelbti kintamąjį vadinamą i 91 00:04:21,220 --> 00:04:24,590 Aš būdamas sveikas, tiesiog skaičius, ir mes norime jį tam tikru vertės, 92 00:04:24,590 --> 00:04:28,410 mes naudoti šį apelsiną blokuoti here-- nustatyti i 0. 93 00:04:28,410 --> 00:04:30,800 >> Ir mes matome šiandien ir už jos ribų, kaip praeitą savaitę, 94 00:04:30,800 --> 00:04:33,850 programuotojai padaryti beveik visada pradėti skaičiuoti nuo nulio, tikrai 95 00:04:33,850 --> 00:04:34,950 pagal susitarimą. 96 00:04:34,950 --> 00:04:37,250 Bet taip pat, nes susigrąžinimas iš Mūsų diskusija dvejetainis, 97 00:04:37,250 --> 00:04:39,990 mažiausias kiekis, kurį galite atstovauti su bet bitų skaičius 98 00:04:39,990 --> 00:04:41,640 tiesiog bus 0. pati. 99 00:04:41,640 --> 00:04:45,190 Ir todėl mes paprastai prasideda Inicijuojama net mūsų kintamuosius 0. 100 00:04:45,190 --> 00:04:47,710 >> Ir C padaryti tą patį, mes ketiname pasakyti, int 101 00:04:47,710 --> 00:04:50,110 už sveikojo skaičiaus, aš tiesiog pagal susitarimą. 102 00:04:50,110 --> 00:04:53,390 Galėjau vadinamas šis kintamasis ką aš noriu, kaip ir nulio. 103 00:04:53,390 --> 00:04:57,770 Ir tada yra lygus 0 tik priskiria vertė 0 iš dešinės 104 00:04:57,770 --> 00:05:01,319 ir įdėkite jį į kintamąjį arba saugojimo konteineris yra, kairėje pusėje. 105 00:05:01,319 --> 00:05:04,360 Ir kabliataškis, kaip mes see-- ir mes matėme keletą šių already-- 106 00:05:04,360 --> 00:05:06,530 tiesiog reiškia galą minties. 107 00:05:06,530 --> 00:05:09,430 Tęskite daryti ką nors kita linijose, kurie seka. 108 00:05:09,430 --> 00:05:11,330 >> Dabar, ką apie Būlio išraiškos? 109 00:05:11,330 --> 00:05:14,320 Prisiminkite, kad nulio, tai buvo išraiška 110 00:05:14,320 --> 00:05:16,740 kad yra arba tiesa arba false-- klausimai, 111 00:05:16,740 --> 00:05:18,910 tikrai, kad yra arba true arba false. 112 00:05:18,910 --> 00:05:21,960 Taigi iš nulio atveju, mes galime užduoti paprastą klausimą, kaip tai, 113 00:05:21,960 --> 00:05:24,586 yra man mažiau nei 50? 114 00:05:24,586 --> 00:05:25,710 Todėl aš, dar kartą, yra sveikas skaičius. 115 00:05:25,710 --> 00:05:27,210 Gal mes jį naudoti į Scratch programos 116 00:05:27,210 --> 00:05:29,310 sekti dviejų dešimčių arba kažkas panašaus. 117 00:05:29,310 --> 00:05:33,810 Taigi tai sintaksė čia Scratch tiesiog reiškia, yra i mažiau nei 50? 118 00:05:33,810 --> 00:05:37,330 Na, laimei, kad kažkas yra paprastas C. Ir versti, 119 00:05:37,330 --> 00:05:41,780 tai mes tiesiog pasakyti, kad aš mažiau nei 50, naudojant pažįstamą raktą 120 00:05:41,780 --> 00:05:42,850 klaviatūroje. 121 00:05:42,850 --> 00:05:45,141 >> Tuo tarpu, jei norite pasakyti kažką apskritai 122 00:05:45,141 --> 00:05:49,890 kaip gerai, yra x mažiau nei y, kur kiekvienas iš X ir Y yra tokie, patys kintamieji? 123 00:05:49,890 --> 00:05:52,280 Mes galime padaryti tą patį C, tol, kol mes 124 00:05:52,280 --> 00:05:53,942 sukurta šiuos kintamuosius jau. 125 00:05:53,942 --> 00:05:55,650 Ir mes pamatyti, kaip padaryti, kad prieš ilgas. 126 00:05:55,650 --> 00:05:58,590 Mes tiesiog pasakyti x mažiau nei m. 127 00:05:58,590 --> 00:06:00,530 >> Taigi jūs pradedate matyti tam tikrų panašumų. 128 00:06:00,530 --> 00:06:03,490 Ir tie žmonės, kurie pagaminti Įbrėžimams buvo tikrai 129 00:06:03,490 --> 00:06:05,250 įkvėpė kai kurie iš šių pagrindinių idėjų. 130 00:06:05,250 --> 00:06:10,350 Ir pamatysite šios rūšies sintaksė daugelyje languages-- 131 00:06:10,350 --> 00:06:12,160 ne tik nulio, ne tik C, bet Python 132 00:06:12,160 --> 00:06:14,790 ir "JavaScript", ir Kitos kalbos dar. 133 00:06:14,790 --> 00:06:18,270 >> Apsvarstykite vieną konstruktą iš C, iš būklės sąvoka, 134 00:06:18,270 --> 00:06:20,370 daro kažką lygtinai. 135 00:06:20,370 --> 00:06:22,720 Jei kažkas yra tiesa, tai padaryti. 136 00:06:22,720 --> 00:06:24,457 Jei kažkas yra tiesa, tai padaryti. 137 00:06:24,457 --> 00:06:27,040 Tai tarsi programavimo ekvivalentas į kelio šakute. 138 00:06:27,040 --> 00:06:29,730 Gal tai dvipusis šakutė, trijų-būdas šakutė, arba daugiau. 139 00:06:29,730 --> 00:06:32,800 Ir nulio, mes galime turėti matyti kažką panašaus į tai. 140 00:06:32,800 --> 00:06:34,010 >> Taigi tai vienas didelis vienas. 141 00:06:34,010 --> 00:06:36,750 Tačiau mano, santykinis paprastumas logika. 142 00:06:36,750 --> 00:06:44,010 Jei x yra mažiau nei y, tada pasakyti x yra mažiau nei y, kitas, jei x yra didesnis nei y, 143 00:06:44,010 --> 00:06:46,230 tada pasakyti x yra didesnis nei m. 144 00:06:46,230 --> 00:06:48,300 Ir tada, logiškai, jei manote atgal į nulio 145 00:06:48,300 --> 00:06:52,610 ar tik savo žmogaus intuicija, gerai, jei x yra ne didesnis nei y, ir x 146 00:06:52,610 --> 00:06:57,000 yra ne mažesnis kaip y, tada, žinoma, x bus lygus y. 147 00:06:57,000 --> 00:06:59,690 Šiuo atveju taip, pagal lizdus tie Scratch blokai, 148 00:06:59,690 --> 00:07:02,580 mes galime pasiekti trys būdas kelio išsišakojimas? 149 00:07:02,580 --> 00:07:04,980 >> Tuo tarpu, jei norime padaryti, kad C, tai, be abejo, 150 00:07:04,980 --> 00:07:08,420 atrodo šiek tiek simpler-- bent kai gausite susipažinę su sintakse. 151 00:07:08,420 --> 00:07:12,050 Jei x yra mažiau nei Y, printf x yra mažiau nei m. 152 00:07:12,050 --> 00:07:16,140 Kitas, jei x yra didesnis nei y, printf x yra didesnis nei m. 153 00:07:16,140 --> 00:07:21,210 Kita printf x yra lygus y-- ir vėl su tais, Backslash baigiasi tik 154 00:07:21,210 --> 00:07:24,160 už tų naujų linijų, kad jei iš tikrųjų vyko šią programą natūra 155 00:07:24,160 --> 00:07:25,940 tai tiesiog perkelti kursorius galiausiai 156 00:07:25,940 --> 00:07:28,100 į kitą eilutę ekrano. 157 00:07:28,100 --> 00:07:31,270 >> Dabar, tuo tarpu "Scratch turėjo kitą daugiau sudėtingų funkcijų, tik 158 00:07:31,270 --> 00:07:34,320 kai kurie iš jų mes ketiname iš pradžių pereiti prie C pasaulyje 159 00:07:34,320 --> 00:07:37,010 Ir vienas iš jų buvo vadinamas sąrašas nulio. 160 00:07:37,010 --> 00:07:39,100 Ir tai buvo ypatinga tipo kintamasis, kuris 161 00:07:39,100 --> 00:07:42,840 leido jums laikyti kelis dalykus į jį atgal, atgal, atgal, atgal. 162 00:07:42,840 --> 00:07:45,540 >> C, ji neturi sąrašai, per se, bet kažkas 163 00:07:45,540 --> 00:07:48,090 kad yra daugiau paprastai vadinamas matricos, nors mes 164 00:07:48,090 --> 00:07:50,590 grįžti vėliau šį semestrą į žiūri kažką 165 00:07:50,590 --> 00:07:52,780 vadinamas sąrašą ar tikrai susietą sąrašą. 166 00:07:52,780 --> 00:07:55,510 Bet dabar, arčiausiai ekvivalentas C mus 167 00:07:55,510 --> 00:07:57,345 bus kažkas vadinamas masyvo. 168 00:07:57,345 --> 00:07:59,740 Ir masyvas yra tiesiog specialaus tipo kintamojo 169 00:07:59,740 --> 00:08:03,160 kuri leidžia jums saugoti duomenis atgal, atgal, atgal, į nugarą. 170 00:08:03,160 --> 00:08:05,840 >> Ir, iš tiesų, nulio, jei mes norėjome pasiekti 171 00:08:05,840 --> 00:08:09,030 pirmasis elementas masyvo arba list-- ir aš ruošiuosi jį vadiname, 172 00:08:09,030 --> 00:08:13,600 pagal susitarimą argv, argumentas vektorius, bet daugiau apie tai prieš ilgas. 173 00:08:13,600 --> 00:08:17,090 Jei aš noriu gauti pirmo elemento iš argv, į nulio pasaulyje 174 00:08:17,090 --> 00:08:20,930 Jūs iš tikrųjų paprastai pradėti skaičiuoti nuo 1. 175 00:08:20,930 --> 00:08:22,850 >> Ir todėl aš gali gauti iš argv 1 punktą. 176 00:08:22,850 --> 00:08:26,310 Tai tiesiog kaip MIT įgyvendinti Sąrašų sąvoka. 177 00:08:26,310 --> 00:08:29,860 Tačiau C, aš ruošiuosi daugiau tiesiog tiesiog pasakyti, argv, 178 00:08:29,860 --> 00:08:32,758 kuris vėl yra pavadinti savo list-- arba būti aišku, masyvas. 179 00:08:32,758 --> 00:08:34,549 O jei aš noriu pirmas elementai, aš ruošiuosi 180 00:08:34,549 --> 00:08:37,890 naudoti skliaustus,, kuris jus gali ne dažnai naudojamas pagal klaviatūra. 181 00:08:37,890 --> 00:08:40,150 >> Bet 0 tiesiog reiškia, gauti man pirmas. 182 00:08:40,150 --> 00:08:42,160 Taigi kartais, ir kaip laikas eina, mes ketiname 183 00:08:42,160 --> 00:08:44,570 pradėti žiūrėti šiuos dichotomijas tarp nulio ir C, 184 00:08:44,570 --> 00:08:46,070 kuriuo įbrėžimams naudoja vieną. 185 00:08:46,070 --> 00:08:47,670 Mes C naudoti 0 čia. 186 00:08:47,670 --> 00:08:49,420 Bet jūs greitai pamatyti kai jūs suprantate, 187 00:08:49,420 --> 00:08:52,920 kiekvienos kalbos pamatus, šie dalykai pradeda gauti dar 188 00:08:52,920 --> 00:08:56,860 susipažinę per praktiką ir praktikos. 189 00:08:56,860 --> 00:08:59,700 >> Tad tikrai atrodo dabar programai. 190 00:08:59,700 --> 00:09:04,031 Čia turi būti pirmasis mūsų C kodo sukomplektuotų programas. 191 00:09:04,031 --> 00:09:06,280 Ir programa mes ketiname pasiūlyti apsvarstyti 192 00:09:06,280 --> 00:09:09,340 yra vienas, kad yra lygiavertis tai anksčiau Scratch gabalas. 193 00:09:09,340 --> 00:09:13,210 >> Taigi čia mes turime tai, kas be abejo, paprasčiausias, C programa 194 00:09:13,210 --> 00:09:15,410 galite parašyti, kad tikrai daro kažką. 195 00:09:15,410 --> 00:09:18,250 Dabar, mes pažvelgti praeitį, dabar, jau yra, 196 00:09:18,250 --> 00:09:21,190 standartinis io.h, ir tai kampas skliausteliuose, ir INT ir tuščia, 197 00:09:21,190 --> 00:09:22,840 ir klamrami, ir pan. 198 00:09:22,840 --> 00:09:25,390 >> Ir tegul tik sutelkti dėmesį į kas, bent jau intuityviai, 199 00:09:25,390 --> 00:09:26,860 gali iššokti į tave jau. 200 00:09:26,860 --> 00:09:30,300 Iš tiesų, pagrindinis, aš ne visada žino, kas tai yra, 201 00:09:30,300 --> 00:09:34,580 bet panašiai kaip Scratch turėjo, kad kai Žaliosios vėliavos paspausti įspūdį, 202 00:09:34,580 --> 00:09:39,070 todėl nėra C kaip programavimo kalba turėti pagrindinį kodo fragmentą, kad 203 00:09:39,070 --> 00:09:43,380 paleidžiama vykdyti pagal nutylėjimą. Ir, tiesą sakant, tai tiesiog bus vadinamas pagrindinis. 204 00:09:43,380 --> 00:09:44,720 >> Taigi pagrindinis yra funkcija. 205 00:09:44,720 --> 00:09:48,720 Ir tai speciali funkcija, kuri egzistuoja C, kad paleidus programą, 206 00:09:48,720 --> 00:09:52,720 tai pagrindinis, kad gauna valdo numatytas. Atsižvelgiant į nulio pasaulyje, 207 00:09:52,720 --> 00:09:56,970 ji paprastai buvo, kai žalia vėliava paspaudėte, kad gavo paleisti pagal nutylėjimą. 208 00:09:56,970 --> 00:10:01,130 >> Tuo tarpu, mes matėme prieš tai, printf ar spausdinimo formato, tai 209 00:10:01,130 --> 00:10:05,620 bus funkcija, kuri ateina su C, kartu su visa krūva kitų, 210 00:10:05,620 --> 00:10:10,140 kad valia laiko ir laiko nuo vėl, tam, kad padaryti tiksliai 211 00:10:10,140 --> 00:10:12,450 kaip rodo jo pavadinimas, spausdinti kažką. 212 00:10:12,450 --> 00:10:13,500 Ką mes norime spausdinti? 213 00:10:13,500 --> 00:10:15,770 Na, mes matome, kad iki apsupimo simbolių 214 00:10:15,770 --> 00:10:18,680 kaip these-- hello world, Backslash n dvigubų kabučių, 215 00:10:18,680 --> 00:10:23,040 mes galime pasakyti printf tiksliai Ką spausdinti ekrane. 216 00:10:23,040 --> 00:10:26,430 >> Tačiau, norint tai padaryti kad mes, deja, 217 00:10:26,430 --> 00:10:30,010 reikia imtis kažką, kad yra jau paslaptingas į mus žmonių, 218 00:10:30,010 --> 00:10:34,510 bet bent jau tai šiek tiek readable-- SHARP apima, standartinis io.h, INT, 219 00:10:34,510 --> 00:10:39,340 Pagrindinis, tuščia, printf, visi stebuklinga užkalbėjimai mes tik pamačiau ekrane. 220 00:10:39,340 --> 00:10:42,470 Bet mes iš tikrųjų turi eiti daugiau paslaptingą dar. 221 00:10:42,470 --> 00:10:47,140 Mes pirmiausia reikia išversti kodą kad mes rašome į mašininį kodą. 222 00:10:47,140 --> 00:10:51,370 Ir prisiminti, nuo praeitos savaitės, kad mašinos, bent tie žinome čia 223 00:10:51,370 --> 00:10:54,450 ne dienos pabaigoje tik suprasti nulių ir. 224 00:10:54,450 --> 00:10:58,100 >> Ir mano Dieve, jei mes turėjome rašyti tai nulių ir faktiškai programos 225 00:10:58,100 --> 00:11:01,260 tai būtų labai, labai greitai imtis įdomus iš nieko. 226 00:11:01,260 --> 00:11:05,150 Bet pasirodo, už praeitą savaitę, kad šie nulių ir modeliai 227 00:11:05,150 --> 00:11:06,400 tiesiog ypatingą reikšmę. 228 00:11:06,400 --> 00:11:08,500 Tam tikrais kontekstuose, jie gali reikšti numerius. 229 00:11:08,500 --> 00:11:11,840 >> Kai kontekstuose, jie gali reikšti laiškus ar spalvos, ar bet koks skaičius 230 00:11:11,840 --> 00:11:14,710 Kitų abstrakcijų ten ant. 231 00:11:14,710 --> 00:11:18,450 Bet kaip kompiuteris yra CPU, centrinis apdorojimo blokas, 232 00:11:18,450 --> 00:11:20,390 arba viduje kompiuterio smegenys. 233 00:11:20,390 --> 00:11:22,240 Tai paprastai "Intel" viduje, nes tai 234 00:11:22,240 --> 00:11:24,900 viena iš didžiausių bendrovių kad daro procesorius kompiuteriams. 235 00:11:24,900 --> 00:11:28,910 >> Na, "Intel" procesoriai ir kiti tiesiog nusprendė iš anksto 236 00:11:28,910 --> 00:11:33,970 kad tam tikri modeliai nuliai ir tie tai konkrečių dalykų. 237 00:11:33,970 --> 00:11:37,040 Kai kurie modeliai nulių ir reikš, atspausdinti į ekraną, 238 00:11:37,040 --> 00:11:39,710 arba pridėti šiuos du numerius arba atimti šiuos du skaičius, 239 00:11:39,710 --> 00:11:43,310 arba perkelti šį duomenų gabalas iš Mano kompiuteris atminties daugiau nei čia 240 00:11:43,310 --> 00:11:47,870 arba bet kurį kitą labai žemo lygio numeris, bet galiausiai naudinga, operacijų. 241 00:11:47,870 --> 00:11:53,022 Bet, laimei, mes, žmonės nesiruošia to reikia žinoti, kad šis išsamumo lygį. 242 00:11:53,022 --> 00:11:56,230 Iš tiesų, kaip ir paskutinį kartą, kur mes išgaunamo vėl, ir vėl, ir vėl, 243 00:11:56,230 --> 00:11:58,930 Pastatas nuo labai žemo lygio primityvai kaip nulių ir 244 00:11:58,930 --> 00:12:01,160 Į aukštesnį lygį sąvokų kaip skaičiai ir raidės, 245 00:12:01,160 --> 00:12:04,330 ir spalvos, ir daugiau, taip mes galime programuotojais 246 00:12:04,330 --> 00:12:07,080 stovi ant pečių kiti, kurie atvyko prieš mus 247 00:12:07,080 --> 00:12:11,260 ir naudoti programinę įrangą, kad kiti žmonės parašyta prieš us-- 248 00:12:11,260 --> 00:12:14,340 ty programos vadinamas kompiliatoriai. 249 00:12:14,340 --> 00:12:17,770 >> C yra kalba, kuri paprastai parengta, 250 00:12:17,770 --> 00:12:22,130 o tai reiškia, konvertuoti iš kodą į mašininį kodą. 251 00:12:22,130 --> 00:12:25,230 Visų pirma, ką tai reiškia yra tai, kad jei jūs turite savo šaltinį 252 00:12:25,230 --> 00:12:29,530 kodą, kurį sau rašyti, kaip mes greitai bus vos akimirką ekrane, 253 00:12:29,530 --> 00:12:33,140 ir norite jį paversti galiausiai mašina code-- 254 00:12:33,140 --> 00:12:37,100 tie nuliai ir tie, kurie tik jūsų Mac arba jūsų kompiuteris 255 00:12:37,100 --> 00:12:41,230 understands-- jūs turite pirmas pašarus, šaltinio kodą, kaip 256 00:12:41,230 --> 00:12:46,340 indėlis į ypatingas programa, vadinama sudarytojas, 257 00:12:46,340 --> 00:12:48,974 įtaisas, kurio išėjimas mes regės yra mašina kodą. 258 00:12:48,974 --> 00:12:51,890 Ir, tiesą sakant, paskutinį kartą mes kalbėjome apie, tikrai, bent dienos pabaigoje, 259 00:12:51,890 --> 00:12:52,610 problemų sprendimas. 260 00:12:52,610 --> 00:12:53,360 Jūs turite įėjimai. 261 00:12:53,360 --> 00:12:54,318 Ir jūs turite rezultatus. 262 00:12:54,318 --> 00:12:56,560 Ir jūs turite šiek tiek natūra algoritmas viduryje. 263 00:12:56,560 --> 00:12:59,830 >> Algoritmai tikrai gali būti įgyvendinama programa, 264 00:12:59,830 --> 00:13:02,900 kaip matėme su Pseudocode paskutinę savaitę ir kaip matysime su faktine kodas 265 00:13:02,900 --> 00:13:03,490 šią savaitę. 266 00:13:03,490 --> 00:13:06,430 Ir todėl kompiliatorius tikrai tik turi algoritmų rinkinį viduje 267 00:13:06,430 --> 00:13:10,060 tai, kad nežino, kaip konvertuoti specialius žodžius, 268 00:13:10,060 --> 00:13:12,180 kaip pagrindinio ir printf, ir kiti, kad mes tiesiog 269 00:13:12,180 --> 00:13:17,620 pamačiau į nulius modelius ir tie, kurie "Intel viduje ir kiti procesorius 270 00:13:17,620 --> 00:13:20,020 iš tikrųjų supranta. 271 00:13:20,020 --> 00:13:22,460 Taigi, kaip mes tai darome? 272 00:13:22,460 --> 00:13:24,470 Kur mes gauti kompiliatorių? 273 00:13:24,470 --> 00:13:26,400 >> Daugelis iš mūsų čia turite Mac ar PC. 274 00:13:26,400 --> 00:13:29,152 Ir jūs naudojate Mac OS, arba "Windows" arba "Linux arba Solaris 275 00:13:29,152 --> 00:13:30,860 arba bet kitas numeris Operacinės sistemos. 276 00:13:30,860 --> 00:13:32,568 Ir, iš tiesų, mes galime išeiti į internetą 277 00:13:32,568 --> 00:13:35,710 ir atsisiųsti kompiliatorių Jūsų Mac ar kompiuteryje 278 00:13:35,710 --> 00:13:37,360 savo pirma operacinę sistemą. 279 00:13:37,360 --> 00:13:39,617 Bet mes visi būti skirtingi puslapiai, taip sakant. 280 00:13:39,617 --> 00:13:41,450 Mes norime šiek tiek turi skirtingų konfigūracijų. 281 00:13:41,450 --> 00:13:43,210 Ir viskas nebūtų dirbti visi tą patį. 282 00:13:43,210 --> 00:13:45,280 Ir, iš tiesų, šių dienų Daugeliui iš mūsų nereikia naudoti 283 00:13:45,280 --> 00:13:47,516 programinė įranga, kuri veikia tik ant mūsų nešiojamieji kompiuteriai. 284 00:13:47,516 --> 00:13:49,390 Vietoj to, mes naudojame kažką kaip naršyklę, kuri 285 00:13:49,390 --> 00:13:52,930 leidžia mums naudotis interneto pagrindu paraiškas debesyje. 286 00:13:52,930 --> 00:13:55,630 Ir vėliau šį semestrą, mes padarysime lygiai taip pat. 287 00:13:55,630 --> 00:13:59,660 Mes parašyti programas ar programinė įranga, naudojant code-- ne C 288 00:13:59,660 --> 00:14:02,860 bet kitos kalbos kaip Python ir JavaScript--, kad paleisti į debesis. 289 00:14:02,860 --> 00:14:05,860 >> Ir tai padaryti, mes patys semestro metu 290 00:14:05,860 --> 00:14:11,890 bus iš tikrųjų naudoti debesis pagrįstas aplinka žinomas kaip CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 Tai internetinė programavimas aplinka, arba integruotas vystymas 292 00:14:16,030 --> 00:14:20,610 aplinka, IDE, kad pastatytas ant kai atviro kodo programinė įranga vadinama Debesis 9. 293 00:14:20,610 --> 00:14:22,966 Ir mes padarėme kai pedagoginė supaprastinimai į jį 294 00:14:22,966 --> 00:14:25,840 taip, kad paslėpti tam tikri elementai Pirmosiomis savaitėmis, kad mums nereikia, 295 00:14:25,840 --> 00:14:27,770 po kurio galite atskleisti juos ir padaryti dauguma 296 00:14:27,770 --> 00:14:29,400 Viskas, ką norite su aplinka. 297 00:14:29,400 --> 00:14:32,470 >> O tai leidžia mus, taip pat, kad iš anksto įdiegti tam tikrą programinę įrangą. 298 00:14:32,470 --> 00:14:35,330 Dalykų, pavyzdžiui, vadinamasis CS50 biblioteka, kurią mes netrukus pamatysite 299 00:14:35,330 --> 00:14:39,210 suteikia mums C su kai Papildomos funkcijos. 300 00:14:39,210 --> 00:14:44,392 Taigi, jei jūs einate į galiausiai CS50.io, būsite paraginti prisijungti, 301 00:14:44,392 --> 00:14:46,350 ir kai jūs darote ir sukurti paraiška nemokamą paskyrą, 302 00:14:46,350 --> 00:14:52,150 galėsite prieiti prie aplinka, kuri atrodo gana panašus į šį. 303 00:14:52,150 --> 00:14:53,760 >> Dabar, tai yra numatytąją režimu. 304 00:14:53,760 --> 00:14:55,650 Viskas yra gražus ir šviesus ekrane. 305 00:14:55,650 --> 00:14:57,941 Daugelis iš mūsų turime įprotį darbo CS50 gabalas tai 306 00:14:57,941 --> 00:14:59,150 gana vėlyvos nakties. 307 00:14:59,150 --> 00:15:02,400 Ir taip kai kurie iš jūsų norėti paversti jį nakties režimą, taip sakant. 308 00:15:02,400 --> 00:15:05,550 >> Bet, galų gale, ką jūs ketiname pamatyti per CS50 IDE 309 00:15:05,550 --> 00:15:08,340 yra tris skirtingas areas-- sritis, kairėje ir tais 310 00:15:08,340 --> 00:15:12,604 failai bus į debesis, sritis, viršutiniame dešiniajame 311 00:15:12,604 --> 00:15:14,270 kur jūsų kodas bus redaguojami. 312 00:15:14,270 --> 00:15:16,650 Galėsite atidaryti individualūs skirtukai bet kurią programą 313 00:15:16,650 --> 00:15:19,670 kad rašote šį semestrą viduje tos viršutiniame dešiniajame kampe. 314 00:15:19,670 --> 00:15:23,070 Ir tada pats arcanely, ir dar stipriai, 315 00:15:23,070 --> 00:15:26,610 bus šis dalykas ne iš apačios į žinomas kaip terminalo lange. 316 00:15:26,610 --> 00:15:29,450 >> Tai senosios mokyklos Komandinės eilutės sąsaja, 317 00:15:29,450 --> 00:15:32,240 arba CLI, kuri leidžia jums vykdyti komandas 318 00:15:32,240 --> 00:15:35,260 dėl šiuo atveju computer--, tačiau prasidėjusi cloud-- kompiuteris 319 00:15:35,260 --> 00:15:39,090 daryti tokius dalykus kaip kaupti kodą iš išeities kodo į mašininį kodą, 320 00:15:39,090 --> 00:15:43,600 paleisti savo programas, arba pradėti savo žiniatinklio serveris, ar prieiti prie jūsų duomenų bazės, 321 00:15:43,600 --> 00:15:47,454 ir bet kurį iš kitų metodų numeris kad mes pradėsime naudoti prieš ilgai. 322 00:15:47,454 --> 00:15:49,370 Bet ten, mes ketina iš tikrųjų turi 323 00:15:49,370 --> 00:15:51,240 prie interneto ir pradėti žaisti. 324 00:15:51,240 --> 00:15:54,399 Ir tai padaryti, tegul pirmas pradėti skardinimo su pagrindiniu, 325 00:15:54,399 --> 00:15:55,940 ir rašyti pagrindinį programos dalis. 326 00:15:55,940 --> 00:15:59,170 Ir tegul naudoti šią funkciją printf, kurį mes naudojamas anksčiau, 327 00:15:59,170 --> 00:16:01,050 tiesiog pasakyti kažką. 328 00:16:01,050 --> 00:16:04,910 >> Taigi čia aš jau viduje CS50 IDE. 329 00:16:04,910 --> 00:16:05,930 Aš prisijungęs anksto. 330 00:16:05,930 --> 00:16:07,360 Ir aš visiškai patikrintas langą. 331 00:16:07,360 --> 00:16:09,670 Ir taip, galiausiai jums per ateinančiais problemų 332 00:16:09,670 --> 00:16:12,960 seks panašius veiksmus, teiks internetu dokumentaciją. 333 00:16:12,960 --> 00:16:16,360 Taigi jums nereikia jaudintis sugeria kas mažai techninę žingsnis 334 00:16:16,360 --> 00:16:17,730 kad aš čia šiandien. 335 00:16:17,730 --> 00:16:19,222 >> Bet jūs gausite panašaus ekraną. 336 00:16:19,222 --> 00:16:20,430 Aš atsitikti, kad naktiniu režimu. 337 00:16:20,430 --> 00:16:22,944 Ir jūs galite pašviesinti viską iki išjungti naktinį režimą. 338 00:16:22,944 --> 00:16:24,860 Ir galutinio dieną, jūs ketinate pamatyti 339 00:16:24,860 --> 00:16:30,090 tai trys pagrindinės areas-- failą Naršyklė kairėje, kodų skirtukai iki viršaus, 340 00:16:30,090 --> 00:16:32,430 ir terminalo langą apačioje. 341 00:16:32,430 --> 00:16:34,890 >> Leiskite man eiti į priekį ir rašyti savo pirmąją programą. 342 00:16:34,890 --> 00:16:42,300 Aš ruošiuosi Preemptively eikite į File, Išsaugoti ir išsaugoti savo failą taip hello.c. 343 00:16:42,300 --> 00:16:46,850 Iš tiesų, pagal susitarimą, bet programa, kurią mes parašyti, kad parašyta C kalba 344 00:16:46,850 --> 00:16:49,739 turėtų būti pavadintas kažką taškas c, pagal susitarimą. 345 00:16:49,739 --> 00:16:53,030 Taigi, aš ruošiuosi pavadinkite jį hello.c, nes Aš tik noriu pasakyti labas pasaulyje. 346 00:16:53,030 --> 00:16:54,820 Dabar aš ruošiuosi padidinti iš ir spustelėkite Įrašyti. 347 00:16:54,820 --> 00:16:58,180 Ir viskas, ką turiu čia dabar yra skirtukas į kurį galiu pradėti rašyti kodą. 348 00:16:58,180 --> 00:16:59,490 >> Tai nesiruošia sudaryti. 349 00:16:59,490 --> 00:17:00,300 Tai reiškia, nieko. 350 00:17:00,300 --> 00:17:02,750 Ir net jei aš konvertuoti tai nulių ir, 351 00:17:02,750 --> 00:17:05,390 CPU teks ne idėja, kas vyksta aplink. 352 00:17:05,390 --> 00:17:14,170 Bet jei aš rašau linijas, kurios atitiktų su C anketa conventions-- C būties, 353 00:17:14,170 --> 00:17:20,150 Vėlgi, tai language-- su sintakse, kaip tai, printf Sveiki world-- ir aš 354 00:17:20,150 --> 00:17:22,210 Dotarłeś patogiai Tokiu būdu per tam tikrą laiką. 355 00:17:22,210 --> 00:17:24,510 Taigi, aš nemanau, kad aš padariau bet tipografijos klaidų. 356 00:17:24,510 --> 00:17:27,910 >> Bet visada, pats pirmas laikas tai padaryti, jums bus. 357 00:17:27,910 --> 00:17:31,090 Ir ką aš esu apie tai galėtų labai gerai neveikia už jus pirmą kartą. 358 00:17:31,090 --> 00:17:33,610 Ir tai puikiai Gerai, nes dabar tu 359 00:17:33,610 --> 00:17:37,662 gali tik pamatyti visai daug naujumo, tačiau laikui bėgant kai gausite susipažinę 360 00:17:37,662 --> 00:17:39,870 su šioje aplinkoje, ir Ši kalba, o kiti, 361 00:17:39,870 --> 00:17:42,370 Jūs pradėsite matyti dalykus, kurie yra arba teisingas, arba klaidingas. 362 00:17:42,370 --> 00:17:44,369 >> Ir tai, ką Mokymo bičiuliai ir žinoma 363 00:17:44,369 --> 00:17:48,780 padėjėjai gauti taip gerai per tam tikrą laiką, yra tepimas klaidų ar klaidų savo kodą. 364 00:17:48,780 --> 00:17:52,110 Bet aš teigti, kad egzistuoja nėra šio Kodekso klaidas. 365 00:17:52,110 --> 00:17:53,990 Taigi, aš dabar norite paleisti šią programą. 366 00:17:53,990 --> 00:17:57,440 >> Dabar ant mano paties Mac arba PC, aš dvigubų Paspaudę piktogramos įprotis 367 00:17:57,440 --> 00:17:59,350 kai noriu paleisti kai programą. 368 00:17:59,350 --> 00:18:01,080 Bet tai dar ne modelis čia. 369 00:18:01,080 --> 00:18:04,570 Šioje aplinkoje, kuri yra CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 Mes naudojame vykdantis sistema, vadinama "Linux". 371 00:18:07,192 --> 00:18:09,900 Linux yra primenantis kitą operacinė sistema, visuotinai žinoma 372 00:18:09,900 --> 00:18:10,850 kaip Unix. 373 00:18:10,850 --> 00:18:16,340 Ir Linux ypač žinomas dėl turintys Komandinės eilutės aplinka, CLI. 374 00:18:16,340 --> 00:18:20,070 Dabar, mes naudojant specialias skonio Linux vadinamas Ubuntu. 375 00:18:20,070 --> 00:18:22,770 Ir Ubuntu yra tiesiog tikra versija Linux. 376 00:18:22,770 --> 00:18:27,900 >> Tačiau šie Linux šių dienų tai tikrai ateiti su grafinės vartotojo sąsajos. 377 00:18:27,900 --> 00:18:30,360 Ir viena, mes atsitikti naudojate čia yra žiniatinklio. 378 00:18:30,360 --> 00:18:32,735 Taigi tai gali atrodyti net šiek tiek skiriasi nuo kažko 379 00:18:32,735 --> 00:18:35,310 tu gali turėti matyti arba paleisti praeityje. 380 00:18:35,310 --> 00:18:37,910 >> Taigi, aš ruošiuosi eiti į priekį dabar ir atlikite šiuos veiksmus. 381 00:18:37,910 --> 00:18:40,950 Aš išgelbėti šį failą kaip hello.c. 382 00:18:40,950 --> 00:18:47,350 Aš ruošiuosi eiti į priekį ir tipo clanghello.c Taigi žvangėjimas 383 00:18:47,350 --> 00:18:49,850 už C kalba yra kompiliatorius. 384 00:18:49,850 --> 00:18:51,952 Tai iš anksto įdiegta į CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 Ir jūs galite atsisiųsti ir visiškai įdiegti šią savo Mac arba PC. 386 00:18:54,910 --> 00:18:57,910 >> Bet, vėlgi, jums nereikės visi iš anksto konfigūracija padaryta už jus. 387 00:18:57,910 --> 00:19:00,940 Taigi dabar, aš tiesiog ketina paleisti clanghello.c. 388 00:19:00,940 --> 00:19:03,240 Ir dabar pastebėsite šį sintaksė čia galų gale 389 00:19:03,240 --> 00:19:06,930 suprasti, tiesiog reiškia, kad aš esu A aplankas arba katalogas vadinamas Workspace. 390 00:19:06,930 --> 00:19:11,030 Tai dolerio ženklas yra tik konvencija prasmės, įveskite savo komandas čia. 391 00:19:11,030 --> 00:19:14,560 >> Tai, kas vadinama greitai, tik pagal susitarimą yra dolerio ženklas. 392 00:19:14,560 --> 00:19:19,130 Ir jei aš einu į priekį dabar ir spustelėkite Įveskite, nieko, atrodo, atsitiko. 393 00:19:19,130 --> 00:19:20,930 Bet tai tikrai geras dalykas. 394 00:19:20,930 --> 00:19:23,650 Kuo mažiau, kad vyksta Jūsų ekranas, tuo labiau tikėtina, 395 00:19:23,650 --> 00:19:26,710 Jūsų kodas turi būti teisinga, bent sintaksiškai. 396 00:19:26,710 --> 00:19:29,120 >> Taigi, jei aš noriu paleisti tai Programa, ką man daryti? 397 00:19:29,120 --> 00:19:33,770 Na, tai paaiškėja, kad Numatytasis vardas pagal susitarimą 398 00:19:33,770 --> 00:19:38,854 programas, kai jūs nenurodote vardą savo programa yra tik a.out. 399 00:19:38,854 --> 00:19:41,270 Ir tai sintaksė taip pat jums susipažinti su prieš ilgas. 400 00:19:41,270 --> 00:19:47,500 >> Dot velniop tiesiog reiškia, ei, CS50 IDE, paleisti programą, pavadintą a.out 401 00:19:47,500 --> 00:19:49,400 kad viduje mano dabartinis kataloge. 402 00:19:49,400 --> 00:19:51,520 Kad taškas reiškia einamą aplanką. 403 00:19:51,520 --> 00:19:55,040 Ir mes pamatyti, ką kiti tokias sekas simbolių reiškia prieš ilgas. 404 00:19:55,040 --> 00:19:58,430 >> Taigi čia mes einame, Enter hello world. 405 00:19:58,430 --> 00:20:00,080 Ir jūs pastebėsite, kad tai, kas atsitiko? 406 00:20:00,080 --> 00:20:01,580 nebuvo tik ji spausdinti hello world. 407 00:20:01,580 --> 00:20:05,990 Ji taip pat persikėlė žymeklį į kitą eilutę. 408 00:20:05,990 --> 00:20:07,160 >> Ir kodėl tai buvo? 409 00:20:07,160 --> 00:20:12,400 Koks buvo kodas, rašėme prieš kad užtikrinti, kad žymeklis būtų 410 00:20:12,400 --> 00:20:14,882 eiti į kitą eilutę? 411 00:20:14,882 --> 00:20:16,840 Įdomiausia maždaug Kompiuteris tai tik ketina 412 00:20:16,840 --> 00:20:18,570 daryti tiesiog ką pasakyti, daryti. 413 00:20:18,570 --> 00:20:26,050 >> Taigi, jei jūs pasakyti, kad printf Sveiki, kablelis, tarpas, pasaulis, netoli citata, 414 00:20:26,050 --> 00:20:29,090 tai tiesiog tik ketina spausdinti tuos simbolius. 415 00:20:29,090 --> 00:20:31,980 Bet aš turėjau šią ypatingą charakterį pabaigoje Prisiminkite, pasvirąjį n. 416 00:20:31,980 --> 00:20:34,230 Ir tai, kas užtikrino kad charakteris išvyko 417 00:20:34,230 --> 00:20:36,570 į kitą eilutę ekrano. 418 00:20:36,570 --> 00:20:38,097 >> Tiesą sakant, leiskite man eiti ir tai padaryti. 419 00:20:38,097 --> 00:20:39,430 Leiskite man eiti į priekį ir ištrinti. 420 00:20:39,430 --> 00:20:41,180 Dabar, pastebėsite, kad Į viršų mano ekrano ten 421 00:20:41,180 --> 00:20:42,890 šiek tiek raudonos šviesos skirtukas nurodant, 422 00:20:42,890 --> 00:20:45,047 Ei, jūs išsaugojote failą. 423 00:20:45,047 --> 00:20:47,880 Taigi, aš ruošiuosi eiti į priekį su kontrolės S arba komandų S išsaugoti failą. 424 00:20:47,880 --> 00:20:51,130 Dabar goes-- išvyko moment-- žalia. 425 00:20:51,130 --> 00:20:53,760 Ir dabar jis vėl tiesiog yra artimas ikona. 426 00:20:53,760 --> 00:21:01,860 >> Jei aš dabar paleisti clanghello.c vėl Įveskite, taškas velniop, a.out, Enter 427 00:21:01,860 --> 00:21:04,110 pamatysite, kad ji vis dar dirbo. 428 00:21:04,110 --> 00:21:06,020 Bet tai, be abejo, šiek tiek Buggy. 429 00:21:06,020 --> 00:21:08,714 Dabar, mano prompt-- Workspace, ir tada, kad dolerio ženklas, 430 00:21:08,714 --> 00:21:10,880 ir tada mano tikrasis prompt-- yra visi toje pačioje eilutėje. 431 00:21:10,880 --> 00:21:14,540 Taigi, tai, žinoma, estetinis klaidą, net jei tai tikrai nėra logiška klaidą. 432 00:21:14,540 --> 00:21:16,250 >> Taigi, aš ruošiuosi atšaukti ką tik padarė. 433 00:21:16,250 --> 00:21:18,560 Aš ruošiuosi pakartotas a.out. 434 00:21:18,560 --> 00:21:22,710 Pranešimo I pridėjome naujos eilutės simbolis atgal. 435 00:21:22,710 --> 00:21:24,280 Aš išsaugoti failą. 436 00:21:24,280 --> 00:21:31,630 >> Taigi, aš ruošiuosi pakartotas a.out, and-- Dammit, klaida, klaida reiškia klaidą. 437 00:21:31,630 --> 00:21:35,020 Taigi klaida yra tai, kad nors Aš pridėjo kairinį brūkšnį, n ten, 438 00:21:35,020 --> 00:21:41,180 Re išsaugotas, vėl bėgo programą, elgesį buvo tas pats. 439 00:21:41,180 --> 00:21:42,640 Kodėl tai būtų? 440 00:21:42,640 --> 00:21:43,910 >> Aš trūksta žingsnį, tiesa? 441 00:21:43,910 --> 00:21:47,620 Tai svarbus žingsnis anksčiau buvo, kad jūs turite to--, kai jūs pakeičiate savo kodą, 442 00:21:47,620 --> 00:21:49,610 paaiškėja, taip pat paleisti tai per sudarytojas 443 00:21:49,610 --> 00:21:51,102 vėl taip gausite naują mašininį kodą. 444 00:21:51,102 --> 00:21:52,810 Ir mašina kodas, kad nulių ir, 445 00:21:52,810 --> 00:21:56,260 ketinate būti beveik identiški, tačiau nėra visiškai taip, nes mes turime, 446 00:21:56,260 --> 00:21:57,510 Žinoma, kad nauja linija. 447 00:21:57,510 --> 00:22:02,640 >> Taigi, norint išspręsti šią problemą, aš ruošiuosi reikia Pakartotinas clanghello.c, įveskite, taškas 448 00:22:02,640 --> 00:22:03,800 velniop, a.out. 449 00:22:03,800 --> 00:22:08,402 Ir dabar, Hello world atgal kur aš tikėtis, kad ji bus. 450 00:22:08,402 --> 00:22:09,610 Taigi tai yra viskas gerai ir gerai. 451 00:22:09,610 --> 00:22:13,150 Bet a.out yra gana kvailas vardas dėl programa, nors tai atsitinka būti, 452 00:22:13,150 --> 00:22:16,530 dėl istorinių priežasčių default-- reiškia surinkimo rezultatus. 453 00:22:16,530 --> 00:22:20,780 >> Bet leiskite man eiti į priekį čia ir tai padaryti kitaip. 454 00:22:20,780 --> 00:22:24,760 Aš noriu, kad mano hello world programa kad iš tikrųjų galima pavadinti labas. 455 00:22:24,760 --> 00:22:28,320 Taigi, jei ji būtų piktogramą ant mano darbastalio, tai nebūtų a.out. 456 00:22:28,320 --> 00:22:29,730 Tai būtų galima pavadinti labas. 457 00:22:29,730 --> 00:22:33,660 >> Taigi, norint tai padaryti, ji Pasirodo, kad žvangėjimas, kaip ir daugelis programų, 458 00:22:33,660 --> 00:22:37,980 palaiko komandinės eilutės argumentus, arba vėliavos, ar jungiklių, 459 00:22:37,980 --> 00:22:39,600 kuris tiesiog paveikti jo elgesį. 460 00:22:39,600 --> 00:22:45,160 Tiksliau, klingsėti palaiko brūkšnelį o vėliava, kuris vėliau į antrą žodį. 461 00:22:45,160 --> 00:22:48,190 Šiuo atveju, aš savavališkai, bet protingai, ją vadina labas. 462 00:22:48,190 --> 00:22:50,710 Bet galėčiau jį pavadinti nieko Noriu, išskyrus a.out, kuris 463 00:22:50,710 --> 00:22:52,390 būtų gana be taško. 464 00:22:52,390 --> 00:22:55,640 >> Ir tada tiesiog nurodykite vardą Bylos aš noriu rinkti. 465 00:22:55,640 --> 00:22:59,190 Todėl dabar, nors šiuo metu pradžioje apie komandą dar turiu žvangėjimas, 466 00:22:59,190 --> 00:23:01,410 ties komandos pabaigoje Aš vis dar turiu failo pavadinimą, 467 00:23:01,410 --> 00:23:05,520 dabar turiu šias komandų eilutę argumentai, šios vėliavos, kad sako, 468 00:23:05,520 --> 00:23:11,180 Oh, beje, išėjimas-O, byla vadinamas Sveiki, nėra numatytoji a.out. 469 00:23:11,180 --> 00:23:13,810 >> Taigi, jei nukentėjo Aš Įveskite dabar nieko Panašu, kad atsitiko. 470 00:23:13,810 --> 00:23:17,900 Ir dar, dabar galiu padaryti dot velniop labas. 471 00:23:17,900 --> 00:23:19,089 Taigi, tai tą pačią programą. 472 00:23:19,089 --> 00:23:21,380 Į nulių ir yra identiški dienos pabaigoje. 473 00:23:21,380 --> 00:23:24,210 >> Bet jie į dvi skiriasi files-- a.out, 474 00:23:24,210 --> 00:23:26,490 kuri yra pirmoji versija ir tiesiog kvailai pavadintas, 475 00:23:26,490 --> 00:23:30,250 o dabar labas, kuri yra daug patrauklesnės pavadinimas programą. 476 00:23:30,250 --> 00:23:33,195 Tačiau, sąžiningai, aš esu niekada ketina prisiminti tai vėl, 477 00:23:33,195 --> 00:23:34,070 ir vėl, ir vėl. 478 00:23:34,070 --> 00:23:36,411 Ir, iš tikrųjų, kaip mes rašome daugiau sudėtingas programas, 479 00:23:36,411 --> 00:23:38,160 komandas esate teks rašyti 480 00:23:38,160 --> 00:23:40,920 ketinate gauti net daugiau sudėtinga dar. 481 00:23:40,920 --> 00:23:41,940 >> Ir taip nesijaudinti. 482 00:23:41,940 --> 00:23:46,220 Pasirodo, kad žmonės prieš mums jau supratau, jie taip pat 483 00:23:46,220 --> 00:23:47,530 turėjo būtent šį tą pačią problemą. 484 00:23:47,530 --> 00:23:50,900 Jie taip pat neturėjo būtinybės įrašykite gana ilgas, paslaptingų komandas, 485 00:23:50,900 --> 00:23:52,200 jau nekalbant apie juos prisimename. 486 00:23:52,200 --> 00:23:56,070 Ir taip žmonės prieš mus padarė Kitos programos, kad būtų lengviau 487 00:23:56,070 --> 00:23:57,670 sudaryti savo programinę įrangą. 488 00:23:57,670 --> 00:24:01,609 >> Ir, tiesą sakant, vienas iš tokių Programa vadinama padaryti. 489 00:24:01,609 --> 00:24:03,150 Taigi, aš ruošiuosi eiti į priekį ir tai padaryti. 490 00:24:03,150 --> 00:24:05,691 Aš ruošiuosi atšaukti viską, Aš tiesiog padarė taip. 491 00:24:05,691 --> 00:24:07,690 Leiskite tipo LS. 492 00:24:07,690 --> 00:24:10,980 Ir jūs pastebėsite trijų Quake a.out ir žvaigždė, labas 493 00:24:10,980 --> 00:24:12,810 ir žvaigždė, ir hello.c. 494 00:24:12,810 --> 00:24:14,730 Tikimės, kad tai turėtų būti šiek tiek paprastesnis, 495 00:24:14,730 --> 00:24:18,220 kiek anksčiau ten buvo niekas šioje darbo vietos. 496 00:24:18,220 --> 00:24:21,240 Nebuvo nieko, kad man teko sukurta kol mes pradėjo klasę. 497 00:24:21,240 --> 00:24:22,840 >> Ir aš sukūriau hello.c. 498 00:24:22,840 --> 00:24:24,544 tada aš surinkti jį ir pavadino jį a.out. 499 00:24:24,544 --> 00:24:27,460 Ir tada aš surinkti jį vėl šiek tiek skirtingai ir pavadino jį labas. 500 00:24:27,460 --> 00:24:32,830 Taigi turiu tris failus šiame kataloge, šiame aplanke vadinamas darbo vietos. 501 00:24:32,830 --> 00:24:35,005 Dabar matau, kad taip pat jei aš nutolinti tikrųjų. 502 00:24:35,005 --> 00:24:37,530 >> Jei aš nutolinti čia ir pažvelgti, kad viršutiniame dešiniajame 503 00:24:37,530 --> 00:24:39,940 kampe, kaip buvo žadėta kairė pus ekrano 504 00:24:39,940 --> 00:24:42,990 visada bus parodyti jums kas savo sąskaitoje, kas 505 00:24:42,990 --> 00:24:44,790 viduje CS50 IDE. 506 00:24:44,790 --> 00:24:46,680 Ir yra trys failai ten. 507 00:24:46,680 --> 00:24:49,070 >> Taigi noriu atsikratyti a.out ir labas. 508 00:24:49,070 --> 00:24:51,275 Ir kaip jums gali įsivaizduoti, intuityviai, jums 509 00:24:51,275 --> 00:24:53,400 gali rūšiuoti valdymo paspaudimu arba dešiniuoju pelės mygtuku spustelėkite šią. 510 00:24:53,400 --> 00:24:54,590 Ir tai mažai meniu pasirodo. 511 00:24:54,590 --> 00:24:57,170 Galite atsisiųsti failą, paleiskite IT, peržiūrėti jį, atnaujinkite, pervardyti, 512 00:24:57,170 --> 00:24:57,700 ar kas ne. 513 00:24:57,700 --> 00:25:00,260 >> Ir aš galėčiau tiesiog ištrinti, ir ji neišnyks. 514 00:25:00,260 --> 00:25:05,260 Bet darykime ką su komanda linija dabar, taip, kad būtų gauti patogi 515 00:25:05,260 --> 00:25:07,010 su tuo, ir atlikite šiuos veiksmus. 516 00:25:07,010 --> 00:25:12,345 Aš ruošiuosi eiti į priekį ir išimkite a.out įvesdami pažodžiui rma.out. 517 00:25:12,345 --> 00:25:14,890 Pasirodo, kad komandą pašalinti ar ištrinti kažką 518 00:25:14,890 --> 00:25:16,280 nėra pašalinti ar ištrinti. 519 00:25:16,280 --> 00:25:21,260 >> Tai daugiau glaustai RM, tik sutaupyti jums keletą klavišų, ir paspauskite "Enter". 520 00:25:21,260 --> 00:25:24,707 Dabar mes ketiname būti šiek tiek cryptically pašalinti reguliariai failo a.out. 521 00:25:24,707 --> 00:25:27,040 Aš tikrai nežino, kas yra nereguliarus failas būtų dar. 522 00:25:27,040 --> 00:25:28,660 Bet aš noriu jį pašalinti. 523 00:25:28,660 --> 00:25:30,150 >> Taigi, aš ruošiuosi Y tipo už "taip". 524 00:25:30,150 --> 00:25:31,940 Arba galėčiau įrašyti jį iš, ir paspauskite "Enter". 525 00:25:31,940 --> 00:25:33,440 Ir, vėlgi, nieko atrodo, kad taip atsitiktų. 526 00:25:33,440 --> 00:25:35,840 Bet tai, paprastai, yra geras dalykas. 527 00:25:35,840 --> 00:25:40,490 >> Jei aš tipo LS šį kartą, ką turėčiau pamatyti? 528 00:25:40,490 --> 00:25:44,930 Tikimės, tik labas ir hello.c. 529 00:25:44,930 --> 00:25:47,286 Dabar, kaip panaikinti, jums pastebėti šį žvaigždė, pažymėtus žvaigždute, 530 00:25:47,286 --> 00:25:48,660 tai ne mano programų pabaigoje. 531 00:25:48,660 --> 00:25:50,201 Ir jie taip pat rodo žalia spalva. 532 00:25:50,201 --> 00:25:53,970 Tai tiesiog CS50 IDE būdas iš cluing jus į tai, 533 00:25:53,970 --> 00:25:55,280 kad tai ne kodo. 534 00:25:55,280 --> 00:25:58,880 Štai vykdomąjį A Runnable programa, kad jūs iš tikrųjų galite paleisti 535 00:25:58,880 --> 00:26:01,020 daro dot velniop, tada tai vardas. 536 00:26:01,020 --> 00:26:05,860 >> Dabar leiskite man eiti į priekį ir išimkite tai, RM Sveiki, Enter pašalinti reguliariai 537 00:26:05,860 --> 00:26:08,010 file Sveiki, taip. 538 00:26:08,010 --> 00:26:11,180 Ir dabar, jei aš tipo LS, mes grįžome į hello.c. 539 00:26:11,180 --> 00:26:13,917 Stenkitės ne ištrinti savo Tikrasis kodo. 540 00:26:13,917 --> 00:26:16,250 Nors yra funkcijos pastatytas į CS50 IDE kur 541 00:26:16,250 --> 00:26:19,870 galite eiti per savo peržiūros istorija ir atgal laiku, jei jūs netyčia 542 00:26:19,870 --> 00:26:23,660 ištrinti kažką daryti nepamiršti kaip už šių raginimų TAIP arba NE, 543 00:26:23,660 --> 00:26:25,381 ką jūs iš tikrųjų norite daryti. 544 00:26:25,381 --> 00:26:27,380 Ir jei man eiti į viršų kairiajame kampe čia 545 00:26:27,380 --> 00:26:30,696 belieka hello.c. 546 00:26:30,696 --> 00:26:32,570 Taigi ten kekių kitas komandas, kad jūs 547 00:26:32,570 --> 00:26:37,550 gali vykdyti, Linux pasaulyje, iš kurių vienas yra, vėlgi, Make. 548 00:26:37,550 --> 00:26:40,180 Ir mes ketiname padaryti mano programa dabar taip. 549 00:26:40,180 --> 00:26:43,270 >> Užuot žvangėjimas, užuot žvangėjimas-o, 550 00:26:43,270 --> 00:26:45,860 Aš ruošiuosi tiesiog tiesiog tipą, markę Hello. 551 00:26:45,860 --> 00:26:49,630 Ir dabar pastebėsite, aš esu ne rašyti, kad hello.c. 552 00:26:49,630 --> 00:26:50,910 Aš rašyti padaryti Hello. 553 00:26:50,910 --> 00:26:54,840 >> Ir ši programa Padaryti, kad ateina su CS50 IDE, ir dar daugiau 554 00:26:54,840 --> 00:26:57,090 paprastai su Linux, yra programa, kuri yra 555 00:26:57,090 --> 00:26:59,120 ketina padaryti programą, pavadintą Sveiki. 556 00:26:59,120 --> 00:27:03,680 Ir jis ketina prisiimti, pagal susitarimą, kad, jei ši programa gali būti, 557 00:27:03,680 --> 00:27:09,030 jis ketina būti pagaminti iš šaltinio kodas failas baigiasi dot C, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> Taigi, jei nukentėjo Aš Įveskite dabar, pranešęs, kad komanda, kad paleidžiama vykdyti 559 00:27:12,210 --> 00:27:14,340 yra iš tikrųjų net ilgiau Prieš nei anksčiau. 560 00:27:14,340 --> 00:27:16,670 Ir tai todėl, kad mes sukonfigūruotas CS50 IDE turi 561 00:27:16,670 --> 00:27:19,878 keletas papildomų funkcijų pastatytas, kad mums nereikia, tik dar, bet greitai bus. 562 00:27:19,878 --> 00:27:23,470 Bet pagrindinis dalykas suvokti dabar turiu Hello programą. 563 00:27:23,470 --> 00:27:27,080 >> Jei aš tipo LS vėl, aš turi Hello programą. 564 00:27:27,080 --> 00:27:32,070 Ir aš galiu paleisti jį su taškas velniop a.out, ne, 565 00:27:32,070 --> 00:27:35,590 nes visa šios pratybos buvo taškas velniop labas. 566 00:27:35,590 --> 00:27:38,089 Ir dabar turiu hello world programa. 567 00:27:38,089 --> 00:27:39,880 Taigi juda į priekį, mes beveik visada tik 568 00:27:39,880 --> 00:27:42,088 ketina sudaryti mūsų programas naudojant komandų padaryti. 569 00:27:42,088 --> 00:27:45,300 Ir tada mes ketiname paleisti juos taškas velniop, ir programa vardas. 570 00:27:45,300 --> 00:27:49,610 Bet suprasti, ką padaryti yra darai tu, tai yra pati ne kompiliatorius. 571 00:27:49,610 --> 00:27:53,310 Tai tiesiog patogumo programa kad žino, kaip sukelti kompiliatorių 572 00:27:53,310 --> 00:27:56,470 paleisti, kad tu gali ją naudoti. 573 00:27:56,470 --> 00:28:00,220 >> Kas kitas komandas egzistuoja "Linux", ir, savo ruožtu CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 Mes netrukus pamatysite, kad ten Kompaktinių diskų komandą, Pakeisti katalogas. 575 00:28:03,107 --> 00:28:05,190 Tai leidžia jums per Jūsų komandų eilutės sąsaja 576 00:28:05,190 --> 00:28:07,610 judėti į priekį ir atgal, ir atverti skirtingus aplankus 577 00:28:07,610 --> 00:28:08,860 nenaudojant pelę. 578 00:28:08,860 --> 00:28:12,470 >> LS matėme, kuris reiškia sąrašą Į einamojo katalogo failus. 579 00:28:12,470 --> 00:28:14,650 Padaryti Dir, galite tikriausiai pradėti daryti išvadą, 580 00:28:14,650 --> 00:28:18,150 kas tai reiškia now-- padaryti katalogas, Jei norite sukurti aplanką. 581 00:28:18,150 --> 00:28:21,270 RM už pašalinti RM Rež už pašalinti directory-- ir tai, 582 00:28:21,270 --> 00:28:24,160 vėl yra komandų eilutės ekvivalentai, ką 583 00:28:24,160 --> 00:28:26,945 gali daryti CS50 IDE su pele. 584 00:28:26,945 --> 00:28:28,820 Bet jūs netrukus rasite kad kartais tai tiesiog 585 00:28:28,820 --> 00:28:30,610 greičiau reikia daug padaryti dalykus su klaviatūra, 586 00:28:30,610 --> 00:28:33,690 ir galiausiai daug daugiau galingas. 587 00:28:33,690 --> 00:28:36,440 >> Bet tai sunku ginčytis, kad ką mes jau darome iki šiol 588 00:28:36,440 --> 00:28:39,990 yra viskas, galingas, kai visi mes jau sakoma, Hello world. 589 00:28:39,990 --> 00:28:43,740 Ir, tiesą sakant, aš kieta žodžiai Sveiki pasaulį į mano programą. 590 00:28:43,740 --> 00:28:45,530 Nėra dinamiškumas dar. 591 00:28:45,530 --> 00:28:49,320 Įbrėžimams buvo dydžio, kad įdomiau praėjusią savaitę. 592 00:28:49,320 --> 00:28:51,220 >> Ir taip galime gauti ten. 593 00:28:51,220 --> 00:28:55,310 Paimkime žingsnį link, kad būdas kai kurie iš šių funkcijų. 594 00:28:55,310 --> 00:28:59,470 Taigi ne tik C ateiti su printf, ir kekių kitų funkcijų 595 00:28:59,470 --> 00:29:01,850 kai kurie iš jų matysime laikui bėgant, ji nėra 596 00:29:01,850 --> 00:29:05,760 kad visa tai taip paprasta tiesiai iš iš gauti vartotojo įvesties vartų. 597 00:29:05,760 --> 00:29:08,140 >> Iš tiesų, vienas iš trūkumų kalbų kaip C, 598 00:29:08,140 --> 00:29:10,140 ir net "Java" ir dar kiti, yra tai, kad jis nėra 599 00:29:10,140 --> 00:29:15,860 kad būtų lengva tiesiog gauti dalykų, pavyzdžiui, sveikieji skaičiai iš vartotojų, arba stygos, tariant, 600 00:29:15,860 --> 00:29:19,970 ir frazės, jau nekalbant apie tokius dalykus kaip slankiojo kablelio reikšmes ar realieji skaičiai 601 00:29:19,970 --> 00:29:23,240 su dešimtųjų kiekis, ir tikrai ilgi numeriai, kaip mes greitai pamatyti. 602 00:29:23,240 --> 00:29:27,000 Taigi tai funkcijų sąrašas čia, tai yra kaip ir kiti įbrėžimams įspūdį 603 00:29:27,000 --> 00:29:31,090 kad mes turime iš anksto įdiegta į CS50 IDE, kad mes naudosime keletą savaičių 604 00:29:31,090 --> 00:29:34,010 kaip mokymo ratų rūšių ir galiausiai juos išjungti, ir surasti 605 00:29:34,010 --> 00:29:37,210 po kapotu, ko gero, ne kaip šie dalykai būtų įgyvendintos. 606 00:29:37,210 --> 00:29:40,460 >> Tačiau tai padaryti, tegul realiai parašyti programą. 607 00:29:40,460 --> 00:29:41,770 Leiskite man eiti į priekį dabar. 608 00:29:41,770 --> 00:29:44,750 Ir aš ruošiuosi kurti naujas failą spustelėdami šį mažą pliusą, 609 00:29:44,750 --> 00:29:45,970 ir paspauskite New file. 610 00:29:45,970 --> 00:29:49,250 >> Aš ruošiuosi išsaugoti tai kitas vienas kaip, tarkim, string.c, 611 00:29:49,250 --> 00:29:50,750 nes aš noriu žaisti su stygos. 612 00:29:50,750 --> 00:29:53,990 Ir styginių C yra tik simbolių seka. 613 00:29:53,990 --> 00:29:56,090 Taigi, dabar galime eiti į priekį ir atlikite šiuos veiksmus. 614 00:29:56,090 --> 00:30:01,204 >> Įtraukti standartas IO.h-- ir paaiškėja, standartinis IO, 615 00:30:01,204 --> 00:30:03,360 IO reiškia tiesiog įvesties ir išvesties. 616 00:30:03,360 --> 00:30:05,920 Todėl Pasirodo, kad Ši linija čia yra ką 617 00:30:05,920 --> 00:30:08,140 yra kaimyninių mums naudoti printf. 618 00:30:08,140 --> 00:30:10,410 Printf, žinoma, gamina išvestį. 619 00:30:10,410 --> 00:30:15,000 Taip kad būtų galima panaudoti printf, ji virsta iš jūs turite turėti šią eilutę kodo 620 00:30:15,000 --> 00:30:16,040 ne jūsų failo viršuje. 621 00:30:16,040 --> 00:30:18,456 >> Ir mes grįžti į tai, kas kad iš tikrųjų reiškia prieš ilgas. 622 00:30:18,456 --> 00:30:20,400 Ji Pasirodo, kad bet C programą, rašau, 623 00:30:20,400 --> 00:30:23,640 Aš turiu jį paleisti su kodas, kuris atrodo taip. 624 00:30:23,640 --> 00:30:26,860 Ir jūs pastebėsite CS50 IDE ir kita integruota kūrimo 625 00:30:26,860 --> 00:30:30,050 aplinka patinka, ketiname bandyti kaip geriausias 626 00:30:30,050 --> 00:30:31,780 jie gali baigti savo mintis. 627 00:30:31,780 --> 00:30:35,930 Tiesą sakant, akimirką prieš, jei aš atšaukti ką aš ką tik padariau, aš paspauskite Enter. 628 00:30:35,930 --> 00:30:39,160 >> tada aš paspauskite atvirą garbanotas petnešomis, paspauskite Enter dar kartą. 629 00:30:39,160 --> 00:30:40,430 Ir tai baigiau savo mintis. 630 00:30:40,430 --> 00:30:45,140 Jis davė man naują liniją, atitraukiama ne mažiau for nice stilistinių priežasčių mes pamatysime. 631 00:30:45,140 --> 00:30:48,559 Ir tada jis automatiškai man davė kad garbanotas petnešomis baigti savo mintis. 632 00:30:48,559 --> 00:30:50,600 Dabar ji ne visada atspėti, ką norite daryti. 633 00:30:50,600 --> 00:30:53,620 Bet didele dalimi, ji sutaupyti keletą klavišų. 634 00:30:53,620 --> 00:30:59,560 Taigi prieš momentas, nubėgome šį program-- Sveikas, pasauli, o tada surinkti jį, 635 00:30:59,560 --> 00:31:00,460 ir tada bėgo. 636 00:31:00,460 --> 00:31:01,867 Tačiau nėra dinamiškumas čia. 637 00:31:01,867 --> 00:31:03,700 Ką daryti, jei mes norėjome daryti kažką kitą? 638 00:31:03,700 --> 00:31:07,630 Na, ką, jei aš norėjau, kad iš tikrųjų gauti eilutę iš vartotojas? 639 00:31:07,630 --> 00:31:11,250 Aš ruošiuosi naudoti įspūdį vadinamas tiksliai that-- gauti eilutę. 640 00:31:11,250 --> 00:31:15,860 >> Pasirodo, C, kad, kai jūs nenorite siekiant prisidėti prie dėlionės gabalas, 641 00:31:15,860 --> 00:31:19,360 ar daugiau tinkamai funkcija, galite tiesiog tiesiog padaryti atvirą skliaustų, 642 00:31:19,360 --> 00:31:20,430 Uždaryti skliausteliuose. 643 00:31:20,430 --> 00:31:25,540 Taigi, tai, kaip nors ten ne baltas langas įvesti į. 644 00:31:25,540 --> 00:31:27,720 Tarkim blokas prieš turėjo mažai baltas langas. 645 00:31:27,720 --> 00:31:29,660 Neturime kad baltas langas dabar. 646 00:31:29,660 --> 00:31:33,310 >> Bet kai aš skambutis Gauti eilutę, aš norite įdėti rezultatą kažkur. 647 00:31:33,310 --> 00:31:37,680 Taigi labai dažna paradigma C yra skambinti funkciją, pavyzdžiui, get eilutę čia 648 00:31:37,680 --> 00:31:41,070 ir tada laikyti savo sugrįžimo vertę. 649 00:31:41,070 --> 00:31:44,450 Tai rezultatas jo pastangos kažką. 650 00:31:44,450 --> 00:31:47,630 >> Ir kas yra statyti programavimo, 651 00:31:47,630 --> 00:31:53,450 ar tai naujo ar dabar C, kad mes galima naudoti iš tikrųjų laikyti kažką? 652 00:31:53,450 --> 00:31:55,990 Vadinamas jis kintamas, tiesa? 653 00:31:55,990 --> 00:32:00,320 Ir nulio, mes tikrai ne rūpintis, kas vyksta per kintamuosius. 654 00:32:00,320 --> 00:32:02,170 >> Tačiau šiuo atveju, mes iš tikrųjų. 655 00:32:02,170 --> 00:32:03,719 Aš ruošiuosi pasakyti eilutę. 656 00:32:03,719 --> 00:32:05,510 Ir tada aš galėčiau skambinti tai ką aš noriu. 657 00:32:05,510 --> 00:32:08,340 Aš ruošiuosi ją vadina vardas, gauna gauti eilutę. 658 00:32:08,340 --> 00:32:10,250 >> Ir dabar, net jei esate šiek tiek nauja tai, 659 00:32:10,250 --> 00:32:11,984 pastebėsite, kad aš trūksta šiek tiek detalių. 660 00:32:11,984 --> 00:32:13,150 Aš pamiršta kabliataškiu. 661 00:32:13,150 --> 00:32:14,400 Man reikia baigti šį minties. 662 00:32:14,400 --> 00:32:17,480 Taigi, aš ruošiuosi perkelti savo žymeklį, ir paspauskite kabliataškį ten. 663 00:32:17,480 --> 00:32:19,130 Ir ką aš ką tik padariau? 664 00:32:19,130 --> 00:32:21,440 Šiame kodo eilutę, numeris 5 šiuo metu, 665 00:32:21,440 --> 00:32:23,799 Aš skambina get eilutę su be įėjimai. 666 00:32:23,799 --> 00:32:26,090 Taigi nėra tiek balta Lauke kaip Išsaugoti blokas turi. 667 00:32:26,090 --> 00:32:28,590 >> Aš tiesiog pasakyti, ei, kompiuteris, gauti man eilutę. 668 00:32:28,590 --> 00:32:31,390 Lygybės ženklo yra tai tikrai ne lygybės ženklas per se. 669 00:32:31,390 --> 00:32:33,790 Tai užduotis operatorius, o tai reiškia,, 670 00:32:33,790 --> 00:32:37,860 ei, kompiuteris, perkelti vertę iš daugiau nei į kairę dešinėje. 671 00:32:37,860 --> 00:32:40,480 Ir kairėje, turiu taip. 672 00:32:40,480 --> 00:32:43,580 >> Ei, kompiuteris, duok man string-- simbolių seka. 673 00:32:43,580 --> 00:32:45,637 Ir skambinti, kad string vardas. 674 00:32:45,637 --> 00:32:47,220 Ir aš nemanau, net jį vadinti vardu. 675 00:32:47,220 --> 00:32:49,970 >> Galėčiau jį pavadinti, tradiciškai, kažkas panašaus į S 676 00:32:49,970 --> 00:32:52,900 panašiai kaip mes naudojome i į skambinti kintamasis i. 677 00:32:52,900 --> 00:32:54,829 Bet dabar man reikia kažką daryti su juo. 678 00:32:54,829 --> 00:32:57,370 Būtų gana kvaila išbandyti šį kodą sudarymą, ir veikia 679 00:32:57,370 --> 00:32:59,410 ši programa, nors Gaunu eilutę, 680 00:32:59,410 --> 00:33:01,580 nes tai dar tik ketinate pasakyti labas pasaulį. 681 00:33:01,580 --> 00:33:06,140 >> Bet kas, jei aš noriu tai pakeisti. 682 00:33:06,140 --> 00:33:07,940 Kodėl ne aš tai padaryti? 683 00:33:07,940 --> 00:33:11,632 Proc S, kablelis Š. 684 00:33:11,632 --> 00:33:13,090 Ir tai yra šiek tiek paslaptingas dar. 685 00:33:13,090 --> 00:33:15,560 >> Taigi leiskite man padaryti, kad mano kintamieji labiau aišku. 686 00:33:15,560 --> 00:33:17,510 Leiskite pavadinti šį Kintamojo pavadinimas. 687 00:33:17,510 --> 00:33:20,230 Ir tegul pamatyti, jei mes negalime erzinti išskyrus tai, kas vyksta čia. 688 00:33:20,230 --> 00:33:22,770 >> Taigi on-line penkių, gaunu eilutę. 689 00:33:22,770 --> 00:33:25,620 Ir aš saugoti, kad eilutę, kokia vartotojas įvedėte 690 00:33:25,620 --> 00:33:28,430 jo ar jos klaviatūrą, į kintamąjį vadinamą pavadinimą. 691 00:33:28,430 --> 00:33:30,590 Ir paaiškėja, kad printf ne tik 692 00:33:30,590 --> 00:33:34,220 išgerkite vieną argumentą dvigubai Citatos, vienas įėjimas į kabutes. 693 00:33:34,220 --> 00:33:39,100 >> Ji gali imtis dviem arba trimis, ar daugiau, pavyzdžiui kad antrasis, arba trečioji arba ketvirtoji, 694 00:33:39,100 --> 00:33:42,320 yra visi kintamieji vardai arba specialiai vertybes, 695 00:33:42,320 --> 00:33:48,610 kad norite prijungti prie, dinamiškai, kad eilutė į kabutes. 696 00:33:48,610 --> 00:33:52,110 Kitaip tariant, kas Būtų negerai su tai? 697 00:33:52,110 --> 00:33:57,920 Jei aš ką tik pasakė labas vardas, Backslash N, išgelbėjo mano byla, vedama savo kodą, 698 00:33:57,920 --> 00:34:01,660 ir vyko tai, kas nutiktų? 699 00:34:01,660 --> 00:34:05,139 >> Tai tiesiog ketinate pasakyti, labas vardas, pažodžiui N A M E 700 00:34:05,139 --> 00:34:07,900 kuris yra tipo kvaila, nes tai nesiskiria nuo pasaulio. 701 00:34:07,900 --> 00:34:10,400 Taigi nieko kabučių yra kas pažodžiui bus atspausdintas. 702 00:34:10,400 --> 00:34:12,520 Taigi, jei aš noriu turėti rezervuota vieta ten, 703 00:34:12,520 --> 00:34:14,422 Aš iš tikrųjų reikia naudoti kai specialią sintaksę. 704 00:34:14,422 --> 00:34:17,380 Ir it turns out, jei jūs skaityti dokumentacija printf funkcijai, 705 00:34:17,380 --> 00:34:21,320 jis jums pasakys, kad jei naudojate proc s, 706 00:34:21,320 --> 00:34:23,920 Jūs vertę gali pakeisti taip. 707 00:34:23,920 --> 00:34:27,190 >> Po kablelio po to dvigubas citata, tiesiog 708 00:34:27,190 --> 00:34:29,179 rašyti vardo kintamasis, kurį norite 709 00:34:29,179 --> 00:34:33,790 prijungti į tą formatu kodas, arba formatas specifikatorius, 710 00:34:33,790 --> 00:34:35,469 proc s stygos. 711 00:34:35,469 --> 00:34:39,190 Ir dabar, jei aš išgelbėjo mano bylą, Aš einu atgal į mano terminalo. 712 00:34:39,190 --> 00:34:42,870 Ir aš tipo Padaryti eilutę, nes, vėlgi, kad šis pavadinimas 713 00:34:42,870 --> 00:34:45,510 failą, kad aš pasirinkau prieš string.c. 714 00:34:45,510 --> 00:34:48,510 >> Taigi, aš ruošiuosi pasakyti Padaryti String, įveskite. 715 00:34:48,510 --> 00:34:51,550 Oh my gerumas, pažvelgti visus klaidos mes padarėme jau. 716 00:34:51,550 --> 00:34:55,540 Ir tai is-- ką, tai yra tikrai kaip šešis, septynis eilutės programa? 717 00:34:55,540 --> 00:34:57,790 Taigi, tai yra ten, kur jis gali labai greitai gauti didele. 718 00:34:57,790 --> 00:35:00,890 >> Šis terminalas langas turi dabar tik atryjama 719 00:35:00,890 --> 00:35:03,230 labai daug klaidų pranešimus. 720 00:35:03,230 --> 00:35:07,560 Žinoma, aš neturiu daugiau klaidą pranešimai nei aš eilučių kodo. 721 00:35:07,560 --> 00:35:08,680 Taigi, kas vyksta? 722 00:35:08,680 --> 00:35:10,920 >> Na, geriausia strategija daryti bet kada 723 00:35:10,920 --> 00:35:13,710 Ar susidūrėte su didele sąrašas klaidų, kaip kad, 724 00:35:13,710 --> 00:35:16,690 yra slinkti atgal, ieškoti komandą jūs tiesiog bėgo, o mano atveju 725 00:35:16,690 --> 00:35:18,020 yra padaryti eilutę. 726 00:35:18,020 --> 00:35:21,630 Pažvelkite, ką padaryti ir padariau, tai, kad ilgai klingsėti komandą, ne big deal ten. 727 00:35:21,630 --> 00:35:22,950 >> Bet raudona yra blogai. 728 00:35:22,950 --> 00:35:24,750 Žalioji bando būti švelnus ir naudinga. 729 00:35:24,750 --> 00:35:26,140 Bet tai vis tiek blogai, ir šiuo atveju. 730 00:35:26,140 --> 00:35:27,510 Bet kur tai blogai? 731 00:35:27,510 --> 00:35:31,450 >> String.c, linija penkių, charakteris penki. 732 00:35:31,450 --> 00:35:32,930 Taigi tai yra tik bendras konvencijos. 733 00:35:32,930 --> 00:35:36,060 Kažkas dvitaškis kažkas tai eilutės numeris ir pobūdis, skaičius. 734 00:35:36,060 --> 00:35:41,080 Klaida, naudojimas nedeklaruota identifikatorius eilutė. 735 00:35:41,080 --> 00:35:42,900 Ar Jūs turėjote galvoje standartas? 736 00:35:42,900 --> 00:35:45,530 >> Taigi, deja, klingsėti bando būti naudinga. 737 00:35:45,530 --> 00:35:46,850 Bet tai yra negerai, ir šiuo atveju. 738 00:35:46,850 --> 00:35:49,350 Ne, klingsėti, nenorėjau standartinį IO. 739 00:35:49,350 --> 00:35:51,070 Aš norėjau, kad on-line vieno, taip. 740 00:35:51,070 --> 00:35:53,420 >> Bet linija penkių tai vienas čia. 741 00:35:53,420 --> 00:35:57,040 Ir klingsėti nėra suprasti S-t-R-i-N-G. 742 00:35:57,040 --> 00:36:01,490 Tai nedeklaruota identifikatorius A Žodis ji tiesiog niekada matęs. 743 00:36:01,490 --> 00:36:05,730 Ir tai todėl, kad C kalba mes rašote kodą dabar, 744 00:36:05,730 --> 00:36:08,070 neturi kintamieji vadinami eilutes. 745 00:36:08,070 --> 00:36:11,380 >> Tai nereiškia, pagal nutylėjimą, paramos kažkas vadinamas eilutę. 746 00:36:11,380 --> 00:36:16,750 Tai yra CS50 gabalas žargonu, bet labai tradicinis. 747 00:36:16,750 --> 00:36:18,600 Bet aš galiu išspręsti šią problemą taip. 748 00:36:18,600 --> 00:36:22,090 >> Jei aš pridėti vieną eilutę kodo į šios programos viršuje, 749 00:36:22,090 --> 00:36:27,890 įtraukti CS50.h, kuris yra kito failo kažkur viduje CS50 IDE, kažkur 750 00:36:27,890 --> 00:36:30,820 kietajame diske, taip sakant, iš Ubuntu operacinės sistemos 751 00:36:30,820 --> 00:36:33,590 kad Bėgu, kad yra failas tai 752 00:36:33,590 --> 00:36:38,740 einu išmokyti operacinės sistema, kas yra eilutė, tiesiog 753 00:36:38,740 --> 00:36:41,930 kaip standartinis io.h yra failas operacinė sistema ŠTAI 754 00:36:41,930 --> 00:36:44,430 ketina mokyti ką printf yra. 755 00:36:44,430 --> 00:36:46,810 >> Iš tiesų, mes Dotarłeś labai panaši žinutė 756 00:36:46,810 --> 00:36:50,600 jei IO prisipažino standartą IO.h ir bandė naudoti printf. 757 00:36:50,600 --> 00:36:53,632 Taigi, aš ruošiuosi eiti į priekį ir tik Imkis L išvalyti savo ekraną. 758 00:36:53,632 --> 00:36:56,340 Arba galite įvesti aiškus ir jis bus tiesiog išvalyti terminalo langą. 759 00:36:56,340 --> 00:36:58,020 Tačiau jūs vis dar galite slinkti atgal laiku. 760 00:36:58,020 --> 00:37:01,100 >> Ir aš ruošiuosi pakartotas Padaryti eilutę. 761 00:37:01,100 --> 00:37:03,660 Kirsti mano pirštai šį kartą, "Enter". 762 00:37:03,660 --> 00:37:05,380 Oh my God, jis dirbo. 763 00:37:05,380 --> 00:37:09,280 tai rodo, man ilgą paslaptingas komandą tai ką daryti sugeneruotas per žvangėjimas, 764 00:37:09,280 --> 00:37:10,460 bet nėra klaidų pranešimų. 765 00:37:10,460 --> 00:37:12,460 Taigi suprantame, nors galite gauti visiškai 766 00:37:12,460 --> 00:37:14,480 užvaldo su skaičius klaidų pranešimų, 767 00:37:14,480 --> 00:37:17,540 jis tiesiog gali būti tai erzina pakopinių efektas, kur klingsėti nesupranta 768 00:37:17,540 --> 00:37:19,620 vienas dalykas, o tai reiškia, kad tada nesupranta kitą žodį, 769 00:37:19,620 --> 00:37:20,560 arba kitą eilutę. 770 00:37:20,560 --> 00:37:22,850 Ir taip jis tiesiog droseliai ant jūsų kodu. 771 00:37:22,850 --> 00:37:24,440 Tačiau nustatyti gali būti paprastas. 772 00:37:24,440 --> 00:37:27,822 Ir taip visada sutelkti dėmesį į Pats pirmasis linijos produkcija. 773 00:37:27,822 --> 00:37:29,530 Ir jei jūs neturite suprantu, tiesiog ieškoti 774 00:37:29,530 --> 00:37:32,480 raktažodžius, kurie gali būti užuominos, o eilutės numeris, 775 00:37:32,480 --> 00:37:34,650 ir simbolis, kur kad klaida gali būti. 776 00:37:34,650 --> 00:37:40,328 >> Dabar leiskite man eiti į priekį ir įveskite taškas velniop, eilutę, įveskite. 777 00:37:40,328 --> 00:37:44,340 Hm, tai ne saying hello nieko. 778 00:37:44,340 --> 00:37:46,210 Kodėl? 779 00:37:46,210 --> 00:37:48,170 Na, žinote, kur jis veikia? 780 00:37:48,170 --> 00:37:53,730 >> Tai tikriausiai įstrigo metu kilpa, jei bus, on-line šešių, 781 00:37:53,730 --> 00:37:56,950 nes Gauk String konstrukcijos, parašyta CS50 darbuotojų, 782 00:37:56,950 --> 00:38:00,350 yra tiesiog reiškė tiesiog sėdėti ten laukia, ir laukia, 783 00:38:00,350 --> 00:38:01,850 ir laukia eilutę. 784 00:38:01,850 --> 00:38:03,792 Visi mes vadiname eilutę yra žmogaus įėjimo. 785 00:38:03,792 --> 00:38:04,500 Taigi jūs žinote, ką? 786 00:38:04,500 --> 00:38:05,166 Leiskite man eiti į priekį. 787 00:38:05,166 --> 00:38:08,704 Ir tik dėl užgaidos, leiskite man įrašykite savo vardą, Dovydą, įveskite. 788 00:38:08,704 --> 00:38:10,120 Dabar turiu daugiau dinamišką programą. 789 00:38:10,120 --> 00:38:11,240 Jis sakė, labas Davidas. 790 00:38:11,240 --> 00:38:16,280 >> Jeigu aš eiti į priekį ir vėl paleisti tai, leiskite man pabandyti pasakyti Zamila vardą, įveskite. 791 00:38:16,280 --> 00:38:17,940 Ir dabar mes turime dinamišką programą. 792 00:38:17,940 --> 00:38:19,380 Aš ne sunku koduojami pasaulį. 793 00:38:19,380 --> 00:38:21,760 Aš ne sunku koduojami pavadinimas arba Deividai, ar Zamila. 794 00:38:21,760 --> 00:38:25,350 >> Dabar tai daug labiau patinka programų mes žinome, kur, jei reikia, įvesties, 795 00:38:25,350 --> 00:38:27,870 ji gamina šiek tiek kitokią produkciją. 796 00:38:27,870 --> 00:38:31,020 Dabar, tai nėra geriausias vartotojo patirtį, arba UX. 797 00:38:31,020 --> 00:38:33,000 Aš paleisti programą. 798 00:38:33,000 --> 00:38:35,830 >> Aš nežinau, ką aš turėtų daryti, jei aš iš tikrųjų pažvelgti 799 00:38:35,830 --> 00:38:37,290 ar prisiminti kodą. 800 00:38:37,290 --> 00:38:39,640 Taigi padarykime vartotojui patirti šiek tiek geriau 801 00:38:39,640 --> 00:38:41,240 su paprasčiausias dalykų. 802 00:38:41,240 --> 00:38:44,782 Leiskite man eiti atgal į tai programa, ir tiesiog pasakyti printf. 803 00:38:44,782 --> 00:38:48,870 >> Ir leiskite man eiti į priekį ir pasakyti vardą, dvitaškis, ir erdvė, ir tada pusiau-gaubtinės žarnos. 804 00:38:48,870 --> 00:38:51,170 Ir tik prasideda ne tarpelis N. 805 00:38:51,170 --> 00:38:52,980 Ir tai sąmoningas, nes aš nenoriu 806 00:38:52,980 --> 00:38:54,590 operatyvus perkelti į kitą eilutę. 807 00:38:54,590 --> 00:38:58,800 >> Noriu, vietoj to, tai padaryti, eilutę perkompiliuoti savo kodą į naują mašiną 808 00:38:58,800 --> 00:39:00,980 kodas taškas velniop eilutę. 809 00:39:00,980 --> 00:39:02,460 Ak, tai daug gražiau. 810 00:39:02,460 --> 00:39:05,780 Dabar aš tikrai žinau, ką kompiuteris nori man padaryti, suteikti jai pavadinimą. 811 00:39:05,780 --> 00:39:10,020 >> Taigi, aš ruošiuosi eiti į priekį ir įveskite į Rob, įveskite ir labas, Rob. 812 00:39:10,020 --> 00:39:13,640 Taip, reikia suprasti,, tai yra vis dar, pabaigoje dienos, tik devynios eilutės programa. 813 00:39:13,640 --> 00:39:15,090 Bet mes atlikome šiuos kūdikių veiksmus. 814 00:39:15,090 --> 00:39:18,380 >> Mes rašė vieną liniją, su kuria mes buvo pažįstamas, printf, Hello world. 815 00:39:18,380 --> 00:39:19,980 Tada mes undid truputį, kad. 816 00:39:19,980 --> 00:39:21,560 Ir mes iš tikrųjų naudoti get eilutę. 817 00:39:21,560 --> 00:39:23,362 Ir mes blaškoma šią vertę į kintamąjį. 818 00:39:23,362 --> 00:39:26,070 Ir tada mes nuėjome į priekį ir pagerino Be to, su trečiąja linija. 819 00:39:26,070 --> 00:39:29,220 Ir tai iteracinis procesas Rašymas Software tikrai raktas. 820 00:39:29,220 --> 00:39:33,420 Be CS50 ir gyvenime apskritai, Jūs paprastai neturėtų atsisėsti, 821 00:39:33,420 --> 00:39:36,800 turėti programą galvoje, ir bandyti rašyti visa velniškai dalykas visus iš karto. 822 00:39:36,800 --> 00:39:40,810 >> Jis bus neišvengiamai sukelti būdu daugiau klaidų nei mes patys čia matė. 823 00:39:40,810 --> 00:39:44,070 Net aš, iki šios dienos, nuolat atlikti kitus kvailus klaidų, 824 00:39:44,070 --> 00:39:47,480 yra tikrai sunkiau klaidų kad yra sunkiau išsiaiškinti. 825 00:39:47,480 --> 00:39:52,095 Bet jūs padaryti daugiau klaidų daugiau eilučių kodo rašote visi iškart. 826 00:39:52,095 --> 00:39:54,220 Ir todėl šis praktika, rašyti truputį kodas 827 00:39:54,220 --> 00:39:57,930 kad esate patenkintas, kaupia tai, paleiskite jį, išbandyti jį apskritai 828 00:39:57,930 --> 00:40:01,370 tada pereiti on-- taip kaip mes nuolat sluoksniavimasis ir sluoksniavimasis praėjusią savaitę, 829 00:40:01,370 --> 00:40:04,190 statybos nuo kažko labai paprasta kažką sudėtingesnio, 830 00:40:04,190 --> 00:40:05,200 daryti tą patį čia. 831 00:40:05,200 --> 00:40:08,500 Nesisėskite, ir bandyti rašyti visą problemą. 832 00:40:08,500 --> 00:40:10,780 Tiesą sakant imtis šių kūdikių veiksmus. 833 00:40:10,780 --> 00:40:15,100 >> Dabar, stygos ne visi kad naudinga pas save. 834 00:40:15,100 --> 00:40:18,210 Mes norime iš tikrųjų, idealiu atveju, kaip į turi kažkas mūsų priemonių rinkinį. 835 00:40:18,210 --> 00:40:20,990 Taigi leiskite tikrųjų būtent tai. 836 00:40:20,990 --> 00:40:24,900 >> Leiskite man eiti į priekį ir dabar pakelti šiek tiek kitokią programą. 837 00:40:24,900 --> 00:40:28,320 Ir mes tai vadiname int.c, už sveikojo skaičiaus. 838 00:40:28,320 --> 00:40:30,870 Aš ruošiuosi panašiai įtraukti CS550.h. 839 00:40:30,870 --> 00:40:33,060 Aš ruošiuosi būti standartinis IO. 840 00:40:33,060 --> 00:40:36,630 Ir tai bus gana dažnai šiose pirmas kelias dienas po klasės. 841 00:40:36,630 --> 00:40:39,050 >> Ir aš ruošiuosi pasiruošę aš su pagrindinės funkcijos. 842 00:40:39,050 --> 00:40:43,370 O dabar vietoj gauti eilutę, eikime į priekį ir gauti int. 843 00:40:43,370 --> 00:40:49,285 Leiskite ją vadina aš ir vadina tai gauti INT, artimi skliaustų, kabliataškis. 844 00:40:49,285 --> 00:40:51,410 O dabar padarykime kažkas su juo, printf. 845 00:40:51,410 --> 00:40:56,190 >> Tarkime, kad kažką panašaus Sveiki, Backslash N, kablelis aš. 846 00:40:56,190 --> 00:41:00,010 Taigi, aš gana daug mėgdžiodami ką aš padariau vos prieš akimirką. 847 00:41:00,010 --> 00:41:01,660 Turiu rezervuotą vietą čia. 848 00:41:01,660 --> 00:41:05,150 Aš kableliu Aš čia, nes noriu prijungti i į tą rezervuotą vietą. 849 00:41:05,150 --> 00:41:07,250 >> Taigi eikime į priekį ir pabandyti Sudarant šią programą. 850 00:41:07,250 --> 00:41:10,060 Šis failas yra vadinamas int.c. 851 00:41:10,060 --> 00:41:12,920 Taigi, aš ruošiuosi pasakyti, kad int, įveskite. 852 00:41:12,920 --> 00:41:16,420 Oh my God, bet nieko baisaus, tiesa? 853 00:41:16,420 --> 00:41:17,230 Yra klaida. 854 00:41:17,230 --> 00:41:19,810 >> Yra sintaksės klaida čia toks, kad programa negali 855 00:41:19,810 --> 00:41:25,460 būti rengiami viduje int.c, linijos septyni, charakteris 27, klaidų formatas 856 00:41:25,460 --> 00:41:28,400 nurodoma tipo char žvaigždė, nepaisant, kad yra. 857 00:41:28,400 --> 00:41:30,020 Tačiau šis argumentas tipas int. 858 00:41:30,020 --> 00:41:33,110 >> Taigi čia taip pat mes neketiname to-- nors šiandien yra daug medžiagos, 859 00:41:33,110 --> 00:41:35,710 mes ketiname sukrėsti tave su absoliučiai kiekvienas C funkcija, 860 00:41:35,710 --> 00:41:38,070 ir programavimo apskritai vos šių pirmąsias kelias savaites. 861 00:41:38,070 --> 00:41:40,400 Taigi ten dažnai bus žargonu su kuria nesate susipažinę. 862 00:41:40,400 --> 00:41:43,350 Ir, iš tiesų, simbolis žvaigždė yra kažkas mes ketiname grįžti į 863 00:41:43,350 --> 00:41:44,830 per savaitę arba du laiko. 864 00:41:44,830 --> 00:41:47,530 >> Bet dabar, pažiūrėkime, jei mes galime apdoroti žodžius, kurie yra susipažinę. 865 00:41:47,530 --> 00:41:50,750 Skirtingus formatus taip išgirdome formatą specifikatorius, formatas kodas anksčiau. 866 00:41:50,750 --> 00:41:51,840 Štai pažįstamas. 867 00:41:51,840 --> 00:41:53,840 Type-- bet argumentas tipo int. 868 00:41:53,840 --> 00:41:55,980 Palaukit, i int. 869 00:41:55,980 --> 00:41:59,230 >> Gal proc -ai tikrųjų turi apibrėžtą prasmę. 870 00:41:59,230 --> 00:42:00,230 Ir, iš tiesų, ji daro. 871 00:42:00,230 --> 00:42:03,101 Sveikas, jei norite printf jį pakeisti, 872 00:42:03,101 --> 00:42:05,350 jūs iš tikrųjų turite naudoti skiriasi formatas specifikatorius. 873 00:42:05,350 --> 00:42:06,890 Ir jūs nežinote tai nebent kas nors Jums sakė, 874 00:42:06,890 --> 00:42:07,973 ar jums buvo prieš tai padarė. 875 00:42:07,973 --> 00:42:10,490 Bet proc i ką gali būti visuotinai naudojamas 876 00:42:10,490 --> 00:42:12,240 į printf įkišant į sveikojo skaičiaus. 877 00:42:12,240 --> 00:42:14,920 Taip pat galite naudoti procentų D dešimtainis sveikasis skaičius. 878 00:42:14,920 --> 00:42:16,490 Bet aš tai gražus ir paprastas čia. 879 00:42:16,490 --> 00:42:17,590 Taigi mes eiti su tuo. 880 00:42:17,590 --> 00:42:21,160 >> Dabar leiskite man eiti į priekį ir pakartotinis makiažo INT, Enter. 881 00:42:21,160 --> 00:42:23,328 Tai gerai, jokių klaidų. 882 00:42:23,328 --> 00:42:27,260 Dot velniop int-- Ok, blogas vartotojo patirtį, nes aš nepasakiau sau 883 00:42:27,260 --> 00:42:27,760 ką daryti. 884 00:42:27,760 --> 00:42:28,426 Bet tai gerai. 885 00:42:28,426 --> 00:42:29,480 Aš gaudyti ant greitai. 886 00:42:29,480 --> 00:42:36,260 >> O dabar leiskite man eiti į priekį ir įveskite Dovydą, OK, Zamila, Rob. 887 00:42:36,260 --> 00:42:37,820 Gerai, kad tai yra geras dalykas. 888 00:42:37,820 --> 00:42:41,710 Šį kartą, aš naudoju funkciją, Dėlionė gabalas, vadinamas Gauti int. 889 00:42:41,710 --> 00:42:44,230 Ir paaiškėja out-- ir mes pamatyti šį Vėliau term-- 890 00:42:44,230 --> 00:42:47,730 CS50 darbuotojai įdiegė gauti eilutę tokiu būdu, 891 00:42:47,730 --> 00:42:50,350 kad tai bus tik fiziškai gauti eilutę jums. 892 00:42:50,350 --> 00:42:54,340 >> Ji įgyvendino get int į tokiu būdu, kad tik jis bus 893 00:42:54,340 --> 00:42:55,590 gauti sveikąjį skaičių už jus. 894 00:42:55,590 --> 00:42:57,830 Ir jei jūs, žmogaus, nebendradarbiauja, tai 895 00:42:57,830 --> 00:43:00,590 tiesiog tik ketina pasakyti pakartoti, pakartoti, pakartoti, 896 00:43:00,590 --> 00:43:05,200 tiesiog sėdi ten apsisukimo, kol Jūs įpareigoti su kai magišką skaičių, 897 00:43:05,200 --> 00:43:07,670 kaip 50, and hello 50. 898 00:43:07,670 --> 00:43:11,440 >> Arba, jei mes paleisti tai vėl ir tipo 42, labas 42. 899 00:43:11,440 --> 00:43:15,750 Ir taip GET INT funkcija viduje tą įspūdį 900 00:43:15,750 --> 00:43:19,050 yra pakankamai logika, pakankamai mintis, išsiaiškinti, kas yra žodis? 901 00:43:19,050 --> 00:43:20,330 Ir kas yra skaičius? 902 00:43:20,330 --> 00:43:23,165 Tik priimdamas galiausiai numeriai. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> Todėl Pasirodo, kad tai yra ne visi, kad išraiškingas. 905 00:43:30,230 --> 00:43:30,910 iki šiol. 906 00:43:30,910 --> 00:43:33,690 Taigi, Yay, paskutinį kartą mes ėjo gana greitai 907 00:43:33,690 --> 00:43:38,320 į įgyvendinimo žaidimai, ir animacija, ir meniniai darbai nulio. 908 00:43:38,320 --> 00:43:42,260 Ir čia mes yra turinys su hello world, and hello 50. 909 00:43:42,260 --> 00:43:43,696 >> Tai dar ne viskas, kad įkvepiantis. 910 00:43:43,696 --> 00:43:46,070 Ir, iš tiesų, tai pirmas kelias pavyzdžiai užtruks šiek tiek laiko 911 00:43:46,070 --> 00:43:47,510 kelią iki visų įspūdžių. 912 00:43:47,510 --> 00:43:49,854 Bet mes turime daug daugiau kontroliuoti dabar, iš tikrųjų. 913 00:43:49,854 --> 00:43:51,770 Ir mes ketiname labai greitai pradėti sluoksniavimasis 914 00:43:51,770 --> 00:43:53,870 ant šių pagrindinių primityvų. 915 00:43:53,870 --> 00:43:56,370 >> Bet pirmiausia, tegul supranta ką apribojimai. 916 00:43:56,370 --> 00:43:58,620 Iš tiesų, vienas iš dalykų, Įbrėžimams nėra lengvai 917 00:43:58,620 --> 00:44:00,990 darykime tai tikrai atrodo po gaubtu, 918 00:44:00,990 --> 00:44:03,740 ir suprasti, kas yra kompiuteris, ką ji gali padaryti, 919 00:44:03,740 --> 00:44:05,250 ir ką jos apribojimai yra. 920 00:44:05,250 --> 00:44:08,580 Ir, tiesą sakant, kad trūksta supratimas, potencialiai ilgalaikis 921 00:44:08,580 --> 00:44:12,520 gali sukelti mūsų mistakes-- raštu klaidas, rašymo nesaugus programinę įrangą, kuri 922 00:44:12,520 --> 00:44:13,880 laužiami tam tikru būdu. 923 00:44:13,880 --> 00:44:17,130 >> Taigi leiskite šiek tiek žingsnių suprasti tai šiek tiek geriau 924 00:44:17,130 --> 00:44:19,710 būdas, tarkim, tokį pavyzdį. 925 00:44:19,710 --> 00:44:23,550 Aš ruošiuosi eiti į priekį ir įgyvendinti nekilnojamojo greitai programa, vadinama padidinimai. 926 00:44:23,550 --> 00:44:25,134 Kaip, Pridėkime keletą numerius kartu. 927 00:44:25,134 --> 00:44:27,800 Ir aš ruošiuosi kodą keletą kampus čia, ir tiesiog nukopijuokite ir įklijuokite 928 00:44:27,800 --> 00:44:30,270 kur buvau anksčiau, tiesiog todėl mes galime pradėti žaisti greičiau. 929 00:44:30,270 --> 00:44:33,090 Taigi dabar aš turiu pagrindinius pradžią apie programą "angis. 930 00:44:33,090 --> 00:44:34,670 >> Ir eikime į priekį ir tai padaryti. 931 00:44:34,670 --> 00:44:38,680 Aš ruošiuosi eiti į priekį ir tarkim, intx gauna gauti int. 932 00:44:38,680 --> 00:44:39,430 Ir žinote ką? 933 00:44:39,430 --> 00:44:40,990 Kurkime geresnį vartotojų patirtį. 934 00:44:40,990 --> 00:44:45,740 >> Taigi galime tik pasakyti, x yra, ir efektyviai raginimas vartotojui suteikia mums x. 935 00:44:45,740 --> 00:44:50,600 Ir tada leiskite man eiti į priekį ir pasakyti, printf kaip apie y, šį kartą laukiasi 936 00:44:50,600 --> 00:44:53,140 Abu šie dydžiai nuo naudotojo. 937 00:44:53,140 --> 00:44:59,759 Ir tada tegul tiesiog eiti į priekį ir tarkim, printf, X ir y suma yra. 938 00:44:59,759 --> 00:45:01,300 Ir dabar aš nenoriu daryti proc s. 939 00:45:01,300 --> 00:45:09,080 Noriu daryti proc i, Backslash N, o tada prijunkite suma vertę. 940 00:45:09,080 --> 00:45:10,620 >> Taigi, kaip aš galiu eiti apie tai daryti? 941 00:45:10,620 --> 00:45:11,270 Zinai ka? 942 00:45:11,270 --> 00:45:12,840 Aš žinau, kaip naudoti kintamuosius. 943 00:45:12,840 --> 00:45:15,140 Leiskite man tiesiog paskelbti naują, int z. 944 00:45:15,140 --> 00:45:16,770 >> Ir aš ruošiuosi imtis atspėti čia. 945 00:45:16,770 --> 00:45:21,470 Jei yra lygios ženklai tai kalba, o gal galiu tiesiog x plus y 946 00:45:21,470 --> 00:45:23,660 tol, kol aš galų mano maniau su kabliataškiu? 947 00:45:23,660 --> 00:45:28,170 Dabar galiu eiti atgal čia, prijunkite z, baigti šį minties su kabliataškiu. 948 00:45:28,170 --> 00:45:33,160 Ir pažiūrėkime dabar, jei jie sekos lines-- X yra gauti int. 949 00:45:33,160 --> 00:45:34,770 Y yra gauti int. 950 00:45:34,770 --> 00:45:37,980 >> Pridėti x ir y, saugoti vertės z-- Taigi, vėl prisiminti lygybės ženklą 951 00:45:37,980 --> 00:45:38,560 nėra lygus. 952 00:45:38,560 --> 00:45:41,100 Tai užduotis iš dešinės į kairę. 953 00:45:41,100 --> 00:45:45,180 Ir tegul atsispausdinti, kad suma iš X ir Y yra ne pažodžiui Z, 954 00:45:45,180 --> 00:45:46,830 bet kas viduje Ž. 955 00:45:46,830 --> 00:45:50,090 Taigi padarykime padidinimai - gražus, jokių klaidų šiuo metu. 956 00:45:50,090 --> 00:45:53,030 Dot velniop padidinimai, įveskite, x bus 1 d. 957 00:45:53,030 --> 00:45:55,380 >> Metai bus 2. 958 00:45:55,380 --> 00:45:58,964 Ir x ir y suma yra 3. 959 00:45:58,964 --> 00:46:00,130 Taigi, kad viskas gerai ir gerai. 960 00:46:00,130 --> 00:46:03,260 >> Taigi jums būtų įsivaizduoti, kad matematikos turėtų dirbti programą, kaip šis. 961 00:46:03,260 --> 00:46:04,040 Bet žinote ką? 962 00:46:04,040 --> 00:46:06,904 Ar šis kintamasis, linija 12, netgi būtina? 963 00:46:06,904 --> 00:46:09,820 Jums nereikia gauti į įpročiai tiesiog laikyti dalykų kintamųjų 964 00:46:09,820 --> 00:46:10,980 tik todėl, kad jūs galite. 965 00:46:10,980 --> 00:46:13,550 Ir, iš tiesų, tai paprastai apgalvoto blogas dizainas 966 00:46:13,550 --> 00:46:18,100 jeigu kuriate kintamąjį, vadinamas Z šiuo atveju, saugoti kažką į jį, 967 00:46:18,100 --> 00:46:21,390 ir tada iš karto naudojant jį, bet niekada vėl. 968 00:46:21,390 --> 00:46:24,700 Kodėl ką nors duoti vardą kaip z, jei esate tiesiog 969 00:46:24,700 --> 00:46:26,770 ketinate naudoti, kad dalykas tik vieną kartą, ir taip 970 00:46:26,770 --> 00:46:29,380 proksimalinio, kur jūs sukūrėte ji į pirmąją vietą, 971 00:46:29,380 --> 00:46:31,052 taip arti požiūriu eilučių kodo? 972 00:46:31,052 --> 00:46:31,760 Taigi jūs žinote, ką? 973 00:46:31,760 --> 00:46:34,480 Pasirodo, kad C yra gana lanksti. 974 00:46:34,480 --> 00:46:36,586 Jei aš iš tikrųjų noriu plug-in vertybių čia 975 00:46:36,586 --> 00:46:38,210 Man nereikia deklaruoti naują kintamąjį. 976 00:46:38,210 --> 00:46:41,680 Galėčiau tik plug-in x plius Y, nes C supranta 977 00:46:41,680 --> 00:46:43,390 aritmetika, ir matematiniai operatoriai. 978 00:46:43,390 --> 00:46:47,140 >> Taigi aš galiu tiesiog pasakyti, tai padaryti matematiką, x plius Y, nepriklausomai nuo tos vertės, 979 00:46:47,140 --> 00:46:50,780 prijunkite gautas sveikasis skaičius į tą eilutę. 980 00:46:50,780 --> 00:46:53,730 Taigi, tai gali būti, nors tik viena eilutė trumpesnė, 981 00:46:53,730 --> 00:46:58,480 geriau dizainas, geresnis programa, nes ten mažiau kodas, todėl 982 00:46:58,480 --> 00:46:59,921 mažiau už mane suprasti. 983 00:46:59,921 --> 00:47:01,920 Ir tai taip pat tik siurblys, kiek mes ne 984 00:47:01,920 --> 00:47:04,620 naujų žodžių, naujus simbolius, kaip z, 985 00:47:04,620 --> 00:47:07,510 nors jie nelabai tarnauti daug tikslu. 986 00:47:07,510 --> 00:47:12,890 >> Deja, matematika nėra Visa tai patikimi kartais. 987 00:47:12,890 --> 00:47:15,270 Vykime į priekį ir tai padaryti. 988 00:47:15,270 --> 00:47:18,200 Aš ruošiuosi eiti į priekį dabar ir atlikite šiuos veiksmus. 989 00:47:18,200 --> 00:47:27,650 >> Darom printf, proc I, plius proc i turi būti procentų i Backslash N. 990 00:47:27,650 --> 00:47:32,240 Ir aš ruošiuosi daryti this-- xyx plius m. 991 00:47:32,240 --> 00:47:34,821 Taigi, aš tik ketina perrašyti tai šiek tiek kitaip čia. 992 00:47:34,821 --> 00:47:36,320 Leiskite tai padaryti greitai naudojama logiškai patikrinimą. 993 00:47:36,320 --> 00:47:37,986 Vėlgi, tegul ne gauti prieš save. 994 00:47:37,986 --> 00:47:41,420 Padaryti padidinimas, DOT velniop angis. 995 00:47:41,420 --> 00:47:44,950 x yra 1, y yra 2, 1 plius 2 yra 3. 996 00:47:44,950 --> 00:47:45,870 Taigi, kad gerai. 997 00:47:45,870 --> 00:47:49,060 Bet tegul komplikuoti tai dabar šiek tiek, ir sukurti naują failą. 998 00:47:49,060 --> 00:47:53,350 >> Aš ruošiuosi skambinti šį vieną, pasakyti, ints, Val už sveikieji skaičiai. 999 00:47:53,350 --> 00:47:55,980 Leiskite man pradėti, kur buvau prieš momentas. 1000 00:47:55,980 --> 00:47:57,770 Bet dabar padarykime keletą kitų linijų. 1001 00:47:57,770 --> 00:48:03,430 Leiskite man eiti į priekį ir atlikite šiuos veiksmus, printf, proc i atėmus proc i 1002 00:48:03,430 --> 00:48:08,959 yra procentai i kablelis x kablelis yx atėmus m. 1003 00:48:08,959 --> 00:48:10,750 Taigi darau šiek tiek skiriasi matematikos ten. 1004 00:48:10,750 --> 00:48:11,624 Darom kitą. 1005 00:48:11,624 --> 00:48:16,610 Taigi proc i karto proc i proc i Backslash N. 1006 00:48:16,610 --> 00:48:21,430 Leiskite plug-in X ir Y ir X kartų y. 1007 00:48:21,430 --> 00:48:24,530 Mes naudosime žvaigždutę ant Jūsų kompiuteris kartus. 1008 00:48:24,530 --> 00:48:26,390 >> Jūs negalite naudoti x. x yra kintamojo vardas čia. 1009 00:48:26,390 --> 00:48:28,270 Galite naudoti dauginimo žvaigždė. 1010 00:48:28,270 --> 00:48:29,020 Darom vienas. 1011 00:48:29,020 --> 00:48:34,580 Printf proc aš, padalintas iki proc i, yra procentai i 1012 00:48:34,580 --> 00:48:40,460 Backslash N. XY, padalytą iš y-- todėl jūs naudojate įstrižas brūkšnys į C 1013 00:48:40,460 --> 00:48:41,502 daryti padalinys. 1014 00:48:41,502 --> 00:48:42,460 Ir darykime vienas kitas. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Likęs proc i, padalintas iki proc i, yra procentai aš. 1017 00:48:55,240 --> 00:48:59,550 xy-- ir dabar likusi yra tai, kas liko. 1018 00:48:59,550 --> 00:49:02,980 Kai bandote dalijant vardiklis į skaitiklį, 1019 00:49:02,980 --> 00:49:05,570 kiek yra likę, kad tu negali padalinti iš kitų? 1020 00:49:05,570 --> 00:49:07,910 >> Taigi ten tikrai ne, nebūtinai, simbolis 1021 00:49:07,910 --> 00:49:09,470 mes naudojamas pradinėje mokykloje už tai. 1022 00:49:09,470 --> 00:49:13,830 Bet ten C. Galite pasakyti x modulį y kur 1023 00:49:13,830 --> 00:49:18,000 Tai procento ženklas šioje context-- klaidinančiai, kai esate viduje 1024 00:49:18,000 --> 00:49:20,170 dvigubų kabučių, Viduje printf, proc 1025 00:49:20,170 --> 00:49:21,830 naudojamas kaip formato specyfikator. 1026 00:49:21,830 --> 00:49:25,420 >> Kai naudojate proc ribų kad matematinė išraiška, 1027 00:49:25,420 --> 00:49:29,910 tai tas modulį operatorius modulinės arithmetic-- mūsų tikslais 1028 00:49:29,910 --> 00:49:33,650 čia tiesiog reiškia, kas yra Likusi x padalytą y? 1029 00:49:33,650 --> 00:49:36,130 Taigi x padalytą y yra x velniop m. 1030 00:49:36,130 --> 00:49:38,220 Kokia x likusi padalytą Y? 1031 00:49:38,220 --> 00:49:41,780 Tai x mod y, kaip programuotojas pasakytų. 1032 00:49:41,780 --> 00:49:48,300 >> Taigi, jei aš padariau ne klaidų čia, leiskite man eiti į priekį ir padaryti ints, Val, gražus, 1033 00:49:48,300 --> 00:49:50,010 ir taškas pasvirasis brūkšnys ints. 1034 00:49:50,010 --> 00:49:55,270 Ir eikime į priekį ir padaryti, tarkim, 1, 10. 1035 00:49:55,270 --> 00:49:58,390 Gerai, 1 plius 10 yra 11, patikrinimas. 1036 00:49:58,390 --> 00:50:01,240 1 minus 10 yra neigiamas 9, patikrinkite. 1037 00:50:01,240 --> 00:50:03,420 >> 1 kartų 10 10, patikrinimas. 1038 00:50:03,420 --> 00:50:07,090 1, padalytą iš 10 is-- Gerai, mes praleisti, kad vienas. 1039 00:50:07,090 --> 00:50:09,480 Likusi 1, padalytą iš 10 yra 1. 1040 00:50:09,480 --> 00:50:10,680 Teisingai. 1041 00:50:10,680 --> 00:50:12,630 Bet ten klaida čia. 1042 00:50:12,630 --> 00:50:15,390 >> Taigi vienas aš įdėti savo perduoti, nėra teisinga. 1043 00:50:15,390 --> 00:50:16,670 Aš turiu galvoje, tai artimas 0. 1044 00:50:16,670 --> 00:50:20,670 1, padalytą iš 10, žinote, jei mes pjovimo keletą kampus, tikrai, tai nulis. 1045 00:50:20,670 --> 00:50:28,050 Bet tai tikrai turėtų būti 1/10, 0,1 arba 0,10, 0.1000, ar kt. 1046 00:50:28,050 --> 00:50:30,600 >> Tai tikrai neturėtų būti lygus nuliui. 1047 00:50:30,600 --> 00:50:35,990 Na, it turns out, kad kompiuteris yra daro tiesiog tai, ką mes papasakojo daryti. 1048 00:50:35,990 --> 00:50:39,460 Mes darome matematikos kaip apskaičiuojamas dalijant x iš y. 1049 00:50:39,460 --> 00:50:44,680 Ir abu x ir y, per linijų kodo anksčiau, yra sveikieji skaičiai. 1050 00:50:44,680 --> 00:50:50,440 >> Be to, on-line 15, mes esame sakau printf, ei, printf Plug-in 1051 00:50:50,440 --> 00:50:54,230 sveikasis skaičius, plug-in sveikasis skaičius, plug-in yra integer-- specialiai 1052 00:50:54,230 --> 00:50:57,580 x, ir tada Y, ir tada x padalytą m. X ir Y yra ints. 1053 00:50:57,580 --> 00:50:59,060 Mes gerai ten. 1054 00:50:59,060 --> 00:51:01,250 >> Bet kas yra x, padalytą iš X? 1055 00:51:01,250 --> 00:51:06,790 x, padalytą iš Y turėtų būti, matematiškai, 1/10 arba 0,1, 1056 00:51:06,790 --> 00:51:11,600 kuris yra tikras skaičius, realus skaičius turintys, gal net kablelio. 1057 00:51:11,600 --> 00:51:13,230 Tai nėra sveikasis skaičius. 1058 00:51:13,230 --> 00:51:18,290 >> Bet kas yra arčiausiai sveikasis skaičius 1/10, arba 0,1? 1059 00:51:18,290 --> 00:51:21,114 Taip, tai rūšies yra lygus nuliui. 1060 00:51:21,114 --> 00:51:22,030 0,1 yra tokia daug. 1061 00:51:22,030 --> 00:51:22,890 Ir 1 tai daug. 1062 00:51:22,890 --> 00:51:25,870 Taigi 1/10 yra arčiau 0, nei ji yra viena. 1063 00:51:25,870 --> 00:51:30,800 >> Ir taip kas C darai us-- rūšies, nes mes papasakojo to-- 1064 00:51:30,800 --> 00:51:32,600 yra trumpinamas, kad sveikasis skaičius. 1065 00:51:32,600 --> 00:51:40,540 Tai atsižvelgiant į vertę, kuri vėl yra turėtų būti kažkas panašaus į 0.1000, 1066 00:51:40,540 --> 00:51:41,800 0 ir taip toliau. 1067 00:51:41,800 --> 00:51:45,320 Ir tai nutraukiant viską po kablelio 1068 00:51:45,320 --> 00:51:47,510 taip, kad visa tai Daiktai, nes ji nėra 1069 00:51:47,510 --> 00:51:51,910 tilptų į sveikojo skaičiaus sąvoką, kuri yra tik kaip neigiamas 1, 0, 1 numeris 1070 00:51:51,910 --> 00:51:55,830 aukštyn ir žemyn, jis išmeta viską po kablelio, nes jūs 1071 00:51:55,830 --> 00:51:59,020 netelpa kablelio į pagal apibrėžimą sveikojo skaičiaus. 1072 00:51:59,020 --> 00:52:01,290 >> Todėl čia atsakymas yra lygus nuliui. 1073 00:52:01,290 --> 00:52:02,600 Taigi, kaip mes išspręsti šią problemą? 1074 00:52:02,600 --> 00:52:04,400 Mes turime kitą sprendimą visi kartu. 1075 00:52:04,400 --> 00:52:06,880 Ir mes galime tai padaryti, taip. 1076 00:52:06,880 --> 00:52:12,820 >> Leiskite man eiti į priekį ir kurti naujas failą, tai vienas vadinamas floats.c. 1077 00:52:12,820 --> 00:52:16,500 Ir išsaugokite jį čia į pats katalogas, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 Ir leiskite man eiti į priekį ir kopijuoti kai tos kodą iš anksčiau. 1080 00:52:23,260 --> 00:52:27,690 >> Bet užuot int, tegul tai padaryti. 1081 00:52:27,690 --> 00:52:31,037 Duok man slankiojo kablelio skaičius vadinamas x. kai slankiojo kablelio 1082 00:52:31,037 --> 00:52:33,370 vertė yra tik pažodžiui kažkas su kintamomis kablelio. 1083 00:52:33,370 --> 00:52:34,410 Jis gali judėti į kairę, į dešinę. 1084 00:52:34,410 --> 00:52:35,530 Tai realus skaičius. 1085 00:52:35,530 --> 00:52:38,050 >> Ir leiskite man skambinti ne gauti int, bet ir gauti plūdę, 1086 00:52:38,050 --> 00:52:41,420 kuris taip pat buvo tarp meniu iš variantų C250 bibliotekoje. 1087 00:52:41,420 --> 00:52:43,220 Keiskime Y trintuve. 1088 00:52:43,220 --> 00:52:45,000 Taigi tai tampa gauti plūdę. 1089 00:52:45,000 --> 00:52:47,620 >> Ir dabar, mes nenorime prijungti int. 1090 00:52:47,620 --> 00:52:53,130 Pasirodo, mes turime naudoti procentų F plūdės, proc F plūdės, 1091 00:52:53,130 --> 00:52:54,560 ir dabar išsaugokite jį. 1092 00:52:54,560 --> 00:53:01,220 Ir dabar, kumščius, kad plūdės, Nica, dot pasvirasis brūkšnys plūdės. 1093 00:53:01,220 --> 00:53:04,280 x bus vienas 1. Y Bus 10 dar kartą. 1094 00:53:04,280 --> 00:53:08,240 >> Ir gražus, gerai mano papildymas yra teisinga. 1095 00:53:08,240 --> 00:53:10,240 Aš tikėjausi daugiau, bet aš pamiršau parašyti. 1096 00:53:10,240 --> 00:53:13,250 Taigi eikime ir išspręsti šią loginę klaidą. 1097 00:53:13,250 --> 00:53:16,280 >> Vykime į priekį ir patraukti toliau. 1098 00:53:16,280 --> 00:53:18,080 Mes tiesiog padaryti šiek tiek kopijuoti ir įklijuoti. 1099 00:53:18,080 --> 00:53:20,080 Ir aš ruošiuosi pasakyti minusas. 1100 00:53:20,080 --> 00:53:21,890 >> Ir aš ruošiuosi pasakyti kartus. 1101 00:53:21,890 --> 00:53:24,060 Ir aš ruošiuosi pasakyti padalintas. 1102 00:53:24,060 --> 00:53:28,240 Ir aš neketinu daryti modulo, kuris yra ne kaip Germane čia, 1103 00:53:28,240 --> 00:53:33,690 padalytą iš F ir laikai plus-- Gerai, tegul tai padaryti dar kartą. 1104 00:53:33,690 --> 00:53:44,210 >> Padaryti plūdes, dot pasvirasis brūkšnys plūdes, ir 1, 10, and-- gražus, ne, Gerai. 1105 00:53:44,210 --> 00:53:45,250 Taigi, aš idiotas. 1106 00:53:45,250 --> 00:53:47,000 Taigi tai yra labai dažnas kompiuterių mokslo 1107 00:53:47,000 --> 00:53:49,780 padaryti kvailų klaidų kaip šis. 1108 00:53:49,780 --> 00:53:53,100 >> Dėl švietimo tikslais, ką aš tikrai norėjau padaryti 1109 00:53:53,100 --> 00:53:57,410 buvo pakeisti mokslą čia į pliuso, minusas, kad kartais, 1110 00:53:57,410 --> 00:54:01,140 ir padalinti, kaip jūs, tikiuosi, pastebėjau per šį pratimą. 1111 00:54:01,140 --> 00:54:04,700 Taigi, dabar tegul iš naujo kompiliuoti tai programa, tai dot velniop plūdės. 1112 00:54:04,700 --> 00:54:07,950 >> Ir trečią kartą, tegul pamatyti, jei ji atitinka mano lūkesčius. 1113 00:54:07,950 --> 00:54:21,480 1, 10, įvesti, taip, gerai, 1.000, padalytą iš 10000, yra 0,100000. 1114 00:54:21,480 --> 00:54:24,952 Ir paaiškėja, mes galime kontroliuoti, kiek numeriai yra po šių ženklų po kablelio tikslumu. 1115 00:54:24,952 --> 00:54:25,660 Mes iš tikrųjų bus. 1116 00:54:25,660 --> 00:54:26,790 Mes grįžti prie to. 1117 00:54:26,790 --> 00:54:28,440 >> Bet dabar, iš tiesų, matematika yra teisinga. 1118 00:54:28,440 --> 00:54:30,090 Taigi, vėl, kas yra Takeaway čia? 1119 00:54:30,090 --> 00:54:33,050 Pasirodo, kad C, yra ne tik tiesiog strings-- ir, tiesą sakant, 1120 00:54:33,050 --> 00:54:36,120 ten tikrai ne, nes mes pridėti tiems, su CS50 bibliotekoje. 1121 00:54:36,120 --> 00:54:37,710 Tačiau yra ne tik ints. 1122 00:54:37,710 --> 00:54:38,990 >> Taip pat yra plūdės. 1123 00:54:38,990 --> 00:54:42,810 Ir paaiškėja, daug kitų duomenų krūva rūšys taip pat, kad mes naudosime prieš ilgas. 1124 00:54:42,810 --> 00:54:46,270 Pasirodo, jei norite vieno charakteris, o ne simbolių eilutė, 1125 00:54:46,270 --> 00:54:47,610 galite naudoti tik char. 1126 00:54:47,610 --> 00:54:52,350 >> Pasirodo, kad jei norite Bool, Būlio vertė, true arba false tik 1127 00:54:52,350 --> 00:54:56,840 dėka CS50 bibliotekoje, mes įtraukta į C bool tipo duomenų, taip pat. 1128 00:54:56,840 --> 00:54:59,180 Bet jis taip pat pristatyti daugelis kitų kalbų, taip pat. 1129 00:54:59,180 --> 00:55:04,130 Ir paaiškėja, kad kartais jums reikia didesnių numerius tada ateis pagal nutylėjimą 1130 00:55:04,130 --> 00:55:05,210 su int ir plūdės. 1131 00:55:05,210 --> 00:55:10,590 >> Ir, iš tikrųjų, dvigubas yra skaičius kad naudoja ne 32 bitų, bet 64 bitus. 1132 00:55:10,590 --> 00:55:14,990 Ir gana ilgo yra skaičius, kuris naudoja ne 32, bitai, bet 64 bitus, 1133 00:55:14,990 --> 00:55:19,190 atitinkamai, už slankiojo kablelio vertybės ir sveikieji skaičiai, atitinkamai. 1134 00:55:19,190 --> 00:55:22,780 Tad tikrai dabar pamatyti šį veiksmą. 1135 00:55:22,780 --> 00:55:26,150 >> Aš ruošiuosi eiti į priekį čia ir pakelti vieną kitą programą. 1136 00:55:26,150 --> 00:55:32,020 Čia aš ruošiuosi eiti į priekį o yra CS50.h. 1137 00:55:32,020 --> 00:55:34,910 Ir leiskite man eiti, apima standartinį IO.h. 1138 00:55:34,910 --> 00:55:37,320 >> Ir jūs pastebėsite kažką funky, kas vyksta čia. 1139 00:55:37,320 --> 00:55:40,592 Tai ne spalvine dalykų taip pat, kaip tai darė anksčiau. 1140 00:55:40,592 --> 00:55:43,550 Ir it turns out, kad todėl, kad aš nedavė dalykas failo pavadinimą. 1141 00:55:43,550 --> 00:55:47,270 >> Aš ruošiuosi skambinti šį vieną sizeof.c ir paspauskite Saugoti. 1142 00:55:47,270 --> 00:55:51,039 Ir pastebėti, kas atsitinka su mano labai balta kodas prieš tą juodą foną. 1143 00:55:51,039 --> 00:55:52,830 Dabar, bent jau ten kai violetinė ten. 1144 00:55:52,830 --> 00:55:54,490 Ir tai yra sintaksė paryškintas. 1145 00:55:54,490 --> 00:55:57,700 >> Tai todėl, kad, paprasčiausiai, aš sakė IDE kokio tipo failą 1146 00:55:57,700 --> 00:56:01,060 tai suteikiant jam pavadinimą ir specialiai failo plėtinį. 1147 00:56:01,060 --> 00:56:03,620 Dabar galime eiti į priekį ir tai padaryti. 1148 00:56:03,620 --> 00:56:08,910 Aš ruošiuosi eiti į priekį ir labai tiesiog atsispausdinti following-- bool 1149 00:56:08,910 --> 00:56:11,080 yra proc GV. 1150 00:56:11,080 --> 00:56:12,950 >> Mes grįžti į kad vos akimirką. 1151 00:56:12,950 --> 00:56:15,840 Ir tada aš ruošiuosi spausdinimo dydį bool. 1152 00:56:15,840 --> 00:56:18,170 Ir dabar, tik sutaupyti aš šiek tiek laiko, aš 1153 00:56:18,170 --> 00:56:20,280 ketinate daryti vieną visumą krūva iš jų vienu metu. 1154 00:56:20,280 --> 00:56:24,620 Ir būtent, aš ruošiuosi pakeisti į char ir char. 1155 00:56:24,620 --> 00:56:27,760 Tai vienas, aš ruošiuosi keisti dvigubo ir dvigubai. 1156 00:56:27,760 --> 00:56:31,440 >> Tai vienas, aš ruošiuosi keisti į plūdę ir plūdės. 1157 00:56:31,440 --> 00:56:35,670 Tai vienas, aš ruošiuosi pakeisti į int ir int. 1158 00:56:35,670 --> 00:56:38,660 Ir tai viena, aš ruošiuosi pakeisti į ilgas ilgas. 1159 00:56:38,660 --> 00:56:40,840 Ir tai dar vartojate ilgą laiką, kol ilgai. 1160 00:56:40,840 --> 00:56:44,572 >> Ir tada, pagaliau, daviau pats vienas per daug, eilutė. 1161 00:56:44,572 --> 00:56:47,030 Pasirodo, kad C, ten specialus operatorius vadinamas 1162 00:56:47,030 --> 00:56:50,260 dydis tai tiesiog ketina, kai paleisti, 1163 00:56:50,260 --> 00:56:52,099 pasakyti mums dydį kiekvienas iš šių kintamųjų. 1164 00:56:52,099 --> 00:56:53,890 Ir tai yra būdas, dabar, galime prijungti atgal 1165 00:56:53,890 --> 00:56:57,140 į praėjusios savaitės diskusijų Duomenų ir atstovavimo. 1166 00:56:57,140 --> 00:57:00,330 >> Leiskite man eiti į priekį ir kaupia dydis dot slash dydžio. 1167 00:57:00,330 --> 00:57:01,210 Ir pažiūrėkime. 1168 00:57:01,210 --> 00:57:05,210 Pasirodo, kad C, konkrečiai CS50 IDE, 1169 00:57:05,210 --> 00:57:08,170 specialiai dėl Operacinė sistema Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 kuris yra 64-bitų operacinėje sistema šiuo atveju, 1171 00:57:11,100 --> 00:57:14,189 bool ketina naudoti vieną baitą erdvėje. 1172 00:57:14,189 --> 00:57:16,480 Štai kaip dydis matuojamas, ne bitais, bet baitais. 1173 00:57:16,480 --> 00:57:18,690 Ir prisiminti, kad vienas baitas yra aštuoni bitai. 1174 00:57:18,690 --> 00:57:22,030 Taigi bool, net jei techniškai reikia tik 0 arba 1, 1175 00:57:22,030 --> 00:57:24,092 tai šiek tiek kainuojančio kaip mes ją įgyvendino. 1176 00:57:24,092 --> 00:57:26,800 Tai iš tikrųjų ketinate naudoti vieną visumą byte-- todėl visi nuliai, yra gal 1177 00:57:26,800 --> 00:57:31,050 visi tie, ar kažkas panašaus, ar tik vienas 1 tarp aštuonių bitų. 1178 00:57:31,050 --> 00:57:34,962 >> Char, tuo tarpu, naudojamas pobūdžio kaip ASCII simbolių per paskutinę savaitę, 1179 00:57:34,962 --> 00:57:36,170 bus vienas simbolis. 1180 00:57:36,170 --> 00:57:42,340 Ir tai synchs su mūsų samprata jis yra ne daugiau nei 256 bits-- o, 1181 00:57:42,340 --> 00:57:45,360 synchs su juo nesant ilgiau nei 8 bitai, kurie 1182 00:57:45,360 --> 00:57:47,450 suteikia mums daugiau kaip 256 vertybes. 1183 00:57:47,450 --> 00:57:49,680 Dvigubas ketina būti 8 baitų arba 64 bitų. 1184 00:57:49,680 --> 00:57:50,510 >> Plūduras yra 4. 1185 00:57:50,510 --> 00:57:51,690 Int yra 4. 1186 00:57:51,690 --> 00:57:52,980 Ilgas, ilgas yra 8. 1187 00:57:52,980 --> 00:57:54,716 Ir eilutė yra 8. 1188 00:57:54,716 --> 00:57:55,840 Bet nesijaudinkite apie tai. 1189 00:57:55,840 --> 00:57:57,340 Mes ketiname žievelės atgal, kad sluoksnis. 1190 00:57:57,340 --> 00:57:59,940 Pasirodo, stygos gali būti ilgesnis nei 8 baitai. 1191 00:57:59,940 --> 00:58:02,310 >> Ir, tiesą sakant, mes parašiau Stygos jau Hello world, 1192 00:58:02,310 --> 00:58:03,700 ilgiau nei 8 baitai. 1193 00:58:03,700 --> 00:58:06,270 Bet mes grįžti į kad vos akimirką. 1194 00:58:06,270 --> 00:58:09,690 Bet atimti čia yra tokia. 1195 00:58:09,690 --> 00:58:15,320 >> Kiekvienas kompiuteris turi tik ribotas atminties kiekis ir erdvėje. 1196 00:58:15,320 --> 00:58:17,860 Galite tik saugoti tiek daug failai jūsų Mac arba PC. 1197 00:58:17,860 --> 00:58:23,030 Galite išsaugoti tik tiek daug programas RAM veikia vienu metu, nebūtinai, net 1198 00:58:23,030 --> 00:58:26,360 su virtualios atminties, nes turite baigtinių sumą RAM. 1199 00:58:26,360 --> 00:58:28,990 >> Ir tik picture-- jei Jūs niekada atvėrė nešiojamas 1200 00:58:28,990 --> 00:58:31,300 arba užsisakyti papildomą atminties už kompiuterio, jums 1201 00:58:31,300 --> 00:58:33,670 gali nežinoti, kad viduje kompiuterio 1202 00:58:33,670 --> 00:58:36,590 yra kažkas, kad atrodo kaip ši mažai. 1203 00:58:36,590 --> 00:58:40,540 Taigi tai yra tik bendras įmonės pavadinimą Svarbu, kad daro RAM kompiuterius. 1204 00:58:40,540 --> 00:58:43,620 Ir RAM Kai programos gyventi, o jie veikia. 1205 00:58:43,620 --> 00:58:46,630 >> Taigi kiekvienu Mac arba PC, kai dukart spustelėkite programą, ir tai atveria, 1206 00:58:46,630 --> 00:58:48,921 ir ji atveria šiek Word dokumentas arba kažkas panašaus, 1207 00:58:48,921 --> 00:58:51,764 ji saugo ją laikinai RAM, nes RAM greičiau 1208 00:58:51,764 --> 00:58:53,680 nei kietajame diske, arba Jūsų kietojo disko. 1209 00:58:53,680 --> 00:58:56,600 Taigi, tai tik ten, kur programos eiti gyventi, kai jie veikia, 1210 00:58:56,600 --> 00:58:58,060 arba kai yra naudojami failai. 1211 00:58:58,060 --> 00:59:00,890 >> Taigi jūs turite tai, kas atrodo kaip šis jūsų nešiojamojo kompiuterio viduje, 1212 00:59:00,890 --> 00:59:03,320 ar šiek tiek didesni dalykai viduje darbalaukyje. 1213 00:59:03,320 --> 00:59:07,440 Bet svarbiausia yra jūs turite tik baigtinis skaičius šių dalykų. 1214 00:59:07,440 --> 00:59:11,230 Ir yra tik baigtinis dydis aparatūros sėdi ant šio stalo teisė 1215 00:59:11,230 --> 00:59:11,730 čia. 1216 00:59:11,730 --> 00:59:15,920 >> Taigi, žinoma, mes negalime laikyti be galo ilgi numeriai. 1217 00:59:15,920 --> 00:59:19,030 Ir dar, jei jūs manote, grįžti į Mokyklos, kiek skaitmenų gali 1218 00:59:19,030 --> 00:59:21,400 jūs turite dešinę iš dešimtainio taško? 1219 00:59:21,400 --> 00:59:24,680 Šiuo klausimu, kiek skaitmenų gali turite prie kairę nuo dešimtainio kablelio? 1220 00:59:24,680 --> 00:59:26,300 Tikrai, be galo daug. 1221 00:59:26,300 --> 00:59:30,840 >> Dabar, mes, žmonės, tik galėtų žinoti, kaip ištarti milijonai 1222 00:59:30,840 --> 00:59:34,990 ir milijardus, trilijonus ir Kwadrylion ir kvintilijonas. 1223 00:59:34,990 --> 00:59:39,370 Ir aš stumti ribas Mano understanding-- arba my-- suprantu 1224 00:59:39,370 --> 00:59:41,110 numeriai, bet mano tarimas numerius. 1225 00:59:41,110 --> 00:59:44,720 Tačiau jie gali gauti be galo didelio su galo daug skaitmenų kairėje 1226 00:59:44,720 --> 00:59:47,050 arba prie dešimtainio taško teisę. 1227 00:59:47,050 --> 00:59:50,040 >> Bet kompiuteriai turi tik ribinis dydis atminties, 1228 00:59:50,040 --> 00:59:53,510 baigtinis skaičius tranzistorių A baigtinis skaičius lemputes viduje. 1229 00:59:53,510 --> 00:59:57,350 Taigi, kas atsitinka, kai paleisti iš vietos? 1230 00:59:57,350 --> 00:59:59,620 Kitaip tariant, jei tau prisiminkite paskutinę savaitę 1231 00:59:59,620 --> 01:00:03,160 kai mes kalbėjome apie skaičių patys yra atstovaujama dvejetainis, 1232 01:00:03,160 --> 01:00:05,480 Tarkime, kad mes turime tai 8 bitų vertė čia. 1233 01:00:05,480 --> 01:00:08,290 >> Ir mes turime septynis 1 "ir vieną 0. 1234 01:00:08,290 --> 01:00:10,827 Ir manau, kad mes norime pridėti 1 iki šios vertės. 1235 01:00:10,827 --> 01:00:12,410 Tai tikrai didelis skaičius dabar. 1236 01:00:12,410 --> 01:00:16,610 >> Tai 254, jei aš atsimenu matematikos nuo praėjusią savaitę dešinėje. 1237 01:00:16,610 --> 01:00:19,480 Bet kas, jei aš pakeisiu kad dešinė 0 į 1? 1238 01:00:19,480 --> 01:00:22,800 Sveikasis skaičius, iš Žinoma, tampa aštuonių 1 s. 1239 01:00:22,800 --> 01:00:24,050 Taigi mes vis dar geras. 1240 01:00:24,050 --> 01:00:27,204 >> Ir tai tikriausiai yra 255, nors priklauso nuo konteksto ir 1241 01:00:27,204 --> 01:00:29,120 ji iš tikrųjų gali atstovauti neigiamas skaičius. 1242 01:00:29,120 --> 01:00:31,240 Bet daugiau apie tai kitą kartą. 1243 01:00:31,240 --> 01:00:34,220 Tai jaučiasi tai apie kaip aukštas, kaip aš galiu pasitikėti. 1244 01:00:34,220 --> 01:00:35,290 >> Dabar, tai tik 8 bitus. 1245 01:00:35,290 --> 01:00:38,170 Ir mano Mac ", žinoma, yra būdas daugiau nei 8 bitai atminties. 1246 01:00:38,170 --> 01:00:39,170 Bet ji turi ribotas. 1247 01:00:39,170 --> 01:00:43,230 Taip tas pats argumentas taikomas, net jei mes turėti daugiau iš šių tie ekrane. 1248 01:00:43,230 --> 01:00:47,020 >> Bet kas atsitinka, jei esate saugoti šį numerį 255, 1249 01:00:47,020 --> 01:00:49,290 ir norite skaičiuoti 1 šiek tiek didesnis? 1250 01:00:49,290 --> 01:00:51,600 Jūs norite eiti nuo 255 iki 256. 1251 01:00:51,600 --> 01:00:55,800 Problema, žinoma, yra, kad jei pradėti skaičiuoti iki nulio, kaip praeitą savaitę, 1252 01:00:55,800 --> 01:00:59,670 Jums negali tikėtis tokio pat aukščio kaip 256, jau nekalbant apie 257, 1253 01:00:59,670 --> 01:01:02,584 jau nekalbant apie 258 m, nes tai, ką atsitinka, kai jūs pridėti 1? 1254 01:01:02,584 --> 01:01:05,000 Jei seną pradinėje mokykloje požiūris, jūs įtraukėte 1 čia 1255 01:01:05,000 --> 01:01:08,150 ir tada 1 plius 1 yra 2, bet tai tikrai nulis, nešiodami 1, 1256 01:01:08,150 --> 01:01:09,695 atlikti 1, nešti 1 d. 1257 01:01:09,695 --> 01:01:12,620 Visi šie dalykai, Šios 1 s, eikite iki nulio. 1258 01:01:12,620 --> 01:01:17,820 Ir jūs baigti taip, kaip kažkas nurodė, a 1 kairėje pusėje. 1259 01:01:17,820 --> 01:01:22,540 Bet viskas, ko jums gali realiai pamatyti ir tilptų atmintyje 1260 01:01:22,540 --> 01:01:27,960 yra tik aštuoni 0 ųjų, kuri yra pasakyti tam tikru momentu, jei jus, kompiuteris, 1261 01:01:27,960 --> 01:01:32,490 Bandžiau skaičiuoti pakankamai aukštai, jūs vyksta į kuriuos vyniojami aplink, atrodo, 1262 01:01:32,490 --> 01:01:35,850 nuliui, o gal net neigiamas numeriai, kurie yra dar mažesnis už nulį. 1263 01:01:35,850 --> 01:01:37,260 >> Ir mes galime rūšies pamatyti tai. 1264 01:01:37,260 --> 01:01:39,900 Leiskite man eiti į priekį ir rašyti nekilnojamojo greitai programa čia. 1265 01:01:39,900 --> 01:01:43,690 Leiskite man eiti į priekį ir rašyti programa, vadinama Perpildyta. 1266 01:01:43,690 --> 01:01:49,980 Įtraukti CS50.h, apima standartinis IO.h-- oh, 1267 01:01:49,980 --> 01:01:51,730 Aš tikrai praleidau savo sintaksės. 1268 01:01:51,730 --> 01:01:54,440 Taigi leiskite Išsaugoti kaip overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> Ir dabar int main void-- ir prieš ilgas, mes 1270 01:01:57,084 --> 01:01:59,500 grįžti į paaiškinti, kodėl mes nuolat raštu int main negaliojančiu. 1271 01:01:59,500 --> 01:02:02,080 Bet dabar, tegul tiesiog padaryti jis, atsižvelgiant savaime suprantamu dalyku. 1272 01:02:02,080 --> 01:02:06,200 Duokime sau int, inicijuoti ir ją iki 0. 1273 01:02:06,200 --> 01:02:11,716 >> Tegul tada s padaryti int gaunu zero-- Tiesą sakant, darykime begalinis ciklas 1274 01:02:11,716 --> 01:02:12,590 ir pamatyti, kas atsitiks. 1275 01:02:12,590 --> 01:02:22,440 Nors tiesa, tada tegul atsispausdinti N yra procentai i Backslash N, plug-n. 1276 01:02:22,440 --> 01:02:27,200 Bet dabar, darykime N gauna n plius 1. 1277 01:02:27,200 --> 01:02:29,660 >> Taigi, kitaip tariant, kiekvienas iteracijos šio begalinis ciklas, 1278 01:02:29,660 --> 01:02:32,550 Paimkime N vertę, ir pridėti 1 į jį, ir tada 1279 01:02:32,550 --> 01:02:34,350 saugoti rezultatą atgal į n kairėje pusėje. 1280 01:02:34,350 --> 01:02:37,150 Ir, tiesą sakant, mes matėme sintaksė šiek tiek panašaus į tai, trumpai. 1281 01:02:37,150 --> 01:02:39,730 Cool Apgaulė yra vietoj rašyti visa tai iš, 1282 01:02:39,730 --> 01:02:42,770 jūs iš tikrųjų galite pasakyti N plius lygus 1. 1283 01:02:42,770 --> 01:02:47,480 >> Arba, jei jūs tikrai norite būti išgalvotas, galite pasakyti n plius plius kabliataškis. 1284 01:02:47,480 --> 01:02:50,130 Tačiau pastarieji du yra tiesiog ką mes norime paraginti sintaksinis cukraus 1285 01:02:50,130 --> 01:02:50,790 pirmą dalykas. 1286 01:02:50,790 --> 01:02:53,456 >> Pirmas dalykas yra aiškesnis, visiškai gerai, visiškai teisinga. 1287 01:02:53,456 --> 01:02:55,470 Bet tai yra daugiau bendro, aš pasakyti. 1288 01:02:55,470 --> 01:02:57,210 Taigi mes padarysime tai už tik akimirkai. 1289 01:02:57,210 --> 01:03:01,685 >> Leiskite dabar padaryti perpildymo, kuris skamba o grėsmingas, taškas velniop perpildymo. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 Pažiūrėkime, N manimi gauti gana didelis. 1292 01:03:09,852 --> 01:03:11,310 Bet pagalvokime, kaip didelis gali N gauti? 1293 01:03:11,310 --> 01:03:12,870 >> n yra tarpinis junginys. 1294 01:03:12,870 --> 01:03:16,400 Mes matėme prieš akimirka su dydžiu pavyzdys, kad int yra keturi baitai. 1295 01:03:16,400 --> 01:03:22,070 Mes žinome iš praeitą savaitę, keturi baitai yra 32 bitų, nes 8 kartus 4, tai 32. 1296 01:03:22,070 --> 01:03:23,460 Štai bus 4 mlrd. 1297 01:03:23,460 --> 01:03:25,802 >> Ir mes iki 800,000. 1298 01:03:25,802 --> 01:03:28,510 Tai ketina imtis amžinai tikėtis tokio pat aukščio kaip aš galbūt galite. 1299 01:03:28,510 --> 01:03:30,635 Taigi, aš ruošiuosi eiti į priekį, kaip jums gali, prieš ilgą, 1300 01:03:30,635 --> 01:03:34,910 ir paspauskite Control C-- atvirai, kontrolės C daug, kai kontrolės, C paprastai 1301 01:03:34,910 --> 01:03:36,034 priemonės atšaukti. 1302 01:03:36,034 --> 01:03:38,200 Deja, nes tai veikia debesyje, 1303 01:03:38,200 --> 01:03:41,190 kartais debesis spjaudė iš tiek daug dalykų, 1304 01:03:41,190 --> 01:03:44,180 tiek daug produkcijos, jis ketina užtrukti mano indėlis 1305 01:03:44,180 --> 01:03:45,630 patekti į debesis. 1306 01:03:45,630 --> 01:03:49,240 Taigi, nors aš paspauskite Valdymo C prieš kelias sekundes, 1307 01:03:49,240 --> 01:03:53,110 tai tikrai pusė poveikis begalinis ciklas. 1308 01:03:53,110 --> 01:03:56,070 >> Ir taip tokiais atvejais mes ketina palikti, kad būtų. 1309 01:03:56,070 --> 01:03:59,050 Ir mes ketiname pridėti dar terminalo langą per čia 1310 01:03:59,050 --> 01:04:03,186 su pliuso, kuris, žinoma, ne panašaus, nes jis vis dar galvoju. 1311 01:04:03,186 --> 01:04:05,310 Ir eikime į priekį ir būti šiek tiek labiau pagrįsta. 1312 01:04:05,310 --> 01:04:07,768 >> Aš ruošiuosi eiti į priekį ir daryti tai tik žinoma daug kartų. 1313 01:04:07,768 --> 01:04:10,047 Leiskite naudoti for ciklas, kurį aš užsiminiau anksčiau. 1314 01:04:10,047 --> 01:04:10,630 Padarykime tai. 1315 01:04:10,630 --> 01:04:13,430 Duok man dar vieną kintamąjį int i gauna 0. 1316 01:04:13,430 --> 01:04:17,430 i yra mažiau nei, tarkim, 64 i ++. 1317 01:04:17,430 --> 01:04:24,010 O dabar leiskite man eiti į priekį ir spausdinti iš n proc i kableliu N. 1318 01:04:24,010 --> 01:04:27,547 Ir tada n-- tai dar ketina imtis amžinai. 1319 01:04:27,547 --> 01:04:28,130 Padarykime tai. 1320 01:04:28,130 --> 01:04:30,620 >> N gauna n kartų 2. 1321 01:04:30,620 --> 01:04:34,140 Arba galėtume būti išgalvotas ir daryti kartų lygus 2. 1322 01:04:34,140 --> 01:04:37,120 Bet tegul tiesiog pasakyti n lygi pati laikai 2. 1323 01:04:37,120 --> 01:04:39,321 Kitaip tariant, į tai nauja versija programos, 1324 01:04:39,321 --> 01:04:41,820 Aš nenoriu laukti amžinai iš, kaip 800,000 iki 4 mlrd. 1325 01:04:41,820 --> 01:04:43,070 Tegul tik gauti šią per su. 1326 01:04:43,070 --> 01:04:44,920 >> Leiskite tikrųjų dvigubai N kiekvieną kartą. 1327 01:04:44,920 --> 01:04:47,660 Kuris, prisiminti, dvejinimo yra priešais turėti, žinoma. 1328 01:04:47,660 --> 01:04:50,035 Ir kadangi praėjusią savaitę turime kažkas ir vėl, ir vėl, 1329 01:04:50,035 --> 01:04:52,200 ir vėl, super greitai, padvigubinti, be abejo, 1330 01:04:52,200 --> 01:04:58,080 gauti mus nuo 1 iki galimas didžiausias vertė, galime tikėtis, kad su tarpt. 1331 01:04:58,080 --> 01:04:59,750 >> Taigi darykime tiksliai tai. 1332 01:04:59,750 --> 01:05:01,720 Ir mes grįžti prie šio prieš ilgas. 1333 01:05:01,720 --> 01:05:04,180 Tačiau tai, dar kartą, yra tik kaip kartojimo blokas nulio. 1334 01:05:04,180 --> 01:05:05,600 Ir jūs naudojate tai prieš ilgai. 1335 01:05:05,600 --> 01:05:10,170 >> Tai tiesiog reiškia skaičių nuo nulio iki, bet nėra lygus, iki 64. 1336 01:05:10,170 --> 01:05:14,285 Ir kiekviename Šiam iteracijos kilpa, tiesiog laikyti incrementing i. 1337 01:05:14,285 --> 01:05:18,990 Taigi i ++ - ir tai apskritai konstruktas on-line 7 yra tiesiog super paplitęs būdas 1338 01:05:18,990 --> 01:05:22,290 kartoti keletą eilučių kodas, kai kurie iš karto. 1339 01:05:22,290 --> 01:05:23,362 Kuris eilučių kodo? 1340 01:05:23,362 --> 01:05:25,570 Šie garbanotas petnešos, kaip jūs galėjo surinktą iš dabar 1341 01:05:25,570 --> 01:05:26,780 reiškia, atlikite šiuos veiksmus. 1342 01:05:26,780 --> 01:05:29,510 >> Jis yra kaip naujo, kai ji turi geltona blokų 1343 01:05:29,510 --> 01:05:32,680 ir kitos spalvos, kad šios rūšies priimti ar apkabinti kitus blokus. 1344 01:05:32,680 --> 01:05:34,750 Štai ką tie garbanoti petnešos darai čia. 1345 01:05:34,750 --> 01:05:40,200 Taigi, jei aš gavau mano sintaksė right-- jus galite pamatyti morkų simbolį C priemonėmis 1346 01:05:40,200 --> 01:05:42,706 tai kiek kartų buvau bando išspręsti šią problemą. 1347 01:05:42,706 --> 01:05:45,330 Taigi galime atsikratyti, kad vienas apskritai, ir uždaryti šį langą. 1348 01:05:45,330 --> 01:05:46,520 Ir mes naudosime naują. 1349 01:05:46,520 --> 01:05:51,980 Padaryti perpildymo, dot velniop perpildymo, "Enter", visos teisės, 1350 01:05:51,980 --> 01:05:53,090 atrodo neblogai pirmas. 1351 01:05:53,090 --> 01:05:56,200 Bet tegul slinkti atgal laiku, nes Aš tai 64 kartų. 1352 01:05:56,200 --> 01:05:58,700 >> Ir pranešimas pirmą kartą, n yra 1. 1353 01:05:58,700 --> 01:06:03,110 Antrą kartą, n yra 2, tada 4, tada 8, tada 16. 1354 01:06:03,110 --> 01:06:09,450 Ir atrodo, kad kuo greičiau Gaunu maždaug 1 mlrd, 1355 01:06:09,450 --> 01:06:12,800 jei aš dvigubai jį dar kartą, kad turėtų duoti man 2 mlrd. 1356 01:06:12,800 --> 01:06:14,980 Bet pasirodo, tai tiesiai ant smaigalys. 1357 01:06:14,980 --> 01:06:18,930 >> Ir taip iš tikrųjų perpildymo int nuo 1 mlrd 1358 01:06:18,930 --> 01:06:23,514 iki maždaug neigiamas 2 milijardų, nes sveikasis skaičius, 1359 01:06:23,514 --> 01:06:25,430 skirtingai skaičius, kurių buvo prisiimti praėjusią savaitę, 1360 01:06:25,430 --> 01:06:28,397 gali būti tiek teigiamas ir neigiamas iš tikrųjų ir į kompiuterį. 1361 01:06:28,397 --> 01:06:30,730 Ir todėl bent vienas iš tų, bitai yra veiksmingai pavogtas. 1362 01:06:30,730 --> 01:06:34,190 Taigi mes tikrai turime tik 31 bitai, arba 2 mlrd galimos reikšmės. 1363 01:06:34,190 --> 01:06:38,220 >> Bet dabar, Takeaway yra gana tiesiog, nepriklausomai šie skaičiai yra 1364 01:06:38,220 --> 01:06:42,280 ir kokia matematika yra, kažkas blogo atsitiks, galų gale, 1365 01:06:42,280 --> 01:06:46,980 nes galiausiai bandote Iškeisti bitai vienas per daug kartų. 1366 01:06:46,980 --> 01:06:51,060 Ir jūs efektyviai eiti iš visų 1 s gal visi 0 s, o gal 1367 01:06:51,060 --> 01:06:54,260 tiesiog kai kurie kiti rašto, kad jo aiškiai, priklauso nuo konteksto ir, 1368 01:06:54,260 --> 01:06:56,342 gali būti aiškinama kaip neigiamas skaičius. 1369 01:06:56,342 --> 01:06:59,300 Ir taip atrodytų aukščiausią I gali tikėtis šioje konkrečioje programoje 1370 01:06:59,300 --> 01:07:01,210 yra tik maždaug 1 mlrd. 1371 01:07:01,210 --> 01:07:02,760 Bet yra dalinis sprendimas čia. 1372 01:07:02,760 --> 01:07:03,480 Zinai ka? 1373 01:07:03,480 --> 01:07:07,600 >> Leiskite keisti iš int į ilgas ilgas. 1374 01:07:07,600 --> 01:07:10,633 Ir leiskite man eiti į priekį čia ir say-- Aš ruošiuosi 1375 01:07:10,633 --> 01:07:12,290 pakeisti tai nepasirašytas ilgai. 1376 01:07:12,290 --> 01:07:16,860 Arba pažiūrėkime, aš niekada prisiminti save. 1377 01:07:16,860 --> 01:07:19,920 >> Vykime į priekį ir padaryti perpildymo. 1378 01:07:19,920 --> 01:07:21,860 Ne, tai ne tai, LLD, ačiū. 1379 01:07:21,860 --> 01:07:23,430 Taigi kartais klingsėti gali būti naudingas. 1380 01:07:23,430 --> 01:07:27,550 Aš neprisimenu, ką formatą specifikatorius buvo ilgą laiko. 1381 01:07:27,550 --> 01:07:28,950 >> Bet, tiesą sakant, klingsėti man pasakė. 1382 01:07:28,950 --> 01:07:31,570 Žalioji yra kai geras Geras, dar reiškia, kad jūs padarėte klaidą. 1383 01:07:31,570 --> 01:07:33,190 Tai atspėti, kad aš reiškė LLD. 1384 01:07:33,190 --> 01:07:38,750 >> Taigi leiskite man pasinaudoti, tai patarimas, ilgas ilgas Dešimtainis skaičius, išskyrus tai, kad. 1385 01:07:38,750 --> 01:07:43,190 Ir leiskite man pakartotas ją, dot Slash perpildymo, Enter. 1386 01:07:43,190 --> 01:07:45,020 O dabar kas kietas tai. 1387 01:07:45,020 --> 01:07:49,140 >> Jei aš slinkti atgal laiku, mes vis dar pradėti skaičiuojant tuo pačiu place-- 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Atkreipkite dėmesį, mes visi kelią iki 1 mlrd. 1390 01:07:54,860 --> 01:07:57,070 Bet tada mes saugiai gauti 2 mlrd. 1391 01:07:57,070 --> 01:08:01,300 >> Tada mes gauti iki 4 mlrd, tada 8 mlrd, 17 mlrd. 1392 01:08:01,300 --> 01:08:03,340 Ir mes einame didesnis, o aukščiau ir aukščiau. 1393 01:08:03,340 --> 01:08:05,740 Galų gale, tai irgi pertraukos. 1394 01:08:05,740 --> 01:08:09,350 >> Galų gale, su ilga ilga, kuris yra 64-bitų reikšmės, o ne 1395 01:08:09,350 --> 01:08:13,660 32 bitų vertė, jei skaičiuoti per didelis, jums wrap aplink 0. 1396 01:08:13,660 --> 01:08:16,410 Ir šiuo atveju, mes atsitikti galų gale su neigiamas skaičius. 1397 01:08:16,410 --> 01:08:17,550 >> Todėl tai yra problema. 1398 01:08:17,550 --> 01:08:20,439 Ir ji Pasirodo, kad tai Problema yra ne visi, kad paslaptinga. 1399 01:08:20,439 --> 01:08:23,060 Nors aš sąmoningai sukeltas jį su šių klaidų, 1400 01:08:23,060 --> 01:08:26,149 paaiškėja, matome kokios visi aplink mus, arba bent jau kai kurie iš mūsų padaryti. 1401 01:08:26,149 --> 01:08:28,939 >> Taigi Lego Star Wars, jei jūs kada nors grojo žaidimą, 1402 01:08:28,939 --> 01:08:33,830 paaiškėja, galite eiti aplink nesilaikantiems viską į LEGO pasaulyje 1403 01:08:33,830 --> 01:08:36,640 ir rinkti monetas, esmės. 1404 01:08:36,640 --> 01:08:39,200 Ir jei jūs kada nors grojo Šis žaidimas taip per daug laiko, 1405 01:08:39,200 --> 01:08:42,630 kaip šis bevardis individo čia padarė, iš viso 1406 01:08:42,630 --> 01:08:46,700 monetų, kad jūs galite gauti yra, atrodytų, 4 mlrd. 1407 01:08:46,700 --> 01:08:48,240 >> Dabar, tai tikrai apvali. 1408 01:08:48,240 --> 01:08:50,239 Taigi Lego bandžiau išlaikyti dalykų patogi. 1409 01:08:50,239 --> 01:08:53,779 Jie neturėjo daryti tiksliai 2 iki 32 galia, už praeitą savaitę. 1410 01:08:53,779 --> 01:08:55,310 Bet 4 mlrd yra priežastis. 1411 01:08:55,310 --> 01:08:58,979 Atrodo, remiantis šia informacija, kad Lego ir kompanija, 1412 01:08:58,979 --> 01:09:02,624 padarė šį faktinį programinę įrangą, nusprendė kad kuo daugiau monetų 1413 01:09:02,624 --> 01:09:04,540 vartotojas gali kauptis yra, iš tiesų, 4 milijardus, 1414 01:09:04,540 --> 01:09:12,069 nes jie pasirinko savo kodą naudoti nėra ilgas ilgas, matyt, 1415 01:09:12,069 --> 01:09:16,140 bet tik sveikas, nepasirašytas sveikasis skaičius, tik teigiamas sveikasis skaičius, kurio 1416 01:09:16,140 --> 01:09:18,089 Max vertė yra maždaug tai. 1417 01:09:18,089 --> 01:09:19,380 Na, čia dar vienas juokingas vienas. 1418 01:09:19,380 --> 01:09:23,500 Taigi žaidimas Civilizacija, kuri kai kurie iš jūsų gali būti susipažinę su 1419 01:09:23,500 --> 01:09:26,660 paaiškėja, kad prieš keletą metų ten buvo šiame žaidime, kuriuo klaidą 1420 01:09:26,660 --> 01:09:28,750 jei suvaidino vaidmenį Gandhi į žaidimą, 1421 01:09:28,750 --> 01:09:34,020 vietoj jo yra labai pacifistas, o buvo neįtikėtinai, neįtikėtinai 1422 01:09:34,020 --> 01:09:36,399 agresyvi, esant tam tikroms aplinkybėms. 1423 01:09:36,399 --> 01:09:40,529 Visų pirma, taip, kad civilizacija darbai, kad jei jūs, žaidėjas, 1424 01:09:40,529 --> 01:09:44,680 priimti demokratiją, jūsų agresyvumas rezultatas pasireiškia 1425 01:09:44,680 --> 01:09:48,130 mažėjančią reikšmę iš dviejų, todėl minusas atėmus, tada minusas minuso. 1426 01:09:48,130 --> 01:09:50,569 >> Taigi jūs atimti 2 nuo Jūsų tikrasis Iteracja. 1427 01:09:50,569 --> 01:09:56,650 Deja, jei jūsų Iteracja yra Iš pradžių 1, ir jūs atimti 2 iš jos 1428 01:09:56,650 --> 01:09:59,050 priėmus demokratiją kaip Gandhi čia galėtų 1429 01:09:59,050 --> 01:10:02,200 padariau, nes jis buvo labai passive-- 1 dėl agresyvumo mastu. 1430 01:10:02,200 --> 01:10:04,830 Bet jei jis priima demokratiją, tada jis eina nuo 1 iki neigiamo 1 d. 1431 01:10:04,830 --> 01:10:11,470 >> Deja, jie buvo naudojant nepasirašytas numerius, 1432 01:10:11,470 --> 01:10:15,400 tai reiškia, jie gydomi net neigiamas numeriai taip, lyg jie buvo teigiami. 1433 01:10:15,400 --> 01:10:19,780 Ir paaiškėja, kad teigiamas ekvivalentas neigiamas 1, 1434 01:10:19,780 --> 01:10:23,480 tipiškų kompiuterinių programų, yra 255. 1435 01:10:23,480 --> 01:10:27,250 Taigi, jei Gandis priima , Todėl demokratija 1436 01:10:27,250 --> 01:10:32,470 jo agresyvumas rezultatas sumažėjo, ji iš tikrųjų ritininis aplink 255 1437 01:10:32,470 --> 01:10:35,470 ir daro jį labiausiai agresyvus charakteris žaidime. 1438 01:10:35,470 --> 01:10:36,930 Taigi galite google ant tai. 1439 01:10:36,930 --> 01:10:39,380 Ir tai buvo, Iš tiesų, atsitiktinis programavimo klaida, 1440 01:10:39,380 --> 01:10:43,010 bet tai įrašyta gana kraštotyros šiol. 1441 01:10:43,010 --> 01:10:44,360 >> Tai viskas, įdomus ir mielas. 1442 01:10:44,360 --> 01:10:47,760 Daugiau bauginantis, kai faktinis nekilnojamojo pasaulio įrenginiai, o ne žaidimai, 1443 01:10:47,760 --> 01:10:48,820 turi tas pačias klaidas. 1444 01:10:48,820 --> 01:10:54,500 Iš tiesų, vos prieš metus gaminys atėjo sužinoti apie Boeing 787 Dreamliner. 1445 01:10:54,500 --> 01:10:56,850 >> Ir ne pirmas straipsnis Žvilgsnis skaito mažai slaptas. 1446 01:10:56,850 --> 01:11:01,480 Bet jis pasakė tai, programinė įranga pažeidžiamumas "Boeing" 1447 01:11:01,480 --> 01:11:04,790 Naujas 787 Dreamliner srove turi gali sukelti pilotai 1448 01:11:04,790 --> 01:11:07,220 prarasti kontrolę orlaivis, galbūt 1449 01:11:07,220 --> 01:11:11,750 viduryje skrydžio, FAA pareigūnai įspėjo oro linijų neseniai. 1450 01:11:11,750 --> 01:11:14,520 Tai buvo nustatymas kad modelis 787 1451 01:11:14,520 --> 01:11:19,770 kad lėktuvas, kuriuo buvo varomas nepertraukiamai 248 dienų 1452 01:11:19,770 --> 01:11:24,880 gali prarasti visą kintamoji elektros srovė, srovės, elektros energijos dėl to, kad generatoriaus 1453 01:11:24,880 --> 01:11:28,892 valdymo blokai, GCUs, tuo pačiu metu vyksta į nepavyks saugiuoju režimu. 1454 01:11:28,892 --> 01:11:29,850 Tai tipo prarasti mane. 1455 01:11:29,850 --> 01:11:35,390 Tačiau pranešime buvo nurodyta, Gerai, dabar aš turiu, kad sąlyga sukėlė programinė įranga 1456 01:11:35,390 --> 01:11:38,590 kovoti su vidiniais generatorius kontrolė 1457 01:11:38,590 --> 01:11:44,860 vienetų, kurie bus perkrautas po 248 dienų nepertraukiamo galią. 1458 01:11:44,860 --> 01:11:47,070 Mes išdavimo ši pastebėti, kad neprarastumėte 1459 01:11:47,070 --> 01:11:49,300 Visų kintamosios srovės elektros galia, kuri galėtų sukelti 1460 01:11:49,300 --> 01:11:50,980 nevaldoma lėktuvo. 1461 01:11:50,980 --> 01:11:55,380 >> Taigi, pažodžiui, yra tam tikrų sveikasis skaičius, arba kai lygiaverčių duomenų tipas, 1462 01:11:55,380 --> 01:11:57,960 naudojamas programinės įrangos į faktinį lėktuvo 1463 01:11:57,960 --> 01:12:00,756 kad jei norite išsaugoti savo lėktuvą pakankamai ilgai, o, matyt, 1464 01:12:00,756 --> 01:12:03,880 gali būti tuo atveju, jei jūs tiesiog veikia juos nuolat ir niekada išjungiant 1465 01:12:03,880 --> 01:12:06,810 Jūsų lėktuvas, atrodo, arba nuomos jos baterijos mirti, 1466 01:12:06,810 --> 01:12:09,840 ilgainiui suskaičiuoti, ir daugiau, ir daugiau, ir daugiau, ir daugiau, ir daugiau. 1467 01:12:09,840 --> 01:12:12,150 >> Ir gamta A ribinis dydis atminties 1468 01:12:12,150 --> 01:12:15,880 bus perkrautas, riedėjimo atgal nulis arba kai neigiama reikšmė, 1469 01:12:15,880 --> 01:12:19,920 šalutinis poveikis, kuris yra grėsmingai nekilnojamojo realybė 1470 01:12:19,920 --> 01:12:23,970 kad lėktuvas gali prireikti turi būti paleistas, efektyviai, 1471 01:12:23,970 --> 01:12:27,290 ar gali kristi, dar blogiau, nes jis skrenda. 1472 01:12:27,290 --> 01:12:29,230 Taigi šie klausimai rūšių vis dar su mumis, 1473 01:12:29,230 --> 01:12:33,130 even-- tai buvo 2015 straipsnis, tuo labiau bauginantis 1474 01:12:33,130 --> 01:12:36,100 kai jūs nebūtinai suprasti, vertinti, ar numatyti 1475 01:12:36,100 --> 01:12:38,640 tie rūšių klaidų. 1476 01:12:38,640 --> 01:12:42,030 >> Taigi paaiškėja, ten vienas kitas blogas dalykas, apie duomenų pateikimo. 1477 01:12:42,030 --> 01:12:47,080 Pasirodo, kad net plūdės yra rūšies ydingas, nes plūdės, taip pat, 1478 01:12:47,080 --> 01:12:51,440 Aš pasiūliau yra 32 bitai, arba gal 64, jei jūs naudojate dvigubai. 1479 01:12:51,440 --> 01:12:53,070 Bet tai vis tiek ribotas. 1480 01:12:53,070 --> 01:12:57,070 >> Ir laimikis, kad jei galite įdėti begalę numerių 1481 01:12:57,070 --> 01:12:59,460 po kablelio, nėra jokio būdo galite 1482 01:12:59,460 --> 01:13:02,690 gali atstovauti visus galima numeriai, kad mes buvo mokomi 1483 01:13:02,690 --> 01:13:04,990 lygiui mokykla gali egzistuoti pasaulyje. 1484 01:13:04,990 --> 01:13:08,870 Kompiuteris, iš esmės, turi pasirinkti iš šių skaičių poaibis 1485 01:13:08,870 --> 01:13:10,200 atstovauti tiksliai. 1486 01:13:10,200 --> 01:13:12,450 >> Dabar, kompiuteris gali apvalios gal šiek tiek, 1487 01:13:12,450 --> 01:13:17,900 ir gali leisti jums maždaug parduotuvėje bet koks skaičius galbūt galbūt nori. 1488 01:13:17,900 --> 01:13:20,940 Bet tik intuityviai, jei jums turi baigtinį skaičių bitų, 1489 01:13:20,940 --> 01:13:24,560 galite sukeisti tik juos tiek daug baigtinių būdais. 1490 01:13:24,560 --> 01:13:26,570 Taigi, jūs negalite galbūt naudoti baigtinio skaičiaus 1491 01:13:26,570 --> 01:13:29,880 iš kombinacija bitų, modeliai nulių ir, 1492 01:13:29,880 --> 01:13:32,940 atstovauti begalinė skaičius numerius, 1493 01:13:32,940 --> 01:13:37,370 Tai rodo, kad kompiuteriai galėtų labai gerai būti gulėti mums kartais. 1494 01:13:37,370 --> 01:13:38,770 >> Iš tiesų, tegul tai padaryti. 1495 01:13:38,770 --> 01:13:41,239 Leiskite grįžti į CS50 IDE. 1496 01:13:41,239 --> 01:13:43,030 Leiskite man eiti į priekį ir sukurti mažai programą 1497 01:13:43,030 --> 01:13:47,940 vadinamas paklaidos, rodo, kad kompiuteriai, tiesą sakant, netikslus. 1498 01:13:47,940 --> 01:13:51,910 >> Ir leiskite man eiti į priekį ir pradėti kai šio kodekso iš anksčiau, 1499 01:13:51,910 --> 01:13:53,830 o dabar tiesiog atlikite šiuos veiksmus. 1500 01:13:53,830 --> 01:14:03,640 Leiskite man eiti į priekį ir daryti printf, proc F, Backslash n 1 padalytą iš 10. 1501 01:14:03,640 --> 01:14:07,430 Kitaip tariant, galime pasinerti giliau 1/10, kaip 1 ir dalijami iš 10. 1502 01:14:07,430 --> 01:14:09,760 Žinoma, kompiuteris gali atstovauti 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> Taigi eikime į priekį ir padaryti netikslumų. 1504 01:14:13,620 --> 01:14:14,390 Pažiūrėkime. 1505 01:14:14,390 --> 01:14:16,210 Formatas nurodoma tipo dvigubai. 1506 01:14:16,210 --> 01:14:18,160 Tačiau šis argumentas yra tipo int. 1507 01:14:18,160 --> 01:14:19,040 Kas vyksta? 1508 01:14:19,040 --> 01:14:21,970 >> O, įdomu, todėl tai pasimokyta iš anksčiau. 1509 01:14:21,970 --> 01:14:26,050 Aš sakau, ei, kompiuteris rodo man plūdė su f proc. 1510 01:14:26,050 --> 01:14:28,200 Bet aš suteikti jai 2 int. 1511 01:14:28,200 --> 01:14:31,120 Taigi paaiškėja, galiu sutvarkyti tai įvairiais būdais pora. 1512 01:14:31,120 --> 01:14:38,430 >> Galėčiau tiesiog pasukite vienas į 1,0, o 10 į 10,0, kuri, tiesą sakant, 1513 01:14:38,430 --> 01:14:42,390 turi galimybę konvertuoti poveikį juos į floats-- dar tikiuosi 1514 01:14:42,390 --> 01:14:43,180 tas pats numeris. 1515 01:14:43,180 --> 01:14:45,880 Arba it turns out, kad kažkas matysime vėl prieš ilgas. 1516 01:14:45,880 --> 01:14:47,170 Jūs galite atiduoti numerius. 1517 01:14:47,170 --> 01:14:49,880 >> Galite, naudojant šią suskliaustos išraiška, galima sakyti, 1518 01:14:49,880 --> 01:14:52,560 ei, kompiuteris, į tai 10, kurį aš žinau, yra int. 1519 01:14:52,560 --> 01:14:54,660 Bet su ja elgiamasi, prašome taip, tarsi tai plūdė. 1520 01:14:54,660 --> 01:14:56,680 Bet tai jaučiasi pernelyg sudėtingos. 1521 01:14:56,680 --> 01:14:59,040 >> Mūsų tikslams šiandien tegul tik pažodžiui 1522 01:14:59,040 --> 01:15:02,700 padėti jiems slankiojo kablelio vertybes su dešimtainio taško, kaip šis. 1523 01:15:02,700 --> 01:15:07,060 Leiskite man eiti į priekį ir pakartotinis, kad netikslumas, gera, taškas velniop 1524 01:15:07,060 --> 01:15:08,870 netikslumas, įveskite. 1525 01:15:08,870 --> 01:15:10,990 Gerai, mes ieškome gerai. 1526 01:15:10,990 --> 01:15:18,194 >> 1, padalytą iš 10, pagal mano "Mac" čia yra, iš tiesų, 0,100000. 1527 01:15:18,194 --> 01:15:21,360 Dabar aš buvo mokoma pradinėje mokykloje yra turėtų būti begalinis skaičius 0 aisiais. 1528 01:15:21,360 --> 01:15:23,151 Taigi leiskite bent pabandyti pamatyti kai iš tų. 1529 01:15:23,151 --> 01:15:26,770 Pasirodo, kad printf yra šiek tiek mėgėjas dar nei mes jau naudojate. 1530 01:15:26,770 --> 01:15:30,890 Pasirodo, jūs neturite nurodyti tiesiog proc F, arba tiesiog proc aš. 1531 01:15:30,890 --> 01:15:33,830 Jūs iš tikrųjų galite nurodyti kai kurios kontrolės parinktis. 1532 01:15:33,830 --> 01:15:36,470 >> Tiksliau, aš ruošiuosi pasakyti, ei, printf, 1533 01:15:36,470 --> 01:15:39,660 iš tikrųjų rodo, man 10 dešimtainių taškų. 1534 01:15:39,660 --> 01:15:40,820 Taigi atrodo šiek tiek keistai. 1535 01:15:40,820 --> 01:15:42,845 Bet tu sakai procentų, DOT, kiek numeriai 1536 01:15:42,845 --> 01:15:44,970 Norite pamatyti po kablelio, tada f 1537 01:15:44,970 --> 01:15:48,340 vienodo, tik todėl, kad tai ką dokumentacija sako. 1538 01:15:48,340 --> 01:15:50,080 Leiskite man eiti į priekį ir išsaugoti, kad. 1539 01:15:50,080 --> 01:15:52,460 >> Ir pastebėsite per daug, aš gaunu pavargau perspausdinimas dalykų. 1540 01:15:52,460 --> 01:15:55,900 Taigi, aš tiesiog nustatant aukštyn ir rodyklę žemyn ant mano raktus čia. 1541 01:15:55,900 --> 01:15:58,710 Ir jei aš nuolat pataikyti, jūs gali matyti visi iš komandų 1542 01:15:58,710 --> 01:16:01,090 kad aš padariau, ar neteisingai padarė. 1543 01:16:01,090 --> 01:16:04,630 >> Ir aš ruošiuosi eiti į priekį ir dabar ne iš tikrųjų naudoti, kad, matyt. 1544 01:16:04,630 --> 01:16:11,416 Padaryti netikslumą, DOT Slash imprecision-- taip 1545 01:16:11,416 --> 01:16:13,290 kas man buvo mokoma Mokyklos patikrinimus iš. 1546 01:16:13,290 --> 01:16:19,010 Net jei aš jį atspausdinti iki 10 dešimtosios Kavinės, tai, tiesą sakant, yra 0,10000. 1547 01:16:19,010 --> 01:16:19,840 Bet žinote ką? 1548 01:16:19,840 --> 01:16:21,150 >> Leiskite gauti šiek tiek godus. 1549 01:16:21,150 --> 01:16:23,990 Tarkime, pavyzdžiui, parodykite man 55 atkreipia po dešimtainio. 1550 01:16:23,990 --> 01:16:26,160 Leiskite tikrai imtis šio programuoti iš už nugaros. 1551 01:16:26,160 --> 01:16:31,170 Leiskite perdaryti jį su modelio netikslumas, taškas velniop, netikslumai. 1552 01:16:31,170 --> 01:16:32,390 >> Ir čia mes einame. 1553 01:16:32,390 --> 01:16:34,420 Jūsų vaikystės buvo melas. 1554 01:16:34,420 --> 01:16:48,410 Matyt, 1, padalytą iš 10 iš tikrųjų yra 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> Kas vyksta? 1556 01:16:49,740 --> 01:16:53,360 Na, it turns out, jei rūšies atrodo pakankamai toli į pagrindinių 1557 01:16:53,360 --> 01:16:55,950 atstovavimas tai skaičius, iš tikrųjų 1558 01:16:55,950 --> 01:17:00,400 nėra tiksliai 1/10 arba 0,1 ir begalinis skaičius nulių. 1559 01:17:00,400 --> 01:17:01,630 Dabar, kodėl taip yra? 1560 01:17:01,630 --> 01:17:06,250 >> Na, nors tai paprastas skaičius mus žmonės, 1, padalytą iš 10 1561 01:17:06,250 --> 01:17:10,910 tai dar vienas be galo daug numeriai, kad galėtume sugalvoti. 1562 01:17:10,910 --> 01:17:14,490 Bet kompiuteris gali atstovauti tik žinoma daug todėl numeriai. 1563 01:17:14,490 --> 01:17:18,710 Ir taip, efektyviai, ką kompiuteris rodo mums yra jo artimiausi 1564 01:17:18,710 --> 01:17:22,940 Įstatymų į numerį norime tikėti yra 1/10, 1565 01:17:22,940 --> 01:17:27,760 ar tikrai 0,10000 ad infinitum. 1566 01:17:27,760 --> 01:17:30,425 >> O, nors, tai yra taip arti, kaip jis gali gauti. 1567 01:17:30,425 --> 01:17:32,300 Ir, iš tiesų, jei jums atrodo po gaubtu, 1568 01:17:32,300 --> 01:17:37,050 nes mes esame čia, žiūrėdamas 55 ženklų po kablelio, 1569 01:17:37,050 --> 01:17:39,990 mes iš tikrųjų matyti, kad tikrovę. 1570 01:17:39,990 --> 01:17:42,610 Dabar, kaip panaikinti, jei jūs nors matė movie-- 1571 01:17:42,610 --> 01:17:45,780 dauguma iš jūsų tikriausiai haven't-- bet prieš Supermenas 3 kelerius metus, 1572 01:17:45,780 --> 01:17:49,500 Richardas Pryor esmės skolintomis tai Realybė jo bendrovė pavogti daug 1573 01:17:49,500 --> 01:17:53,500 frakcijų ir frakcijų centus, nes draugija, kaip prisimenu, 1574 01:17:53,500 --> 01:17:57,210 tai buvo while-- buvo iš esmės mesti toli nieko, kad netilpo 1575 01:17:57,210 --> 01:17:58,790 į centų sąvoka. 1576 01:17:58,790 --> 01:18:01,480 >> Bet jei jūs pridėti iki visa tai maža, maža, maža numeriai vėl 1577 01:18:01,480 --> 01:18:04,960 ir vėl, ir vėl, jūs galite, kaip jo byla, padaryti gerą pinigų sumą. 1578 01:18:04,960 --> 01:18:08,010 >> Tą pačią idėją apiplėšti naujesnis, bet vis tiek dabar vyresni 1579 01:18:08,010 --> 01:18:10,500 Filmas, pavadintas biurų patalpos, jeigu tame filme vaikinai, 1580 01:18:10,500 --> 01:18:13,501 padarė tą patį, prisukamas jį visiškai baigėsi taip per daug 1581 01:18:13,501 --> 01:18:14,666 pinigų į savo banko sąskaitą. 1582 01:18:14,666 --> 01:18:15,800 Visa tai buvo labai įtartinas. 1583 01:18:15,800 --> 01:18:19,290 Tačiau tuo dienos pabaigoje, netikslumas yra visur aplink mus. 1584 01:18:19,290 --> 01:18:22,240 >> Ir kad, taip pat gali būti Baugina bylą. 1585 01:18:22,240 --> 01:18:25,590 Pasirodo, kad supermenas 3 ir biuro erdvė žemę, ten 1586 01:18:25,590 --> 01:18:28,460 gali būti kai labai reali pasaulio pasekmių 1587 01:18:28,460 --> 01:18:32,290 iš netikslaus realijas atstovavimas duomenų 1588 01:18:32,290 --> 01:18:34,770 kad net mes, žmonės į ši diena nebūtinai 1589 01:18:34,770 --> 01:18:38,230 suprasti taip pat turėtume ar prisiminti, kaip dažnai, kaip turėtume. 1590 01:18:38,230 --> 01:18:42,950 Ir, tiesą sakant, taip klipas nuo tam tikru labai realaus pasaulio išvaizdą 1591 01:18:42,950 --> 01:18:47,730 pasekmių, kas atsitiks, jei nereikia vertiname netikslumą, kad 1592 01:18:47,730 --> 01:18:50,065 gali atsitikti skaičiais atstovavimo. 1593 01:18:50,065 --> 01:18:51,300 >> [Vaizdo įrašų atkuriamų] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers, Mes visi ateiti sutikti kad dažnai nelinksma problemų, kurios 1595 01:18:55,620 --> 01:19:00,310 eiti su, išbandyti klaidų, virusai, ir programinės įrangos trikdžių, 1596 01:19:00,310 --> 01:19:03,130 mažoms kainos mokėti nes patogu. 1597 01:19:03,130 --> 01:19:07,800 Tačiau aukštųjų technologijų ir didelės spartos karinių ir kosmoso programos paraiškas, 1598 01:19:07,800 --> 01:19:12,800 mažiausia problema gali Tebūna išaukštintas į katastrofą. 1599 01:19:12,800 --> 01:19:18,900 >> Birželio 4, 1996, mokslininkai parengė pradėti nepilotuojamas "Ariane 5 raketų. 1600 01:19:18,900 --> 01:19:21,220 Jis nešėsi mokslo palydovai skirta 1601 01:19:21,220 --> 01:19:24,600 nustatyti tiksliai, kaip Žemės magnetinio lauko sąveikauja 1602 01:19:24,600 --> 01:19:27,410 su saulės vėjų. 1603 01:19:27,410 --> 01:19:30,800 Raketa buvo pastatyta Europos kosmoso agentūra, 1604 01:19:30,800 --> 01:19:34,370 ir pakilo iš savo įrenginio nuo Prancūzijos Gvianos priekrantės. 1605 01:19:34,370 --> 01:19:37,540 >> -At Apie 37 sekundžių į skrydis, jie pirmą kartą 1606 01:19:37,540 --> 01:19:39,270 pastebėjau, kad kažkas negerai. 1607 01:19:39,270 --> 01:19:42,250 Purkštukai buvo pakreipti į būdas jie tikrai neturėtų. 1608 01:19:42,250 --> 01:19:46,580 Maždaug 40 sekundžių į skrydžio Akivaizdu, kad transporto priemonė buvo bėdų. 1609 01:19:46,580 --> 01:19:48,850 >> Ir tai, kai jie padarė sprendimas jį sunaikinti. 1610 01:19:48,850 --> 01:19:52,780 Asortimentas saugos pareigūnas, su milžiniškas viduriai, spaudžiamas mygtukas, 1611 01:19:52,780 --> 01:19:58,150 susprogdino raketų, kol jis galėtų tapti pavojaus į visuomenės saugumui. 1612 01:19:58,150 --> 01:20:01,060 >> -Tai Buvo mergautinė kelionė į Ariane 5 d. 1613 01:20:01,060 --> 01:20:03,960 Ir jos naikinimo veiksmai buvo padėkite, nes škvalas 1614 01:20:03,960 --> 01:20:05,822 įdėta į raketą programinės įrangos. 1615 01:20:05,822 --> 01:20:08,280 -The Problema ant Ariane buvo kad ten buvo skaičius, kuris 1616 01:20:08,280 --> 01:20:10,600 reikia 64 bitus išreikšti. 1617 01:20:10,600 --> 01:20:13,590 Ir jie norėjo atsiversti jį į 16-bitų skaičių. 1618 01:20:13,590 --> 01:20:15,610 Jie prielaida, kad skaičius buvo niekada 1619 01:20:15,610 --> 01:20:20,980 būti labai didelis, kad dauguma tų skaičiai 64 bitų skaičius buvo nuliais. 1620 01:20:20,980 --> 01:20:22,440 Jie buvo neteisūs. 1621 01:20:22,440 --> 01:20:25,060 >> -The Vienos nesugebama programa sutikti 1622 01:20:25,060 --> 01:20:29,510 numeris, nurodytas rūšies generuoja kitą buvo tuo, kad nebuvo šaknies. 1623 01:20:29,510 --> 01:20:34,350 Programinės įrangos kūrimas tapo labai brangus dalis naujos technologijos. 1624 01:20:34,350 --> 01:20:38,140 "Ariane" raketa buvo labai sėkmingas, todėl daug programinės įrangos 1625 01:20:38,140 --> 01:20:41,550 sukurta ji taip pat buvo naudojamas Ariane 5 d. 1626 01:20:41,550 --> 01:20:47,940 >> -The Pagrindinė problema buvo tai, kad "Ariane 5 buvo greitesnis, pagreitinto greičiau. 1627 01:20:47,940 --> 01:20:51,450 Ir programinę įrangą, turėjo ne sudarė tai. 1628 01:20:51,450 --> 01:20:55,060 >> -Iš Raketų sunaikinimo buvo didžiulė finansinė katastrofa, 1629 01:20:55,060 --> 01:20:58,790 visi dėl į minutę programinės įrangos klaidos. 1630 01:20:58,790 --> 01:21:01,210 Bet tai buvo ne pirmas laiko duomenų konvertavimo problemos 1631 01:21:01,210 --> 01:21:04,820 buvo kentėjo modernią raketų technologiją. 1632 01:21:04,820 --> 01:21:08,050 >> -in 1991, su pradžios pirmojo Persijos įlankos karo, 1633 01:21:08,050 --> 01:21:10,570 Patriot raketų patyrė panašų natūra 1634 01:21:10,570 --> 01:21:12,800 skaičiaus perskaičiavimo problema. 1635 01:21:12,800 --> 01:21:16,090 Ir kaip rezultatas, 28 žmonės, 28 amerikiečių karių, 1636 01:21:16,090 --> 01:21:19,080 žuvo, o apie 100 žaizdos, 1637 01:21:19,080 --> 01:21:22,780 kai Patriot, kuris turėjo apsaugoti nuo gaunamų scuds, 1638 01:21:22,780 --> 01:21:25,830 nepavyko ugnį raketa. 1639 01:21:25,830 --> 01:21:31,670 >> -Kai Irakas įsiveržė Kuveitas, ir Amerikoje pradėjo Desert Storm 1991 pradžioje, 1640 01:21:31,670 --> 01:21:35,780 Patriotas raketų baterijos buvo dislokuota apsaugoti Saudo Arabija ir Izraeliu 1641 01:21:35,780 --> 01:21:39,230 iš Irako Skadi raketų atakų. 1642 01:21:39,230 --> 01:21:43,810 Patriot yra JAV vidutinio nuotolio paviršiaus oro sistemos, pagaminti 1643 01:21:43,810 --> 01:21:45,770 pagal Raytheon kompanijos. 1644 01:21:45,770 --> 01:21:52,340 >> -Iš Patriot Interceptor dydis pati yra apie maždaug 20 pėdų ilgio. 1645 01:21:52,340 --> 01:21:55,230 Ir ji sveria apie 2000 svarų. 1646 01:21:55,230 --> 01:21:59,320 Ir ji vykdo daug apie galvutę, Manau, kad tai maždaug 150 svarų. 1647 01:21:59,320 --> 01:22:03,930 Ir pati užtaisą yra aukštos sprogmenį, kuris 1648 01:22:03,930 --> 01:22:07,330 turi fragmentus aplink jį. 1649 01:22:07,330 --> 01:22:11,680 Iš galvutės korpusas sukurta veikti kaip šautuvo šratai. 1650 01:22:11,680 --> 01:22:14,110 >> -The Raketų atliekami keturi už konteinerį, 1651 01:22:14,110 --> 01:22:17,130 ir yra gabenami pusiau priekaba. 1652 01:22:17,130 --> 01:22:24,930 >> -The Patriot "priešraketinės gynybos sistemą nueina ne mažiau kaip 20 metų. 1653 01:22:24,930 --> 01:22:28,420 Iš pradžių buvo sukurta kaip oro gynybos raketų 1654 01:22:28,420 --> 01:22:30,720 nušauti priešo lėktuvus. 1655 01:22:30,720 --> 01:22:34,500 Per pirmąjį Persijos įlankos karą, kai, kad karas atėjo kartu, 1656 01:22:34,500 --> 01:22:39,745 armija norėjo jį naudoti numušti scuds, o ne lėktuvais. 1657 01:22:39,745 --> 01:22:43,620 >> Irako oro pajėgų buvo ne tiek daug problemų. 1658 01:22:43,620 --> 01:22:46,670 Bet armija buvo neramu apie scuds. 1659 01:22:46,670 --> 01:22:50,170 Ir taip jie bandė atnaujinti Patriot. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting Priešą raketa keliaujant mach 5 1661 01:22:52,800 --> 01:22:55,830 ketino būti pakankamai sudėtinga. 1662 01:22:55,830 --> 01:22:58,490 Bet kai Patriot buvo skubėjome eksploatuoti, 1663 01:22:58,490 --> 01:23:02,860 armija nieko nežinojo apie Irako modifikacija, kad padarė 1664 01:23:02,860 --> 01:23:05,930 jų scuds beveik neįmanoma pataikyti. 1665 01:23:05,930 --> 01:23:10,740 >> -Kas Atsitiko yra scuds kad ateidavo į buvo nestabili. 1666 01:23:10,740 --> 01:23:11,692 Jie buvo Įtaka. 1667 01:23:11,692 --> 01:23:14,910 Dėl šios priežasties buvo irakiečiai, kad 1668 01:23:14,910 --> 01:23:18,280 gauti 600 kilometrų iš 300 km 1669 01:23:18,280 --> 01:23:21,700 diapazonas raketa, paėmė svorį iš priekinės galvutės. 1670 01:23:21,700 --> 01:23:23,390 Jie padarė užtaisą lengvesni. 1671 01:23:23,390 --> 01:23:27,330 >> Taigi dabar Patriot yra bando ateiti Skadi. 1672 01:23:27,330 --> 01:23:30,230 Ir didžiąją dalį metu, Dauguma laiko, 1673 01:23:30,230 --> 01:23:32,940 tai tiesiog skristi iš Skadi. 1674 01:23:32,940 --> 01:23:37,260 Kai Patriot sistemos operatoriais supratau Patriot praleido savo tikslą, 1675 01:23:37,260 --> 01:23:41,690 jie susprogdino Patriot anketa kovinę galvutę išvengti galimų aukų, jei jis 1676 01:23:41,690 --> 01:23:44,570 buvo leista patenka į žemę. 1677 01:23:44,570 --> 01:23:48,790 >> -Tai Buvo ką dauguma žmonių matė, tie dideli ugnies į dangų, 1678 01:23:48,790 --> 01:23:54,550 ir nesuprato, kaip ašyje Skadi galvučių. 1679 01:23:54,550 --> 01:23:56,630 >> -Although Naktį dangus, patriotai atsirado 1680 01:23:56,630 --> 01:24:00,370 būti sėkmingai sunaikinti Scuds, bent Dhahran, 1681 01:24:00,370 --> 01:24:03,360 ten gali būti ne klaida apie jos veiklą. 1682 01:24:03,360 --> 01:24:07,970 Ten, Patriot radaras sistema neteko stebėti priimamą Skadi, 1683 01:24:07,970 --> 01:24:10,721 ir niekada pradėjo dėl į programinės įrangos trūkumas. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 Tai buvo Izraelio, kuris pirmą kartą atrado , kad kuo ilgiau sistema buvo įjungtas, 1686 01:24:18,940 --> 01:24:22,690 tuo didesnis laiko skirtumas tapo, nes laikrodis įterptųjų 1687 01:24:22,690 --> 01:24:24,810 Šioje sistemoje kompiuteryje. 1688 01:24:24,810 --> 01:24:28,210 >> -About Prieš dvi savaites iki Į Dhahran tragedija, 1689 01:24:28,210 --> 01:24:30,770 Izraelis pranešė, kad Gynybos departamentas 1690 01:24:30,770 --> 01:24:32,590 , kad sistema buvo prarasti laiko. 1691 01:24:32,590 --> 01:24:35,360 Po maždaug aštuonias valandas iš eilės, jie pastebėjo, kad sistema 1692 01:24:35,360 --> 01:24:37,720 buvo vis pastebimai mažiau tiksli. 1693 01:24:37,720 --> 01:24:41,900 Gynybos departamentas atsakė sakau visi Patriot baterijų 1694 01:24:41,900 --> 01:24:44,950 ne palikti sistemas dėl ilgą laiką. 1695 01:24:44,950 --> 01:24:49,160 Jie niekada sakė, kas ilgą laiką was-- aštuonias valandas, 10 valandų, 1000 val. 1696 01:24:49,160 --> 01:24:51,360 Niekas nežinojo. 1697 01:24:51,360 --> 01:24:53,380 >> -The Patriot "baterija dislokuota kareivinėse 1698 01:24:53,380 --> 01:24:58,350 ne Dhahran ir jos trūkumų vidaus laikrodis Buvo daugiau nei 100 valandų 1699 01:24:58,350 --> 01:25:01,670 dėl vasario 25 naktį. 1700 01:25:01,670 --> 01:25:05,917 >> -Tai Stebimi laiko tikslumu apie sekundės dešimtoji. 1701 01:25:05,917 --> 01:25:08,000 Dabar, per sekundės dešimtoji yra įdomi numeris 1702 01:25:08,000 --> 01:25:11,920 nes ji negali būti išreikšta dvejetainiu tiksliai, kuris 1703 01:25:11,920 --> 01:25:16,820 išteklius ji negali būti išreikšta tiksliai į bet kurios šiuolaikinės skaitmeninio kompiuterio. 1704 01:25:16,820 --> 01:25:18,540 Sunku tikėti. 1705 01:25:18,540 --> 01:25:21,210 >> Bet tai naudoti kaip pavyzdys. 1706 01:25:21,210 --> 01:25:23,540 Paimkime skaičių trečdalį. 1707 01:25:23,540 --> 01:25:27,350 Trečdalis negali būti išreikštas dešimtaine tiksliai. 1708 01:25:27,350 --> 01:25:32,080 Trečdalis yra 0,333 vyksta už begalybę. 1709 01:25:32,080 --> 01:25:36,480 >> Nėra jokio būdo, kaip tai padaryti su absoliutus tikslumas po kablelio. 1710 01:25:36,480 --> 01:25:39,560 Štai tiksliai tokios problemos kad atsitiko Patriot. 1711 01:25:39,560 --> 01:25:44,100 Kuo ilgiau sistema bėgo, The blogiau tapo laikas klaida. 1712 01:25:44,100 --> 01:25:48,890 >> -Po 100 valandų operaciją, klaida metu buvo tik apie trečdalis 1713 01:25:48,890 --> 01:25:50,600 sekundės. 1714 01:25:50,600 --> 01:25:54,210 Bet kalbant apie skirtomis raketa keliaujant mach 5 1715 01:25:54,210 --> 01:25:58,710 ji lėmė sekimo paklaida daugiau nei 600 metrų. 1716 01:25:58,710 --> 01:26:02,120 Būtų lemtinga klaida kariams apie tai, ką 1717 01:26:02,120 --> 01:26:08,940 atsitiko yra Skadi paleidimas buvo aptikta išankstinio perspėjimo palydovai 1718 01:26:08,940 --> 01:26:12,860 ir jie žinojo, kad Skadi buvo ateina jų bendrą kryptį. 1719 01:26:12,860 --> 01:26:15,320 Jie nežinojo, kur ji atėjo. 1720 01:26:15,320 --> 01:26:18,250 >> -Tai Buvo dabar iki radaro komponentas Patriot sistemos 1721 01:26:18,250 --> 01:26:23,190 ginti Dhahranas surasti ir išlaikyti kelio nuo gaunamus priešų raketos. 1722 01:26:23,190 --> 01:26:24,609 >> -The Radaras buvo labai protingas. 1723 01:26:24,609 --> 01:26:26,650 Tai iš tikrųjų būtų sekti Iš Skadi pozicija, 1724 01:26:26,650 --> 01:26:30,350 ir tada numatyti, kur jis tikriausiai būtų kitą kartą radaro siunčiami 1725 01:26:30,350 --> 01:26:31,420 impulsas iš. 1726 01:26:31,420 --> 01:26:33,110 Tai buvo vadinama asortimentas vartai. 1727 01:26:33,110 --> 01:26:37,660 >> -Tada, Kai į "Patriot" nusprendžia pakankamai laiko turi 1728 01:26:37,660 --> 01:26:42,450 praėjo grįžti ir patikrinti kitą vieta šio aptikto objekto, 1729 01:26:42,450 --> 01:26:43,600 jis eina atgal. 1730 01:26:43,600 --> 01:26:48,650 Taigi, kai jis grįžo į tą vieta, tai tada nemato objektą. 1731 01:26:48,650 --> 01:26:52,160 Ir ji nusprendžia, kad nebuvo objektas, tai buvo klaidinga aptikimo, 1732 01:26:52,160 --> 01:26:53,930 ir lašai takelį. 1733 01:26:53,930 --> 01:26:57,030 >> -The Priimamojo Skadi dingo iš radaro ekrano. 1734 01:26:57,030 --> 01:27:00,260 vėliau ir sekundes, ją pateko į kareivines. 1735 01:27:00,260 --> 01:27:06,150 Skadi žuvo 28 ir buvo paskutinis viena kūrenama per pirmąjį Persijos įlankos karą. 1736 01:27:06,150 --> 01:27:11,960 >> Tragiška, atnaujinta programinė įranga atvyko Dhahran kitą dieną. 1737 01:27:11,960 --> 01:27:14,930 Programinė įranga škvalas turėjo buvo fiksuota, uždarymas 1738 01:27:14,930 --> 01:27:19,806 vienas skyrius neramus istorija Patriot raketos. 1739 01:27:19,806 --> 01:27:20,729 >> [Vaizdo įrašų atkuriamų] 1740 01:27:20,729 --> 01:27:23,520 David J. Malan: Taigi visa tai, kad pasakyti, kad šių perpildymo problemas 1741 01:27:23,520 --> 01:27:25,860 ir visi netikslumai yra labai reali. 1742 01:27:25,860 --> 01:27:26,920 Taigi, kaip mes ten patekome? 1743 01:27:26,920 --> 01:27:28,895 Mes pradėjome su tik kalbame apie printf. 1744 01:27:28,895 --> 01:27:31,270 Vėlgi, tai funkcija, kuri spausdina kažką ekrane, 1745 01:27:31,270 --> 01:27:33,450 ir mes po to pristatė keletas kitų funkcijų 1746 01:27:33,450 --> 01:27:34,945 iš vadinamojo CS50 bibliotekoje. 1747 01:27:34,945 --> 01:27:36,910 Ir mes toliau pamatyti tai laiku. 1748 01:27:36,910 --> 01:27:40,760 Ir mes, ypač, naudojamas get eilutę, ir gauti int, ir dabar taip pat gauti plūdę, 1749 01:27:40,760 --> 01:27:44,410 ir dar kiti vis dar susiduriame su ir naudoti save prieš ilgas. 1750 01:27:44,410 --> 01:27:47,220 >> Bet kartais turi mes jau matėme, kad reikia 1751 01:27:47,220 --> 01:27:50,520 saugoti, kas tas funkcijas ranka atgal? 1752 01:27:50,520 --> 01:27:52,920 Jie perduoti mums atgal eilutę, arba LC, arba flotacinio. 1753 01:27:52,920 --> 01:27:56,070 Ir kartais mums reikia įdėti, kad eilutė, ar INT, ar plūdė, kažkur. 1754 01:27:56,070 --> 01:28:00,100 >> Ir saugoti tuos dalykus, prisiminti tik kaip ir nulio ", mes turime kintamuosius. 1755 01:28:00,100 --> 01:28:03,260 Tačiau skirtingai nei nulio, C turime faktinius tipai 1756 01:28:03,260 --> 01:28:05,530 iš variables-- duomenų tipai, daugiau generally-- 1757 01:28:05,530 --> 01:28:08,640 tarp jų eilutė, int A plūduriuoti, ir šie kiti dar. 1758 01:28:08,640 --> 01:28:12,321 >> Ir todėl, kai mes pareiškiame kintamuosius C, mes turime pripažinti mūsų duomenų tipus. 1759 01:28:12,321 --> 01:28:14,820 Tai nėra kažkas, mes daryti vėliau semestro 1760 01:28:14,820 --> 01:28:16,810 kaip mes pereiti į kitas kalbas. 1761 01:28:16,810 --> 01:28:19,610 Bet dabar, mes turime į iš anksto priori 1762 01:28:19,610 --> 01:28:24,370 paaiškinti prie kompiuterio, kokio tipo kintamojo mes norime, kad ji mums duoda. 1763 01:28:24,370 --> 01:28:27,290 >> Dabar, tuo tarpu, spausdinti tie rūšių duomenų tipų, 1764 01:28:27,290 --> 01:28:29,570 mes turime pasakyti printf, ko tikėtis. 1765 01:28:29,570 --> 01:28:32,450 Ir mes matėme proc s stygos, ir procentai I sveikieji skaičiai, 1766 01:28:32,450 --> 01:28:33,790 ir keli kiti jau. 1767 01:28:33,790 --> 01:28:37,237 Ir tie, kurie paprasčiausiai reikalavimai už vizualinio pateikimo 1768 01:28:37,237 --> 01:28:38,070 tos informacijos. 1769 01:28:38,070 --> 01:28:42,080 >> Ir kiekvienas iš jų gali būti iš tiesų Parametrizuotieji arba nežymiai tam tikru būdu, 1770 01:28:42,080 --> 01:28:45,370 jei norite toliau kontroliuoti produkcijos tipą, kuris jums. 1771 01:28:45,370 --> 01:28:49,604 Ir, iš tiesų, paaiškėja, kad ne tik yra ten Backslash N naują eilutę. 1772 01:28:49,604 --> 01:28:52,520 Yra kažkas pavadino Backslash R už vežimo grįžti, kuris 1773 01:28:52,520 --> 01:28:54,360 yra labiau panašus į senosios mokyklos rašomųjų mašinėlių, 1774 01:28:54,360 --> 01:28:57,690 ir taip pat langai naudojamas daugelį metų. 1775 01:28:57,690 --> 01:28:59,690 >> Yra Backslash t skirtukus. 1776 01:28:59,690 --> 01:29:03,170 Pasirodo, kad jei norite, kad dvigubas citata viduje eilutę, 1777 01:29:03,170 --> 01:29:05,000 Prisiminkite, kad mes naudojamas dvigubas citata dvigubai 1778 01:29:05,000 --> 01:29:07,900 citata kairėje ir dešinėje baigiasi mūsų stygas iki šiol. 1779 01:29:07,900 --> 01:29:09,420 Tai, atrodo, painioja dalykus. 1780 01:29:09,420 --> 01:29:12,503 >> Jei norite įdėti dvigubą citata iš administracine arba string-- ir, tiesą sakant viduryje, 1781 01:29:12,503 --> 01:29:13,670 tai paini pamatyti. 1782 01:29:13,670 --> 01:29:17,120 Ir todėl jūs turite pabėgti, taip sakant, dvigubos kabutės su kažkuo 1783 01:29:17,120 --> 01:29:18,860 patinka, tiesiog, backslash dvigubos kabutės. 1784 01:29:18,860 --> 01:29:20,230 Ir yra keletas kitų dar. 1785 01:29:20,230 --> 01:29:24,540 Ir mes pamatysime daugiau tų faktinio naudojimo prieš ilgas. 1786 01:29:24,540 --> 01:29:27,930 >> Taigi leiskite dabar pereiti nuo duomenys, ir atstovavimas, 1787 01:29:27,930 --> 01:29:30,820 ir aritmetines operacijas, visa kurios davė mums šiek tiek pastatą 1788 01:29:30,820 --> 01:29:32,070 blokai, su kuriomis groti. 1789 01:29:32,070 --> 01:29:34,481 Bet dabar tegul iš tikrųjų duoti mums žodyno poilsio 1790 01:29:34,481 --> 01:29:36,230 kad mes jau Praėjusią savaitę su Scratch 1791 01:29:36,230 --> 01:29:39,350 imant pažvelgti kita stato į C-- ne visi iš jų. 1792 01:29:39,350 --> 01:29:41,680 Tačiau idėjos mes Apie pamatyti tikrai tik 1793 01:29:41,680 --> 01:29:45,610 pabrėžti vertimą iš viena kalba, įbrėžimams, į kitą C. 1794 01:29:45,610 --> 01:29:48,470 >> Ir laikui bėgant, mes pasiimti daugiau įrankių mūsų priemonių rinkinį, 1795 01:29:48,470 --> 01:29:49,820 taip sakant, sintaksiškai. 1796 01:29:49,820 --> 01:29:54,190 Ir, tiesą sakant, jūs pamatysite, kad idėjos dabar yra gana pažįstamas iš praeitą savaitę. 1797 01:29:54,190 --> 01:29:55,200 Taigi leiskite tai padaryti. 1798 01:29:55,200 --> 01:29:58,870 >> Vykime į priekį ir pakelti programą kad iš tikrųjų naudoja kai išraiškas, 1799 01:29:58,870 --> 01:30:00,720 Būlio išraiška. 1800 01:30:00,720 --> 01:30:02,810 Leiskite man eiti į priekį čia ir sukurti naują failą. 1801 01:30:02,810 --> 01:30:06,090 Aš tai vadina condition.c. 1802 01:30:06,090 --> 01:30:09,350 >> Leiskite man eiti į priekį ir įtraukti CS50 biblioteką. 1803 01:30:09,350 --> 01:30:12,640 Ir leiskite man eiti į priekį ir taip pat standartinis IO.h mūsų funkcijų, 1804 01:30:12,640 --> 01:30:14,690 ir printf, ir daugiau atitinkamai. 1805 01:30:14,690 --> 01:30:18,900 Leiskite man duoti sau, kad Standartiniai int main negaliojančiu, kurio paaiškinimas mes 1806 01:30:18,900 --> 01:30:20,360 grįžti į ateityje. 1807 01:30:20,360 --> 01:30:23,820 >> Dabar leiskite man eiti į priekį ir suteikti aš int per get tarpt. 1808 01:30:23,820 --> 01:30:25,970 Tada leiskite man eiti į priekį ir tai padaryti. 1809 01:30:25,970 --> 01:30:30,150 Aš noriu pasakyti, jei i less-- tegul atskirti teigiamas, neigiamas, 1810 01:30:30,150 --> 01:30:31,260 arba nulines vertes. 1811 01:30:31,260 --> 01:30:36,630 >> Taigi, jei i yra mažiau nei nulis, leiskite man tiesiog ši programa tiesiog pasakyti, 1812 01:30:36,630 --> 01:30:42,370 neigiamas, Backslash N, kita jei i yra didesnis už nulį. 1813 01:30:42,370 --> 01:30:47,030 Dabar aš, žinoma, ketina pasakyti printf teigiamą, backslash n. 1814 01:30:47,030 --> 01:30:50,690 Ir tada dar if-- galėčiau tai padaryti. 1815 01:30:50,690 --> 01:30:53,410 >> Aš galėčiau padaryti, jei aš lygus 0. 1816 01:30:53,410 --> 01:30:55,840 Bet aš būčiau priėmimo metu bent vienas jau klaida. 1817 01:30:55,840 --> 01:30:59,480 Prisiminkite, kad lygybės ženklas yra nėra lygūs, nes mes, žmonės jį žinome. 1818 01:30:59,480 --> 01:31:01,010 >> Bet tai perleidimas operatorius. 1819 01:31:01,010 --> 01:31:05,640 Ir mes nenorime imtis 0 Į teisė ir įdėti jį į i kairėje. 1820 01:31:05,640 --> 01:31:11,810 Taigi, norint išvengti šios painiavos, arba gal netinkamas lygybės ženklą, 1821 01:31:11,810 --> 01:31:14,740 žmonės nusprendė prieš keletą metų kad daugeliu programavimo kalbų 1822 01:31:14,740 --> 01:31:18,000 kai norite patikrinti lygybės tarp kairės ir dešinės, 1823 01:31:18,000 --> 01:31:19,635 jūs iš tikrųjų naudoti lygus lygių. 1824 01:31:19,635 --> 01:31:21,010 Taigi jūs nukentėjo lygybės ženklą du kartus. 1825 01:31:21,010 --> 01:31:25,600 Kai norite priskirti iš dešinės į kairę, naudokite vieną lygybės ženklą. 1826 01:31:25,600 --> 01:31:29,360 Taigi, mes galime padaryti this-- kitur jei aš lygus lygus nuliui. 1827 01:31:29,360 --> 01:31:31,710 >> tada galėčiau eiti ir atidaryti savo garbanotas petnešos, 1828 01:31:31,710 --> 01:31:36,087 ir pasakyti, printf 0, Backslash n padaryta. 1829 01:31:36,087 --> 01:31:38,170 Bet atsiminkite, kaip jie šakės kelyje gali dirbti. 1830 01:31:38,170 --> 01:31:39,836 Ir, tikrai, tiesiog galvoti apie logika. 1831 01:31:39,836 --> 01:31:41,510 i yra skaičius. 1832 01:31:41,510 --> 01:31:43,320 Tai sveikas, specialiai. 1833 01:31:43,320 --> 01:31:48,600 Ir tai reiškia, kad jis bus mažiau už 0 arba didesnė už 0, arba 0. 1834 01:31:48,600 --> 01:31:51,600 Taigi yra natūra tai numanoma numatytąją atveju. 1835 01:31:51,600 --> 01:31:54,920 >> Ir taip galėtume, kaip ir Įbrėžimams, apsieiti su kita, jei 1836 01:31:54,920 --> 01:31:55,747 ir tiesiog pasakyti kitur. 1837 01:31:55,747 --> 01:31:57,830 Logiškai mąstant, jei Jums programuotojas žino, yra tik 1838 01:31:57,830 --> 01:32:01,635 trys kibirai, į kurią scenarijus fall-- pirmas, 1839 01:32:01,635 --> 01:32:03,510 antra, ar trečioji šiame case-- ne 1840 01:32:03,510 --> 01:32:07,100 vargintis pridedant papildomą tikslumą ir papildomas logika ten. 1841 01:32:07,100 --> 01:32:09,690 Tiesiog eiti į priekį su Numatytasis atveju iš kitur. 1842 01:32:09,690 --> 01:32:11,950 >> Dabar galime eiti į priekį Įrašę šią, kad 1843 01:32:11,950 --> 01:32:15,760 sąlygos dot velniop conditions-- nėra labai vartotojo sąsaja, 1844 01:32:15,760 --> 01:32:18,914 nes aš nesu paskatino vartotojas, kaip jau minėjau anksčiau. 1845 01:32:18,914 --> 01:32:19,580 Bet tai gerai. 1846 01:32:19,580 --> 01:32:20,454 Mes keep it simple. 1847 01:32:20,454 --> 01:32:21,890 Pabandykime skaičių 42. 1848 01:32:21,890 --> 01:32:23,240 Ir tai teigiamas. 1849 01:32:23,240 --> 01:32:26,120 Pabandykime numerį neigiamas 42, neigiamas. 1850 01:32:26,120 --> 01:32:28,244 >> Pabandykime vertę 0. 1851 01:32:28,244 --> 01:32:29,160 Ir, iš tiesų, ji veikia. 1852 01:32:29,160 --> 01:32:33,900 Dabar, pamatysite su problemomis prieš ilgio, testavimo dalykų tris kartus, 1853 01:32:33,900 --> 01:32:34,980 tikriausiai nepakanka. 1854 01:32:34,980 --> 01:32:37,438 Jūs tikriausiai norite išbandyti kai Didesnės numeriai, kai mažesni 1855 01:32:37,438 --> 01:32:40,520 numeriai, kai kampiniai atvejais, mes ateiti į juos apibūdinti. 1856 01:32:40,520 --> 01:32:42,500 >> Bet dabar, tai yra gana paprasta programa. 1857 01:32:42,500 --> 01:32:45,160 Ir aš esu gana įsitikinęs, logiškai, kad jis patenka į tris atvejus. 1858 01:32:45,160 --> 01:32:49,360 Ir iš tiesų, nors mes tiesiog orientuota į potencialius praradimas 1859 01:32:49,360 --> 01:32:53,480 netikslumu ir perpildymo, į Realybė kur daugelis CS50 problemas, 1860 01:32:53,480 --> 01:32:56,000 mes neketiname jaudintis apie, visą laiką, 1861 01:32:56,000 --> 01:32:59,050 tie perpildymo problemos ir netikslumas, nes, iš tiesų, C, 1862 01:32:59,050 --> 01:33:01,889 tai tikrai ne viskas, kad lengva išvengti šių dalykų. 1863 01:33:01,889 --> 01:33:04,180 Jei norite suskaičiuoti iki didesnis ir didesnis, ir daugiau, 1864 01:33:04,180 --> 01:33:07,510 paaiškėja, yra būdų jums galima naudoti, dažnai įtraukiant dalykus, vadinamus 1865 01:33:07,510 --> 01:33:11,240 bibliotekos, kolekcijos kodą, kad kiti žmonės rašė, kad galite naudoti, 1866 01:33:11,240 --> 01:33:13,910 ir kitomis kalbomis, pavyzdžiui, Java ir kiti, iš tikrųjų 1867 01:33:13,910 --> 01:33:15,800 padaryti daug lengviau skaičiuoti dar didesnis. 1868 01:33:15,800 --> 01:33:19,810 Taigi ji tikrai yra kai kurie iš šių pavojų iš naudojamą kalbą funkcija. 1869 01:33:19,810 --> 01:33:22,710 Ir per ateinančias savaites, mes pamatyti, kaip pavojingą C tikrai 1870 01:33:22,710 --> 01:33:24,950 gali būti, jei nenorite naudoti tinkamai. 1871 01:33:24,950 --> 01:33:27,610 Bet iš ten, ir su Python ir "JavaScript", bus 1872 01:33:27,610 --> 01:33:32,620 mes sluoksnis keletą papildomų apsaugų, ir paleisti mažiau iš tų pavojų. 1873 01:33:32,620 --> 01:33:35,820 >> Taigi padarykime šiek tiek daugiau įdomus logika mūsų programoje. 1874 01:33:35,820 --> 01:33:39,110 Taigi leiskite man eiti į priekį ir kurti programa, vadinama Loginiai 1875 01:33:39,110 --> 01:33:43,804 tiesiog, kad aš galiu žaisti su kai Tikrasis logika, logical.c. 1876 01:33:43,804 --> 01:33:46,870 Aš tiesiog nukopijuokite ir įklijuokite kai Kodas iš anksčiau, kad aš grįšiu 1877 01:33:46,870 --> 01:33:49,950 į šį gražus atspirties taškas. 1878 01:33:49,950 --> 01:33:53,980 >> Leiskite man šį kartą padaryti char C. Aš tikiu ketina suteikti jai iš C vardą 1879 01:33:53,980 --> 01:33:58,510 tik todėl, kad tradicinių, gauti simbolį iš vartotojo. 1880 01:33:58,510 --> 01:34:00,730 Ir tegul apsimeta kaip Aš įgyvendinimo dalis 1881 01:34:00,730 --> 01:34:04,130 tos Rm programa, pašalinti programa prieš tai paskatino vartotoją 1882 01:34:04,130 --> 01:34:05,400 pašalinti failą. 1883 01:34:05,400 --> 01:34:06,750 Kaip mes galime tai padaryti? 1884 01:34:06,750 --> 01:34:11,090 >> Aš noriu pasakyti, jei C yra lygi lygus, citata citatos pabaiga, 1885 01:34:11,090 --> 01:34:16,304 Y, tada aš ruošiuosi daryti prielaidą, kad vartotojas pasirinko taip. 1886 01:34:16,304 --> 01:34:17,470 Aš tik ketina spausdinti taip. 1887 01:34:17,470 --> 01:34:19,440 Jei jis iš tikrųjų buvo raštu pašalinimo programa, 1888 01:34:19,440 --> 01:34:21,420 galėtume pašalinti failą daugiau eilučių kodo. 1889 01:34:21,420 --> 01:34:22,461 Bet mes keep it simple. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> Else if c lygu lygu n-- o dabar čia, aš ruošiuosi pasakyti, 1892 01:34:31,250 --> 01:34:32,980 vartotojas turi reiškė, Nr. 1893 01:34:32,980 --> 01:34:34,360 Ir tada kitas, žinote ką? 1894 01:34:34,360 --> 01:34:36,200 Aš nežinau, ką dar vartotojas ketina įvesti. 1895 01:34:36,200 --> 01:34:38,533 Taigi, aš tiesiog norėčiau pasakyti, kad kad yra klaida, nepriklausomai 1896 01:34:38,533 --> 01:34:40,070 jis ar ji iš tikrųjų įvedėte. 1897 01:34:40,070 --> 01:34:41,180 >> Taigi, kas čia vyksta? 1898 01:34:41,180 --> 01:34:44,530 Yra esminis skirtumas palyginti, ką aš padariau praeityje. 1899 01:34:44,530 --> 01:34:49,300 Dvigubas kabutes, kabutes, dvigubas citatos, ir dar, Viengubomis kabutėmis, 1900 01:34:49,300 --> 01:34:50,170 Viengubomis kabutėmis. 1901 01:34:50,170 --> 01:34:52,860 Pasirodo, C, kad kai norite parašyti eilutę, 1902 01:34:52,860 --> 01:34:56,680 jums naudoti kabutes, kaip mes naudoju visą šį laiką su printf. 1903 01:34:56,680 --> 01:35:02,030 >> Bet jei norite susidoroti su tik vienas simbolis, vadinamasis simbolis, 1904 01:35:02,030 --> 01:35:03,780 tada jūs iš tikrųjų naudoti kabutes. 1905 01:35:03,780 --> 01:35:05,450 Tie iš jūsų, kurie jau užprogramuotas anksčiau, galbūt ne 1906 01:35:05,450 --> 01:35:07,850 turėjo jaudintis atskirti tam tikromis kalbomis. 1907 01:35:07,850 --> 01:35:09,450 C, ji dalykas. 1908 01:35:09,450 --> 01:35:12,560 Ir todėl, kai aš gauti char ir aš noriu palyginti, kad char naudojant lygu 1909 01:35:12,560 --> 01:35:18,350 lygus Some Like Y arba N raide, aš, Iš tiesų, reikia turėti Viengubomis kabutėmis. 1910 01:35:18,350 --> 01:35:19,770 >> Dabar galime eiti į priekį ir tai padaryti. 1911 01:35:19,770 --> 01:35:26,180 Vykime į priekį ir padarysiu loginiai taškas velniop logiška. 1912 01:35:26,180 --> 01:35:27,305 Ir dabar aš raginami. 1913 01:35:27,305 --> 01:35:30,638 Taigi, matyt, geriau naudoti patirtis iš tikrųjų man pasakyti, ką daryti čia. 1914 01:35:30,638 --> 01:35:33,030 Bet aš ruošiuosi tik aklai pasakyti Y taip, gerai, gražus. 1915 01:35:33,030 --> 01:35:35,780 >> Leiskite paleisti jį iš naujo, n ne, gražus. 1916 01:35:35,780 --> 01:35:39,610 Tarkime, pavyzdžiui, tam tikrų žmonių, aš žinau, mano kepurės lock yra pernelyg dažnai. 1917 01:35:39,610 --> 01:35:43,740 Taigi darau kapitalo Y atvykti, klaidą. 1918 01:35:43,740 --> 01:35:46,130 Gerai, tai ne ką aš laukiu. 1919 01:35:46,130 --> 01:35:48,170 Iš tiesų, kompiuteris daro pažodžiui, ką 1920 01:35:48,170 --> 01:35:51,794 Pasakiau jai do-- patikrinti mažosiomis raidėmis y ir mažosiomis raidėmis N. 1921 01:35:51,794 --> 01:35:53,960 Tai neturi jaustis kaip gera vartotojo patirtį, nors. 1922 01:35:53,960 --> 01:35:59,010 Leiskite paklausti, ir priimti arba mažosiomis raidėmis, arba didžiosios. 1923 01:35:59,010 --> 01:36:02,090 Taigi paaiškėja, galbūt norėsite pasakyti kažką panašaus į nulio, 1924 01:36:02,090 --> 01:36:08,150 kaip pažodžiui arba C lygu lygus kapitalo vieną cituojamą m. 1925 01:36:08,150 --> 01:36:11,400 Pasirodo, C neturi tai pažodinis reikšminį žodį arba. 1926 01:36:11,400 --> 01:36:12,880 >> Bet ji turi du vertikalūs stulpeliai. 1927 01:36:12,880 --> 01:36:15,463 Turite turėti Shift paprastai, jei jūs naudojate JAV klaviatūra, 1928 01:36:15,463 --> 01:36:18,910 ir paspauskite vertikalią juostą raktas aukščiau grąžą raktu. 1929 01:36:18,910 --> 01:36:22,410 Bet tai vertikali juosta vertikali juosta reiškia, arba. 1930 01:36:22,410 --> 01:36:26,220 >> Jei, priešingai, norėjome pasakyti ir, kaip ir nulio, 1931 01:36:26,220 --> 01:36:28,180 mes galime padaryti ampersendo konjunkcijos. 1932 01:36:28,180 --> 01:36:31,330 Tai daro ne logine prasme čia nes žmogus negalėjo 1933 01:36:31,330 --> 01:36:37,110 įvedėte tiek y ir mažosiomis raidėmis Y ir kapitalo Metai kaip to paties pobūdžio. 1934 01:36:37,110 --> 01:36:39,470 Taigi ar tai, ką mes ketiname čia. 1935 01:36:39,470 --> 01:36:46,280 >> Taigi, jei aš tai padaryti abiejose vietose arba C lygi lygu kapitalo N dabar pakartotas, 1936 01:36:46,280 --> 01:36:49,390 markę logiška, pakartotas logiška. 1937 01:36:49,390 --> 01:36:51,200 Dabar galiu įrašyti m. 1938 01:36:51,200 --> 01:36:53,920 Ir aš galiu tai padaryti dar kartą su kapitalo Y arba kapitalo N. 1939 01:36:53,920 --> 01:36:56,630 Ir galėčiau pridėti papildomas deriniai ramiai. 1940 01:36:56,630 --> 01:36:58,810 >> Taigi tai yra logiška programa, kiek dabar 1941 01:36:58,810 --> 01:37:01,940 Aš patikrinti logiškai už ši vertė arba ši vertė. 1942 01:37:01,940 --> 01:37:06,420 Ir aš neturiu, būtinai sugalvoti dar du IF arba dar IFS. 1943 01:37:06,420 --> 01:37:09,960 Aš iš tikrųjų galite sujungti kai kurie iš susijusios logika kartu tokiu būdu. 1944 01:37:09,960 --> 01:37:11,950 Taigi tai būtų geresnis sukurta nei tiesiog 1945 01:37:11,950 --> 01:37:17,490 sakydamas: Jei c yra lygus mažąją y, spausdinti taip, kitur Jei c yra lygus kapitalo Y, 1946 01:37:17,490 --> 01:37:20,074 spausdinti taip, kitur Jei c yra lygus lower-- kitaip tariant, 1947 01:37:20,074 --> 01:37:21,990 Jums nereikia turėti vis daugiau ir daugiau šakų. 1948 01:37:21,990 --> 01:37:28,840 Galite derinti kai kurių lygiavertis filialai Logiškai mąstant, kaip šiuo būdu. 1949 01:37:28,840 --> 01:37:34,150 >> Taigi leiskite pažvelgti tik vienas galutinis komponentas, vienas galutinis konstruktas, 1950 01:37:34,150 --> 01:37:34,847 kad C leidžia. 1951 01:37:34,847 --> 01:37:36,930 Ir mes grįžti į ateitis kiti vis dar. 1952 01:37:36,930 --> 01:37:41,400 Ir tada mes sudaryti, žiūrėdamas ne ne su code-- teisingumą 1953 01:37:41,400 --> 01:37:46,070 gauti kodą work-- bet dizainas kodo ir pasodinsi tas sėklas anksti. 1954 01:37:46,070 --> 01:37:51,337 >> Taigi leiskite man eiti į priekį ir atverti naują failą čia. 1955 01:37:51,337 --> 01:37:51,920 Zinai ka? 1956 01:37:51,920 --> 01:37:54,450 Aš ruošiuosi vėl įgyvendinti kad pati programa, 1957 01:37:54,450 --> 01:37:55,940 tačiau naudojant kitą konstruktą. 1958 01:37:55,940 --> 01:38:00,110 >> Taigi leiskite man greitai duoti save prieiga įtraukti CS50.h 1959 01:38:00,110 --> 01:38:04,150 už CS50 bibliotekoje, standartinis Io.h už printf. 1960 01:38:04,150 --> 01:38:06,510 Duok man mano int main negaliojančiu. 1961 01:38:06,510 --> 01:38:09,310 Ir tada per čia, leiskite man eiti į priekį ir tai padaryti. 1962 01:38:09,310 --> 01:38:12,010 >> Char c gauna gauti char, kaip anksčiau. 1963 01:38:12,010 --> 01:38:16,770 Ir aš ruošiuosi naudoti naują konstruktą now-- pereiti, kokiu charakterio? 1964 01:38:16,770 --> 01:38:19,820 Taigi jungiklis yra lyg perjungimo traukinio takelius. 1965 01:38:19,820 --> 01:38:22,070 Arba, iš tikrųjų, ji yra rūšies IF kitur, jei kitur, jei 1966 01:38:22,070 --> 01:38:23,980 bet parašyta šiek tiek kitaip. 1967 01:38:23,980 --> 01:38:25,490 >> Jungiklis atrodo taip. 1968 01:38:25,490 --> 01:38:29,060 Jūs turite pereiti, o kas tada raidės arba skaitmens norite ieškoti, 1969 01:38:29,060 --> 01:38:32,000 tada kai garbanotas petnešos patinka Nulio, tik pasakyti tai padaryti stuff. 1970 01:38:32,000 --> 01:38:33,480 Ir tada jūs turite skirtingus atvejus. 1971 01:38:33,480 --> 01:38:34,830 >> Jūs negalite naudoti ar ir kitur. 1972 01:38:34,830 --> 01:38:37,050 Jūs tiesiog naudoti žodį bylą. 1973 01:38:37,050 --> 01:38:38,790 Ir jūs sakyčiau kažką panašaus į tai. 1974 01:38:38,790 --> 01:38:43,820 >> Taigi į mažosiomis y atveju arba kapitalo Y atveju 1975 01:38:43,820 --> 01:38:47,350 eiti į priekį ir atsispausdinti Taip. 1976 01:38:47,350 --> 01:38:49,020 Ir tada išeiti iš jungiklio. 1977 01:38:49,020 --> 01:38:49,580 Viskas. 1978 01:38:49,580 --> 01:38:50,880 Mes padaryti. 1979 01:38:50,880 --> 01:38:57,270 >> Else if, taip sakant, mažesnis Byla N arba kapitalo N 1980 01:38:57,270 --> 01:39:02,560 tada eiti į priekį ir spausdinti iš ne, ir tada pertrauka. 1981 01:39:02,560 --> 01:39:08,022 Else-- ir šios rūšies yra Numatytasis atveju indeed-- printf error-- 1982 01:39:08,022 --> 01:39:10,980 ir tiesiog gera priemonė, nors Logiškai mąstant, tai pertrauka nebūtina 1983 01:39:10,980 --> 01:39:12,896 nes mes pabaigoje jungiklio bet kokiu atveju, 1984 01:39:12,896 --> 01:39:14,520 Aš dabar išeities iš jungiklio. 1985 01:39:14,520 --> 01:39:16,280 Taigi, tai atrodo šiek tiek kitokia. 1986 01:39:16,280 --> 01:39:18,272 >> Bet, logiškai, tai tikrai lygiaverčiai. 1987 01:39:18,272 --> 01:39:19,980 Ir kodėl gi jūs naudojate vienas per kitą? 1988 01:39:19,980 --> 01:39:23,220 Kartais, tiesiog asmeninio skonio, kartais estetika, 1989 01:39:23,220 --> 01:39:25,420 jei aš pažiūrėjus į tai dabar yra kažkas 1990 01:39:25,420 --> 01:39:27,510 galima pasakyti, kad skaitomumas šį kodą. 1991 01:39:27,510 --> 01:39:30,690 Aš turiu galvoje, niekada omenyje tai, kad ši kodas yra nauja daugelis iš mūsų į kambarį. 1992 01:39:30,690 --> 01:39:33,515 >> Bet tai tiesiog rūšies yra gana. 1993 01:39:33,515 --> 01:39:37,760 Jūs matote mažosiomis raidėmis y kapitalo Y, mažoji n kapitalo N. nutylėjimą, 1994 01:39:37,760 --> 01:39:40,150 tai tiesiog rūšies šuoliai į tave taip, 1995 01:39:40,150 --> 01:39:42,200 kad, be abejo, gal ankstesnis pavyzdys 1996 01:39:42,200 --> 01:39:45,780 su IFS, ir vertikalių strypų, ir kitur IFS, gali neturėti. 1997 01:39:45,780 --> 01:39:51,600 Taigi tai tikrai priklauso nuo asmeninio nesvarbu pasirinkimas, tikrai, ar skaitomumas, 1998 01:39:51,600 --> 01:39:52,360 kodo. 1999 01:39:52,360 --> 01:39:58,230 >> Bet kalbant apie funkcionalumą, leiskite man eiti į priekį ir padaryti jungiklis, dot velniop 2000 01:39:58,230 --> 01:40:05,830 jungiklis, o dabar tipo mažosiomis y, kapitalo Y mažosios n kapitalo N 2001 01:40:05,830 --> 01:40:09,250 Dovydas bandykite dar kartą, nes tai ne vienas simbolis. 2002 01:40:09,250 --> 01:40:12,050 Darom x, klaidą, kaip ir tikėtasi. 2003 01:40:12,050 --> 01:40:15,640 Ir logically-- ir tai yra kažkas Norėčiau paskatinti į general-- net 2004 01:40:15,640 --> 01:40:17,790 nors mes tik įbrėžimas paviršius kai kurie iš šių funkcijų. 2005 01:40:17,790 --> 01:40:20,560 >> Ir tai gali būti ne akivaizdu, kai jums Būk susėsti prie klaviatūros, 2006 01:40:20,560 --> 01:40:21,370 Kaip tai veikia? 2007 01:40:21,370 --> 01:40:22,240 Ką tai daryti? 2008 01:40:22,240 --> 01:40:25,630 Gražus dalykas, apie kurių nešiojamas ar stalinis, ar prieigos 2009 01:40:25,630 --> 01:40:29,290 prie kompiuterio su kompiliatorių, ir su kodiniu redaktorius panašaus į tai, 2010 01:40:29,290 --> 01:40:32,990 yra galima beveik visada atsakyti į šiuos Klausimai sau, tiesiog bando. 2011 01:40:32,990 --> 01:40:36,570 >> Pavyzdžiui, jei retorinis klausimas po ranka buvo, 2012 01:40:36,570 --> 01:40:39,540 kas atsitiks, jei pamiršti Jūsų pertrauka teiginiais? 2013 01:40:39,540 --> 01:40:41,400 Kuris iš tiesų yra labai dažnas dalykas daryti, 2014 01:40:41,400 --> 01:40:43,540 nes ji neatrodo kaip jūs tikrai jų reikia. 2015 01:40:43,540 --> 01:40:46,790 Jie tikrai ne baigti savo maniau kaip skliaustuose ar garbanotieji 2016 01:40:46,790 --> 01:40:47,714 įtvaras veikia. 2017 01:40:47,714 --> 01:40:49,630 Vykime į priekį ir perkompiliuoti kodą ir pamatyti. 2018 01:40:49,630 --> 01:40:53,690 Todėl įsitikinkite, jungiklis, taškas velniop jungiklį. 2019 01:40:53,690 --> 01:40:56,435 Leiskite įvesti mažosiomis raidėmis y top atveju Enter. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Taigi, aš įvedėte m. 2022 01:41:00,700 --> 01:41:04,420 >> Programa pasakė "taip, ne, klaida, taip, tarsi tai buvo keisti savo mintis. 2023 01:41:04,420 --> 01:41:09,280 Bet tai kokios buvo, nes tai, kas vyksta su jungikliu yra pirmas atvejis, kad 2024 01:41:09,280 --> 01:41:13,899 Rungtynės iš esmės reiškia, ei kompiuteris, vykdyti visų kodą po juo. 2025 01:41:13,899 --> 01:41:16,690 Ir jei jūs neturite pasakyti pertrauka, arba nesakau pertrauką, arba nesakyk pertraukos, 2026 01:41:16,690 --> 01:41:19,540 kompiuteris ketina smūgis per visus tuos linijų 2027 01:41:19,540 --> 01:41:22,779 ir vykdyti juos visus, kol jis gauna tai garbanotais petnešomis. 2028 01:41:22,779 --> 01:41:24,320 Taigi stabdžiai, iš tiesų, reikia. 2029 01:41:24,320 --> 01:41:27,120 Bet Takeaway čia yra, kai abejojate, pabandykite kažką. 2030 01:41:27,120 --> 01:41:29,510 Gal išsaugoti savo kodą, pirma, arba išsaugokite jį papildomą failą 2031 01:41:29,510 --> 01:41:32,930 Jei esate tikrai susirūpinęs Messing ir turintys susigrąžinti 2032 01:41:32,930 --> 01:41:34,430 darbas, kurį jūs žinote, yra darbo. 2033 01:41:34,430 --> 01:41:35,410 >> Bet pabandykite dalykų. 2034 01:41:35,410 --> 01:41:38,074 Ir nereikia būti bijo, ko gero, ką kompiuteris gali padaryti, 2035 01:41:38,074 --> 01:41:39,490 arba, kad jums gali sulaužyti kažką. 2036 01:41:39,490 --> 01:41:42,790 Jūs visada galite grįžti atgal tam tikru ankstesnę versiją. 2037 01:41:42,790 --> 01:41:45,640 >> Tad pabaigoje, žiūrėdamas tuo kodo dizainą. 2038 01:41:45,640 --> 01:41:49,020 Mes turime šį gebėjimą dabar rašyti sąlygos, ir rašyti kilpos, 2039 01:41:49,020 --> 01:41:50,850 ir kintamieji, ir skambučių funkcijos. 2040 01:41:50,850 --> 01:41:54,590 Taigi, tiesą sakant, mes rūšies atgal kur buvome prieš savaitę su nulio, 2041 01:41:54,590 --> 01:42:00,120 nors ir su mažiau įtikinamų tekstinės aplinka nei nulio leidžia. 2042 01:42:00,120 --> 01:42:03,990 >> Tačiau pastebėti, kaip greitai mes įsigijo kad Žodynas, net jei tai 2043 01:42:03,990 --> 01:42:07,570 ketina imtis šiek tiek laiko kriaukle, taip, kad dabar mes galime naudoti šį žodyną 2044 01:42:07,570 --> 01:42:10,320 rašyti daugiau įdomių programų. 2045 01:42:10,320 --> 01:42:12,940 Ir tegul kūdikio žingsnis link, kad, kaip nurodyta toliau. 2046 01:42:12,940 --> 01:42:14,890 Leiskite man eiti į priekį ir sukurti naują failą čia. 2047 01:42:14,890 --> 01:42:17,750 >> Aš ruošiuosi skambinti šiuo prototype.c ir pristatyti 2048 01:42:17,750 --> 01:42:20,954 pirmą kartą, gebėjimas padaryti savo funkcijas. 2049 01:42:20,954 --> 01:42:22,870 Kai kurie iš jūsų gali turėti padaryta tai su nulio, 2050 01:42:22,870 --> 01:42:25,430 kuriuo galite sukurti jūsų individualizuotos blokų nulio, 2051 01:42:25,430 --> 01:42:27,892 ir tada vilkite juos į vietą kur norėtumėte C 2052 01:42:27,892 --> 01:42:30,100 Ir daugumoje programavimo kalbos, tai galite padaryti būtent 2053 01:42:30,100 --> 01:42:33,580 that-- padaryti savo funkcijas, jei jie dar nėra. 2054 01:42:33,580 --> 01:42:38,660 >> Taigi, pavyzdžiui, leiskite man eiti į priekį ir apima CS50.h, ir apima 2055 01:42:38,660 --> 01:42:43,110 standartinis IO.h, int main negaliojančiu. 2056 01:42:43,110 --> 01:42:46,020 Ir dabar mes turime rezervuotos vietos pasiruošę eiti. 2057 01:42:46,020 --> 01:42:48,550 Aš nuolat spausdinimo dalykus kaip žmonių vardais šiandien. 2058 01:42:48,550 --> 01:42:51,910 Ir tai jaučiasi like-- nebūtų malonu, jei ten 2059 01:42:51,910 --> 01:42:53,936 buvo funkcija vadinama Spausdinti vardas? 2060 01:42:53,936 --> 01:42:55,060 Aš neturiu naudoti printf. 2061 01:42:55,060 --> 01:42:56,976 Aš neturiu prisiminti visi formato kodai. 2062 01:42:56,976 --> 01:43:00,050 Kodėl ne aš, arba kodėl nebuvo ką nors prieš mane, 2063 01:43:00,050 --> 01:43:02,980 sukurti funkciją vadinama Spausdinti vardas, kad suteikta tam tikra vardą, 2064 01:43:02,980 --> 01:43:03,980 tiesiog spausdina jį? 2065 01:43:03,980 --> 01:43:08,700 >> Kitaip tariant, jei aš sakau, ei, kompiuteris, duok man eilutę 2066 01:43:08,700 --> 01:43:11,870 klausia vartotoją, pavyzdžiui, per CS50 get styginių funkcija. 2067 01:43:11,870 --> 01:43:15,090 Ei, kompiuteris, padėkite tą eilutę kairiojoje pusėje kintamasis, 2068 01:43:15,090 --> 01:43:16,150 ir vadina tai ai. 2069 01:43:16,150 --> 01:43:22,150 Ir tada, ei kompiuteris, eiti į priekį ir spausdinti, kad asmens vardas, padaryta. 2070 01:43:22,150 --> 01:43:26,240 >> Dabar, tai būtų malonu, nes Ši programa, taikliai pavadinta, 2071 01:43:26,240 --> 01:43:29,170 man sako, ką jis turėtų daryti būdu šiuos funkcinius vardų. 2072 01:43:29,170 --> 01:43:32,930 Leiskite man eiti ir padaryti prototipą, "Enter". 2073 01:43:32,930 --> 01:43:34,930 Ir, deja, tai nesiruošia skristi. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, linija 7, charakteris 5, klaida, numanomas pareiškimas 2075 01:43:39,430 --> 01:43:42,960 Funkcijų spausdinimo pavadinimas negalioja C99, C99 2076 01:43:42,960 --> 01:43:45,130 reiškia iš C versiją kad išėjo 1999 m. 2077 01:43:45,130 --> 01:43:45,730 Tai viskas. 2078 01:43:45,730 --> 01:43:48,780 >> Taigi, aš nežinau, ką Visa tai reiškia, dar. 2079 01:43:48,780 --> 01:43:50,810 Bet aš pripažinti klaidą raudonai. 2080 01:43:50,810 --> 01:43:51,770 Tai gana akivaizdu. 2081 01:43:51,770 --> 01:43:53,769 >> Ir atrodo, kad su žalia charakteris čia 2082 01:43:53,769 --> 01:43:57,520 klausimas yra su spausdinimo vardu, atvira paren S, artimi paren, kabliataškis. 2083 01:43:57,520 --> 01:44:01,800 Tačiau numanomas deklaracija funkcija mes padarėme trumpai anksčiau pamatyti. 2084 01:44:01,800 --> 01:44:04,880 Tai reiškia, kad tiesiog, kad klingsėti nežino, ką turiu galvoje. 2085 01:44:04,880 --> 01:44:09,000 >> Aš naudojau žodyną žodį, kad tai niekada arba buvo mokoma anksčiau. 2086 01:44:09,000 --> 01:44:11,950 Ir todėl man reikia mokyti jį ką ši funkcija reiškia. 2087 01:44:11,950 --> 01:44:13,590 Taigi, aš ruošiuosi eiti į priekį ir daryti. 2088 01:44:13,590 --> 01:44:17,970 >> Aš ruošiuosi eiti į priekį ir įgyvendinti mano paties funkcija vadinama Spausdinti vardas. 2089 01:44:17,970 --> 01:44:24,720 Ir aš ruošiuosi pasakyti, taip, kad Jis tai daro, printf, hello, proc 2090 01:44:24,720 --> 01:44:27,760 ai, Backslash N, vardas, kabliataškis. 2091 01:44:27,760 --> 01:44:29,250 Taigi, ką aš tiesiog padaryti? 2092 01:44:29,250 --> 01:44:31,325 >> Taigi paaiškėja, kad įgyvendinti savo funkciją, 2093 01:44:31,325 --> 01:44:33,845 mes rūšies skolintis kai tos pačios struktūros, kaip pagrindinis 2094 01:44:33,845 --> 01:44:35,720 kad mes ką tik buvo savaime suprantamu dalyku, o aš 2095 01:44:35,720 --> 01:44:37,730 žinau tik kopijavimo ir įdėjimą gana daug, ką 2096 01:44:37,730 --> 01:44:39,170 Aš rašyti praeityje. 2097 01:44:39,170 --> 01:44:40,570 Bet pastebėsite modelis čia. 2098 01:44:40,570 --> 01:44:43,750 Žiniasklaida, Maino, atkrenta, mes erzinti išskyrus prieš ilgas, ką tai iš tikrųjų reiškia. 2099 01:44:43,750 --> 01:44:46,160 >> Tačiau šiandien, tiesiog pastebėti paralelių. 2100 01:44:46,160 --> 01:44:48,210 Atkrenta, spausdinti vardas string vardas, todėl nėra 2101 01:44:48,210 --> 01:44:50,310 raudonos raktažodis, kuris mes ketiname pradėti 2102 01:44:50,310 --> 01:44:54,067 paskambinę grąžinimo rūšį, pavadinimą funkcija, ir tada įvesties. 2103 01:44:54,067 --> 01:44:56,400 Taigi, iš tikrųjų, mes galime distiliuoti tai tipo kaip paskutinę savaitę 2104 01:44:56,400 --> 01:44:59,030 kaip, tai yra pavadinimas arba algoritmas kodas einame 2105 01:44:59,030 --> 01:45:00,761 ketina write-- algoritmas pagrindinės 2106 01:45:00,761 --> 01:45:02,010 kodas mes ketiname rašyti. 2107 01:45:02,010 --> 01:45:03,180 >> Tai jo indėlis. 2108 01:45:03,180 --> 01:45:04,670 Tai jos produkcija. 2109 01:45:04,670 --> 01:45:08,730 Ši funkcija, spausdinti pavadinimas, yra sukurtas užtrukti eilutę, pavadintą vardas 2110 01:45:08,730 --> 01:45:11,350 ar kas, kaip pirkimo, tada negaliojančiu. 2111 01:45:11,350 --> 01:45:13,904 Tai negrąžina nieko, kaip gauti eilutę arba gauti int daro. 2112 01:45:13,904 --> 01:45:15,570 Taigi jis ketina perduoti man kažką atgal. 2113 01:45:15,570 --> 01:45:17,960 Tai tiesiog teks šalutinis poveikis, taip sakant, 2114 01:45:17,960 --> 01:45:19,570 spausdinti asmens vardą. 2115 01:45:19,570 --> 01:45:22,260 Taigi pastebėti, linija 7, aš galite skambinti spausdinimo vardą. 2116 01:45:22,260 --> 01:45:25,920 10 linija, galiu apibrėžti arba įgyvendinti spausdinimo vardą. 2117 01:45:25,920 --> 01:45:28,450 Bet, deja, tai nėra pakankamai. 2118 01:45:28,450 --> 01:45:31,230 >> Leiskite man eiti į priekį ir perkompiliuoti tai po taupymas. 2119 01:45:31,230 --> 01:45:33,910 Oho, dabar, aš padariau tai Blogiau, atrodytų. 2120 01:45:33,910 --> 01:45:37,027 Taigi numanoma deklaracija funkcija spausdinti pavadinimas yra neteisingas. 2121 01:45:37,027 --> 01:45:38,360 Ir, vėlgi, ten daugiau klaidų. 2122 01:45:38,360 --> 01:45:41,430 Bet kaip aš įspėjo anksčiau, net Jei gauti užvaldo su, 2123 01:45:41,430 --> 01:45:44,850 arba šiek tiek liūdna matyti tiek daug klaidų, sutelkti dėmesį tik į pirmą 2124 01:45:44,850 --> 01:45:47,500 iš pradžių, nes tai gali būti tiesiog turėjo domino efektą. 2125 01:45:47,500 --> 01:45:51,970 Taigi C arba žvangėjimas konkrečiau, dar neatpažįsta spausdintuvo pavadinimą. 2126 01:45:51,970 --> 01:45:54,580 >> Ir tai todėl, kad klingsėti, konstrukcijos, yra natūra kvailas. 2127 01:45:54,580 --> 01:45:56,280 Ji tik ką galite pasakyti daryti. 2128 01:45:56,280 --> 01:46:00,950 Ir tai daro tik todėl tvarka kurioje galite pasakyti tai daryti. 2129 01:46:00,950 --> 01:46:05,270 >> Taigi aš apibrėžta pagrindinė on-line keturių, kaip mes darome gana dažnai. 2130 01:46:05,270 --> 01:46:07,980 Aš apibrėžta spausdinimo vardą on-line 10 d. 2131 01:46:07,980 --> 01:46:11,793 Bet aš stengiuosi naudoti Spausdinti vardas on-line septyni. 2132 01:46:11,793 --> 01:46:13,670 >> Tai per anksti, dar neegzistuoja. 2133 01:46:13,670 --> 01:46:19,150 Taigi, aš gali būti protingas, ir būti kaip, Gerai, kad tegul tiesiog žaisti kartu, 2134 01:46:19,150 --> 01:46:23,680 ir perkelti spausdinimo vardą iki čia, ir iš naujo kompiliuoti. 2135 01:46:23,680 --> 01:46:24,550 O Dieve. 2136 01:46:24,550 --> 01:46:25,260 Pavyko. 2137 01:46:25,260 --> 01:46:26,670 Tai buvo taip paprasta, kaip kad. 2138 01:46:26,670 --> 01:46:28,120 >> Tačiau logika yra būtent tai. 2139 01:46:28,120 --> 01:46:30,870 Jūs turite mokyti žvangėjimas, kur yra apibrėžiant funkciją pirmas. 2140 01:46:30,870 --> 01:46:31,920 Tada galite jį naudoti. 2141 01:46:31,920 --> 01:46:33,940 Bet, tiesą sakant, tai jaučiasi kaip slidaus šlaito. 2142 01:46:33,940 --> 01:46:35,773 >> Taigi kiekvieną kartą, kai aš paleisti į problemą, aš tiesiog 2143 01:46:35,773 --> 01:46:39,450 ketina pabrėžti ir nukopijuokite kodą Parašiau, nukopijuokite jį ir įklijuokite jį čia. 2144 01:46:39,450 --> 01:46:41,370 Ir, be abejo, mes galime Sugalvoti kai scenarijus 2145 01:46:41,370 --> 01:46:43,286 kur viena funkcija galėtų reikia paskambinti kitą. 2146 01:46:43,286 --> 01:46:46,030 Ir jūs tiesiog negalite įdėti kiekvieną funkcija virš visos kitos. 2147 01:46:46,030 --> 01:46:47,930 >> Taigi paaiškėja, ten geresnis sprendimas. 2148 01:46:47,930 --> 01:46:50,100 Galime palikti tai bus. 2149 01:46:50,100 --> 01:46:53,677 Ir, tiesą sakant, tai paprastai gražus, ir patogu, ir geras dizainas 2150 01:46:53,677 --> 01:46:56,760 įdėti pagrindinė sritis, nes, vėlgi, Pagrindinis tiesiog patinka, kai žalia vėliava paspaudėte, 2151 01:46:56,760 --> 01:46:59,027 kad yra funkcija, kuri paleidžiama vykdyti pagal nutylėjimą. 2152 01:46:59,027 --> 01:47:01,110 Taigi jūs galite taip pat įdėti ji tuo failo viršuje 2153 01:47:01,110 --> 01:47:03,560 taip, kad, kai jūs ar Kiti žmogiškieji žiūri į failą 2154 01:47:03,560 --> 01:47:06,360 žinote, kas vyksta tiesiog skaitant pagrindinė pirmas. 2155 01:47:06,360 --> 01:47:15,360 Taigi paaiškėja, mes galime pasakyti, žvangėjimas aktyviai, ei, klingsėti, on-line keturių, 2156 01:47:15,360 --> 01:47:17,940 Pažadu įgyvendinti funkcija vadinama Spausdinti 2157 01:47:17,940 --> 01:47:22,600 Vardas kad mano string vadinamas vardą kaip indėlį ir grąžina nieko, tuštuma. 2158 01:47:22,600 --> 01:47:24,770 Ir aš gausiu aplink ją įgyvendinant vėliau. 2159 01:47:24,770 --> 01:47:25,680 >> Čia ateina Main. 2160 01:47:25,680 --> 01:47:29,130 Pagrindinė dabar on line 9, galite naudoti Spausdinti pavadinimą, nes klingsėti 2161 01:47:29,130 --> 01:47:32,600 yra pasitikėti, kad galiausiai jis iškils apibrėžimo 2162 01:47:32,600 --> 01:47:34,880 apie Spausdinti pavadinimas įgyvendinimą. 2163 01:47:34,880 --> 01:47:37,390 Taigi, po išgelbėdamas mano bylą, tegul man eiti į priekį ir padaryti prototipą, 2164 01:47:37,390 --> 01:47:38,498 gera šį kartą atrodo. 2165 01:47:38,498 --> 01:47:43,470 Dot velniop, prototipas, leiskite man eiti į priekį ir įveskite pavadinimą. 2166 01:47:43,470 --> 01:47:48,440 Dovydas Sveiki Dovydas Zamila, labas Zamila, ir, tiesą sakant, dabar ji veikia. 2167 01:47:48,440 --> 01:47:52,200 >> Taigi čia ingredientas yra tai, kad mes padarė užsakymą funkciją, kaip papročio 2168 01:47:52,200 --> 01:47:54,219 Įbrėžimams blokas mes vadiname tai. 2169 01:47:54,219 --> 01:47:57,010 Tačiau skirtingai nuo nulio, kur Jūs galite tiesiog sukurti ir pradėti jį naudoti, 2170 01:47:57,010 --> 01:47:59,330 dabar turime būti šiek tiek daugiau pedantiškas, 2171 01:47:59,330 --> 01:48:03,410 ir iš tikrųjų mokyti žvangėjimas naudoti, arba jį tikėtis. 2172 01:48:03,410 --> 01:48:09,140 Dabar, kaip panaikinti, kodėl visą tą laiką turi mes buvo tiesiog aklai tikėjimu, įskaitant 2173 01:48:09,140 --> 01:48:12,170 CS50.h, įskaitant standartinio IO.h? 2174 01:48:12,170 --> 01:48:15,190 >> Na, it turns out, tarp kelių kitų dalykų, 2175 01:48:15,190 --> 01:48:18,550 visi tai tose dot h failus, kurie atsitiktų būti failus. 2176 01:48:18,550 --> 01:48:20,460 Jie header failus, taip sakant. 2177 01:48:20,460 --> 01:48:23,270 Jie vis dar parašyta C Bet jie skirtingo tipo failą. 2178 01:48:23,270 --> 01:48:28,690 >> Nes dabar, jums gana daug galima daryti prielaidą, kad viskas, kas yra viduje CS50.h 2179 01:48:28,690 --> 01:48:33,360 yra keletas vienas ūdomis žvejojantys laivai kaip šis, ne funkcijas, vadinamas Spausdinti vardas, 2180 01:48:33,360 --> 01:48:36,840 bet Gauk String, gauti Plūdės, ir keletas kitų. 2181 01:48:36,840 --> 01:48:41,510 Ir yra panašūs prototipai, vienas įdėklai, viduje standartinio IO.h 2182 01:48:41,510 --> 01:48:46,241 už printf, kuris dabar yra mano paties Spausdinti vardas funkcija. 2183 01:48:46,241 --> 01:48:49,490 Taigi, kitaip tariant, visas šis laikas mes tik buvo aklai kopijuodami 2184 01:48:49,490 --> 01:48:51,780 įtraukti tai, apima tai, kas vyksta? 2185 01:48:51,780 --> 01:48:55,310 Tai yra tik rūšies įkalčiais į žvangėjimas, ką funkcijų 2186 01:48:55,310 --> 01:49:00,170 yra, iš tiesų, įgyvendino tik kitur skirtingus failus 2187 01:49:00,170 --> 01:49:02,440 kitur sistemoje. 2188 01:49:02,440 --> 01:49:05,160 >> Taigi, mes įdiegėme spausdinimo vardą. 2189 01:49:05,160 --> 01:49:07,910 Ji turi šį šalutinį poveikį spausdinti kažką ekrane. 2190 01:49:07,910 --> 01:49:10,170 Bet tai iš tikrųjų nėra ranka man kažką atgal. 2191 01:49:10,170 --> 01:49:12,200 Kaip mes eiti apie Įgyvendinant programą, kuri 2192 01:49:12,200 --> 01:49:14,510 ar ranka man ką nors atgal? 2193 01:49:14,510 --> 01:49:15,580 >> Na, pabandykime tai. 2194 01:49:15,580 --> 01:49:21,360 Leiskite man eiti į priekį ir įgyvendinti failas vadinamas return.c 2195 01:49:21,360 --> 01:49:24,530 kad galėtume parodyti, kaip kažką kaip gauti eilutę, arba gauti Int, 2196 01:49:24,530 --> 01:49:27,340 yra iš tikrųjų grįžta kažką atgal vartotojui. 2197 01:49:27,340 --> 01:49:29,840 Vykime į priekį ir nustatyti int main negaliojančiu. 2198 01:49:29,840 --> 01:49:33,230 >> Ir vėl, ir ateityje, mes paaiškinti, kas tai int ir kad tuščia 2199 01:49:33,230 --> 01:49:34,090 yra iš tikrųjų daro. 2200 01:49:34,090 --> 01:49:35,840 Bet šiandien mes laikyti savaime suprantamu dalyku. 2201 01:49:35,840 --> 01:49:39,970 Aš ruošiuosi eiti į priekį ir printf, už gerą vartotojo patirtį, x yra. 2202 01:49:39,970 --> 01:49:44,360 Ir tada aš ruošiuosi laukti vartotojui duoti man x su get tarpt. 2203 01:49:44,360 --> 01:49:48,459 >> Ir tada aš ruošiuosi eiti į priekį ir atsispausdinti X aikštėje. 2204 01:49:48,459 --> 01:49:50,500 Taigi, kai jūs turite tik klaviatūra, žmonės paplitusios 2205 01:49:50,500 --> 01:49:52,600 naudoti tiek morkų Simbolis ant klaviatūros 2206 01:49:52,600 --> 01:49:55,330 atstovauti į valdžią d arba eksponentė. 2207 01:49:55,330 --> 01:49:58,960 Taigi x kvadratu yra dovana, kurią aš. 2208 01:49:58,960 --> 01:50:00,660 >> Ir dabar aš ruošiuosi tai padaryti. 2209 01:50:00,660 --> 01:50:03,940 Galėčiau tik do-- kas x kvadrato? x kvadratu yra X kartų x. 2210 01:50:03,940 --> 01:50:06,690 >> Ir mes tai padarė kai prieš laikas jau šiandien. 2211 01:50:06,690 --> 01:50:08,730 Tai neturi jaustis kaip visi, kad daug pažangos. 2212 01:50:08,730 --> 01:50:09,570 Zinai ka? 2213 01:50:09,570 --> 01:50:13,100 Leiskite sverto kai tos idėjos nuo paskutinio karto abstrakcijos. 2214 01:50:13,100 --> 01:50:16,080 >> Ar nebūtų puiku, jei ten yra funkcija vadinama 2215 01:50:16,080 --> 01:50:18,460 kvadratinių, kad būtent tai? 2216 01:50:18,460 --> 01:50:20,640 Jis vis dar tuo galutinio dieną, daro tą matematiką. 2217 01:50:20,640 --> 01:50:22,410 Bet tegul abstraktūs atstumu nuo priėmimo idėja 2218 01:50:22,410 --> 01:50:25,280 vienas skaičius, padaugintas iš kitą, ir tiesiog suteikti jai pavadinimą, 2219 01:50:25,280 --> 01:50:27,360 kaip aikštė šią vertę. 2220 01:50:27,360 --> 01:50:29,560 >> Ir, kitaip tariant, C kurkime funkcija 2221 01:50:29,560 --> 01:50:32,660 vadinama aikštė kad daro būtent tai. 2222 01:50:32,660 --> 01:50:34,600 Jis bus vadinamas kv. 2223 01:50:34,600 --> 01:50:35,790 Ji ketina imtis int. 2224 01:50:35,790 --> 01:50:37,820 Ir mes tiesiog jį vadiname n pagal nutylėjimą. 2225 01:50:37,820 --> 01:50:39,403 >> Tačiau mes galime jį vadinti ką mes norime. 2226 01:50:39,403 --> 01:50:42,900 Ir visa tai jis ketina padaryti, tiesiog, yra grąža 2227 01:50:42,900 --> 01:50:45,810 n kartų n rezultatas. 2228 01:50:45,810 --> 01:50:48,980 Bet kadangi ji yra grįžti kažką, kuris 2229 01:50:48,980 --> 01:50:53,690 yra purpuru mes raktažodžių niekada anksčiau, aš, on-line 11 2230 01:50:53,690 --> 01:50:55,410 negali tiesiog pasakyti negaliojančiu šį kartą. 2231 01:50:55,410 --> 01:51:01,320 >> Atkrenta, pavyzdyje mes tik pamačiau o iš spausdinimo vardu, tiesiog reiškia, 2232 01:51:01,320 --> 01:51:02,190 kažką daryti. 2233 01:51:02,190 --> 01:51:04,170 Tačiau nereikia ranka man kažką atgal. 2234 01:51:04,170 --> 01:51:06,790 Šiuo atveju, aš noriu grįžti n kartų n 2235 01:51:06,790 --> 01:51:08,460 ar kas tai yra, kad skaičius. 2236 01:51:08,460 --> 01:51:12,460 >> Taigi, aš negaliu pasakyti, ei, kompiuteris, Grįšiu nieko, tuščia. 2237 01:51:12,460 --> 01:51:16,166 Jis ketina grįžti iš prigimties, int. 2238 01:51:16,166 --> 01:51:17,790 Ir taip, kad viskas, kas vyksta čia. 2239 01:51:17,790 --> 01:51:20,070 >> Įvesties kvadratinių bus int. 2240 01:51:20,070 --> 01:51:24,760 Ir, kad galėtume jį naudoti, ji turi turėti pavadinimą N. Ji ketina produkcijos 2241 01:51:24,760 --> 01:51:26,240 int, kad nereikia vardą. 2242 01:51:26,240 --> 01:51:29,590 Galime palikti pagrindinė, ar kas yra naudojant mane prisiminti šią vertę, jei mes 2243 01:51:29,590 --> 01:51:31,120 nori su savo kintamasis. 2244 01:51:31,120 --> 01:51:33,230 >> Ir, vėlgi, vienintelis naujas raktažodžių čia yra grąžinimas. 2245 01:51:33,230 --> 01:51:34,480 Ir aš tiesiog daro kai matematiką. 2246 01:51:34,480 --> 01:51:41,825 Jei aš tikrai norėjau būti nereikalingas, Galėčiau pasakyti, INT Produktui patekus n kartų n. 2247 01:51:41,825 --> 01:51:44,170 >> Ir tada galėčiau pasakyti, grąžinti produktą. 2248 01:51:44,170 --> 01:51:47,360 Bet vėl gi, mano taško ankstesnė tai tik nėra geras design-- 2249 01:51:47,360 --> 01:51:50,060 kaip, kodėl įvesti vardą, simbolis, kaip ir produktas, 2250 01:51:50,060 --> 01:51:51,570 tiesiog iš karto ją grąžinti? 2251 01:51:51,570 --> 01:51:53,670 Tai šiek tiek švaresnis, šiek tiek griežtesnė, todėl 2252 01:51:53,670 --> 01:51:59,380 kalbėti, tiesiog pasakyti grąža n kartų n atsikratyti šios linijos apskritai. 2253 01:51:59,380 --> 01:52:02,860 >> Ir tai tik mažiau kodas skaityti, mažiau galimybė klaidų. 2254 01:52:02,860 --> 01:52:05,180 Ir pažiūrėkime, jei tai realiai dabar dirba. 2255 01:52:05,180 --> 01:52:09,380 Dabar aš ruošiuosi eiti į priekį ir padaryti grąžinimą. 2256 01:52:09,380 --> 01:52:11,460 >> Uh-oh, numanoma deklaracija funkcija. 2257 01:52:11,460 --> 01:52:14,080 Aš padariau šią klaidą anksčiau, ne big deal. 2258 01:52:14,080 --> 01:52:18,950 Leiskite tiesiog įveskite arba pažymėkite ir kopijuoti, lygiai toks pats funkcija prototipas, 2259 01:52:18,950 --> 01:52:21,342 arba parašas, iš funkcijos čia. 2260 01:52:21,342 --> 01:52:22,800 Arba galėčiau judėti visą funkciją. 2261 01:52:22,800 --> 01:52:23,841 >> Bet tai šiek tiek tingus. 2262 01:52:23,841 --> 01:52:24,870 Taigi, mes to nedarys. 2263 01:52:24,870 --> 01:52:27,960 Dabar leiskite man padaryti grąžinimą vėl dot velniop grąžą. 2264 01:52:27,960 --> 01:52:32,790 >> x yra 2 x kvadratu yra 4. x yra 3 x kvadratu yra 9. 2265 01:52:32,790 --> 01:52:35,300 Ir ši funkcija atrodo dabar, kad reikia dirbti. 2266 01:52:35,300 --> 01:52:36,550 Taigi koks skirtumas čia? 2267 01:52:36,550 --> 01:52:42,520 Turiu funkciją, kuri vadinama aikštė, šiuo atveju, kurį aš įdėti į vieną iš įvesties duomenų. 2268 01:52:42,520 --> 01:52:43,830 Ir aš grįšiu išėjimą. 2269 01:52:43,830 --> 01:52:46,210 Ir dar, anksčiau, jei Aš atidaryti kitą pavyzdį 2270 01:52:46,210 --> 01:52:51,640 iš anksčiau, kuris buvo vadinamas prototype.c, 2271 01:52:51,640 --> 01:52:54,770 Turėjau spausdinimo vardą, kuris grįžo negaliojančiu, taip sakant, 2272 01:52:54,770 --> 01:52:58,730 Arba jis grįžo nieko, ir tiesiog turėjo šalutinį poveikį. 2273 01:52:58,730 --> 01:53:00,230 >> Taigi, kas čia vyksta? 2274 01:53:00,230 --> 01:53:03,520 Na, mano funkcija gauti eilutę tik už momentu. 2275 01:53:03,520 --> 01:53:06,570 Mes jau naudojant funkciją gauti eilutę tokiu būdu:. 2276 01:53:06,570 --> 01:53:10,464 >> Mes turėjome funkcija gauti eilutė, kaip įtraukti CS50.h, 2277 01:53:10,464 --> 01:53:16,624 įtraukti standartinę IO.h, INT, Main, negaliojančiu. 2278 01:53:16,624 --> 01:53:18,790 Ir tada kiekvieną kartą aš vadinamas Gauti eilutė iki šiol, 2279 01:53:18,790 --> 01:53:23,260 Sakiau kažkas panašaus, styginių -ai gauna gauti eilutę, nes vakaronė string-- 2280 01:53:23,260 --> 01:53:27,880 tegul vadina get.c-- get eilutę pati grąžina eilutę, kad aš galiu tada 2281 01:53:27,880 --> 01:53:32,050 naudoti, ir sako, labas, kablelis, proc S, Backslash N, S. 2282 01:53:32,050 --> 01:53:35,660 >> Taip tai yra tas pats pavyzdys, tikrai, kad mes turėjome anksčiau. 2283 01:53:35,660 --> 01:53:37,920 Taigi gauti eilutė grąžina vertę. 2284 01:53:37,920 --> 01:53:41,260 Tačiau prieš akimirką, spausdinti eilutė negrąžina vertę. 2285 01:53:41,260 --> 01:53:42,721 Ji tiesiog turi šalutinį poveikį. 2286 01:53:42,721 --> 01:53:44,220 Taigi tai yra esminis skirtumas. 2287 01:53:44,220 --> 01:53:46,710 Mes matėme skiriasi tipų funkcijas dabar, 2288 01:53:46,710 --> 01:53:49,490 kai kurios iš jų grąžintas vertybes, iš kurių kai kurie ne. 2289 01:53:49,490 --> 01:53:51,890 Taigi gal tai virvutė, ar INT, ar plūdė. 2290 01:53:51,890 --> 01:53:53,480 O gal tai tiesiog tuščia. 2291 01:53:53,480 --> 01:53:55,710 >> Ir skirtumas yra kad šios funkcijos, kad 2292 01:53:55,710 --> 01:53:59,940 gauti duomenis ir grąžina reikšmę iš tikrųjų yra pareikšti kažką atgal prie stalo, 2293 01:53:59,940 --> 01:54:01,110 taip sakant. 2294 01:54:01,110 --> 01:54:03,710 Taigi eikime į priekį ir pažvelgti vieną galutinį rinkinys 2295 01:54:03,710 --> 01:54:09,129 pavyzdžių, kad įprasmina, dabar iš kaip mes galime, tiesą sakant, abstraktus geriau, 2296 01:54:09,129 --> 01:54:11,670 ir geriau, ir geriau, ar daugiau, ir daugiau, ir daugiau, tam, 2297 01:54:11,670 --> 01:54:13,810 rašyti, galiausiai geriau kodą. 2298 01:54:13,810 --> 01:54:16,860 Vykime į priekį, ir dvasia nuo nulio, atlikite šiuos veiksmus. 2299 01:54:16,860 --> 01:54:21,700 >> Leiskite man eiti į priekį ir taip pat CS50.h ir standartinė IO.h. 2300 01:54:21,700 --> 01:54:24,010 Leiskite man eiti į priekį ir suteikti aš int, pagrindinė, negaliojančia. 2301 01:54:24,010 --> 01:54:27,380 Ir leiskite man eiti į priekį, tai vadiname cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> Ir leiskite man eiti į priekį ir tik kaip nulio, atsispausdinti kosulio / n. 2303 01:54:35,510 --> 01:54:37,170 Ir aš noriu tai padaryti tris kartus. 2304 01:54:37,170 --> 01:54:39,670 Taigi, aš, žinoma, tik ketina nukopijuoti ir įklijuoti tris kartus. 2305 01:54:39,670 --> 01:54:46,440 Aš dabar ketina padaryti kosulys dot velniop kosulys. 2306 01:54:46,440 --> 01:54:50,120 Duokime sau šiek tiek daugiau vietos čia Įveskite, kosulys, kosulys, kosulys. 2307 01:54:50,120 --> 01:54:53,970 >> Yra, žinoma, jau yra galimybė tobulinti. 2308 01:54:53,970 --> 01:54:55,679 Aš nukopijuoti ir įklijuoti kelis kartus šiandien. 2309 01:54:55,679 --> 01:54:58,261 Bet tai buvo tik todėl aš ne turite įvesti kaip daug simbolių. 2310 01:54:58,261 --> 01:55:00,250 Aš vis dar pasikeitė, ką tie eilučių kodo yra. 2311 01:55:00,250 --> 01:55:04,240 >> Šie trys geležinkelio linijos yra identiški, kuris jaučiasi tingus ir iš tiesų yra, 2312 01:55:04,240 --> 01:55:07,110 ir tikriausiai nėra teisingas požiūris. 2313 01:55:07,110 --> 01:55:11,029 Taigi, ką ingredientas galėtume pagerinti šį kodą? 2314 01:55:11,029 --> 01:55:12,570 Neturime kopijuoti ir įklijuoti kodą. 2315 01:55:12,570 --> 01:55:15,070 >> Ir, iš tiesų, bet kuriuo metu galite jaustis Būk kopijuodami, 2316 01:55:15,070 --> 01:55:17,700 ir net ne keisti kodą, šansai yra ten geriau. 2317 01:55:17,700 --> 01:55:19,470 Ir, iš tiesų, yra. 2318 01:55:19,470 --> 01:55:22,510 Leiskite man eiti į priekį ir daryti už kilpos, nors sintaksė gali ne 2319 01:55:22,510 --> 01:55:24,570 ateiti natūraliai dar. 2320 01:55:24,570 --> 01:55:29,494 >> Ar tai tris kartus, tiesiog atlikdami following-- 2321 01:55:29,494 --> 01:55:31,160 ir aš atsitikti žinau, tai iš praktikos. 2322 01:55:31,160 --> 01:55:32,810 Bet mes turime pavyzdžių dabar. 2323 01:55:32,810 --> 01:55:34,950 Ir pamatysite internete daugiau nuorodos ramiai. 2324 01:55:34,950 --> 01:55:37,790 >> Tai yra sintaksė 6 linija, kad panašiai kaip nulio, kad kartoja 2325 01:55:37,790 --> 01:55:40,090 blokas, pakartoti šiuos tris kartus. 2326 01:55:40,090 --> 01:55:41,340 Tai šiek tiek magiška dabar. 2327 01:55:41,340 --> 01:55:43,050 Bet tai gaus daugiau, ir labiau susipažinę. 2328 01:55:43,050 --> 01:55:45,050 >> Ir tai vyksta pakartoti linija aštuonių tris kartus, 2329 01:55:45,050 --> 01:55:52,390 taip, kad jei aš iš naujo kompiliuoti makiažo kosulys, taškas velniop kosulys, kosulys, kosulys, kosulys. 2330 01:55:52,390 --> 01:55:54,030 Jis vis dar veikia taip pat. 2331 01:55:54,030 --> 01:55:55,550 Taigi, kad viskas gerai ir gerai. 2332 01:55:55,550 --> 01:55:58,200 Bet tai nėra labai abstrakti. 2333 01:55:58,200 --> 01:55:59,371 >> Tai visiškai teisinga. 2334 01:55:59,371 --> 01:56:01,370 Tačiau ji mano, kaip ten galėtų būti galimybė, 2335 01:56:01,370 --> 01:56:03,750 kaip ir pasaulyje Nulio, kad rūšies pradžios 2336 01:56:03,750 --> 01:56:07,530 Tam tikru semantiką įtraukti čia, kad Nemanau, tiesiog kai už kilpos, 2337 01:56:07,530 --> 01:56:09,867 ir funkcija, kuri sako kosulys, ar nėra kosulys. 2338 01:56:09,867 --> 01:56:10,450 Zinai ka? 2339 01:56:10,450 --> 01:56:12,620 Leiskite man pabandyti būti tiek žemesnė nei, kad 2340 01:56:12,620 --> 01:56:16,090 ir iš tikrųjų parašyti funkciją, kuri turi keletą šalutinį poveikį, vadina tai kosulys. 2341 01:56:16,090 --> 01:56:20,830 >> Ir tai trunka ne įvestį ir grįžta jokios vertės, nes produkcijos. 2342 01:56:20,830 --> 01:56:22,680 Bet žinote, ką ji daro? 2343 01:56:22,680 --> 01:56:29,370 Ji this-- printf, citata citatos pabaiga, kosulys. 2344 01:56:29,370 --> 01:56:32,380 >> Ir dabar čia, aš ruošiuosi eiti į priekį ir int, 2345 01:56:32,380 --> 01:56:36,070 Aš gauna nulį, aš mažiau nei 3, I plius plius. 2346 01:56:36,070 --> 01:56:39,770 Aš ruošiuosi negali padaryti printf, kuris yra be abejo lygio įgyvendinimas mažas 2347 01:56:39,770 --> 01:56:40,270 detalė. 2348 01:56:40,270 --> 01:56:41,353 Man nerūpi, kaip kosulys. 2349 01:56:41,353 --> 01:56:43,240 Aš tik noriu naudoti kosulys funkciją. 2350 01:56:43,240 --> 01:56:44,840 Ir aš tik ketina skambinti kosulys. 2351 01:56:44,840 --> 01:56:46,204 >> Dabar, pastebėsite dichotomiją. 2352 01:56:46,204 --> 01:56:49,370 Kai skambinate funkciją, jei jūs neturite noriu duoti tai įėjimai, visiškai gerai. 2353 01:56:49,370 --> 01:56:51,780 Just do atviros paren, netoli paren ir baigsite. 2354 01:56:51,780 --> 01:56:56,271 >> Kai jūs nustatote funkciją arba paskelbti funkcija anketa prototipas, 2355 01:56:56,271 --> 01:56:58,770 jei iš anksto žinoti, kad tai ne ketina imtis jokių argumentų, 2356 01:56:58,770 --> 01:57:01,170 pasakyti negalioja tose skliausteliuose ten. 2357 01:57:01,170 --> 01:57:05,660 Ir tai daro tam, kad jūs nebus netyčia netinkamai ją. 2358 01:57:05,660 --> 01:57:07,020 Leiskite man eiti į priekį ir padaryti kosulys. 2359 01:57:07,020 --> 01:57:08,540 Ir, žinoma, aš padariau klaidą. 2360 01:57:08,540 --> 01:57:10,410 >> Po perkūnais, ten, kad numanomas pareiškimas. 2361 01:57:10,410 --> 01:57:11,325 Bet tai gerai. 2362 01:57:11,325 --> 01:57:12,590 Tai lengva nustatyti. 2363 01:57:12,590 --> 01:57:18,240 Aš tiesiog reikia prototipas aukščiau mano failo nei aš iš tikrųjų jį naudoti. 2364 01:57:18,240 --> 01:57:20,070 >> Taigi dabar leiskite man padaryti kosulys vėl gražus. 2365 01:57:20,070 --> 01:57:20,790 Dabar ji veikia. 2366 01:57:20,790 --> 01:57:22,930 Padaryti kosulį, kosulys, kosulys, kosulys. 2367 01:57:22,930 --> 01:57:25,930 Taigi jūs manote, kad mes tikrai tik per inžinerija šią problemą. 2368 01:57:25,930 --> 01:57:26,763 Ir, tiesą sakant, mes esame. 2369 01:57:26,763 --> 01:57:28,870 Tai nėra geras kandidatas programos 2370 01:57:28,870 --> 01:57:31,930 metu ir yra skirti metu Pertvarkymas, ir daro tai, kas 2371 01:57:31,930 --> 01:57:35,645 vadinama hierarchinė, skilimas, kur jūs imtis tam tikrą kodą, tada 2372 01:57:35,645 --> 01:57:38,790 jums rūšies faktorius dalykų, ir todėl kaip priskirti daugiau semantiką jiems 2373 01:57:38,790 --> 01:57:40,930 ir pakartotinai jį galiausiai ilguoju laikotarpiu. 2374 01:57:40,930 --> 01:57:43,490 Bet tai statybinis blokas link sudėtingesnių programų 2375 01:57:43,490 --> 01:57:45,600 kad mes pradėsime raštu prieš ilgas, kad 2376 01:57:45,600 --> 01:57:50,090 leidžia mums turėti žodyną su kuriuo būtų galima rašyti geriau kodą. 2377 01:57:50,090 --> 01:57:52,920 Ir, iš tiesų, galime pamatyti, jei mes negali apibendrinti tai toliau. 2378 01:57:52,920 --> 01:57:57,984 >> Atrodo šiek tiek chromo, kad aš, pagrindinė, reikia nerimauti šio darn už kilpos, 2379 01:57:57,984 --> 01:57:59,400 ir vėl ir vėl skambina kosulys. 2380 01:57:59,400 --> 01:58:03,050 Kodėl aš negaliu tiesiog pasakykite kosulys, Prašome kosulys tris kartus? 2381 01:58:03,050 --> 01:58:08,170 Kitaip tariant, kodėl negaliu aš tiesiog duoti prisidėti prie kosulys ir tai padaryti? 2382 01:58:08,170 --> 01:58:11,270 >> Kodėl aš negaliu tiesiog pasakyti, kad Pagrindinis kosulys tris kartus. 2383 01:58:11,270 --> 01:58:13,150 O dabar, tai yra rūšies stebuklinga. 2384 01:58:13,150 --> 01:58:14,540 Tai labai pasikartojantis čia. 2385 01:58:14,540 --> 01:58:15,940 Ir tai, tiesą sakant, kūdikis žingsnis. 2386 01:58:15,940 --> 01:58:19,250 >> Bet tik gebėjimas pasakyti linija aštuoni, kosulys tris kartus, 2387 01:58:19,250 --> 01:58:20,730 tai tik tiek daug skaityti. 2388 01:58:20,730 --> 01:58:24,210 Ir plius, aš neturiu žinoti ar rūpintis, kaip kosulys yra įgyvendinama. 2389 01:58:24,210 --> 01:58:26,460 Ir, tiesą sakant, vėliau į Terminas ir galutinių projektų, 2390 01:58:26,460 --> 01:58:29,150 jei jums spręsti projektą su klasiokas ar du klasiokai, 2391 01:58:29,150 --> 01:58:32,370 jūs suprasite, kad jūs ketinate turi, ar nori, padalinti darbą. 2392 01:58:32,370 --> 01:58:34,650 >> Ir jūs ketinate norite nuspręsti iš anksto, kas vyksta ką daryti, 2393 01:58:34,650 --> 01:58:35,483 ir kurioje vienetų? 2394 01:58:35,483 --> 01:58:37,520 Ir ar nebūtų malonu jei jums, pavyzdžiui, 2395 01:58:37,520 --> 01:58:40,100 pasirūpinti rašymo Main, padaryti. 2396 01:58:40,100 --> 01:58:43,470 Ir jūsų draugas, ar jūsų partneris apskritai 2397 01:58:43,470 --> 01:58:45,230 rūpinasi įgyvendinimo kosulys. 2398 01:58:45,230 --> 01:58:49,540 >> Ir šis skyrius, tai sienos imti, 2399 01:58:49,540 --> 01:58:52,310 ar sluoksniai abstrakcijos jei jūs, yra super galingas, 2400 01:58:52,310 --> 01:58:55,480 nes ypač didesni, daugiau sudėtingų programų ir sistemų, 2401 01:58:55,480 --> 01:59:00,070 tai leidžia keliems žmonėms kurti viskas kartu, ir galiausiai 2402 01:59:00,070 --> 01:59:02,680 dygsnio savo darbą kartu šiuo būdu. 2403 01:59:02,680 --> 01:59:05,332 Bet, žinoma, mes reikia dabar nustatyti kosulys. 2404 01:59:05,332 --> 01:59:07,290 Turime pasakyti, kosulys kad, ei, jūs žinote, ką? 2405 01:59:07,290 --> 01:59:11,230 Jūs ketinate reikia vartoti input-- todėl ne tuščias, bet int ir dabar. 2406 01:59:11,230 --> 01:59:15,170 Vykime į priekį ir įdėti į kosulys Int. Aš gauna nulį. 2407 01:59:15,170 --> 01:59:16,890 >> i yra mažiau nei kaip daug kartų. 2408 01:59:16,890 --> 01:59:18,550 Pasakiau tris anksčiau. 2409 01:59:18,550 --> 01:59:20,420 Bet tai nėra tai, ką aš noriu. 2410 01:59:20,420 --> 01:59:25,520 Noriu kosulys turi būti apibendrinti remti bet kokią iteracijų skaičių. 2411 01:59:25,520 --> 01:59:28,800 >> Taigi, iš tiesų, tai N, kad aš noriu, kokia vartotojas man sako. 2412 01:59:28,800 --> 01:59:31,620 Dabar galiu eiti į priekį ir pasakyti spausdinimo kosulys. 2413 01:59:31,620 --> 01:59:34,750 Ir nesvarbu, ką numeris vartotojas pereina į, 2414 01:59:34,750 --> 01:59:36,890 Aš pakartoti, kad daug kartų. 2415 01:59:36,890 --> 01:59:39,160 >> Būdamas dienos pabaigoje, Programa yra identiški. 2416 01:59:39,160 --> 01:59:42,820 Tačiau pastebėti visą šį stuff netgi gali būti kitoje byloje. 2417 01:59:42,820 --> 01:59:45,620 Iš tiesų, aš nežinau, ne momentas, kaip printf yra įgyvendinama. 2418 01:59:45,620 --> 01:59:47,980 >> Aš nežinau, šiuo metu, kaip gauti eilutė, arba gauti int, arba gauti plūdę 2419 01:59:47,980 --> 01:59:48,646 būtų įgyvendintos. 2420 01:59:48,646 --> 01:59:50,930 Ir aš nenoriu matyti mano ekrane. 2421 01:59:50,930 --> 01:59:55,320 Kadangi tai yra, aš pradedu sutelkti dėmesį į mano programa, o ne tas funkcijas. 2422 01:59:55,320 --> 01:59:59,070 >> Ir taip, iš tiesų, kaip tik Jums pradėti faktoringo kodą panašaus į tai dėmesį, 2423 01:59:59,070 --> 02:00:01,397 gal mes net judėti kosulys į atskirą failą? 2424 02:00:01,397 --> 02:00:02,730 Kažkas gali ją įgyvendinti. 2425 02:00:02,730 --> 02:00:06,810 Ir jūs, ir jūsų programa tapo labai graži, ir labai skaitoma, 2426 02:00:06,810 --> 02:00:10,830 be abejo, tikrai keturi eilutės programa teisę ten. 2427 02:00:10,830 --> 02:00:13,510 >> Taigi eikime į priekį dabar ir padaryti dar vieną pakeitimą. 2428 02:00:13,510 --> 02:00:16,180 Atkreipkite dėmesį, kad mano prototipas turi pakeisti iki viršaus. 2429 02:00:16,180 --> 02:00:18,390 Taigi leiskite man nustatyti, kad tiek I do not get rėkė ne. 2430 02:00:18,390 --> 02:00:22,580 >> Padaryti kosulys, leiskite man paleisti kosulys kartą daugiau, vis dar daro tą patį. 2431 02:00:22,580 --> 02:00:26,010 Bet dabar, pastebėsite, mes turime ingredientas vieną galutinę versiją. 2432 02:00:26,010 --> 02:00:26,940 Zinai ka? 2433 02:00:26,940 --> 02:00:29,040 Aš nenoriu tiesiog kosulys, nebūtinai. 2434 02:00:29,040 --> 02:00:30,802 Noriu turėti kažką bendresnio pobūdžio. 2435 02:00:30,802 --> 02:00:31,510 Taigi jūs žinote, ką? 2436 02:00:31,510 --> 02:00:32,450 Noriu tai padaryti. 2437 02:00:32,450 --> 02:00:37,140 Noriu turėti, panašiai kaip nulio daro A tarkim blokas, bet ne tik 2438 02:00:37,140 --> 02:00:38,680 pasakyti kažką šiek kartų. 2439 02:00:38,680 --> 02:00:41,510 Noriu pasakyti, labai konkrečią eilutę. 2440 02:00:41,510 --> 02:00:43,850 Ir todėl aš ne nori, kad ji tiesiog pasakyti kosulys. 2441 02:00:43,850 --> 02:00:47,660 Noriu pasakyti, kokia eilutė praėjo. 2442 02:00:47,660 --> 02:00:49,960 >> Taigi pastebėti, aš apibendrinti tai, kad dabar 2443 02:00:49,960 --> 02:00:53,110 tarkim jaučiasi gerą vardą už tai, kaip nulio, 2444 02:00:53,110 --> 02:00:55,530 trunka du argumentus, skirtingai nuo nulio. 2445 02:00:55,530 --> 02:00:56,570 Vienas iš jų yra eilutė. 2446 02:00:56,570 --> 02:00:57,300 Vienas iš jų yra int. 2447 02:00:57,300 --> 02:00:58,130 >> Ir aš galėčiau juos pereiti. 2448 02:00:58,130 --> 02:01:00,713 Aš tiesiog lyg idėjos pasakyti eilutę, ir tada 2449 02:01:00,713 --> 02:01:01,940 kiek kartų vėliau. 2450 02:01:01,940 --> 02:01:03,970 Tuštuma reiškia, kad jis vis dar negrąžina nieko. 2451 02:01:03,970 --> 02:01:06,428 Tai tik vizualus pusė poveikis, pavyzdžiui, su [? Jordanija,?] 2452 02:01:06,428 --> 02:01:08,240 žodinis šalutinis poveikis šaukti. 2453 02:01:08,240 --> 02:01:12,630 Jis vis dar daro kažką n kartų, 0 iki, bet nėra lygus n. 2454 02:01:12,630 --> 02:01:14,540 Tai reiškia, N bendras kartus. 2455 02:01:14,540 --> 02:01:16,540 Ir tada tiesiog atsispausdinti kad ir ką eilutė yra. 2456 02:01:16,540 --> 02:01:19,060 Taigi aš tikrai apibendrintas Ši eilutė kodo. 2457 02:01:19,060 --> 02:01:22,460 Taigi, dabar, kaip man įgyvendinti kosulys funkcija? 2458 02:01:22,460 --> 02:01:25,520 >> Galiu padaryti void kosulys. 2459 02:01:25,520 --> 02:01:28,501 Ir aš vis dar galite imtis, kaip daug kartų norite kosulys. 2460 02:01:28,501 --> 02:01:29,250 Bet žinote ką? 2461 02:01:29,250 --> 02:01:31,240 Dabar galiu punktas turi pasakyti. 2462 02:01:31,240 --> 02:01:36,540 >> Galiu skambinti pasakyti su Žodis kosulys, einančios į n. 2463 02:01:36,540 --> 02:01:40,410 O jei aš noriu taip pat įgyvendinti tiesiog for fun, čiaudant funkcija, 2464 02:01:40,410 --> 02:01:42,290 Galiu čiaudėti tam tikrą skaičių kartų. 2465 02:01:42,290 --> 02:01:47,300 Ir galiu laikyti pakartotinai n, nes pastebėti, kad M Šiame kontekste arba taikymo srities 2466 02:01:47,300 --> 02:01:49,470 egzistuoja tik per šią funkciją. 2467 02:01:49,470 --> 02:01:52,767 >> Ir n šiuo atveju tik egzistuoja per šią funkciją čia. 2468 02:01:52,767 --> 02:01:54,600 Taigi mes grįžti į Šie apimties klausimus. 2469 02:01:54,600 --> 02:02:01,160 Ir čia, aš tik norėčiau pasakyti, achoo, tada n kartų, kabliataškis. 2470 02:02:01,160 --> 02:02:04,340 >> Ir dabar, aš tiesiog reikia skolintis tai funkcija parašai čia. 2471 02:02:04,340 --> 02:02:06,290 Taigi kosulys yra teisinga. 2472 02:02:06,290 --> 02:02:10,090 Atkrenta čiaudėti yra teisinga dabar. 2473 02:02:10,090 --> 02:02:12,390 >> Ir aš vis dar tiesiog reikia pasakyti. 2474 02:02:12,390 --> 02:02:18,990 Taigi, aš ruošiuosi pasakyti, tarkim eilutė S, int n, kabliataškis. 2475 02:02:18,990 --> 02:02:22,010 Taigi aš per Inžinerijos gi iš šios programos. 2476 02:02:22,010 --> 02:02:23,760 >> Ir tai daro ne nebūtinai reiškia tai 2477 02:02:23,760 --> 02:02:26,343 ką daryti, kai raštu net programas Paprasčiausias. 2478 02:02:26,343 --> 02:02:29,280 Imtis ko nors tai akivaizdžiai tikrai paprasta, tikrai trumpas, 2479 02:02:29,280 --> 02:02:31,800 ir ją iš naujo įdiegti naudojant taip per daug kodą. 2480 02:02:31,800 --> 02:02:34,560 Bet jūs iš tikrųjų pamatysite ir laikas atsigręžti į šiuos pavyzdžius, 2481 02:02:34,560 --> 02:02:38,610 ir suvokti, oi, tai yra žingsniai mes priėmėme, kad iš tikrųjų apibendrinti, 2482 02:02:38,610 --> 02:02:40,797 veiksnys kažką iš, kol ne dienos pabaigoje 2483 02:02:40,797 --> 02:02:42,380 mano kodas yra iš tikrųjų labai protinga. 2484 02:02:42,380 --> 02:02:45,960 Nes jei aš noriu kosulys trys kartų tada čiaudėti tris kartus, 2485 02:02:45,960 --> 02:02:50,420 Aš tiesiog ketinate pakartotas tai, Programa padaryti kosulį, ir paleisti kosulys. 2486 02:02:50,420 --> 02:02:53,620 Ir aš turiu tris kosulys ir trys čiaudint. 2487 02:02:53,620 --> 02:02:55,990 >> Ir todėl tai yra pagrindinis paradigma, jei norite, 2488 02:02:55,990 --> 02:03:00,110 kiek mes galime eiti apie realiai įgyvendinti programą. 2489 02:03:00,110 --> 02:03:03,220 Bet tegul tik pamatyti, ką tai mes darome visą šį laiką, 2490 02:03:03,220 --> 02:03:06,940 ir ką kai kurie iš galutinių gabalus yra už šią paprastą komandą. 2491 02:03:06,940 --> 02:03:09,620 Tuo dienos pabaigos, mes buvo naudojant žvangėjimas, kaip mūsų kompiliatorių. 2492 02:03:09,620 --> 02:03:11,494 Mes jau raštu šaltinį kodas, konvertuoti jį 2493 02:03:11,494 --> 02:03:12,820 per žvangėjimas į mašininį kodą. 2494 02:03:12,820 --> 02:03:15,540 >> Ir mes jau naudojate Padaryti tik siekiant palengvinti mūsų klavišų taip 2495 02:03:15,540 --> 02:03:20,740 kad mes neturime prisiminti tie užkalbėjimai apie pati žvangėjimas. 2496 02:03:20,740 --> 02:03:22,640 Bet kas yra Padaryti tikrųjų daro? 2497 02:03:22,640 --> 02:03:24,750 Ir, savo ruožtu, kas yra Žvangėjimas tikrųjų daro? 2498 02:03:24,750 --> 02:03:28,790 >> Pasirodo, nors mes supaprastinta Šiandienos diskusija, sakydamas, 2499 02:03:28,790 --> 02:03:33,090 vartojate kodą, perduoti ją kaip įėjimo į kompiliatorių, kuris suteikia jums 2500 02:03:33,090 --> 02:03:35,750 galingumas mašina kodas, paaiškėja, ten 2501 02:03:35,750 --> 02:03:37,420 keletas skirtingų žingsnių viduje ten. 2502 02:03:37,420 --> 02:03:41,940 Bei rengiant atsitinka būti skėtis terminas, visa krūva žingsnius. 2503 02:03:41,940 --> 02:03:43,970 Bet tegul tiesiog erzinti tai iš tikrųjų greitai. 2504 02:03:43,970 --> 02:03:48,070 >> Pasirodo, kad mes darome daugiau dalykų, kiekvieną kartą, kai aš paleisti programą, 2505 02:03:48,070 --> 02:03:50,990 arba kiekvieną kartą aš parengia programą šiandien. 2506 02:03:50,990 --> 02:03:55,020 Taigi pirminio apdorojimo remiasi this-- nieko C programa, 2507 02:03:55,020 --> 02:03:58,720 kaip matysime vėl ir vėl, kad prasideda šio grotelėmis, 2508 02:03:58,720 --> 02:04:03,320 arba hashtag simbolis čia reiškia tai Preprocesorius direktyva. 2509 02:04:03,320 --> 02:04:07,330 Tai reiškia, kad, šiuo atveju, ei kompiuteris, kažką daryti su šiuo failu 2510 02:04:07,330 --> 02:04:09,430 kol jūs iš tikrųjų kaupia savo nuosavą kodą. 2511 02:04:09,430 --> 02:04:15,220 >> Šiuo atveju, maišos apima yra, iš esmės, C anketa būdas pasakyti, 2512 02:04:15,220 --> 02:04:19,325 ei kompiuteris, eikite gauti turinį iš CS50.h ir įklijuokite jį čia. 2513 02:04:19,325 --> 02:04:22,170 Ei kompiuteryje, eikite gauti turinys standartinio IO.h, 2514 02:04:22,170 --> 02:04:24,690 kur, kad yra dėl kietąjį diską, įdėkite jį čia. 2515 02:04:24,690 --> 02:04:27,390 Taigi tie dalykai atsitiks Pirmasis pirminio apdorojimo metu. 2516 02:04:27,390 --> 02:04:28,880 >> Ir klingsėti daro visa tai mums. 2517 02:04:28,880 --> 02:04:30,510 Ir ji ją taip adyti greitai, jums net nereikia 2518 02:04:30,510 --> 02:04:32,000 matyti keturis skirtingus dalykus vyksta. 2519 02:04:32,000 --> 02:04:34,100 Bet tai pirmas toks žingsnis. 2520 02:04:34,100 --> 02:04:35,560 >> Kas iš tikrųjų vyksta toliau? 2521 02:04:35,560 --> 02:04:38,320 Na, kitą oficialus žingsnis yra sudarymą. 2522 02:04:38,320 --> 02:04:40,385 Ir paaiškėja, kad Sudarant programą 2523 02:04:40,385 --> 02:04:44,060 techniškai tai vyksta nuo kodo, stuff mes 2524 02:04:44,060 --> 02:04:47,890 buvo raštu šiandien kažką vadinamas surinkimo kodas, kažkas 2525 02:04:47,890 --> 02:04:49,260 kad atrodo šiek tiek kitoks. 2526 02:04:49,260 --> 02:04:51,050 >> Ir, iš tiesų, galime pamatyti tai labai greitai. 2527 02:04:51,050 --> 02:04:53,890 Leiskite tikrųjų eiti į mano IDE. 2528 02:04:53,890 --> 02:04:58,050 Leiskite man eiti į priekį ir atvira hello.c, kuris yra pirmasis programa, su kuria mes 2529 02:04:58,050 --> 02:04:59,120 prasidėjo šiandien. 2530 02:04:59,120 --> 02:05:04,130 Ir leiskite man eiti į priekį ir paleisti žvangėjimas A šiek tiek kitaip, klingsėti-S, hello.c, 2531 02:05:04,130 --> 02:05:07,720 kuris yra iš tikrųjų ketiname duok man kitą failą hello.s. 2532 02:05:07,720 --> 02:05:10,330 >> Ir mes tikriausiai niekada vėl pamatyti šį kodą natūra. 2533 02:05:10,330 --> 02:05:13,030 Pavartojus žemesnio lygio sistemos klasė kaip CS61, 2534 02:05:13,030 --> 02:05:14,920 pamatysite daug daugiau Šio kodo rūšies. 2535 02:05:14,920 --> 02:05:17,020 Bet tai asemblerio kalba. 2536 02:05:17,020 --> 02:05:22,050 Tai X86 asemblerio kalba kad CPU, kuris yra grindžiamas 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE tiesų supranta. 2538 02:05:24,460 --> 02:05:27,060 >> Ir paslaptingas, kaip ji veikia atrodo, kad yra kažkas 2539 02:05:27,060 --> 02:05:29,180 kompiuteris supranta gana gerai. 2540 02:05:29,180 --> 02:05:30,790 Q punktas tai yra atimties. 2541 02:05:30,790 --> 02:05:31,660 Yra judesiai. 2542 02:05:31,660 --> 02:05:35,730 >> Yra skambina funkcijų čia x oring, judėjimas, add, pop, 2543 02:05:35,730 --> 02:05:36,430 grįžti. 2544 02:05:36,430 --> 02:05:38,850 Taigi yra keletas labai žemo lygio instrukcijos 2545 02:05:38,850 --> 02:05:41,280 kad procesorius suprantu, kad Aš užsiminiau anksčiau. 2546 02:05:41,280 --> 02:05:43,100 Tai yra tai, ką "Intel" viduje. 2547 02:05:43,100 --> 02:05:45,030 >> Yra modeliai nuliai ir tie, kurie 2548 02:05:45,030 --> 02:05:51,800 žemėlapį į juos arcanely suformuluotas, tačiau šiek tiek gerai pavadinta, instrukcijos, 2549 02:05:51,800 --> 02:05:52,780 taip sakant. 2550 02:05:52,780 --> 02:05:54,780 Tai yra tai, kas atsitinka, kai Jūs kaupia kodą. 2551 02:05:54,780 --> 02:05:58,560 Jūs gaunate surinkimas kalba iš jo, kuris 2552 02:05:58,560 --> 02:06:04,680 reiškia, kad Trečiasis žingsnis yra surinkti kad surinkimas kodą į galiausiai 2553 02:06:04,680 --> 02:06:09,080 mašina code-- nulių ir, ne tekstas, kad mes tik pamačiau prieš momentas. 2554 02:06:09,080 --> 02:06:13,370 >> Taigi iš anksto apdorojimas ar tai rasite ir pakeisti, ir keletas kitų dalykų. 2555 02:06:13,370 --> 02:06:16,430 Kaupimas trunka jūsų šaltinis Kodas iš C kodo 2556 02:06:16,430 --> 02:06:18,980 kad mes rašė, kad susirinkimų kodas, kad mes tiesiog žvilgtelėjau. 2557 02:06:18,980 --> 02:06:22,170 Montavimas trunka šioje asamblėjoje kodas nulių ir tie 2558 02:06:22,170 --> 02:06:24,680 kad CPU tikrai bus suprasti tuo dienos pabaigoje. 2559 02:06:24,680 --> 02:06:27,630 Ir susiejimas yra paskutinis žingsnis kad atsitinka us-- vėl 2560 02:06:27,630 --> 02:06:29,830 taip greitai mes net notice--, kad sako, 2561 02:06:29,830 --> 02:06:32,460 ei kompiuteris, imtis visų NULIUS ir tie, kurie 2562 02:06:32,460 --> 02:06:36,750 lėmė sudarymo Dovydo kodą ir jo pagrindinė funkcija šiuo atveju. 2563 02:06:36,750 --> 02:06:39,160 >> Ir ei kompiuteris, eikite gauti visi nulių ir 2564 02:06:39,160 --> 02:06:42,180 kad CS50 darbuotojai rašė viduje CS50 bibliotekoje. 2565 02:06:42,180 --> 02:06:43,440 Sumaišykite tie su Dovydo. 2566 02:06:43,440 --> 02:06:46,648 Ir ei kompiuteryje, eikite gauti visus nulius ir tie, kurie kažkas rašė metų 2567 02:06:46,648 --> 02:06:47,470 prieš už printf. 2568 02:06:47,470 --> 02:06:49,880 Ir pridėti tuos Into the Visa tai, kad mes 2569 02:06:49,880 --> 02:06:52,870 gavau mano nulių ir The CS50 štabo nulių ir, 2570 02:06:52,870 --> 02:06:55,370 kad printf nulių ir, ir visa kita mes naudojame. 2571 02:06:55,370 --> 02:07:00,410 >> Jie visi gauti sujungti kartu į vieną programa, vadinama, šiuo atveju, labas. 2572 02:07:00,410 --> 02:07:03,141 Taigi nuo šiol, mes tiesiog naudoti žodį sudarymą. 2573 02:07:03,141 --> 02:07:06,390 Ir mes priimame kaip savaime, kad kai mes sakome, sudaryti savo programą, tai reiškia, 2574 02:07:06,390 --> 02:07:08,849 ei padaryti pirminį tvarkymą, montavimas, ir susiejimas. 2575 02:07:08,849 --> 02:07:11,890 Bet ten tikrai kai sultingas Daiktai ten vyksta po gaubtu. 2576 02:07:11,890 --> 02:07:13,723 Ir ypač jei gauti smalsu šiek tiek laiko, 2577 02:07:13,723 --> 02:07:15,900 galite pradėti išnyra aplink šio žemesnio lygio. 2578 02:07:15,900 --> 02:07:19,660 Bet dabar, suprantu, kad tarp šiandienos takeaways 2579 02:07:19,660 --> 02:07:23,420 yra gana tiesiog pradžioje proceso, 2580 02:07:23,420 --> 02:07:26,700 gauti patogi su kažkas panašaus hello world. 2581 02:07:26,700 --> 02:07:29,575 Iš tiesų, dauguma, ką mes padarėme šiandien tikrai nebus kriaukle super greitai. 2582 02:07:29,575 --> 02:07:31,491 Ir tai bus šiek tiek laikas, o kai praktika. 2583 02:07:31,491 --> 02:07:33,864 Ir šansai yra, jūs rūšiuoti iš norime, kad pasiektų savo klaviatūra 2584 02:07:33,864 --> 02:07:34,780 arba klykauti į ekraną. 2585 02:07:34,780 --> 02:07:35,880 Ir visa tai Gerai. 2586 02:07:35,880 --> 02:07:38,320 Nors, galbūt bandyti ne tai padaryti bibliotekoje tiek daug. 2587 02:07:38,320 --> 02:07:40,820 >> Ir galiausiai, jūs Gebėti nors pradėti 2588 02:07:40,820 --> 02:07:44,580 matome modelius, tiek geros kodas kad rašėte ir klaidų 2589 02:07:44,580 --> 02:07:45,370 kad jūs atlikote. 2590 02:07:45,370 --> 02:07:48,965 Ir panašiai kaip proceso tampa TF arba CA yra panašus, 2591 02:07:48,965 --> 02:07:51,590 Jūs pradėsite geriau ir geriau pamatyti tuos modelius, 2592 02:07:51,590 --> 02:07:53,774 ir tik sprendžiant savo savo problemas galiausiai. 2593 02:07:53,774 --> 02:07:56,940 Tuo tarpu, ten bus daug mums skolinti jums paramą ir jums 2594 02:07:56,940 --> 02:07:57,481 per tai. 2595 02:07:57,481 --> 02:07:59,450 Ir rašymo langų už visų problemų 2596 02:07:59,450 --> 02:08:01,366 jums reikia vadovautis per visi iš komandų 2597 02:08:01,366 --> 02:08:05,330 kad aš tikrai žinau iš daug praktikos dabar, 2598 02:08:05,330 --> 02:08:07,380 bet galėjo nuskraidinti virš galvos dabar. 2599 02:08:07,380 --> 02:08:08,580 Ir tai visiškai gerai. 2600 02:08:08,580 --> 02:08:11,230 >> Bet, galų gale, jūs ketinate pradėti pamatyti modeliai atsirasti. 2601 02:08:11,230 --> 02:08:14,260 Ir kai jūs saves palikti visas kvailas detalės, pavyzdžiui, skliausteliuose, 2602 02:08:14,260 --> 02:08:16,710 ir garbanotas petnešos, ir kabliataškiai, ir stuff, tiesą sakant, 2603 02:08:16,710 --> 02:08:19,360 kad yra ne visi intelektualiai įdomu. 2604 02:08:19,360 --> 02:08:22,690 Ir ji yra ne tikslas vartojant bet kokį įvadinio užsiėmimo. 2605 02:08:22,690 --> 02:08:24,410 Tai idėjos, kurios ketina pailsėti. 2606 02:08:24,410 --> 02:08:26,659 >> Tai kilpos, o sąlygos, ir funkcijos, kurios, 2607 02:08:26,659 --> 02:08:30,552 ir galingiau abstrakcija, ir kodas faktoringas, 2608 02:08:30,552 --> 02:08:33,510 ir geras dizainas ir gera stiliaus, ir galiausiai teisingumas 2609 02:08:33,510 --> 02:08:37,330 Jūsų kodas, tai galiausiai ketina klausimas labiausiai. 2610 02:08:37,330 --> 02:08:40,925 Taigi, kitą savaitę, mes imsimės juos idėjos, kad mes pirmą kartą pamačiau per Scratch 2611 02:08:40,925 --> 02:08:42,800 ir dabar išversti C. Ir mes pradėsime 2612 02:08:42,800 --> 02:08:45,740 pasirinkti pirmąją iš Žinoma nekilnojamojo pasaulio domenai. 2613 02:08:45,740 --> 02:08:50,140 >> Mes sutelkti dėmesį į saugumą pasaulyje, o konkrečiau kriptografijos, 2614 02:08:50,140 --> 02:08:51,980 iš kodavimo informacijos str. 2615 02:08:51,980 --> 02:08:54,000 Ir vienas iš pirmųjų problemos tu 2616 02:08:54,000 --> 02:08:56,840 gaus rašyti ne tik žaisti su kai kurių sintaksė 2617 02:08:56,840 --> 02:08:59,880 ir sprendžiant kai logiška problemos, galiausiai prieš ilgas, 2618 02:08:59,880 --> 02:09:03,960 yra iš tikrųjų peštynės arba užšifruoti, ir galiausiai iššifruoti informaciją. 2619 02:09:03,960 --> 02:09:06,470 Ir viskas, ką padarei Šiandien bus gana žemas 2620 02:09:06,470 --> 02:09:09,190 lygis, yra tik ketina leisti mums imtis vieno, ir vienas, 2621 02:09:09,190 --> 02:09:13,550 ir dar vienas žingsnis link aukščiau raštu įdomiausią kodą dar. 2622 02:09:13,550 --> 02:09:15,050 >> Taigi daugiau apie tai kitą savaitę. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [Vaizdo įrašų atkuriamų] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> -Kas Gali man pasakyti apie paskutinį kartą matėte jį? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 -Kas Aš galiu pasakyti, tikrai? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 Aš turiu galvoje, tai buvo kaip ir visi kiti prieš gamybą repeticija, 2631 02:09:35,340 --> 02:09:40,510 išskyrus ten buvo kažkas pasakė pačioje pabaigoje, kad pakimba su manimi. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -Tai Buvo CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -Tai Yra supjaustyti visi, puikus darbas ant repeticija. 2636 02:09:52,190 --> 02:09:53,070 >> -Tai Pietums? 2637 02:09:53,070 --> 02:09:54,986 >> -Yeah, Tu ir aš galiu patraukti sumuštinį truputį. 2638 02:09:54,986 --> 02:09:58,380 Leiskite aptarime su Davidas tikrai greitai. 2639 02:09:58,380 --> 02:09:59,160 Dovydas? 2640 02:09:59,160 --> 02:10:01,260 Dovydas? 2641 02:10:01,260 --> 02:10:03,110 >> [PABAIGA PLAYBACK]