1 00:00:00,000 --> 00:00:10,920 >> [Muusika mängib] 2 00:00:10,920 --> 00:00:14,680 >> DAVID J Malan: Olgu, tere tulemast tagasi CS50. 3 00:00:14,680 --> 00:00:16,500 See on algus nädalal kaks. 4 00:00:16,500 --> 00:00:18,940 Sõna ühest meie sõpru campus - 5 00:00:18,940 --> 00:00:22,620 kui olete huvitatud, võib-olla, kas praegu või tulevikus perspektiivis 6 00:00:22,620 --> 00:00:25,670 isegi pärast seda, kui on mugavam, õpetamise Lähis kooliõpilaste vähe 7 00:00:25,670 --> 00:00:27,680 midagi arvutiteadus, ei pea selle URL. 8 00:00:27,680 --> 00:00:32,360 Nad on eriti vaja just nüüd on õpetajad, eriti kui teil on 9 00:00:32,360 --> 00:00:34,700 oli mingi kokkupuude arvutiteadus. 10 00:00:34,700 --> 00:00:38,060 >> Nii meelde, et viimane kord, tutvustasime mõned andmed tüübid C, ja 11 00:00:38,060 --> 00:00:40,590 olete hakanud, et saada oma käed määrdunud neid seni 12 00:00:40,590 --> 00:00:41,940 Probleemse määratud üks. 13 00:00:41,940 --> 00:00:43,230 Ja meil oli char. 14 00:00:43,230 --> 00:00:49,100 Nii et veidi tehnilisi tingimusi, mida on char kui sa tead seda täna? 15 00:00:49,100 --> 00:00:51,050 >> Nii et see on märk, kuid olgem Täpsemalt nüüd. 16 00:00:51,050 --> 00:00:53,735 Mida tähendab meie jaoks märk või üksikute char? 17 00:00:53,735 --> 00:00:56,700 18 00:00:56,700 --> 00:00:59,500 Mitte-numbriline märk - 19 00:00:59,500 --> 00:01:00,670 nii ei pruugi. 20 00:01:00,670 --> 00:01:04,580 Selgub, et isegi numbreid, isegi kirjavahemärgid ja tähed 21 00:01:04,580 --> 00:01:06,980 esindatud selle andmed kirjuta tuntud märk. 22 00:01:06,980 --> 00:01:09,440 Nii see ei ole tingimata tähestiku. 23 00:01:09,440 --> 00:01:11,100 Jah? 24 00:01:11,100 --> 00:01:12,275 >> Nii et see on ASCII. 25 00:01:12,275 --> 00:01:15,510 Nii et kui te arvate tagasi nädal null, kui meil oli bait vabatahtlikud 26 00:01:15,510 --> 00:01:19,150 tulla ja kas hoidke oma käed üles või mitte, nad esindatud bitti. 27 00:01:19,150 --> 00:01:22,450 Kuid ühiselt rühma kaheksa, nad esindatud bait. 28 00:01:22,450 --> 00:01:26,030 Ja me kasutusele mõiste ASCII sel loeng, mis lihtsalt on 29 00:01:26,030 --> 00:01:28,170 kaardistamise vahel numbreid ja tähti. 30 00:01:28,170 --> 00:01:32,010 Ja ASCII kasutab, sest need inimesed kaudseid, kaheksa bitti 31 00:01:32,010 --> 00:01:33,660 esindada iseloomu. 32 00:01:33,660 --> 00:01:36,890 >> Nii Seega, kui kaheksa bitti iga võtta üks kahest väärtusest - 33 00:01:36,890 --> 00:01:38,010 null või üks - 34 00:01:38,010 --> 00:01:40,280 See tähendab, et oli kaks võimalust Selle isiku - 35 00:01:40,280 --> 00:01:41,230 null või üks - 36 00:01:41,230 --> 00:01:44,070 kaks selle isiku kohta, kaks selle inimene, kaks seda. 37 00:01:44,070 --> 00:01:47,450 Seega kokku kaks korda kaks korda kaks korda kaks korda kaks - 38 00:01:47,450 --> 00:01:49,700 nii kaks kaheksandat kokku. 39 00:01:49,700 --> 00:01:54,320 Nii et seal on tähemärkide üldarv 256 Võimalik, et saate 40 00:01:54,320 --> 00:01:55,750 esindavad kaheksa bitti. 41 00:01:55,750 --> 00:01:59,210 >> Nüüd neile, kes räägivad Aasia keeled võiksid teada, et seal on rohkem 42 00:01:59,210 --> 00:02:02,620 tegelased maailmas kui lihtsalt As ja Bs ja Cs ja DS. 43 00:02:02,620 --> 00:02:06,130 Ja tõepoolest, ASCII ei piisa palju keeli maailmas. 44 00:02:06,130 --> 00:02:07,760 Aga rohkem sellest mõni teine ​​kord. 45 00:02:07,760 --> 00:02:11,240 Praegu teame, et C, kui soovite esindada kirja tükk 46 00:02:11,240 --> 00:02:15,780 kirjavahemärgid, või lihtsalt midagi iseloom laadi, mida me kasutame char. 47 00:02:15,780 --> 00:02:18,240 Ja see on üks bait või kaheksa bitti. 48 00:02:18,240 --> 00:02:19,690 >> Kuidas int? 49 00:02:19,690 --> 00:02:20,780 Noh, int on täisarv. 50 00:02:20,780 --> 00:02:23,175 Mitu bitti, kui te mäletate, oli täisarv tavaliselt? 51 00:02:23,175 --> 00:02:25,930 52 00:02:25,930 --> 00:02:27,512 Igaüks meenutavad? 53 00:02:27,512 --> 00:02:29,600 Nii et see on tavaliselt 32. 54 00:02:29,600 --> 00:02:32,120 See tegelikult sõltub arvuti et te kasutate. 55 00:02:32,120 --> 00:02:35,770 Kuid seade ja palju arvutid, see on 32 bitti või neli 56 00:02:35,770 --> 00:02:37,140 bytes - kaheksa korda neli. 57 00:02:37,140 --> 00:02:39,790 Ja ints lihtsalt kasutada ladustamiseks numbrid, kas negatiivne, 58 00:02:39,790 --> 00:02:41,610 positiivne või null. 59 00:02:41,610 --> 00:02:45,250 >> Ja kui sul on 32 bitti ja sa ainult hoolivad positiivsed arvud, võib 60 00:02:45,250 --> 00:02:48,960 keegi palliväljak mitu võimalikku täisarvud arvuti võib kujutada alates 61 00:02:48,960 --> 00:02:51,820 nulliga kuni? 62 00:02:51,820 --> 00:02:56,130 Seega oleks kaks kuni 32, mis on ligikaudu neli miljardit eurot. 63 00:02:56,130 --> 00:02:59,720 Nii et need volitused kaks saab olema korduvad teemad infotehnoloogia. 64 00:02:59,720 --> 00:03:03,930 Nagu me näeme, et nad on üsna mugav töötada, isegi kui see ei ole päris 65 00:03:03,930 --> 00:03:05,790 lihtne teha matemaatika pähe. 66 00:03:05,790 --> 00:03:07,000 >> Nii ütleme umbes neli miljardit eurot. 67 00:03:07,000 --> 00:03:08,620 Nüüd on pikk pikk - 68 00:03:08,620 --> 00:03:09,770 saad mingi oletus. 69 00:03:09,770 --> 00:03:10,480 See on enam kui int. 70 00:03:10,480 --> 00:03:12,440 Mitu bitti? 71 00:03:12,440 --> 00:03:14,250 Nii 64 bitti või kaheksa baiti. 72 00:03:14,250 --> 00:03:17,480 See lihtsalt tähendab, et sa ei esinda isegi suurem number, suurem positiivne või 73 00:03:17,480 --> 00:03:19,160 suurem negatiivsete arvudega. 74 00:03:19,160 --> 00:03:20,060 >> Ja kuidas ujuda? 75 00:03:20,060 --> 00:03:22,260 See on ujukoma väärtust 32 bitti. 76 00:03:22,260 --> 00:03:25,180 See on lihtsalt reaalne number, mida koos koma. 77 00:03:25,180 --> 00:03:30,100 Aga kui sa selle asemel on vaja rohkem kohti pärast koma või soovite 78 00:03:30,100 --> 00:03:33,720 esindama suurem number mõnede murdosa pärast seda, mida saab kasutada 79 00:03:33,720 --> 00:03:36,260 double, mis on 64 bitti. 80 00:03:36,260 --> 00:03:38,240 >> Aga seal on huvitav Buffee siin. 81 00:03:38,240 --> 00:03:42,890 Nii et kui ints on piiratud 32 bitti ja isegi pikad pikad on piiratud 64 82 00:03:42,890 --> 00:03:46,180 bitti, et omamoodi tekitab küsimuse, Mis siis, kui sa tegelikult tahad lugema 83 00:03:46,180 --> 00:03:48,790 enam kui 4 miljardit int? 84 00:03:48,790 --> 00:03:50,330 Noh, sa lihtsalt kasutada pikk pikk. 85 00:03:50,330 --> 00:03:54,200 Aga mis siis, kui soovite loendada suurem kui kaks kuni 64., anda või võtta? 86 00:03:54,200 --> 00:03:55,810 >> Nüüd, see on tohutu hulk. 87 00:03:55,810 --> 00:03:59,250 Aga lõpuks, siis võib tegelikult hooli selliseid väärtusi, 88 00:03:59,250 --> 00:04:03,070 eriti kui te kasutate andmebaasi ja hakanud koguma palju ja palju 89 00:04:03,070 --> 00:04:06,190 ja palju andmeid ja kordumatute Numbrite iga tükk, et andmed. 90 00:04:06,190 --> 00:04:07,430 Nii et meil selline on probleem. 91 00:04:07,430 --> 00:04:10,700 Ja samamoodi, koos ujukoma väärtused - ujukite või kahekordistab - 92 00:04:10,700 --> 00:04:14,290 kui sa oled ainult sain hulga bitti, kuidas paljud koguarv sa võisid 93 00:04:14,290 --> 00:04:16,980 võimaluse esindada? 94 00:04:16,980 --> 00:04:19,540 >> Noh, see on vähem selge, kui sa kaasata koma. 95 00:04:19,540 --> 00:04:20,899 Aga see on kindlasti piiratud. 96 00:04:20,899 --> 00:04:24,390 Kui teil on piiratud arv bitti, hulga inimeste, piiratud 97 00:04:24,390 --> 00:04:27,350 mitmeid lambid, kindlasti saab moodustavad vaid piiratud arvu 98 00:04:27,350 --> 00:04:28,510 Murdarvud. 99 00:04:28,510 --> 00:04:33,170 Aga kui palju tegelik arv on oma maailma? 100 00:04:33,170 --> 00:04:33,680 Seal on lõputu. 101 00:04:33,680 --> 00:04:37,280 Nii et selline probleem, sest me ei ole lõpmatu summa 102 00:04:37,280 --> 00:04:39,970 mälu või RAM sees meie arvutid. 103 00:04:39,970 --> 00:04:41,780 Nii mõned keeruline asju võib juhtuda. 104 00:04:41,780 --> 00:04:43,900 >> Niisiis olgem minna ja proovida väljendada seda siin. 105 00:04:43,900 --> 00:04:46,240 Lubage mul minna ja avada gedit. 106 00:04:46,240 --> 00:04:50,360 Ma lähen edasi minna ja salvestada faili nimega "floats0.c" lihtsalt olla 107 00:04:50,360 --> 00:04:54,630 kooskõlas näide, mis on saadaval online, kui soovite. 108 00:04:54,630 --> 00:04:58,080 Ja ma lähen edasi minna ja defineerida järgmiselt - 109 00:04:58,080 --> 00:05:01,540 Ma lähen edasi minna ja öelda, int Peamine tühine, kui me sageli teha. 110 00:05:01,540 --> 00:05:07,190 >> Ja siis see programm, ma lähen kuulutada ennast float, nii 32-bit 111 00:05:07,190 --> 00:05:09,700 muutuja nimega f, omavoliliselt. 112 00:05:09,700 --> 00:05:13,910 Ja siis ma lähen salvestada see Ma ei tea, üks kümnendik, seega 0,1. 113 00:05:13,910 --> 00:05:16,590 Ma lähen, et väljendada, et kui üks jagatud 10, mis on täiesti 114 00:05:16,590 --> 00:05:17,790 õiguspärane C. 115 00:05:17,790 --> 00:05:20,460 >> Ja siis on teine ​​rida, ma lihtsalt soovite välja printida, et väärtus. 116 00:05:20,460 --> 00:05:22,950 Nii meenutavad, et saame kasutada tuttav printf. 117 00:05:22,950 --> 00:05:25,420 Me ei taha kasutada% i jaoks int. 118 00:05:25,420 --> 00:05:28,360 Me tahame kasutada% F sularahaga. 119 00:05:28,360 --> 00:05:33,080 Ja siis ma lähen tegema Kenoviiva n, Sulge tsiteerida, eralda, f, semikoolon. 120 00:05:33,080 --> 00:05:34,400 >> Nii et siin on minu programm. 121 00:05:34,400 --> 00:05:35,820 Seal on juba üks viga. 122 00:05:35,820 --> 00:05:38,640 Kas keegi, kelle jaoks see klõpsatud juba tahan juhtida vähemalt 123 00:05:38,640 --> 00:05:40,220 üks viga olen teinud? 124 00:05:40,220 --> 00:05:42,470 Jah? 125 00:05:42,470 --> 00:05:42,800 Jah. 126 00:05:42,800 --> 00:05:47,860 Ma unustasin "# include" juures top, need sümptom, mis siis, kui ma püüan 127 00:05:47,860 --> 00:05:50,490 koostab selle saab olema, et koostaja läheb karjuda, 128 00:05:50,490 --> 00:05:52,770 ütleb undefined sümbol või midagi selle kohta. 129 00:05:52,770 --> 00:05:55,360 Ta ei saa aru midagi nagu printf. 130 00:05:55,360 --> 00:05:59,380 >> Nii et ma lähen tegema "# include ", Salvestage fail. 131 00:05:59,380 --> 00:06:00,400 Ja nüüd on olukord parem. 132 00:06:00,400 --> 00:06:02,690 Aga ma olen ka kavatse juhtida välja üks uus detail täna. 133 00:06:02,690 --> 00:06:08,620 Lisaks täpsustatakse koht omanikele nagu% f% i% s, saate 134 00:06:08,620 --> 00:06:12,320 mõnikord mõjutamiseks selle kohatäide. 135 00:06:12,320 --> 00:06:15,540 Näiteks juhul, kui ujuva punkti väärtus, kui ma tahan ainult 136 00:06:15,540 --> 00:06:22,200 kuvada kümnendkohani pärast periood, ma ei saa tegelikult teha 0.1f. 137 00:06:22,200 --> 00:06:26,830 Nii teisisõnu, ma eraldab f ja protsendimärk 0,1, lihtsalt 138 00:06:26,830 --> 00:06:30,200 ütlen printf, siis võib olla kogu hunnik numbreid pärast koma 139 00:06:30,200 --> 00:06:30,930 minu jaoks. 140 00:06:30,930 --> 00:06:32,870 Aga ma tahan ainult näha üks neist. 141 00:06:32,870 --> 00:06:36,280 >> Ma lähen edasi minna nüüd ja säästke Selle programmi läheb minu terminal 142 00:06:36,280 --> 00:06:41,870 akna ja ma lähen edasi minna ja tüüp teeb float 0, siseneda. 143 00:06:41,870 --> 00:06:44,930 Ma näen, et veidi segasena line, et hakkab mõttekam kui me 144 00:06:44,930 --> 00:06:46,900 õrritama ta peale seda ja järgmisel nädalal. 145 00:06:46,900 --> 00:06:50,480 Nüüd ma lähen edasi minna ja käivitada float null. 146 00:06:50,480 --> 00:06:52,020 Ja neetud. 147 00:06:52,020 --> 00:06:54,880 >> Nii et seal on teine ​​viga siin mingil põhjusel. 148 00:06:54,880 --> 00:07:02,490 Ma olen päris kindel, et üks kümnendik või üks jagatud 10, ei ole 0.0. 149 00:07:02,490 --> 00:07:04,590 Võib-olla ma lihtsalt ei otsi kell piisavalt numbreid. 150 00:07:04,590 --> 00:07:08,580 Miks ma ei öelda, kaks 0,2 näha kaks koma asemel ainult üks. 151 00:07:08,580 --> 00:07:11,810 Las ma lähen tagasi oma terminali aknas siin ja lüüa kuni paar korda 152 00:07:11,810 --> 00:07:12,840 vaata minu ajalugu. 153 00:07:12,840 --> 00:07:15,910 Ära tee float null jälle ja siis uuesti üles. 154 00:07:15,910 --> 00:07:17,730 Ja nüüd sisestada. 155 00:07:17,730 --> 00:07:20,000 >> Ja nüüd ma olen päris kindel, et see on vale. 156 00:07:20,000 --> 00:07:23,030 Ja ma võiks teha kolm ja neli, ja ma olen ilmselt läheb hoida nägemine nulli. 157 00:07:23,030 --> 00:07:24,880 Nii et kui on viga? 158 00:07:24,880 --> 00:07:27,910 Üks jagatud 10 peaks olema 0,1. 159 00:07:27,910 --> 00:07:30,310 Keegi taha võtta torkehaav at mida põhiline probleem on? 160 00:07:30,310 --> 00:07:32,400 Jah? 161 00:07:32,400 --> 00:07:33,420 Nad on mõlemad täisarvud. 162 00:07:33,420 --> 00:07:33,920 Mis siis? 163 00:07:33,920 --> 00:07:37,820 Nii et üks jagatud 10, see on mida ma teen aritmeetika. 164 00:07:37,820 --> 00:07:41,185 Ja ma saan 0,1. 165 00:07:41,185 --> 00:07:41,660 >> Jah. 166 00:07:41,660 --> 00:07:43,240 Ja nii see on tõesti, et küsimus. 167 00:07:43,240 --> 00:07:46,700 Kui te võtate täisarv arvuti ja jagage seda teise täisarv, 168 00:07:46,700 --> 00:07:50,430 arvuti vaikimisi läheb Eeldame, et soovid täisarv. 169 00:07:50,430 --> 00:07:54,620 Probleem aga muidugi on et 0,1 ei ole täisarv. 170 00:07:54,620 --> 00:07:55,680 See on tõeline arv. 171 00:07:55,680 --> 00:07:59,610 Ja mis siis kui arvuti ei Vaikimisi on see lihtsalt viskab ära 172 00:07:59,610 --> 00:08:01,070 kõik pärast koma. 173 00:08:01,070 --> 00:08:03,380 See ei ole ümmargune alla või üles iseenesest. 174 00:08:03,380 --> 00:08:06,480 See lihtsalt viskab ära kõik pärast koma. 175 00:08:06,480 --> 00:08:07,430 Ja nüüd, et on mõtet. 176 00:08:07,430 --> 00:08:09,740 Sest nüüd me oleme selgelt jääb nulli. 177 00:08:09,740 --> 00:08:10,250 >> Kuid oodake minut. 178 00:08:10,250 --> 00:08:11,840 Ma ei näe int null. 179 00:08:11,840 --> 00:08:14,910 Ma tegelikult näeme 0.00. 180 00:08:14,910 --> 00:08:16,340 Niisiis, kuidas ma ühendada see nüüd? 181 00:08:16,340 --> 00:08:22,850 Kui üks jagatud 10 on null, kuid ma olen nägemine 0.00, kus on see saada 182 00:08:22,850 --> 00:08:24,250 teisendatakse tagasi tegelik number? 183 00:08:24,250 --> 00:08:25,500 Jah. 184 00:08:25,500 --> 00:08:29,850 185 00:08:29,850 --> 00:08:30,630 Täpselt. 186 00:08:30,630 --> 00:08:35,600 >> Nii siin on rida viis, kui ma tegelikult salvestada et 0,1, mis on siis 187 00:08:35,600 --> 00:08:39,549 kärbitud nulli sees float, mis on samaväärne 188 00:08:39,549 --> 00:08:42,100 säilitamist mitte int, kuid Tõepoolest, nagu float. 189 00:08:42,100 --> 00:08:46,540 Pealegi, ma siis kasutades printf et selgesõnaliselt printida, et number kaks 190 00:08:46,540 --> 00:08:49,740 koma kuigi ei pruugi tegelikult olla. 191 00:08:49,740 --> 00:08:51,020 >> Nii et see asi on jama, eks? 192 00:08:51,020 --> 00:08:53,640 Ilmselt sa ei saa seda teha matemaatika, vähemalt mitte sellisel tasemel 193 00:08:53,640 --> 00:08:55,600 täpsus, arvutis. 194 00:08:55,600 --> 00:08:56,930 Aga kindlasti on lahendus. 195 00:08:56,930 --> 00:09:00,410 Mis on kõige lihtsam fix me võiks olla teha, kasvõi intuitiivselt siin 196 00:09:00,410 --> 00:09:01,130 lahendada seda? 197 00:09:01,130 --> 00:09:02,380 Jah? 198 00:09:02,380 --> 00:09:04,700 199 00:09:04,700 --> 00:09:06,574 Keera täisarvu sisse - 200 00:09:06,574 --> 00:09:06,976 jah. 201 00:09:06,976 --> 00:09:10,420 Isegi kui ma ei ole päris kindel, mis on tegelikult toimub siin, kui see 202 00:09:10,420 --> 00:09:13,440 põhimõtteliselt on pistmist need mõlemad on ints, noh, miks ma ei 203 00:09:13,440 --> 00:09:18,230 teha, et 10,0, muutes selle 1,0, salvestage fail uuesti. 204 00:09:18,230 --> 00:09:20,990 Lubage mul minna tagasi alla põhja ja kompileeri. 205 00:09:20,990 --> 00:09:23,030 Lubage mul nüüd uuesti teha. 206 00:09:23,030 --> 00:09:23,420 Ja seal - 207 00:09:23,420 --> 00:09:27,690 nüüd, mul on mu kümnendiku esindatud 0.10. 208 00:09:27,690 --> 00:09:28,420 >> Hea küll. 209 00:09:28,420 --> 00:09:29,220 Nii et see ei ole halb. 210 00:09:29,220 --> 00:09:31,730 Ja lubage mul juhtida tähelepanu veel üks viis me oleks lahendanud selle. 211 00:09:31,730 --> 00:09:35,580 Lubage mul tegelikult rulli ajas tagasi et kui meil oli see üks 212 00:09:35,580 --> 00:09:36,680 kümnes hetk tagasi. 213 00:09:36,680 --> 00:09:40,800 Ja lubage mul minna ja salvestage see fail eri faili nimi, lihtsalt 214 00:09:40,800 --> 00:09:41,750 on vähe kontrollpunkti. 215 00:09:41,750 --> 00:09:43,450 Nii et oli versioon üks. 216 00:09:43,450 --> 00:09:45,520 Ja nüüd lubage mul minna ja veel ühe versiooni. 217 00:09:45,520 --> 00:09:48,540 Me nimetame seda versiooni kaks null indekseeritud. 218 00:09:48,540 --> 00:09:51,280 >> Ja ma lähen selle asemel tegema see - sa tead, mida? 219 00:09:51,280 --> 00:09:54,400 Lisades dot null töötab ka käesoleval juhul. 220 00:09:54,400 --> 00:09:56,060 Aga oletame üks oli varieeruv. 221 00:09:56,060 --> 00:09:57,680 Oletatavad 10 olid erinevad. 222 00:09:57,680 --> 00:10:00,680 Teisisõnu arvan, et ma ei suutnud lihtsalt kõva-kood 0,0 lõpus 223 00:10:00,680 --> 00:10:02,340 Selle aritmeetika väljendus. 224 00:10:02,340 --> 00:10:05,820 Noh, ma ei saa tegelikult midagi Sulgudes nimetatakse valu. 225 00:10:05,820 --> 00:10:11,920 Ma ei loo, et täisarv 10 kuni float, ja ma võin heita, et täisarv üks 226 00:10:11,920 --> 00:10:12,800 float, samuti. 227 00:10:12,800 --> 00:10:17,190 Siis matemaatika, et läheb ära teha on tegelikult 1,0 jagatud 10,0, 228 00:10:17,190 --> 00:10:19,250 tulemus, mis läheb F nagu enne. 229 00:10:19,250 --> 00:10:26,130 Nii et kui ma kompileerida seda teha ujukite 2, ja nüüd hõljub 2, ma saan sama 230 00:10:26,130 --> 00:10:27,020 vastata, samuti. 231 00:10:27,020 --> 00:10:29,640 >> Nii et see on üsna kunstlik näiteks Selle probleemi lahendamiseks 232 00:10:29,640 --> 00:10:31,400 kehtestades casting. 233 00:10:31,400 --> 00:10:34,410 Aga üldiselt, valu saab olema võimas asi, eriti 234 00:10:34,410 --> 00:10:38,180 probleem seatud kaks nädala jooksul, kui soovite teisendada ühe andmetüübi 235 00:10:38,180 --> 00:10:41,800 teine, et lõpus päeval Esindatud on samamoodi. 236 00:10:41,800 --> 00:10:44,970 Lõpus päeval, iga asi, mida me oleme rääkinud siiani on 237 00:10:44,970 --> 00:10:46,710 lihtsalt ints all kapuuts. 238 00:10:46,710 --> 00:10:48,950 Või kui see on liiga madala taseme teid, nad on lihtsalt numbrid 239 00:10:48,950 --> 00:10:49,750 all kapuuts. 240 00:10:49,750 --> 00:10:52,850 Isegi tegelased jälle meenutada nädalast null, on numbrid 241 00:10:52,850 --> 00:10:53,990 all kapuuts. 242 00:10:53,990 --> 00:10:57,240 >> Mis tähendab, saame teisendada vahel erinevaid numbreid, kui 243 00:10:57,240 --> 00:10:58,060 nad on lihtsalt bitti. 244 00:10:58,060 --> 00:11:01,020 Meil saab teisendada vahel numbrid ja tähed, kui nad on lihtsalt 245 00:11:01,020 --> 00:11:02,580 bitti, ja vastupidi. 246 00:11:02,580 --> 00:11:07,170 Ja valu niimoodi on mehhanism programmeerimine, mis võimaldab teil sunniviisiliselt 247 00:11:07,170 --> 00:11:10,970 muuta ühe andmetüübi teise. 248 00:11:10,970 --> 00:11:14,570 Kahjuks see ei ole nii lihtne, kui ma oleks tahtnud. 249 00:11:14,570 --> 00:11:19,220 >> Ma lähen tagasi ujukite 1, mis oli lihtsam, 250 00:11:19,220 --> 00:11:22,830 lihtne ühe 0,0 lisati iga. 251 00:11:22,830 --> 00:11:25,260 Ja nagu kiire täiendkoolitus, lase mul minna ja kompileeri 252 00:11:25,260 --> 00:11:27,670 seda teha ujukite 2 - 253 00:11:27,670 --> 00:11:30,300 vabandust, see on tee ujukid 1. 254 00:11:30,300 --> 00:11:32,050 Ja nüüd joosta ujukite 1. 255 00:11:32,050 --> 00:11:34,810 Ja põhjas, teate et ma tõepoolest saada 0,1. 256 00:11:34,810 --> 00:11:36,165 Niisiis, probleem lahendatud. 257 00:11:36,165 --> 00:11:37,280 >> Aga mitte veel. 258 00:11:37,280 --> 00:11:40,000 Ma nüüd lähen natuke uudishimulik, ja ma lähen tagasi oma 259 00:11:40,000 --> 00:11:41,620 printf avaldus ja öelda, sa tead, mida? 260 00:11:41,620 --> 00:11:44,090 Sooviksin kinnitada, et see on tõesti üks kümnendik. 261 00:11:44,090 --> 00:11:47,890 Ja ma tahan, et see , ütleme, viis kohta pärast koma. 262 00:11:47,890 --> 00:11:48,570 See ei ole probleem. 263 00:11:48,570 --> 00:11:52,020 Muudan kaks viis, Ma kompileerida koos teha. 264 00:11:52,020 --> 00:11:53,770 Ma uuesti, see hõljub 1. 265 00:11:53,770 --> 00:11:54,990 Otsid päris hea. 266 00:11:54,990 --> 00:11:58,570 Minu terve mõistuse kontrolli sattuda sinna, kuid Ma saan natuke rohkem seikluslik. 267 00:11:58,570 --> 00:12:00,330 Ma lähen muuta 0,5-0,10. 268 00:12:00,330 --> 00:12:03,440 Ma tahan näha, 10 numbrit pärast kümnendkohani. 269 00:12:03,440 --> 00:12:09,060 >> Ja ma lähen edasi minna ja kompileeri see ja uuesti, hõljub 1. 270 00:12:09,060 --> 00:12:13,060 Ma nagu kahetsen, testinud edasi, sest mu matemaatika ei ole nii 271 00:12:13,060 --> 00:12:14,320 õige enam tundub. 272 00:12:14,320 --> 00:12:15,630 Kuid oodake minut, võibolla see on lihtsalt juhus. 273 00:12:15,630 --> 00:12:17,810 Võibolla arvuti tegutseb natuke imelik. 274 00:12:17,810 --> 00:12:21,810 Lubage mul minna ja teha 20 koma ja veenda ennast, et ma tean, 275 00:12:21,810 --> 00:12:22,540 kuidas teha matemaatika. 276 00:12:22,540 --> 00:12:23,460 Ma tean, kuidas programmi. 277 00:12:23,460 --> 00:12:26,960 Tee ujukite 1, kompileeri ja kurat. 278 00:12:26,960 --> 00:12:31,110 See on tõesti, tõesti saada Täiesti vale. 279 00:12:31,110 --> 00:12:32,490 >> Mis siis siin toimub? 280 00:12:32,490 --> 00:12:36,050 Intuitiivselt põhineb meie eeldused varem umbes sama tüüpi andmeid, 281 00:12:36,050 --> 00:12:38,040 mida tuleb siin toimub all kapuuts? 282 00:12:38,040 --> 00:12:39,290 Jah? 283 00:12:39,290 --> 00:12:43,000 284 00:12:43,000 --> 00:12:43,590 Täpselt. 285 00:12:43,590 --> 00:12:46,480 Kui soovite seda palju täpsust ja see on paganama palju täpselt - 286 00:12:46,480 --> 00:12:48,770 20 numbrit pärast koma. 287 00:12:48,770 --> 00:12:51,990 Sul ei ole võimalik esindada suvaline number, kui teil on 288 00:12:51,990 --> 00:12:52,930 suvalise arvu bitid. 289 00:12:52,930 --> 00:12:54,190 Aga meil ei ole. 290 00:12:54,190 --> 00:12:57,200 Sest float, meil on ainult 32 bitti. 291 00:12:57,200 --> 00:13:02,260 >> Nii et kui 32 bitti saab permuteeritakse tee - just nagu meie inimestel on, lava 292 00:13:02,260 --> 00:13:05,780 käed üles või alla - in hulga võimalusi, siis on ainult piiratud arv 293 00:13:05,780 --> 00:13:08,640 tegelikud numbrid, mida võib kujutada neid bitti. 294 00:13:08,640 --> 00:13:10,500 Ja nii arvuti lõpuks läheb pea 295 00:13:10,500 --> 00:13:11,730 alustada pealiskaudsust. 296 00:13:11,730 --> 00:13:15,500 Arvuti saab peita need detailid meilt natuke aega. 297 00:13:15,500 --> 00:13:18,880 Aga kui me hakkame poking numbrid ja otsin kaugemale ja kaugemale juures 298 00:13:18,880 --> 00:13:23,220 tagumisel numbrid täisarv, siis me hakkame nägema, et see on 299 00:13:23,220 --> 00:13:26,480 tegelikult ühtlustada Idee kümnendiku. 300 00:13:26,480 --> 00:13:29,860 >> Ja nii selgub, traagiliselt, seal lõpmatu arv numbreid 301 00:13:29,860 --> 00:13:35,060 me ei saa endast täpselt arvuti, vähemalt piiratud 302 00:13:35,060 --> 00:13:38,030 bittide arvu, piiratud RAM'i. 303 00:13:38,030 --> 00:13:41,210 Nüüd kahjuks see mõnikord on reaalse tagajärjed. 304 00:13:41,210 --> 00:13:45,980 Kui inimesed ei saa päris hästi hindan seda või justkui enesestmõistetavaks asjaolu 305 00:13:45,980 --> 00:13:48,310 et nende arvuti on lihtsalt seda, mida nad ütlevad seda teha ja ei 306 00:13:48,310 --> 00:13:51,430 mõista nende aluseks olevate esindatuse üksikasju - 307 00:13:51,430 --> 00:13:55,290 mis, ausalt öeldes, mõnes keeles on kasutaja eest peidetud, erinevalt C - 308 00:13:55,290 --> 00:13:56,500 halbu asju võib juhtuda. 309 00:13:56,500 --> 00:13:58,650 >> Ja see, mida ma arvasin, et me tahaks teha on astuda samm tagasi. 310 00:13:58,650 --> 00:14:00,420 Ja see on umbes kaheksa-minutilise video. 311 00:14:00,420 --> 00:14:04,200 See eetris paar aastat tagasi, ja see annab pilguheitmiseks tegelikult mida saab minna 312 00:14:04,200 --> 00:14:09,290 valesti, kui sa alla hindama neid liiki andmed väga liigagi 313 00:14:09,290 --> 00:14:10,080 reaalses maailmas. 314 00:14:10,080 --> 00:14:12,965 Kui me saaksime päevasõidutulede tuled mõne minuti. 315 00:14:12,965 --> 00:14:14,360 >> SPEAKER 1: Meil ​​on nüüd tagasi insener 316 00:14:14,360 --> 00:14:17,160 katastroofide Tänapäeva imed. 317 00:14:17,160 --> 00:14:18,680 >> Arvutid - 318 00:14:18,680 --> 00:14:21,340 me kõik oleme tulnud vastu sageli heidutav probleeme 319 00:14:21,340 --> 00:14:23,170 et minna koos nendega. 320 00:14:23,170 --> 00:14:27,570 Bugs, viirused ja tarkvara tõrgete on väike hind maksta 321 00:14:27,570 --> 00:14:28,960 mugavuse. 322 00:14:28,960 --> 00:14:32,040 Kuid kõrgtehnoloogia ja kiire sõjaliste ja kosmoseprogrammi 323 00:14:32,040 --> 00:14:38,650 rakendusi, väikseim probleem saab suurendada arvesse katastroof. 324 00:14:38,650 --> 00:14:44,480 >> 4. juunil 1996 teadlased valmis käivitada mehitamata Ariane 5 raketi. 325 00:14:44,480 --> 00:14:48,700 Ta vedas teaduslik satelliidid , mille eesmärk on luua täpselt, kuidas 326 00:14:48,700 --> 00:14:53,250 Maa magnetvälja suhtleb päikese tuul. 327 00:14:53,250 --> 00:14:57,540 Raketi ehitati Euroopa Kosmoseagentuuri ja välja tõsta oma 328 00:14:57,540 --> 00:14:59,906 rajatis rannikul Prantsuse Guajaana. 329 00:14:59,906 --> 00:15:03,660 >> JACK GANSSLE: Umbes 37 sekundit arvesse lend, nad esimest märganud 330 00:15:03,660 --> 00:15:04,910 midagi oli valesti. 331 00:15:04,910 --> 00:15:08,130 Düüsid olid pööramisega sisse kuidas nad tegelikult ei peaks. 332 00:15:08,130 --> 00:15:12,380 Umbes 40 sekundit arvesse lennu selgelt sõiduk oli hädas. 333 00:15:12,380 --> 00:15:14,400 Ja siis nad tegid otsus hävitada. 334 00:15:14,400 --> 00:15:18,520 Vahemikus ohutus ohvitser, koos tohutu julgust, vajutasid nuppu 335 00:15:18,520 --> 00:15:23,900 plahvatas rakett enne kui see muutunud oht avalikule korrale. 336 00:15:23,900 --> 00:15:27,810 >> SPEAKER 1: See oli esimesel reisil Euroopa Ariane 5 ja selle hävitamine 337 00:15:27,810 --> 00:15:32,020 toimus tõttu viga varjatud aastal raketi tarkvara. 338 00:15:32,020 --> 00:15:33,980 >> JACK GANSSLE: probleem Ariane oli see, et mitmed 339 00:15:33,980 --> 00:15:36,390 et nõutud 64 bitti väljendada. 340 00:15:36,390 --> 00:15:39,420 Ja nad tahtsid muuta et 16-bitine number. 341 00:15:39,420 --> 00:15:43,130 Eeldati, et number ei ole kunagi olnud saab olema väga suur, et enamik 342 00:15:43,130 --> 00:15:46,810 need numbrid on 64-bit number olid nullid. 343 00:15:46,810 --> 00:15:48,270 Nad eksisid. 344 00:15:48,270 --> 00:15:51,380 >> SPEAKER 1: võimetus üks tarkvara programmi vastu sellist 345 00:15:51,380 --> 00:15:55,350 number, mille teine ​​oli keskmes rike. 346 00:15:55,350 --> 00:15:59,970 Tarkvaraarendus on muutunud väga kulukas osa uue tehnoloogia. 347 00:15:59,970 --> 00:16:03,980 Ariane 4 rakett on olnud väga edukas, nii palju tarkvara 348 00:16:03,980 --> 00:16:07,480 loodud, et see oli ka kasutatud Ariane 5. 349 00:16:07,480 --> 00:16:11,980 >> PHILIP COYLE: põhiprobleem oli et Ariane 5 oli kiirem, 350 00:16:11,980 --> 00:16:13,720 kiirenes kiiremini. 351 00:16:13,720 --> 00:16:17,250 Ja tarkvara ei olnud moodustas sellest. 352 00:16:17,250 --> 00:16:20,770 >> SPEAKER 1: hävitamist raketi oli suur rahaline katastroof, 353 00:16:20,770 --> 00:16:24,200 kõik tänu minut tarkvara viga. 354 00:16:24,200 --> 00:16:27,820 Kuid see ei olnud esimene kord, andmete muutmise probleeme olnud vaevavad tänapäeva 355 00:16:27,820 --> 00:16:30,620 raketi tehnoloogia. 356 00:16:30,620 --> 00:16:34,480 >> JACK GANSSLE: 1991, start esimese Lahesõja Patriot 357 00:16:34,480 --> 00:16:38,610 rakett kogenud Samalaadsed mitmete konverteerimise probleem. 358 00:16:38,610 --> 00:16:44,910 Selle tulemusena on 28 ameerika sõdurid olid surma ja umbes 100 muud haavata 359 00:16:44,910 --> 00:16:48,600 kui Patriot, mis pidi kaitsta vastu sissetulevaid Scuds, 360 00:16:48,600 --> 00:16:51,630 suutnud tulekahju rakett. 361 00:16:51,630 --> 00:16:55,110 >> SPEAKER 1: Kui Iraak tungis Kuveit ja Ameerika käivitas Desert Storm 362 00:16:55,110 --> 00:17:00,570 alguses 1991, Patriot rakettide patareid aastal kasutati kaitsta Saudi Araabia 363 00:17:00,570 --> 00:17:04,760 ja Iisraeli Iraagi Scud raketirünnakute. 364 00:17:04,760 --> 00:17:09,720 Patriot on USA keskmise ulatusega pind-õhk süsteem toodetud 365 00:17:09,720 --> 00:17:11,569 Raytheon ettevõte. 366 00:17:11,569 --> 00:17:16,410 >> THEODORE Postol: suurus Patriot interceptor ise on umbes 367 00:17:16,410 --> 00:17:17,710 20-jalga pikk. 368 00:17:17,710 --> 00:17:20,800 Ja ta kaalub umbes 2000 £. 369 00:17:20,800 --> 00:17:22,940 Ja see viib lõhkepea umbes - 370 00:17:22,940 --> 00:17:24,905 Ma arvan, et see on umbes 150 £. 371 00:17:24,905 --> 00:17:31,030 Ja lõhkepea ise plahvatusohtlikud mis on 372 00:17:31,030 --> 00:17:33,270 killud selle ümber. 373 00:17:33,270 --> 00:17:37,490 Korpust lõhkepea on mõeldud tegutsema nagu haavlid. 374 00:17:37,490 --> 00:17:40,720 >> SPEAKER 1: raketid viiakse nelja konteineri kohta ja veetakse 375 00:17:40,720 --> 00:17:43,050 poolt semi trailer. 376 00:17:43,050 --> 00:17:47,490 >> PHILIP COYLE: Patriot raketitõrjesüsteemi süsteem läheb tagasi 377 00:17:47,490 --> 00:17:50,710 vähemalt 20 aastat. 378 00:17:50,710 --> 00:17:54,350 See oli algselt mõeldud õhutõrje rakettide 379 00:17:54,350 --> 00:17:56,190 tulistama vaenlase lennukid. 380 00:17:56,190 --> 00:18:02,490 Esimesel Lahesõda, kui see sõda tuli mööda, Armee tahtis seda kasutada 381 00:18:02,490 --> 00:18:05,535 tulistama Scuds, mitte lennukid. 382 00:18:05,535 --> 00:18:09,310 Iraagi õhujõud ei olnud nii palju probleeme. 383 00:18:09,310 --> 00:18:12,450 Aga armee muretsesin Scuds. 384 00:18:12,450 --> 00:18:15,950 Ja nii nad püüdsid tõsta Patriot. 385 00:18:15,950 --> 00:18:18,750 >> SPEAKER 1: pealtkuulamist vaenlase rakett liigub mach viis oli 386 00:18:18,750 --> 00:18:20,890 saab olema raske piisavalt. 387 00:18:20,890 --> 00:18:25,590 Aga kui Patriot oli tormas teenus, armee ei olnud teadlik 388 00:18:25,590 --> 00:18:31,710 Iraagi muutmise, mis tegi oma Scuds peaaegu võimatu tabada. 389 00:18:31,710 --> 00:18:35,240 >> THEODORE Postol: Mis juhtus on Scuds mis olid 390 00:18:35,240 --> 00:18:36,570 tulemas olid ebastabiilsed. 391 00:18:36,570 --> 00:18:37,532 Nad olid wobbling. 392 00:18:37,532 --> 00:18:43,220 Selle põhjuseks oli iraaklaste sisse Selleks, et saada 600 kilomeetrisel lõigul 393 00:18:43,220 --> 00:18:47,530 300 kilomeetri Keskmaarakettide võttis kaal välja ees lõhkepea. 394 00:18:47,530 --> 00:18:49,290 Nad tegid lõhkepea kergem. 395 00:18:49,290 --> 00:18:53,110 Nüüd Patriot üritab et tulla Scud. 396 00:18:53,110 --> 00:18:56,470 Ja enamik ajast, et valdav Enamuse ajast, see oleks lihtsalt 397 00:18:56,470 --> 00:18:58,730 lennata Scud. 398 00:18:58,730 --> 00:19:01,760 >> SPEAKER 1: Kui Patriot süsteem ettevõtjad mõistnud Patriot vastamata 399 00:19:01,760 --> 00:19:06,690 oma eesmärgi, nad lõhkeda Patriots lõhkepea vältida võimalikke 400 00:19:06,690 --> 00:19:10,300 kaotusi, kui see oli lubatud langevad maapinnale. 401 00:19:10,300 --> 00:19:14,540 >> THEODORE Postol: See oli see, mida enamik inimesed nägid nii suur fireballs taevas 402 00:19:14,540 --> 00:19:20,350 ja mõista kui lõikepunktid Scud lõhkepeade. 403 00:19:20,350 --> 00:19:23,320 >> SPEAKER 1: Kuigi öösel taevas Patriots osutus edukaks 404 00:19:23,320 --> 00:19:27,530 hävitades Scuds kell Dhahran seal võiks olla mingit kahtlust selle 405 00:19:27,530 --> 00:19:29,140 jõudlust. 406 00:19:29,140 --> 00:19:34,180 Seal Patriot radar süsteem kaotanud jälgida sissetuleva Scud ja kunagi 407 00:19:34,180 --> 00:19:36,380 käivitatud tänu tarkvara viga. 408 00:19:36,380 --> 00:19:39,890 409 00:19:39,890 --> 00:19:42,700 >> See oli iisraellasi, kes esimesena avastas et mida kauem süsteem 410 00:19:42,700 --> 00:19:48,020 oli, seda suurem on aja erinevus sai tänu kella 411 00:19:48,020 --> 00:19:50,470 varjatud süsteemi arvuti. 412 00:19:50,470 --> 00:19:54,640 >> JACK GANSSLE: Umbes kaks nädalat enne tragöödia Dhahran, iisraellaste 413 00:19:54,640 --> 00:19:58,440 teatatud, et kaitseministeerium et süsteem oli kaotanud aega. 414 00:19:58,440 --> 00:20:01,280 Pärast umbes kaheksa tundi järjest nad märkasid, et süsteem on 415 00:20:01,280 --> 00:20:03,530 muutub märgatavalt vähem täpne. 416 00:20:03,530 --> 00:20:07,710 Defense Department vastas ütleb kõik Patriot patareid 417 00:20:07,710 --> 00:20:10,500 et jätke süsteemid on juba pikka aega. 418 00:20:10,500 --> 00:20:12,430 Nad ei ole kunagi öelnud, mida pikka aega olnud. 419 00:20:12,430 --> 00:20:13,330 Kaheksa tundi? 420 00:20:13,330 --> 00:20:13,810 10 tundi? 421 00:20:13,810 --> 00:20:14,990 1000 tundi? 422 00:20:14,990 --> 00:20:17,150 Keegi ei teadnud. 423 00:20:17,150 --> 00:20:20,220 >> SPEAKER 1: Patriot aku paiknevate kell barakkides Dhahran 424 00:20:20,220 --> 00:20:24,660 ja selle vigane sisemist kella olnud on üle 100 tunni ööl 425 00:20:24,660 --> 00:20:27,470 25. veebruar. 426 00:20:27,470 --> 00:20:31,770 >> JACK GANSSLE: See jälgida aega täpsust umbes kümnendik sekundit. 427 00:20:31,770 --> 00:20:34,480 Nüüd kümnendiku teine ​​on huvitav number, sest see ei saa olla 428 00:20:34,480 --> 00:20:39,940 väljendatud binaarne täpselt, mis tähendab, ta ei saa väljendada täpselt 429 00:20:39,940 --> 00:20:42,500 iga kaasaegse digitaalse arvuti. 430 00:20:42,500 --> 00:20:46,920 On raske uskuda, kuid kasutada seda näiteks. 431 00:20:46,920 --> 00:20:49,000 Võtame number üks kolmandik. 432 00:20:49,000 --> 00:20:53,150 Kolmandik ei saa väljendada koma täpselt. 433 00:20:53,150 --> 00:20:57,500 Üks kolmandik on 0,333 kavatse edasi lõpmatuseni. 434 00:20:57,500 --> 00:21:02,270 Ei ole nii, et mida teha, et absoluutne täpsus koma. 435 00:21:02,270 --> 00:21:05,370 See on täpselt samasugune probleem mis juhtus Patriot. 436 00:21:05,370 --> 00:21:09,880 Mida pikem on süsteem jooksis halvim aeg viga sai. 437 00:21:09,880 --> 00:21:13,840 >> SPEAKER 1: Pärast 100 töötundi viga ajal oli ainult 438 00:21:13,840 --> 00:21:16,140 umbes ühe kolmandiku teine. 439 00:21:16,140 --> 00:21:20,800 Aga nii suunatud rakett liigub mach viis, selle tulemuseks 440 00:21:20,800 --> 00:21:24,410 jälgimise viga üle 600 meetri. 441 00:21:24,410 --> 00:21:27,670 Oleks saatuslik viga sõdurid Dhahran. 442 00:21:27,670 --> 00:21:33,450 >> THEODORE Postol: Mis juhtus on Scud käivitada avastati varakult 443 00:21:33,450 --> 00:21:34,280 hoiatus satelliite. 444 00:21:34,280 --> 00:21:38,550 Ja nad teadsid, et Scud tuli nende üldine suund. 445 00:21:38,550 --> 00:21:41,000 Nad ei teadnud, kus see oli tulemas. 446 00:21:41,000 --> 00:21:43,900 >> SPEAKER 1: See oli nüüd kuni radar komponent Patriot süsteem 447 00:21:43,900 --> 00:21:48,910 kaitsta Dhahran leida ja hoida jälgida sissetuleva vaenlase rakett. 448 00:21:48,910 --> 00:21:50,580 >> JACK GANSSLE: radar oli väga tark. 449 00:21:50,580 --> 00:21:53,770 See oleks tegelikult jälgida positsiooni Scud ja siis ennustada, kuhu see 450 00:21:53,770 --> 00:21:57,160 ilmselt oleks järgmine kord radar saata impulsi läbi. 451 00:21:57,160 --> 00:21:58,870 Seda kutsuti vahemikus värav. 452 00:21:58,870 --> 00:22:04,020 >> THEODORE Postol: Siis kui Patriot otsustab piisavalt aega on möödas, et minna 453 00:22:04,020 --> 00:22:09,420 seljatoele ja kontrollitakse järgmise asukoht see avastatud objekt, see läheb tagasi. 454 00:22:09,420 --> 00:22:14,450 Nii et kui ta läks tagasi valesti paigas, siis ei näe objekti. 455 00:22:14,450 --> 00:22:18,200 Ja ta otsustab, et ei ole objekt, see oli vale tuvastamise ja 456 00:22:18,200 --> 00:22:19,680 langeb teele. 457 00:22:19,680 --> 00:22:22,970 >> SPEAKER 1: sissetulev Scud kadunud : radari ekraani ja 458 00:22:22,970 --> 00:22:26,050 sekundit hiljem ta slammed sisse tagasi. 459 00:22:26,050 --> 00:22:31,950 Scud hukkus 28 ja oli viimane tulistas esimese Lahesõja. 460 00:22:31,950 --> 00:22:37,700 Traagiliselt uuendatud tarkvara saabus kell Dhahran järgmisel päeval. 461 00:22:37,700 --> 00:22:41,800 Tarkvara viga oli kindlaks määratud, sulgedes ühe peatüki raskustes 462 00:22:41,800 --> 00:22:43,690 ajalugu Patriot rakettide. 463 00:22:43,690 --> 00:22:46,780 464 00:22:46,780 --> 00:22:50,710 >> Patriot on tegelikult akronüüm jaoks suunadiagrammiga jälgimine 465 00:22:50,710 --> 00:22:51,960 Lõikepunkt Target. 466 00:22:51,960 --> 00:22:54,650 467 00:22:54,650 --> 00:23:00,840 >> DAVID J Malan: Olgu, kainestav näiteks, et olla kindel. 468 00:23:00,840 --> 00:23:03,430 Ja õnneks on need madalama taseme vead ei ole midagi, et me tulen 469 00:23:03,430 --> 00:23:06,220 tavaliselt on hinnata, kindlasti mitte mõned meie 470 00:23:06,220 --> 00:23:07,360 varaseim programmid. 471 00:23:07,360 --> 00:23:10,450 Pigem enamik vigu teid kohtumine on loogiline looduses 472 00:23:10,450 --> 00:23:12,900 süntaktiline iseloomuga, mille kood lihtsalt ei tööta õigus. 473 00:23:12,900 --> 00:23:14,140 Ja sa tead seda üsna kiiresti. 474 00:23:14,140 --> 00:23:16,850 >> Aga eriti kui saame semestri lõpuks, see läheb 475 00:23:16,850 --> 00:23:20,620 üha enam ja enam võimalus tõesti mõtlema disaini 476 00:23:20,620 --> 00:23:22,960 oma programme ja nende aluseks olevate esindus 477 00:23:22,960 --> 00:23:24,520 seal ka andmeid. 478 00:23:24,520 --> 00:23:28,010 Näiteks, me tutvustada MySQL, mis on populaarne andmebaasi mootor 479 00:23:28,010 --> 00:23:30,850 , mida saab kasutada koos veebilehed andmeid salvestada lõppfaasi. 480 00:23:30,850 --> 00:23:34,630 Ja sa pead alustama otsustada, semestri lõpuks mitte ainult see, mida 481 00:23:34,630 --> 00:23:38,790 liiki andmete suunas kasutada kuid täpselt, mitu bitti kasutada, 482 00:23:38,790 --> 00:23:42,740 kas soovite salvestada kuupäevad nagu kuupäevad ja kellaajad on ajad ja ka 483 00:23:42,740 --> 00:23:46,890 asjad, kui suur sa tahad unikaalsed koodid olla, ütleme, kasutajad 484 00:23:46,890 --> 00:23:47,680 oma andmebaasi. 485 00:23:47,680 --> 00:23:51,210 >> Tegelikult, kui mõned teist on olnud Facebook moodustab üsna pikka aega, 486 00:23:51,210 --> 00:23:53,680 ja sa tead, kuidas saada juurdepääsu oma kasutajatunnus - 487 00:23:53,680 --> 00:23:57,930 mis mõnikord näitab üles oma profiili URL, kui olete valinud 488 00:23:57,930 --> 00:24:02,070 hüüdnimi URL, või kui olete Kasutatud Facebook Graph API, 489 00:24:02,070 --> 00:24:05,510 üldkasutatavate API, mille abil küsida Facebook algandmeid - 490 00:24:05,510 --> 00:24:07,580 saate näha, mida oma numbriline ID on. 491 00:24:07,580 --> 00:24:10,880 Ja mõned aastad tagasi, Facebook põhiliselt oli muuta kasutamast 492 00:24:10,880 --> 00:24:15,980 samaväärne ints kasutades pikk kaua, sest aja jooksul, kui kasutajad tulevad 493 00:24:15,980 --> 00:24:19,780 ja minna ja luua palju kontosid ja fake kontod, isegi need väga kergesti 494 00:24:19,780 --> 00:24:24,630 suutsid ammendab midagi 4 miljardi võimalik väärtus nagu int. 495 00:24:24,630 --> 00:24:28,340 >> Nii enam nende laadi küsimused mööda teed, samuti. 496 00:24:28,340 --> 00:24:30,750 Olgu, mis oli otsustav. 497 00:24:30,750 --> 00:24:31,670 See oli ebatäpsus. 498 00:24:31,670 --> 00:24:32,730 Paar kiiret teadaandeid. 499 00:24:32,730 --> 00:24:35,710 Nii lõigud ametlikult alustada tuleval Pühapäev, esmaspäev, teisipäev. 500 00:24:35,710 --> 00:24:39,080 Sa kuuled emailiga hiljem sel nädalal kui oma osa loovutamisega. 501 00:24:39,080 --> 00:24:42,570 Ja sa ka siin sel hetkel kui muuta oma osa, kui teie 502 00:24:42,570 --> 00:24:45,660 ajakava on nüüd muutunud või teie mugavuse tase on nüüd muutunud. 503 00:24:45,660 --> 00:24:49,380 Vahepeal P-set üks ja häkker üks on kuna sel neljapäeval koos võimalusega 504 00:24:49,380 --> 00:24:52,450 pikendada seda tähtaega ühe kirjeldused reede 505 00:24:52,450 --> 00:24:53,830 tüüpiline viis. 506 00:24:53,830 --> 00:24:57,500 >> Mõistma, et ka probleemi set spetsifikatsioonid juhiseid 507 00:24:57,500 --> 00:25:02,770 kuidas kasutada CS50 seade, mark, samuti mõned CS50 erivahendeid 508 00:25:02,770 --> 00:25:06,540 nagu style 50, mis võib anda teile tagasisidet dünaamiliselt 509 00:25:06,540 --> 00:25:10,230 kvaliteet oma koodi stiili ja ka vaadake 50, mis võib anda teile 510 00:25:10,230 --> 00:25:13,160 dünaamiline tagasisidet oma kood őigsuse. 511 00:25:13,160 --> 00:25:16,850 Andestage, et me ikka triikimine välja mõned kiiksud koos kontroll 50. 512 00:25:16,850 --> 00:25:21,490 Paar oma klassikaaslastega, kes ei hakata umbes 04:00 reedel, kui 513 00:25:21,490 --> 00:25:25,130 spec läks märganud, sest siis mõned vead, et me töötame 514 00:25:25,130 --> 00:25:29,010 kaudu, ja vabandused kõigile, kes on kogenud liigse pettumusi. 515 00:25:29,010 --> 00:25:30,340 Süü on minu. 516 00:25:30,340 --> 00:25:34,080 Aga me jälgida CS50 arutada, kui see on lahendatud. 517 00:25:34,080 --> 00:25:35,700 >> Nii sõna hinded ise. 518 00:25:35,700 --> 00:25:38,990 Nii, et see on nädal või kaks enne hakkama saada tagasisidet probleemi komplekti 519 00:25:38,990 --> 00:25:40,640 sest sa ei ole veel õpetamise mehe. 520 00:25:40,640 --> 00:25:44,510 Ja isegi siis, hakkame hindama C probleem seab enne me 521 00:25:44,510 --> 00:25:46,970 minna tagasi ja hinnata nullist nii et saad rohkem asjakohaseid 522 00:25:46,970 --> 00:25:48,150 tagasiside kiiremini. 523 00:25:48,150 --> 00:25:51,870 Aga üldiselt ühe õppekava, CS50 probleem komplekti hinnatakse mööda 524 00:25:51,870 --> 00:25:53,580 pärast nelja telje - 525 00:25:53,580 --> 00:25:55,760 ulatust, õigsust, disaini ja stiili. 526 00:25:55,760 --> 00:25:59,210 >> Ulatus saab olema number tavaliselt nulli ja viis selle 527 00:25:59,210 --> 00:26:01,830 lööb kui palju tükk, mis sa hammustas. 528 00:26:01,830 --> 00:26:03,750 Tavaliselt sa tahad, et see on viis. 529 00:26:03,750 --> 00:26:05,300 Sa vähemalt kõike proovinud. 530 00:26:05,300 --> 00:26:09,330 Ja teate, et see on kordades tegur nii, et teeme ainult osa 531 00:26:09,330 --> 00:26:12,520 Ülesanded ei ole parim strateegia. 532 00:26:12,520 --> 00:26:15,610 >> Vahepeal ilmsem on tähtsust õigsust - 533 00:26:15,610 --> 00:26:18,620 lihtsalt on oma programm õige koos Seoses spetsifikatsioon? 534 00:26:18,620 --> 00:26:21,510 See on kaalutud teadlikult rohkem kõrgemalt kui teised kaks suunad 535 00:26:21,510 --> 00:26:24,450 kolmega, sest me mõistame et tavaliselt sa lähed kulutada 536 00:26:24,450 --> 00:26:28,600 palju rohkem aega taga ajades maha mõned vead, saada oma koodi tööle, siis 537 00:26:28,600 --> 00:26:31,540 trepitakse seda ja valides asjakohane muutujate nimed ja 538 00:26:31,540 --> 00:26:33,800 meeldib, mis on teises otsas spektri stiilis. 539 00:26:33,800 --> 00:26:36,160 >> See ei tähenda, stiil ei ole oluline, ja me kuulutame selle üle 540 00:26:36,160 --> 00:26:37,920 aega nii loenguid ja punktides. 541 00:26:37,920 --> 00:26:40,520 Style viitab esteetika oma koodi. 542 00:26:40,520 --> 00:26:43,980 Kas olete valinud hästi nimega muutujaid mis on lühike, kuid mõnevõrra 543 00:26:43,980 --> 00:26:44,680 kirjeldav? 544 00:26:44,680 --> 00:26:47,840 Kas teie kood liigestatud kui oled näinud loeng ja viisil, mis 545 00:26:47,840 --> 00:26:49,070 style 50? 546 00:26:49,070 --> 00:26:51,220 >> Lõpuks on disain õigus seal keskel. 547 00:26:51,220 --> 00:26:54,090 Disain on raskem ühe panna sõrme, sest see on palju rohkem 548 00:26:54,090 --> 00:26:55,000 subjektiivne. 549 00:26:55,000 --> 00:26:58,610 Aga see on võib-olla kõige tähtsam kolm telge poolest pedagoogiline 550 00:26:58,610 --> 00:27:02,050 väärtus aja jooksul ning et see on õpetamise mehe poolt võimaluse 551 00:27:02,050 --> 00:27:04,110 annab teile kvalitatiivset tagasisidet. 552 00:27:04,110 --> 00:27:08,100 Tõepoolest, CS50 kuigi meil on Nende piimasegude ja skoori lõpus 553 00:27:08,100 --> 00:27:11,350 päeval on need väga teadlikult väga väikesed kopad - punkt väärtused 554 00:27:11,350 --> 00:27:13,460 nulli ja kolm ja null ja viis. 555 00:27:13,460 --> 00:27:17,800 Me ei püüa teha väga jäme read vahel probleem komplekti vahel või 556 00:27:17,800 --> 00:27:21,490 õpilased, vaid pigem keskendub nii palju kui saame kvalitatiivsete, kirjapaber 557 00:27:21,490 --> 00:27:25,490 tagasisidet, kas trükitud või verbaalne alates teie õpetamise mehe, 558 00:27:25,490 --> 00:27:27,050 saad teada, päris hästi. 559 00:27:27,050 --> 00:27:32,340 >> Aga üldiselt on need raskused et erinevate suundade on. 560 00:27:32,340 --> 00:27:35,480 Vahepeal liiga, see on väärt meeles meeles, et sa ei tohiks eeldada, et 561 00:27:35,480 --> 00:27:38,870 kolm viiest on 60% ja Seega jämedalt kukkumas. 562 00:27:38,870 --> 00:27:41,410 Kolm on tahtlikult mõeldud justkui keset teed head. 563 00:27:41,410 --> 00:27:43,480 Kui te saate kolmekesi juures Semestri alguses, see on 564 00:27:43,480 --> 00:27:46,340 tõepoolest mõeldud hea koht alustamiseks. 565 00:27:46,340 --> 00:27:50,510 Kui te saate kahekesi, messid, seal kindlasti mõned tööd maksma veidi 566 00:27:50,510 --> 00:27:53,250 rohkem tähelepanu, et ära Punktide ja tööajal. 567 00:27:53,250 --> 00:27:54,590 >> Kui sa käid püksid ja viied, suur. 568 00:27:54,590 --> 00:27:57,430 Aga tõesti, loodame trajektoorid õpilaste seas - väga 569 00:27:57,430 --> 00:28:00,575 individualiseeritud õpilase kohta, kuid algus semester siin omamoodi 570 00:28:00,575 --> 00:28:04,100 kaks kuni kolm valikut, vaid lõpeb siin on 4-5 vahemikus. 571 00:28:04,100 --> 00:28:05,440 See on see, mida me tegelikult otsime. 572 00:28:05,440 --> 00:28:09,590 Ja me meeles delta et sa näitama vahel nädal nulli ja nädal 573 00:28:09,590 --> 00:28:12,170 12 kui ma teen klassid. 574 00:28:12,170 --> 00:28:16,380 See ei ole tähtis, et meid absoluutselt kuidas sa aus alguses, kui teie 575 00:28:16,380 --> 00:28:19,330 trajektoor on tõepoolest ülespoole ja tugev. 576 00:28:19,330 --> 00:28:24,000 >> Akadeemiline ausus - las ma panna minu raskemad hääl hetkeks. 577 00:28:24,000 --> 00:28:28,510 Nii see muidugi on vahet saates rohkem õpilasi kui mis tahes muu 578 00:28:28,510 --> 00:28:30,950 ajaloos reklaam pardal, ma usun. 579 00:28:30,950 --> 00:28:34,220 Meil on justkui kadunud count selles koht, kui tihti seda juhtub. 580 00:28:34,220 --> 00:28:37,090 Ja see ei ole, sest õpilasi 50 on enam ebaaus kui nende 581 00:28:37,090 --> 00:28:38,690 klassikaaslastega mujal. 582 00:28:38,690 --> 00:28:42,800 Aga mõistma ka seda, et meil on väga hea tuvastamiseks selline asi. 583 00:28:42,800 --> 00:28:45,920 >> Ja see on see eelis, et arvutiteadus klass on, et meil 584 00:28:45,920 --> 00:28:49,110 võimalik ja me võrrelda kõigi õpilaste probleem seab paariviisiliste vastu iga 585 00:28:49,110 --> 00:28:51,470 teiste, mitte ainult sel aastal aga kõik enne aastat. 586 00:28:51,470 --> 00:28:55,080 Meil on võime, nagu õpilaste klassi, Google ja leida kood 587 00:28:55,080 --> 00:28:57,440 saitidel nagu github ja foorumeid. 588 00:28:57,440 --> 00:29:00,840 On absoluutselt lahendusi CS50 on p-komplektid ujuvad ringi seal. 589 00:29:00,840 --> 00:29:02,710 Aga kui sa leiad neid, me ei saa neid leida. 590 00:29:02,710 --> 00:29:07,130 Ja kõik see on väga automatiseeritud ja lihtne ja kurb, et me leida. 591 00:29:07,130 --> 00:29:10,990 >> Aga ma tahan rõhutada ka seda, et Muidugi akadeemilise aususe poliitika 592 00:29:10,990 --> 00:29:13,960 väga palju mõeldud väga palju vastupidine vaimus. 593 00:29:13,960 --> 00:29:17,506 Tõepoolest, sel aastal oleme ümbersõnastatud asjad ainekava olla see, dot 594 00:29:17,506 --> 00:29:19,790 dot dot koos üksikasjalikumalt ainekava. 595 00:29:19,790 --> 00:29:22,860 Aga põhiteema käigus tõesti on mõistlik. 596 00:29:22,860 --> 00:29:26,160 Me mõistame, et on olemas märkimisväärne summa pedagoogilise 597 00:29:26,160 --> 00:29:30,550 väärtus koostöövõimalusi, mõningal määral koos klassikaaslastega, mille te 598 00:29:30,550 --> 00:29:33,700 kaks või sa kolm või te enam ei seisvat Tahvel 599 00:29:33,700 --> 00:29:35,670 whiteboarding, nii et rääkida, oma mõtteid - 600 00:29:35,670 --> 00:29:39,480 kirjalikult esitatud pseudokoodi piltides, skeemide mida peaks Mario olema kui 601 00:29:39,480 --> 00:29:41,350 sa kirjutada see esimene aastal pseudokoodi. 602 00:29:41,350 --> 00:29:43,240 Mida peaks ahne algoritm - 603 00:29:43,240 --> 00:29:46,100 kuidas peaks ta käituma kohta probleem seab üks? 604 00:29:46,100 --> 00:29:50,440 >> Ja nii aru, et käitumine et me julgustame on väga 605 00:29:50,440 --> 00:29:51,470 palju sarnast. 606 00:29:51,470 --> 00:29:53,890 Ja ainekava, näete terve hunnik täppe all 607 00:29:53,890 --> 00:29:57,740 mõistlik kategooria ja ei ole mõistlik kategooria, mis aitab meil aidata 608 00:29:57,740 --> 00:30:00,740 te wrap meelt ümber, kus me teha, et liin. 609 00:30:00,740 --> 00:30:04,340 Ja üldiselt, korralik rusikareegel on see, et kui te olete hädas, et lahendada 610 00:30:04,340 --> 00:30:07,990 mõned bug ja sinu sõber või klassivend istub sinu kõrval, siis on 611 00:30:07,990 --> 00:30:11,530 mõistlik teile näidata talle oma koodi ja öelda, hei, saate aidata 612 00:30:11,530 --> 00:30:13,700 mul aru saada, mis toimub vale siin? 613 00:30:13,700 --> 00:30:17,110 >> Me tavaliselt ei omaks küljel. 614 00:30:17,110 --> 00:30:20,730 See ei ole õige vastus teie sõber või klassivend siin ütlema, oh, 615 00:30:20,730 --> 00:30:22,510 lihtsalt pilk minu ja joonis ta välja, et. 616 00:30:22,510 --> 00:30:24,400 See on omamoodi ebamõistlik. 617 00:30:24,400 --> 00:30:27,750 Aga võttes keegi teine ​​aju, teine ​​paar silmi vaadata 618 00:30:27,750 --> 00:30:31,620 ekraani või pilk oma koodi ja öelda, sa oled kindel, et soovid 619 00:30:31,620 --> 00:30:32,760 on loop siin? 620 00:30:32,760 --> 00:30:34,800 Või oled kindel, et soovid et semikoolon siin? 621 00:30:34,800 --> 00:30:37,090 Või oh, et veateade tähendab seda. 622 00:30:37,090 --> 00:30:39,580 Need on väga mõistlikud ja julgustada käitumist. 623 00:30:39,580 --> 00:30:44,010 >> Juhtudel, mille olin vihjates varem Keeta kui õpilased on 624 00:30:44,010 --> 00:30:47,350 hilisõhtuni tegemine halva otsuse otsused ja postitada oma koodi 625 00:30:47,350 --> 00:30:50,130 keegi teine ​​või lihtsalt öeldes siin, see on Dropbox või 626 00:30:50,130 --> 00:30:51,610 Google'i abil hilisõhtuni. 627 00:30:51,610 --> 00:30:54,880 Ja nii ma julgustaks ja anun teid, Kui sul on need vältimatu 628 00:30:54,880 --> 00:30:58,450 hetked stress, sa keemistsentrid üles vastu tähtaega, siis ei ole hilja 629 00:30:58,450 --> 00:31:01,490 päev, sest see on juba reede sel punkt, kirjuta käigus peade või 630 00:31:01,490 --> 00:31:02,330 ise otse. 631 00:31:02,330 --> 00:31:04,790 Ütle, kuula, ma olen mu Murranguliseks siin. 632 00:31:04,790 --> 00:31:06,660 Olgu meil vestlus ja sellest aru saada. 633 00:31:06,660 --> 00:31:10,400 Võib kasutada veebis või mõne muu mitte mõistlik käitumine ei ole kunagi 634 00:31:10,400 --> 00:31:13,070 lahendus, ja liiga palju oma klassikaaslastega, ei ole enam siin 635 00:31:13,070 --> 00:31:15,150 campus, sest et halva otsuse. 636 00:31:15,150 --> 00:31:17,840 Aga see on väga lihtne seelik et liin. 637 00:31:17,840 --> 00:31:22,950 >> Ja siin on väike pilt tuju sa üles Reddit nii et nüüd 638 00:31:22,950 --> 00:31:25,720 kõik saab korda. 639 00:31:25,720 --> 00:31:30,210 >> Nii kiire sulgege siis kus me pooleli jäime. 640 00:31:30,210 --> 00:31:33,690 Nii eelmisel nädalal meelde tuletada, et me võtame kasutusele tingimustele, ei Scratch 641 00:31:33,690 --> 00:31:34,880 kuid C seekord. 642 00:31:34,880 --> 00:31:38,300 Ja seal oli mingi uus süntaks kuid tegelikult ei ole uusi ideid iseenesest. 643 00:31:38,300 --> 00:31:42,630 Meil oli Loogiline väljendeid, et me võiksime või koos kahe vertikaalse 644 00:31:42,630 --> 00:31:46,490 baari või ja koos kahe sümboliga, öeldes, et nii vasak 645 00:31:46,490 --> 00:31:49,990 ja õigus peab olema tõeline Selle täitmiseks. 646 00:31:49,990 --> 00:31:53,150 Siis oli meil lülitid, mis me vaatasime kell lühidalt, kuid pakun on tõesti 647 00:31:53,150 --> 00:31:56,830 lihtsalt süntaks saavutada samasugune eesmärk, kui sa tead 648 00:31:56,830 --> 00:31:59,270 ette, mida teie juhtudel hakkavad olema. 649 00:31:59,270 --> 00:32:00,160 >> Vaatasime silmuseid. 650 00:32:00,160 --> 00:32:03,340 Silmus on võibolla kõige levinum, või vähemalt üks, et inimesed 651 00:32:03,340 --> 00:32:05,330 tavaliselt jõuda instinktiivselt. 652 00:32:05,330 --> 00:32:08,240 Kuigi see tundub veidi segasena, näete palju, palju näiteid 653 00:32:08,240 --> 00:32:11,590 Enne pikk, kui teil on juba möödunud nädala lõpul. 654 00:32:11,590 --> 00:32:14,280 Kuigi ring saab sarnaselt saavutada sama asi. 655 00:32:14,280 --> 00:32:17,550 Aga kui sa tahad teha mingeid incrementation või ajakohastamine 656 00:32:17,550 --> 00:32:20,230 muutuja väärtused, pead seda enam käsitsi kui 657 00:32:20,230 --> 00:32:22,440 silmus enne seda võimaldab. 658 00:32:22,440 --> 00:32:25,310 Ja siis on do-kui ahela, mis võimaldab meil teha midagi juures 659 00:32:25,310 --> 00:32:28,460 Vähemalt kord kui midagi muidu on tõsi. 660 00:32:28,460 --> 00:32:31,550 Ja see on eriti hea programme või mänge, kus soovite 661 00:32:31,550 --> 00:32:33,810 ajendab kasutaja midagi vähemalt üks kord. 662 00:32:33,810 --> 00:32:37,110 Ja siis, kui ta ei tee koostööd võiksite teha 663 00:32:37,110 --> 00:32:38,420 uuesti ja uuesti. 664 00:32:38,420 --> 00:32:41,270 >> Mis muutujad, vahepeal pidime read kood, nagu see, mis võiks 665 00:32:41,270 --> 00:32:41,950 olema kaks rida. 666 00:32:41,950 --> 00:32:44,830 Sa võid kuulutada int nimega counter, semikoolon. 667 00:32:44,830 --> 00:32:47,660 Või võite lihtsalt tunnistada ja defineerida, nii rääkida. 668 00:32:47,660 --> 00:32:49,950 Anna see raha samal ajal. 669 00:32:49,950 --> 00:32:51,890 >> Ja siis lõpuks, me rääkisime umbes funktsioone. 670 00:32:51,890 --> 00:32:54,270 Ja see oli hea näide selles mõttes, et see illustreerib 671 00:32:54,270 --> 00:32:55,840 kahte tüüpi ülesandeid. 672 00:32:55,840 --> 00:32:59,030 Üks on getString (), mis jällegi saab string kasutaja. 673 00:32:59,030 --> 00:33:02,040 Aga getString () on omamoodi huvitav, kuivõrd me oleme seda kasutanud, 674 00:33:02,040 --> 00:33:05,620 sest me oleme alati kasutanud seda midagi vasakul servas 675 00:33:05,620 --> 00:33:06,600 võrdusmärk. 676 00:33:06,600 --> 00:33:09,830 See tähendab, et getString () tagastab väärtuse. 677 00:33:09,830 --> 00:33:11,970 See käib muidugi string. 678 00:33:11,970 --> 00:33:15,130 Ja siis vasakul servas, me oleme lihtsalt säästa, et string sees 679 00:33:15,130 --> 00:33:16,580 muutuja nimega nimi. 680 00:33:16,580 --> 00:33:21,100 >> See on erinev, mõnes mõttes, alates printf sest printf, vähemalt meie 681 00:33:21,100 --> 00:33:23,540 kasutamine siin ei tagasta midagi. 682 00:33:23,540 --> 00:33:24,960 Nagu kõrvale, ei midagi tagastada. 683 00:33:24,960 --> 00:33:26,380 Me lihtsalt ei huvita, mis see on. 684 00:33:26,380 --> 00:33:29,090 Aga see on see, mida on nimetatakse kõrvalmõju. 685 00:33:29,090 --> 00:33:31,840 Ja mis on selle kõrvaltoime iga juhul oleme näinud siiani? 686 00:33:31,840 --> 00:33:34,720 Mis printf teha? 687 00:33:34,720 --> 00:33:37,780 Ta prindib midagi ekraanil kuvab teksti või numbreid või midagi 688 00:33:37,780 --> 00:33:38,380 ekraanil. 689 00:33:38,380 --> 00:33:41,170 Ja see on just pidada kõrvaltoime sest see ei ole tõesti üleandmine 690 00:33:41,170 --> 00:33:41,900 see mulle tagasi. 691 00:33:41,900 --> 00:33:44,770 See ei ole vastus sees must kast, mis suudan, siis 692 00:33:44,770 --> 00:33:46,130 haaret ja haarata. 693 00:33:46,130 --> 00:33:49,160 See on lihtsalt teevad seda omal, palju nagu Colton oli ühendatud see 694 00:33:49,160 --> 00:33:52,560 must kast eelmisel nädalal ja ta kuidagi võluväel joonistasin laual 695 00:33:52,560 --> 00:33:54,500 ilma mind tegelikult seotud. 696 00:33:54,500 --> 00:33:55,560 See oleks kõrvalmõju. 697 00:33:55,560 --> 00:33:59,100 Aga kui ma tegelikult pidi jõudma tagasi siin ja öelda, oh, siin on string 698 00:33:59,100 --> 00:34:02,040 kasutaja, et oleks olema tagastatav väärtus. 699 00:34:02,040 --> 00:34:05,650 >> Ja siiani oleme ainult kasutatavate funktsioonide et teised inimesed on kirjutatud. 700 00:34:05,650 --> 00:34:09,219 Aga me ei saa tegelikult teha neid asju ise. 701 00:34:09,219 --> 00:34:12,730 Ma lähen minema CS50 seade uuesti. 702 00:34:12,730 --> 00:34:16,020 Lubage mul kaardi sulgeda, et me oli avatud hetk tagasi. 703 00:34:16,020 --> 00:34:18,530 Ja lubage mul minna ja luua uus fail. 704 00:34:18,530 --> 00:34:22,400 Ja ma lähen edasi minna ja nimetame seda üks positive.c. 705 00:34:22,400 --> 00:34:24,770 Nii et ma tahan midagi teha positiivseid numbreid. 706 00:34:24,770 --> 00:34:27,219 Nii et ma lähen edasi minna ja teha int - 707 00:34:27,219 --> 00:34:28,000 sorry - 708 00:34:28,000 --> 00:34:31,840 # Include. 709 00:34:31,840 --> 00:34:34,280 Ärme tee seda sama viga nagu enne. 710 00:34:34,280 --> 00:34:40,020 Int main (void), avatud lokkis traksidega, suletud lokkis traksidega. 711 00:34:40,020 --> 00:34:41,639 >> Ja nüüd ma tahan teha järgmist. 712 00:34:41,639 --> 00:34:44,600 Tahan kirjutada programm, mis nõuab, et kasutaja annab 713 00:34:44,600 --> 00:34:46,770 mulle positiivne täisarv. 714 00:34:46,770 --> 00:34:50,969 Seega ei ole GetPositiveInt funktsioon aastal CS50 raamatukogu. 715 00:34:50,969 --> 00:34:52,610 Seal on ainult GetInt (). 716 00:34:52,610 --> 00:34:55,790 Aga see on OK, sest mul on konstruktsioone, kellega ma ei kehtesta 717 00:34:55,790 --> 00:34:59,360 veidi rohkem survet avaldada, et väärtus. 718 00:34:59,360 --> 00:35:00,990 Ma võiks teha midagi sellist. 719 00:35:00,990 --> 00:35:02,780 >> Nii int n - 720 00:35:02,780 --> 00:35:04,920 ja kui sa oled kirjutades mööda, lihtsalt aru, Ma lähen tagasi ja 721 00:35:04,920 --> 00:35:06,430 muuta mõningaid asju hetk - 722 00:35:06,430 --> 00:35:09,960 nii int n võrdub GetInt (). 723 00:35:09,960 --> 00:35:11,780 Ja see läheb panna int sees n. 724 00:35:11,780 --> 00:35:13,830 Ja lubage mul olema rohkem kirjeldav. 725 00:35:13,830 --> 00:35:23,270 Lubage mul öelda midagi sellist ma nõuan, et sa annad mulle positiivne täisarv. 726 00:35:23,270 --> 00:35:23,550 >> Hea küll. 727 00:35:23,550 --> 00:35:25,250 Nii lihtsalt natuke juhiseid. 728 00:35:25,250 --> 00:35:26,270 Ja nüüd, mida ma teha saan? 729 00:35:26,270 --> 00:35:29,840 Noh, ma juba tean, minu lihtne tingimuste või oksi, nagu ma 730 00:35:29,840 --> 00:35:36,100 oli Scratch, ma ei ütle midagi nagu siis, kui n on väiksem või võrdne 731 00:35:36,100 --> 00:35:44,460 null, siis ma tahan teha midagi meeldib, et ei ole positiivne. 732 00:35:44,460 --> 00:35:45,560 Ja siis ma võiks teha - 733 00:35:45,560 --> 00:35:47,310 OK, aga ma tõesti tahan saada, et int. 734 00:35:47,310 --> 00:35:52,020 Nii et ma võiks minna siin ja sain lahke koopia see ja taane seda. 735 00:35:52,020 --> 00:35:52,570 Ja siis OK. 736 00:35:52,570 --> 00:35:56,990 Nii et kui n on väiksem või võrdne nulliga teha. 737 00:35:56,990 --> 00:35:58,900 >> Nüüd, aga kui kasutaja ei tee koostööd? 738 00:35:58,900 --> 00:36:01,560 Noh, siis ma lähen laenata siin. 739 00:36:01,560 --> 00:36:03,130 Ja siis ma lähen siin ja siin ja siin. 740 00:36:03,130 --> 00:36:06,420 Nii et see ei ole selgelt lahendus, eks? 741 00:36:06,420 --> 00:36:07,810 Sest seal ei ole lõppu näha. 742 00:36:07,810 --> 00:36:13,100 Kui ma tahan, et nõuda kasutaja annab mulle positiivne täisarv, ma ei 743 00:36:13,100 --> 00:36:14,150 tegelikult saada int. 744 00:36:14,150 --> 00:36:15,620 Võin siis kontrollige, et int. 745 00:36:15,620 --> 00:36:18,570 Aga siis ma tahan vaadata seda uuesti ja proovi uuesti ja proovi uuesti. 746 00:36:18,570 --> 00:36:21,680 Nii et ilmselt see, mis on parem ehitada, et nad kasutavad siin? 747 00:36:21,680 --> 00:36:22,840 Olgu, mingi loop. 748 00:36:22,840 --> 00:36:25,430 >> Ma lähen, et saada lahti peaaegu kõik. 749 00:36:25,430 --> 00:36:27,320 Ja ma tahan, et saada see int vähemalt üks kord. 750 00:36:27,320 --> 00:36:28,890 Nii et ma ütlen seda - 751 00:36:28,890 --> 00:36:32,110 ja ma tulen tagasi samas kui üks hetk - 752 00:36:32,110 --> 00:36:33,050 nüüd, mida teha? 753 00:36:33,050 --> 00:36:35,860 Ma lähen tegema, int n saab GetInt (). 754 00:36:35,860 --> 00:36:36,080 OK. 755 00:36:36,080 --> 00:36:37,250 Nii et on üsna hea. 756 00:36:37,250 --> 00:36:39,750 Ja nüüd, kui tihti Ma tahan seda teha? 757 00:36:39,750 --> 00:36:45,770 >> Las ma panen printf sees loop nii et ma ei nõua uuesti ja uuesti, 758 00:36:45,770 --> 00:36:46,740 kui oleks vaja olnud. 759 00:36:46,740 --> 00:36:49,720 Ja mida ma tahan, et see kui tingimus teha? 760 00:36:49,720 --> 00:36:53,870 Ma tahan hoida seda teed kui see, mida on nii? 761 00:36:53,870 --> 00:36:54,125 Jah. 762 00:36:54,125 --> 00:36:55,390 N on väiksem või võrdne nulliga. 763 00:36:55,390 --> 00:36:58,180 Nii juba oleme oluliselt puhastada seda koodi üles. 764 00:36:58,180 --> 00:37:00,700 Oleme laenatud väga lihtne ehitada - do-samas silmus. 765 00:37:00,700 --> 00:37:04,690 Olen varastatud ainult tähtsamad read kood, mis ma alustasin kopeerimine ja 766 00:37:04,690 --> 00:37:05,960 kleepida, mis ei ole mõistlik. 767 00:37:05,960 --> 00:37:09,790 Ja nüüd ma lähen tegelikult kleebi seda siin ja just seda teha üks kord. 768 00:37:09,790 --> 00:37:12,990 >> Ja nüüd, mida ma tahan teha, on Päris lõpus selle programmiga? 769 00:37:12,990 --> 00:37:16,810 Ma lihtsalt öelda, midagi lihtsat meeldib, aitäh - ja 770 00:37:16,810 --> 00:37:18,980 Ma teen% i jaoks int - 771 00:37:18,980 --> 00:37:23,270 Kenoviiva n, koma ja seejärel pistik n, semikoolon. 772 00:37:23,270 --> 00:37:23,910 >> Hea küll. 773 00:37:23,910 --> 00:37:27,290 Vaatame, mis juhtub nüüd kui ma saan seda programmi. 774 00:37:27,290 --> 00:37:30,600 Ma lähen edasi minna ja ei tee positiivne. 775 00:37:30,600 --> 00:37:30,880 Kurat. 776 00:37:30,880 --> 00:37:31,600 Mõned vead. 777 00:37:31,600 --> 00:37:32,960 Nii et lubage mul kerida tagasi kuni esimese. 778 00:37:32,960 --> 00:37:34,020 Ärge töö kaudu neid tagasi. 779 00:37:34,020 --> 00:37:37,000 Töö kaudu neile ülevalt alla muidu nad kaskaadi ja ainult 780 00:37:37,000 --> 00:37:38,630 üks asi on vale. 781 00:37:38,630 --> 00:37:42,532 Kaudsed deklaratsioon funktsioon GetInt (). 782 00:37:42,532 --> 00:37:43,020 Jah. 783 00:37:43,020 --> 00:37:44,420 Nii et see ei olnud piisavalt. 784 00:37:44,420 --> 00:37:46,760 I liiki teinud sama viga, kuid veidi erinev seekord. 785 00:37:46,760 --> 00:37:51,940 Mul on vaja mitte ainult hõlmama stdio.h kuid Samuti cs50.h, mis hõlmab 786 00:37:51,940 --> 00:37:56,770 niinimetatud deklaratsioonid saada int, mis õpetada seadme või õpetab 787 00:37:56,770 --> 00:37:58,760 C mis GetInt () on. 788 00:37:58,760 --> 00:37:59,550 >> Nii et lubage mul uuesti salvestada. 789 00:37:59,550 --> 00:38:02,040 Ma ignoreerida teiste vigu sest ma lähen loodan, et nad 790 00:38:02,040 --> 00:38:05,210 kuidagi seotud viga Ma juba fikseeritud. 791 00:38:05,210 --> 00:38:08,710 Nii et lubage mul minna ja kompileeri koos teha positiivne, Enter. 792 00:38:08,710 --> 00:38:09,020 Kurat. 793 00:38:09,020 --> 00:38:09,985 Kolm vigu ikka. 794 00:38:09,985 --> 00:38:12,650 Lubage mul kerida kuni esimese. 795 00:38:12,650 --> 00:38:14,320 Kasutamata muutuja n. 796 00:38:14,320 --> 00:38:15,850 Me ei näinud seda enne. 797 00:38:15,850 --> 00:38:17,200 Ja ka see on veidi segasena. 798 00:38:17,200 --> 00:38:18,850 See on väljund tõlkija. 799 00:38:18,850 --> 00:38:23,610 Ja mida see esile rida seal - positive.c :9:13 - 800 00:38:23,610 --> 00:38:28,960 ütleb, et see ütlus on line üheksa positive.c kell 13. iseloomu, 801 00:38:28,960 --> 00:38:31,510 13. veerg, siis tegin selle vea. 802 00:38:31,510 --> 00:38:34,230 >> Ja eriti, ta räägib mind kasutamata muutuja n. 803 00:38:34,230 --> 00:38:35,790 Seega vaatame - 804 00:38:35,790 --> 00:38:37,150 line üheksa. 805 00:38:37,150 --> 00:38:40,430 Ma kasutan n selles mõttes, et Ma annan selle väärtus. 806 00:38:40,430 --> 00:38:44,200 Aga mida kompilaator ei meeldi on et ma ei ole ilmselt kasutada. 807 00:38:44,200 --> 00:38:45,560 Kuid oodake minut, ma kasutan seda. 808 00:38:45,560 --> 00:38:48,170 Vastavalt 11, ma kasutan seda siin. 809 00:38:48,170 --> 00:38:52,430 Aga kui ma keri edasi kell positive.c :11 - 810 00:38:52,430 --> 00:38:56,230 nii on line 11, iseloom 12, koostaja mulle, kasutamine 811 00:38:56,230 --> 00:38:58,670 deklareerimata tunnus n. 812 00:38:58,670 --> 00:39:02,760 >> Nii deklareerimata tähendab, et mul täpsustamata seda 813 00:39:02,760 --> 00:39:04,970 muutuja andmetüüp. 814 00:39:04,970 --> 00:39:05,500 Kuid oodake minut. 815 00:39:05,500 --> 00:39:09,150 Ma tegin täpselt, et vastavalt üheksa. 816 00:39:09,150 --> 00:39:11,100 Nii keegi tõesti segaduses siin. 817 00:39:11,100 --> 00:39:14,900 Kas mina või koostaja sest kooskõlas üheksa jällegi Teatan 818 00:39:14,900 --> 00:39:18,650 int n, ja ma määrata see tagastatav väärtus GetInt (). 819 00:39:18,650 --> 00:39:22,930 Siis ma kasutan, et muutuja n kooskõlas 11 ja kontrollida, kas selle väärtus on väiksem 820 00:39:22,930 --> 00:39:24,050 kui või võrdne nulliga. 821 00:39:24,050 --> 00:39:27,430 Aga see ilmselt on halb ja purustatud miks? 822 00:39:27,430 --> 00:39:30,630 823 00:39:30,630 --> 00:39:32,490 Ütle seda uuesti? 824 00:39:32,490 --> 00:39:35,690 >> Ah, ma pean deklareerima n enne sisenemist silmus. 825 00:39:35,690 --> 00:39:36,370 Aga miks? 826 00:39:36,370 --> 00:39:39,830 Ma mõtlen, et me lihtsalt ettepaneku veidi tagasi, et see on hea, et kuulutada muutujad 827 00:39:39,830 --> 00:39:43,600 kõik ühes reas ja siis anda neile mingi väärtus. 828 00:39:43,600 --> 00:39:46,790 Globaalse muutuja - tulgem tagasi selle idee vaid hetk. 829 00:39:46,790 --> 00:39:48,690 Miks sa tahad, et panna see väljaspool loop? 830 00:39:48,690 --> 00:40:03,170 831 00:40:03,170 --> 00:40:03,830 On. 832 00:40:03,830 --> 00:40:06,780 Täpselt. 833 00:40:06,780 --> 00:40:09,610 >> Niisiis, ehkki mõnevõrra ebaloomulik, Võtan kokku. 834 00:40:09,610 --> 00:40:13,510 Kui kuulutada n sees Euroopa do plokk seal - 835 00:40:13,510 --> 00:40:16,320 konkreetselt sees need looksulg - 836 00:40:16,320 --> 00:40:19,210 et muutuja n on mis nimetatakse ulatus - 837 00:40:19,210 --> 00:40:23,210 mitteseotud meie punktisüsteem sisse muidugi - aga on ulatus, mis on 838 00:40:23,210 --> 00:40:25,190 piirdub looksulg. 839 00:40:25,190 --> 00:40:28,460 Teisisõnu, tavaliselt siis, kui te deklareerite muutuja sees kogum 840 00:40:28,460 --> 00:40:33,370 looksulg, et muutuja eksisteerib ainult sees need looksulg. 841 00:40:33,370 --> 00:40:37,320 Nii selle loogika üksi, kuigi Olen kuulutatud n vastavalt üheksa, see 842 00:40:37,320 --> 00:40:41,910 sisuliselt kaob ulatus, kaob mälu, nii et rääkida, 843 00:40:41,910 --> 00:40:43,370 selleks ajaks ma tabanud rida 11. 844 00:40:43,370 --> 00:40:47,370 Kuna line 11 on kahjuks väljaspool neid looksulg. 845 00:40:47,370 --> 00:40:51,540 >> Nii et ma kahjuks ei saa kinnitada seda, läheb tagasi, mida ma tegin seda varem. 846 00:40:51,540 --> 00:40:53,370 Sa esmapilgul seda teha. 847 00:40:53,370 --> 00:40:56,370 Aga mida sa praegu ei teeme tsükliliselt? 848 00:40:56,370 --> 00:40:58,260 Sa ilmselt ei saada int tsükliliselt. 849 00:40:58,260 --> 00:41:01,320 Nii et me ei jäta GetInt (), ja me tuleb jätta GetInt () sees 850 00:41:01,320 --> 00:41:04,420 loop, sest see on, mida me tahame tülitama kasutaja jaoks uuesti ja uuesti. 851 00:41:04,420 --> 00:41:08,660 Aga see ei piisa, et minna kuni rida, ütleme, kuus. 852 00:41:08,660 --> 00:41:10,150 Int n, semikoolon. 853 00:41:10,150 --> 00:41:12,990 Ära anna see raha veel, sest sa ei pea veel. 854 00:41:12,990 --> 00:41:16,220 >> Aga nüüd siin all, teate - see Oleks väga lihtne viga. 855 00:41:16,220 --> 00:41:19,440 Ma ei taha varju minu eelmine deklaratsiooni n. 856 00:41:19,440 --> 00:41:22,830 Ma tahan kasutada n, et tegelikult olemas. 857 00:41:22,830 --> 00:41:25,780 Ja nüüd vastavalt 10, Ma määrata n väärtus. 858 00:41:25,780 --> 00:41:28,580 Kuid rida kuus, Kinnitan n. 859 00:41:28,580 --> 00:41:32,940 Ja nii ma saan või ma saan mitte kasutage seda rida 12 nüüd? 860 00:41:32,940 --> 00:41:37,120 Ma ei sest vahel mis lokkis traksid on n deklareeritud nüüd? 861 00:41:37,120 --> 00:41:38,770 Üks siin real viis. 862 00:41:38,770 --> 00:41:40,330 Et üks siin on line 14. 863 00:41:40,330 --> 00:41:49,770 Nii et kui ma nüüd suumimiseks salvestada see fail, mine tagasi ja käivitage teha positiivne, 864 00:41:49,770 --> 00:41:50,820 koostatud seekord. 865 00:41:50,820 --> 00:41:51,940 Nii et juba käimas. 866 00:41:51,940 --> 00:41:53,640 Slash. . / Positiivne, Enter. 867 00:41:53,640 --> 00:41:56,060 >> Ma nõuan, et sa annad mulle positiivne täisarv. 868 00:41:56,060 --> 00:41:57,750 Negatiivne 1. 869 00:41:57,750 --> 00:41:59,020 Negatiivne 2. 870 00:41:59,020 --> 00:42:00,680 Negatiivne 3. 871 00:42:00,680 --> 00:42:01,760 Zero. 872 00:42:01,760 --> 00:42:03,000 One. 873 00:42:03,000 --> 00:42:05,130 Ja tänud üks on mis nüüd trükkida. 874 00:42:05,130 --> 00:42:07,400 >> Las ma proovin midagi muud, uudishimust. 875 00:42:07,400 --> 00:42:09,600 Ma öeldakse sisestada täisarv. 876 00:42:09,600 --> 00:42:12,870 Aga kui ma selle asemel kirjuta lambaliha? 877 00:42:12,870 --> 00:42:14,460 Nii et sa nüüd näha erinevaid prompt - 878 00:42:14,460 --> 00:42:15,350 proovige uuesti. 879 00:42:15,350 --> 00:42:17,670 Aga kusagil minu kood ma kirjutan uuesti. 880 00:42:17,670 --> 00:42:22,320 Nii et kui arvatavasti on see uuesti kiire tulevad, sa ütleksid? 881 00:42:22,320 --> 00:42:23,540 Jah, alates GetInt () ise. 882 00:42:23,540 --> 00:42:26,650 Nii et üks asi, CS50 töötajad ei teile, vähemalt need esimese paari 883 00:42:26,650 --> 00:42:30,400 nädalat, on meil kirjutada mingi summa Vea kontroll tagamaks, et kui 884 00:42:30,400 --> 00:42:34,260 helistate GetInt (), siis vähemalt saada tagasi int kasutaja. 885 00:42:34,260 --> 00:42:35,460 Sa ei saa stringi. 886 00:42:35,460 --> 00:42:36,440 Sa ei saa char. 887 00:42:36,440 --> 00:42:39,660 Sa ei saa midagi teine ​​hoopis. 888 00:42:39,660 --> 00:42:40,510 Sa saad int. 889 00:42:40,510 --> 00:42:41,890 >> Nüüd, see ei pruugi olla positiivne. 890 00:42:41,890 --> 00:42:42,770 See ei pruugi olla negatiivne. 891 00:42:42,770 --> 00:42:44,550 Me ei tee garantiid umbes nii. 892 00:42:44,550 --> 00:42:48,960 Aga me tülitama kasutajal uuesti, uuesti, uuesti, kuni ta tegelikult 893 00:42:48,960 --> 00:42:49,810 koostööd. 894 00:42:49,810 --> 00:42:53,085 Samamoodi, kui ma 1.23, et ei ole int. 895 00:42:53,085 --> 00:42:58,400 Aga kui ma ei kirjuta, ütleme, 50, et annab mulle raha, et ma tahtsin. 896 00:42:58,400 --> 00:42:59,050 >> Hea küll. 897 00:42:59,050 --> 00:43:01,380 Nii ei ole halb. 898 00:43:01,380 --> 00:43:04,780 Kõik küsimused selle kohta, mida me oleme lihtsalt teha? 899 00:43:04,780 --> 00:43:07,930 Võti Buffee on, et oleks selge, ei nii palju silmus, mis me oleme näinud 900 00:43:07,930 --> 00:43:10,880 enne, kuigi me ei ole tõesti kasutatud, kuid küsimus reguleerimisala seal, kus 901 00:43:10,880 --> 00:43:17,045 muutujaid saab saab kasutada ainult jooksul teatud kindlaksmääratud ulatust. 902 00:43:17,045 --> 00:43:19,830 >> Olgu, las ma tegeleda soovitus sa tegid varem, et on 903 00:43:19,830 --> 00:43:20,860 globaalse muutuja. 904 00:43:20,860 --> 00:43:24,880 Nagu kõrvale, tuleb välja, et teise Lahendus sellele probleemile, kuid 905 00:43:24,880 --> 00:43:28,880 tavaliselt vale lahendus või halvasti kavandatud lahendus, on 906 00:43:28,880 --> 00:43:31,670 deklareerima oma muutuja, mida on nimetatakse globaalse muutuja. 907 00:43:31,670 --> 00:43:34,610 Nüüd ma olen selline rikkumata minu definitsioon kohaldamisala, sest seal on 908 00:43:34,610 --> 00:43:37,680 ei looksulg tipus ja väga põhjas faili. 909 00:43:37,680 --> 00:43:40,190 Aga mõjuta selle on see, et nüüd kooskõlas neli, 910 00:43:40,190 --> 00:43:41,710 n on globaalne muutuja. 911 00:43:41,710 --> 00:43:44,460 Ja nagu nimigi ütleb, on see lihtsalt kättesaadav kõikjal. 912 00:43:44,460 --> 00:43:45,790 >> Scratch on tegelikult need. 913 00:43:45,790 --> 00:43:48,650 Kui kasutasite muutuja, võite meelde tuletada sa pidid valima, kui see on 914 00:43:48,650 --> 00:43:50,780 see sprite või kõik sprites. 915 00:43:50,780 --> 00:43:54,270 Noh, kõik sprites on lihtsalt selgem viis öelda globaalne. 916 00:43:54,270 --> 00:43:55,520 Jah? 917 00:43:55,520 --> 00:44:09,690 918 00:44:09,690 --> 00:44:10,990 Ah, tõesti hea küsimus. 919 00:44:10,990 --> 00:44:14,310 >> Nii meelde, et kõige esimene versioon minu kood, kui ma valesti 920 00:44:14,310 --> 00:44:17,700 deklareeritud ja määratletud n kooskõlas üheksa - 921 00:44:17,700 --> 00:44:19,980 I kuulutas selle muutuva ja ma andsin selle väärtus 922 00:44:19,980 --> 00:44:21,160 omistamisoperaatorile - 923 00:44:21,160 --> 00:44:22,520 see andis mulle kaks viga. 924 00:44:22,520 --> 00:44:26,560 Üks asjaolu, et n ei kasutatud, ja kaks, et kooskõlas 11. 925 00:44:26,560 --> 00:44:27,770 see lihtsalt ei ole deklareeritud. 926 00:44:27,770 --> 00:44:31,120 Nii et esimene, mida ma ei teinud aadress ajal. 927 00:44:31,120 --> 00:44:35,130 See ei ole tingimata viga tunnistada erinev, kuid ei kasuta seda. 928 00:44:35,130 --> 00:44:38,540 Aga üks asi, mida me oleme teinud CS50 aparaat, tahtlikult, 929 00:44:38,540 --> 00:44:43,340 pedagoogiliselt, on meil fikseeritud üles ootused koostaja teha 930 00:44:43,340 --> 00:44:46,970 kindel, et sa teed asju, mitte lihtsalt õigesti, aga tegelikult õigesti. 931 00:44:46,970 --> 00:44:51,520 >> Sest kui sa kuulutab muutuja nagu n ja ei kasuta seda või seda kasutada 932 00:44:51,520 --> 00:44:53,700 õigesti, siis milline ta teeb seal? 933 00:44:53,700 --> 00:44:55,650 See tõesti ei ole mõtet. 934 00:44:55,650 --> 00:44:58,980 Ja see on väga lihtne aja jooksul kui te ei seadistada oma arvuti 935 00:44:58,980 --> 00:45:01,960 Nii et lihtsalt kood, mis on vähe jäänuseid siin jäänuseid seal. 936 00:45:01,960 --> 00:45:04,390 Ja siis kuu hiljem sa vaatad tagasi ja sa oled nagu, miks on see rida 937 00:45:04,390 --> 00:45:05,060 kood on? 938 00:45:05,060 --> 00:45:07,940 Ja kui seal on mingit põhjust, see ei kasu teile või teie kolleegid 939 00:45:07,940 --> 00:45:10,650 mööda teed pea pahandab selle üle siis. 940 00:45:10,650 --> 00:45:12,540 >> Nagu kõrvale, kus on see tuleb? 941 00:45:12,540 --> 00:45:16,410 Noh, meelde tuletada, et iga kord, kui oleme kompileerida programm, kõik see kraam on 942 00:45:16,410 --> 00:45:17,380 trükkimist. 943 00:45:17,380 --> 00:45:18,350 Nii et me tuleme selle juurde tagasi. 944 00:45:18,350 --> 00:45:22,230 Aga jälle, teha on utiliit, mis automatiseerib protsessi koostamise poolt 945 00:45:22,230 --> 00:45:24,830 töötab tegelik koostaja nimetatakse rõkkama. 946 00:45:24,830 --> 00:45:27,650 See asi, me lõpuks näha, on pistmist silumine spetsiaalse 947 00:45:27,650 --> 00:45:29,060 programmi nimega silur. 948 00:45:29,060 --> 00:45:32,150 See on pistmist optimeerides kood - rohkem, et tulevikus. 949 00:45:32,150 --> 00:45:33,620 Std = C99 - 950 00:45:33,620 --> 00:45:37,870 tähendab see lihtsalt seda kasutada 1999 versioon C. C on olnud umbes isegi kauem 951 00:45:37,870 --> 00:45:40,830 , kuid nad tegid mõne kena muutused 10 pluss aastat tagasi. 952 00:45:40,830 --> 00:45:42,690 >> Ja siin on asjakohane ones. 953 00:45:42,690 --> 00:45:45,880 Me ütleme teha midagi, mis varem oleks olnud hoiatus 954 00:45:45,880 --> 00:45:48,560 viga takistab üliõpilane alates koostamisel. 955 00:45:48,560 --> 00:45:51,400 Ja seina vahenditega teha, et terve hunnik asju, mis ei 956 00:45:51,400 --> 00:45:53,060 lihtsalt seotud muutujad. 957 00:45:53,060 --> 00:45:54,700 Ja siis las ma leidke lõpuks see liin. 958 00:45:54,700 --> 00:45:56,430 Ja see ka, siis me lõpuks tagasi tulla. 959 00:45:56,430 --> 00:45:59,040 See on ilmselt nime faili ma koostamisel. 960 00:45:59,040 --> 00:46:02,160 See tuletab meelde faili nimi Ma kirjutamine nagu nimigi 961 00:46:02,160 --> 00:46:04,070 minu runnable programm. 962 00:46:04,070 --> 00:46:08,970 See-lcs50 tähendab lihtsalt kasutada CS50 raamatukogu ja kõik nullid ja need, mis 963 00:46:08,970 --> 00:46:12,390 töötajad kirjutas ja koostas varem Tänavu integreerida 964 00:46:12,390 --> 00:46:13,490 need mu programmi. 965 00:46:13,490 --> 00:46:16,130 >> Ja keegi teab, mis-lm on? 966 00:46:16,130 --> 00:46:18,150 See on matemaatika raamatukogu, mis on just seal, isegi kui sa oled 967 00:46:18,150 --> 00:46:19,320 ei tee mingit matemaatikat. 968 00:46:19,320 --> 00:46:22,620 See on lihtsalt automaatselt ette poolt meile teha. 969 00:46:22,620 --> 00:46:26,540 >> Noh, lubage mul teha veel üks näide siin avades uue faili. 970 00:46:26,540 --> 00:46:30,560 Ja las ma salvestan selle ühe string.c. 971 00:46:30,560 --> 00:46:37,980 Selgub, et kui me räägime andmed tüüpi täna, seal on isegi rohkem 972 00:46:37,980 --> 00:46:40,630 toimub all kapuuts kui me oleme näinud siiani. 973 00:46:40,630 --> 00:46:42,290 Nii et lubage mul kiiresti teha kiire programm. 974 00:46:42,290 --> 00:46:44,510 Kaasa stdio.h. 975 00:46:44,510 --> 00:46:45,730 Ja jätan alles. 976 00:46:45,730 --> 00:46:48,110 Ja sa tead, lubage mul ei tee sama viga ikka ja jälle. 977 00:46:48,110 --> 00:46:50,540 Kaasa cs50.h. 978 00:46:50,540 --> 00:46:54,870 Ja lubage mul minna nüüd ja teha int main (void). 979 00:46:54,870 --> 00:46:58,790 >> Ja nüüd ma lihtsalt tahan teha programm et teeb seda - tunnistada string 980 00:46:58,790 --> 00:47:03,610 nimetatakse s ja saada string kasutaja. 981 00:47:03,610 --> 00:47:05,820 Ja las ma teen natuke juhised siin - 982 00:47:05,820 --> 00:47:09,960 palun anna mulle string - nii kasutaja teab, mida teha. 983 00:47:09,960 --> 00:47:13,190 Ja siis siia alla see, Ma tahan teha järgmist - 984 00:47:13,190 --> 00:47:16,060 jaoks int i saab nulli. 985 00:47:16,060 --> 00:47:18,580 Jällegi, arvuti teadlased tavaliselt alustada nullist, kuid me võiksime 986 00:47:18,580 --> 00:47:20,340 teha, et üks, kui me tõesti tahtsid. 987 00:47:20,340 --> 00:47:27,240 Nüüd ma lähen tegema, i on vähem kui string pikkusega s. 988 00:47:27,240 --> 00:47:28,430 Nii strlen - 989 00:47:28,430 --> 00:47:29,510 S-T-R-L-E-N - 990 00:47:29,510 --> 00:47:31,650 Jällegi, see on lühike, sest see on lihtsam kirjutama, kuigi see on 991 00:47:31,650 --> 00:47:32,590 veidi segasena. 992 00:47:32,590 --> 00:47:35,290 >> See on funktsioon, meil ei kasutata enne aga sõna otseses mõttes ei tee seda - 993 00:47:35,290 --> 00:47:37,810 tagasi mulle number, mis tähistab stringi pikkusena 994 00:47:37,810 --> 00:47:38,690 et kasutaja sisestatud. 995 00:47:38,690 --> 00:47:41,740 Kui nad kirjutada tere, oleks tagasi viis, sest seal on viis 996 00:47:41,740 --> 00:47:42,890 tähed tere. 997 00:47:42,890 --> 00:47:45,390 Siis, iga iteratsiooni see silmus, i pluss pluss. 998 00:47:45,390 --> 00:47:49,170 Nii et taas, standard ehitada isegi kui sa ei ole päris liiga mugav või 999 00:47:49,170 --> 00:47:50,420 tuttav veel. 1000 00:47:50,420 --> 00:47:53,220 >> Aga nüüd iga iteratsiooni see ahel, teate, mida ma teen. 1001 00:47:53,220 --> 00:47:56,690 Ma tahan minna ja printida välja ühe märgi - 1002 00:47:56,690 --> 00:47:59,940 nii% c Kenoviiva n uuele reale. 1003 00:47:59,940 --> 00:48:00,990 Ja siis sa tead, mida ma tahan teha? 1004 00:48:00,990 --> 00:48:05,090 Ükskõik sõna on see, et kasutaja tüübid aastal, nagu tere, ma tahan trükkida 1005 00:48:05,090 --> 00:48:09,530 H-E-L-L-O, üks märk igale reale. 1006 00:48:09,530 --> 00:48:13,080 Teisisõnu, ma tahan saada on üksikute märkide jada, 1007 00:48:13,080 --> 00:48:16,770 kusjuures siiani string on lihtsalt olnud märgijada. 1008 00:48:16,770 --> 00:48:21,690 >> Ja selgub, mida ma teha saan s, sulg, i, sulg, sulgege 1009 00:48:21,690 --> 00:48:23,580 sulgudes semikooloniga. 1010 00:48:23,580 --> 00:48:25,640 Ja ma pean tegema veel üks asi. 1011 00:48:25,640 --> 00:48:30,570 See on fail nimega string et strlen deklareeritakse. 1012 00:48:30,570 --> 00:48:33,190 Nii et kui ma tahan kasutada seda funktsiooni, Ma pean ütlema, tõlkija, 1013 00:48:33,190 --> 00:48:34,450 eeldada, et seda kasutada. 1014 00:48:34,450 --> 00:48:37,040 Nüüd lubage mul minna ja teha programmi nimega string. 1015 00:48:37,040 --> 00:48:39,150 Dot, slash, string. 1016 00:48:39,150 --> 00:48:40,130 >> Palun andke mulle string. 1017 00:48:40,130 --> 00:48:40,900 Ma lähen edasi ja sisestage see. 1018 00:48:40,900 --> 00:48:43,040 Tere, kõik mütsid, Enter. 1019 00:48:43,040 --> 00:48:47,390 Ja nüüd teate Olen trükitud seda üks märk teise järel. 1020 00:48:47,390 --> 00:48:51,450 Nii uus detail on see, et string, lõpus päeval, võib olla 1021 00:48:51,450 --> 00:48:54,810 juurde viis selle üksikute tähemärki, lisades ruut 1022 00:48:54,810 --> 00:48:55,840 sulg märke. 1023 00:48:55,840 --> 00:48:59,090 Ja see on, sest string all kapuuts on tõesti jada 1024 00:48:59,090 --> 00:48:59,810 tähemärki. 1025 00:48:59,810 --> 00:49:02,010 Aga mis on puhas nende kohta on oma arvuti RAM - 1026 00:49:02,010 --> 00:49:05,300 Mac, PC, mis see on - nad sõna otseses mõttes tagasi seljad - 1027 00:49:05,300 --> 00:49:06,225 H-E-L-L-O - 1028 00:49:06,225 --> 00:49:09,920 Üksikute, mis külgneb baiti mälu. 1029 00:49:09,920 --> 00:49:13,210 >> Nii et kui sa tahad saada kaheksandal selline bait, mis selles loop oleks 1030 00:49:13,210 --> 00:49:16,900 sulg null, sulg üks, sulg kaks, sulg kolm, sulg neli - 1031 00:49:16,900 --> 00:49:18,890 mis on null indekseeritud kuni viis - 1032 00:49:18,890 --> 00:49:23,330 mis trükib välja H-E-L-L-O oma rida. 1033 00:49:23,330 --> 00:49:26,320 >> Nüüd, kui teaser, lubage mul teile näidata erinevaid asju saate lõpuks olema 1034 00:49:26,320 --> 00:49:31,950 aru saama, vähemalt mõned lähedale vaadates. 1035 00:49:31,950 --> 00:49:35,610 Ühe, mida me ka tänapäeva näiteid, kui soovite, on tegelikult 1036 00:49:35,610 --> 00:49:38,300 üks esimesi jailbreaks iPhone. 1037 00:49:38,300 --> 00:49:40,800 Täielikuks tähendab lõhenemist telefon nii et saate tegelikult seda kasutada 1038 00:49:40,800 --> 00:49:43,380 muu vedajaga või install oma tarkvara. 1039 00:49:43,380 --> 00:49:45,660 Ja märkad seda välja täiesti segasena, kõige tõenäolisem. 1040 00:49:45,660 --> 00:49:46,520 Aga vaata seda. 1041 00:49:46,520 --> 00:49:50,420 IPhone oli ilmselt krakitud koos jaoks loop, kui tingimus, muidu 1042 00:49:50,420 --> 00:49:52,580 tingimus, hunnik funktsioone me ei ole näinud. 1043 00:49:52,580 --> 00:49:54,230 >> Ja veel, sa ei ole Esmapilgul ilmselt 1044 00:49:54,230 --> 00:49:55,620 mõista, kuidas see töötab. 1045 00:49:55,620 --> 00:49:58,940 Aga kõik, mida me justkui võtma enesestmõistetavaks meie tänapäeva elu 1046 00:49:58,940 --> 00:50:02,040 tegelikult kipub vähendama isegi mõned Nende põhialuste me oleme 1047 00:50:02,040 --> 00:50:02,820 vaadates. 1048 00:50:02,820 --> 00:50:06,680 Lubage mul minna ja avada ühe muud programmi holloway.c. 1049 00:50:06,680 --> 00:50:08,970 Nii ka see on midagi, mida ei tea. 1050 00:50:08,970 --> 00:50:12,440 Isegi ükski töötaja või suutsin tõenäoliselt näitaja see läbi vaadata 1051 00:50:12,440 --> 00:50:15,450 sest see oli kellegi kood mis esitati mis 1052 00:50:15,450 --> 00:50:19,630 ajalooliselt tuntud obfuscated C võistlus, kuhu kirjutada programm 1053 00:50:19,630 --> 00:50:24,670 mis kogub ja töötab, kuid on nii kuradi segasena ükski inimene saab aru, mida 1054 00:50:24,670 --> 00:50:27,530 ta kavatseb teha kuni nad tegelikult käivitada. 1055 00:50:27,530 --> 00:50:29,940 >> Nii tõesti, kui te vaatate seda kood, näen lüliti. 1056 00:50:29,940 --> 00:50:30,870 Näen peamist. 1057 00:50:30,870 --> 00:50:33,800 Ma näen neid nurksulgudes tähendab mingi massiivi. 1058 00:50:33,800 --> 00:50:35,970 Kas keegi taha arvata, mida see programm tegelikult 1059 00:50:35,970 --> 00:50:37,220 ei kui ma saan Holloway? 1060 00:50:37,220 --> 00:50:39,940 1061 00:50:39,940 --> 00:50:40,750 Jah. 1062 00:50:40,750 --> 00:50:43,050 OK. 1063 00:50:43,050 --> 00:50:44,690 Hästi tehtud. 1064 00:50:44,690 --> 00:50:48,090 Nii ainult töötajatele ja ma ei saa aru millised need asjad teha. 1065 00:50:48,090 --> 00:50:51,670 >> Ja nüüd lõpuks, lubage mul minna ning avada üks teine ​​programm. 1066 00:50:51,670 --> 00:50:53,440 See üks - 1067 00:50:53,440 --> 00:50:55,550 uuesti, teeme lähtekoodi saadaval internetis - see on lihtsalt 1068 00:50:55,550 --> 00:50:57,480 omamoodi ilus vaadata. 1069 00:50:57,480 --> 00:50:59,750 Kõik nad tegid on tabanud tühikut üsna vähe. 1070 00:50:59,750 --> 00:51:01,320 Aga see on reaalne kood. 1071 00:51:01,320 --> 00:51:04,790 Nii et kui te arvate, et on ilus, kui me tegelikult kestab see on kiire, 1072 00:51:04,790 --> 00:51:08,970 lõpuks näete, kuidas me võiks teha asjad niimoodi. 1073 00:51:08,970 --> 00:51:14,008 >> Nii me jätan teid selle märkuse ja vaata sa kolmapäeval. 1074 00:51:14,008 --> 00:51:18,440 >> [Muusika mängib] 1075 00:51:18,440 --> 00:51:23,380 >> SPEAKER 2: Järgmise CS50, TF lavastada mässama. 1076 00:51:23,380 --> 00:51:24,112 >> SPEAKER 3: Seal ta on. 1077 00:51:24,112 --> 00:51:25,362 Andke talle! 1078 00:51:25,362 --> 00:51:29,912 1079 00:51:29,912 --> 00:51:32,074 >> [Muusika mängib]