1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [Muzikos grojimo] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 David J. Malan: Gerai. 5 00:00:12,660 --> 00:00:15,590 Tai CS50, ir tai yra iš dviejų savaitės pradžia. 6 00:00:15,590 --> 00:00:19,120 Taigi pradėkime šiandien su vabalo. 7 00:00:19,120 --> 00:00:20,974 Klaidą, žinoma, yra klaida programoje, 8 00:00:20,974 --> 00:00:22,890 ir jūs gausite labai susipažinę su šios sąvokos 9 00:00:22,890 --> 00:00:26,050 jei jūs niekada užprogramuotas anksčiau. pset0 ir dabar pset1. 10 00:00:26,050 --> 00:00:29,280 Tačiau aptarkime kažką tiek paprastas ne pirmas. 11 00:00:29,280 --> 00:00:32,189 Ši programa čia, kad I išmetė kartu iš anksto, 12 00:00:32,189 --> 00:00:37,280 ir aš tvirtina, kad tai turėtų spausdinti 10 žvaigždutės ant ekrano naudojant printf, 13 00:00:37,280 --> 00:00:41,020 bet tai, matyt, Buggy tam tikru būdu. 14 00:00:41,020 --> 00:00:45,370 >> Atsižvelgiant į tai, kad nurodyta, kad jis turi atspausdinti 10 žvaigždės, 15 00:00:45,370 --> 00:00:50,230 tačiau ji negali matyt, kas jūs reikalauti yra klaida? 16 00:00:50,230 --> 00:00:52,004 Taip? 17 00:00:52,004 --> 00:00:54,420 Taigi, tai viena klaida išjungti, ir ką visa tai reiškia? 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 Gerai. 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 Puikus. 22 00:01:10,410 --> 00:01:13,930 Taigi mes nenurodyta pradėti vertę nuliui i, 23 00:01:13,930 --> 00:01:18,399 ir mes nurodėte n vertę 10, bet mes naudojamas mažesnis arba lygus. 24 00:01:18,399 --> 00:01:21,190 Ir todėl, kad tai yra du simbolių ir ne tik vienas simbolis, 25 00:01:21,190 --> 00:01:22,630 kaip ir matematikos knygos yra ta, kad jūs neturite 26 00:01:22,630 --> 00:01:24,880 išreikšti būdas vienas simbolis ekvivalentas. 27 00:01:24,880 --> 00:01:28,450 >> Taigi tai reiškia, kad mažiau, bet jei pradėti skaičiuoti ne iki nulio, 28 00:01:28,450 --> 00:01:31,690 bet jums suskaičiuoti visą kelią iki per ir lygi 10, 29 00:01:31,690 --> 00:01:34,170 jūs, žinoma, ketina skaičius 11 dalykų iš viso. 30 00:01:34,170 --> 00:01:35,900 Ir taip jūs ketinate spausdinti 11 žvaigždžių. 31 00:01:35,900 --> 00:01:37,990 Taigi, kas gali būti už tai pataisyti? 32 00:01:37,990 --> 00:01:39,970 Taip? 33 00:01:39,970 --> 00:01:43,980 >> Taigi tiesiog nustatykite mažiau nei arba lygi tiesiog būti mažesnis nei, 34 00:01:43,980 --> 00:01:46,250 ir ten, aš teigti, galbūt kitas sprendimas, taip pat. 35 00:01:46,250 --> 00:01:47,210 Kas gali dar galite padaryti? 36 00:01:47,210 --> 00:01:48,590 Taip? 37 00:01:48,590 --> 00:01:53,660 >> Taigi pradėkite lygu ją 1 ir palikti mažesnis arba lygus. 38 00:01:53,660 --> 00:01:56,187 Ir tiesą sakant aš norėčiau teigti, , kad tipiškas žmogaus, 39 00:01:56,187 --> 00:01:57,770 tai tikriausiai daugiau paprasta. 40 00:01:57,770 --> 00:02:00,280 Pradėti skaičiuoti ne 1 ir suskaičiuoti per 10. 41 00:02:00,280 --> 00:02:01,690 Iš esmės tai, ką tu kalbi. 42 00:02:01,690 --> 00:02:04,010 >> Tačiau realybė yra programavimas, kaip mes matėme, 43 00:02:04,010 --> 00:02:07,598 kompiuterių mokslininkai ir programuotojai paprastai neturi pradėti skaičiuoti iki nulio. 44 00:02:07,598 --> 00:02:09,389 Ir taip, kad viskas gerai, kai jums priprasti prie jo. 45 00:02:09,389 --> 00:02:12,640 Jūsų būklę, paprastai būti kažkas panašaus į mažiau nei. 46 00:02:12,640 --> 00:02:14,910 Taigi tiesiog logiška klaida, kad mes galėtume dabar 47 00:02:14,910 --> 00:02:17,990 nustatyti ir galiausiai perkompiliuoti tai ir gauti tik 10. 48 00:02:17,990 --> 00:02:19,610 >> Na, kaip apie šią klaidą čia? 49 00:02:19,610 --> 00:02:24,200 Čia, vėlgi, aš teigti, kad turiu spausdinti 10 stars-- tikslas 50 00:02:24,200 --> 00:02:28,140 po vieną eilutėje šį kartą, tačiau taip nėra. 51 00:02:28,140 --> 00:02:30,940 Prieš mes siūlome tai, kas nustatyti yra, ką tai 52 00:02:30,940 --> 00:02:34,640 spausdinti vizualiai, jei aš buvo surinkti ir paleisti šią programą jūs manote? 53 00:02:34,640 --> 00:02:35,140 Taip? 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> Žvaigždžių. 56 00:02:38,860 --> 00:02:41,690 Taigi visi ant žvaigždutės toje pačioje eilutėje yra tai, ką aš girdėjau, 57 00:02:41,690 --> 00:02:43,391 ir tada naujoji linija charakteris. 58 00:02:43,391 --> 00:02:44,140 Taigi pabandykime tai. 59 00:02:44,140 --> 00:02:48,710 Todėl įsitikinkite, buggy-1, įveskite, ir matau Zaszczękać komandą 60 00:02:48,710 --> 00:02:50,090 kad mes kalbėjome apie paskutinį kartą. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1, ir iš tiesų aš matau visus 10 žvaigždžių toje pačioje eilutėje, nors aš reikalauti 62 00:02:55,180 --> 00:02:58,690 mano specifikacijos tiesiog viršuje komentarą kodas, aš ketina padaryti vieną kiekvienam 63 00:02:58,690 --> 00:02:59,230 linija. 64 00:02:59,230 --> 00:03:00,580 Bet tai atrodo teisinga. 65 00:03:00,580 --> 00:03:04,620 >> Dabar linija 15 atrodo aš spausdinti žvaigždę, o tada linija 16 66 00:03:04,620 --> 00:03:06,620 atrodo aš spausdinimas Naujoji linija charakteris, 67 00:03:06,620 --> 00:03:09,560 ir jie abu atitrauktas taip, Aš viduje kilpos aiškiai. 68 00:03:09,560 --> 00:03:13,610 Taigi neturėtų aš daryti žvaigždė, nauja linija, žvaigždutė, nauja linija, žvaigždutė, nauja linija? 69 00:03:13,610 --> 00:03:14,110 Taip? 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> Taip, skirtingai kalba kaip Python, jei esate susipažinę, 72 00:03:21,240 --> 00:03:23,540 įdubimas nėra Nesvarbu prie kompiuterio. 73 00:03:23,540 --> 00:03:25,280 Tai tik svarbu į žmogaus. 74 00:03:25,280 --> 00:03:29,860 Todėl nors čia aš išrado linijų 15 ir 16-- kad atrodo gražiai, 75 00:03:29,860 --> 00:03:31,330 bet kompiuteris nerūpi. 76 00:03:31,330 --> 00:03:34,640 Kompiuteris rūpi realiai garbanotas petnešos 77 00:03:34,640 --> 00:03:36,310 aplink šias kodo eilutes. 78 00:03:36,310 --> 00:03:39,520 >> Taigi, kad tai clear-- kaip ir Scratch-- kad šių dviejų eilučių kodo 79 00:03:39,520 --> 00:03:40,450 turėtų būti vykdomas. 80 00:03:40,450 --> 00:03:44,390 Kaip vienos iš tų geltona Scratch dėlionės vienetų, vėl ir vėl ir vėl. 81 00:03:44,390 --> 00:03:50,920 >> Taigi dabar, jei aš vėl paleiskite program-- ./buggy-2-- Hm. 82 00:03:50,920 --> 00:03:51,770 Turiu klaida dabar. 83 00:03:51,770 --> 00:03:54,212 Ką aš pamiršti tai padaryti? 84 00:03:54,212 --> 00:03:55,420 Taip, taip, aš ne rinkti jį. 85 00:03:55,420 --> 00:03:56,740 Todėl įsitikinkite, buggy-2. 86 00:03:56,740 --> 00:03:59,840 Nėra tokio failo, nes aš ne iš tikrųjų sudaryti antrą versiją. 87 00:03:59,840 --> 00:04:04,860 Taigi dabar įdomu nedeklaruota variable-- ne 2. 88 00:04:04,860 --> 00:04:05,510 Mes darome 1. 89 00:04:05,510 --> 00:04:11,050 Padaryti Buggy-1-- ./buggy-1-- ir dabar kiekvienas iš jų yra toje pačioje eilutėje. 90 00:04:11,050 --> 00:04:13,880 >> Dabar yra į išimtis tai turėtų teiginys mano 91 00:04:13,880 --> 00:04:15,520 kad jums reikia šiuos vingiuotus skliaustus. 92 00:04:15,520 --> 00:04:20,160 Kada ji iš tikrųjų OK-- jei jūs pastebėjau skyriuje ar textbooks-- 93 00:04:20,160 --> 00:04:22,130 praleisti garbanotas petnešos? 94 00:04:22,130 --> 00:04:22,630 Taip? 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> Būtent. 97 00:04:26,870 --> 00:04:28,940 Kai yra tik vienas linija kodą, kuris Jums 98 00:04:28,940 --> 00:04:32,830 noriu būti susijęs su kilpa, kaip mūsų pirmame pavyzdyje. 99 00:04:32,830 --> 00:04:36,380 Tai visiškai teisėtas praleisti garbanotas petnešos 100 00:04:36,380 --> 00:04:40,310 kaip rūšies patogumui nuo jums kompiliatorius. 101 00:04:40,310 --> 00:04:40,810 Taip? 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 Geras klausimas. 104 00:04:43,930 --> 00:04:45,500 Ar tai laikoma stiliaus klaida? 105 00:04:45,500 --> 00:04:49,340 Norėtume promote-- kaip CS50 stilius vadovas, dėl kurių URL 106 00:04:49,340 --> 00:04:51,926 yra pset1-- kad visada naudoti vingiuotus skliaustus. 107 00:04:51,926 --> 00:04:53,550 Žinoma, jei esate naujas į programavimą. 108 00:04:53,550 --> 00:04:56,800 Realybė yra tai, kad mes ne ketina uždrausti jums 109 00:04:56,800 --> 00:04:58,680 nuo daro šiuos patogumais. 110 00:04:58,680 --> 00:05:00,846 Bet jei jūs tik gauti į dalykų sūpynės, 111 00:05:00,846 --> 00:05:04,020 absoliučiai tiesiog visada naudokite garbanoti petnešos, kol gausite pakabinti jį. 112 00:05:04,020 --> 00:05:04,640 Geras klausimas. 113 00:05:04,640 --> 00:05:05,320 >> Viskas gerai. 114 00:05:05,320 --> 00:05:07,660 Taigi, kad tada buvo klaida. 115 00:05:07,660 --> 00:05:09,190 Bent jau kažką gana paprasta. 116 00:05:09,190 --> 00:05:11,260 Ir dar jūs manote tai yra gana primityvus, tiesa? 117 00:05:11,260 --> 00:05:13,635 Tai tarsi pirmą savaitę žiūri kalba 118 00:05:13,635 --> 00:05:14,890 kaip, pamatyti savo klaidas jame. 119 00:05:14,890 --> 00:05:17,250 Tačiau realybė tai yra iš tikrųjų atstovas 120 00:05:17,250 --> 00:05:20,310 kai kurių gana bauginantis problemų kad gali kilti realiame pasaulyje. 121 00:05:20,310 --> 00:05:23,530 >> Taigi kai kurie iš jūsų gali prisiminti jei jums sekti technologijų naujienas, 122 00:05:23,530 --> 00:05:25,740 arba gal net pagauti vėjas tai vasarį 123 00:05:25,740 --> 00:05:29,434 Šio pastaruosius metus, kad "Apple" padarė klaidingai tiek abiejų iOS, 124 00:05:29,434 --> 00:05:31,350 operacinė sistema jų telefonus, ir taip pat 125 00:05:31,350 --> 00:05:34,220 Mac OS operacinė sistema savo stalinių kompiuterių ir nešiojamųjų kompiuterių. 126 00:05:34,220 --> 00:05:36,480 Ir, kad matėte tokių antraščių kaip šis. 127 00:05:36,480 --> 00:05:41,120 Ir po to, "Apple" pažadėjo išspręsti šią klaidą, 128 00:05:41,120 --> 00:05:45,950 ir labai greitai padarė ją išspręsti iOS, bet tada galiausiai sutaisė Mac OS 129 00:05:45,950 --> 00:05:46,810 taip pat. 130 00:05:46,810 --> 00:05:50,370 >> Dabar nė vienas iš šių antraščių tik tikrai atskleisti, kas Esminė problema buvo, 131 00:05:50,370 --> 00:05:55,640 bet klaida buvo sumažinta iki SSL klaida, Secure Sockets Layer. 132 00:05:55,640 --> 00:05:57,390 Ir ilga istorija trumpa, tai programinė įranga 133 00:05:57,390 --> 00:06:01,030 kad mūsų naršyklių ir kitų programinė įranga, naudojama ką daryti? 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> Jei pasakiau, kad SSL dalyvauja, kai jums 136 00:06:06,860 --> 00:06:13,920 aplankyti URL, kuris prasideda https, kas tada gali SSL būti susiję su? 137 00:06:13,920 --> 00:06:14,580 Šifravimas. 138 00:06:14,580 --> 00:06:16,470 Taigi mes kalbame apie tai artimiausiomis dienomis. 139 00:06:16,470 --> 00:06:18,750 Šifravimas, iš meno kodavimo informaciją. 140 00:06:18,750 --> 00:06:22,200 >> Bet ilga istorija trumpa, "Apple" kadaise padarė klaidą 141 00:06:22,200 --> 00:06:25,970 jų įgyvendinimo SSL į programinė įranga, kuri galiausiai įgyvendina 142 00:06:25,970 --> 00:06:30,120 URL kaip HTTPS ar max jungtys ten pat. 143 00:06:30,120 --> 00:06:32,850 Kurios rezultatas yra tai, kad jūsų jungtys galėtų potencialiai 144 00:06:32,850 --> 00:06:33,920 būti sulaikytas. 145 00:06:33,920 --> 00:06:37,130 Ir buvo jūsų nebūtinai šifruojami 146 00:06:37,130 --> 00:06:40,350 jei turėjo tam tikrą blogiukas tarp jūs ir paskirties svetainė, kurie 147 00:06:40,350 --> 00:06:42,170 žinojo, kaip pasinaudoti šia. 148 00:06:42,170 --> 00:06:45,090 >> Dabar "Apple" pagaliau paskelbtas nustatyti pagal tai, pagaliau, 149 00:06:45,090 --> 00:06:46,920 ir aprašymas jų tvirtinimu, buvo tai. 150 00:06:46,920 --> 00:06:49,878 Saugus transporto nesugebėjo patvirtinti Jungties autentiškumas. 151 00:06:49,878 --> 00:06:52,920 Klausimas buvo sprendžiamas atkurti trūkstamus patvirtinimo veiksmus. 152 00:06:52,920 --> 00:06:57,250 >> Taigi tai yra labai ranka banguotas paaiškinimas už tik sakau, kad mes įsukus. 153 00:06:57,250 --> 00:07:00,920 Yra pažodžiui vienas linija kodą, kuris buvo Buggy 154 00:07:00,920 --> 00:07:05,130 jų įgyvendinimo SSL ir jei jūs einate internete ir ieškoti tai 155 00:07:05,130 --> 00:07:07,210 Jūs iš tikrųjų galite rasti originalus kodą. 156 00:07:07,210 --> 00:07:11,960 Pavyzdžiui, tai ekrano vaizdas tik iš gana didelio failo dalis, 157 00:07:11,960 --> 00:07:15,965 bet tai funkcija, matyt, vadinama SSL patikrinti ženklas serverio raktu. 158 00:07:15,965 --> 00:07:17,840 Ir tai užima krūva argumentai ir įėjimai. 159 00:07:17,840 --> 00:07:20,298 Ir mes neketiname sutelkti per daug ten smulkmenomis, 160 00:07:20,298 --> 00:07:24,390 bet jei jums sutelkti dėmesį į kodą viduje tos viršutinis function-- tegul 161 00:07:24,390 --> 00:07:25,590 padidinti, kad. 162 00:07:25,590 --> 00:07:28,140 Galbūt jau įtariate, kas klaida gali 163 00:07:28,140 --> 00:07:31,230 būti, net jei jūs neturite idėjos galiausiai, ką jūs ieškote. 164 00:07:31,230 --> 00:07:35,924 Yra natūra anomalija čia, o tai, ką? 165 00:07:35,924 --> 00:07:38,940 >> Taip, aš ne tikrai patinka dviejų pradziu atrodo nepavyksta. 166 00:07:38,940 --> 00:07:42,060 Atvirai kalbant, aš tikrai nežino, ką pradziu nesugeba priemones, bet turintys du iš jų 167 00:07:42,060 --> 00:07:42,810 nugara prie nugaros. 168 00:07:42,810 --> 00:07:45,290 Tai tiesiog rūšies rubs man intelektualiai neteisingas būdas, 169 00:07:45,290 --> 00:07:48,910 ir iš tiesų, jei mes priartinti tik tas linijas, tai yra C. 170 00:07:48,910 --> 00:07:52,220 >> Taigi Apple kodas aikštelė yra pati parašyta C, 171 00:07:52,220 --> 00:07:55,780 ir tai, matyt, yra tikrai equivalent-- 172 00:07:55,780 --> 00:07:59,060 ne į tą gana įdubimas versija, bet jeigu jūs atpažinsite faktas 173 00:07:59,060 --> 00:08:02,560 kad ten nėra garbanotas petnešos, ką "Apple" tikrai rašė, buvo kodas, kuris atrodo 174 00:08:02,560 --> 00:08:03,540 kaip šis. 175 00:08:03,540 --> 00:08:07,080 Taigi aš Mastelis, ir aš tiesiog nustatė ta prasme, įdubimas 176 00:08:07,080 --> 00:08:10,690 kad jei nėra jokių garbanotas petnešos, kad antra pradziu nepavyksta tai geltona 177 00:08:10,690 --> 00:08:12,500 ketina vykdyti, nesvarbu koks. 178 00:08:12,500 --> 00:08:15,540 Jis nėra susijęs su jei sąlyga virš jo. 179 00:08:15,540 --> 00:08:19,590 >> Taigi, net ir vėl, jei jūs ne visai suprasti, ką tai galėtų galbūt 180 00:08:19,590 --> 00:08:23,230 daryti, žinau, kad kiekvienas iš jų conditions-- kiekvienos iš šių linijų 181 00:08:23,230 --> 00:08:26,180 yra labai svarbus žingsnis į tikrinimo proceso 182 00:08:26,180 --> 00:08:28,350 jei jūsų duomenys yra iš tikrųjų šifruojamas. 183 00:08:28,350 --> 00:08:31,710 Taigi praleidžiant vieną iš šių žingsniai, o ne geriausia idėja. 184 00:08:31,710 --> 00:08:34,840 >> Bet kadangi mes turime tai antra pradziu nepavyksta geltonai, 185 00:08:34,840 --> 00:08:36,840 ir todėl, kad kai mes rūšiuoti estetiškai 186 00:08:36,840 --> 00:08:40,480 perkelti jį į kairę, kur jį logiškai yra tuo momentu, kas 187 00:08:40,480 --> 00:08:43,230 tai reiškia, kad linija kodo žemiau šios antros pradziu 188 00:08:43,230 --> 00:08:46,480 nesugeba Jūs manote? 189 00:08:46,480 --> 00:08:48,860 Jis visada bus praleidžiami. 190 00:08:48,860 --> 00:08:52,100 Taigi gotos paprastai frowned dėl priežasčių, mes tikrai ne eiti į, 191 00:08:52,100 --> 00:08:54,940 ir iš tiesų CS50 mes linkę ne mokyti šį pareiškimą pradziu, 192 00:08:54,940 --> 00:08:58,130 bet jūs galite galvoti pradziu nepavyks, nes prasmė Pasirinkti Pasirinkti 193 00:08:58,130 --> 00:08:59,600 į kitą dalį kodo. 194 00:08:59,600 --> 00:09:03,120 >> Kitaip tariant peršokti per tai paskutinė eilutė iš viso, 195 00:09:03,120 --> 00:09:07,420 ir taip tai kvailas rezultatas paprasta klaida, kad buvo tiesiog 196 00:09:07,420 --> 00:09:10,330 iš turbūt kažkas rezultatas nukopijuoti ir įklijuoti vieną per 197 00:09:10,330 --> 00:09:14,150 daug kartų buvo, kad visa saugumas iOS ir Mac OS 198 00:09:14,150 --> 00:09:18,240 buvo pažeidžiami perimti informaciją blogi vaikinai gana ilgą laiką. 199 00:09:18,240 --> 00:09:19,940 Iki Apple pagaliau išspręsta tai. 200 00:09:19,940 --> 00:09:23,100 >> Dabar, jei kai kurie iš jūsų yra iš tikrųjų veikia senų versijų iOS arba Mac OS, 201 00:09:23,100 --> 00:09:27,250 Jūs galite pereiti į gotofail.com kuris yra svetainė, kad kažkas įsteigti 202 00:09:27,250 --> 00:09:29,190 iš esmės nustatyti, programiškai 203 00:09:29,190 --> 00:09:30,980 jei jūsų kompiuteris yra vis dar pažeidžiama. 204 00:09:30,980 --> 00:09:33,600 Ir tiesą sakant, jei jis yra, tai tikriausiai gera idėja 205 00:09:33,600 --> 00:09:36,870 atnaujinti savo telefoną ar Jūsų Mac šiuo metu. 206 00:09:36,870 --> 00:09:40,120 Bet ten, tiesiog liudija tik tai, kaip šių žemesnio lygio vertinimas 207 00:09:40,120 --> 00:09:42,400 detalės ir gana paprastų idėjų tikrai gali 208 00:09:42,400 --> 00:09:44,590 išversti į sprendimų ir problemos, su kuriomis 209 00:09:44,590 --> 00:09:47,320 affected-- šiame case-- milijonai žmonių. 210 00:09:47,320 --> 00:09:49,107 >> Dabar žodis administracija. 211 00:09:49,107 --> 00:09:50,690 Skyrius pradės šį sekmadienį. 212 00:09:50,690 --> 00:09:53,360 Jūs gausite elektroninį laišką iš savaitgalį apie skyriuje, kuriame taškas 213 00:09:53,360 --> 00:09:55,290 resectioning procesas pradės, jei jūs 214 00:09:55,290 --> 00:09:56,998 supratau dabar jūs turite keletas naujų konfliktų. 215 00:09:56,998 --> 00:10:00,180 Taigi tai atsitinka kiekvienais metais, ir mes įsikurs dienomis ateiti. 216 00:10:00,180 --> 00:10:02,430 >> Biuro hours-- daryti nuolat akis šio grafiko čia. 217 00:10:02,430 --> 00:10:05,100 Keičia truputį šią savaitę, ypač pradžios laikas 218 00:10:05,100 --> 00:10:08,180 ir vietą, todėl nereikia konsultuotis kad prieš antraštę į darbo valandų 219 00:10:08,180 --> 00:10:09,520 bet per ateinančius ketverius naktų. 220 00:10:09,520 --> 00:10:12,680 O dabar žodis vertinimu, ypač kaip jūs pasinerti į problemą 221 00:10:12,680 --> 00:10:14,350 nustato vieną ir už jos ribų. 222 00:10:14,350 --> 00:10:17,070 >> Taigi už specifikacijos, paprastai tai yra 223 00:10:17,070 --> 00:10:20,360 ašys, išilgai kurio mes vertiname savo darbą. 224 00:10:20,360 --> 00:10:23,170 Taikymo sritis nurodo, ką mastu jūsų kodas padargai 225 00:10:23,170 --> 00:10:25,690 funkcijos reikalauja mūsų specifikacija. 226 00:10:25,690 --> 00:10:28,290 Kitaip tariant, kiek gabalas rinkinys padarė jums atsikąsti. 227 00:10:28,290 --> 00:10:30,440 Ar jūs trečdalis ja, jo pusė, 100% jo. 228 00:10:30,440 --> 00:10:33,000 Net jei tai nėra teisinga, kiek bandėte? 229 00:10:33,000 --> 00:10:35,290 Taigi, kad fiksuoja lygį pastangų, ir sumos, 230 00:10:35,290 --> 00:10:38,260 į kurį nukando problemą, problemos. 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- šį vieną, Kiek, jūsų kodas 232 00:10:40,690 --> 00:10:43,150 atitinka mūsų specifikacijos ir be klaidų. 233 00:10:43,150 --> 00:10:44,770 Taigi jis veikia teisingai? 234 00:10:44,770 --> 00:10:48,700 Jei mes suteikti jai tam tikrą indėlį, ar ne mums išvestį, kad mes tikėtis? 235 00:10:48,700 --> 00:10:52,570 Design-- dabar tai pirmiausia itin kokybiniais, 236 00:10:52,570 --> 00:10:56,180 ar tie, kurie reikalauja žmogaus sprendimą. 237 00:10:56,180 --> 00:10:59,690 Ir iš tiesų, tai yra, kodėl mes turime darbuotojų tiek daug mokymo bičiuliais ir, žinoma 238 00:10:59,690 --> 00:11:00,350 padėjėjai. 239 00:11:00,350 --> 00:11:03,480 Kiek yra jūsų kodas parašyta gerai? 240 00:11:03,480 --> 00:11:05,810 >> Ir vėl tai labai kokybinis vertinimas 241 00:11:05,810 --> 00:11:09,100 kad bus dirbti su jumis bi-kryptingos per ateinančias savaites. 242 00:11:09,100 --> 00:11:12,060 Taigi, kad, kai jūs gaunate ne tik skaitmeniniai balai, bet taip pat 243 00:11:12,060 --> 00:11:16,682 raštišką balai, ar įvedėte atsiliepimai, arba raštu atsiliepimą į angliškų žodžių. 244 00:11:16,682 --> 00:11:19,640 Štai ką mes naudosime vairuoti jus link iš tikrųjų rašyti geriau kodą. 245 00:11:19,640 --> 00:11:23,320 Ir paskaitos ir skyriuje mes pabandysime atkreipti out-- taip dažnai, kaip mes can-- 246 00:11:23,320 --> 00:11:26,420 ką daro programa ne tik teisinga ir funkciškai gerai, 247 00:11:26,420 --> 00:11:28,200 bet ir gerai suprojektuoti. 248 00:11:28,200 --> 00:11:31,850 Efektyviausias tai gali būti arba net gražiausia jis gali būti. 249 00:11:31,850 --> 00:11:33,100 >> Kuris mus veda į stilių. 250 00:11:33,100 --> 00:11:36,876 Stilius galiausiai yra estetinis sprendimas. 251 00:11:36,876 --> 00:11:38,750 Ar jums pasirinkti gera pavadinimai savo kintamiesiems? 252 00:11:38,750 --> 00:11:40,330 Ar jūs atitraukiama kodą tinkamai? 253 00:11:40,330 --> 00:11:44,010 Ar tai atrodo gerai, ir todėl, tai lengva kitam žmogui 254 00:11:44,010 --> 00:11:46,550 skaityti jūsų atitinkamas jos teisingumą. 255 00:11:46,550 --> 00:11:50,300 >> Dabar paprastai už mokymo programą, mes nesunkiai šie dalykai apie penkių balų skalę. 256 00:11:50,300 --> 00:11:53,640 Ir leiskite man plaktukas namų vieta kad per tris iš tiesų yra geras. 257 00:11:53,640 --> 00:11:55,550 Labai greitai padaryti žmonės pradėti daryti aritmetiką. 258 00:11:55,550 --> 00:11:58,133 Kai jie gauna trys iš penkias teisingumą tam tikrą pset 259 00:11:58,133 --> 00:12:02,040 ir jie galvoja, kad velniškai, aš ketina 60% kuri iš esmės yra D arba E. 260 00:12:02,040 --> 00:12:03,980 >> Tai ne taip, kaip mes galvoti apie šiuos numerius. 261 00:12:03,980 --> 00:12:06,880 Trijų iš tiesų yra gera, ir tai, ką mes paprastai tikėtis pradžioje 262 00:12:06,880 --> 00:12:09,820 termino, kad jei jūs gaunate iš three's-- krūva gal pora 263 00:12:09,820 --> 00:12:12,540 mugių, iš fours-- pora arba pora poromis, iš fours-- pora 264 00:12:12,540 --> 00:12:13,748 tai gera vieta pradėti. 265 00:12:13,748 --> 00:12:16,320 Ir tol, kol mes matome į viršų trajektorija per tam tikrą laiką, 266 00:12:16,320 --> 00:12:18,540 Jūs esate ypač geroje vietoje. 267 00:12:18,540 --> 00:12:20,752 >> Formulė mes naudojame svoris dalykai yra iš esmės 268 00:12:20,752 --> 00:12:22,710 tai už mokymo programas, kuris tiesiog reiškia, kad mes 269 00:12:22,710 --> 00:12:24,750 suteikti daugiau svorio teisingumą. 270 00:12:24,750 --> 00:12:27,930 Nes labai dažnai teisingumas kad laikosi daugiausia laiko. 271 00:12:27,930 --> 00:12:28,760 Patikėkit manim dabar. 272 00:12:28,760 --> 00:12:31,190 Jūs find-- bent vienoje pset-- kad jums 273 00:12:31,190 --> 00:12:36,790 išleisti 90% savo laiko dirba 10% problema. 274 00:12:36,790 --> 00:12:39,320 >> Ir viskas tarsi veikia išskyrus vieną ar dvi klaidas, 275 00:12:39,320 --> 00:12:41,570 , ir tai yra klaidos, kad jus iki vėlyvos nakties. 276 00:12:41,570 --> 00:12:43,380 Tai yra tie, kurie rūšiuoti pabėgti jums. 277 00:12:43,380 --> 00:12:45,560 Bet po miego ant jo, arba lankyti darbo valandas 278 00:12:45,560 --> 00:12:48,844 ar užduoti klausimus internetu, yra kai jūs gaunate į tą 100% tikslas, 279 00:12:48,844 --> 00:12:50,760 ir tai, kodėl mes svorį teisingumą labiausiai. 280 00:12:50,760 --> 00:12:54,102 Dizainas šiek tiek mažiau, o stiliaus truputį mažiau, nei nurodyta. 281 00:12:54,102 --> 00:12:56,060 Tačiau turėkite mind-- stiliaus turbūt paprasčiausias 282 00:12:56,060 --> 00:12:58,890 iš jų atkąsti kaip už stiliaus vadove. 283 00:12:58,890 --> 00:13:01,580 >> Ir dabar, rimtesnė dėmesį į akademinio sąžiningumo. 284 00:13:01,580 --> 00:13:05,000 CS50 yra gaila skirtumą nuo yra didžiausia gamintoja Ad Board 285 00:13:05,000 --> 00:13:07,330 atvejų beveik kasmet istoriškai. 286 00:13:07,330 --> 00:13:11,012 Tai ne todėl, kad studentai apgauti CS50 bet labiau nei bet kuri kita klase, 287 00:13:11,012 --> 00:13:13,720 bet todėl, kad pagal darbo pobūdžio, Faktas, kad tai elektroninė, 288 00:13:13,720 --> 00:13:16,636 Faktas, kad mes žiūrime į jį, ir Tai mes esame kompiuterių mokslininkai, 289 00:13:16,636 --> 00:13:20,570 Galiu pasakyti, kad mes, deja, labai geras aptikti jį. 290 00:13:20,570 --> 00:13:22,710 >> Taigi, ką tai reiškia realiai? 291 00:13:22,710 --> 00:13:24,820 Taigi, už mokymo programas, Žinoma, filosofija 292 00:13:24,820 --> 00:13:28,090 tikrai skliautais būtų pagrįsta. 293 00:13:28,090 --> 00:13:31,684 Yra tai linija tarp daro savo darbą dėl savo 294 00:13:31,684 --> 00:13:34,100 ir gauti šiek tiek pagrįsta pagalbos iš draugų, 295 00:13:34,100 --> 00:13:38,020 ir iš karto daryti, kad dirbti savo draugas, arba siųsti jam ar jai savo kodą 296 00:13:38,020 --> 00:13:41,080 kad jis ar ji gali tiesiog imtis arba skolintis jį teisę. 297 00:13:41,080 --> 00:13:43,580 Ir kad kerta liniją kad mes atkreipiamas į klasę. 298 00:13:43,580 --> 00:13:45,410 >> Žiūrėti, mokymo programą galiausiai linijų 299 00:13:45,410 --> 00:13:48,209 kad mes atkreipiame kaip pagrįstai ir neprotinga elgesys, 300 00:13:48,209 --> 00:13:50,000 bet tai tikrai Varėna žemyn į esmę 301 00:13:50,000 --> 00:13:53,980 savo darbą, kuriems reikia būti savo pabaigos. 302 00:13:53,980 --> 00:13:56,230 Dabar su tai sakė, yra euristinis. 303 00:13:56,230 --> 00:13:58,980 Kadangi, kaip jūs galite imagine-- nuo darbo valandų ir vizualizacijomis 304 00:13:58,980 --> 00:14:01,060 ir video mes parodyta taip far-- CS50 305 00:14:01,060 --> 00:14:04,530 iš tikrųjų reiškia būti kaip bendradarbiavimo ir kaip bendradarbiauti ir kaip socialinės 306 00:14:04,530 --> 00:14:06,450 kaip įmanoma. 307 00:14:06,450 --> 00:14:08,570 Kaip, bendradarbiaujant, kaip ji yra tiksli. 308 00:14:08,570 --> 00:14:11,314 >> Bet tai sakė, euristinis, kaip jūs pamatysite mokymo programą, 309 00:14:11,314 --> 00:14:12,980 yra tai, kad, kai jūs tam tikra problema. 310 00:14:12,980 --> 00:14:16,470 Jūs turite tam tikrą savo kodą klaida, kad jus negali išspręsti, tai yra protinga jums 311 00:14:16,470 --> 00:14:18,039 parodyti savo kodą kam nors kitam. 312 00:14:18,039 --> 00:14:21,080 Draugas net klasėje draugas sėdi šalia tavęs darbo valandomis, 313 00:14:21,080 --> 00:14:22,680 ar personalo narys. 314 00:14:22,680 --> 00:14:25,810 Bet jie negali parodyti savo kodą su jumis. 315 00:14:25,810 --> 00:14:27,710 >> Kitaip tariant, atsakymo į savo question-- 316 00:14:27,710 --> 00:14:29,940 Man reikia help-- nėra oh, čia mano kodas. 317 00:14:29,940 --> 00:14:32,440 Pažvelkite tai išvaizdą ir išvesti iš jo ką nori. 318 00:14:32,440 --> 00:14:34,580 Dabar, žinoma, yra būdas aiškiai į žaidimą 319 00:14:34,580 --> 00:14:37,760 tai sistema, pagal kurią aš jums parodysiu, mano kodas, prieš turintys klausimą. 320 00:14:37,760 --> 00:14:40,150 Jūs parodykite man savo kodą prieš turintys klausimą. 321 00:14:40,150 --> 00:14:45,870 Bet pamatyti mokymo programą vėl prabangiau duomenys, kur ši eilutė yra. 322 00:14:45,870 --> 00:14:50,606 >> Tiesiog dabar tapyti paveikslėlį ir pasidalinti kaip įmanoma skaidriau 323 00:14:50,606 --> 00:14:53,480 kur mes esame pastaraisiais metais, tai iš Ad Board atvejų skaičius 324 00:14:53,480 --> 00:14:56,260 kad CS50 turėjo per Per pastaruosius septynerius metus. 325 00:14:56,260 --> 00:14:58,717 Su 14 atvejų tai naujausias rudens. 326 00:14:58,717 --> 00:15:01,300 Kalbant apie moksleivių, dalyvaujančių projekte, jis buvo 20 kai nelyginis studentai 327 00:15:01,300 --> 00:15:02,490 praeitą rudenį. 328 00:15:02,490 --> 00:15:05,670 Nebuvo iš 33 piko studentai prieš keletą metų. 329 00:15:05,670 --> 00:15:08,830 Daugelis iš jų, deja, nebėra čia miesteliu. 330 00:15:08,830 --> 00:15:13,100 >> Studentai, dalyvaujantys kaip procentą istoriškai klasė svyravo nuo 0% 331 00:15:13,100 --> 00:15:17,300 iki 5,3%, o tai yra tik pasakyti, kasmet tai iššūkis. 332 00:15:17,300 --> 00:15:20,390 Ir link šio tikslo, kas mes norime padaryti, tai perteikti vieną 333 00:15:20,390 --> 00:15:24,310 kad mes dd-- tik FYI-- palyginti ne sąžiningumas tiems studentams, kurie 334 00:15:24,310 --> 00:15:26,520 yra po linija pakeisti. 335 00:15:26,520 --> 00:15:29,620 Mes palyginti visų dabartinių pareiškimai prieš visus pastaruosius misijų 336 00:15:29,620 --> 00:15:30,840 iš per pastaruosius keletą metų. 337 00:15:30,840 --> 00:15:33,620 >> Mes žinome, per kiek "Google", aplink ir sužinoti kodų saugyklas 338 00:15:33,620 --> 00:15:36,360 internete, diskusijų forumai internete, darbo vietų internete. 339 00:15:36,360 --> 00:15:41,580 Jei studentas gali rasti jį, mes galime tikrai mano, kad tai, kiek mes, deja padaryti. 340 00:15:41,580 --> 00:15:45,330 Taigi, ką jūs pamatysite mokymo programą nors tai apgailestauju sąlyga. 341 00:15:45,330 --> 00:15:47,500 Galiu tikrai vertiname, ir mes visi turi 342 00:15:47,500 --> 00:15:50,870 darbuotojai padarę panašaus kursą tai, ar tai pats vienas, laikui bėgant, 343 00:15:50,870 --> 00:15:53,997 tikrai žinau, ką reiškia, kai gyvenimas tampa tokiu būdu, kai jūs turite 344 00:15:53,997 --> 00:15:56,080 kai vėlai naktį deadline-- ne tik šios klasės, 345 00:15:56,080 --> 00:15:58,660 bet another--, kai esate visiškai išnaudotos, pabrėžė, 346 00:15:58,660 --> 00:16:00,659 turi vis dar veikia daugybė Kitų dalykų, kuriuos reikia padaryti. 347 00:16:00,659 --> 00:16:03,660 Jūs galėsite atlikti tam tikru klausimu gyvenimas tikrai neblogai, gal vėlai 348 00:16:03,660 --> 00:16:04,620 naktį sprendimas. 349 00:16:04,620 --> 00:16:06,520 >> Taigi už mokymo programas, yra tai sąlyga, 350 00:16:06,520 --> 00:16:10,629 tokia, kad jei per 72 valandas po priėmimo kai prastas sprendimas, turite į jį 351 00:16:10,629 --> 00:16:12,670 ir pasiekti, kad mane ir vienas iš kurso Galvų 352 00:16:12,670 --> 00:16:14,300 ir turėsime pokalbį. 353 00:16:14,300 --> 00:16:16,220 Mes tvarkyti dalykus viduje viltis 354 00:16:16,220 --> 00:16:18,770 IT tampa daugiau mokymo metu arba gyvenimo pamoka, 355 00:16:18,770 --> 00:16:22,120 o ne kažkas su ypač drastiškų pasekmių 356 00:16:22,120 --> 00:16:24,570 kaip jūs galite pamatyti šių diagramas čia. 357 00:16:24,570 --> 00:16:26,540 >> Štai labai rimtas tonas. 358 00:16:26,540 --> 00:16:29,960 Leiskite mums pristabdyti tik nedaugelis sekundžių pertrauka įtampą. 359 00:16:29,960 --> 00:16:34,442 >> [Muzikos grojimo] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> David J. Malan: Gerai, taip, kaip buvo, kad tam Segue? 362 00:17:20,250 --> 00:17:22,059 Norėdami šiandienos pirminių temomis. 363 00:17:22,059 --> 00:17:23,859 Iš kurių pirmasis yra abstrakcija. 364 00:17:23,859 --> 00:17:26,900 Kitas, kuris bus atstovavimas duomenų, kurie tiesą sakant 365 00:17:26,900 --> 00:17:31,640 yra tikrai sausa būdas pasakyti, kaip mes galime eiti apie sprendžiant problemas ir galvoti 366 00:17:31,640 --> 00:17:33,250 apie sprendžiant problemas? 367 00:17:33,250 --> 00:17:37,285 Taigi jūs mačiau nulio, ir jūs matyti galbūt jau pset1 su C 368 00:17:37,285 --> 00:17:39,930 kad jūs ne tik galite naudotis funkcijos, kaip printf, 369 00:17:39,930 --> 00:17:42,770 kad kiti žmonės metų praeities parašė jums. 370 00:17:42,770 --> 00:17:45,340 Taip pat galite rašyti savo funkcijas. 371 00:17:45,340 --> 00:17:48,440 >> Ir nors jūs negalite turėti padaryti tai C, o atvirai ir pset1 372 00:17:48,440 --> 00:17:51,866 Jums tikrai nereikia rašyti savo savo funkcija nes problem-- 373 00:17:51,866 --> 00:17:53,990 o galbūt nelengvas ne Pirmasis glance-- pamatysite 374 00:17:53,990 --> 00:17:57,910 galiausiai gali būti išspręsta su ne visi, kad daug eilučių kodo. 375 00:17:57,910 --> 00:18:01,140 Bet tai sakė, kalbant rašyti savo funkciją, 376 00:18:01,140 --> 00:18:03,570 suprasti, kad C nėra duoti Jums tai galimybė. 377 00:18:03,570 --> 00:18:06,940 >> Aš ruošiuosi eiti į šiandienos kodo, kuri yra prieinama jau internete, 378 00:18:06,940 --> 00:18:10,900 ir aš ruošiuosi eiti į priekį ir atidaryti iki programos vadinamos funkcija 0.C, 379 00:18:10,900 --> 00:18:14,620 ir funkcija nulio matysime keletą dalykų. 380 00:18:14,620 --> 00:18:19,160 18 per pirmąsias eilutes 23 yra mano pagrindinė funkcija. 381 00:18:19,160 --> 00:18:22,414 Ir dabar, kad mes pradedame skaityti kodas, kad mes ne raštu skristi, 382 00:18:22,414 --> 00:18:25,080 bet vietoj to aš parašiau iš anksto arba kad jums problema nustatyti 383 00:18:25,080 --> 00:18:27,910 galite gauti turintys buvo parašyta iš anksto. 384 00:18:27,910 --> 00:18:30,040 Geras būdas pradėti skaityti kažkieno kodą 385 00:18:30,040 --> 00:18:31,400 yra ieškoti pagrindinės funkcijos. 386 00:18:31,400 --> 00:18:34,420 Išsiaiškinti, kur šį įrašą taškas yra paleisti programą, 387 00:18:34,420 --> 00:18:36,580 ir atlikite ją logiškai iš ten. 388 00:18:36,580 --> 00:18:40,190 >> Taigi ši programa matyt atspaudai jūsų vardas, po dvitaškio. 389 00:18:40,190 --> 00:18:42,490 Mes tada naudokite GetString iš CS50 bibliotekoje 390 00:18:42,490 --> 00:18:46,050 gauti eilutę, arba žodį ar frazę iš ne klaviatūrą vartotojui. 391 00:18:46,050 --> 00:18:48,390 Ir tada ten tai dalykas here-- PrintName. 392 00:18:48,390 --> 00:18:51,420 >> Dabar PrintName nėra funkcija, kuri ateina su C. 393 00:18:51,420 --> 00:18:52,970 Tai ne standartinis io.h. 394 00:18:52,970 --> 00:18:55,570 Tai ne CS50.h. 395 00:18:55,570 --> 00:18:57,880 Tai veikiau tą patį failą. 396 00:18:57,880 --> 00:19:01,000 Atkreipkite dėmesį, jei aš slinkti žemyn a bit-- linijos 25 27-- 397 00:19:01,000 --> 00:19:05,330 tai tiesiog gana būdas komentuodamas Jūsų kodas naudojant žvaigždžių ir nerijos ribos. 398 00:19:05,330 --> 00:19:07,320 Tai kelių eilučių pastabas, ir tai tik 399 00:19:07,320 --> 00:19:10,570 mano aprašymas mėlyną kas ši funkcija veikia. 400 00:19:10,570 --> 00:19:14,530 >> Kadangi eilutėse nuo 28 iki 31, Aš parašiau super paprastą funkciją 401 00:19:14,530 --> 00:19:16,280 kurio vardas yra PrintName. 402 00:19:16,280 --> 00:19:19,560 Tai užtrunka kiek argumentai norėtumėte pasakyti? 403 00:19:19,560 --> 00:19:25,120 Taigi vienas argument-- nes ten vienas išvardyti viduje skliausteliuose argumentas. 404 00:19:25,120 --> 00:19:27,000 Kurių tipas yra Styginių. 405 00:19:27,000 --> 00:19:30,240 Kuris yra pasakyti PrintName yra tarsi šio black box 406 00:19:30,240 --> 00:19:32,910 arba funkcija, kuri trunka kaip įvesties eilutę. 407 00:19:32,910 --> 00:19:35,730 >> Ir tos String vardas Patogiai bus Pavadinimas. 408 00:19:35,730 --> 00:19:37,840 Ne S, ne N, tačiau Vardas. 409 00:19:37,840 --> 00:19:41,090 Taigi, ką PrintName daryti? 410 00:19:41,090 --> 00:19:42,210 Tai gražus paprasta. 411 00:19:42,210 --> 00:19:45,390 Tiesiog kaip vieną liniją kodą printf, bet, matyt, jį 412 00:19:45,390 --> 00:19:47,950 spausdina iš "Hello", taip ir taip. 413 00:19:47,950 --> 00:19:50,070 Jeigu taip ir taip kilęs iš argumentų. 414 00:19:50,070 --> 00:19:52,300 >> Dabar tai ne didžiulis inovacijos čia. 415 00:19:52,300 --> 00:19:56,710 Tikrai, aš ėmėsi programą, kuri galėtų buvo parašyta viena eilutė kodo 416 00:19:56,710 --> 00:20:00,190 įgyvendinant šią iki čia ir pakeitė jį į kažką 417 00:20:00,190 --> 00:20:04,920 kuris apima kai šešių ar septynių ar taip eilučių kodo visą kelią žemyn čia. 418 00:20:04,920 --> 00:20:08,190 >> Bet tai iš praktikuojančių principas žinomas kaip abstrakcija. 419 00:20:08,190 --> 00:20:12,550 Rūšis sandarinimo viduje nauja funkcija, kuri turi vardą, ir geriau 420 00:20:12,550 --> 00:20:14,590 dar tas pavadinimas pažodžiui sako, ką ji daro. 421 00:20:14,590 --> 00:20:16,880 Aš turiu galvoje, printf-- kad ne ypač aprašomasis. 422 00:20:16,880 --> 00:20:18,932 Jei aš noriu sukurti dėlionės gabalas, arba jei I 423 00:20:18,932 --> 00:20:21,140 norite sukurti funkciją kad spausdina kažkieno vardą, 424 00:20:21,140 --> 00:20:23,230 tai padaryti grožis yra tai, kad aš iš tikrųjų galite 425 00:20:23,230 --> 00:20:27,170 suteikti šią funkciją vardą , kuris apibūdina, ką ji daro. 426 00:20:27,170 --> 00:20:29,844 >> Dabar ji imasi įvesties kad Aš savavališkai vadinama vardas, 427 00:20:29,844 --> 00:20:32,760 bet taip pat yra nuostabiai aprašomojo vietoj to, kad šiek tiek daugiau 428 00:20:32,760 --> 00:20:36,140 bendrinis, kaip S. negaliojančiu, dabar, tiesiog reiškia, 429 00:20:36,140 --> 00:20:38,330 kad ši funkcija nėra ranka man atgal nieko. 430 00:20:38,330 --> 00:20:41,127 Jis nemėgsta GetString kad pažodžiui rankas mane atgal eilutę 431 00:20:41,127 --> 00:20:43,960 kaip mes padarėme su popieriaus gabaliukais su savo bendraklasiais praėjusią savaitę, 432 00:20:43,960 --> 00:20:45,990 o jis tiesiog turi šalutinį poveikį. 433 00:20:45,990 --> 00:20:48,080 Jis spausdina kažką ekrane. 434 00:20:48,080 --> 00:20:53,880 >> Taigi tuo dienos pabaigoje, jei aš do, kad funkcija-0, ./function-0, 435 00:20:53,880 --> 00:20:55,450 matysime, kad jis prašo mano vardu. 436 00:20:55,450 --> 00:20:58,150 Aš tipo Dovydą, jis tipus iš mano vardu. 437 00:20:58,150 --> 00:21:01,080 Jei aš jį dar kartą su Rob, jis ketina pasakyti "Labas, Rob." 438 00:21:01,080 --> 00:21:04,280 Taigi paprasta idėja, bet galbūt ekstrapoliuoti iš to protiškai 439 00:21:04,280 --> 00:21:06,750 kad jūsų programas gauti šiek tiek daugiau sudėtinga, 440 00:21:06,750 --> 00:21:10,290 , ir jūs norite parašyti gabalą kodas ir skambučių, kad code-- Invoke 441 00:21:10,290 --> 00:21:13,270 kad tam tikrą aprašomojo code-- pavadinti kaip PrintName, 442 00:21:13,270 --> 00:21:15,600 C daro sau mums šią galimybę. 443 00:21:15,600 --> 00:21:17,660 >> Štai dar vienas paprastas pavyzdys. 444 00:21:17,660 --> 00:21:22,940 Pavyzdžiui, jei aš atverti failą iš šiandien vadinama return.c, 445 00:21:22,940 --> 00:21:24,270 pastebėti tai, ką aš padariau čia. 446 00:21:24,270 --> 00:21:26,330 Dauguma šios pagrindinės funkcijos yra printf. 447 00:21:26,330 --> 00:21:30,360 Aš pirmą kartą savavališkai inicijuoti kintamasis vadinamas x skaičių 2. 448 00:21:30,360 --> 00:21:34,110 Tada aš atsispausdinti "x yra dabar % I "einančios nuo x vertę. 449 00:21:34,110 --> 00:21:35,500 Taigi, aš tiesiog pasakyti, kas tai yra. 450 00:21:35,500 --> 00:21:37,208 >> Dabar aš tiesiog drąsiai teigdamas su printf. 451 00:21:37,208 --> 00:21:42,050 Aš cubing kad x vertė, ir aš darydamas telefonu funkciją 452 00:21:42,050 --> 00:21:45,590 vadinamas kubas artimųjų X, kaip ir argumentas, 453 00:21:45,590 --> 00:21:49,300 ir tada taupymo išėjimo pačiame kintamojo, x. 454 00:21:49,300 --> 00:21:51,340 Taigi, aš clobbering X vertę. 455 00:21:51,340 --> 00:21:53,380 Aš viršesniais vertė x su kokia 456 00:21:53,380 --> 00:21:56,510 , iš kurios skambinama rezultatas Šis kubas funkcija. 457 00:21:56,510 --> 00:21:59,530 Ir tada aš tiesiog atsispausdinti kai pūkuotas dalykų čia pasakyti, ką aš padariau. 458 00:21:59,530 --> 00:22:01,600 >> Taigi, kas tada yra kubas? 459 00:22:01,600 --> 00:22:03,510 Atkreipkite dėmesį, kas iš esmės skiriasi čia. 460 00:22:03,510 --> 00:22:05,540 Aš suteikti funkciją vardas, kaip ir anksčiau. 461 00:22:05,540 --> 00:22:08,270 Aš nurodėte vardą argumentas. 462 00:22:08,270 --> 00:22:11,650 Šį kartą ji vadinama n vietoj vardo, bet aš negalėjau ją vadina ką aš noriu. 463 00:22:11,650 --> 00:22:12,650 Bet tai yra skirtingi. 464 00:22:12,650 --> 00:22:14,080 Ši kairėje dalykas. 465 00:22:14,080 --> 00:22:16,290 Anksčiau tai buvo tai, ką žodis? 466 00:22:16,290 --> 00:22:16,870 Berniukų. 467 00:22:16,870 --> 00:22:18,580 Dabar jis akivaizdžiai vid. 468 00:22:18,580 --> 00:22:20,630 >> Taigi, kas galbūt atimti? 469 00:22:20,630 --> 00:22:24,090 Kadangi negaliojančiais reiškia, tarsi nebūtis, ir kad buvo atvejis. 470 00:22:24,090 --> 00:22:25,970 PrintName grįžo nieko. 471 00:22:25,970 --> 00:22:27,942 Jis padarė kažką, bet ji nebuvo ranka mane atgal 472 00:22:27,942 --> 00:22:30,650 kažkas, kad galėčiau įdėti kairėje pusėje lygybės ženklą 473 00:22:30,650 --> 00:22:32,460 kaip aš padariau čia on line 22. 474 00:22:32,460 --> 00:22:36,780 >> Taigi, jei aš sakau, į 30 eilutę, kas tai tikriausiai reiškia 475 00:22:36,780 --> 00:22:38,610 apie tai, ką kubas daro už mane? 476 00:22:38,610 --> 00:22:41,110 Taip? 477 00:22:41,110 --> 00:22:42,310 Ji grąžina sveikąjį skaičių. 478 00:22:42,310 --> 00:22:44,590 Taigi rankas į mane, už pavyzdžiui, iš popieriaus gabalas 479 00:22:44,590 --> 00:22:46,580 dėl kurių ji turi raštišką atsakymą. 480 00:22:46,580 --> 00:22:50,130 2 kubeliais arba 3 kubeliais arba 4 cubed-- ką aš praėjo, 481 00:22:50,130 --> 00:22:51,540 ir kaip aš įgyvendinti tai? 482 00:22:51,540 --> 00:22:54,810 Na, tiesiog n kartų n kartų n kaip galėčiau kubeliais vertę. 483 00:22:54,810 --> 00:22:57,110 Taigi dar kartą, super paprasta idėja, bet demonstratyvus 484 00:22:57,110 --> 00:23:00,100 dabar, kaip mes galime rašyti funkcijas kad iš tikrųjų turėjo mus atgal 485 00:23:00,100 --> 00:23:02,380 vertybės, kurios galėtų dominti. 486 00:23:02,380 --> 00:23:05,740 >> Pažvelkime vieną paskutiniame pavyzdyje čia vadinama funkcija vienas. 487 00:23:05,740 --> 00:23:08,530 Šiame pavyzdyje, ji pradeda gauti daugiau įtikinamos. 488 00:23:08,530 --> 00:23:12,400 Taigi funkcijos viename, tai program-- pranešimas galiausiai 489 00:23:12,400 --> 00:23:14,920 ragina funkcija vadinama GetPositiveInt. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt nėra funkcija CS50 bibliotekoje, 491 00:23:17,800 --> 00:23:20,400 bet mes nusprendėme mes norėčiau, kad jis egzistuoja. 492 00:23:20,400 --> 00:23:24,550 >> Taigi, jei mes slinkti žemyn vėliau į bylą, pranešimas, kaip aš apie įgyvendinimo 493 00:23:24,550 --> 00:23:26,560 gauti teigiamą int, ir aš pasakyti, kad tai daugiau įtikinamų 494 00:23:26,560 --> 00:23:28,992 nes tai yra padorus skaičius eilučių kodo. 495 00:23:28,992 --> 00:23:30,700 Tai ne tik kvailas mažai žaislas programa. 496 00:23:30,700 --> 00:23:33,870 Tai iš tiesų gavo šiek tiek klaidų tikrinimas ir daro kažką daugiau naudingos. 497 00:23:33,870 --> 00:23:38,470 >> Taigi, jei jūs dar nematėte rankos video, kad mes įterptos į pset1, 498 00:23:38,470 --> 00:23:42,350 žinau, kad tai yra Tipo kilpa C, panaši dvasia 499 00:23:42,350 --> 00:23:44,270 į daiktų nulio rūšių gali padaryti. 500 00:23:44,270 --> 00:23:46,320 Ir tai sako, kad tai daryti. 501 00:23:46,320 --> 00:23:47,500 Spausdinti šį iš. 502 00:23:47,500 --> 00:23:51,860 Tada eiti į priekį ir gauti n-- gauti int ir laikyti jį n, 503 00:23:51,860 --> 00:23:55,760 ir nuolat daro tai vėl ir vėl, ir vėl tol, kol n yra mažesnis nei vienas. 504 00:23:55,760 --> 00:23:58,720 >> Taigi n bus mažiau nei vieną tik tada, jei žmogus ne taip bendradarbiauti. 505 00:23:58,720 --> 00:24:01,980 Jei jis ar ji rašo į 0 arba -1 ar -50, 506 00:24:01,980 --> 00:24:04,790 šis ciklas vyksta nuolat vykdant vėl ir vėl. 507 00:24:04,790 --> 00:24:07,549 Ir galiausiai pastebėsite, aš tiesiog grįžti vertę. 508 00:24:07,549 --> 00:24:09,590 Taigi dabar mes turime funkciją kad tai jau buvo malonu 509 00:24:09,590 --> 00:24:14,040 jei CS50 būtų įgyvendinti CS50.h ir CS50.c už jus, 510 00:24:14,040 --> 00:24:16,520 bet čia mes galime dabar įgyvendinti tai save. 511 00:24:16,520 --> 00:24:19,230 >> Tačiau du pastabos dėl keleto svarbių klausimų. 512 00:24:19,230 --> 00:24:24,390 One-- kodėl aš pareiškiu, int n Ar manote,, on line 29 513 00:24:24,390 --> 00:24:27,139 o ne tik daro tai čia, kuris yra 514 00:24:27,139 --> 00:24:28,930 labiau atitiktų ką mes padarėme praėjusią savaitę? 515 00:24:28,930 --> 00:24:29,430 Taip? 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 Gera mintis. 518 00:24:35,110 --> 00:24:37,080 Taigi, jei mes įdėti jį čia, tai kaip nors mes 519 00:24:37,080 --> 00:24:39,110 išlaikyti skelbiantis jį vėl ir vėl. 520 00:24:39,110 --> 00:24:42,000 Tai ir pati yra nekelia problemų, per se 521 00:24:42,000 --> 00:24:43,940 nes mes tik reikia vieną kartą ir tada vertė 522 00:24:43,940 --> 00:24:45,330 mes ketiname gauti naują vistiek. 523 00:24:45,330 --> 00:24:45,940 Bet gera mintis. 524 00:24:45,940 --> 00:24:46,440 Taip? 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> Uždaryti. 527 00:24:53,330 --> 00:24:59,030 Taigi dėl to, aš paskelbė n įjungtas linija 29 už kilpos, 528 00:24:59,030 --> 00:25:01,390 tai prieinama visoje Visa ši funkcija. 529 00:25:01,390 --> 00:25:05,400 Ne kitas funkcijas, nes n yra dar viduje šių garbanotus 530 00:25:05,400 --> 00:25:06,470 Petnešos čia. 531 00:25:06,470 --> 00:25:07,940 So-- tikrai. 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> Būtent. 534 00:25:12,940 --> 00:25:14,356 Taigi, tai yra dar iki taško. 535 00:25:14,356 --> 00:25:18,600 Jei mes vietoj deklaruotos n čia on line 32, 536 00:25:18,600 --> 00:25:22,340 tai problemiška, nes atspėti kur dar man reikia ją gauti? 537 00:25:22,340 --> 00:25:25,620 Dėl 34 linija, ir paprasta nykščio taisykle yra 538 00:25:25,620 --> 00:25:30,060 kad galite naudoti tik kintamasis viduje iš naujausių klamrami 539 00:25:30,060 --> 00:25:31,420 , kurioje jūs jį deklaruoti. 540 00:25:31,420 --> 00:25:35,230 >> Deja, linija 34 yra viena eilutė, per vėlai 541 00:25:35,230 --> 00:25:38,560 nes aš jau uždarytas garbanotas petnešomis apie 33 eilutėje 542 00:25:38,560 --> 00:25:41,220 , kuri atitinka garbanotas petnešomis 30 eilutėje. 543 00:25:41,220 --> 00:25:44,180 Ir todėl tai pasakyti būdas kad šis kintamasis int yra scoped, 544 00:25:44,180 --> 00:25:46,970 taip sakant, tik viduje tų klamrami. 545 00:25:46,970 --> 00:25:48,910 Jis tiesiog neegzistuoja už jų. 546 00:25:48,910 --> 00:25:51,580 >> Taigi iš tiesų, jei aš tai padaryti negerai, leiskite man išsaugoti kodą 547 00:25:51,580 --> 00:25:53,530 nes is-- neteisingai parašyta. 548 00:25:53,530 --> 00:25:57,990 Leiskite man eiti į priekį ir padarysiu funkcija-1 ir notice-- klaida. 549 00:25:57,990 --> 00:26:03,502 Naudokite nedeklaruojamo identifikatorius n on-line 35, kuris yra čia. 550 00:26:03,502 --> 00:26:05,210 Ir jei mes slinkite aukštyn Be to, dar vienas. 551 00:26:05,210 --> 00:26:08,750 Naudokite nedeklaruota identifikatorius n on line 34. 552 00:26:08,750 --> 00:26:11,200 >> Taigi sudarytojas, žvangėjimas, yra pastebėjęs, kad jį tiesiog 553 00:26:11,200 --> 00:26:13,720 neegzistuoja, nors Akivaizdu, kad jis ten vizualiai. 554 00:26:13,720 --> 00:26:16,090 Taigi paprasta nustatyti deklaruoja jį ten. 555 00:26:16,090 --> 00:26:18,790 >> Dabar leiskite man pereikite prie failo viršuje. 556 00:26:18,790 --> 00:26:21,080 Kas šuoliai į tave kaip yra šiek tiek kitoks 557 00:26:21,080 --> 00:26:23,070 iš dalykų, mes pažvelgė praeitą savaitę? 558 00:26:23,070 --> 00:26:26,990 Ne tik aš turiu vardą, o ne tik tai, Turiu keletą aštrių apima iki viršaus, 559 00:26:26,990 --> 00:26:29,340 Turiu ką aš paskambinę prototipą. 560 00:26:29,340 --> 00:26:36,100 Dabar, atrodo siaubingai panašus į tai, ką mes tiesiog matė prieš akimirką on line 27 d. 561 00:26:36,100 --> 00:26:39,230 >> Taigi leiskite išvadą iš skirtingų klaidos pranešimas, kodėl aš padariau tai. 562 00:26:39,230 --> 00:26:42,050 Leiskite man eiti į priekį ir ištrinti šias eilutes ten. 563 00:26:42,050 --> 00:26:44,240 Ir todėl mes nieko apie prototipą žinoti. 564 00:26:44,240 --> 00:26:45,430 Perdarytas šį failą. 565 00:26:45,430 --> 00:26:46,890 Padaryti funkciją vieną. 566 00:26:46,890 --> 00:26:48,090 Ir dabar, velniškai keturios klaidos. 567 00:26:48,090 --> 00:26:50,220 Leiskite pereikite iki pirmosios. 568 00:26:50,220 --> 00:26:55,070 >> Numanomas deklaracija funkcija gauti teigiamą int negalioja C99. 569 00:26:55,070 --> 00:26:57,780 C99 tiesiog reiškia 1999 portalo kalba 570 00:26:57,780 --> 00:26:59,710 C, kuris yra tai, ką mes iš tikrųjų naudoti. 571 00:26:59,710 --> 00:27:01,050 Taigi, ką tai reiškia? 572 00:27:01,050 --> 00:27:05,250 Na C-- ir konkrečiau C compilers-- yra gana kvailas programas. 573 00:27:05,250 --> 00:27:07,420 Jie tik žino, ką jūs pasakė jiems, ir kad 574 00:27:07,420 --> 00:27:08,960 iš tikrųjų teminis iš praeitą savaitę. 575 00:27:08,960 --> 00:27:12,910 >> Problema yra ta, kad jei aš einu apie įgyvendinant vardą čia, 576 00:27:12,910 --> 00:27:17,640 ir aš skambinti funkcija vadinama GetPositiveInt čia on line 20 577 00:27:17,640 --> 00:27:22,520 kad funkcija techniškai nėra egzistuoja, kol kompiliatorius mato liniją 27. 578 00:27:22,520 --> 00:27:25,450 Deja, sudarytojas yra daryti dalykus viršų, žemyn, į kairę, į dešinę, 579 00:27:25,450 --> 00:27:29,580 todėl, kad ji nematė įgyvendinimas GetPositiveInt, 580 00:27:29,580 --> 00:27:32,400 bet jis mato jus bando naudoti jį čia 581 00:27:32,400 --> 00:27:35,810 tai tik ketina bail-- klykauti jūs su klaida Message galbūt 582 00:27:35,810 --> 00:27:38,440 paslaptingas, o ne iš tikrųjų kaupia failą. 583 00:27:38,440 --> 00:27:41,940 >> Taigi vadinamasis prototipas iki čia yra tiesa nereikalinga. 584 00:27:41,940 --> 00:27:47,870 Drąsiai, nuėjau čia, ir aš nukopijuoti ir įklijuoti, ir aš įdėti jį čia. 585 00:27:47,870 --> 00:27:51,020 Atkrenta būtų tinkamas, todėl mes tiesiog nukopijuokite ir įklijuokite jį šį kartą. 586 00:27:51,020 --> 00:27:52,854 Aš tiesiog nukopijuoti ir įklijuoti jį. 587 00:27:52,854 --> 00:27:54,270 Tikrai kaip kaip duonos trupiniai. 588 00:27:54,270 --> 00:27:56,260 >> Mažai raktas kompiliatoriui. 589 00:27:56,260 --> 00:27:58,860 Aš nežinau, kas tai daro dar, bet aš perspektyvus jums 590 00:27:58,860 --> 00:28:00,260 kad ji egzistuoja, galų gale. 591 00:28:00,260 --> 00:28:04,010 Ir štai kodėl tai line-- į linija 16-- baigiasi kabliataškiu. 592 00:28:04,010 --> 00:28:05,486 Tai nereikalingas dizainas. 593 00:28:05,486 --> 00:28:05,986 Taip? 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> Jei nebuvo susieti savo biblioteką į the-- oh, geras klausimas. 596 00:28:14,360 --> 00:28:17,350 Sharp yra failo antraštės intarpai. 597 00:28:17,350 --> 00:28:20,040 Reikia be-- turėtų beveik visada būti pačiame viršuje 598 00:28:20,040 --> 00:28:23,270 dėl pasiūlymo dėl similar-- failą tiksliai tos pačios priežasties, taip. 599 00:28:23,270 --> 00:28:26,430 Nes standartas io.h yra tiesiog linija 600 00:28:26,430 --> 00:28:30,560 kaip tai, bet su žodžiu printf ir su savo argumentais ir jos grįžtamasis. 601 00:28:30,560 --> 00:28:33,310 Ir taip darant aštrus įtraukti iki čia, ką jūs tiesiog darote 602 00:28:33,310 --> 00:28:36,380 yra nukopijuoti ir įklijuoti turinį kažkas kitas rašė iki viršaus. 603 00:28:36,380 --> 00:28:39,660 Taip cluing kodą į Faktas, kad šios funkcijos egzistuoja. 604 00:28:39,660 --> 00:28:40,160 Taip? 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> Absoliučiai. 607 00:28:48,260 --> 00:28:51,690 Taigi labai protingas ir teisingas sprendimas būtų, žinote, ką? 608 00:28:51,690 --> 00:28:53,760 Aš nežinau, ką prototipas yra, bet aš žinau, 609 00:28:53,760 --> 00:28:56,390 jei aš suprantu, kad C yra tiesiog kvailas ir permąsto viršaus į apačią. 610 00:28:56,390 --> 00:28:57,820 Na tegul duoti, ko jis nori. 611 00:28:57,820 --> 00:29:01,650 Leiskite supjaustyti tą kodą, įklijuokite jį viršuje, o dabar stumti Pagrindinis žemyn žemiau. 612 00:29:01,650 --> 00:29:03,470 Tai taip pat padėtų išspręsti šią problemą. 613 00:29:03,470 --> 00:29:07,409 >> Bet jūs galite labai lengvai sugalvoti scenarijus, pagal kurį reikia paskambinti B, 614 00:29:07,409 --> 00:29:10,075 o gal B ragina grįžti į A. Šis yra kažkas vadinamas rekursija, 615 00:29:10,075 --> 00:29:11,370 ir mes grįžti prie to. 616 00:29:11,370 --> 00:29:13,911 Ir tai gali ar negali būti geras dalykas, tačiau jūs galite tikrai 617 00:29:13,911 --> 00:29:15,110 nutraukti šį sprendimą. 618 00:29:15,110 --> 00:29:17,690 >> Ir be to, aš norėčiau teigia, stilistiškai, 619 00:29:17,690 --> 00:29:20,760 ypač kai savo programas tapo tai ilgas ir taip ilgai, 620 00:29:20,760 --> 00:29:23,064 tai tiesiog super patogus įdėti pagrindinė viršuje 621 00:29:23,064 --> 00:29:25,730 nes tai, ką dauguma programuotojai ketinate rūpi. 622 00:29:25,730 --> 00:29:28,150 Ir todėl jis yra šiek tiek švaresnis, be abejo, tai padaryti taip, kaip 623 00:29:28,150 --> 00:29:30,380 Aš iš pradžių padarė jį su prototipu net 624 00:29:30,380 --> 00:29:33,396 nors atrodo šiek tiek nereikalinga pirmo žvilgsnio. 625 00:29:33,396 --> 00:29:33,895 Taip? 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 Atsiprašome, galite pasakyti, kad tai garsiau? 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> Jei perjungti vietas įgyvendinimas ir prototipas? 630 00:29:49,580 --> 00:29:51,270 Štai geras klausimas. 631 00:29:51,270 --> 00:29:53,780 Jei iš naujo paskelbti tai žemyn čia galime pamatyti, kas atsitiks. 632 00:29:53,780 --> 00:29:55,530 Taigi, jei aš įdėti šį žemyn čia jūs sakote. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 Oi, atsiprašau. 635 00:29:58,360 --> 00:29:58,859 Garsiau? 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 Net garsiau. 638 00:30:04,011 --> 00:30:04,760 O, geras klausimas. 639 00:30:04,760 --> 00:30:05,860 Ar tai anuliuos funkciją? 640 00:30:05,860 --> 00:30:08,901 Žinai, po visus šiuos metus, aš niekada įdėti prototipą vėliau. 641 00:30:08,901 --> 00:30:13,810 Taigi darykime, kad funkcijos-1 Po daryti. 642 00:30:13,810 --> 00:30:15,279 >> [Mamroczący] 643 00:30:15,279 --> 00:30:16,320 David J. Malan: Oi, palauk. 644 00:30:16,320 --> 00:30:17,944 Mes vis dar turime viską iki viršaus. 645 00:30:17,944 --> 00:30:21,400 Taigi leiskite tai padaryti čia, jei aš suprasti jūsų klausimą teisingai. 646 00:30:21,400 --> 00:30:24,700 Aš pradėti viską, įskaitant virš pagrindinis prototipas, 647 00:30:24,700 --> 00:30:28,180 bet aš pradėti prototipą toliau įgyvendinti. 648 00:30:28,180 --> 00:30:33,190 >> Taigi, jei aš padaryti vieną, aš gaunu atgal error-- nepanaudotą kintamasis n. 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 O ten. 651 00:30:37,860 --> 00:30:38,360 Ačiū. 652 00:30:38,360 --> 00:30:39,430 Pažiūrėkime, mes atsikratyti tai. 653 00:30:39,430 --> 00:30:41,304 Štai skiriasi klaidą, tad ignoruoti tai. 654 00:30:41,304 --> 00:30:43,910 Leiskite tikrai greitai perdaryti tai. 655 00:30:43,910 --> 00:30:48,100 >> Gerai, kad duomenys argumentas nėra naudojamas formatas String 656 00:30:48,100 --> 00:30:52,310 n-- oh, tai todėl, kad Aš pakeičiau į juos čia. 657 00:30:52,310 --> 00:30:55,885 Gerai, mes žinome, ką atsakyti vyksta to-- viskas gerai, čia mes einame. 658 00:30:55,885 --> 00:31:00,560 Ak, ačiū už teigiamas. 659 00:31:00,560 --> 00:31:03,430 Gerai, aš išspręsti šią kodą after-- ignoruoti šį konkretų klaidą 660 00:31:03,430 --> 00:31:08,300 nes tai was-- tai veikia atsakymas. 661 00:31:08,300 --> 00:31:11,560 >> Taigi nėra perrašyti ką jūs ką tik padarė. 662 00:31:11,560 --> 00:31:14,800 Įtariu, kad kompiliatorius yra parašyta taip, 663 00:31:14,800 --> 00:31:18,420 kad ji ignoruoja savo prototipą nes organizme, taip sakant, 664 00:31:18,420 --> 00:31:20,922 iš funkcija jau buvo įgyvendintos aukščiau. 665 00:31:20,922 --> 00:31:23,380 Aš turiu tikrai konsultuotis iš kompiliatorių vadovas 666 00:31:23,380 --> 00:31:26,171 suprasti, jei yra bet koks kitas potekstė, tačiau iš pirmo žvilgsnio 667 00:31:26,171 --> 00:31:29,290 tiesiog bando ir eksperimentuoja, atrodo, kad jokio poveikio. 668 00:31:29,290 --> 00:31:30,730 Geras klausimas. 669 00:31:30,730 --> 00:31:33,660 >> Taigi leiskite išsiveržia į priekį dabar, pereinant nuo šalutinių poveikių, kurie 670 00:31:33,660 --> 00:31:36,660 yra funkcijos, padaryti kažką panašaus vizualiai ekrane su printf, 671 00:31:36,660 --> 00:31:38,090 bet negrįžta vertę. 672 00:31:38,090 --> 00:31:41,550 Ir funkcijas, turi grįžti vertės, kaip mes tik pamačiau iš nedaugelio. 673 00:31:41,550 --> 00:31:45,350 Mes jau matė šį apimties sąvoką, ir mes pamatyti, tai vėl ir vėl. 674 00:31:45,350 --> 00:31:47,210 Bet dabar, vėlgi, naudoti nykščio taisykle 675 00:31:47,210 --> 00:31:51,410 kad kintamasis gali būti naudojamas tik viduje neseniai atidarytas 676 00:31:51,410 --> 00:31:54,350 ir uždaros garbanotieji petnešų, kaip mes pamačiau toje konkrečioje pavyzdyje. 677 00:31:54,350 --> 00:31:56,910 >> Ir kaip Jūs nurodėte, yra ability-- 678 00:31:56,910 --> 00:32:00,040 galite išspręsti kai kurias iš šių problemų išleidimą į kintamuosius globaliai 679 00:32:00,040 --> 00:32:01,290 ne pačiame viršuje failą. 680 00:32:01,290 --> 00:32:03,630 Tačiau beveik visais atvejais mes raukytis, kad 681 00:32:03,630 --> 00:32:06,170 ir iš tiesų net ne eiti į tą tirpalo dabar. 682 00:32:06,170 --> 00:32:09,890 Taigi dabar, Takeaway yra tai, kad kintamieji turi šią sritį sąvoką. 683 00:32:09,890 --> 00:32:13,430 >> Bet dabar pažvelkime kitą sausas būdas iš tikrųjų ieškote 684 00:32:13,430 --> 00:32:15,810 į kai kuriuos gana įdomi įgyvendinimo informacija. 685 00:32:15,810 --> 00:32:17,810 Kaip mes galime atstovauti informaciją. 686 00:32:17,810 --> 00:32:20,370 Ir mes jau pažvelgė tai į pirmą savaitę klasėje. 687 00:32:20,370 --> 00:32:23,320 Pažvelgus binaries, ir priminti save iš po kablelio. 688 00:32:23,320 --> 00:32:28,310 >> Bet prisiminti iš praeitą savaitę, kad C yra skirtingi duomenų tipai ir kekių daugiau, 689 00:32:28,310 --> 00:32:30,600 Bet labiausiai naudingų tie Dabar gali būti šie. 690 00:32:30,600 --> 00:32:36,030 Char, ar personažas, kuris vyksta būti vienas baitas, arba aštuonių bitų iš viso. 691 00:32:36,030 --> 00:32:40,060 Ir tai pasakyti, kad dydis iš char yra tik vienas baitas. 692 00:32:40,060 --> 00:32:45,370 Baitas yra aštuonis bitus, taigi tai reiškia, kad galime atstovauti kiek simbolių. 693 00:32:45,370 --> 00:32:47,320 Kiek raidės arba simboliai ant klaviatūros 694 00:32:47,320 --> 00:32:49,210 jei mes turime vieną baitą ar aštuonis bitus. 695 00:32:49,210 --> 00:32:51,546 Prisiminkite nulio savaitę. 696 00:32:51,546 --> 00:32:53,420 Jei turite aštuonis bitus, kiek bendrosios vertės 697 00:32:53,420 --> 00:32:55,503 galite atstovauti su modeliai nulių ir? 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 One-- daugiau nei tai. 700 00:33:00,260 --> 00:33:03,490 Taigi 256 Iš viso, jei jums pradėti skaičiuoti nuo nulio. 701 00:33:03,490 --> 00:33:07,120 Taigi, jei turite aštuonių bits-- Taigi, jei mes turėjo mūsų dvejetainiai lemputes čia vėl, 702 00:33:07,120 --> 00:33:12,180 galėtume paversti šiuos lemputes ant ir išjungti bet 256 unikalių modelių. 703 00:33:12,180 --> 00:33:13,640 >> Dabar tai yra tiek problematiškas. 704 00:33:13,640 --> 00:33:16,857 Ne tiek daug anglų ir romanų kalbos, bet tikrai 705 00:33:16,857 --> 00:33:19,190 kai jūs įdiegti, už Pavyzdžiui, Azijos kalbomis, kurie 706 00:33:19,190 --> 00:33:22,580 turi daug daugiau simbolių, nei kaip 26 abėcėlės raidės. 707 00:33:22,580 --> 00:33:24,390 Mes iš tikrųjų gali prireikti daugiau nei vieną baitą. 708 00:33:24,390 --> 00:33:28,240 Ir, laimei, į Pastaraisiais metais visuomenė 709 00:33:28,240 --> 00:33:31,040 priimti kitus standartus, kurie naudoja daugiau nei vienas baitas už mokestį. 710 00:33:31,040 --> 00:33:34,210 >> Bet dabar C, pagal nutylėjimą yra tik vienas baitas ar aštuonis bitus. 711 00:33:34,210 --> 00:33:38,195 Sveikasis skaičius, tuo tarpu, yra keturi baitų, kitaip žinoma kaip 32 bitai. 712 00:33:38,195 --> 00:33:41,320 Tai reiškia, kas kuo skaičius galime atstovauti su int 713 00:33:41,320 --> 00:33:41,820 matyt? 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 Su milijardo. 716 00:33:45,050 --> 00:33:46,760 Taigi, tai keturis milijardus suteikti arba užtrukti. 717 00:33:46,760 --> 00:33:49,840 2 prie 32th galios, jei mes prisiimti jokių neigiamus skaičius 718 00:33:49,840 --> 00:33:52,530 ir tiesiog naudoti visi teigiami numeriai, tai keturis milijardus 719 00:33:52,530 --> 00:33:53,730 suteikti arba užtrukti galimybes. 720 00:33:53,730 --> 00:33:57,890 Plūdė, tuo tarpu, yra skirtingo tipo duomenų tipo C. Jis vis dar numeris 721 00:33:57,890 --> 00:33:58,990 bet tai realus skaičius. 722 00:33:58,990 --> 00:34:00,660 Kažkas su kablelio. 723 00:34:00,660 --> 00:34:03,000 Ir paaiškėja, kad C taip pat naudoja keturis baitus 724 00:34:03,000 --> 00:34:05,340 atstovauti slankiojo kablelio vertybes. 725 00:34:05,340 --> 00:34:09,420 >> Deja, kaip daugelis plūduriuojančius taško verčių ten pasaulyje? 726 00:34:09,420 --> 00:34:11,582 Kiek realus skaičiai yra ten? 727 00:34:11,582 --> 00:34:13,540 Yra begalinis skaičius, ir kad nesvarbu 728 00:34:13,540 --> 00:34:15,164 ten begalinis skaičius sveikieji skaičiai. 729 00:34:15,164 --> 00:34:18,070 Taigi mes jau natūra kasti sau duobę čia. 730 00:34:18,070 --> 00:34:21,780 Pagal kurią matyt computers-- ne Mažiausiai programos parašytos C temperatūroje them-- 731 00:34:21,780 --> 00:34:24,110 gali tik tikėtis, kaip aukštas, kaip keturis milijardus suteikti arba užtrukti, 732 00:34:24,110 --> 00:34:26,260 ir slankiojo kablelio vertybes gali tik matyt 733 00:34:26,260 --> 00:34:28,330 turėti tam tikrą baigtinį kiekį tikslumu. 734 00:34:28,330 --> 00:34:30,810 Tik tiek daug skaitmenų po jų kablelio. 735 00:34:30,810 --> 00:34:32,822 >> Nes, žinoma, jei turite tik 32 bitai, 736 00:34:32,822 --> 00:34:36,030 Aš nežinau, kaip mes ketiname eiti apie atstovaujančių nekilnojamojo numbers-- tikriausiai 737 00:34:36,030 --> 00:34:37,409 su skirtingų tipų modelius. 738 00:34:37,409 --> 00:34:40,030 Bet ten tikrai baigtinis Daug tokių modelių, 739 00:34:40,030 --> 00:34:41,830 todėl čia taip pat tai yra problemiškas. 740 00:34:41,830 --> 00:34:43,710 >> Dabar mes galime šiek tiek išvengti problemų. 741 00:34:43,710 --> 00:34:45,710 Jei nenorite naudoti plūdę, galite naudoti du kartus 742 00:34:45,710 --> 00:34:50,230 C, kuris suteikia jums aštuonis baitų, kurie yra būdas daugiau galimų modelių nuliai 743 00:34:50,230 --> 00:34:50,730 ir tie. 744 00:34:50,730 --> 00:34:55,199 Bet tai vis dar ribotas, kuris vyksta būti problemiška, jei jums reikia parašyti programinę įrangą 745 00:34:55,199 --> 00:34:57,670 grafikos ar išgalvotas matematinės formulės. 746 00:34:57,670 --> 00:35:00,410 Taigi jums gali iš tikrųjų nori suskaičiuoti daugiau nei tai. 747 00:35:00,410 --> 00:35:05,640 Ilgai long-- kvailai named-- taip pat aštuonių baitų arba 64 bitų, 748 00:35:05,640 --> 00:35:10,260 ir tai yra du kartus tol, kol int, ir tai ilgą sveiko skaičiaus. 749 00:35:10,260 --> 00:35:15,655 >> Pramogos fact-- jei int yra keturi baitai, kiek yra C: paprastai ilgai? 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 Taip pat keturių baitų, tačiau ilgai ilgai aštuonių baitų, 752 00:35:21,560 --> 00:35:23,050 ir tai yra dėl istorinių priežasčių. 753 00:35:23,050 --> 00:35:26,450 >> Bet Takeaway dabar yra tik tai, kad duomenys turi 754 00:35:26,450 --> 00:35:29,625 turi būti pavaizduoti computer-- ŠTAI fizinis įrenginys su elektros, 755 00:35:29,625 --> 00:35:32,190 jis paprastai vairavimo tie nuliai ir ones-- 756 00:35:32,190 --> 00:35:34,320 su ribotais kiekiais tikslumu. 757 00:35:34,320 --> 00:35:35,620 Taigi, kas yra problema tada? 758 00:35:35,620 --> 00:35:37,480 >> Na ten problema iš sveikojo skaičiaus perpildymo. 759 00:35:37,480 --> 00:35:39,780 Ne tik C, bet kompiuteriai apskritai. 760 00:35:39,780 --> 00:35:42,590 Pavyzdžiui, jei tai yra baitų verta bit-- 761 00:35:42,590 --> 00:35:45,120 todėl, jei tai yra aštuoni bit-- visi iš kurių yra numeris vienas. 762 00:35:45,120 --> 00:35:47,300 Kas numeris yra atstovaujančių jei mes manome, 763 00:35:47,300 --> 00:35:50,730 tai visas teigiamas vertybes dvejetainiu? 764 00:35:50,730 --> 00:35:54,410 >> 255, ir tai ne 256, nes nulis yra žemiausia skaičius. 765 00:35:54,410 --> 00:35:56,760 Taigi 255 yra aukščiausias vienas, tačiau problema 766 00:35:56,760 --> 00:36:00,330 tarkime, kad aš norėjau prieaugio šį kintamąjį, kad 767 00:36:00,330 --> 00:36:04,030 naudoja aštuonis bitus iš viso jei noriu prieaugio jį. 768 00:36:04,030 --> 00:36:07,160 >> Na, kai aš pridėti vienas visiems šiems tie, 769 00:36:07,160 --> 00:36:10,500 galite galbūt įsivaizduoti visually-- tik kaip atlikti vieną naudojant decimals-- 770 00:36:10,500 --> 00:36:12,300 kažkas ketina tekėti į kairę. 771 00:36:12,300 --> 00:36:15,590 Ir iš tiesų, jei aš pridėti numerį viena tai, kas vyksta dvejetainis 772 00:36:15,590 --> 00:36:17,670 yra tai, kad yra kupina atgal iki nulio. 773 00:36:17,670 --> 00:36:21,730 >> Taigi, jei jūs tik use-- ne int, bet vienas baitas skaičius sveikieji skaičiai 774 00:36:21,730 --> 00:36:27,170 programoje, kurią kuo greičiau default-- jūs gaunate 250, 251, 252, 253, 254, 775 00:36:27,170 --> 00:36:32,710 255-- 0 ateina po 255, kuris yra tikriausiai ne ką 776 00:36:32,710 --> 00:36:34,790 vartotojas ketina tikėtis. 777 00:36:34,790 --> 00:36:39,620 >> Dabar tuo tarpu slankiojo kablelio pasaulį, Jūs taip pat turi panašią problemą. 778 00:36:39,620 --> 00:36:42,670 Ne tiek daug su didžiausiu number-- nors tai dar klausimas. 779 00:36:42,670 --> 00:36:45,360 Bet su tikslumo suma kad jūs galite atstovauti. 780 00:36:45,360 --> 00:36:49,490 Taigi leiskite pažvelgti į šį pavyzdį Čia taip pat iš šiandienos šaltinio code-- 781 00:36:49,490 --> 00:36:52,070 plūdės 0.c. 782 00:36:52,070 --> 00:36:54,280 >> Ir atkreipkite dėmesį, kad tai super paprasta programa, kuri 783 00:36:54,280 --> 00:36:56,580 matyt turi atsispausdinti kas vertė? 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 Ką lažintis tai vyksta spausdinti nors ten iš naujos sintaksės tiek 786 00:37:04,110 --> 00:37:05,540 čia? 787 00:37:05,540 --> 00:37:06,700 Taigi, tikiuosi, 0.1. 788 00:37:06,700 --> 00:37:10,000 Taigi iš vienos dešimtosios lygiavertis nes darau 1 dalijami iš 10. 789 00:37:10,000 --> 00:37:12,430 Aš saugoti atsakymą į kintamąjį vadinamas f. 790 00:37:12,430 --> 00:37:15,850 Tai kintamasis yra tipo plūdės, kuri yra raktažodis Aš tiesiog pasiūlė egzistavo. 791 00:37:15,850 --> 00:37:18,910 >> Mes nematėme prieš tai, bet tai tipo tvarkingas būdu printf 792 00:37:18,910 --> 00:37:22,110 nurodyti, kaip daug skaitmenų jums norite matyti po kablelio. 793 00:37:22,110 --> 00:37:25,020 Taigi, šis žymėjimas reiškia tiesiog kad čia vietos rezervavimo ženklas. 794 00:37:25,020 --> 00:37:27,900 Tai už slankiojo kablelio vertė, ir oh, beje, 795 00:37:27,900 --> 00:37:31,389 parodyti jį su po dešimtainio taško su vienas skaičius po kablelio. 796 00:37:31,389 --> 00:37:33,180 Štai numeris Reikšmingų skaitmenų, 797 00:37:33,180 --> 00:37:34,650 taip sakant, kad jūs galbūt norėsite. 798 00:37:34,650 --> 00:37:40,450 >> Taigi leiskite man eiti į priekį ir daryti kad plūdė-0, ./float-0, 799 00:37:40,450 --> 00:37:46,660 ir, matyt, 1, padalytą iš 10 yra 0,0. 800 00:37:46,660 --> 00:37:47,760 Dabar kodėl tai yra? 801 00:37:47,760 --> 00:37:51,380 >> Na vėl, kompiuteris, atsižvelgiant man pažodžiui, ir aš parašiau 1 802 00:37:51,380 --> 00:37:56,680 ir parašiau 10, ir atspėti, kas yra manoma, duomenų tipas šioms dviems 803 00:37:56,680 --> 00:37:58,440 vertybes? 804 00:37:58,440 --> 00:38:00,970 Int, tai techniškai kažkas šiek tiek skiriasi. 805 00:38:00,970 --> 00:38:04,150 Tai paprastai ilgas, bet tai galiausiai neatsiejama vertė. 806 00:38:04,150 --> 00:38:06,030 Ne slankaus kablelio reikšmė. 807 00:38:06,030 --> 00:38:09,456 >> Kuris yra pasakyti, kad, jei tai yra int ir tai yra int 808 00:38:09,456 --> 00:38:11,830 problema yra ta, kad kompiuterio neturi galimybės 809 00:38:11,830 --> 00:38:13,680 net laikyti, kad kablelio. 810 00:38:13,680 --> 00:38:16,430 Taigi, kai jūs darote, 1 skirstomi 10, naudojant skaičiais 811 00:38:16,430 --> 00:38:20,950 tiek skaitiklį ir vardiklis, atsakymas turėtų būti 0,1. 812 00:38:20,950 --> 00:38:24,930 Bet kadangi computer-- tie, kurie integers-- 813 00:38:24,930 --> 00:38:27,430 nežino, ką daryti su 0,1. 814 00:38:27,430 --> 00:38:30,010 >> Taigi, kas yra aiškiai daro? 815 00:38:30,010 --> 00:38:33,120 Tai tiesiog mesti jį šalin, ir ką aš matau galiausiai 816 00:38:33,120 --> 00:38:38,830 yra 0.0 tik todėl, kad aš primygtinai reikalavo, kad printf parodyti man vieną kablelio. 817 00:38:38,830 --> 00:38:41,740 Bet problema yra ta, kad jei jūs padalinti sveikasis skaičius iki sveikojo skaičiaus, 818 00:38:41,740 --> 00:38:44,347 jūs get-- pagal apibrėžimą iš C-- sveikasis skaičius. 819 00:38:44,347 --> 00:38:46,680 Ir ji nesiruošia daryti kažką gražaus ir patogiai 820 00:38:46,680 --> 00:38:49,040 kaip apvalios jį iki artimiausia aukštyn arba žemyn. 821 00:38:49,040 --> 00:38:51,860 Ji ketina trumpinti viskas po dešimtainio. 822 00:38:51,860 --> 00:38:54,030 >> Taigi tiesiog intuityviai, kas tikriausiai pataisyti? 823 00:38:54,030 --> 00:38:55,351 Kas paprasčiausias fix čia? 824 00:38:55,351 --> 00:38:55,850 Taip? 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 Būtent. 827 00:39:01,100 --> 00:39:04,200 Kodėl mes tik gydyti juos kaip slankiojo kablelio vertybes efektyviai 828 00:39:04,200 --> 00:39:05,860 sukant juos į plūdes arba dvejetų. 829 00:39:05,860 --> 00:39:10,500 Ir dabar, jei aš padarysiu plūdės-0, arba, jei aš surinkti plūdės-1, 830 00:39:10,500 --> 00:39:12,570 kuri sutampa su ką tik buvo pasiūlyta. 831 00:39:12,570 --> 00:39:16,400 Ir dabar aš plūdės-0, dabar aš gausiu 0,1. 832 00:39:16,400 --> 00:39:17,234 >> Dabar tai yra nuostabu. 833 00:39:17,234 --> 00:39:19,441 Bet dabar aš ruošiuosi daryti kažkas šiek tiek skiriasi. 834 00:39:19,441 --> 00:39:22,280 Man smalsu pamatyti, kas iš tikrųjų vyksta po gaubtu, 835 00:39:22,280 --> 00:39:26,050 ir aš ruošiuosi spausdinti šį iš 28 skaitmenų po kablelio. 836 00:39:26,050 --> 00:39:29,730 Noriu tikrai pamatyti 0.1000-- infinite-- 837 00:39:29,730 --> 00:39:32,710 [Nesigirdi] 27 nuliai po tos 0.1. 838 00:39:32,710 --> 00:39:34,740 >> Na pažiūrėkime, jei tai ką aš iš tikrųjų gauti. 839 00:39:34,740 --> 00:39:39,430 Padaryti plūdės-0 patį failą. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 Leiskite priartinkite dramos atsakymą. 842 00:39:44,380 --> 00:39:49,980 Visą šį laiką, jūs buvote galvoti 1, padalytą iš 10, yra 10%, arba 0,1. 843 00:39:49,980 --> 00:39:50,810 Tai ne. 844 00:39:50,810 --> 00:39:53,210 Bent tiek, kiek kompiuterio atžvilgiu. 845 00:39:53,210 --> 00:39:57,060 >> Dabar why-- Gerai, pilnas melas 1, padalytą iš 10 yra 0,1. 846 00:39:57,060 --> 00:39:59,710 Bet why-- kad nėra Takeaway šiandien. 847 00:39:59,710 --> 00:40:04,010 Tad kodėl kompiuteris manote, skirtingai nuo mums visiems į kambarį, 848 00:40:04,010 --> 00:40:06,870 kad 1, padalytą iš 10 yra tikrai, kad kvailai vertė? 849 00:40:06,870 --> 00:40:10,620 Kas kompiuteris daro matyt? 850 00:40:10,620 --> 00:40:12,490 Kas tai? 851 00:40:12,490 --> 00:40:13,785 >> Tai nėra perkrautas, per se. 852 00:40:13,785 --> 00:40:15,910 Perpildyta yra paprastai, kai jums wrap aplink vertę. 853 00:40:15,910 --> 00:40:18,970 Tai šis netikslumo problema į slankaus kablelio vertė 854 00:40:18,970 --> 00:40:22,220 kur jūs turite tik 32 arba gal net 64 bit. 855 00:40:22,220 --> 00:40:25,230 Bet jei ten begalinis skaičius nekilnojamojo numbers-- 856 00:40:25,230 --> 00:40:27,940 numerius su dešimtųjų kiekis ir numeriai thereafter-- tikrai 857 00:40:27,940 --> 00:40:29,380 Jūs negalite atstovauti juos visus. 858 00:40:29,380 --> 00:40:32,870 Taigi kompiuteris davė mums arčiausiai rungtynės 859 00:40:32,870 --> 00:40:37,090 vertę, ji gali atstovauti naudojant, kad daug bitai vertės Aš iš tikrųjų norite, 860 00:40:37,090 --> 00:40:38,690 kuris yra 0,1. 861 00:40:38,690 --> 00:40:40,685 >> Deja, jei jums pradėti daryti matematiką, ar jūs 862 00:40:40,685 --> 00:40:44,360 pradėti įtraukiant šiuos plūduriuojančius rūšių taško vertės svarbaus programs-- 863 00:40:44,360 --> 00:40:46,770 finansų programinė įranga, karinė software-- nieko 864 00:40:46,770 --> 00:40:49,090 kur suvokimas yra tikriausiai gana svarbus. 865 00:40:49,090 --> 00:40:51,520 Ir jūs pradėti pridedant numeriai, kaip tai ir pradžia 866 00:40:51,520 --> 00:40:54,050 veikia, kad programinė įranga su tikrai didelėmis žaliavų 867 00:40:54,050 --> 00:40:56,890 arba daug valandų ar daug Dienų arba daug metų, 868 00:40:56,890 --> 00:41:01,060 Šios mažytės mažai klaidų tikrai gali pridėti iki per tam tikrą laiką. 869 00:41:01,060 --> 00:41:04,252 >> Dabar, kaip panaikinti, jei jūs kada nors matyti Supermenas 3 arba Office Space 870 00:41:04,252 --> 00:41:05,960 ir jūs tikriausiai pamenate, kad kaip tie vaikinai pavogė 871 00:41:05,960 --> 00:41:08,668 daug pinigų iš savo kompiuterio naudojant slankiojo kablelio vertybes 872 00:41:08,668 --> 00:41:11,290 ir sudėjus mažai liekanos, tikiuosi, kad filmas 873 00:41:11,290 --> 00:41:12,390 dabar suteikia daugiau prasmės. 874 00:41:12,390 --> 00:41:14,930 Tai yra tai, ką jie užuominos tame filme. 875 00:41:14,930 --> 00:41:16,710 Tai, kad dauguma įmonės turėtų ne ieškoti 876 00:41:16,710 --> 00:41:18,600 po tam tikro skaičiaus po kablelio, 877 00:41:18,600 --> 00:41:20,009 bet tie, kurie frakcijas centų. 878 00:41:20,009 --> 00:41:22,550 Taigi pradėdami pridedant juos, pradėdami padaryti daug pinigų 879 00:41:22,550 --> 00:41:23,424 į jūsų banko sąskaitą. 880 00:41:23,424 --> 00:41:25,160 Štai Office Space paaiškinti. 881 00:41:25,160 --> 00:41:28,220 >> Dabar, deja, ne tik Biuro patalpos, yra 882 00:41:28,220 --> 00:41:31,794 keletas teisėtai nerimą ir reikšmingi poveikiai 883 00:41:31,794 --> 00:41:33,710 iš šių rūšių pagrindinės dizaino sprendimai, 884 00:41:33,710 --> 00:41:35,990 ir iš tiesų viena iš priežasčių, mes naudojame C kurse 885 00:41:35,990 --> 00:41:39,640 yra toks, kad jūs tikrai turite šį pagrindą iki suprasti, kaip kompiuteriai dirbti, 886 00:41:39,640 --> 00:41:42,440 kaip programinė įranga veikia ir ne imtis nieko savaime suprantamu dalyku. 887 00:41:42,440 --> 00:41:45,820 >> Ir iš tiesų, deja, net ir su kad esminis supratimas, 888 00:41:45,820 --> 00:41:47,370 mes, žmonės daro klaidų. 889 00:41:47,370 --> 00:41:51,310 Ir tai, ką aš maniau aš pasidalinti yra tai aštuonių minučių vaizdo įrašą čia imtis 890 00:41:51,310 --> 00:41:56,980 iš Šiuolaikiniai stebuklai epizodas, kuris yra švietimo šou apie tai, kaip viskas veikia 891 00:41:56,980 --> 00:42:00,370 kad dažai dvi nuotraukas kada netinkamo naudojimo 892 00:42:00,370 --> 00:42:02,540 ir supratimas slankiojo kablelio vertybes 893 00:42:02,540 --> 00:42:05,610 paskatino kai reikšminga gaila rezultatus. 894 00:42:05,610 --> 00:42:06,363 Paimkime išvaizdą. 895 00:42:06,363 --> 00:42:07,029 [VIDEO PLAYBACK] 896 00:42:07,029 --> 00:42:11,290 -Mes Dabar grįžti į "inžinerijos Katastrofos "ant Šiuolaikinės stebuklai. 897 00:42:11,290 --> 00:42:12,940 Kompiuteriai. 898 00:42:12,940 --> 00:42:15,580 Mes visi ateis priimti dažnai nelinksma problemų, kurios 899 00:42:15,580 --> 00:42:20,960 gavo su them-- klaidų, virusų, ir programinė įranga glitches-- mažų kainų 900 00:42:20,960 --> 00:42:23,100 mokėti už patogumą. 901 00:42:23,100 --> 00:42:27,770 Tačiau aukštųjų technologijų ir dideliu greičiu karinių ir kosmoso programos paraiškas, 902 00:42:27,770 --> 00:42:32,780 mažiausia problema gali būti padidintas į katastrofą. 903 00:42:32,780 --> 00:42:38,880 >> June 4, 1996, mokslininkai parengė pradėti nepilotuojamas Ariane 5 raketą. 904 00:42:38,880 --> 00:42:41,190 Jis nešėsi mokslo palydovai sukurta 905 00:42:41,190 --> 00:42:44,570 nustatyti, kaip tiksliai Žemės magnetinio lauko sąveikauja 906 00:42:44,570 --> 00:42:47,380 su saulės vėjų. 907 00:42:47,380 --> 00:42:50,580 Raketų buvo pastatyta Europos kosmoso agentūra, 908 00:42:50,580 --> 00:42:54,400 ir pakilo iš savo įrenginio nuo Prancūzijos Gvianos priekrantės vandenų. 909 00:42:54,400 --> 00:42:57,520 >> -At Apie 37 sekundžių į skrydžio, jie pirmą kartą 910 00:42:57,520 --> 00:42:59,070 pastebėjau, kad kažkas negerai. 911 00:42:59,070 --> 00:43:02,240 Tai purkštukai buvo pakreipti tokiu būdu jie tikrai neturėtų. 912 00:43:02,240 --> 00:43:06,550 Maždaug 40 sekundžių į skrydžio aiškiai transporto buvo bėdų, 913 00:43:06,550 --> 00:43:08,820 ir tai, kai jie padarė sprendimas jį sunaikinti. 914 00:43:08,820 --> 00:43:12,370 Diapazonas saugos pareigūnas, su milžiniškas viduriai, spaudžiamas mygtukas 915 00:43:12,370 --> 00:43:18,030 ir susprogdino raketą, kol ji galėtų tapti pavojinga visuomenės saugumui. 916 00:43:18,030 --> 00:43:21,010 >> -Tai Buvo mergautinė kelionė Ariane 5, 917 00:43:21,010 --> 00:43:23,920 ir jos naikinimo veiksmai buvo padėkite dėl škvalas 918 00:43:23,920 --> 00:43:25,932 įtraukti į raketą savo programinę įrangą. 919 00:43:25,932 --> 00:43:27,640 -The Problema Ariadnė buvo, kad 920 00:43:27,640 --> 00:43:30,500 buvo skaičius, kad reikia 64 bitai išreikšti, 921 00:43:30,500 --> 00:43:33,560 ir jie norėjo atsiversti tai prie 16 bitų skaičius. 922 00:43:33,560 --> 00:43:36,820 Jie manė, kad skaičius niekada bus labai didelis. 923 00:43:36,820 --> 00:43:40,940 Tai dauguma tų skaitmenų į 64 bitų skaičius buvo nuliai. 924 00:43:40,940 --> 00:43:42,450 Jie klydo. 925 00:43:42,450 --> 00:43:45,000 >> -The Vienas nesugebėjimas programa sutikti 926 00:43:45,000 --> 00:43:49,460 Skaičiaus natūra generuoja dar buvo ties gedimo priežastis. 927 00:43:49,460 --> 00:43:54,260 Programinės įrangos kūrimas tapo labai brangus dalis naujos technologijos. 928 00:43:54,260 --> 00:43:57,060 Ariane 4 raketa turėjo buvo labai sėkminga. 929 00:43:57,060 --> 00:44:01,600 Tiek daug programinės įrangos sukurtos jis taip pat buvo naudojamas Ariane 5. 930 00:44:01,600 --> 00:44:04,790 >> -The Pagrindinė problema buvo ta, kad "Ariane 5. 931 00:44:04,790 --> 00:44:11,200 Buvo faster-- paspartino greičiau, ir programinė įranga nebuvo apskaitomi, kad. 932 00:44:11,200 --> 00:44:14,910 >> -Iš Raketų naikinimo buvo didžiulis finansinis katastrofa. 933 00:44:14,910 --> 00:44:18,630 Viskas dėl to, kad minutę programinės įrangos klaidos. 934 00:44:18,630 --> 00:44:21,160 Bet tai buvo ne pirmas laiko duomenis konvertavimo problemos 935 00:44:21,160 --> 00:44:24,770 buvo kentėjo modernią raketų technologiją. 936 00:44:24,770 --> 00:44:28,020 >> -In 1991 su pradžios pirmojo Persijos įlankos karo, 937 00:44:28,020 --> 00:44:30,540 Patriot raketų patyrė panašios rūšies 938 00:44:30,540 --> 00:44:32,465 iš skaičių konvertavimo problemos. 939 00:44:32,465 --> 00:44:36,760 Ir kaip rezultatas 28 people-- 28 Amerikos soldiers-- žuvo, 940 00:44:36,760 --> 00:44:39,010 ir apie šimtai sužeistųjų. 941 00:44:39,010 --> 00:44:42,830 Kai Patriot, kuris turėjo apsaugoti nuo gaunamų Scuds, 942 00:44:42,830 --> 00:44:45,780 Nepavyko į ugnį raketa. 943 00:44:45,780 --> 00:44:51,610 >> -Kai Irakas įsiveržė Kuveitas, ir Amerikoje pradėjo Desert Storm 1991 pradžioje, 944 00:44:51,610 --> 00:44:55,720 Patriot raketų baterijas buvo dislokuoti apsaugoti Saudo Arabija ir Izraeliu 945 00:44:55,720 --> 00:44:59,180 iš Irako SCUD raketų atakų. 946 00:44:59,180 --> 00:45:03,080 Patriotas yra JAV vidutinio nuotolio paviršius-oras sistema 947 00:45:03,080 --> 00:45:06,530 pagaminti Raytheon kompanijos. 948 00:45:06,530 --> 00:45:09,500 >> -The Patriot dydis kolektoriaus itself-- 949 00:45:09,500 --> 00:45:14,705 tai apie maždaug 20 pėdų ilgio, ir jis sveria apie £ 2000. 950 00:45:14,705 --> 00:45:19,090 Ir tai atlieka maždaug galvutę, Manau, kad tai maždaug £ 150. 951 00:45:19,090 --> 00:45:23,880 Ir pati užtaisą yra aukštos sprogmuo, kuris 952 00:45:23,880 --> 00:45:26,700 turi fragmentus aplink jį. 953 00:45:26,700 --> 00:45:31,630 Taigi iš galvutės korpusas skirta veikti kaip Śrut. 954 00:45:31,630 --> 00:45:34,040 >> -The Raketų atliekami keturių už konteinerį, 955 00:45:34,040 --> 00:45:37,170 ir gabena puspriekabe. 956 00:45:37,170 --> 00:45:44,880 >> -The Patriot priešraketinė sistema nueina dabar bent 20 metų. 957 00:45:44,880 --> 00:45:48,380 Iš pradžių buvo sukurta kaip oro gynybos raketų 958 00:45:48,380 --> 00:45:50,810 numušti priešo lėktuvus. 959 00:45:50,810 --> 00:45:54,410 Per pirmąjį Persijos įlankos karą kai, kad karas atėjo, 960 00:45:54,410 --> 00:45:59,650 armija norėjo jį naudoti numušti Scuds, o ne lėktuvais. 961 00:45:59,650 --> 00:46:03,580 Irako oro pajėgų buvo ne tiek daug problemų, 962 00:46:03,580 --> 00:46:06,590 bet armija nerimauja Scuds. 963 00:46:06,590 --> 00:46:10,120 Ir taip jie bandė atnaujinti Patriot. 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting Priešą raketų važiuojant Mach 5 965 00:46:12,740 --> 00:46:15,670 ketino būti pakankamai sudėtinga. 966 00:46:15,670 --> 00:46:18,440 Bet kai Patriot buvo skubėjome eksploatuoti, 967 00:46:18,440 --> 00:46:22,580 Armija buvo nežino Irako modifikuoti taip, kad 968 00:46:22,580 --> 00:46:25,880 pareiškė savo scuds beveik neįmanoma į jį. 969 00:46:25,880 --> 00:46:30,690 >> -Kas Atsitiko su Scuds kad buvo prasiveržęs buvo nestabili. 970 00:46:30,690 --> 00:46:32,000 Jie buvo klibantis. 971 00:46:32,000 --> 00:46:37,210 Dėl šios priežasties buvo Iraqis-- siekiant gauti 600 kilometrų iš 972 00:46:37,210 --> 00:46:41,680 iš 300 kilometrų nuotolio missile-- paėmė svorio iš priekio galvutės, 973 00:46:41,680 --> 00:46:43,340 ir padarė užtaisą lengvesni. 974 00:46:43,340 --> 00:46:48,490 Taigi dabar "Patriot bando ateiti tuo SCUD, ir dauguma LAIKĄ_ 975 00:46:48,490 --> 00:46:52,880 Dauguma LAIKĄ_ tai tiesiog skristi į SCUD. 976 00:46:52,880 --> 00:46:57,120 >> -Kai The Patriot sistemos operatorių supratau Patriot praleido savo tikslą, 977 00:46:57,120 --> 00:47:01,630 jie susprogdino patriotas savo užtaisą išvengti galimų aukų, jei jis 978 00:47:01,630 --> 00:47:04,440 buvo leista patekti į žemę. 979 00:47:04,440 --> 00:47:08,700 >> Išmokėtą sumą buvo tai, ką dauguma žmonių matė kaip dideli ugnies danguje, 980 00:47:08,700 --> 00:47:14,180 ir nesuprastas, nes ašyje SCUD galvučių. 981 00:47:14,180 --> 00:47:18,020 >> -Although Naktiniame danguje, patriotai pasirodė sėkmingai naikina 982 00:47:18,020 --> 00:47:23,280 Scuds, ne Dhahran galėtų būti Nesuklyskite apie jo rezultatus. 983 00:47:23,280 --> 00:47:27,930 Yra patriotas savo radaro sistema prarado kelio priimamą SCUD 984 00:47:27,930 --> 00:47:30,260 ir niekada pradėjo dėl į programinės įrangos trūkumas. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> Tai buvo izraeliečių, kurie pirmą kartą atrado kad ilgiau sistema buvo, 987 00:47:38,880 --> 00:47:41,130 didesnis laiko skirtumas tapo. 988 00:47:41,130 --> 00:47:44,770 Dėl laikrodis įterptųjų į sistemos kompiuterį. 989 00:47:44,770 --> 00:47:48,190 >> -Apie Prieš dvi savaites iki į Dhahran tragedija, 990 00:47:48,190 --> 00:47:50,720 Izraelis pranešė, kad Gynybos departamentas 991 00:47:50,720 --> 00:47:52,410 kad sistema buvo prarasti laiką. 992 00:47:52,410 --> 00:47:54,410 Po maždaug aštuonių valandų iš eilės, jie pastebėjo, 993 00:47:54,410 --> 00:47:57,690 kad sistema tapus pastebimai mažiau tikslūs. 994 00:47:57,690 --> 00:48:01,850 Gynybos departamentas atsakė sakau visi Patriot baterijų 995 00:48:01,850 --> 00:48:04,800 ne palikti sistemas nuo ilgą laiką. 996 00:48:04,800 --> 00:48:06,980 Jie niekada nesakė, kas ilgą laiką buvo. 997 00:48:06,980 --> 00:48:09,140 8 valandos, 10 valandų, tūkstantį valandų. 998 00:48:09,140 --> 00:48:11,300 Niekas nežinojo. 999 00:48:11,300 --> 00:48:13,320 >> -The Patriot baterija dislokuota kareivinės 1000 00:48:13,320 --> 00:48:18,310 ne Dhahran ir jos trūkumų vidaus laikrodis Buvo daugiau nei 100 valandų 1001 00:48:18,310 --> 00:48:21,520 apie 25 vasaris naktį. 1002 00:48:21,520 --> 00:48:25,792 >> -Ji Vikšrinių laiko tikslumu apie sekundės dešimtadaliu. 1003 00:48:25,792 --> 00:48:27,950 Dabar sekundės dešimtas yra įdomus skaičius 1004 00:48:27,950 --> 00:48:31,850 nes jis negali būti išreikštas dvejetainiu tiksliai, kuris 1005 00:48:31,850 --> 00:48:36,500 tai jis negali būti išreikštas tiksliai bet šiuolaikinio skaitmeninio kompiuterio. 1006 00:48:36,500 --> 00:48:41,070 Sunku patikėti, bet naudoti kaip pavyzdį. 1007 00:48:41,070 --> 00:48:43,420 >> Paimkime skaičių trečdalį. 1008 00:48:43,420 --> 00:48:47,330 Trečdalis negali būti išreikštas dešimtaine tiksliai. 1009 00:48:47,330 --> 00:48:52,060 Trečdalis yra 0.333 vyksta begalybės. 1010 00:48:52,060 --> 00:48:56,420 Nėra jokio būdo, kaip tai padaryti su absoliutus tikslumas dešimtainį. 1011 00:48:56,420 --> 00:48:59,530 Būtent tokios problemos kad atsitiko Patriot. 1012 00:48:59,530 --> 00:49:04,040 Ilgiau sistema bėgo, blogiau laiko klaida tapo. 1013 00:49:04,040 --> 00:49:08,840 >> -Po 100 veikimo valandų, klaida metu buvo tik apie trečdalis 1014 00:49:08,840 --> 00:49:10,440 sekundės. 1015 00:49:10,440 --> 00:49:14,150 Tačiau, kalbant apie orientacija raketų važiuojant 5 macho, 1016 00:49:14,150 --> 00:49:18,560 tai lėmė sekimo klaidos daugiau nei 600 metrų. 1017 00:49:18,560 --> 00:49:21,870 Būtų lemtinga klaida už ne Dhahran karių. 1018 00:49:21,870 --> 00:49:28,455 >> -Kas Atsitiko yra Scud įkūrimas buvo aptikti ankstyvojo perspėjimo palydovai, 1019 00:49:28,455 --> 00:49:32,710 ir jie žinojo Scud artėjo jų bendrą kryptį. 1020 00:49:32,710 --> 00:49:35,150 Jie nežinojo, kur jis atėjo. 1021 00:49:35,150 --> 00:49:38,210 Tai buvo dabar iki radaro komponentas Patriot sistemos 1022 00:49:38,210 --> 00:49:43,150 ginti Dhahran surasti ir išlaikyti kūrinys gaunamus priešų raketų. 1023 00:49:43,150 --> 00:49:44,561 >> -The Radaras buvo labai protingas. 1024 00:49:44,561 --> 00:49:46,560 Tai iš tiesų sekti iš SCUD pozicija 1025 00:49:46,560 --> 00:49:48,930 ir tada numatyti, kur tai tikriausiai būtų 1026 00:49:48,930 --> 00:49:51,380 Kitą kartą radaro siunčiami impulsas iš. 1027 00:49:51,380 --> 00:49:53,040 Tai buvo vadinama diapazonas vartai. 1028 00:49:53,040 --> 00:49:57,620 >> -Tada Kartą Patriot nusprendžia pakankamai laiko turi 1029 00:49:57,620 --> 00:50:02,400 praėjo grįžti ir patikrinti kitas vieta šio aptikto objekto 1030 00:50:02,400 --> 00:50:03,550 jis eina atgal. 1031 00:50:03,550 --> 00:50:07,820 Taigi, kai jis grįžo į negerai vieta, tai tada nemato objektą. 1032 00:50:07,820 --> 00:50:10,360 Ir ji nusprendžia, kad ten buvo ne objektas. 1033 00:50:10,360 --> 00:50:13,630 Tai ten buvo klaidinga aptikimo ir jis nukrenta takelį. 1034 00:50:13,630 --> 00:50:16,970 >> -The Įeinantis Scud dingo iš radaro ekrano, 1035 00:50:16,970 --> 00:50:20,200 vėliau ir sekundes, ją pateko į kareivines. 1036 00:50:20,200 --> 00:50:22,570 Scud žuvo 28. 1037 00:50:22,570 --> 00:50:26,110 Tai buvo naujausia atleistas per pirmąjį Persijos įlankos karą. 1038 00:50:26,110 --> 00:50:31,920 Tragiškai, atnaujinama programinė įranga atvyko auštant kitą dieną. 1039 00:50:31,920 --> 00:50:34,870 Programinė įranga trūkumas turėjo buvo fiksuotas, uždarymas 1040 00:50:34,870 --> 00:50:39,150 vienas skyrius neramus istorija Patriot raketų. 1041 00:50:39,150 --> 00:50:40,030 >> [END VIDEO PLAYBACK] 1042 00:50:40,030 --> 00:50:41,488 >> David J. Malan: Štai jį CS50. 1043 00:50:41,488 --> 00:50:42,820 Pamatysime jus trečiadienį. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [Muzikos grojimo] 1046 00:50:50,370 --> 00:54:23,446