1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [MUSIC MÄNGIB] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> DAVID J. Humala: Olgu, see on CS50. 5 00:00:16,240 --> 00:00:18,010 Ja see on nädal üks. 6 00:00:18,010 --> 00:00:22,050 Nii meenutada, et viimast korda nädalas null, keskendusime arvutuslikke mõtlemist. 7 00:00:22,050 --> 00:00:25,440 Ja me siirdatud sellest, et Scratch, graafiline programmeerimine 8 00:00:25,440 --> 00:00:27,360 keel meie sõbrad MIT Media Lab. 9 00:00:27,360 --> 00:00:31,730 >> Ja Scratch, kas me uurida ideed nagu funktsioonid ja tingimused, 10 00:00:31,730 --> 00:00:35,210 ja silmad, ja muutujad, ja isegi sündmusi ja teemasid, ja rohkem. 11 00:00:35,210 --> 00:00:37,880 Ja täna me ei kavatse jätkata nende ideede 12 00:00:37,880 --> 00:00:40,630 ja tõesti, võttes neid antud, kuid neid tõlkida 13 00:00:40,630 --> 00:00:44,220 teise keele tuntakse C. Nüüd C on traditsioonilise keeles. 14 00:00:44,220 --> 00:00:46,020 See on madalamal tasemel keeles, kui soovite. 15 00:00:46,020 --> 00:00:47,300 >> See on puhtalt tekstiline. 16 00:00:47,300 --> 00:00:49,910 Ja nii esmapilgul, et see on kõik läheb otsima pigem segasena 17 00:00:49,910 --> 00:00:51,430 Kui olete kunagi programmeeritud enne. 18 00:00:51,430 --> 00:00:53,530 Me läheme on semikoolonite ja sulgudes 19 00:00:53,530 --> 00:00:55,150 ja looksulg ja rohkem. 20 00:00:55,150 --> 00:00:57,240 Aga aru, et isegi kuigi süntaks 21 00:00:57,240 --> 00:01:00,600 umbes vaadata veidi harjumatu et enamik teist, vaata varem, et. 22 00:01:00,600 --> 00:01:03,220 Ja proovida, et näha ideed mis on tõepoolest tuttav, 23 00:01:03,220 --> 00:01:06,750 sest siin nädalal üks, mida hakkame tegema, on võrrelda, 24 00:01:06,750 --> 00:01:08,980 Esialgu Scratch versus C. 25 00:01:08,980 --> 00:01:12,350 >> Nii näiteks meelde tuletada, et kui me rakendas esimest Meie programmid 26 00:01:12,350 --> 00:01:16,220 Viimane kord oli meil plokk, mis nägi natuke midagi see-- kui 27 00:01:16,220 --> 00:01:19,990 roheline lipp klõpsatud, siis oli meil ühe või mitme puzzle tükki all, 28 00:01:19,990 --> 00:01:22,150 sel juhul öelda, tere. 29 00:01:22,150 --> 00:01:24,870 Niisiis, tõepoolest, Scratch, kui ma vajutan, et roheline lipp 30 00:01:24,870 --> 00:01:27,390 käivitada oma programmi, nii et rääkida, need on 31 00:01:27,390 --> 00:01:29,520 plokid, mis saavad täidetud, või joosta. 32 00:01:29,520 --> 00:01:32,230 Ja konkreetselt Scratch ütles tere, maailmas. 33 00:01:32,230 --> 00:01:35,377 >> Nüüd ma oleks võinud täpsustada erinevaid sõnu siin. 34 00:01:35,377 --> 00:01:37,960 Aga me näeme, et tõepoolest, paljud Nende blocks-- ja tõepoolest, 35 00:01:37,960 --> 00:01:41,880 C paljud functions-- võib olla parametriseerisin või kohandatud 36 00:01:41,880 --> 00:01:43,150 teha erinevaid asju. 37 00:01:43,150 --> 00:01:45,520 Tegelikult C kui me soovite teisendada, nüüd, 38 00:01:45,520 --> 00:01:47,567 See Scratch programmiga Selle muud keelt, 39 00:01:47,567 --> 00:01:49,650 me ei kavatse kirjutada natuke midagi sellist. 40 00:01:49,650 --> 00:01:52,540 >> Tõsi, seal on mõned tuttavad süntaks on kõige tõenäolisem, int, 41 00:01:52,540 --> 00:01:54,380 ja sulgudes ja tühine. 42 00:01:54,380 --> 00:01:57,740 Aga printf-- kuigi sa oleks arvan, et see oleks lihtsalt printida. 43 00:01:57,740 --> 00:02:00,120 Aga print tähendab print vormindatud, nagu me varsti näha. 44 00:02:00,120 --> 00:02:02,140 See sõna otseses mõttes prinditakse ekraani iganes 45 00:02:02,140 --> 00:02:05,990 on sees need sulgudesse, mis Loomulikult on sel juhul, tere. 46 00:02:05,990 --> 00:02:09,290 >> Aga sa märkad mõned muud süntaks, mõned jutumärkide, 47 00:02:09,290 --> 00:02:11,890 et sulgudes lõpus, semikoolon jms. 48 00:02:11,890 --> 00:02:15,027 Nii et natuke peakohal niiöelda, nii kognitiivselt 49 00:02:15,027 --> 00:02:17,860 ja süntaktiliselt, et me ei kavatse on meeles pidada, enne kui kaua. 50 00:02:17,860 --> 00:02:20,720 Aga aru, et praktikas, See hakkab välja hüpata sind. 51 00:02:20,720 --> 00:02:24,920 >> Tegelikult olgem keskenduda, et üks funktsiooni specifically-- sel juhul, 52 00:02:24,920 --> 00:02:26,290 tere öelda maailma. 53 00:02:26,290 --> 00:02:27,560 Nii öelda on funktsioon. 54 00:02:27,560 --> 00:02:31,320 Tere maailm on selle parameetri või argument, selle kohandamine. 55 00:02:31,320 --> 00:02:34,320 >> Ja seda võrdlust C on lihtsalt saab olema see üks rida siin, 56 00:02:34,320 --> 00:02:38,710 kus printf on võrdne, ütleme, topelt jutumärkide, tere 57 00:02:38,710 --> 00:02:41,470 maailma on samaväärne muidugi mida see valge kast seal. 58 00:02:41,470 --> 00:02:45,680 Ja backslash n, kuigi veidi kummaline ja puuduvad nullist, 59 00:02:45,680 --> 00:02:49,380 lihtsalt läheb mõjuda jagame vaata oma arvuti, nagu mu Mac või PC, 60 00:02:49,380 --> 00:02:51,660 lihtsalt liigutades kursori järgmisele reale. 61 00:02:51,660 --> 00:02:53,970 See on nagu pihta Sisesta oma klaviatuuril. 62 00:02:53,970 --> 00:02:55,580 >> Nii näeme, et uuesti enne pikk. 63 00:02:55,580 --> 00:02:58,640 Aga kõigepealt võtame pilk selle Teine näide puhul silmuseid. 64 00:02:58,640 --> 00:03:02,830 Meil oli see igavesti loop viimane kord, mis oli sarja puzzle tükki 65 00:03:02,830 --> 00:03:05,490 et tegi midagi sõna otseses mõttes forever-- sel juhul, 66 00:03:05,490 --> 00:03:08,360 öelda, tere, tere, tere, tere. 67 00:03:08,360 --> 00:03:10,350 Nii et see on lõputu silmuse ette nähtud. 68 00:03:10,350 --> 00:03:14,580 >> In C, kui me tahame, et rakendada seda Sama mõte, me võiks lihtsalt teha. 69 00:03:14,580 --> 00:03:19,570 Kuigi tõsi, printf tere world-- nüüd samas, just semantiliselt, millist 70 00:03:19,570 --> 00:03:23,090 silme mõte teha midagi uuesti ja uuesti ja uuesti, 71 00:03:23,090 --> 00:03:23,980 ja kui kaua? 72 00:03:23,980 --> 00:03:27,990 Noh, true-- meelde tuletada, et tõsi on lihtsalt või üks. 73 00:03:27,990 --> 00:03:30,660 >> Ja tõsi on muidugi alati tõsi. 74 00:03:30,660 --> 00:03:33,060 Nii et see on selline mõttetu avalduses lihtsalt öelda tõsi. 75 00:03:33,060 --> 00:03:36,890 Aga tõesti, see on tahtlik, sest kui tõsi on lihtsalt alati tõene, 76 00:03:36,890 --> 00:03:40,850 kui samas tõsi lihtsalt tähendab, kui vähe kaudselt 77 00:03:40,850 --> 00:03:44,070 et järgmine rida koodi nende vahel looksulg 78 00:03:44,070 --> 00:03:48,320 tuleb lihtsalt täita uuesti ja uuesti, ja jälle, ja tegelikult ei peatu. 79 00:03:48,320 --> 00:03:50,230 >> Aga kui sa ei taha oma loop lõpetada, sest me 80 00:03:50,230 --> 00:03:54,500 eelmisel korral koos midagi Selle korrata järgmised 50 korda 81 00:03:54,500 --> 00:03:57,700 C saame teha sama, mida on nimetatakse jaoks loop-- märksõna 82 00:03:57,700 --> 00:03:59,330 ei ole samas, kuid. 83 00:03:59,330 --> 00:04:03,290 Ja siis on meil mõned uued süntaks siin int i võrdub 0, i vähem kui 50, 84 00:04:03,290 --> 00:04:03,880 i ++. 85 00:04:03,880 --> 00:04:05,430 Ja me tuleme tagasi selle. 86 00:04:05,430 --> 00:04:09,660 Aga see on lihtsalt, kuidas oleks tõlkida komplekt Scratch plokid 87 00:04:09,660 --> 00:04:13,079 kuni kogum C rida koodi. 88 00:04:13,079 --> 00:04:14,450 >> Vahepeal kaaluda muutujaid. 89 00:04:14,450 --> 00:04:16,540 Ja tegelikult, me lihtsalt nägin üks hetk tagasi. 90 00:04:16,540 --> 00:04:21,220 Ja juhul, Scratch, kui me tahtis kuulutada muutuja nimega i 91 00:04:21,220 --> 00:04:24,590 i on täisarv, vaid number, ja me tahame, et seada see mingi väärtus, 92 00:04:24,590 --> 00:04:28,410 me kasutame seda oranž blokeerida siin-- seada i kuni 0. 93 00:04:28,410 --> 00:04:30,800 >> Ja me näeme täna ja kaugemale, nagu eelmisel nädalal, 94 00:04:30,800 --> 00:04:33,850 programmeerijad teha peaaegu alati hakka lugema nullist, tõesti 95 00:04:33,850 --> 00:04:34,950 kokkuleppeliselt. 96 00:04:34,950 --> 00:04:37,250 Aga ka seetõttu, tagasikutsumise Meie arutelu binaarne, 97 00:04:37,250 --> 00:04:39,990 Kõige vähem saab esindavad ühegi bittide arv 98 00:04:39,990 --> 00:04:41,640 lihtsalt läheb 0 ise. 99 00:04:41,640 --> 00:04:45,190 Ja nii me tavaliselt alustada initializing isegi meie muutujate 0. 100 00:04:45,190 --> 00:04:47,710 >> Ja C teha sama, me ei kavatse öelda, int 101 00:04:47,710 --> 00:04:50,110 täisarv, ma lihtsalt kombeks. 102 00:04:50,110 --> 00:04:53,390 Ma oleks võinud nimetada selle muutuja midagi tahan, just nagu Scratch. 103 00:04:53,390 --> 00:04:57,770 Ja siis võrdub 0 lihtsalt tsessionääride väärtus 0 paremalt 104 00:04:57,770 --> 00:05:01,319 ja paneb selle muutuja, või hoiuruum seal vasakul. 105 00:05:01,319 --> 00:05:04,360 Ja semikoolon, kui me see-- ja oleme näinud mõned neist already-- 106 00:05:04,360 --> 00:05:06,530 tähendab lihtsalt lõpuni mõelnud. 107 00:05:06,530 --> 00:05:09,430 Jätkake teha midagi muud liinidel, mis järgnevad. 108 00:05:09,430 --> 00:05:11,330 >> Nüüd, kuidas Boole'i ​​avaldised? 109 00:05:11,330 --> 00:05:14,320 Tuletame meelde, et Scratch, need olid väljendid 110 00:05:14,320 --> 00:05:16,740 mis on kas tõene või false-- küsimusi, 111 00:05:16,740 --> 00:05:18,910 tõesti, mis on kas tõene või väär. 112 00:05:18,910 --> 00:05:21,960 Nii puhul Scratch võiksime küsi lihtsale küsimusele niimoodi, 113 00:05:21,960 --> 00:05:24,586 on i alla 50? 114 00:05:24,586 --> 00:05:25,710 Nii i jällegi on täisarv. 115 00:05:25,710 --> 00:05:27,210 Võib-olla me kasutame seda a Scratch programmiga 116 00:05:27,210 --> 00:05:29,310 jälgida skoor või midagi sellist. 117 00:05:29,310 --> 00:05:33,810 Nii et see süntaks siin Scratch tähendab lihtsalt, on i alla 50? 118 00:05:33,810 --> 00:05:37,330 Noh, õnneks midagi lihtne C. Ja tõlkida, 119 00:05:37,330 --> 00:05:41,780 Selle me lihtsalt öelda, et ma vähem kui 50, kasutades tuttav võti 120 00:05:41,780 --> 00:05:42,850 klaviatuuril. 121 00:05:42,850 --> 00:05:45,141 >> Vahepeal, kui sa tahtsid veel midagi öelda üldiselt 122 00:05:45,141 --> 00:05:49,890 nagu, noh, on x vähem kui y, kus iga x ja y on ise muutujaid? 123 00:05:49,890 --> 00:05:52,280 Me saame teha sama asja C, nii kaua, kui me oleme 124 00:05:52,280 --> 00:05:53,942 loodud nende muutujate juba. 125 00:05:53,942 --> 00:05:55,650 Ja me näeme, kuidas teha enne pikk. 126 00:05:55,650 --> 00:05:58,590 Me lihtsalt öelda, x on väiksem kui y. 127 00:05:58,590 --> 00:06:00,530 >> Nii et sa oled hakanud näha mõningaid sarnasusi. 128 00:06:00,530 --> 00:06:03,490 Ja need inimesed, kes on teinud Scratch olid kindlasti 129 00:06:03,490 --> 00:06:05,250 inspireeritud mõned neist põhiideed. 130 00:06:05,250 --> 00:06:10,350 Ja näete sellist süntaks paljudes languages-- 131 00:06:10,350 --> 00:06:12,160 mitte ainult nullist, ei lihtsalt C, kuid Python, 132 00:06:12,160 --> 00:06:14,790 ja JavaScript ning teiste keelte ikka. 133 00:06:14,790 --> 00:06:18,270 >> Vaatleme teise konstruktsiooniga C, mõiste tingimus, 134 00:06:18,270 --> 00:06:20,370 midagi tinglikult. 135 00:06:20,370 --> 00:06:22,720 Kui midagi on tõsi, seda teha. 136 00:06:22,720 --> 00:06:24,457 Kui midagi on tõsi, seda teha. 137 00:06:24,457 --> 00:06:27,040 See on omamoodi programmeerimine samaväärne teelahkmele. 138 00:06:27,040 --> 00:06:29,730 Võib-olla see on kahesuunaline kahvel, kolmeastmelise kahvel või rohkem. 139 00:06:29,730 --> 00:06:32,800 Ja Scratch, meil oleks näinud midagi sellist. 140 00:06:32,800 --> 00:06:34,010 >> Nii see on suur. 141 00:06:34,010 --> 00:06:36,750 Aga pean suhteline lihtsus loogika. 142 00:06:36,750 --> 00:06:44,010 Kui x on väiksem kui y, siis ütle x on väiksem kui y, else if x on suurem kui y, 143 00:06:44,010 --> 00:06:46,230 siis öelda x on suurem kui y. 144 00:06:46,230 --> 00:06:48,300 Ja siis loogiliselt kui te arvate tagasi Scratch 145 00:06:48,300 --> 00:06:52,610 või lihtsalt oma intuitsioonile, noh, kui x ei ole suurem kui y, ja x 146 00:06:52,610 --> 00:06:57,000 ei ole väiksem kui y, siis muidugi x on võrdne y. 147 00:06:57,000 --> 00:06:59,690 Nii et selles asjas pesitsevate need Scratch plokid, 148 00:06:59,690 --> 00:07:02,580 saame saavutada kolm viis teelahkmele? 149 00:07:02,580 --> 00:07:04,980 >> Vahepeal, kui me tahame teha, et C, siis väidetavalt 150 00:07:04,980 --> 00:07:08,420 tundub veidi simpler-- vähemalt kui sa saad tuttav süntaks. 151 00:07:08,420 --> 00:07:12,050 Kui x on väiksem kui y, printf x on väiksem kui y. 152 00:07:12,050 --> 00:07:16,140 Või kui x on suurem kui y, printf x on suurem kui y. 153 00:07:16,140 --> 00:07:21,210 Else printf x on võrdne y-- ja jälle omadega backslash lõpeb lihtsalt 154 00:07:21,210 --> 00:07:24,160 need uued liinid, nii et kui sa tegelikult jooksis selline programm 155 00:07:24,160 --> 00:07:25,940 see oleks lihtsalt liikuda kursor lõpuks 156 00:07:25,940 --> 00:07:28,100 järgmisele reale ekraani. 157 00:07:28,100 --> 00:07:31,270 >> Nüüd, vahepeal Scratch olid teised keerukamaid funktsioone, vaid 158 00:07:31,270 --> 00:07:34,320 millest mõned me ei kavatse esialgu minna üle maailma C. 159 00:07:34,320 --> 00:07:37,010 Ja üks neist oli nimetatakse nimekiri Scratch. 160 00:07:37,010 --> 00:07:39,100 Ja see oli eriline tüüpi muutuja, mis 161 00:07:39,100 --> 00:07:42,840 võimaldas teil salvestada mitu asja ta tagasi, tagasi, tagasi, edasi-tagasi. 162 00:07:42,840 --> 00:07:45,540 >> In C, see ei pea nimekirjad, per se, kuid midagi 163 00:07:45,540 --> 00:07:48,090 mis on üldisemalt nimetatakse massiivid, kuigi me 164 00:07:48,090 --> 00:07:50,590 hiljem tagasi tulla see semester vaadates midagi 165 00:07:50,590 --> 00:07:52,780 nimetatakse nimekirja, või tõesti seotud nimekirja. 166 00:07:52,780 --> 00:07:55,510 Aga nüüd, lähim samaväärne C juures 167 00:07:55,510 --> 00:07:57,345 saab olema midagi nimetatakse massiivi. 168 00:07:57,345 --> 00:07:59,740 Ja massiivi on lihtsalt erilist tüüpi muutuja 169 00:07:59,740 --> 00:08:03,160 mis võimaldab salvestada andmeid tagasi, tagasi, tagasi, edasi-tagasi. 170 00:08:03,160 --> 00:08:05,840 >> Ja tõepoolest, Scratch, Kui me tahame pääseda 171 00:08:05,840 --> 00:08:09,030 Esimese massiivi elemendile või list-- ja ma lähen seda kutsuda, 172 00:08:09,030 --> 00:08:13,600 Kokkuleppeliselt argv, argument vektor, kuid rohkem, et enne pikk. 173 00:08:13,600 --> 00:08:17,090 Kui ma tahan saada esimese elemendi ning argv, maailma Scratch 174 00:08:17,090 --> 00:08:20,930 seda tegelikult tavaliselt hakka lugema alates 1.. 175 00:08:20,930 --> 00:08:22,850 >> Ja nii ma võiks saada punktis 1 argv. 176 00:08:22,850 --> 00:08:26,310 See on lihtsalt, kuidas MIT ellu mõiste nimekirju. 177 00:08:26,310 --> 00:08:29,860 Aga C, ma lähen rohkem lihtsalt öelda, argv, 178 00:08:29,860 --> 00:08:32,758 mis omakorda on nimi minu list-- või olema selge, massiivi. 179 00:08:32,758 --> 00:08:34,549 Ja kui ma tahan esimest elemendid, ma lähen 180 00:08:34,549 --> 00:08:37,890 kasutada nurksulgudes, mida ei pruugi sageli all klaviatuuri. 181 00:08:37,890 --> 00:08:40,150 >> Aga 0 tähendab lihtsalt, mulle esimene. 182 00:08:40,150 --> 00:08:42,160 Nii mõnikord ja Aja möödudes läheme 183 00:08:42,160 --> 00:08:44,570 alustada näha neid dichotomies vahel Kraabi ja C, 184 00:08:44,570 --> 00:08:46,070 kusjuures Scratch kasutab üks. 185 00:08:46,070 --> 00:08:47,670 Me C kasutada 0 siin. 186 00:08:47,670 --> 00:08:49,420 Aga saate kiiresti näha kui sa mõistad 187 00:08:49,420 --> 00:08:52,920 aluseid iga keele, mis Nende hakkavad asjad enam 188 00:08:52,920 --> 00:08:56,860 tuttavad läbi praktika ja praktika. 189 00:08:56,860 --> 00:08:59,700 >> Nii saab tegelikult vaadata praegu programm. 190 00:08:59,700 --> 00:09:04,031 Siin peab olema esimene meie C lähtekoodi täieliku programmi. 191 00:09:04,031 --> 00:09:06,280 Ja programmi läheme pakkuda arutamiseks 192 00:09:06,280 --> 00:09:09,340 on üks, mis on samaväärne kui selle varasema Scratch tükk. 193 00:09:09,340 --> 00:09:13,210 >> Nii siin, meil on, mida on vaieldamatult kõige lihtsam C programmi 194 00:09:13,210 --> 00:09:15,410 võite kirjutada, et tegelikult ei midagi. 195 00:09:15,410 --> 00:09:18,250 Nüüd me vaatame minevikku, nüüd on hulka 196 00:09:18,250 --> 00:09:21,190 standard io.h ja nende nurk Sulgudes ja int ja tühine, 197 00:09:21,190 --> 00:09:22,840 ja looksulg jms. 198 00:09:22,840 --> 00:09:25,390 >> Ja olgem keskenduda ainult Mis vähemalt intuitiivselt, 199 00:09:25,390 --> 00:09:26,860 Võib välja hüpata sa juba. 200 00:09:26,860 --> 00:09:30,300 Tegelikult peamine, ma ei pruugi teada, mis see on, 201 00:09:30,300 --> 00:09:34,580 kuid palju nagu Scratch oli, et kui roheline lipp klõpsatud pusletükk, 202 00:09:34,580 --> 00:09:39,070 nii ei C programmeerimiskeelt on peamine tükk kood, mis 203 00:09:39,070 --> 00:09:43,380 saab teostada vaikimisi. Ja tõepoolest, see on sõna otseses mõttes nimetama hakatakse peamine. 204 00:09:43,380 --> 00:09:44,720 >> Nii peamised on funktsioon. 205 00:09:44,720 --> 00:09:48,720 Ja see on eriline funktsioon, mis eksisteerib C, et kui sa jooksed programmi 206 00:09:48,720 --> 00:09:52,720 see on peamine, et saab juhivad vaikimisi. Tänapäeva maailmas Scratch, 207 00:09:52,720 --> 00:09:56,970 see oli tavaliselt siis, kui roheline lipp klõpsatud, et sai joosta vaikimisi. 208 00:09:56,970 --> 00:10:01,130 >> Vahepeal oleme näinud seda enne, printf või printida vormindatud, mis on 209 00:10:01,130 --> 00:10:05,620 saab olema funktsioon, mis on kaasas C koos terve hulk teisi, 210 00:10:05,620 --> 00:10:10,140 See aeg ja aega uuesti, et teha täpselt 211 00:10:10,140 --> 00:10:12,450 nagu nimigi ütleb, printida midagi. 212 00:10:12,450 --> 00:10:13,500 Mida me tahame, et printida? 213 00:10:13,500 --> 00:10:15,770 Noh, eks me näeme, et poolt ümbritseb tähemärki 214 00:10:15,770 --> 00:10:18,680 nagu these-- tere, backslash n jutumärkidega, 215 00:10:18,680 --> 00:10:23,040 saame öelda printf täpselt mida printida ekraanil. 216 00:10:23,040 --> 00:10:26,430 >> Aga selleks, et teha et me kahjuks 217 00:10:26,430 --> 00:10:30,010 vaja võtta midagi, mis on juba segasena meile inimestele, 218 00:10:30,010 --> 00:10:34,510 aga vähemalt on see mõnevõrra readable-- terav hulka, standard io.h, int, 219 00:10:34,510 --> 00:10:39,340 Peamine, tühine, printf kõik maagiline loitsud me lihtsalt nägime ekraanil. 220 00:10:39,340 --> 00:10:42,470 Aga me tegelikult on minna enam kauge ikka. 221 00:10:42,470 --> 00:10:47,140 Meil on vaja kõigepealt tõlkida koodi et me kirjutame masinkoodiks. 222 00:10:47,140 --> 00:10:51,370 Ja mäletate eelmisel nädalal, et masinad, vähemalt need, mida me teame siin, 223 00:10:51,370 --> 00:10:54,450 lõpus päeval ainult mõista ühtede ja nullide. 224 00:10:54,450 --> 00:10:58,100 >> Ja mu Jumal, kui meil oleks kirjutada neid ühtede ja nullide tegelikult programmi 225 00:10:58,100 --> 00:11:01,260 see oleks väga, väga kiiresti võtta lõbus välja midagi. 226 00:11:01,260 --> 00:11:05,150 Aga selgub, ühe eelmisel nädalal et need mustrid ühtede ja nullide 227 00:11:05,150 --> 00:11:06,400 lihtsalt eriline tähendus. 228 00:11:06,400 --> 00:11:08,500 Teatud kontekstides, nad võiks tähendada numbrid. 229 00:11:08,500 --> 00:11:11,840 >> Teatud olukordades võib neid võib tähendada tähed või värvi, või mis tahes arvu 230 00:11:11,840 --> 00:11:14,710 teiste veevõtu seal peal. 231 00:11:14,710 --> 00:11:18,450 Aga nagu arvutis on CPU, Central Processing Unit, 232 00:11:18,450 --> 00:11:20,390 või aju sees arvutit. 233 00:11:20,390 --> 00:11:22,240 See on tavaliselt Intel sees, sest see on 234 00:11:22,240 --> 00:11:24,900 üks suurimaid ettevõtteid mis teeb protsessoriga arvuteid. 235 00:11:24,900 --> 00:11:28,910 >> Noh, Intel protsessoriga ja teised lihtsalt on otsustanud ette 236 00:11:28,910 --> 00:11:33,970 et teatud mustrid nulli ja need tähendavad konkreetseid asju. 237 00:11:33,970 --> 00:11:37,040 Teatud mustrid ühtede ja nullide tähendab, printida seda ekraani, 238 00:11:37,040 --> 00:11:39,710 või lisada need kaks numbrit, või lahutada need kaks numbrit, 239 00:11:39,710 --> 00:11:43,310 või seda malendit liigutada andmeid minu arvuti mällu siin, 240 00:11:43,310 --> 00:11:47,870 või mitmeid teisi väga madal, kuid lõppkokkuvõttes kasulik, operatsioone. 241 00:11:47,870 --> 00:11:53,022 Aga õnneks meil inimestel ei lähe et on vaja teada, detailsuse tase. 242 00:11:53,022 --> 00:11:56,230 Tõepoolest, nii nagu viimane kord, kus me refereerida uuesti ja uuesti ja uuesti, 243 00:11:56,230 --> 00:11:58,930 hoone väga madal primitiivid nagu ühtede ja nullide 244 00:11:58,930 --> 00:12:01,160 kõrgema tasandi mõisted nagu numbrid ja tähed, 245 00:12:01,160 --> 00:12:04,330 ja värvid, ja rohkem, nii saame meie programmeerijad 246 00:12:04,330 --> 00:12:07,080 seista õlgadele teised, kes on tulnud enne meid 247 00:12:07,080 --> 00:12:11,260 ja kasutada tarkvara, et teised inimesed on kirjutatud enne us-- 248 00:12:11,260 --> 00:12:14,340 nimelt programme nimetatakse koostajad. 249 00:12:14,340 --> 00:12:17,770 >> C on keel, mis Tavaliselt koostatakse, 250 00:12:17,770 --> 00:12:22,130 mis tähendab ümber lähtekoodi masinkoodi. 251 00:12:22,130 --> 00:12:25,230 Eriti, mida see tähendab on see, et kui sul on oma allikas 252 00:12:25,230 --> 00:12:29,530 kood, mis te ise kirjutada, nagu me varsti tahe vaid hetkeks ekraanile, 253 00:12:29,530 --> 00:12:33,140 ja soovite teisendada see lõpuks masin code-- 254 00:12:33,140 --> 00:12:37,100 need nullid ja need, mis ainult Mac või arvuti 255 00:12:37,100 --> 00:12:41,230 understands-- sul esimene toita, et lähtekoodi nii 256 00:12:41,230 --> 00:12:46,340 sisend eriline programm nimega kompilaator, 257 00:12:46,340 --> 00:12:48,974 mille väljundiks me näha on masin koodi. 258 00:12:48,974 --> 00:12:51,890 Ja tõesti, viimane kord, kui me rääkisime umbes, tõesti, lõpus päeval, 259 00:12:51,890 --> 00:12:52,610 probleemi lahendamine. 260 00:12:52,610 --> 00:12:53,360 Sul sisendeid. 261 00:12:53,360 --> 00:12:54,318 Ja sul väljundid. 262 00:12:54,318 --> 00:12:56,560 Ja sul mingi Algoritmi keskelt. 263 00:12:56,560 --> 00:12:59,830 >> Algoritmid saab kindlasti olema rakendada tarkvara 264 00:12:59,830 --> 00:13:02,900 nagu nägime pseudokoodi eelmisel nädalal ja nagu me näeme tegeliku koodi 265 00:13:02,900 --> 00:13:03,490 see nädal. 266 00:13:03,490 --> 00:13:06,430 Ja nii tõlkija tõesti ainult on kogum algoritme sees 267 00:13:06,430 --> 00:13:10,060 seda, et teada, kuidas teisendada erilist märksõnu 268 00:13:10,060 --> 00:13:12,180 nagu peamine, ja printf, ja teised, et me lihtsalt 269 00:13:12,180 --> 00:13:17,620 nägi arvesse mustrid nulli ja need, mis Intel sees ja teised protsessoriga 270 00:13:17,620 --> 00:13:20,020 tegelikult aru. 271 00:13:20,020 --> 00:13:22,460 Niisiis, kuidas me seda teeme? 272 00:13:22,460 --> 00:13:24,470 Kust me tõlkija? 273 00:13:24,470 --> 00:13:26,400 >> Enamik meist siin on Mac või PC. 274 00:13:26,400 --> 00:13:29,152 Ja sa kasutad Mac OS või Windows või Linux või Solaris, 275 00:13:29,152 --> 00:13:30,860 või mõnel teisel operatsioonisüsteemidega. 276 00:13:30,860 --> 00:13:32,568 Ja tõesti, saime minema veebi 277 00:13:32,568 --> 00:13:35,710 ja alla laadida tõlkija Mac või arvuti 278 00:13:35,710 --> 00:13:37,360 just teie operatsioonisüsteemi. 279 00:13:37,360 --> 00:13:39,617 Aga me kõik olema erinevatel lehtedel, nii rääkida. 280 00:13:39,617 --> 00:13:41,450 Me tahaks olla veidi erinevates koosseisudes. 281 00:13:41,450 --> 00:13:43,210 Ja asjad ei tööta kõik sama. 282 00:13:43,210 --> 00:13:45,280 Ja tõepoolest, nendel päevadel paljud meist ei kasuta 283 00:13:45,280 --> 00:13:47,516 tarkvara, mis töötab ainult meie sülearvutid. 284 00:13:47,516 --> 00:13:49,390 Selle asemel kasutada midagi nagu brauserit, mis 285 00:13:49,390 --> 00:13:52,930 võimaldab meil veebipõhiste Pilverakendused. 286 00:13:52,930 --> 00:13:55,630 Ja sel semestril teeme just nii. 287 00:13:55,630 --> 00:13:59,660 Me kirjutada rakendusi või tarkvara abil code-- ole C, 288 00:13:59,660 --> 00:14:02,860 kuid teistes keeltes nagu Python ja JavaScript-- mis töötavad pilv. 289 00:14:02,860 --> 00:14:05,860 >> Ja seda, et me ise semestri jooksul 290 00:14:05,860 --> 00:14:11,890 tegelikult kasutada pilvepõhine keskkond tuntud CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 See on veebipõhine programmeerimine keskkonda või integreeritud arendamine 292 00:14:16,030 --> 00:14:20,610 keskkond, IDE, mis on ehitatud atop mõned Avatud lähtekoodiga tarkvara nimega Cloud 9. 293 00:14:20,610 --> 00:14:22,966 Ja me oleme teinud mõningaid pedagoogilise lihtsustamiseks see 294 00:14:22,966 --> 00:14:25,840 et varjata teatud funktsioone Esimestel nädalatel, et meil ei ole vaja, 295 00:14:25,840 --> 00:14:27,770 pärast mida saate paljastada ning teevad kõige 296 00:14:27,770 --> 00:14:29,400 ükskõik mida tahad keskkonda. 297 00:14:29,400 --> 00:14:32,470 >> Ja see võimaldab meil ka, et eelinstallige teatud tarkvara. 298 00:14:32,470 --> 00:14:35,330 Asjad nn CS50 raamatukogu, mida me kohe näha, 299 00:14:35,330 --> 00:14:39,210 annab meile C mõned lisafunktsioone. 300 00:14:39,210 --> 00:14:44,392 Nii et kui te lähete lõpuks CS50.io, palutakse teil sisse logida, 301 00:14:44,392 --> 00:14:46,350 ja kui te seda teete ja luua tasuta konto, 302 00:14:46,350 --> 00:14:52,150 siis oleks võimalik pääseda keskkond, mis näeb välja üsna niimoodi. 303 00:14:52,150 --> 00:14:53,760 >> Nüüd, see on vaikimisi režiim. 304 00:14:53,760 --> 00:14:55,650 Kõik on kena ja ere ekraanil. 305 00:14:55,650 --> 00:14:57,941 Paljud meist on harjumus töötab CS50 tükk, mis on 306 00:14:57,941 --> 00:14:59,150 üsna hilise ööni. 307 00:14:59,150 --> 00:15:02,400 Ja nii mõned võid eelistada muuta see öö režiim, nii rääkida. 308 00:15:02,400 --> 00:15:05,550 >> Aga lõpuks, mida sa näeme jooksul CS50 IDE 309 00:15:05,550 --> 00:15:08,340 on kolm erinevat areas-- ala vasakul, kus 310 00:15:08,340 --> 00:15:12,604 faile ei kavatse olla pilv, mille pindala üleval paremal 311 00:15:12,604 --> 00:15:14,270 kus oma koodi saab olema muudetav. 312 00:15:14,270 --> 00:15:16,650 Sul on võimalik avada üksikud kaardid ühtegi programmi 313 00:15:16,650 --> 00:15:19,670 et sa kirjutad selle semestri sees Selle ülemises paremas nurgas. 314 00:15:19,670 --> 00:15:23,070 Ja siis kõige arcanely, ja veel võimsalt, 315 00:15:23,070 --> 00:15:26,610 läheb see asi on põhja tuntud terminali aknas. 316 00:15:26,610 --> 00:15:29,450 >> See on vana kooli Käsurealiides, 317 00:15:29,450 --> 00:15:32,240 või CLI, mis võimaldab Teil täita käske 318 00:15:32,240 --> 00:15:35,260 kohta computer-- sel juhul, Arvuti on cloud-- 319 00:15:35,260 --> 00:15:39,090 teha asju nagu kompileerida koodi alates lähtekoodi masin koodi 320 00:15:39,090 --> 00:15:43,600 käivitada oma programme või alustada oma veebiserver või juurdepääsu oma andmebaasi, 321 00:15:43,600 --> 00:15:47,454 ja mis tahes arvus muud tehnikat et hakkame kasutama enne pikk. 322 00:15:47,454 --> 00:15:49,370 Aga sinna jõuda, me oleme läheb tegelikult 323 00:15:49,370 --> 00:15:51,240 minna online ja alustada mängimist. 324 00:15:51,240 --> 00:15:54,399 Ja seda, et olgem kõigepealt alustada sisemusse peamine, 325 00:15:54,399 --> 00:15:55,940 ja kirjutada peamine osa programmist. 326 00:15:55,940 --> 00:15:59,170 Ja olgem kasutada seda funktsiooni printf, mida me varem kasutatud, 327 00:15:59,170 --> 00:16:01,050 lihtsalt midagi öelda. 328 00:16:01,050 --> 00:16:04,910 >> Nii et siin ma olen juba sees CS50 IDE. 329 00:16:04,910 --> 00:16:05,930 Olen logitud ette. 330 00:16:05,930 --> 00:16:07,360 Ja ma täis linastub akent. 331 00:16:07,360 --> 00:16:09,670 Ja nii lõpuks, siis Ka järgnevatel probleeme 332 00:16:09,670 --> 00:16:12,960 jälgib sarnased sammud annab elektroonilist dokumentatsiooni. 333 00:16:12,960 --> 00:16:16,360 Nii et sa ei pea muretsema neelavad iga väike tehniline samm 334 00:16:16,360 --> 00:16:17,730 mis ma täna siin. 335 00:16:17,730 --> 00:16:19,222 >> Aga saad ekraani niimoodi. 336 00:16:19,222 --> 00:16:20,430 Ma juhtub olema öö režiim. 337 00:16:20,430 --> 00:16:22,944 Ja saab heledaks kõike kuni keelates öö režiim. 338 00:16:22,944 --> 00:16:24,860 Ja lõpuks päev, sa lähed, et näha 339 00:16:24,860 --> 00:16:30,090 Nende kolme peamise areas-- faili brauseri vasakul, kood kaarte kuni top, 340 00:16:30,090 --> 00:16:32,430 ja terminali akna allosas. 341 00:16:32,430 --> 00:16:34,890 >> Lubage mul minna ja kirjutada minu esimene programm. 342 00:16:34,890 --> 00:16:42,300 Ma lähen ennatlikult minge File, Säästa ja päästa oma faili hello.c. 343 00:16:42,300 --> 00:16:46,850 Tõepoolest, kokkuleppeliselt iga programmi me kirjutada, mis on kirjutatud C keeles 344 00:16:46,850 --> 00:16:49,739 nimi peaks olema midagi dot c, kokkuleppeliselt. 345 00:16:49,739 --> 00:16:53,030 Nii et ma lähen nime hello.c, sest Ma tahan öelda tere tulemast maailma. 346 00:16:53,030 --> 00:16:54,820 Nüüd ma lähen suurendamiseks välja ja vajuta Save. 347 00:16:54,820 --> 00:16:58,180 Ja kõik, mis mul siin nüüd on sakk kus ma saan alustada kirjalikult koodi. 348 00:16:58,180 --> 00:16:59,490 >> See ei lähe kompileerida. 349 00:16:59,490 --> 00:17:00,300 See ei tähenda midagi. 350 00:17:00,300 --> 00:17:02,750 Ja nii kui ma ümber see ühtede ja nullide, 351 00:17:02,750 --> 00:17:05,390 CPU läheb pole Idee, mis toimub ümber. 352 00:17:05,390 --> 00:17:14,170 Aga kui ma kirjutan read, mis ei sobi koos C on conventions-- C olend, 353 00:17:14,170 --> 00:17:20,150 Ka see language-- süntaksi nagu Selle printf tere world-- ja ma olen 354 00:17:20,150 --> 00:17:22,210 saanud rahul Seejuures aja jooksul. 355 00:17:22,210 --> 00:17:24,510 Nii et ma ei usu, et ma tegin mis tahes trükivigu. 356 00:17:24,510 --> 00:17:27,910 >> Aga alati kõige esimene kord, kui seda teha, siis küll. 357 00:17:27,910 --> 00:17:31,090 Ja mida ma teha võiks väga hästi ei tööta esimest korda. 358 00:17:31,090 --> 00:17:33,610 Ja see on täiesti OK, sest praegu sa 359 00:17:33,610 --> 00:17:37,662 võib lihtsalt näha palju uudsust, kuid aja jooksul kui sa saad tuttav 360 00:17:37,662 --> 00:17:39,870 Selle keskkonna ja Selle keele, ja teised, 361 00:17:39,870 --> 00:17:42,370 hakkate näha asju, kas õige või vale. 362 00:17:42,370 --> 00:17:44,369 >> Ja see on see, mida õpetamise stipendiaatide ja loomulikult 363 00:17:44,369 --> 00:17:48,780 assistendid saada nii hea aja jooksul, on määrimine vigu või vigu oma koodi. 364 00:17:48,780 --> 00:17:52,110 Aga ma väita, et pole vigu see kood. 365 00:17:52,110 --> 00:17:53,990 Nii et ma tahan nüüd programmi käivitada. 366 00:17:53,990 --> 00:17:57,440 >> Nüüd on minu enda Mac või PC, ma olen harjumus topeltklõpsu ikoonid 367 00:17:57,440 --> 00:17:59,350 kui ma jooksen mingi programmi. 368 00:17:59,350 --> 00:18:01,080 Aga see ei ole mudeli siin. 369 00:18:01,080 --> 00:18:04,570 Sellises keskkonnas, mis on CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 Me kasutame operatsioonisüsteemi süsteemi nimetatakse Linux. 371 00:18:07,192 --> 00:18:09,900 Linux meenutab teise operatsioonisüsteemi, üldtuntud 372 00:18:09,900 --> 00:18:10,850 Unix. 373 00:18:10,850 --> 00:18:16,340 Ja Linux on eriti tuntud võttes käsurea keskkond, CLI. 374 00:18:16,340 --> 00:18:20,070 Nüüd me kasutame konkreetse maitse Linux nimega Ubuntu. 375 00:18:20,070 --> 00:18:22,770 Ja Ubuntu on lihtsalt Teatud versiooni Linux. 376 00:18:22,770 --> 00:18:27,900 >> Aga need Linuxi nendel päevadel teha tegelikult tulevad graafilise kasutajaliidese. 377 00:18:27,900 --> 00:18:30,360 Ja üks me juhtumisi kasuta siin on veebipõhine. 378 00:18:30,360 --> 00:18:32,735 Nii et see võib tunduda isegi Natuke erinev midagi 379 00:18:32,735 --> 00:18:35,310 sa ise võib-olla näinud või käivitada varem. 380 00:18:35,310 --> 00:18:37,910 >> Nii et ma lähen edasi minna nüüd ja teha järgmist. 381 00:18:37,910 --> 00:18:40,950 Olen salvestanud seda faili hello.c. 382 00:18:40,950 --> 00:18:47,350 Ma lähen edasi minna ja tüübist clanghello.c Nii rõkkama 383 00:18:47,350 --> 00:18:49,850 jaoks C keel on koostaja. 384 00:18:49,850 --> 00:18:51,952 See on eelinstalleeritud CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 Ja saab täiesti alla laadida ja paigaldada selle ise Mac või PC. 386 00:18:54,910 --> 00:18:57,910 >> Kuid jällegi, sa ei pea kõiki pre-konfiguratsioonis tehtud. 387 00:18:57,910 --> 00:19:00,940 Nii et nüüd ma olen lihtsalt kavatse joosta clanghello.c. 388 00:19:00,940 --> 00:19:03,240 Ja nüüd seda märgata süntaks Siin lõpuks 389 00:19:03,240 --> 00:19:06,930 aru, tähendab, et ma olen oma kausta või kataloogi nimega tööruumi. 390 00:19:06,930 --> 00:19:11,030 See dollari märk on lihtsalt konventsiooni tähendust, kirjuta oma käsud siin. 391 00:19:11,030 --> 00:19:14,560 >> See, mida nimetatakse kiire, lihtsalt Kokkuleppeliselt on dollari märk. 392 00:19:14,560 --> 00:19:19,130 Ja kui ma minna nüüd ja kliki Sisesta miski tundub, et on juhtunud. 393 00:19:19,130 --> 00:19:20,930 Aga see on tegelikult hea. 394 00:19:20,930 --> 00:19:23,650 Mida vähem, mis juhtub ekraani, seda tõenäolisemalt 395 00:19:23,650 --> 00:19:26,710 kood on õige, vähemalt süntaktiliselt. 396 00:19:26,710 --> 00:19:29,120 >> Nii et kui ma tahan teha selle Programm, mida ma pean tegema? 397 00:19:29,120 --> 00:19:33,770 Noh, selgub, et Vaikimisi nimi kokkuleppeliselt 398 00:19:33,770 --> 00:19:38,854 programmide jaoks, kui sa ei täpsusta nimi oma programm on lihtsalt a.out. 399 00:19:38,854 --> 00:19:41,270 Ja seda süntaksit liiga, saate tutvuda enne pikk. 400 00:19:41,270 --> 00:19:47,500 >> Dot kaldkriips tähendab lihtsalt, hei, CS50 IDE, käivitada programmi nimega a.out 401 00:19:47,500 --> 00:19:49,400 see on sees minu praeguse kataloogi. 402 00:19:49,400 --> 00:19:51,520 See dot tähendab käesolevat kataloogi. 403 00:19:51,520 --> 00:19:55,040 Ja me näeme, mida teised sellised järjestused märkide tähendab enne pikk. 404 00:19:55,040 --> 00:19:58,430 >> Nii et siin me läheme, Enter, tere. 405 00:19:58,430 --> 00:20:00,080 Ja märkad, et mis juhtus? 406 00:20:00,080 --> 00:20:01,580 Mitte üksnes see printida tere. 407 00:20:01,580 --> 00:20:05,990 Samuti kolis kursori järgmisele reale. 408 00:20:05,990 --> 00:20:07,160 >> Ja miks see oli? 409 00:20:07,160 --> 00:20:12,400 Mis oli kood, mis me enne kirjutasin et tagada, et kursor oleks 410 00:20:12,400 --> 00:20:14,882 minna järgmisele reale? 411 00:20:14,882 --> 00:20:16,840 Naljakas asi arvuti on see läheb 412 00:20:16,840 --> 00:20:18,570 teha sõna otseses mõttes, mida sa öelda tahad. 413 00:20:18,570 --> 00:20:26,050 >> Nii et kui sa ütled seda printf tere, koma, tühik, maailma, lähedal tsiteerida, 414 00:20:26,050 --> 00:20:29,090 see on sõna otseses mõttes vaid läheb printida need märgid. 415 00:20:29,090 --> 00:20:31,980 Aga mul oli see eriline tegelane lõpus, meenutada, backslash n. 416 00:20:31,980 --> 00:20:34,230 Ja see, mida tagatakse et märk läks 417 00:20:34,230 --> 00:20:36,570 järgmisele reale ekraani. 418 00:20:36,570 --> 00:20:38,097 >> Tegelikult, las ma lähen ja teen seda. 419 00:20:38,097 --> 00:20:39,430 Lubage mul minna ja kustuta see. 420 00:20:39,430 --> 00:20:41,180 Nüüd märgata, et peale minu ekraani seal 421 00:20:41,180 --> 00:20:42,890 natuke punast valgust tab näitab, 422 00:20:42,890 --> 00:20:45,047 Tere, olete ei salvestata faili. 423 00:20:45,047 --> 00:20:47,880 Nii et ma lähen edasi minna kontrolli S või käsu S, salvestada faili. 424 00:20:47,880 --> 00:20:51,130 Nüüd goes-- läks moment-- roheline. 425 00:20:51,130 --> 00:20:53,760 Ja nüüd on see tagasi lihtsalt on tihe ikoon. 426 00:20:53,760 --> 00:21:01,860 >> Kui ma nüüd käivitada clanghello.c uuesti Siseneda, dot kaldkriipsuga a.out, Enter, 427 00:21:01,860 --> 00:21:04,110 näete, et see ikka töötas. 428 00:21:04,110 --> 00:21:06,020 Aga see on vaieldamatult natuke lollakas. 429 00:21:06,020 --> 00:21:08,714 Just nüüd, minu prompt-- tööruumis ja siis, et dollari märk, 430 00:21:08,714 --> 00:21:10,880 ja siis minu tegelik prompt-- on kõik samal joonel. 431 00:21:10,880 --> 00:21:14,540 Nii see kindlasti esteetiline viga, isegi kui see ei ole tõesti loogiline viga. 432 00:21:14,540 --> 00:21:16,250 >> Nii et ma lähen tagasi võtta, mida ma just tegin. 433 00:21:16,250 --> 00:21:18,560 Ma lähen uuesti, a.out. 434 00:21:18,560 --> 00:21:22,710 Teadaanne ma lisanud reavahetuse märk tagasi. 435 00:21:22,710 --> 00:21:24,280 Olen salvestatud faili. 436 00:21:24,280 --> 00:21:31,630 >> Nii et ma lähen uuesti, a.out, Ja-- kurat võtaks, viga, viga tähendab, eksitus. 437 00:21:31,630 --> 00:21:35,020 Nii viga on see, et kuigi Lisasin backslash n seal, 438 00:21:35,020 --> 00:21:41,180 uuesti salvestatud, uuesti jooksis programmi käitumist oli sama. 439 00:21:41,180 --> 00:21:42,640 Miks oleks? 440 00:21:42,640 --> 00:21:43,910 >> Ma puudu samm, eks? 441 00:21:43,910 --> 00:21:47,620 See oluline samm varem oli see, et teil on mina-- kui muudad oma lähtekoodi, 442 00:21:47,620 --> 00:21:49,610 Selgub ka käivitada läbi koostaja 443 00:21:49,610 --> 00:21:51,102 jälle nii saad uue masina koodi. 444 00:21:51,102 --> 00:21:52,810 Ja masin koodi nulli ja need, 445 00:21:52,810 --> 00:21:56,260 saab olema peaaegu identsed, kuid ei ole täiesti nii, sest meil on vaja, 446 00:21:56,260 --> 00:21:57,510 muidugi, et uus liin. 447 00:21:57,510 --> 00:22:02,640 >> Nii määrata see, et ma lähen vaja kuni uuesti, clanghello.c, sisestada dot 448 00:22:02,640 --> 00:22:03,800 kaldkriips, a.out. 449 00:22:03,800 --> 00:22:08,402 Ja nüüd, tere on tagasi kus ma eeldan, et see oleks. 450 00:22:08,402 --> 00:22:09,610 Nii et see on kõik hästi ja hea. 451 00:22:09,610 --> 00:22:13,150 Aga a.out on päris loll nime jaoks programm, kuigi see juhtub olema, 452 00:22:13,150 --> 00:22:16,530 ajaloolistel põhjustel default-- tähendab kokkupanek väljundid. 453 00:22:16,530 --> 00:22:20,780 >> Aga lubage mul minna siin ja seda erinevalt. 454 00:22:20,780 --> 00:22:24,760 Ma tahan, et mu programmi Hello World tegelikult nimetada tere. 455 00:22:24,760 --> 00:22:28,320 Nii oleks see ikoon minu töölaual, siis ei oleks a.out. 456 00:22:28,320 --> 00:22:29,730 See oleks nn tere. 457 00:22:29,730 --> 00:22:33,660 >> Nii et seda teha, selgub et rõkkama, nagu paljud programmid, 458 00:22:33,660 --> 00:22:37,980 toetab käsurea argumente, või lippe või lülitid, 459 00:22:37,980 --> 00:22:39,600 mis lihtsalt mõjutada tema käitumist. 460 00:22:39,600 --> 00:22:45,160 Täpsemalt rõkkama toetab kriips o lipp, mille võtab siis teine ​​sõna. 461 00:22:45,160 --> 00:22:48,190 Sel juhul, ma meelevaldselt, aga mõistlikult, nimetame seda tere. 462 00:22:48,190 --> 00:22:50,710 Aga ma võiks seda nimetada midagi Ma tahan, välja arvatud a.out, mis 463 00:22:50,710 --> 00:22:52,390 oleks pigem peale punkti. 464 00:22:52,390 --> 00:22:55,640 >> Ja siis lihtsalt nimetage faili ma ei taha kompileerida. 465 00:22:55,640 --> 00:22:59,190 Nüüd kuigi alguses Käsu mul on veel rõkkama, 466 00:22:59,190 --> 00:23:01,410 lõpus käsk Mul on veel failinime, 467 00:23:01,410 --> 00:23:05,520 Mul on nüüd need käsurea argumendid, need lipud, mis ütlevad, 468 00:23:05,520 --> 00:23:11,180 oh, muide, väljund-o, fail nimetatakse tere, mitte vaikimisi a.out. 469 00:23:11,180 --> 00:23:13,810 >> Nii et kui ma Enter nüüd midagi tundub, et on juhtunud. 470 00:23:13,810 --> 00:23:17,900 Ja veel, nüüd ma saan teha dot kaldkriipsuga tere. 471 00:23:17,900 --> 00:23:19,089 Nii et see on sama programmi. 472 00:23:19,089 --> 00:23:21,380 Nulli ja need on identsed lõpus päeval. 473 00:23:21,380 --> 00:23:24,210 >> Aga nad on kaks erinevat files-- a.out, 474 00:23:24,210 --> 00:23:26,490 mis on esimene versioon ja lihtsalt rumalalt nimega, 475 00:23:26,490 --> 00:23:30,250 ja nüüd tere, mis on palju ahvatlevamaks nimi programm. 476 00:23:30,250 --> 00:23:33,195 Aga ausalt, ma olen kunagi mäletad seda jälle, 477 00:23:33,195 --> 00:23:34,070 ja uuesti ja uuesti. 478 00:23:34,070 --> 00:23:36,411 Ja tegelikult, kui me kirjutame keerulisem programmide 479 00:23:36,411 --> 00:23:38,160 käsud sul läheb on kirjutada 480 00:23:38,160 --> 00:23:40,920 ei hakka isegi keerulisem veel. 481 00:23:40,920 --> 00:23:41,940 >> Ja nii ei pea muretsema. 482 00:23:41,940 --> 00:23:46,220 Selgub, et inimesel enne meil on mõistnud ka nemad 483 00:23:46,220 --> 00:23:47,530 oli see täpselt sama probleem. 484 00:23:47,530 --> 00:23:50,900 Ka nemad ei naudi võttes kirjuta üsna pikk, kauge käsud, 485 00:23:50,900 --> 00:23:52,200 rääkimata mäleta neid. 486 00:23:52,200 --> 00:23:56,070 Ja nii inimestel enne meid teinud muud programmid, mis lihtsustavad 487 00:23:56,070 --> 00:23:57,670 koostada oma tarkvara. 488 00:23:57,670 --> 00:24:01,609 >> Ja tõepoolest, üks selline Programm nimega Mark. 489 00:24:01,609 --> 00:24:03,150 Nii et ma lähen edasi minna ja seda teha. 490 00:24:03,150 --> 00:24:05,691 Ma lähen tagasi võtta kõike just tegin järgmisel viisil. 491 00:24:05,691 --> 00:24:07,690 Las ma kirjutada LS. 492 00:24:07,690 --> 00:24:10,980 Ja märkad kolm things-- a.out ja täht, tere 493 00:24:10,980 --> 00:24:12,810 ja täht ning hello.c. 494 00:24:12,810 --> 00:24:14,730 Loodan, et see peaks olla natuke intuitiivne, 495 00:24:14,730 --> 00:24:18,220 kuivõrd varem oli midagi selles tööruumi. 496 00:24:18,220 --> 00:24:21,240 Seal oli midagi, et mul oli loodud kuni hakkasime klassi. 497 00:24:21,240 --> 00:24:22,840 >> Ja ma lõin hello.c. 498 00:24:22,840 --> 00:24:24,544 Ma siis koostatud, ja nimetas seda a.out. 499 00:24:24,544 --> 00:24:27,460 Ja siis ma koostati uuesti kergelt erinevalt ja nimetas seda tere. 500 00:24:27,460 --> 00:24:32,830 Nii et mul on kolm faile selles kataloogis, Selle kausta nimega tööruumi. 501 00:24:32,830 --> 00:24:35,005 Nüüd ma näen, et ka kui ma välja suumida tegelikult. 502 00:24:35,005 --> 00:24:37,530 >> Kui ma välja suumida siin vaadata, et üleval paremal 503 00:24:37,530 --> 00:24:39,940 nurgas, nagu lubati vasakul pool ekraani 504 00:24:39,940 --> 00:24:42,990 alati saab näidata teile mida teie kontole, mis on 505 00:24:42,990 --> 00:24:44,790 sees CS50 IDE. 506 00:24:44,790 --> 00:24:46,680 Ja seal on kolm faili seal. 507 00:24:46,680 --> 00:24:49,070 >> Nii et ma tahan vabaneda a.out ja tere. 508 00:24:49,070 --> 00:24:51,275 Ja kui sa võiksid kujutada, intuitiivselt, siis 509 00:24:51,275 --> 00:24:53,400 võiks mingisugune kontroll kliki või paremklõps seda. 510 00:24:53,400 --> 00:24:54,590 Ja see väike hüpikmenüü. 511 00:24:54,590 --> 00:24:57,170 Võite alla laadida faili käivitada see, vaata see, värskendada, ümber nimetada 512 00:24:57,170 --> 00:24:57,700 või mida mitte. 513 00:24:57,700 --> 00:25:00,260 >> Ja ma võiks lihtsalt kustutada, ja see ära läheks. 514 00:25:00,260 --> 00:25:05,260 Aga teeme asju koos käsuga line nüüd, et saada mugav 515 00:25:05,260 --> 00:25:07,010 Selle ja teha järgmist. 516 00:25:07,010 --> 00:25:12,345 Ma lähen edasi minna ja eemaldada a.out kirjutades sõna otseses mõttes rma.out. 517 00:25:12,345 --> 00:25:14,890 Selgub, käsk eemaldamine või kustutamine midagi, 518 00:25:14,890 --> 00:25:16,280 ei ole eemaldada või kustutada. 519 00:25:16,280 --> 00:25:21,260 >> See on rohkem tabavalt RM, lihtsalt säästa mõned klahvivajutused ja vajuta Enter. 520 00:25:21,260 --> 00:25:24,707 Nüüd me ei kavatse olla mõnevõrra cryptically eemaldada tavaline fail a.out. 521 00:25:24,707 --> 00:25:27,040 Ma tõesti ei tea, milline ebaregulaarne fail oleks veel. 522 00:25:27,040 --> 00:25:28,660 Aga ma ei taha seda eemaldada. 523 00:25:28,660 --> 00:25:30,150 >> Nii et ma lähen kirjuta y jah. 524 00:25:30,150 --> 00:25:31,940 Või ma ei kirjuta see välja ja vajuta Enter. 525 00:25:31,940 --> 00:25:33,440 Ja veelkord, miski tundub juhtuda. 526 00:25:33,440 --> 00:25:35,840 Aga see on üldiselt hea. 527 00:25:35,840 --> 00:25:40,490 >> Kui ma tüüpi LS seekord mida ma peaksin? 528 00:25:40,490 --> 00:25:44,930 Loodetavasti lihtsalt tere ja hello.c. 529 00:25:44,930 --> 00:25:47,286 Nüüd, kui kõrvale, saate märka seda täht, tärniga, 530 00:25:47,286 --> 00:25:48,660 see on lõpus oma programmi. 531 00:25:48,660 --> 00:25:50,201 Ja nad ka ilmumise roheline. 532 00:25:50,201 --> 00:25:53,970 See on lihtsalt CS50 IDE tee ning cluing sind asjaolu 533 00:25:53,970 --> 00:25:55,280 et see pole lähtekoodi. 534 00:25:55,280 --> 00:25:58,880 See on käivitatav, et runnable programm, mis saab tegelikult sõita 535 00:25:58,880 --> 00:26:01,020 tehes dot kaldkriipsuga ja siis on see nimi. 536 00:26:01,020 --> 00:26:05,860 >> Nüüd lubage mul minna ja eemaldada see, rm tere, Enter, eemaldada regulaarselt 537 00:26:05,860 --> 00:26:08,010 esitada tere, jah. 538 00:26:08,010 --> 00:26:11,180 Ja nüüd, kui ma tüüpi LS, me oleme tagasi hello.c. 539 00:26:11,180 --> 00:26:13,917 Püüa mitte kustutada oma tegelik lähtekoodi. 540 00:26:13,917 --> 00:26:16,250 Kuigi seal on omadused ehitatud CS50 IDE kus 541 00:26:16,250 --> 00:26:19,870 võid minna läbi oma redaktsiooniajaloole ja tagasikerimine aega, kui te kogemata 542 00:26:19,870 --> 00:26:23,660 kustutada midagi, teha tähelepanelikkusele ühe neist küsib jah või ei, 543 00:26:23,660 --> 00:26:25,381 mida sa tegelikult tahad teha. 544 00:26:25,381 --> 00:26:27,380 Ja kui ma lähen kuni ülemise vasakus nurgas siin 545 00:26:27,380 --> 00:26:30,696 kõik, mis jääb, on hello.c. 546 00:26:30,696 --> 00:26:32,570 Nii et kobarad teiste käskude 547 00:26:32,570 --> 00:26:37,550 võimalik täita maailma Linux, millest üks on jällegi Tee. 548 00:26:37,550 --> 00:26:40,180 Ja me ei kavatse teha minu programm nüüd järgmine. 549 00:26:40,180 --> 00:26:43,270 >> Selle asemel, et teeme clang, selle asemel teeme clang-o, 550 00:26:43,270 --> 00:26:45,860 Ma lähen lihtsalt sõna otseses mõttes kirjutada, et tere. 551 00:26:45,860 --> 00:26:49,630 Ja nüüd märgata, ma olen ei kirjutades teha hello.c. 552 00:26:49,630 --> 00:26:50,910 Olen kirjutades teha tere. 553 00:26:50,910 --> 00:26:54,840 >> Ja see programm teha, et Kaasas CS50 IDE ja rohkem 554 00:26:54,840 --> 00:26:57,090 Üldiselt Linux, on programm, mis on 555 00:26:57,090 --> 00:26:59,120 kavatseb teha programmi nimega Tere. 556 00:26:59,120 --> 00:27:03,680 Ja see läheb eeldada, Kokkuleppeliselt et kui see programm teha saab, 557 00:27:03,680 --> 00:27:09,030 see saab olema allikast koodi faili lõpeb dot c, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> Nii et kui ma Enter nüüd teate, et käsk, mis saab täide 559 00:27:12,210 --> 00:27:14,340 on tegelikult isegi kauem enne kui enne. 560 00:27:14,340 --> 00:27:16,670 Ja see on, sest me oleme eelseadistatud CS50 IDE on 561 00:27:16,670 --> 00:27:19,878 mõningaid täiendavaid funktsioone ehitatud, et Me ei vaja veel, aga varsti. 562 00:27:19,878 --> 00:27:23,470 Kuid peamine asi realiseerida Nüüd on mul Tere programmi. 563 00:27:23,470 --> 00:27:27,080 >> Kui ma tüüpi LS jälle, ma on tere programmi. 564 00:27:27,080 --> 00:27:32,070 Ja ma ei saa kasutada seda koos dot kaldkriips a.out, ei, 565 00:27:32,070 --> 00:27:35,590 sest mõte sellest Ülesande dot kaldkriipsuga tere. 566 00:27:35,590 --> 00:27:38,089 Ja nüüd on mul tere programmi. 567 00:27:38,089 --> 00:27:39,880 Nii liigub edasi, Me oleme peaaegu alati lihtsalt 568 00:27:39,880 --> 00:27:42,088 läheb kompileerida meie programmid käsuga Mark. 569 00:27:42,088 --> 00:27:45,300 Ja siis me läheme sõitma neid dot kärpida, ja programmi nimi. 570 00:27:45,300 --> 00:27:49,610 Aga aru, mida teevad on teinud juba sa, on ta ise ei ole tõlkija. 571 00:27:49,610 --> 00:27:53,310 See on lihtsalt mugavuse programmi kes teab, kuidas vallandada tõlkija 572 00:27:53,310 --> 00:27:56,470 joosta nii, et te ise ei kasuta seda. 573 00:27:56,470 --> 00:28:00,220 >> Mida teised käsud on olemas Linux, ning omakorda CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 Me kohe näha, et seal on CD käsk Change Directory. 575 00:28:03,107 --> 00:28:05,190 See võimaldab jooksul oma käsurida 576 00:28:05,190 --> 00:28:07,610 liikuda edasi ja tagasi, ja avada erinevatesse kaustadesse 577 00:28:07,610 --> 00:28:08,860 ilma, kasutades oma hiirt. 578 00:28:08,860 --> 00:28:12,470 >> LS nägime, mis tähistab nimekirja failid aktiivses kataloogis. 579 00:28:12,470 --> 00:28:14,650 Tee Dir, saate Tõenäoliselt hakkavad järeldavad 580 00:28:14,650 --> 00:28:18,150 mida need tähendavad now-- teha kataloogi Kui soovite luua kausta. 581 00:28:18,150 --> 00:28:21,270 RM kustutamisel, RM dir eemaldada directory-- ja need, 582 00:28:21,270 --> 00:28:24,160 uuesti, on käsurea ekvivalente, mida sa 583 00:28:24,160 --> 00:28:26,945 võiks teha CS50 IDE hiirega. 584 00:28:26,945 --> 00:28:28,820 Aga saate kohe teada et mõnikord on see lihtsalt 585 00:28:28,820 --> 00:28:30,610 palju kiiremini teha asjad klaviatuuri, 586 00:28:30,610 --> 00:28:33,690 ja lõpuks palju võimsam. 587 00:28:33,690 --> 00:28:36,440 >> Aga see on raske väita, et midagi oleme teinud seni 588 00:28:36,440 --> 00:28:39,990 on kõik, mida võimsam, kui kõik oleme öelnud tähendab, tere. 589 00:28:39,990 --> 00:28:43,740 Ja tegelikult ma kõva kodeeritud sõnad tere minu programm. 590 00:28:43,740 --> 00:28:45,530 Ei ole dünaamika veel. 591 00:28:45,530 --> 00:28:49,320 Scratch oli suurusjärgus huvitav eelmisel nädalal. 592 00:28:49,320 --> 00:28:51,220 >> Ja nii lähme sinna. 593 00:28:51,220 --> 00:28:55,310 Võtame samm, et viis mõningate selliste funktsioonidega. 594 00:28:55,310 --> 00:28:59,470 Nii et mitte ainult ei C tulevad printf, ja kobarad muid funktsioone 595 00:28:59,470 --> 00:29:01,850 millest mõned me näha aja jooksul, see ei ole 596 00:29:01,850 --> 00:29:05,760 muuta see kõik nii lihtne kohe Värava saada kasutaja sisend. 597 00:29:05,760 --> 00:29:08,140 >> Tegelikult üks nõrkusi keelte nagu C, 598 00:29:08,140 --> 00:29:10,140 ja isegi Java ja veel teised, on see, et seda ei juhtu 599 00:29:10,140 --> 00:29:15,860 oleks lihtne lihtsalt saada asjad täisarvud kasutajate või stringid, sõnad, 600 00:29:15,860 --> 00:29:19,970 ja väljendeid, rääkimata asju ujukoma väärtuste või tegelik arv 601 00:29:19,970 --> 00:29:23,240 koos komakohaga, ja tõesti kaua numbrid, kui me kohe näha. 602 00:29:23,240 --> 00:29:27,000 Nii et see nimekiri funktsioonid siin, need on sarnaselt teiste Scratch puzzle tükki 603 00:29:27,000 --> 00:29:31,090 et meil on eelinstalleeritud CS50 IDE, et me kasutame paar nädalat 604 00:29:31,090 --> 00:29:34,010 nagu abirattad kehvasti, ja lõpuks võtab need ära ja vaata 605 00:29:34,010 --> 00:29:37,210 all kapuuts, ehk kell kuidas need asjad on rakendatud. 606 00:29:37,210 --> 00:29:40,460 >> Aga et seda teha, olgem tegelikult kirjutada programm. 607 00:29:40,460 --> 00:29:41,770 Lubage mul minna nüüd. 608 00:29:41,770 --> 00:29:44,750 Ja ma lähen, et luua uus fail, klõpsates see väike pluss, 609 00:29:44,750 --> 00:29:45,970 ja klõpsates Uus fail. 610 00:29:45,970 --> 00:29:49,250 >> Ma lähen, et päästa see järgmine üks nii, oletame, string.c, 611 00:29:49,250 --> 00:29:50,750 sest ma tahan mängida stringid. 612 00:29:50,750 --> 00:29:53,990 Ja stringi C on lihtsalt märgijada. 613 00:29:53,990 --> 00:29:56,090 Nüüd lähme edasi ja teha järgmist. 614 00:29:56,090 --> 00:30:01,204 >> Kaasa standard IO.h-- ja Selgub standard IO, 615 00:30:01,204 --> 00:30:03,360 IO tähendab lihtsalt sisend ja väljund. 616 00:30:03,360 --> 00:30:05,920 Nii selgub, et see rida siin on, mida 617 00:30:05,920 --> 00:30:08,140 Kas naaber meil kasutada printf. 618 00:30:08,140 --> 00:30:10,410 Printf muidugi toodab väljundit. 619 00:30:10,410 --> 00:30:15,000 Nii et kasutada printf, selgub et sa pead olema see rida koodi 620 00:30:15,000 --> 00:30:16,040 ülaosas oma faili. 621 00:30:16,040 --> 00:30:18,456 >> Ja me tuleme tagasi, mida mis tähendab tegelikult enne pikk. 622 00:30:18,456 --> 00:30:20,400 Selgub, et mis tahes C programmi ma kirjutan, 623 00:30:20,400 --> 00:30:23,640 Mul hakata seda kood, mis näeb välja selline. 624 00:30:23,640 --> 00:30:26,860 Ja märkad CS50 IDE ja muu tervikliku arengu 625 00:30:26,860 --> 00:30:30,050 keskkondades nagu see, Üritavad parimaks 626 00:30:30,050 --> 00:30:31,780 nad võivad lõpetada oma mõtte. 627 00:30:31,780 --> 00:30:35,930 Tegelikult hetk tagasi, kui ma tagasi võtta mida ma tegin, ma Enter. 628 00:30:35,930 --> 00:30:39,160 >> Siis tabas avatud lokkis traksidega, Enter uuesti. 629 00:30:39,160 --> 00:30:40,430 Ja see valmis minu mõte. 630 00:30:40,430 --> 00:30:45,140 See andis mulle uue rea, liigestatud mitte vähem kena stilistiline põhjustel me näeme. 631 00:30:45,140 --> 00:30:48,559 Ja siis see automaatselt andis mulle et lokkis traksidega lõpetan oma mõtte. 632 00:30:48,559 --> 00:30:50,600 Nüüd, see ei ole alati arvan, mida sa teha tahad. 633 00:30:50,600 --> 00:30:53,620 Aga suures osas see säästab klahvivajutusi. 634 00:30:53,620 --> 00:30:59,560 Nii hetk tagasi, me jooksime seda program-- tere, maailma ja siis koostatud seda, 635 00:30:59,560 --> 00:31:00,460 ja siis jooksis ta. 636 00:31:00,460 --> 00:31:01,867 Aga seal ei ole dünaamilisus siin. 637 00:31:01,867 --> 00:31:03,700 Mis siis, kui me tahtsime teha midagi erinevat? 638 00:31:03,700 --> 00:31:07,630 Noh, mis siis, kui ma tahtsin tegelikult saada string kasutaja? 639 00:31:07,630 --> 00:31:11,250 Ma lähen kasutada pusletükk nimetatakse täpselt selle-- saada string. 640 00:31:11,250 --> 00:31:15,860 >> Selgub C, et kui sa ei taha anda oma panus puzzle tükk, 641 00:31:15,860 --> 00:31:19,360 või õigemini, et funktsioon, siis sõna otseses mõttes lihtsalt ei avatud sulgudes 642 00:31:19,360 --> 00:31:20,430 Lõpusulg. 643 00:31:20,430 --> 00:31:25,540 Nii et see on, nagu oleks seal no valge karbi tipite. 644 00:31:25,540 --> 00:31:27,720 Say plokk enne oli väike valge kast. 645 00:31:27,720 --> 00:31:29,660 Meil ei ole seda valget kasti nüüd. 646 00:31:29,660 --> 00:31:33,310 >> Aga kui ma helistada get string, ma taha panna tulemus kusagil. 647 00:31:33,310 --> 00:31:37,680 Nii väga levinud paradigma C on helistada funktsioon, nagu get string siin 648 00:31:37,680 --> 00:31:41,070 ja siis hoidke oma tagastatav väärtus. 649 00:31:41,070 --> 00:31:44,450 See on tingitud tema jõupingutusi midagi. 650 00:31:44,450 --> 00:31:47,630 >> Ja mis on ehitada programmeerimine, 651 00:31:47,630 --> 00:31:53,450 kas nullist või nüüd C, et me saab kasutada tegelikult salvestada midagi? 652 00:31:53,450 --> 00:31:55,990 Nimetatakse seda muutuv, eks? 653 00:31:55,990 --> 00:32:00,320 Ja Scratch, me tõesti ei huvita, mis toimub muutujad. 654 00:32:00,320 --> 00:32:02,170 >> Aga sel juhul me tegelikult teevad. 655 00:32:02,170 --> 00:32:03,719 Ma ütlen string. 656 00:32:03,719 --> 00:32:05,510 Ja siis ma võiks helistada see midagi, mida ma tahan. 657 00:32:05,510 --> 00:32:08,340 Ma kutsun seda nimi, satub saada string. 658 00:32:08,340 --> 00:32:10,250 >> Ja nüüd, isegi kui sa oled natuke uus siin, 659 00:32:10,250 --> 00:32:11,984 märgata, et ma puuduvad mõned detail. 660 00:32:11,984 --> 00:32:13,150 Ma unustan semikooloniga. 661 00:32:13,150 --> 00:32:14,400 Mul on vaja lõpetada see mõte. 662 00:32:14,400 --> 00:32:17,480 Nii et ma lähen liikuda minu kursori tabas semikoolon seal. 663 00:32:17,480 --> 00:32:19,130 Ja mida ma olen lihtsalt teinud? 664 00:32:19,130 --> 00:32:21,440 Selles rida koodi, number 5 hetkel 665 00:32:21,440 --> 00:32:23,799 Helistan get string ilma sisendeid. 666 00:32:23,799 --> 00:32:26,090 Seega puudub väike valge kast nagu Save plokk on. 667 00:32:26,090 --> 00:32:28,590 >> Ma lihtsalt ütlen, hei, arvuti, mind string. 668 00:32:28,590 --> 00:32:31,390 Võrdusmärki ei ole tegelikult võrdusmärk, per se. 669 00:32:31,390 --> 00:32:33,790 See on ülesanne operaator, mis tähendab, 670 00:32:33,790 --> 00:32:37,860 hei, arvuti, liikuda väärtus paremale üle vasakule. 671 00:32:37,860 --> 00:32:40,480 Ja vasakul, mul on järgmine. 672 00:32:40,480 --> 00:32:43,580 >> Hei, arvuti, anna mulle string-- märgijada. 673 00:32:43,580 --> 00:32:45,637 Ja helistada, et string nimi. 674 00:32:45,637 --> 00:32:47,220 Ja ma ei pea isegi seda kutsuda nimi. 675 00:32:47,220 --> 00:32:49,970 >> Ma võiks seda nimetada, Tavapäraselt midagi S, 676 00:32:49,970 --> 00:32:52,900 palju nagu me kasutasime I helistada muutuja i. 677 00:32:52,900 --> 00:32:54,829 Aga nüüd ma pean sellega midagi teha. 678 00:32:54,829 --> 00:32:57,370 Oleks päris loll proovida valmimises koodi, töötab 679 00:32:57,370 --> 00:32:59,410 Selles programmis, kuigi Ma saan string, 680 00:32:59,410 --> 00:33:01,580 sest see on ikka lihtsalt ei ütle tere. 681 00:33:01,580 --> 00:33:06,140 >> Aga mis siis, kui ma ei taha seda muuta. 682 00:33:06,140 --> 00:33:07,940 Miks ma ei tee seda? 683 00:33:07,940 --> 00:33:11,632 Protsent s, koma s. 684 00:33:11,632 --> 00:33:13,090 Ja see on veidi segasena ikka. 685 00:33:13,090 --> 00:33:15,560 >> Nii et lubage mul teha minu muutujad selgem. 686 00:33:15,560 --> 00:33:17,510 Lubage mul nimetada selle muutuja nimi. 687 00:33:17,510 --> 00:33:20,230 Ja vaatame, kui me ei kiusa peale, mis toimub siin. 688 00:33:20,230 --> 00:33:22,770 >> Nii on line viis, ma saan string. 689 00:33:22,770 --> 00:33:25,620 Ja ma ladustamiseks, et string, Ükskõik, kui kasutaja on sisestanud 690 00:33:25,620 --> 00:33:28,430 tema omal klaviatuur, muutujale nimega nimi. 691 00:33:28,430 --> 00:33:30,590 Ja selgub, et printf ei ole lihtsalt 692 00:33:30,590 --> 00:33:34,220 võta üks argument topelt hinnapakkumisi, üks sisend jutumärkidega. 693 00:33:34,220 --> 00:33:39,100 >> See võib võtta kaks või kolm, või enam, näiteks et teisele või kolmandale või neljandale, 694 00:33:39,100 --> 00:33:42,320 kõik nimed muutujate või konkreetselt väärtused 695 00:33:42,320 --> 00:33:48,610 mida soovite pistik, dünaamiliselt, et string jutumärkides. 696 00:33:48,610 --> 00:33:52,110 Teisisõnu, mida Oleks vale seda? 697 00:33:52,110 --> 00:33:57,920 Kui ma just ütlesin tere nimi, backslash n, päästis mu faili, mis on koostatud minu kood, 698 00:33:57,920 --> 00:34:01,660 ja jooksis see, mis juhtub? 699 00:34:01,660 --> 00:34:05,139 >> See on lihtsalt ütlen, tere Nime, sõna otseses mõttes N-A-M-E, 700 00:34:05,139 --> 00:34:07,900 mis on tobe, sest see ei erine maailmas. 701 00:34:07,900 --> 00:34:10,400 Nii midagi tsitaadid on Mis sõna otseses mõttes saab trükkida. 702 00:34:10,400 --> 00:34:12,520 Nii et kui ma tahan olla kohatäide olemas, 703 00:34:12,520 --> 00:34:14,422 Ma tegelikult vaja kasutada mõned süntaksit. 704 00:34:14,422 --> 00:34:17,380 Ja selgub, kui sa loed dokumentatsiooni printf funktsiooni 705 00:34:17,380 --> 00:34:21,320 ta ütleb teile, et kui te kasutate protsenti s, 706 00:34:21,320 --> 00:34:23,920 saab asendada väärtus järgmiselt. 707 00:34:23,920 --> 00:34:27,190 >> Pärast komaga pärast seda jutumärke, lihtsalt 708 00:34:27,190 --> 00:34:29,179 kirjuta nimi muutuja, mida soovite 709 00:34:29,179 --> 00:34:33,790 pistik sinna formaadis koodi või vormi spetsifikaatori 710 00:34:33,790 --> 00:34:35,469 protsenti s keelpillidele. 711 00:34:35,469 --> 00:34:39,190 Ja nüüd, kui ma olen päästis mu faili Ma lähen tagasi alla minu terminal. 712 00:34:39,190 --> 00:34:42,870 Ja ma tüüpi Tee String, sest jällegi nimi see 713 00:34:42,870 --> 00:34:45,510 fail, mis ma valisin enne on string.c. 714 00:34:45,510 --> 00:34:48,510 >> Nii et ma lähen ütlen Tee String, siseneda. 715 00:34:48,510 --> 00:34:51,550 Oh jumal, pilk kõik vigu oleme teinud juba. 716 00:34:51,550 --> 00:34:55,540 Ja see on-- mida, see on tõesti nagu kuus, seitse line programm? 717 00:34:55,540 --> 00:34:57,790 Nii et see on koht, kus ta saab väga kiiresti saada suur. 718 00:34:57,790 --> 00:35:00,890 >> See terminalis on nüüd vaid regurgiteeritakse 719 00:35:00,890 --> 00:35:03,230 tohutu hulk veateateid. 720 00:35:03,230 --> 00:35:07,560 Kindlasti ma ei pea enam viga lugemiseks, kui mul on rida koodi. 721 00:35:07,560 --> 00:35:08,680 Mis siis toimub? 722 00:35:08,680 --> 00:35:10,920 >> Noh, parim strateegia teha millal 723 00:35:10,920 --> 00:35:13,710 ei kohata valdav vigade loetelu niimoodi, 724 00:35:13,710 --> 00:35:16,690 on kerida tagasi, otsida käsku sa lihtsalt jooksid, mis minu puhul 725 00:35:16,690 --> 00:35:18,020 on teha jada. 726 00:35:18,020 --> 00:35:21,630 Vaata, mida teha tegin, ja see on, et kaua rõkkama käsk, ei ole suur asi seal. 727 00:35:21,630 --> 00:35:22,950 >> Aga punane on halb. 728 00:35:22,950 --> 00:35:24,750 Green üritab olla õrn ja abivalmis. 729 00:35:24,750 --> 00:35:26,140 Aga see on ikka halb, sel juhul. 730 00:35:26,140 --> 00:35:27,510 Aga kus on see halb? 731 00:35:27,510 --> 00:35:31,450 >> String.c, line viis, iseloomu viis. 732 00:35:31,450 --> 00:35:32,930 Nii et see on lihtsalt Tavaks. 733 00:35:32,930 --> 00:35:36,060 Midagi jämesoole midagi tähendab liini number ja märgi number. 734 00:35:36,060 --> 00:35:41,080 Viga kasutamine deklareerimata identifitseerimine string. 735 00:35:41,080 --> 00:35:42,900 Kas sa mõtlesid standardiks? 736 00:35:42,900 --> 00:35:45,530 >> Nii kahjuks rõkkama üritab olla kasulik. 737 00:35:45,530 --> 00:35:46,850 Aga see on vale, antud juhul. 738 00:35:46,850 --> 00:35:49,350 Ei, rõkkama, ma ei mõelnud standard IO. 739 00:35:49,350 --> 00:35:51,070 Ma mõtlesin, et esimesel liinil, jah. 740 00:35:51,070 --> 00:35:53,420 >> Aga line viis on see üks siin. 741 00:35:53,420 --> 00:35:57,040 Ja rõkkama ei mõista S-T-R-I-N-G. 742 00:35:57,040 --> 00:36:01,490 See on deklareerimata identifitseerimine, et Sõna see lihtsalt pole kunagi näinud. 743 00:36:01,490 --> 00:36:05,730 Ja seda sellepärast, C, keele me kirjalikult koodi kohe, 744 00:36:05,730 --> 00:36:08,070 ei ole muutujaid nimetatakse stringid. 745 00:36:08,070 --> 00:36:11,380 >> See ei ole vaikimisi tugi midagi, mida nimetatakse jada. 746 00:36:11,380 --> 00:36:16,750 See on CS50 tükk kõnepruuki, kuid väga tavalised. 747 00:36:16,750 --> 00:36:18,600 Aga ma ei saa seda parandada järgmiselt. 748 00:36:18,600 --> 00:36:22,090 >> Kui ma lisan ühe rea koodi üles selle programmi 749 00:36:22,090 --> 00:36:27,890 lisada CS50.h, mis on teise faili kuskil sees CS50 IDE kusagil 750 00:36:27,890 --> 00:36:30,820 kõvakettale, nii et rääkida, Ubuntu operatsioonisüsteemi 751 00:36:30,820 --> 00:36:33,590 et mul hakkab, et on fail, mis on 752 00:36:33,590 --> 00:36:38,740 lähen õpetada operatsioonisüsteemi süsteem, mida string on, lihtsalt 753 00:36:38,740 --> 00:36:41,930 nagu standard io.h on fail operatsioonisüsteemi, mis on 754 00:36:41,930 --> 00:36:44,430 lähen õpetada seda, mida printf on. 755 00:36:44,430 --> 00:36:46,810 >> Tõepoolest, me oleks saanud väga sarnane sõnum 756 00:36:46,810 --> 00:36:50,600 kui IO tunnistas standard IO.h ja proovinud kasutada printf. 757 00:36:50,600 --> 00:36:53,632 Nii et ma lähen edasi minna ja lihtsalt Võtta kontrolli L selgeks minu ekraanil. 758 00:36:53,632 --> 00:36:56,340 Või saab kirjutada selgeid ja see lihtsalt puhtaks terminali aknas. 759 00:36:56,340 --> 00:36:58,020 Siiski saate kerida ajas tagasi. 760 00:36:58,020 --> 00:37:01,100 >> Ja ma lähen uuesti, Mark String. 761 00:37:01,100 --> 00:37:03,660 Risti mu sõrmed seekord Enter. 762 00:37:03,660 --> 00:37:05,380 Oh jumal, see töötas. 763 00:37:05,380 --> 00:37:09,280 see näitab mulle pika segasena käsk mis on see, mis teeb tootsid rõkkama, 764 00:37:09,280 --> 00:37:10,460 kuid veateateid. 765 00:37:10,460 --> 00:37:12,460 Nii mõistame, kuigi võite saada täiesti 766 00:37:12,460 --> 00:37:14,480 ülekoormatud arvu veateateid, 767 00:37:14,480 --> 00:37:17,540 see lihtsalt olla see tüütu kuhjuvate toime, kui rõkkama ei saa aru 768 00:37:17,540 --> 00:37:19,620 Üks asi, mis tähendab, et see siis ei saa aru järgmine sõna, 769 00:37:19,620 --> 00:37:20,560 või järgmisele reale. 770 00:37:20,560 --> 00:37:22,850 Ja nii see lihtsalt lämmatab oma koodi. 771 00:37:22,850 --> 00:37:24,440 Aga fix võiks olla lihtne. 772 00:37:24,440 --> 00:37:27,822 Ja nii alati keskenduda Kõige esimene rida väljund. 773 00:37:27,822 --> 00:37:29,530 Ja kui sa seda ei tee aru, lihtsalt otsida 774 00:37:29,530 --> 00:37:32,480 märksõnad, mis võivad olla vihjed ja liini number, 775 00:37:32,480 --> 00:37:34,650 ja iseloomu, kus mis viga võiks olla. 776 00:37:34,650 --> 00:37:40,328 >> Nüüd lubage mul minna ja kirjuta dot kaldkriips, string, siseneda. 777 00:37:40,328 --> 00:37:44,340 Hm, see ei ütle tere midagi. 778 00:37:44,340 --> 00:37:46,210 Miks? 779 00:37:46,210 --> 00:37:48,170 Noh, mäletate, kus on see töötab? 780 00:37:48,170 --> 00:37:53,730 >> See on ilmselt kinni hetkel tsüklina, kui soovite, real kuus, 781 00:37:53,730 --> 00:37:56,950 sest siia String, mille konstruktsioon, kirjutas CS50 personal 782 00:37:56,950 --> 00:38:00,350 on sõna otseses mõttes tähendas lihtsalt istuda seal ootab, ja ootab, 783 00:38:00,350 --> 00:38:01,850 ja ootab string. 784 00:38:01,850 --> 00:38:03,792 Kõik me mõtleme string on inimese sisend. 785 00:38:03,792 --> 00:38:04,500 Nii et sa tead, mida? 786 00:38:04,500 --> 00:38:05,166 Lubage mul minna. 787 00:38:05,166 --> 00:38:08,704 Ja just kapriis, lase mind kirjuta oma nimi, David, siseneda. 788 00:38:08,704 --> 00:38:10,120 Nüüd on mul rohkem dünaamiline programm. 789 00:38:10,120 --> 00:38:11,240 Ta ütles, tere David. 790 00:38:11,240 --> 00:38:16,280 >> Kui ma minna ja käivitada uuesti lubage mul proovida öelda Zamila nimi, siseneda. 791 00:38:16,280 --> 00:38:17,940 Ja nüüd on meil dünaamiline programm. 792 00:38:17,940 --> 00:38:19,380 Ma ei ole kõva kodeeritud maailmas. 793 00:38:19,380 --> 00:38:21,760 Ma ei ole kõva kodeeritud nimi või David või Zamila. 794 00:38:21,760 --> 00:38:25,350 >> Nüüd on palju rohkem nagu programmid me teame, kus, kui see sisendiga, 795 00:38:25,350 --> 00:38:27,870 see tekitab veidi erinev väljund. 796 00:38:27,870 --> 00:38:31,020 Nüüd on see ei ole parim kasutaja kogemus või UX. 797 00:38:31,020 --> 00:38:33,000 Ma käivitada programmi. 798 00:38:33,000 --> 00:38:35,830 >> Ma ei tea, mida ma peaksin teha, kui ma tegelikult vaadata 799 00:38:35,830 --> 00:38:37,290 või mäletan lähtekoodi. 800 00:38:37,290 --> 00:38:39,640 Nii saab teha kasutaja kogeda natuke parem 801 00:38:39,640 --> 00:38:41,240 lihtsaim asju. 802 00:38:41,240 --> 00:38:44,782 Lubage mul minna tagasi sellesse programmi ja lihtsalt öelda printf. 803 00:38:44,782 --> 00:38:48,870 >> Ja las ma minna ja öelda nimi, koolon, ja ruumi, ja siis semikoolon. 804 00:38:48,870 --> 00:38:51,170 Ja lihtsalt peksab, ei lõtku n. 805 00:38:51,170 --> 00:38:52,980 Ja see on tahtlik, sest ma ei taha 806 00:38:52,980 --> 00:38:54,590 kiire liikuda järgmisele reale. 807 00:38:54,590 --> 00:38:58,800 >> Ma tahan, selle asemel, seda teha, string kompileerima minu kood uue masina 808 00:38:58,800 --> 00:39:00,980 kood dot kaldkriips string. 809 00:39:00,980 --> 00:39:02,460 Ah, see on palju ilusam. 810 00:39:02,460 --> 00:39:05,780 Nüüd ma tegelikult tea, mida arvuti tahab mulle teha, anda talle nimi. 811 00:39:05,780 --> 00:39:10,020 >> Nii et ma lähen edasi minna ja kirjuta in Rob, sisestada ja tere, Rob. 812 00:39:10,020 --> 00:39:13,640 Niisiis, realiseerida, see on ikka lõpus Päeva ainult üheksa line programmi. 813 00:39:13,640 --> 00:39:15,090 Aga me oleme võtnud neid beebi samme. 814 00:39:15,090 --> 00:39:18,380 >> Me kirjutasime üks rida, millega me olid tuttavad, printf, tere. 815 00:39:18,380 --> 00:39:19,980 Siis undid natuke seda. 816 00:39:19,980 --> 00:39:21,560 Ja me tegelikult kasutada get string. 817 00:39:21,560 --> 00:39:23,362 Ja me viskad, et väärtus muutuja. 818 00:39:23,362 --> 00:39:26,070 Ja siis läksime edasi ja paranenud see edasi kolmandale reale. 819 00:39:26,070 --> 00:39:29,220 Ja see iteratsiooniprotsessi kirjutamise tarkvara on tõesti võti. 820 00:39:29,220 --> 00:39:33,420 In CS50 ja elu üldiselt, sa ei tohiks üldiselt istuda, 821 00:39:33,420 --> 00:39:36,800 on programmi silmas pidades, ja proovige kirjalikult kogu kuradi asi korraga. 822 00:39:36,800 --> 00:39:40,810 >> See paratamatult kaasa viis rohkem vigu kui me ise nägin siin. 823 00:39:40,810 --> 00:39:44,070 Isegi mina, et see päev, pidevalt teha muid rumalaid vigu, 824 00:39:44,070 --> 00:39:47,480 on tegelikult raskem vigu mis on raskem aru saada. 825 00:39:47,480 --> 00:39:52,095 Aga siis teeb rohkem vigu rohkem rida koodi kirjutada kõik korraga. 826 00:39:52,095 --> 00:39:54,220 Ja nii see praktika, kirjutada natuke koodi 827 00:39:54,220 --> 00:39:57,930 et oled rahul, koostada käivita see, katsetada seda üldisemalt 828 00:39:57,930 --> 00:40:01,370 seejärel liikuda nüüd-- nii nagu me hoida kihilisus ja kihilisus eelmisel nädalal 829 00:40:01,370 --> 00:40:04,190 hoone on midagi väga lihtne midagi keerulisem, 830 00:40:04,190 --> 00:40:05,200 teha sama siin. 831 00:40:05,200 --> 00:40:08,500 Ära istu, ja proovige kirjutada kogu probleem. 832 00:40:08,500 --> 00:40:10,780 Tegelikult võtavad need beebi samme. 833 00:40:10,780 --> 00:40:15,100 >> Nüüd, stringid ei ole kõik et kasulik enestele. 834 00:40:15,100 --> 00:40:18,210 Me tahame tegelikult ideaalis meeldib midagi muud meie tööriistakomplekt. 835 00:40:18,210 --> 00:40:20,990 Nii saab tegelikult teha just nii. 836 00:40:20,990 --> 00:40:24,900 >> Lubage mul minna nüüd ja klopsima veidi erinev programm. 837 00:40:24,900 --> 00:40:28,320 Ja me nimetame seda int.c, täisarv. 838 00:40:28,320 --> 00:40:30,870 Ma lähen samamoodi lisada CS550.h. 839 00:40:30,870 --> 00:40:33,060 Ma lähen hulka standard IO. 840 00:40:33,060 --> 00:40:36,630 Ja see saab olema päris ühist Nende esimestel päevadel klassi. 841 00:40:36,630 --> 00:40:39,050 >> Ja ma lähen valmis mina koos põhiülesanne. 842 00:40:39,050 --> 00:40:43,370 Ja nüüd selle asemel, et jada, lähme edasi ja saada int. 843 00:40:43,370 --> 00:40:49,285 Kutsume seda i, ja nimetavad seda saada int lähedal Sulgudes, semikoolon. 844 00:40:49,285 --> 00:40:51,410 Ja nüüd teeme midagi see, printf. 845 00:40:51,410 --> 00:40:56,190 >> Oletame, et midagi sellist tere, backslash n, koma i. 846 00:40:56,190 --> 00:41:00,010 Nii et ma olen päris palju imiteerib mida ma tegin hetk tagasi. 847 00:41:00,010 --> 00:41:01,660 Mul on kohatäide siin. 848 00:41:01,660 --> 00:41:05,150 Olen komaga i siin, sest ma tahan plug i sinna kohatäide. 849 00:41:05,150 --> 00:41:07,250 >> Nii saab minna ja proovida koostades programmi. 850 00:41:07,250 --> 00:41:10,060 Fail nimega int.c. 851 00:41:10,060 --> 00:41:12,920 Nii et ma lähen öelda, et int, siseneda. 852 00:41:12,920 --> 00:41:16,420 Oh jumal, kuid ei ole suur asi, eks? 853 00:41:16,420 --> 00:41:17,230 Seal on viga. 854 00:41:17,230 --> 00:41:19,810 >> Seal on süntaktiline viga siin selline, et programm ei saa 855 00:41:19,810 --> 00:41:25,460 koostatakse sees int.c, liin seitse, iseloomu 27, viga formaadis 856 00:41:25,460 --> 00:41:28,400 täpsustab tüübist char täht, mis iganes see on. 857 00:41:28,400 --> 00:41:30,020 Aga väide, tüüp on int. 858 00:41:30,020 --> 00:41:33,110 >> Nii ka siin, me ei kavatse mina-- kuigi täna on palju materjali, 859 00:41:33,110 --> 00:41:35,710 läheme uputama teile absoluutselt iga funktsioon C, 860 00:41:35,710 --> 00:41:38,070 ja programmeerimine üldisemalt vaid paari esimese nädala jooksul. 861 00:41:38,070 --> 00:41:40,400 Nii et sageli saab olema kõnepruuki kellega sa ei ole tuttav. 862 00:41:40,400 --> 00:41:43,350 Ja tegelikult, paalia täht on midagi me ei kavatse tagasi tulla 863 00:41:43,350 --> 00:41:44,830 nädal või kaks aega. 864 00:41:44,830 --> 00:41:47,530 >> Aga nüüd, vaatame, kas me saame sõeluda sõnad, mis on tuttavad. 865 00:41:47,530 --> 00:41:50,750 Formats-- nii kuulsime formaadis spetsifikaatori formaadis koodi enne. 866 00:41:50,750 --> 00:41:51,840 See on tuttav. 867 00:41:51,840 --> 00:41:53,840 Liik-- kuid argument on tüüpi int. 868 00:41:53,840 --> 00:41:55,980 Oota, ma ei int. 869 00:41:55,980 --> 00:41:59,230 >> Võib-olla protsenti s tegelikult on mõned määratletud tähenduses. 870 00:41:59,230 --> 00:42:00,230 Ja tõesti, see teeb. 871 00:42:00,230 --> 00:42:03,101 Täisarv, kui soovite printf asendada see, 872 00:42:03,101 --> 00:42:05,350 sa tegelikult kasutada erinevas vormis specifier. 873 00:42:05,350 --> 00:42:06,890 Ja sa ei tea seda kui keegi teile rääkinud, 874 00:42:06,890 --> 00:42:07,973 või siis oli seda teinud enne. 875 00:42:07,973 --> 00:42:10,490 Aga protsenti i on see, mida saab levinud 876 00:42:10,490 --> 00:42:12,240 aastal printf kõrvaldamine on täisarv. 877 00:42:12,240 --> 00:42:14,920 Võite kasutada ka protsenti d ette koma täisarv. 878 00:42:14,920 --> 00:42:16,490 Aga ma on ilus ja lihtne siin. 879 00:42:16,490 --> 00:42:17,590 Nii et me läheme selle. 880 00:42:17,590 --> 00:42:21,160 >> Nüüd lubage mul minna ja kordamisega make int, Enter. 881 00:42:21,160 --> 00:42:23,328 See on hea, vigu. 882 00:42:23,328 --> 00:42:27,260 Dot kaldkriips int-- OK, halb kasutaja kogemus, sest ma ei ole öelnud, mina 883 00:42:27,260 --> 00:42:27,760 mida teha. 884 00:42:27,760 --> 00:42:28,426 Aga see on hea. 885 00:42:28,426 --> 00:42:29,480 Ma kandepinda kiiresti. 886 00:42:29,480 --> 00:42:36,260 >> Ja nüüd lubage mul minna ja kirjuta David, OK, Zamila, Rob. 887 00:42:36,260 --> 00:42:37,820 OK, nii et see on hea asi. 888 00:42:37,820 --> 00:42:41,710 Seekord ma kasutan funktsiooni puzzle tükk, mida nimetatakse get int. 889 00:42:41,710 --> 00:42:44,230 Ja selgub out-- ja me vaata seda hiljem term-- 890 00:42:44,230 --> 00:42:47,730 CS50 töötajad on rakendanud saada string selliselt 891 00:42:47,730 --> 00:42:50,350 et see ainult füüsiliselt saada stringi. 892 00:42:50,350 --> 00:42:54,340 >> See on rakendanud get int sisse sellisel viisil, et see ainult 893 00:42:54,340 --> 00:42:55,590 saada täisarv teile. 894 00:42:55,590 --> 00:42:57,830 Ja kui sa, inimeste, koostööd ei tee, see on 895 00:42:57,830 --> 00:43:00,590 sõna otseses mõttes lihtsalt läheb öelda uuesti, uuesti, uuesti, 896 00:43:00,590 --> 00:43:05,200 sõna otseses mõttes istub seal silmukoiminen kuni sa kohustada koos mingi maagiline number, 897 00:43:05,200 --> 00:43:07,670 nagu 50, ja tere 50. 898 00:43:07,670 --> 00:43:11,440 >> Või kui võtame seda jälle ja kirjuta 42, hello 42. 899 00:43:11,440 --> 00:43:15,750 Ja nii get int funktsiooni sees, et pusletükk 900 00:43:15,750 --> 00:43:19,050 Piisab loogika piisavalt mõelnud, nuputada, mis on sõna? 901 00:43:19,050 --> 00:43:20,330 Ja mis on number? 902 00:43:20,330 --> 00:43:23,165 Ainult nõustudes lõpuks numbrid. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> Nii selgub, et see ei ole nii ilmekad. 905 00:43:30,230 --> 00:43:30,910 nii kaugel. 906 00:43:30,910 --> 00:43:33,690 Niisiis, jess, viimane kord läks päris kiiresti 907 00:43:33,690 --> 00:43:38,320 rakendamisse mängud ja animatsioon, ja kunstiteoste Scratch. 908 00:43:38,320 --> 00:43:42,260 Ja siin me oleme seda sisu koos hello world, ja tere 50. 909 00:43:42,260 --> 00:43:43,696 >> See pole veel kõik, mis inspireerivad. 910 00:43:43,696 --> 00:43:46,070 Ja tõesti, need esimese paari näiteid võtab aega 911 00:43:46,070 --> 00:43:47,510 ramp üles põnevust. 912 00:43:47,510 --> 00:43:49,854 Aga meil on nii palju kontrollida nüüd, tegelikult. 913 00:43:49,854 --> 00:43:51,770 Ja me ei kavatse väga kiiresti alustada kihilisus 914 00:43:51,770 --> 00:43:53,870 peal need põhilised primitiivid. 915 00:43:53,870 --> 00:43:56,370 >> Aga kõigepealt, olgem aru Mis piirangud on. 916 00:43:56,370 --> 00:43:58,620 Tegelikult on üks neist asjadest, Scratch kergesti ei 917 00:43:58,620 --> 00:44:00,990 tehkem on tõesti vaatama all kapuuts, 918 00:44:00,990 --> 00:44:03,740 ja mõista, mida arvuti on, mida ta saab teha, 919 00:44:03,740 --> 00:44:05,250 ja mis on selle piirangud. 920 00:44:05,250 --> 00:44:08,580 Ja tõepoolest, et vähene arusaam, potentsiaalselt pikaajalist 921 00:44:08,580 --> 00:44:12,520 võib kaasa tuua oma mistakes-- kirjalikult vead, kirjutades ohtlik tarkvara, mis 922 00:44:12,520 --> 00:44:13,880 häkkimisel mingil moel. 923 00:44:13,880 --> 00:44:17,130 >> Võtame mõned sammud mõista seda natuke paremini 924 00:44:17,130 --> 00:44:19,710 viis öelda, järgmine näide. 925 00:44:19,710 --> 00:44:23,550 Ma lähen edasi minna ja rakendada reaalne kiire programm nimega lisaja. 926 00:44:23,550 --> 00:44:25,134 Nagu, lisame mõned numbrid kokku. 927 00:44:25,134 --> 00:44:27,800 Ja ma lähen koodi mõned nurgad siin, ja lihtsalt kopeerida ja kleepida 928 00:44:27,800 --> 00:44:30,270 kus ma olin enne, lihtsalt nii saame läheb varem. 929 00:44:30,270 --> 00:44:33,090 Nüüd on mul põhi algus programmi nimega lisaja. 930 00:44:33,090 --> 00:44:34,670 >> Ja olgem minna ja seda teha. 931 00:44:34,670 --> 00:44:38,680 Ma lähen edasi minna ja ütleme, intx saab saada int. 932 00:44:38,680 --> 00:44:39,430 Ja teate mis? 933 00:44:39,430 --> 00:44:40,990 Teeme parem kasutaja kogemus. 934 00:44:40,990 --> 00:44:45,740 >> Nii ütleme lihtsalt x on ja tõhusalt palub kasutajal anda meile x. 935 00:44:45,740 --> 00:44:50,600 Ja siis lubage mul minna ja öelda, printf kuidas y on seekord oodanud 936 00:44:50,600 --> 00:44:53,140 kaks väärtust kasutaja. 937 00:44:53,140 --> 00:44:59,759 Ja siis lähme lihtsalt minna ja ütleme, printf, summa x ja y on. 938 00:44:59,759 --> 00:45:01,300 Ja nüüd ma ei taha seda teha protsenti s. 939 00:45:01,300 --> 00:45:09,080 Ma tahan teha protsenti i, backslash n, ja seejärel ühendage summa väärtuses. 940 00:45:09,080 --> 00:45:10,620 >> Niisiis, kuidas ma saan minna seda teed? 941 00:45:10,620 --> 00:45:11,270 Tead mida? 942 00:45:11,270 --> 00:45:12,840 Ma tean, kuidas kasutada muutujaid. 943 00:45:12,840 --> 00:45:15,140 Lubage mul kuulutada uus, int z. 944 00:45:15,140 --> 00:45:16,770 >> Ja ma lähen teen oletuse siin. 945 00:45:16,770 --> 00:45:21,470 Kui on võrdne märke selle keeles, võibolla ma lihtsalt teha x pluss y, 946 00:45:21,470 --> 00:45:23,660 nii kaua kui ma lõpetan oma mõtles semikoolon? 947 00:45:23,660 --> 00:45:28,170 Nüüd ma saan minna siia tagasi, ühendage z, lõpetada see mõtte semikooloniga. 948 00:45:28,170 --> 00:45:33,160 Ja vaatame nüüd, kui need järjestused lines-- x on saada int. 949 00:45:33,160 --> 00:45:34,770 Y on saada int. 950 00:45:34,770 --> 00:45:37,980 >> Lisa x ja y, salvestada väärtust · Z- nii meenutage veelkord võrdusmärki 951 00:45:37,980 --> 00:45:38,560 ei ole võrdsed. 952 00:45:38,560 --> 00:45:41,100 See ülesanne paremalt vasakule. 953 00:45:41,100 --> 00:45:45,180 Ja olgem välja printida, et summa x ja y ei ole sõna otseses mõttes z, 954 00:45:45,180 --> 00:45:46,830 aga mis sees z. 955 00:45:46,830 --> 00:45:50,090 Nii saab teha lisaja - kena, ei ole vigu seekord. 956 00:45:50,090 --> 00:45:53,030 Dot kaldkriips lisaja, sisestada x saab olema 1. 957 00:45:53,030 --> 00:45:55,380 >> Y saab olema 2. 958 00:45:55,380 --> 00:45:58,964 Ja summa x ja y on 3. 959 00:45:58,964 --> 00:46:00,130 Nii et kõik on hästi ja hea. 960 00:46:00,130 --> 00:46:03,260 >> Nii et sa ei kujuta ette, et matemaatika peaks töötama programmi niimoodi. 961 00:46:03,260 --> 00:46:04,040 Aga tead mis? 962 00:46:04,040 --> 00:46:06,904 See muutuja rida 12, isegi vajalik? 963 00:46:06,904 --> 00:46:09,820 Sa ei pea saada harjumuseks lihtsalt hoidmiseks asju muutujad 964 00:46:09,820 --> 00:46:10,980 lihtsalt sellepärast, et saate. 965 00:46:10,980 --> 00:46:13,550 Ja tegelikult, see on üldiselt halvaks disain 966 00:46:13,550 --> 00:46:18,100 Kui loote muutuja, mida nimetatakse z sel juhul hoidmiseks midagi see, 967 00:46:18,100 --> 00:46:21,390 ja siis kohe seda kasutada, kuid mitte kunagi enam. 968 00:46:21,390 --> 00:46:24,700 Miks anda midagi nimi nagu z kui sa sõna otseses mõttes 969 00:46:24,700 --> 00:46:26,770 kavatsete kasutada mis asi ainult üks kord, ja nii 970 00:46:26,770 --> 00:46:29,380 proksimaalne, kuhu loodud see esimene koht, 971 00:46:29,380 --> 00:46:31,052 nii lähedal, nii rida koodi? 972 00:46:31,052 --> 00:46:31,760 Nii et sa tead, mida? 973 00:46:31,760 --> 00:46:34,480 Selgub, et C on üsna paindlik. 974 00:46:34,480 --> 00:46:36,586 Kui ma tegelikult tahan plug-in väärtuste siin 975 00:46:36,586 --> 00:46:38,210 Ma ei vaja kuulutada uue muutuja. 976 00:46:38,210 --> 00:46:41,680 Ma võiks lihtsalt plug-in x pluss y, sest C mõistab 977 00:46:41,680 --> 00:46:43,390 aritmeetika ja matemaatilisi tehteid. 978 00:46:43,390 --> 00:46:47,140 >> Nii et ma lihtsalt öelda, seda matemaatikat, x pluss y, mis iganes need väärtused, 979 00:46:47,140 --> 00:46:50,780 ühendage tulemuseks täisarv sellesse string. 980 00:46:50,780 --> 00:46:53,730 Nii et see võib olla, kuigi ainult üks rida lühem, 981 00:46:53,730 --> 00:46:58,480 parem disain, parem programm, sest seal on vähem koodi, seega 982 00:46:58,480 --> 00:46:59,921 vähem mind mõistma. 983 00:46:59,921 --> 00:47:01,920 Ja see on ka lihtsalt puhtamaks, kuivõrd me ei ole 984 00:47:01,920 --> 00:47:04,620 uusi sõnu, uued sümbolid, nagu z, 985 00:47:04,620 --> 00:47:07,510 kuigi nad tegelikult ei teenida palju eesmärgil. 986 00:47:07,510 --> 00:47:12,890 >> Kahjuks matemaatika ei ole kõik, mis usaldusväärne mõnikord. 987 00:47:12,890 --> 00:47:15,270 Lähme edasi ja tee seda. 988 00:47:15,270 --> 00:47:18,200 Ma lähen edasi minna nüüd ja teha järgmist. 989 00:47:18,200 --> 00:47:27,650 >> Teeme printf, protsenti i, pluss protsenti i, peab olema protsenti i, backslash n. 990 00:47:27,650 --> 00:47:32,240 Ja ma lähen tegema see-- xyx pluss y. 991 00:47:32,240 --> 00:47:34,821 Nii et ma lihtsalt lähen kirjutada see veidi erinevalt siin. 992 00:47:34,821 --> 00:47:36,320 Lubage mul teha kiire meelerahu kontrolli. 993 00:47:36,320 --> 00:47:37,986 Jällegi, ärme saada enne ise. 994 00:47:37,986 --> 00:47:41,420 Tee rästik, dot kaldkriipsuga rästik. 995 00:47:41,420 --> 00:47:44,950 x on 1, y on 2, 1 pluss 2 on 3. 996 00:47:44,950 --> 00:47:45,870 Nii see on hea. 997 00:47:45,870 --> 00:47:49,060 Kuid olgem keeruliseks see nüüd natuke, ja luua uus fail. 998 00:47:49,060 --> 00:47:53,350 >> Ma nimetan seda ühte, öelda, ints, mitmuses eest täisarvud. 999 00:47:53,350 --> 00:47:55,980 Lubage mul alustada, kui olin hetk tagasi. 1000 00:47:55,980 --> 00:47:57,770 Kuid nüüd teeme mõned teised read. 1001 00:47:57,770 --> 00:48:03,430 Lubage mul minna ja teha järgmised printf, protsenti i miinus protsenti i, 1002 00:48:03,430 --> 00:48:08,959 on protsenti i, koma x, koma yx miinus y. 1003 00:48:08,959 --> 00:48:10,750 Nii ma teen veidi erinevat matemaatika seal. 1004 00:48:10,750 --> 00:48:11,624 Teeme veel ühe. 1005 00:48:11,624 --> 00:48:16,610 Nii protsenti i korda protsenti Ma ei protsendi i, backslash n. 1006 00:48:16,610 --> 00:48:21,430 Olgem plug-in x ja y ja x korda y. 1007 00:48:21,430 --> 00:48:24,530 Me kasutame tärn kohta arvuti korda. 1008 00:48:24,530 --> 00:48:26,390 >> Sa ei kasuta x. x on muutuja nimi. 1009 00:48:26,390 --> 00:48:28,270 Sa kasutad tähe paljunemist. 1010 00:48:28,270 --> 00:48:29,020 Teeme veel ühe. 1011 00:48:29,020 --> 00:48:34,580 Printf protsenti ma, jagatuna poolt protsenti i, on protsenti i, 1012 00:48:34,580 --> 00:48:40,460 backslash n. xy jagatud y-- Siis kasuta kaldkriipsuga C 1013 00:48:40,460 --> 00:48:41,502 teha rajoon. 1014 00:48:41,502 --> 00:48:42,460 Ja teeme veel ühe. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Ülejäänud protsenti i jagatud poolt protsenti i, on protsenti i. 1017 00:48:55,240 --> 00:48:59,550 xy-- ja nüüd ülejäänud on see, mis on üle jäänud. 1018 00:48:59,550 --> 00:49:02,980 Kui proovite jagamisel nimetaja arvesse lugeja 1019 00:49:02,980 --> 00:49:05,570 kui palju üle on jäänud sa ei jaga välja? 1020 00:49:05,570 --> 00:49:07,910 >> Nii et tegelikult ei ole, tingimata, sümbol 1021 00:49:07,910 --> 00:49:09,470 Me kasutasime algkool seda. 1022 00:49:09,470 --> 00:49:13,830 Aga seal C. Te saate öelda x moodul y, kus 1023 00:49:13,830 --> 00:49:18,000 Selle protsenti märk selles context-- äravahetamiseni kui oled sees 1024 00:49:18,000 --> 00:49:20,170 on jutumärkide, sees printf, protsenti 1025 00:49:20,170 --> 00:49:21,830 kasutatakse vormi specifier. 1026 00:49:21,830 --> 00:49:25,420 >> Kui kasutate protsenti väljaspool et tehte, 1027 00:49:25,420 --> 00:49:29,910 see on mooduli operaator modulaarne arithmetic-- meie eesmärkidel 1028 00:49:29,910 --> 00:49:33,650 siin, tähendab lihtsalt, milline on Ülejäänud x jagatud y? 1029 00:49:33,650 --> 00:49:36,130 Nii x jagatud y on x kaldkriipsuga y. 1030 00:49:36,130 --> 00:49:38,220 Mis on ülejäänud x jagatud y? 1031 00:49:38,220 --> 00:49:41,780 See on x mod y, programmeerijana ütleks. 1032 00:49:41,780 --> 00:49:48,300 >> Nii et kui ma ei teinud ühtegi viga siin, las ma minna ja teha ints, mitmuses, kena, 1033 00:49:48,300 --> 00:49:50,010 ja dot kaldkriipsuga ints. 1034 00:49:50,010 --> 00:49:55,270 Ja olgem minna ja teha, oletame, 1, 10. 1035 00:49:55,270 --> 00:49:58,390 Olgu, 1 pluss 10 on 11, check. 1036 00:49:58,390 --> 00:50:01,240 1 miinus 10 on negatiivne 9, vaadake. 1037 00:50:01,240 --> 00:50:03,420 >> 1 korda 10 on 10, check. 1038 00:50:03,420 --> 00:50:07,090 1 jagatud 10 on-- OK, me vahele, et üks. 1039 00:50:07,090 --> 00:50:09,480 Ülejäänud 1 jagatud 10 on 1. 1040 00:50:09,480 --> 00:50:10,680 See on õige. 1041 00:50:10,680 --> 00:50:12,630 Aga seal on viga siin. 1042 00:50:12,630 --> 00:50:15,390 >> Nii et üks Panen üle andma, ei ole õige. 1043 00:50:15,390 --> 00:50:16,670 Ma mõtlen, et see on peaaegu 0. 1044 00:50:16,670 --> 00:50:20,670 1 jagatud 10, sa tead, kui me lõigates mõned nurgad, kindel, et see on null. 1045 00:50:20,670 --> 00:50:28,050 Aga see peaks tõesti olema 1/10, 0,1 või 0,10, 0,1000, või nii edasi. 1046 00:50:28,050 --> 00:50:30,600 >> See ei tohiks tõesti olla null. 1047 00:50:30,600 --> 00:50:35,990 Noh, tuleb välja, et arvuti on tehes sõna otseses mõttes, mida me rääkinud seda teha. 1048 00:50:35,990 --> 00:50:39,460 Me teeme matemaatika nagu x jagatud y. 1049 00:50:39,460 --> 00:50:44,680 Ja nii x ja y, per read kood varem, on täisarvud. 1050 00:50:44,680 --> 00:50:50,440 >> Lisaks on line 15 oleme räägib printf, hei, printf plug-in 1051 00:50:50,440 --> 00:50:54,230 täisarv, plug-in täisarv, plug-ühes integer-- spetsiaalselt 1052 00:50:54,230 --> 00:50:57,580 x ja siis y ja seejärel x jagatuna y. x ja y on ints. 1053 00:50:57,580 --> 00:50:59,060 Oleme seal hästi. 1054 00:50:59,060 --> 00:51:01,250 >> Aga mis on x jagatud x? 1055 00:51:01,250 --> 00:51:06,790 x jagatud y peaks olema, matemaatiliselt, 1/10 ehk 0,1, 1056 00:51:06,790 --> 00:51:11,600 mis on tõeline number, tegelik arv võttes potentsiaalselt koma. 1057 00:51:11,600 --> 00:51:13,230 See ei ole täisarv. 1058 00:51:13,230 --> 00:51:18,290 >> Aga milline on kõige lähemal täisarvuga 10/01 või 0,1? 1059 00:51:18,290 --> 00:51:21,114 Jah, see selline on null. 1060 00:51:21,114 --> 00:51:22,030 0.1 on niimoodi palju. 1061 00:51:22,030 --> 00:51:22,890 Ja 1 on see palju. 1062 00:51:22,890 --> 00:51:25,870 Nii 10/1 on lähemal 0, kui see on üks. 1063 00:51:25,870 --> 00:51:30,800 >> Ja mis siis C on teinud juba us-- Selline sest me rääkisime see mina-- 1064 00:51:30,800 --> 00:51:32,600 on kärpimisel, et täisarv. 1065 00:51:32,600 --> 00:51:40,540 See võtab väärtust, mis omakorda on peaks olema midagi 0,1000, 1066 00:51:40,540 --> 00:51:41,800 0 ja nii edasi. 1067 00:51:41,800 --> 00:51:45,320 Ja see kärpimine kõike pärast koma 1068 00:51:45,320 --> 00:51:47,510 nii et kõik käesoleva kraami, sest see ei 1069 00:51:47,510 --> 00:51:51,910 mahub mõiste täisarv, mis on lihtsalt number nagu negatiivne 1, 0, 1, 1070 00:51:51,910 --> 00:51:55,830 üles ja alla, ta viskab ära kõik pärast koma, sest sa 1071 00:51:55,830 --> 00:51:59,020 ei sobi koma aastal täisarv definitsiooni. 1072 00:51:59,020 --> 00:52:01,290 >> Nii et vastus siin on null. 1073 00:52:01,290 --> 00:52:02,600 Niisiis, kuidas me seda parandada? 1074 00:52:02,600 --> 00:52:04,400 Me peame teine ​​lahendus kõik koos. 1075 00:52:04,400 --> 00:52:06,880 Ja me saame seda teha, on järgmine. 1076 00:52:06,880 --> 00:52:12,820 >> Lubage mul minna ja luua uusi faili, see üks nn floats.c. 1077 00:52:12,820 --> 00:52:16,500 Ja salvestada see siin samas kataloogis, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 Ja las ma minna ja kopeerida mõned, et koodi varem. 1080 00:52:23,260 --> 00:52:27,690 >> Kuid selle asemel, et int, teeme selle ära. 1081 00:52:27,690 --> 00:52:31,037 Anna mulle Murdarv nimetatakse x. Kui ujukoma 1082 00:52:31,037 --> 00:52:33,370 väärtus on lihtsalt sõna otseses mõttes midagi ujuva punkti. 1083 00:52:33,370 --> 00:52:34,410 See võib liikuda vasakule, paremale. 1084 00:52:34,410 --> 00:52:35,530 See on tõeline number. 1085 00:52:35,530 --> 00:52:38,050 >> Ja andke mulle helistada ei saada int, kuid saavad float, 1086 00:52:38,050 --> 00:52:41,420 mis oli ka üks menüü valikuvarianti C250 raamatukogu. 1087 00:52:41,420 --> 00:52:43,220 Muudame y sularahaga. 1088 00:52:43,220 --> 00:52:45,000 Nii et see muutub saada sularahaga. 1089 00:52:45,000 --> 00:52:47,620 >> Ja nüüd, me ei taha, et pistik ints. 1090 00:52:47,620 --> 00:52:53,130 Selgub, peame kasutama protsenti f float, protsenti f float, 1091 00:52:53,130 --> 00:52:54,560 ja nüüd salvestada. 1092 00:52:54,560 --> 00:53:01,220 Ja nüüd, pöialt, et ujukite, kena, dot kaldkriipsuga ujub. 1093 00:53:01,220 --> 00:53:04,280 x saab olema üks 1. y Saab olema 10 uuesti. 1094 00:53:04,280 --> 00:53:08,240 >> Ja kena, OK minu Lisaks on õige. 1095 00:53:08,240 --> 00:53:10,240 Lootsin rohkem, aga ma unustasin seda kirjutada. 1096 00:53:10,240 --> 00:53:13,250 Nii lähme ja määrata see loogikaviga. 1097 00:53:13,250 --> 00:53:16,280 >> Lähme edasi ja ostke järgmine. 1098 00:53:16,280 --> 00:53:18,080 Me lihtsalt teha väike kopeeri ja kleebi. 1099 00:53:18,080 --> 00:53:20,080 Ja ma lähen ütlen miinus. 1100 00:53:20,080 --> 00:53:21,890 >> Ja ma ei ütle korda. 1101 00:53:21,890 --> 00:53:24,060 Ja ma ütlen lahku. 1102 00:53:24,060 --> 00:53:28,240 Ja ma ei kavatse seda teha moodul, mis ei ole nii Sobiv siin, 1103 00:53:28,240 --> 00:53:33,690 jagatud f ja korda pluss-- OK, teeme seda uuesti. 1104 00:53:33,690 --> 00:53:44,210 >> Tee ujukid, dot kaldkriipsuga ujukid, ja 1, 10, Ja-- kena, ei, OK. 1105 00:53:44,210 --> 00:53:45,250 Nii et ma olen idioot. 1106 00:53:45,250 --> 00:53:47,000 Nii et see on väga levinud infotehnoloogia 1107 00:53:47,000 --> 00:53:49,780 teha rumalaid vigu niimoodi. 1108 00:53:49,780 --> 00:53:53,100 >> Sest pedagoogilistel eesmärkidel, mida ma tõesti tahtsin teha 1109 00:53:53,100 --> 00:53:57,410 oli muuta teaduse siin pluss, miinus, et korda, 1110 00:53:57,410 --> 00:54:01,140 ja jagada, kui sa loodetavasti märganud Selle tegevuse jooksul. 1111 00:54:01,140 --> 00:54:04,700 Vaatame nüüd uuesti kompileerida seda programmi teha dot kaldkriipsuga ujub. 1112 00:54:04,700 --> 00:54:07,950 >> Ja kolmandat korda, olgem kas see vastab minu ootustele. 1113 00:54:07,950 --> 00:54:21,480 1, 10, siseneda, jah, OK, 1.000, jagatud 10.000, on 0,100000. 1114 00:54:21,480 --> 00:54:24,952 Ja selgub, et me saame kontrollida, kui palju numbrid on pärast neid komakohani. 1115 00:54:24,952 --> 00:54:25,660 Me tegelikult on. 1116 00:54:25,660 --> 00:54:26,790 Me tuleme tagasi, et. 1117 00:54:26,790 --> 00:54:28,440 >> Aga nüüd, tegelikult matemaatika on õige. 1118 00:54:28,440 --> 00:54:30,090 Niisiis, jälle, milline on Buffee siin? 1119 00:54:30,090 --> 00:54:33,050 Selgub, et C on mitte ainult lihtsalt strings-- ja tegelikult 1120 00:54:33,050 --> 00:54:36,120 seal ei ole tõesti, sest me lisada need koos CS50 raamatukogu. 1121 00:54:36,120 --> 00:54:37,710 Aga seal ei ole lihtsalt ints. 1122 00:54:37,710 --> 00:54:38,990 >> On ka hõljub. 1123 00:54:38,990 --> 00:54:42,810 Ja selgub, hunnik muid andmeid tüüpi ka, et me kasutame enne pikk. 1124 00:54:42,810 --> 00:54:46,270 Selgub, kui soovite ühte iseloomu, ei märgijada, 1125 00:54:46,270 --> 00:54:47,610 mida saab kasutada vaid paalia. 1126 00:54:47,610 --> 00:54:52,350 >> Selgub, et kui sa tahad bool, tõeväärtuse, õige või vale ainult, 1127 00:54:52,350 --> 00:54:56,840 Tänu CS50 raamatukogu oleme lisada C bool andmete tüübi samuti. 1128 00:54:56,840 --> 00:54:59,180 Aga see on olemas ka palju ka teistesse keeltesse. 1129 00:54:59,180 --> 00:55:04,130 Ja selgub, et mõnikord vaja suuremat numbrit siis tulevad vaikimisi 1130 00:55:04,130 --> 00:55:05,210 koos ints ja ujub. 1131 00:55:05,210 --> 00:55:10,590 >> Ja tegelikult, topelt on mitmeid mis kasutab ole 32 bitti, kuid 64 bitti. 1132 00:55:10,590 --> 00:55:14,990 Ja pikk pikk on see arv kasutab ole 32 bitti vaid 64 bitti, 1133 00:55:14,990 --> 00:55:19,190 vastavalt ujukoma väärtused ja täisarvud, vastavalt. 1134 00:55:19,190 --> 00:55:22,780 Nii saab tegelikult nüüd vaata seda tegevust. 1135 00:55:22,780 --> 00:55:26,150 >> Ma lähen edasi minna siin ja klopsima ühe teise programmi. 1136 00:55:26,150 --> 00:55:32,020 Siin ma lähen edasi minna ja ärge hulka CS50.h. 1137 00:55:32,020 --> 00:55:34,910 Ja lase mul minna, sisaldavad standard IO.h. 1138 00:55:34,910 --> 00:55:37,320 >> Ja märkad midagi funky siin toimub. 1139 00:55:37,320 --> 00:55:40,592 See ei ole värvikoodiga asju samamoodi nagu enne. 1140 00:55:40,592 --> 00:55:43,550 Ja selgub, et kuna ma ei ole saatnud asi faili nimi. 1141 00:55:43,550 --> 00:55:47,270 >> Ma nimetan seda ühe sizeof.c ja vajuta Save. 1142 00:55:47,270 --> 00:55:51,039 Ja pane tähele, mis juhtub minu väga valge koodi vastu, et musta tausta. 1143 00:55:51,039 --> 00:55:52,830 Nüüd, vähemalt seal mõned lilla seal. 1144 00:55:52,830 --> 00:55:54,490 Ja see on süntaksit esile. 1145 00:55:54,490 --> 00:55:57,700 >> Seda sellepärast, et lihtsalt olen ütles IDE millist tüüpi faili 1146 00:55:57,700 --> 00:56:01,060 see on andes talle nime ja spetsiaalselt faililaiend. 1147 00:56:01,060 --> 00:56:03,620 Nüüd saab minna ja seda teha. 1148 00:56:03,620 --> 00:56:08,910 Ma lähen edasi minna ja väga lihtsalt välja printida following-- bool 1149 00:56:08,910 --> 00:56:11,080 on protsenti LU. 1150 00:56:11,080 --> 00:56:12,950 >> Me tuleme tagasi et üks hetk. 1151 00:56:12,950 --> 00:56:15,840 Ja siis ma lähen print suurus bool. 1152 00:56:15,840 --> 00:56:18,170 Ja nüüd, lihtsalt säästa ise mõnda aega, ma olen 1153 00:56:18,170 --> 00:56:20,280 kavatsevad teha kogu hunnik neid korraga. 1154 00:56:20,280 --> 00:56:24,620 Ja eriti, ma lähen muuta see süsi ja süsi. 1155 00:56:24,620 --> 00:56:27,760 See üks, ma lähen muuta kahekordse ja topelt. 1156 00:56:27,760 --> 00:56:31,440 >> See üks, ma lähen muuta float ja sularahaga. 1157 00:56:31,440 --> 00:56:35,670 See üks, ma lähen muuta int ja int. 1158 00:56:35,670 --> 00:56:38,660 Ja see, et ma lähen muuta, et pikk pikk. 1159 00:56:38,660 --> 00:56:40,840 Ja see on ikka võtmist pikka aega, kaua kaua. 1160 00:56:40,840 --> 00:56:44,572 >> Ja siis lõpuks andsin ise liiga palju, string. 1161 00:56:44,572 --> 00:56:47,030 Selgub, et C, seal on erilist operaator nimetatakse 1162 00:56:47,030 --> 00:56:50,260 suurus, mis on sõna otseses mõttes läheb, kui joosta, 1163 00:56:50,260 --> 00:56:52,099 ütle meile, suurus Kõigi nende parameetrite. 1164 00:56:52,099 --> 00:56:53,890 Ja see on nii, nüüd, saame ühendada tagasi 1165 00:56:53,890 --> 00:56:57,140 et eelmisel nädalal toimunud arutelu andmete ja esindamine. 1166 00:56:57,140 --> 00:57:00,330 >> Lubage mul minna ja koostada suurus dot kaldkriipsuga suurus. 1167 00:57:00,330 --> 00:57:01,210 Ja vaatame. 1168 00:57:01,210 --> 00:57:05,210 Selgub, et C, konkreetselt CS50 IDE, 1169 00:57:05,210 --> 00:57:08,170 konkreetselt operatsioonisüsteem Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 mis on 64-bitise operatsioonisüsteemi süsteem sel juhul 1171 00:57:11,100 --> 00:57:14,189 bool läheb kasutada ühe baidi ruumi. 1172 00:57:14,189 --> 00:57:16,480 See, kuidas suurust mõõdetakse, ei bittides, kuid baiti. 1173 00:57:16,480 --> 00:57:18,690 Ja meenutada, et üks bait on kaheksa bitti. 1174 00:57:18,690 --> 00:57:22,030 Nii bool, kuigi sa tehniliselt on vaja ainult 0 või 1, 1175 00:57:22,030 --> 00:57:24,092 see on natuke raiskav kuidas oleme rakendanud. 1176 00:57:24,092 --> 00:57:26,800 See on tegelikult kavatse kasutada kogu byte-- nii et kõik nullid, on võibolla 1177 00:57:26,800 --> 00:57:31,050 kõik need, või midagi sellist, või lihtsalt üks 1 hulgast kaheksa bitti. 1178 00:57:31,050 --> 00:57:34,962 >> Süsi, vahepeal kasutati märk nagu ASCII kohta eelmisel nädalal, 1179 00:57:34,962 --> 00:57:36,170 saab olema üks märk. 1180 00:57:36,170 --> 00:57:42,340 Ja et synchs up meie mõiste see on enam kui 256 bits-- pigem 1181 00:57:42,340 --> 00:57:45,360 synchs üles et oleks mingit pikem kui 8 bitti, mis 1182 00:57:45,360 --> 00:57:47,450 annab meile nii palju kui 256 väärtused. 1183 00:57:47,450 --> 00:57:49,680 Topelt läheb 8 baiti ehk 64 bitti. 1184 00:57:49,680 --> 00:57:50,510 >> Ujuk on 4. 1185 00:57:50,510 --> 00:57:51,690 Int on 4. 1186 00:57:51,690 --> 00:57:52,980 Pikk, pikk on 8. 1187 00:57:52,980 --> 00:57:54,716 Ja string on 8. 1188 00:57:54,716 --> 00:57:55,840 Aga ei muretse. 1189 00:57:55,840 --> 00:57:57,340 Me läheme koorida tagasi, et kiht. 1190 00:57:57,340 --> 00:57:59,940 Selgub, stringid saab olla pikem kui 8 baiti. 1191 00:57:59,940 --> 00:58:02,310 >> Ja tõesti, me oleme kirjutanud stringid juba, tere, 1192 00:58:02,310 --> 00:58:03,700 pikem kui 8 baiti. 1193 00:58:03,700 --> 00:58:06,270 Aga tuleme tagasi et üks hetk. 1194 00:58:06,270 --> 00:58:09,690 Aga ära võtta siin on järgmine. 1195 00:58:09,690 --> 00:58:15,320 >> Iga arvuti on ainult piiratud mälu ja ruumi. 1196 00:58:15,320 --> 00:58:17,860 Saad salvestada nii palju failid Mac või PC. 1197 00:58:17,860 --> 00:58:23,030 Saad salvestada nii palju programme RAM töötab korraga pruugi isegi 1198 00:58:23,030 --> 00:58:26,360 virtuaalne mälu, sest sul on piiratud kogus RAM. 1199 00:58:26,360 --> 00:58:28,990 >> Ja just picture-- kui olete kunagi avanud sülearvuti 1200 00:58:28,990 --> 00:58:31,300 või tellitud ekstra mälu arvutit, siis 1201 00:58:31,300 --> 00:58:33,670 ei pruugi teada, et sees arvuti 1202 00:58:33,670 --> 00:58:36,590 on midagi, mis näeb välja natuke niimoodi. 1203 00:58:36,590 --> 00:58:40,540 Nii et see on lihtsalt ühise firma nimega Ülioluline mis muudab RAM arvuteid. 1204 00:58:40,540 --> 00:58:43,620 Ja RAM on koht, kus programmid elame samas nad töötavad. 1205 00:58:43,620 --> 00:58:46,630 >> Nii et iga Mac või PC, kui kahekordistada Klõpsake programmi, ja see avab, 1206 00:58:46,630 --> 00:58:48,921 ja see avab mõned Wordi dokumenti või midagi sellist, 1207 00:58:48,921 --> 00:58:51,764 ta salvestab selle ajutiselt RAM, sest RAM on kiirem 1208 00:58:51,764 --> 00:58:53,680 kui arvuti kõvakettal või solid state disk. 1209 00:58:53,680 --> 00:58:56,600 Nii et see on just seal, kus programmid minna elada, kui nad töötavad, 1210 00:58:56,600 --> 00:58:58,060 või kui failid on kasutatud. 1211 00:58:58,060 --> 00:59:00,890 >> Nii et teil on asju, mis tunduvad niimoodi sees oma sülearvuti, 1212 00:59:00,890 --> 00:59:03,320 või veidi suuremad asjad sees oma töölauale. 1213 00:59:03,320 --> 00:59:07,440 Aga võti on sul on ainult hulga neid asju. 1214 00:59:07,440 --> 00:59:11,230 Ja seal on ainult piiratud kogus riistvara istub see laua paremale 1215 00:59:11,230 --> 00:59:11,730 siin. 1216 00:59:11,730 --> 00:59:15,920 >> Niisiis, kindlasti ei saa me hoida lõpmata kaua numbrid. 1217 00:59:15,920 --> 00:59:19,030 Ja veel, kui te arvate tagasi algkool, mitu numbrit ei 1218 00:59:19,030 --> 00:59:21,400 sa pead õige ühe koma? 1219 00:59:21,400 --> 00:59:24,680 Selles küsimuses, kui palju numbreid saab sul on vasakul koma? 1220 00:59:24,680 --> 00:59:26,300 Tõesti, lõpmata palju. 1221 00:59:26,300 --> 00:59:30,840 >> Nüüd inimesed saaksid üksnes tea, kuidas hääldada miljonit 1222 00:59:30,840 --> 00:59:34,990 ja miljard triljonit ja Kvadriljoona ja kvintiljon. 1223 00:59:34,990 --> 00:59:39,370 Ja ma surudes piirid minu understanding-- või minu-- ma aru 1224 00:59:39,370 --> 00:59:41,110 numbrid, kuid minu hääldust numbrid. 1225 00:59:41,110 --> 00:59:44,720 Aga nad saavad lõpmata suur koos lõpmata palju numbreid vasakule 1226 00:59:44,720 --> 00:59:47,050 või paremal koma. 1227 00:59:47,050 --> 00:59:50,040 >> Aga arvutid on ainult piiratud kogus mälu, 1228 00:59:50,040 --> 00:59:53,510 hulga transistorid, et hulga lambid sees. 1229 00:59:53,510 --> 00:59:57,350 Mis juhtub, kui sa ruum otsa? 1230 00:59:57,350 --> 00:59:59,620 Teisisõnu, kui te arvan, et tagasi eelmisel nädalal 1231 00:59:59,620 --> 01:00:03,160 kui me rääkisime numbrid ise esindab binaarne, 1232 01:00:03,160 --> 01:00:05,480 Oletame, et meil See 8-bitise väärtuses siin. 1233 01:00:05,480 --> 01:00:08,290 >> Ja meil on seitse 1-ja üks 0. 1234 01:00:08,290 --> 01:00:10,827 Ja oletame, et me tahame lisada 1 selle väärtust. 1235 01:00:10,827 --> 01:00:12,410 See on tõesti suur hulk praegu. 1236 01:00:12,410 --> 01:00:16,610 >> See on 254, kui ma mäletan matemaatika eelmisel nädalal õigus. 1237 01:00:16,610 --> 01:00:19,480 Aga mis siis, kui ma saan muuta et kõige parempoolsem 0 kuni 1? 1238 01:00:19,480 --> 01:00:22,800 Kogu numbri järgi Loomulikult saab kaheksa 1-. 1239 01:00:22,800 --> 01:00:24,050 Nii et me oleme ikka hea. 1240 01:00:24,050 --> 01:00:27,204 >> Ja et ilmselt esindab 255, kuigi sõltuvalt kontekstist 1241 01:00:27,204 --> 01:00:29,120 see võiks tegelikult esindavad negatiivse numbriga. 1242 01:00:29,120 --> 01:00:31,240 Aga sellest pikemalt mõni teine ​​kord. 1243 01:00:31,240 --> 01:00:34,220 See kõik tundub nii umbes koguni võin loota. 1244 01:00:34,220 --> 01:00:35,290 >> Nüüd on ainult 8 bitti. 1245 01:00:35,290 --> 01:00:38,170 Ja mu Mac, kindlasti, on viis rohkem kui 8 bitti mälu. 1246 01:00:38,170 --> 01:00:39,170 Aga see ei ole piiratud. 1247 01:00:39,170 --> 01:00:43,230 Nii sama argument kehtib ka siis, kui me rohkem neist need ekraanile. 1248 01:00:43,230 --> 01:00:47,020 >> Aga mis juhtub, kui sa oled ladustamiseks see number 255, 1249 01:00:47,020 --> 01:00:49,290 ja soovite loendada 1 natuke suurem? 1250 01:00:49,290 --> 01:00:51,600 Sa tahad minna 255-256. 1251 01:00:51,600 --> 01:00:55,800 Probleem on muidugi see, et kui sa alustada nullist nagu eelmisel nädalal, 1252 01:00:55,800 --> 01:00:59,670 sa ei saa loendada kui 256, rääkimata 257, 1253 01:00:59,670 --> 01:01:02,584 rääkimata 258 m, sest mida juhtub, kui lisada 1? 1254 01:01:02,584 --> 01:01:05,000 Kui sul vana algkool lähenemine, paned siia 1, 1255 01:01:05,000 --> 01:01:08,150 ja siis 1 pluss 1 on 2, kuid see on tegelikult null, siis kannavad 1 1256 01:01:08,150 --> 01:01:09,695 kanda 1, kanda 1. 1257 01:01:09,695 --> 01:01:12,620 Kõik need asjad, Nende 1-, lähevad nulli. 1258 01:01:12,620 --> 01:01:17,820 Ja sa likvideerida, jah, kui keegi märkis, 1 vasakul küljel. 1259 01:01:17,820 --> 01:01:22,540 Aga kõike saab tegelikult näha ja sobivad mälu 1260 01:01:22,540 --> 01:01:27,960 just kaheksa 0 tema, mis tähendab, mingil hetkel, kui sa, arvuti, 1261 01:01:27,960 --> 01:01:32,490 Üritasin lugedes piisavalt kõrge up, sa oled läheb ümbritsev tundub, 1262 01:01:32,490 --> 01:01:35,850 null või isegi negatiivne numbrid, mis on isegi madalam kui null. 1263 01:01:35,850 --> 01:01:37,260 >> Ja me saame sellist näha. 1264 01:01:37,260 --> 01:01:39,900 Lubage mul minna ja kirjutada tõeline kiire programm siin. 1265 01:01:39,900 --> 01:01:43,690 Lubage mul minna ja kirjutada programmi nimega voolata. 1266 01:01:43,690 --> 01:01:49,980 Kaasa CS50.h sisaldama standard IO.h-- oh, 1267 01:01:49,980 --> 01:01:51,730 Ma tõesti vastamata minu süntaksi esiletõstmine. 1268 01:01:51,730 --> 01:01:54,440 Nii saab salvestada seda overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> Ja nüüd int main void-- ja enne pikk, jagame 1270 01:01:57,084 --> 01:01:59,500 tagasi tulla, mis selgitab, miks hoiame kirjalikult int main void. 1271 01:01:59,500 --> 01:02:02,080 Aga nüüd, lähme lihtsalt teha see, enesestmõistetavalt. 1272 01:02:02,080 --> 01:02:06,200 Anname endale int, ja initsialiseerida see 0. 1273 01:02:06,200 --> 01:02:11,716 >> Olgem siis teha int i saada zero-- tegelikult, teeme lõputu silmuse 1274 01:02:11,716 --> 01:02:12,590 ja vaata, mis juhtub. 1275 01:02:12,590 --> 01:02:22,440 Kuigi tõsi, siis olgem välja trükkida n on protsenti i, backslash n, plug-in n. 1276 01:02:22,440 --> 01:02:27,200 Aga nüüd, teeme n saab n + 1. 1277 01:02:27,200 --> 01:02:29,660 >> Nii teisisõnu, iga iteratsiooni see lõputu silmuse, 1278 01:02:29,660 --> 01:02:32,550 Võtame n väärtus, ja lisage 1 sellele ja seejärel 1279 01:02:32,550 --> 01:02:34,350 salvesta tulemus tagasi n vasakul. 1280 01:02:34,350 --> 01:02:37,150 Ja tegelikult, me oleme näinud süntaks veidi nagu seda lühidalt. 1281 01:02:37,150 --> 01:02:39,730 Lahe trikk on selle asemel kirjalikult kõik selle läbi, 1282 01:02:39,730 --> 01:02:42,770 tegelikult võite öelda n pluss võrdub 1. 1283 01:02:42,770 --> 01:02:47,480 >> Või kui te tõesti tahate olla väljamõeldud, sa ei saa öelda, n pluss pluss semikooloniga. 1284 01:02:47,480 --> 01:02:50,130 Aga need kaks viimast on vaid mida me tahaks helistada süntaktiline suhkur 1285 01:02:50,130 --> 01:02:50,790 Esimest asi. 1286 01:02:50,790 --> 01:02:53,456 >> Esimene asi on selgem, täiesti trahvi, täiesti õige. 1287 01:02:53,456 --> 01:02:55,470 Aga see on rohkem levinud, ma ütlen. 1288 01:02:55,470 --> 01:02:57,210 Nii et me teeme seda hetkeks. 1289 01:02:57,210 --> 01:03:01,685 >> Olgem nüüd teha ülevoolu, mis kõlab üsna kurjakuulutav, dot kaldkriipsuga ülevoolu. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 Vaatame, n Läheb päris suur. 1292 01:03:09,852 --> 01:03:11,310 Aga mõtleme, kui suur saab n saada? 1293 01:03:11,310 --> 01:03:12,870 >> n on int. 1294 01:03:12,870 --> 01:03:16,400 Nägime hetk tagasi suurusele Näiteks, et int on neli baiti. 1295 01:03:16,400 --> 01:03:22,070 Me teame eelmisel nädalal neli baiti on 32 bitti, sest 8 korda 4, mis on 32. 1296 01:03:22,070 --> 01:03:23,460 See saab olema 4 miljardit. 1297 01:03:23,460 --> 01:03:25,802 >> Ja meil on kuni 800.000. 1298 01:03:25,802 --> 01:03:28,510 See saab võtta igaveseks loendada ma võib-olla saab. 1299 01:03:28,510 --> 01:03:30,635 Nii et ma lähen edasi minna, kui sa võiksid enne pikk, 1300 01:03:30,635 --> 01:03:34,910 tabas kontroll C- ausalt, Control C, palju, kus kontroll C üldiselt 1301 01:03:34,910 --> 01:03:36,034 vahenditega tühistada. 1302 01:03:36,034 --> 01:03:38,200 Kahjuks, sest see töötab pilve 1303 01:03:38,200 --> 01:03:41,190 mõnikord pilved on sülitada välja nii palju asju, 1304 01:03:41,190 --> 01:03:44,180 nii palju toodangut, see läheb võtta natuke aega minu panus 1305 01:03:44,180 --> 01:03:45,630 saada pilv. 1306 01:03:45,630 --> 01:03:49,240 Nii et kuigi ma tabanud Kontroll C mõni sekund tagasi, 1307 01:03:49,240 --> 01:03:53,110 See on kindlasti pool mõju lõputu silmuse. 1308 01:03:53,110 --> 01:03:56,070 >> Ja nii, et sellistel juhtudel, me oleme jäta see olla. 1309 01:03:56,070 --> 01:03:59,050 Ja me ei kavatse lisada veel terminaliaken siia 1310 01:03:59,050 --> 01:04:03,186 koos pluss, mis muidugi ei niimoodi, sest see on ikka mõelnud. 1311 01:04:03,186 --> 01:04:05,310 Ja olgem minna ja olla veidi enam mõistlik. 1312 01:04:05,310 --> 01:04:07,768 >> Ma lähen edasi minna ja teha See ainult Finitely mitu korda. 1313 01:04:07,768 --> 01:04:10,047 Kasutame jaoks silmus, mida ma vihjas varem. 1314 01:04:10,047 --> 01:04:10,630 Teeme ära. 1315 01:04:10,630 --> 01:04:13,430 Anna mulle veel muutuja int i saab 0. 1316 01:04:13,430 --> 01:04:17,430 i on väiksem kui oletame, 64 i ++. 1317 01:04:17,430 --> 01:04:24,010 Ja nüüd lubage mul minna ja print välja n protsenti i, koma n. 1318 01:04:24,010 --> 01:04:27,547 Ja siis n-- see on ikka aega võtab igavesti. 1319 01:04:27,547 --> 01:04:28,130 Teeme ära. 1320 01:04:28,130 --> 01:04:30,620 >> n saab n korda 2. 1321 01:04:30,620 --> 01:04:34,140 Või me võiks olla väljamõeldud ja teha korda võrdub 2. 1322 01:04:34,140 --> 01:04:37,120 Aga ütleme lihtsalt n võrdub ise korda 2. 1323 01:04:37,120 --> 01:04:39,321 Teisisõnu, selles uus versioon programmist, 1324 01:04:39,321 --> 01:04:41,820 Ma ei taha oodata igavesti alates nagu 800,000 kuni 4 miljardit eurot. 1325 01:04:41,820 --> 01:04:43,070 Lähme lihtsalt selle üle koos. 1326 01:04:43,070 --> 01:04:44,920 >> Olgem tegelikult topelt n iga kord. 1327 01:04:44,920 --> 01:04:47,660 Mis meenutavad, kahekordistumine on vastand võttes muidugi. 1328 01:04:47,660 --> 01:04:50,035 Ja arvestades, et eelmisel nädalal on meil midagi uuesti ja uuesti, 1329 01:04:50,035 --> 01:04:52,200 ja jälle, super kiire, kahekordistamine kindlasti 1330 01:04:52,200 --> 01:04:58,080 meid 1 kuni suurima võimaliku väärtus, et me võime loota, et koos int. 1331 01:04:58,080 --> 01:04:59,750 >> Nii saab seda täpselt. 1332 01:04:59,750 --> 01:05:01,720 Ja me tuleme tagasi selle enne pikk. 1333 01:05:01,720 --> 01:05:04,180 Aga see jällegi on nagu korduse ploki nullist. 1334 01:05:04,180 --> 01:05:05,600 Ja võite kasutada seda enne pikk. 1335 01:05:05,600 --> 01:05:10,170 >> See tähendab lihtsalt loota nullist kuni, kuid mitte võrdne, kuni 64. 1336 01:05:10,170 --> 01:05:14,285 Ja iga iteratsiooni Selle loop, muudkui incrementing i. 1337 01:05:14,285 --> 01:05:18,990 Nii i ++ - ja seda üldiselt ehitada real 7 on lihtsalt super levinum viis 1338 01:05:18,990 --> 01:05:22,290 korrata mõned read kood, mõned arv kordi. 1339 01:05:22,290 --> 01:05:23,362 Milline rida koodi? 1340 01:05:23,362 --> 01:05:25,570 Need looksulg, kui võis väita nüüd, 1341 01:05:25,570 --> 01:05:26,780 tähendab, tehke järgmist. 1342 01:05:26,780 --> 01:05:29,510 >> See on nagu Scratch, kui tal on kollane plokid 1343 01:05:29,510 --> 01:05:32,680 ja teised värvid sellist omaks või kallistada teisi plokke. 1344 01:05:32,680 --> 01:05:34,750 See, mida need lokkis traksid on siin teed. 1345 01:05:34,750 --> 01:05:40,200 Nii et kui ma sain oma süntaks right-- sa näen porgand sümbol C vahendid 1346 01:05:40,200 --> 01:05:42,706 see on mitu korda olin püüab lahendada seda probleemi. 1347 01:05:42,706 --> 01:05:45,330 Nii saab vabaneda, et üks kokku, ja selle akna sulgeda. 1348 01:05:45,330 --> 01:05:46,520 Ja me kasutame uuega. 1349 01:05:46,520 --> 01:05:51,980 Tee ülevoolu, dot kaldkriipsuga ülevoolu, Enter, kõik korras, 1350 01:05:51,980 --> 01:05:53,090 tundub halb alguses. 1351 01:05:53,090 --> 01:05:56,200 Kuid olgem kerida ajas tagasi, sest ma tegin seda 64 korda. 1352 01:05:56,200 --> 01:05:58,700 >> Ja teate esmakordselt n on 1. 1353 01:05:58,700 --> 01:06:03,110 Teiseks aeg, n on 2, siis 4, siis 8, siis 16. 1354 01:06:03,110 --> 01:06:09,450 Ja tundub, et niipea kui Ma saan umbes 1 miljard 1355 01:06:09,450 --> 01:06:12,800 kui ma seda kahekordistada jälle, et peaks mulle 2 miljardit. 1356 01:06:12,800 --> 01:06:14,980 Aga selgub, et see on õige Ots. 1357 01:06:14,980 --> 01:06:18,930 >> Ja nii see tegelikult ülevool int alates 1 miljard 1358 01:06:18,930 --> 01:06:23,514 ümmarguselt negatiivne 2 miljardit, sest täisarv, 1359 01:06:23,514 --> 01:06:25,430 Erinevalt numbrid me omandasid eelmisel nädalal 1360 01:06:25,430 --> 01:06:28,397 võib olla nii positiivne kui ka negatiivne tegelikkuses ja arvuti. 1361 01:06:28,397 --> 01:06:30,730 Ja nii vähemalt üks neist bitti on tegelikult varastatud. 1362 01:06:30,730 --> 01:06:34,190 Nii et me tõesti ainult 31 bitti, või 2 miljardit võimalikke väärtusi. 1363 01:06:34,190 --> 01:06:38,220 >> Aga nüüd, Buffee on üsna lihtsalt, mida iganes need numbrid 1364 01:06:38,220 --> 01:06:42,280 ja mida iganes matemaatika on midagi halba juhtub lõpuks 1365 01:06:42,280 --> 01:06:46,980 sest lõpuks sa üritad permute bitti liiga palju kordi. 1366 01:06:46,980 --> 01:06:51,060 Ja sa tegelikult minna kõik 1-äkki kõik 0-ndatel, või äkki 1367 01:06:51,060 --> 01:06:54,260 lihtsalt mõne muu mustriga, et see selgelt, olenevalt kontekstist, 1368 01:06:54,260 --> 01:06:56,342 võib tõlgendada kui negatiivset arvu. 1369 01:06:56,342 --> 01:06:59,300 Ja nii tundub kõrgeim ma võib loota selle konkreetse programmi 1370 01:06:59,300 --> 01:07:01,210 on ainult umbes 1 miljard. 1371 01:07:01,210 --> 01:07:02,760 Aga seal on osaline lahendus siin. 1372 01:07:02,760 --> 01:07:03,480 Tead mida? 1373 01:07:03,480 --> 01:07:07,600 >> Las ma muuta alates int pikk pikk. 1374 01:07:07,600 --> 01:07:10,633 Ja las ma minna siin ja say-- ma lähen 1375 01:07:10,633 --> 01:07:12,290 Selle muutmiseks allkirjastamata pikk. 1376 01:07:12,290 --> 01:07:16,860 Või vaatame, ma ei mäleta ise. 1377 01:07:16,860 --> 01:07:19,920 >> Lähme edasi ja teha ülevoolu. 1378 01:07:19,920 --> 01:07:21,860 Ei, see pole see, Libeeria, aitäh. 1379 01:07:21,860 --> 01:07:23,430 Nii et mõnikord rõkkama võib olla kasulik. 1380 01:07:23,430 --> 01:07:27,550 Ma ei mäleta, mis formaadis specifier oli pikka pikk. 1381 01:07:27,550 --> 01:07:28,950 >> Aga tõepoolest rõkkama ütles mulle. 1382 01:07:28,950 --> 01:07:31,570 Roheline on mingi hea, ikka tähendab, et sa tegid vea. 1383 01:07:31,570 --> 01:07:33,190 See on aim, et ma mõtlesin Libeeria. 1384 01:07:33,190 --> 01:07:38,750 >> Nii et lubage mul võtta seda nõuannet, pikk kaua kümnendnumbrina, salvestada et. 1385 01:07:38,750 --> 01:07:43,190 Ja andke mulle uuesti, see, dot kaldkriips ülevoolu, Enter. 1386 01:07:43,190 --> 01:07:45,020 Ja nüüd, mida on lahe on see. 1387 01:07:45,020 --> 01:07:49,140 >> Kui ma kerida ajas tagasi, me ikka alustada lugedes samal place-- 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Teade, saame kõiki viis kuni 1 miljard. 1390 01:07:54,860 --> 01:07:57,070 Aga siis me ohutult saada 2 miljardit. 1391 01:07:57,070 --> 01:08:01,300 >> Siis saame 4 miljardit, siis 8 miljardit, 17 miljardit. 1392 01:08:01,300 --> 01:08:03,340 Ja me läheme suurem ja suurem ja kõrgem. 1393 01:08:03,340 --> 01:08:05,740 Lõpuks ka see puruneb. 1394 01:08:05,740 --> 01:08:09,350 >> Lõpuks pika pikk, mis on 64-bitine väärtus, ei 1395 01:08:09,350 --> 01:08:13,660 32-bitine väärtus, kui loete liiga kõrge, siis ümbritsev 0. 1396 01:08:13,660 --> 01:08:16,410 Ja sel juhul, me juhtumisi lõpuks negatiivse numbriga. 1397 01:08:16,410 --> 01:08:17,550 >> Seega on see probleem. 1398 01:08:17,550 --> 01:08:20,439 Ja selgub, et see Probleem ei ole nii kauge. 1399 01:08:20,439 --> 01:08:23,060 Kuigi olen teadlikult tekitatud seda neid vigu, 1400 01:08:23,060 --> 01:08:26,149 Selgub näeme seda liiki kõik meie ümber, või vähemalt mõned meist teha. 1401 01:08:26,149 --> 01:08:28,939 >> Nii Lego Star Wars, kui olete kunagi mänginud mängu, 1402 01:08:28,939 --> 01:08:33,830 Selgub võid minna ümber purustamine asju LEGO maailma 1403 01:08:33,830 --> 01:08:36,640 ja koguda münte, sisuliselt. 1404 01:08:36,640 --> 01:08:39,200 Ja kui te olete kunagi mänginud Selles mängus liiga palju aega, 1405 01:08:39,200 --> 01:08:42,630 kuna see nimetu üksikud siin ei koguarv 1406 01:08:42,630 --> 01:08:46,700 müntide, et saate koguda on, tundub, 4 miljardit. 1407 01:08:46,700 --> 01:08:48,240 >> Nüüd, see on tegelikult ümardatud. 1408 01:08:48,240 --> 01:08:50,239 Nii LEGO üritasin hoida asjad kasutajasõbralik. 1409 01:08:50,239 --> 01:08:53,779 Nad ei teinud seda täpselt 2 32 võimu kohta eelmisel nädalal. 1410 01:08:53,779 --> 01:08:55,310 Aga 4 miljardit on põhjus. 1411 01:08:55,310 --> 01:08:58,979 Tundub, selle teabe põhjal, et LEGO ja ettevõtte, et 1412 01:08:58,979 --> 01:09:02,624 tegi selle tegelik tarkvara, otsustas et maksimaalne arv münte 1413 01:09:02,624 --> 01:09:04,540 kasutaja võib koguneda on tõepoolest 4 miljardit, 1414 01:09:04,540 --> 01:09:12,069 sest nad valisid oma koodi kasutada ei ole pikka ilmselt 1415 01:09:12,069 --> 01:09:16,140 aga lihtsalt täisarv, allkirjastamata täisarv, ainult positiivne täisarv, kelle 1416 01:09:16,140 --> 01:09:18,089 max väärtus on umbes nii. 1417 01:09:18,089 --> 01:09:19,380 Noh, siin on veel üks naljakas üks. 1418 01:09:19,380 --> 01:09:23,500 Nii mängu Civilization, mis mõned võite olla tuttav, kellel 1419 01:09:23,500 --> 01:09:26,660 Selgub, et aasta tagasi seal oli viga selles mängus, mille 1420 01:09:26,660 --> 01:09:28,750 kui sa mängisid rolli Gandhi mängu, 1421 01:09:28,750 --> 01:09:34,020 selle asemel, et teda on väga patsifist, selle asemel oli uskumatult, uskumatult 1422 01:09:34,020 --> 01:09:36,399 agressiivne mõningatel tingimustel. 1423 01:09:36,399 --> 01:09:40,529 Eriti nii, et Civilization teosed on see, et kui te, mängija, 1424 01:09:40,529 --> 01:09:44,680 vastu demokraatia, oma agressiivsus skoor läheb 1425 01:09:44,680 --> 01:09:48,130 decremented kahte, seega miinus miinus ja siis miinus miinus. 1426 01:09:48,130 --> 01:09:50,569 >> Nii et sa lahutama 2 alates oma tegelikku itereerimine. 1427 01:09:50,569 --> 01:09:56,650 Kahjuks, kui teie itereerimine on algselt 1 ja lahutad 2 saada 1428 01:09:56,650 --> 01:09:59,050 Pärast vastuvõtmist demokraatia nagu Gandhi siin võiks 1429 01:09:59,050 --> 01:10:02,200 teinud, sest ta oli väga passive-- 1 ulatuse kohta agressiivsus. 1430 01:10:02,200 --> 01:10:04,830 Aga kui ta võtab vastu demokraatia, siis ta läheb 1 kuni negatiivne 1. 1431 01:10:04,830 --> 01:10:11,470 >> Kahjuks nad olid kasutades allkirjastamata numbrid, 1432 01:10:11,470 --> 01:10:15,400 mis tähendab, et nad ravida isegi negatiivne numbreid, nagu nad olid positiivsed. 1433 01:10:15,400 --> 01:10:19,780 Ja selgub, et positiivne samaväärne negatiivne 1, 1434 01:10:19,780 --> 01:10:23,480 tüüpiline arvutiprogramme, on 255. 1435 01:10:23,480 --> 01:10:27,250 Nii et kui Gandhi vastu demokraatia ning seega on 1436 01:10:27,250 --> 01:10:32,470 tema agressiivsus skoor vähenes see tegelikult rullides ringi 255 1437 01:10:32,470 --> 01:10:35,470 ja teeb temast kõige agressiivse iseloomu mängus. 1438 01:10:35,470 --> 01:10:36,930 Nii saate Google üles selle. 1439 01:10:36,930 --> 01:10:39,380 Ja see oli tõepoolest juhusliku programmeerimine viga, 1440 01:10:39,380 --> 01:10:43,010 kuid mis on kantud üsna pärimuse ajast. 1441 01:10:43,010 --> 01:10:44,360 >> See on kõik tore ja armas. 1442 01:10:44,360 --> 01:10:47,760 Rohkem hirmutav on see, kui tegelik Reaalses maailmas seadmeid, mitte mänge 1443 01:10:47,760 --> 01:10:48,820 on need samad vead. 1444 01:10:48,820 --> 01:10:54,500 Tegelikult just aasta tagasi artikkel tuli välja umbes Boeing 787. 1445 01:10:54,500 --> 01:10:56,850 >> Ja artikli alguses lühidalt loeb natuke kauge. 1446 01:10:56,850 --> 01:11:01,480 Aga ta ütles seda, tarkvara haavatavust Boeingu 1447 01:11:01,480 --> 01:11:04,790 uus 787 Dreamliner jet on võivad põhjustada piloodid 1448 01:11:04,790 --> 01:11:07,220 kaotada kontrolli õhusõiduki, võimalusel 1449 01:11:07,220 --> 01:11:11,750 keskel lennu FAA ametnikud hoiatas lennufirmad viimasel ajal. 1450 01:11:11,750 --> 01:11:14,520 See oli määramist mis mudel 787 1451 01:11:14,520 --> 01:11:19,770 lennuk, mis on powered pidevalt 248 päeva 1452 01:11:19,770 --> 01:11:24,880 võivad kaotada kõik vahelduvvoolu, AC, elektrivoolu tõttu generaator 1453 01:11:24,880 --> 01:11:28,892 juhtseadmed, GCUs samaaegselt laskumist ei turvarežiimis. 1454 01:11:28,892 --> 01:11:29,850 See on selline mind kaotamas. 1455 01:11:29,850 --> 01:11:35,390 Aga teates oli märgitud, OK, nüüd ma sain selle, tingimus oli tingitud tarkvara 1456 01:11:35,390 --> 01:11:38,590 võidelda sisemise generaator kontrolli 1457 01:11:38,590 --> 01:11:44,860 üksused, mis ujutab pärast 248 päeva pidevat toidet. 1458 01:11:44,860 --> 01:11:47,070 Meil on välja käesoleva märgata, et vältida kadu 1459 01:11:47,070 --> 01:11:49,300 Kõigi vahelduvvoolu elektrivõimsust võim, mis võib põhjustada 1460 01:11:49,300 --> 01:11:50,980 kaotus kontrolli lennuki. 1461 01:11:50,980 --> 01:11:55,380 >> Niisiis, sõna otseses mõttes, on mingi täisarv, või samaväärsete andmete tüübi, 1462 01:11:55,380 --> 01:11:57,960 kasutatakse tarkvara tegelikus lennuk 1463 01:11:57,960 --> 01:12:00,756 et kui sa hoida oma lennuk piisavalt kaua, mis ilmselt 1464 01:12:00,756 --> 01:12:03,880 võib juhtuda siis, kui sa oled lihtsalt töötab neid pidevalt ja kunagi pistiku 1465 01:12:03,880 --> 01:12:06,810 Teie lennuk, tundub, või Lastes oma patareid surra, 1466 01:12:06,810 --> 01:12:09,840 lõpuks loeb üles ja üles, ja üles ja üles ja üles ja üles. 1467 01:12:09,840 --> 01:12:12,150 >> Ja olemuselt piiratud kogus mälu 1468 01:12:12,150 --> 01:12:15,880 ei uputa, nullib null või mõne negatiivse väärtusega, 1469 01:12:15,880 --> 01:12:19,920 kõrvalnähuna mis on hirmsa tõeline reaalsus 1470 01:12:19,920 --> 01:12:23,970 et lennuk võib olla vaja tuleb taaskäivitada, tõhusalt, 1471 01:12:23,970 --> 01:12:27,290 või võivad langeda, mis veel hullem, kui see lendab. 1472 01:12:27,290 --> 01:12:29,230 Nii selliseid küsimusi on endiselt meiega, 1473 01:12:29,230 --> 01:12:33,130 even-- see oli 2015. artiklit, enam hirmutav 1474 01:12:33,130 --> 01:12:36,100 Kui sul ei ole tingimata mõista, mõista, või ennetada 1475 01:12:36,100 --> 01:12:38,640 seda tüüpi vigu. 1476 01:12:38,640 --> 01:12:42,030 >> Nii selgub seal on üks teine Halb asi andmete esitamisel. 1477 01:12:42,030 --> 01:12:47,080 Selgub, et isegi ujukid on Selline ekslik, sest ujukite Ka 1478 01:12:47,080 --> 01:12:51,440 Pakkusin on 32 bitti või võibolla 64 kui kasutad topelt. 1479 01:12:51,440 --> 01:12:53,070 Aga see on ikka piiratud. 1480 01:12:53,070 --> 01:12:57,070 >> Ja saak on, et kui saate pane lõpmatu arv numbrid 1481 01:12:57,070 --> 01:12:59,460 pärast koma, ei ole nii, sa 1482 01:12:59,460 --> 01:13:02,690 võib esindada kõiki võimalikke numbrid, mis meile õpetati 1483 01:13:02,690 --> 01:13:04,990 algkool ei eksisteeri maailmas. 1484 01:13:04,990 --> 01:13:08,870 Arvuti sisuliselt peab valida alamhulk need numbrid 1485 01:13:08,870 --> 01:13:10,200 esindada täpselt. 1486 01:13:10,200 --> 01:13:12,450 >> Nüüd saab arvuti ringi võibolla natuke, 1487 01:13:12,450 --> 01:13:17,900 ja võimaldab teil umbes poest mis tahes arvu võite tahta. 1488 01:13:17,900 --> 01:13:20,940 Aga intuitiivselt, kui te on hulga bitti, 1489 01:13:20,940 --> 01:13:24,560 saab ainult permute neid nii palju piiratud võimalusi. 1490 01:13:24,560 --> 01:13:26,570 Nii et sa ei saa kuidagi kasutab lõplikku arvu 1491 01:13:26,570 --> 01:13:29,880 permutatsioon bittide, mustrid ühtede ja nullide, 1492 01:13:29,880 --> 01:13:32,940 esindada lõpmatu arvu numbrid, 1493 01:13:32,940 --> 01:13:37,370 mis viitab sellele, et arvutid võiks väga hästi olla pikali meile mõnikord. 1494 01:13:37,370 --> 01:13:38,770 >> Tegelikult teeme selle ära. 1495 01:13:38,770 --> 01:13:41,239 Lubage mul minna tagasi CS50 IDE. 1496 01:13:41,239 --> 01:13:43,030 Lubage mul minna ja luua väike programm 1497 01:13:43,030 --> 01:13:47,940 nimetatakse ebatäpsus, mis näitab, et arvutid on tõesti ebatäpne. 1498 01:13:47,940 --> 01:13:51,910 >> Ja las ma minna ja alustada mõned, et koodi enne, 1499 01:13:51,910 --> 01:13:53,830 ja nüüd lihtsalt teha järgmist. 1500 01:13:53,830 --> 01:14:03,640 Lubage mul minna ja teha printf, protsenti f, backslash n, 1 jagatud 10. 1501 01:14:03,640 --> 01:14:07,430 Teisisõnu, olgem sukelduda sügavamale 1/10, nagu 1 ja jagatud 10. 1502 01:14:07,430 --> 01:14:09,760 Kindlasti saab arvuti esindavad 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> Nii saab minna ja teha ebatäpsus. 1504 01:14:13,620 --> 01:14:14,390 Vaatame. 1505 01:14:14,390 --> 01:14:16,210 Formaat täpsustab Topelt. 1506 01:14:16,210 --> 01:14:18,160 Aga väide on int. 1507 01:14:18,160 --> 01:14:19,040 Mis toimub? 1508 01:14:19,040 --> 01:14:21,970 >> Oh, huvitav, nii et see on õppetund enne. 1509 01:14:21,970 --> 01:14:26,050 Ma räägin, hei, arvuti näidata mulle ujuki protsenti f. 1510 01:14:26,050 --> 01:14:28,200 Aga ma andes 2 ints. 1511 01:14:28,200 --> 01:14:31,120 Nii selgub, võin kinnitada Seda paar võimalust. 1512 01:14:31,120 --> 01:14:38,430 >> Ma võiks lihtsalt omakorda üks võetud 1,0 ja 10 arvesse 10,0, mis tõepoolest 1513 01:14:38,430 --> 01:14:42,390 mõjuda teisendades need floats-- ikka loodetavasti 1514 01:14:42,390 --> 01:14:43,180 sama number. 1515 01:14:43,180 --> 01:14:45,880 Või selgub, et midagi me näeme jälle enne pikk. 1516 01:14:45,880 --> 01:14:47,170 Sa võid enamus numbrid. 1517 01:14:47,170 --> 01:14:49,880 >> Võite kasutada seda Sulgudes väljendus, siis võib öelda, 1518 01:14:49,880 --> 01:14:52,560 hei, arvuti, seda 10, mis ma tean, on int. 1519 01:14:52,560 --> 01:14:54,660 Aga seda ravida, siis, nagu ta on sularahaga. 1520 01:14:54,660 --> 01:14:56,680 Aga see tundub põhjendamatult keeruline. 1521 01:14:56,680 --> 01:14:59,040 >> Meie eesmärkide täna olgem lihtsalt sõna otseses mõttes 1522 01:14:59,040 --> 01:15:02,700 tutvustab neid murdarve Kümnendkohaga, niimoodi. 1523 01:15:02,700 --> 01:15:07,060 Lubage mul minna ja kordamisega, teha ebatäpsuse, hea, dot kaldkriipsuga 1524 01:15:07,060 --> 01:15:08,870 ebatäpsuse, siseneda. 1525 01:15:08,870 --> 01:15:10,990 OK, ootame head. 1526 01:15:10,990 --> 01:15:18,194 >> 1 jagatud 10, vastavalt minu Mac siin on tõesti 0,100000. 1527 01:15:18,194 --> 01:15:21,360 Nüüd olin õpetanud algkool seal peaks olema lõpmatu arv 0 on. 1528 01:15:21,360 --> 01:15:23,151 Nii saab vähemalt proovida näha mõned neist. 1529 01:15:23,151 --> 01:15:26,770 Selgub, et printf on vähe Kasvataja veel, kui me olen kasutanud. 1530 01:15:26,770 --> 01:15:30,890 Selgub, sa ei pea täpsustada lihtsalt protsenti f, või lihtsalt protsenti i. 1531 01:15:30,890 --> 01:15:33,830 Võite tegelikult täpsustada teatud kontrolli võimalusi siin. 1532 01:15:33,830 --> 01:15:36,470 >> Täpsemalt, ma lähen öelda, hei, printf, 1533 01:15:36,470 --> 01:15:39,660 tegelikult näitab mulle 10 kohaga punkti. 1534 01:15:39,660 --> 01:15:40,820 Nii tundub natuke imelik. 1535 01:15:40,820 --> 01:15:42,845 Aga sa ütled protsenti, dot, mitu numbrit 1536 01:15:42,845 --> 01:15:44,970 soovite näha pärast koma ja siis f 1537 01:15:44,970 --> 01:15:48,340 korter, lihtsalt sellepärast, et see on Mis dokumendid ütleb. 1538 01:15:48,340 --> 01:15:50,080 Lubage mul minna ja päästa seda. 1539 01:15:50,080 --> 01:15:52,460 >> Ja teate ka, ma saan väsinud retyping asju. 1540 01:15:52,460 --> 01:15:55,900 Nii et ma olen lihtsalt seades üles ja noolt minu võtmed siin. 1541 01:15:55,900 --> 01:15:58,710 Ja kui ma saan pihta üles, saab näha kõiki käske 1542 01:15:58,710 --> 01:16:01,090 et ma tegin või valesti tehtud. 1543 01:16:01,090 --> 01:16:04,630 >> Ja ma lähen edasi minna praegu ja tegelikult ei kasuta, et ilmselt. 1544 01:16:04,630 --> 01:16:11,416 Tee ebatäpsus, dot kaldkriips imprecision-- nii 1545 01:16:11,416 --> 01:16:13,290 mida ma õpetanud algkool on korras. 1546 01:16:13,290 --> 01:16:19,010 Isegi kui ma printida kuni 10 kohaga asetab ta tõepoolest on 0,10000. 1547 01:16:19,010 --> 01:16:19,840 Aga tead mis? 1548 01:16:19,840 --> 01:16:21,150 >> Lähme natuke ahne. 1549 01:16:21,150 --> 01:16:23,990 Oletame, nagu näitavad mulle 55 juhib pärast koma. 1550 01:16:23,990 --> 01:16:26,160 Olgem tõesti seda programmeerida läbi spin. 1551 01:16:26,160 --> 01:16:31,170 Lubage mul uusversioon seda teha ebatäpsuse, dot kaldkriipsuga ebatäpsus. 1552 01:16:31,170 --> 01:16:32,390 >> Ja siin me läheme. 1553 01:16:32,390 --> 01:16:34,420 Teie lapsepõlve oli vale. 1554 01:16:34,420 --> 01:16:48,410 Ilmselt 1 jagatud 10 on tõepoolest 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> Mis toimub? 1556 01:16:49,740 --> 01:16:53,360 Noh, selgub, kui te sellist otsima piisavalt kaugele aluseks oleva 1557 01:16:53,360 --> 01:16:55,950 esindatuse seda number, siis tegelikult 1558 01:16:55,950 --> 01:17:00,400 ei ole just 10/01 või 0,1 ja lõpmatu arv nulle. 1559 01:17:00,400 --> 01:17:01,630 Nüüd, miks see nii on? 1560 01:17:01,630 --> 01:17:06,250 >> Noh, kuigi see on lihtne number meile inimestele, 1 jagatud 10, 1561 01:17:06,250 --> 01:17:10,910 see on ikka üks lõpmata palju numbrid, et me võiks mõelda. 1562 01:17:10,910 --> 01:17:14,490 Aga arvuti saab esindada ainult Finitely palju nii numbreid. 1563 01:17:14,490 --> 01:17:18,710 Ja nii efektiivselt, mida arvuti näitab meile on lähimate 1564 01:17:18,710 --> 01:17:22,940 ühtlustamise arvu tahame uskuda on 1/10, 1565 01:17:22,940 --> 01:17:27,760 või tõesti 0,10000 lõpmatuseni. 1566 01:17:27,760 --> 01:17:30,425 >> Pigem küll, see on nii lähedal kui saan. 1567 01:17:30,425 --> 01:17:32,300 Ja tõepoolest, kui te vaatate all kapuuts, 1568 01:17:32,300 --> 01:17:37,050 sest me oleme siin vaadates 55 numbrit pärast koma, 1569 01:17:37,050 --> 01:17:39,990 me tegelikult näha, et reaalsus. 1570 01:17:39,990 --> 01:17:42,610 Nüüd, kui kõrvale, kui olete kunagi näinud movie-- 1571 01:17:42,610 --> 01:17:45,780 enamik teist ilmselt haven't-- kuid Superman 3 mõned aastad tagasi 1572 01:17:45,780 --> 01:17:49,500 Richard Pryor sisuliselt võimendatud seda Tegelikkuses oma ettevõte varastada palju 1573 01:17:49,500 --> 01:17:53,500 fraktsioonide ja fraktsioonid penni, sest company-- nagu ma mäletan, 1574 01:17:53,500 --> 01:17:57,210 see on olnud while-- oli sisuliselt visata ära midagi, mis ei sobinud 1575 01:17:57,210 --> 01:17:58,790 sisse mõiste senti. 1576 01:17:58,790 --> 01:18:01,480 >> Aga kui sa küündivad kõik need väike, väike, väike numbrid uuesti 1577 01:18:01,480 --> 01:18:04,960 ja uuesti ja uuesti, saate, kui Tema puhul teha hea summa raha. 1578 01:18:04,960 --> 01:18:08,010 >> Sama idee oli ripitud maha Uuemas, kuid nüüd vanemad 1579 01:18:08,010 --> 01:18:10,500 filmi, mida nimetatakse kontoriruumid, kus poisid selles filmis, 1580 01:18:10,500 --> 01:18:13,501 tegi sama asja, keeras ta üles täielikult, sattus liiga palju 1581 01:18:13,501 --> 01:18:14,666 raha oma pangakontole. 1582 01:18:14,666 --> 01:18:15,800 See kõik oli väga kahtlane. 1583 01:18:15,800 --> 01:18:19,290 Aga lõpus päeval, ebatäpsus on kõikjal meie ümber. 1584 01:18:19,290 --> 01:18:22,240 >> Ja see võib samuti olla hirmsa puhul. 1585 01:18:22,240 --> 01:18:25,590 Selgub, et Superman 3 ja Office Space kõrvale, seal 1586 01:18:25,590 --> 01:18:28,460 võivad olla väga reaalne maailma harude 1587 01:18:28,460 --> 01:18:32,290 tegelikkusega ebatäpne esindatuse andmeid 1588 01:18:32,290 --> 01:18:34,770 et isegi meie, inimesed, et Sel päeval ei pruugi 1589 01:18:34,770 --> 01:18:38,230 mõista samuti peaksime või mäletan nii tihti, kui meil peaks. 1590 01:18:38,230 --> 01:18:42,950 Ja tõesti, järgmine klipp on alates mõningaid väga reaalse maailma 1591 01:18:42,950 --> 01:18:47,730 mõjusid, mis juhtub, kui sa ei mõista ebatäpsus, et 1592 01:18:47,730 --> 01:18:50,065 võib juhtuda numbrid esindatus. 1593 01:18:50,065 --> 01:18:51,300 >> [VIDEO PLAYBACK] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers, Me kõik oleme tulnud vastu sageli heidutav probleeme, mis 1595 01:18:55,620 --> 01:19:00,310 täie them-- vead, viirused, ja tarkvara tõrgete 1596 01:19:00,310 --> 01:19:03,130 väikeste hindadega maksma mugavuse. 1597 01:19:03,130 --> 01:19:07,800 Aga kõrgtehnoloogilise ja suure kiirusega sõjaväe ja kosmoseprogrammi rakendused 1598 01:19:07,800 --> 01:19:12,800 väikseim probleem võib suurendatakse sisse katastroof. 1599 01:19:12,800 --> 01:19:18,900 >> 4. juunil, 1996, teadlased valmis käivitada mehitamata Ariane 5 raketi. 1600 01:19:18,900 --> 01:19:21,220 See vedas teadusliku satelliidid, mille eesmärk 1601 01:19:21,220 --> 01:19:24,600 täpselt kindlaks, kuidas Maa magnetväljast suhtleb 1602 01:19:24,600 --> 01:19:27,410 kus päikesetuul. 1603 01:19:27,410 --> 01:19:30,800 Rakett ehitati Euroopa Kosmoseagentuuri 1604 01:19:30,800 --> 01:19:34,370 ja välja tõsta selle rajatise rannikul Prantsuse Guajaana. 1605 01:19:34,370 --> 01:19:37,540 >> -At Umbes 37 sekundit arvesse lend, nad esimest korda 1606 01:19:37,540 --> 01:19:39,270 märkas, et midagi on valesti. 1607 01:19:39,270 --> 01:19:42,250 Et pihustid olid pööramisega sisse viisil nad tegelikult ei tohiks. 1608 01:19:42,250 --> 01:19:46,580 Umbes 40 sekundit arvesse lendu On selge, et sõiduk oli hädas. 1609 01:19:46,580 --> 01:19:48,850 >> Ja siis nad tegid otsuse hävitada. 1610 01:19:48,850 --> 01:19:52,780 Vahemikus ohutuse ohvitser, kellel tohutu tahtejõud, vajutas nuppu, 1611 01:19:52,780 --> 01:19:58,150 õhku rakett, enne kui ta võiks saada ohtu inimeste ohutuse. 1612 01:19:58,150 --> 01:20:01,060 >> -See Oli neiu reisi Ariane 5. 1613 01:20:01,060 --> 01:20:03,960 Ja selle hävitamine võttis kuna selleks puudus 1614 01:20:03,960 --> 01:20:05,822 varjatud raketi tarkvara. 1615 01:20:05,822 --> 01:20:08,280 -The Probleem Ariane oli et seal oli see arv 1616 01:20:08,280 --> 01:20:10,600 vaja 64 bitti väljendada. 1617 01:20:10,600 --> 01:20:13,590 Ja nad tahtsid muuta see 16-bitine number. 1618 01:20:13,590 --> 01:20:15,610 Eeldati, et number oli kunagi 1619 01:20:15,610 --> 01:20:20,980 olema väga suur, et enamik neist numbrit 64-bitine arv oli nullidega. 1620 01:20:20,980 --> 01:20:22,440 Nad olid valed. 1621 01:20:22,440 --> 01:20:25,060 >> -The Võimetus ühe tarkvara vastu 1622 01:20:25,060 --> 01:20:29,510 selline number loodud teine ​​oli keskmes rike. 1623 01:20:29,510 --> 01:20:34,350 Tarkvara arendamine on saanud väga kulukas osa uue tehnoloogia. 1624 01:20:34,350 --> 01:20:38,140 Ariane raketi on olnud väga edukas, nii palju tarkvara 1625 01:20:38,140 --> 01:20:41,550 loodud see oli ka kasutatakse Ariane 5. 1626 01:20:41,550 --> 01:20:47,940 >> -The Põhiline probleem oli see, et Ariane 5 oli kiirem, kiirendatud kiiremini. 1627 01:20:47,940 --> 01:20:51,450 Ja tarkvara ei olnud moodustasid selle eest. 1628 01:20:51,450 --> 01:20:55,060 >> -The Hävitamine raketi oli suur rahaline katastroof, 1629 01:20:55,060 --> 01:20:58,790 kõik tingitud minut tarkvara viga. 1630 01:20:58,790 --> 01:21:01,210 Aga see ei olnud esimene aega andmete konverteerimise probleeme 1631 01:21:01,210 --> 01:21:04,820 oli vaevavad moodsa raketi tehnoloogia. 1632 01:21:04,820 --> 01:21:08,050 >> -Kui 1991. aastal alguse esimese Lahesõja, 1633 01:21:08,050 --> 01:21:10,570 Patriot rakettide kogenud Samalaadsed 1634 01:21:10,570 --> 01:21:12,800 arvu muundamise probleemi. 1635 01:21:12,800 --> 01:21:16,090 Ja tulemus 28 inimest, 28. Ameerika sõdurid, 1636 01:21:16,090 --> 01:21:19,080 tapeti ja umbes 100 teised haavatud, 1637 01:21:19,080 --> 01:21:22,780 kui Patriot, mis pidi kaitsta sissetulevad scuds, 1638 01:21:22,780 --> 01:21:25,830 ei tule rakett. 1639 01:21:25,830 --> 01:21:31,670 >> -Kui Iraak Kuveiti tungis ja Ameerikas käivitatud Desert Storm alguses 1991. aastal 1640 01:21:31,670 --> 01:21:35,780 Patriot rakettide patareid lähetati kaitsta Saudi Araabia ja Iisraeli 1641 01:21:35,780 --> 01:21:39,230 Iraagi Scud rakettide rünnakud. 1642 01:21:39,230 --> 01:21:43,810 Patriot on USA keskmaarakettide pinna õhku süsteemi, mis on valmistatud 1643 01:21:43,810 --> 01:21:45,770 poolt Raytheon ettevõte. 1644 01:21:45,770 --> 01:21:52,340 >> -The Suurus Patriot interceptor ise on umbes umbes 20 jalga pikk. 1645 01:21:52,340 --> 01:21:55,230 Ja see kaalub umbes 2000 naela. 1646 01:21:55,230 --> 01:21:59,320 Ja see viib lõhkepea umbes, Ma arvan, et see on umbes 150 naela. 1647 01:21:59,320 --> 01:22:03,930 Ja lõhkepea ise kõrge plahvatusohtlik, mis 1648 01:22:03,930 --> 01:22:07,330 on fragmendid ümber. 1649 01:22:07,330 --> 01:22:11,680 Korpust lõhkepea on mõeldud toimima nagu Jämejahu hallid. 1650 01:22:11,680 --> 01:22:14,110 >> -The Raketid on läbi nelja konteineri kohta, 1651 01:22:14,110 --> 01:22:17,130 ja veetakse poolhaagises. 1652 01:22:17,130 --> 01:22:24,930 >> -The Patriot raketitõrjesüsteemi ulatub vähemalt 20 aastat. 1653 01:22:24,930 --> 01:22:28,420 See oli algselt mõeldud kui õhutõrje rakettide 1654 01:22:28,420 --> 01:22:30,720 tulistada alla vaenlase lennukid. 1655 01:22:30,720 --> 01:22:34,500 Esimeses Lahesõjas, kui see sõda tuli mööda, 1656 01:22:34,500 --> 01:22:39,745 armee tahtis seda kasutada tulistama scuds, mitte lennukid. 1657 01:22:39,745 --> 01:22:43,620 >> Iraagi õhujõudude oli ei ole nii suur probleem. 1658 01:22:43,620 --> 01:22:46,670 Aga sõjaväes oli mures scuds. 1659 01:22:46,670 --> 01:22:50,170 Ja nii nad üritasid uuendada Patriot. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting Vaenlane rakett liigub mach 5 1661 01:22:52,800 --> 01:22:55,830 pidi olema raske piisavalt. 1662 01:22:55,830 --> 01:22:58,490 Aga kui Patriot oli kiirustades võetud, 1663 01:22:58,490 --> 01:23:02,860 armee ei olnud teadlik Iraagi muudatustest, mis tehakse 1664 01:23:02,860 --> 01:23:05,930 oma scuds peaaegu võimatu tabada. 1665 01:23:05,930 --> 01:23:10,740 >> -Mis Juhtus on scuds et olid tulemas olid ebastabiilsed. 1666 01:23:10,740 --> 01:23:11,692 Nad olid wobbling. 1667 01:23:11,692 --> 01:23:14,910 Selle põhjuseks oli iraaklastele, et 1668 01:23:14,910 --> 01:23:18,280 saada 600 kilomeetri välja 300 kilomeetri 1669 01:23:18,280 --> 01:23:21,700 vahemikus rakett, võttis kaal välja ees lõhkepea. 1670 01:23:21,700 --> 01:23:23,390 Nad tegid lõhkepea kergem. 1671 01:23:23,390 --> 01:23:27,330 >> Nüüd Patriot on püüab tulla juures Scud. 1672 01:23:27,330 --> 01:23:30,230 Ja enamus aega, Valdav enamus ajast, 1673 01:23:30,230 --> 01:23:32,940 see oleks lihtsalt lennata poolt Scud. 1674 01:23:32,940 --> 01:23:37,260 Kui Patriot haldurid realiseeritud Patriot oma eesmärki täitnud, 1675 01:23:37,260 --> 01:23:41,690 nad lõhkeda Patriot lõhkepea vältida võimalikke kaotusi kui see 1676 01:23:41,690 --> 01:23:44,570 lubati langevad maapinnale. 1677 01:23:44,570 --> 01:23:48,790 >> -See Oli see, mida enamik inimesi nägi, need suured fireballs taevas, 1678 01:23:48,790 --> 01:23:54,550 ja vääriti kui pealtkuulamist Scud lõhkepeade. 1679 01:23:54,550 --> 01:23:56,630 >> -Although Öösel taevas, patrioodid ilmunud 1680 01:23:56,630 --> 01:24:00,370 olema edukalt hävitades Scuds, kell Dhahran, 1681 01:24:00,370 --> 01:24:03,360 ei saa olla viga selle toimivuse. 1682 01:24:03,360 --> 01:24:07,970 Seal Patriot radarisüsteem kaotanud jälgida sissetuleva Scud, 1683 01:24:07,970 --> 01:24:10,721 ja kunagi käivitatud tõttu et tarkvara viga. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 See oli iisraellasi, kes esimesena avastas et enam süsteemi oli, 1686 01:24:18,940 --> 01:24:22,690 mida pikem on lahknevus sai tänu kella varjatud 1687 01:24:22,690 --> 01:24:24,810 süsteemis arvutisse. 1688 01:24:24,810 --> 01:24:28,210 >> -Umbes Kaks nädalat enne tragöödia Dhahran, 1689 01:24:28,210 --> 01:24:30,770 Iisraeli teatatud kaitseministeeriumil 1690 01:24:30,770 --> 01:24:32,590 et süsteem oli kaotamas aega. 1691 01:24:32,590 --> 01:24:35,360 Pärast umbes kaheksa tundi või töötab, nad märkasid, et süsteem 1692 01:24:35,360 --> 01:24:37,720 oli muutumas märgatavalt vähem täpne. 1693 01:24:37,720 --> 01:24:41,900 Riigikaitse osakond vastas ütleb kõik Patriot patareid 1694 01:24:41,900 --> 01:24:44,950 mitte lahkuda süsteemid kohta juba pikka aega. 1695 01:24:44,950 --> 01:24:49,160 Nad ei ole kunagi öelnud, mida pikka aega was-- kaheksa tundi, 10 tundi, 1000 tundi. 1696 01:24:49,160 --> 01:24:51,360 Keegi ei teadnud. 1697 01:24:51,360 --> 01:24:53,380 >> -The Patriot aku seisvad kasarmud 1698 01:24:53,380 --> 01:24:58,350 kell Dhahran ja selle vigane sisemine Kell oli olnud üle 100 tunni 1699 01:24:58,350 --> 01:25:01,670 ööl vastu 25. veebruar. 1700 01:25:01,670 --> 01:25:05,917 >> -See Jälgida aega täpsusega umbes kümnendiku sekundit. 1701 01:25:05,917 --> 01:25:08,000 Nüüd kümnendik teine on huvitav number, 1702 01:25:08,000 --> 01:25:11,920 kuna see ei saa väljendada binaarne täpselt, mis 1703 01:25:11,920 --> 01:25:16,820 tähendab seda ei saa täpselt modelleerida mis tahes kaasaegse digitaalse arvuti. 1704 01:25:16,820 --> 01:25:18,540 On raske uskuda. 1705 01:25:18,540 --> 01:25:21,210 >> Aga kasutada seda kui näidet. 1706 01:25:21,210 --> 01:25:23,540 Võtame number üks kolmandik. 1707 01:25:23,540 --> 01:25:27,350 Üks kolmandik ei saa väljendatud kohaga täpselt. 1708 01:25:27,350 --> 01:25:32,080 Üks kolmandik on 0,333 kestnud lõpmatuseni. 1709 01:25:32,080 --> 01:25:36,480 >> Ei ole nii teha, et absoluutne täpsus kohaga. 1710 01:25:36,480 --> 01:25:39,560 See on täpselt selline probleem mis juhtus Patriot. 1711 01:25:39,560 --> 01:25:44,100 Mida pikem on süsteem jooksis, siis hullem aeg viga sai. 1712 01:25:44,100 --> 01:25:48,890 >> -Pärast 100 töötunni, siis viga ajal oli ainult umbes üks kolmandik 1713 01:25:48,890 --> 01:25:50,600 sekundit. 1714 01:25:50,600 --> 01:25:54,210 Aga nii suunatud rakett liigub mach 5, 1715 01:25:54,210 --> 01:25:58,710 selle tulemuseks oli jälgimise viga üle 600 meetri. 1716 01:25:58,710 --> 01:26:02,120 Oleks saatuslik viga sõdurite kohta, mida 1717 01:26:02,120 --> 01:26:08,940 juhtus on Scud käivitamine oli avastatud varajase hoiatamise satelliiti 1718 01:26:08,940 --> 01:26:12,860 ja nad teadsid, et Scud oli tulevad oma üldise suuna. 1719 01:26:12,860 --> 01:26:15,320 Nad ei tea, kust see tuli. 1720 01:26:15,320 --> 01:26:18,250 >> -See Oli nüüd kuni radar komponent Patriot süsteemi 1721 01:26:18,250 --> 01:26:23,190 kaitsta Dhahran leida ja hoida jälgida sissetulevate vaenlane rakett. 1722 01:26:23,190 --> 01:26:24,609 >> -The Radar oli väga tark. 1723 01:26:24,609 --> 01:26:26,650 Oleks tegelikult jälgida asendit Scud, 1724 01:26:26,650 --> 01:26:30,350 ja siis ennustada, kus see ilmselt oleks järgmine kord radari saata 1725 01:26:30,350 --> 01:26:31,420 impulsi välja. 1726 01:26:31,420 --> 01:26:33,110 See kutsuti erinevaid värava. 1727 01:26:33,110 --> 01:26:37,660 >> -Siis, Kui Patriot otsustab piisavalt aega on 1728 01:26:37,660 --> 01:26:42,450 edasi minna tagasi ja vaadata järgmise asukoht selle avastatud objekt, 1729 01:26:42,450 --> 01:26:43,600 see läheb tagasi. 1730 01:26:43,600 --> 01:26:48,650 Nii et kui ta läks tagasi vale koht, seda siis ei näe objekti. 1731 01:26:48,650 --> 01:26:52,160 Ja ta otsustab, et ei ole objekt, see oli vale tuvastamise, 1732 01:26:52,160 --> 01:26:53,930 ja langeb teele. 1733 01:26:53,930 --> 01:26:57,030 >> -The Sissetulevad Scud kadus radari ekraanilt. 1734 01:26:57,030 --> 01:27:00,260 Ja sekundit hiljem, rammisid kasarmus. 1735 01:27:00,260 --> 01:27:06,150 Scud hukkus 28 ja viimane üks vallandati esimese Lahesõja. 1736 01:27:06,150 --> 01:27:11,960 >> Traagiliselt uuendatud tarkvara saabus Dhahran järgmisel päeval. 1737 01:27:11,960 --> 01:27:14,930 Tarkvara viga oli fikseeritud, sulgemine 1738 01:27:14,930 --> 01:27:19,806 üks peatükk rahutu ajalugu Patriot rakett. 1739 01:27:19,806 --> 01:27:20,729 >> [VIDEO PLAYBACK] 1740 01:27:20,729 --> 01:27:23,520 DAVID J. Humala: Nii et see on kõik öelda, et need küsimused ülevoolu 1741 01:27:23,520 --> 01:27:25,860 ja ebatäpsus on liiga reaalne. 1742 01:27:25,860 --> 01:27:26,920 Nii et kuidas me saame siin? 1743 01:27:26,920 --> 01:27:28,895 Meil algas räägi printf. 1744 01:27:28,895 --> 01:27:31,270 Ka see funktsioon, mis trükib midagi ekraanil, 1745 01:27:31,270 --> 01:27:33,450 ja me hiljem kehtestada mõned muud funktsioonid 1746 01:27:33,450 --> 01:27:34,945 alates nn CS50 raamatukogu. 1747 01:27:34,945 --> 01:27:36,910 Ja jätkame vaata neid õigel ajal. 1748 01:27:36,910 --> 01:27:40,760 Ja meie, eriti, kasutatud get string, ja saada int, ja nüüd ka saada float, 1749 01:27:40,760 --> 01:27:44,410 ja veel teised ikka kohtame ja kasutada end enne pikk. 1750 01:27:44,410 --> 01:27:47,220 >> Aga mõnikord, on me juba näinud vajadust 1751 01:27:47,220 --> 01:27:50,520 talletada, mida need funktsioonid poolt tagasi? 1752 01:27:50,520 --> 01:27:52,920 Nad käsi meid tagasi string või int või float. 1753 01:27:52,920 --> 01:27:56,070 Ja mõnikord peame panema, et string või int või float, kusagil. 1754 01:27:56,070 --> 01:28:00,100 >> Ja salvestada neid asju, meenutavad vaid nagu Scratch, meil on muutujad. 1755 01:28:00,100 --> 01:28:03,260 Kuid erinevalt Scratch, C on meil tegelik tüüpi 1756 01:28:03,260 --> 01:28:05,530 ning variables-- andmeid tüüpi, rohkem generally-- 1757 01:28:05,530 --> 01:28:08,640 nende seas, string, int, et float, ja need teised ikka. 1758 01:28:08,640 --> 01:28:12,321 >> Ja nii kui me kinnitame muutujad C, me peame kuulutada meie andmetüüpe. 1759 01:28:12,321 --> 01:28:14,820 See ei ole midagi, jagame pead tegema hiljem semestri 1760 01:28:14,820 --> 01:28:16,810 nagu me üleminek teistesse keeltesse. 1761 01:28:16,810 --> 01:28:19,610 Aga nüüd, me peame to a priori ette, 1762 01:28:19,610 --> 01:28:24,370 selgitada arvuti, mis tüüpi Muutuva me tahame seda meile. 1763 01:28:24,370 --> 01:28:27,290 >> Nüüd, vahepeal printida sellist liiki andmete liigid, 1764 01:28:27,290 --> 01:28:29,570 meil öelda printf mida oodata. 1765 01:28:29,570 --> 01:28:32,450 Ja me nägime protsenti s keelpillidele, ja protsenti i jaoks täisarvud, 1766 01:28:32,450 --> 01:28:33,790 ja mõned teised juba. 1767 01:28:33,790 --> 01:28:37,237 Ja need on lihtsalt nõuded visuaalse esitluse 1768 01:28:37,237 --> 01:28:38,070 Nimetatud teabe. 1769 01:28:38,070 --> 01:28:42,080 >> Ja kõik need olla tegelikult parametriseerisin või tweaked mingil viisil, 1770 01:28:42,080 --> 01:28:45,370 Kui soovite täiendavaks kontrollimiseks tüüpi väljund, mis sa saad. 1771 01:28:45,370 --> 01:28:49,604 Ja tegelikult, selgub, et mitte ainult on olemas backslash n uut liini. 1772 01:28:49,604 --> 01:28:52,520 Seal on midagi muud nn backslash r reavahetuse, mis 1773 01:28:52,520 --> 01:28:54,360 on sarnaneda rohkem vana kooli kirjutusmasina 1774 01:28:54,360 --> 01:28:57,690 ja ka Windows kasutatud juba aastaid. 1775 01:28:57,690 --> 01:28:59,690 >> Seal backslash t kaartidele. 1776 01:28:59,690 --> 01:29:03,170 Selgub, et kui sa tahad topeltjutumärkide sees string 1777 01:29:03,170 --> 01:29:05,000 Tuletame meelde, et oleme kasutanud topeltjutumärkide topelt 1778 01:29:05,000 --> 01:29:07,900 tsitaat vasakul ja paremal lõpeb meie stringid siiani. 1779 01:29:07,900 --> 01:29:09,420 See tundub segadusse asju. 1780 01:29:09,420 --> 01:29:12,503 >> Kui sa tahad panna jutumärgid sisse keset string-- ja tegelikult 1781 01:29:12,503 --> 01:29:13,670 see on segane näha. 1782 01:29:13,670 --> 01:29:17,120 Ja et sa pead põgeneda, nii et rääkida, jutumärke midagi 1783 01:29:17,120 --> 01:29:18,860 nagu, sõna otseses mõttes, kurakaldkriipsuga jutumärke. 1784 01:29:18,860 --> 01:29:20,230 Ja seal on mõned muud veel. 1785 01:29:20,230 --> 01:29:24,540 Ja me näeme rohkem neid, Tegelikus kasutuses enne pikk. 1786 01:29:24,540 --> 01:29:27,930 >> Nii saab nüüd üleminek andmed ja esindamine, 1787 01:29:27,930 --> 01:29:30,820 ja aritmeetika operaatorite kõik mis andis meile mõned hoone 1788 01:29:30,820 --> 01:29:32,070 plokid, kellega mängida. 1789 01:29:32,070 --> 01:29:34,481 Aga nüüd lähme tegelikult annab Meie ülejäänud sõnavara 1790 01:29:34,481 --> 01:29:36,230 et meil oli juba Viimase nädala Scratch 1791 01:29:36,230 --> 01:29:39,350 võttes pilk mõned teised konstruktide C- mitte kõik neist. 1792 01:29:39,350 --> 01:29:41,680 Aga ideid me oleme umbes, et näha tõesti ainult 1793 01:29:41,680 --> 01:29:45,610 rõhutada tõlge ühes keeles, Scratch, teise, C. 1794 01:29:45,610 --> 01:29:48,470 >> Ja aja jooksul, me kiirenemist rohkem vahendeid meie tööriistakomplekt, 1795 01:29:48,470 --> 01:29:49,820 niiöelda süntaktiliselt. 1796 01:29:49,820 --> 01:29:54,190 Ja tõepoolest, näete, et ideed nüüd pigem tuttav eelmisel nädalal. 1797 01:29:54,190 --> 01:29:55,200 Nii teeme seda. 1798 01:29:55,200 --> 01:29:58,870 >> Lähme edasi ja klopsima programmi et tegelikult kasutab mõned väljendid, 1799 01:29:58,870 --> 01:30:00,720 Boole'i ​​väljendus. 1800 01:30:00,720 --> 01:30:02,810 Lubage mul minna siin ja luua uus fail. 1801 01:30:02,810 --> 01:30:06,090 Ma nimetan seda condition.c. 1802 01:30:06,090 --> 01:30:09,350 >> Lubage mul minna ja sisaldama CS50 raamatukogu. 1803 01:30:09,350 --> 01:30:12,640 Ja las ma minna ja lisada standard IO.h meie funktsioonid, 1804 01:30:12,640 --> 01:30:14,690 ja printf ja rohkem võrra. 1805 01:30:14,690 --> 01:30:18,900 Annan endale, et stereotüüp on int main void, kelle selgituse jagame 1806 01:30:18,900 --> 01:30:20,360 tagasi tulla tulevikus. 1807 01:30:20,360 --> 01:30:23,820 >> Nüüd lubage mul minna ja anda mina int kaudu get int. 1808 01:30:23,820 --> 01:30:25,970 Siis lase mul minna ja seda teha. 1809 01:30:25,970 --> 01:30:30,150 Ma tahan öelda, kui ma ei less-- olgem eristada positiivne, negatiivne 1810 01:30:30,150 --> 01:30:31,260 või null väärtused. 1811 01:30:31,260 --> 01:30:36,630 >> Nii et kui ma on väiksem kui null, lase mind lihtsalt see programm lihtsalt öelda, 1812 01:30:36,630 --> 01:30:42,370 negatiivne, backslash n, teine kui i on suurem kui null. 1813 01:30:42,370 --> 01:30:47,030 Nüüd ma muidugi ei ütle printf positiivne, backslash n. 1814 01:30:47,030 --> 01:30:50,690 Ja siis teine ​​kui-- ma võiks seda teha. 1815 01:30:50,690 --> 01:30:53,410 >> Ma võiks teha, kui ma võrdub 0. 1816 01:30:53,410 --> 01:30:55,840 Aga ma oleksin tegemisel Vähemalt üks viga juba. 1817 01:30:55,840 --> 01:30:59,480 Tuletame meelde, et võrdusmärki on ei ole võrdsed, sest meie, inimesed teavad seda. 1818 01:30:59,480 --> 01:31:01,010 >> Aga see on omistamisoperaatorile. 1819 01:31:01,010 --> 01:31:05,640 Ja me ei taha võtta 0 kohta õige ja pane see i vasakul. 1820 01:31:05,640 --> 01:31:11,810 Nii Selle vältimiseks või võibolla väärkasutamise võrdusmärki, 1821 01:31:11,810 --> 01:31:14,740 Inimestel otsustas mõned aastad tagasi et paljudes programmeerimiskeeltes 1822 01:31:14,740 --> 01:31:18,000 kui soovite kontrollida võrdsust vahel vasakul ja paremal, 1823 01:31:18,000 --> 01:31:19,635 sa tegelikult kasutada võrdne võrdsete. 1824 01:31:19,635 --> 01:31:21,010 Nii et sa tabanud võrdusmärgi kaks korda. 1825 01:31:21,010 --> 01:31:25,600 Kui soovite määrata paremalt vasakule, saate ühe võrdusmärk. 1826 01:31:25,600 --> 01:31:29,360 Nii et me võiks teha see-- mujal kui i võrdub võrdub nulliga. 1827 01:31:29,360 --> 01:31:31,710 >> Ma võiks siis minna ja avada minu looksulg, 1828 01:31:31,710 --> 01:31:36,087 ja öelda, printf 0, backslash n, tehtud. 1829 01:31:36,087 --> 01:31:38,170 Kuid pidage meeles, kuidas need kahvlid maantee saab tööd. 1830 01:31:38,170 --> 01:31:39,836 Ja tõesti, mõelge loogika. 1831 01:31:39,836 --> 01:31:41,510 i on mitmeid. 1832 01:31:41,510 --> 01:31:43,320 On täisarv, konkreetselt. 1833 01:31:43,320 --> 01:31:48,600 Ja see tähendab, et see saab olema vähem kui 0 või suurem kui 0 või 0. 1834 01:31:48,600 --> 01:31:51,600 Seega on selline see kaudsete vaikimisi juhul. 1835 01:31:51,600 --> 01:31:54,920 >> Ja nii me võiks lihtsalt meeldib Scratch, loobuda muud kui, 1836 01:31:54,920 --> 01:31:55,747 ja lihtsalt öelda muud. 1837 01:31:55,747 --> 01:31:57,830 Loogiliselt, kui teile programmeerija teada, seal on ainult 1838 01:31:57,830 --> 01:32:01,635 kolm ämbrid, kuhu stsenaarium võib fall-- esimene, 1839 01:32:01,635 --> 01:32:03,510 Teise või kolmanda Selles case-- ei 1840 01:32:03,510 --> 01:32:07,100 viitsinud lisada täiendavaid täpsusega ja täiendavad loogika seal. 1841 01:32:07,100 --> 01:32:09,690 Lihtsalt edasi minna Vaikimisi juhul on mujal. 1842 01:32:09,690 --> 01:32:11,950 >> Nüüd saab minna pärast selle salvestamist, teha 1843 01:32:11,950 --> 01:32:15,760 tingimused dot kaldkriips conditions-- ei ole suur kasutajaliides, 1844 01:32:15,760 --> 01:32:18,914 sest ma ei ajendades kasutaja, nagu varem mainisin. 1845 01:32:18,914 --> 01:32:19,580 Aga see on hea. 1846 01:32:19,580 --> 01:32:20,454 Hoiame seda lihtne. 1847 01:32:20,454 --> 01:32:21,890 Proovime number 42. 1848 01:32:21,890 --> 01:32:23,240 Ja see on positiivne. 1849 01:32:23,240 --> 01:32:26,120 Proovime arv negatiivne 42, negatiivne. 1850 01:32:26,120 --> 01:32:28,244 >> Proovime väärtus 0. 1851 01:32:28,244 --> 01:32:29,160 Ja tõepoolest, see toimib. 1852 01:32:29,160 --> 01:32:33,900 Nüüd näete probleeme enne kaua, katsetamine asju kolm korda 1853 01:32:33,900 --> 01:32:34,980 ilmselt ei piisa. 1854 01:32:34,980 --> 01:32:37,438 Sa ilmselt tahad katsetada mõningaid suurem number, mõned väiksemad 1855 01:32:37,438 --> 01:32:40,520 numbrid, mõnes nurgas juhtudel, kui tuleme neid kirjeldada. 1856 01:32:40,520 --> 01:32:42,500 >> Aga nüüd, et see on päris lihtne programm. 1857 01:32:42,500 --> 01:32:45,160 Ja ma olen päris kindel, loogiliselt, et ta kuulub kolm juhtumit. 1858 01:32:45,160 --> 01:32:49,360 Ja tõepoolest, kuigi me lihtsalt keskendunud võimalike negatiivsete 1859 01:32:49,360 --> 01:32:53,480 ebatäpsust ja ülevoolu, in Tegelikkuses kus paljud CS50 probleeme, 1860 01:32:53,480 --> 01:32:56,000 me ei muretse umbes, kogu aeg, 1861 01:32:56,000 --> 01:32:59,050 neid küsimusi ülevoolu ja laialivalguvus, sest tegelikult in C, 1862 01:32:59,050 --> 01:33:01,889 see on tegelikult mitte kõik, et lihtne vältida neid asju. 1863 01:33:01,889 --> 01:33:04,180 Kui soovite loendada üles suurem ja suurem, ja suurem, 1864 01:33:04,180 --> 01:33:07,510 Selgub on tehnikat saab kasutada, mis tihti hõlmavad asju nimetatakse 1865 01:33:07,510 --> 01:33:11,240 raamatukogud, kogud kood, mis teised inimesed kirjutasid, mida saab kasutada, 1866 01:33:11,240 --> 01:33:13,910 ja teiste keeltega, nagu Java ja teised, tegelikult 1867 01:33:13,910 --> 01:33:15,800 teha palju lihtsam loota isegi suurem. 1868 01:33:15,800 --> 01:33:19,810 Nii see tõesti on mõned neist ohtudest funktsioon keelt kasutada. 1869 01:33:19,810 --> 01:33:22,710 Ja lähinädalatel, jagame vaata, kui ohtlik C tõesti 1870 01:33:22,710 --> 01:33:24,950 võib olla, kui sa ei kasuta seda korralikult. 1871 01:33:24,950 --> 01:33:27,610 Aga sealt, ja Python ja JavaScript, siis 1872 01:33:27,610 --> 01:33:32,620 me kihina täiendavat kaitset, ja kestab vähem on neid riske. 1873 01:33:32,620 --> 01:33:35,820 >> Nii saab teha natuke rohkem Huvitav loogika meie programmi. 1874 01:33:35,820 --> 01:33:39,110 Nii et lubage mul minna ja luua programmi nimega Loogiline 1875 01:33:39,110 --> 01:33:43,804 lihtsalt et ma saaks mängida mõned tegelikku loogikat, logical.c. 1876 01:33:43,804 --> 01:33:46,870 Ma lihtsalt kopeeri ja kleebi mõned koodi varasemate nii et ma saan tagasi 1877 01:33:46,870 --> 01:33:49,950 Selle kena lähtepunkt. 1878 01:33:49,950 --> 01:33:53,980 >> Las ma seekord teha char C. Ma annan talle nime C 1879 01:33:53,980 --> 01:33:58,510 lihtsalt sellepärast, et see on tavalised, saada iseloomu kasutaja. 1880 01:33:58,510 --> 01:34:00,730 Ja olgem teeselda, nagu Ma rakendamise osas 1881 01:34:00,730 --> 01:34:04,130 Selle Rm programmi eemaldada Programm enne seda küsitakse kasutaja 1882 01:34:04,130 --> 01:34:05,400 eemaldada faili. 1883 01:34:05,400 --> 01:34:06,750 Kuidas me seda teeme? 1884 01:34:06,750 --> 01:34:11,090 >> Ma tahan öelda, kui C võrdub võrdub, tsitaat lõppeb, 1885 01:34:11,090 --> 01:34:16,304 y, siis ma lähen eeldada et kasutaja on valinud jah. 1886 01:34:16,304 --> 01:34:17,470 Ma lihtsalt printida jah. 1887 01:34:17,470 --> 01:34:19,440 Kui see tegelikult kirjalikult eemaldamise programmi 1888 01:34:19,440 --> 01:34:21,420 me võiks eemaldada faili rohkem rida koodi. 1889 01:34:21,420 --> 01:34:22,461 Aga me hoiame see lihtne. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> Või kui c võrdub võrdub n-- ja nüüd siin, ma lähen öelda, 1892 01:34:31,250 --> 01:34:32,980 Kasutaja peab olema tähendas ole. 1893 01:34:32,980 --> 01:34:34,360 Ja siis teine, tead mis? 1894 01:34:34,360 --> 01:34:36,200 Ma ei tea, mida veel kasutaja saab sisestada. 1895 01:34:36,200 --> 01:34:38,533 Nii et ma lihtsalt ütlen, et mis on viga, mida iganes 1896 01:34:38,533 --> 01:34:40,070 ta tegelikult kirjutada. 1897 01:34:40,070 --> 01:34:41,180 >> Mis siin toimub? 1898 01:34:41,180 --> 01:34:44,530 Seal on põhimõtteline erinevus versus mida ma olen teinud varem. 1899 01:34:44,530 --> 01:34:49,300 Double hinnapakkumisi, jutumärgid, topelt hinnapakkumisi, ja veel, ülakoma, 1900 01:34:49,300 --> 01:34:50,170 ülakoma. 1901 01:34:50,170 --> 01:34:52,860 Selgub, C, et kui soovite kirjutada string, 1902 01:34:52,860 --> 01:34:56,680 sa kasutada jutumärkide, just nagu me oleme kasutanud kogu aeg koos printf. 1903 01:34:56,680 --> 01:35:02,030 >> Aga kui sa tahad tegeleda vaid Ühe märgi nn paalia, 1904 01:35:02,030 --> 01:35:03,780 siis tegelikult kasutada ülakoma. 1905 01:35:03,780 --> 01:35:05,450 Neile, kes pole programmeeritud Enne, siis ei pruugi olla 1906 01:35:05,450 --> 01:35:07,850 pidid muretsema selle vahet teatud keeltes. 1907 01:35:07,850 --> 01:35:09,450 In C, see asi. 1908 01:35:09,450 --> 01:35:12,560 Ja nii kui ma saan char ja ma tahan võrrelda, et char kasutades võrdsete 1909 01:35:12,560 --> 01:35:18,350 võrdub mõned kirja nagu y või n, ma teen, tõepoolest, peab olema ülakoma. 1910 01:35:18,350 --> 01:35:19,770 >> Nüüd saab minna ja seda teha. 1911 01:35:19,770 --> 01:35:26,180 Lähme edasi ja ei tee loogiline dot kaldkriips loogiline. 1912 01:35:26,180 --> 01:35:27,305 Ja nüüd ma küsimata. 1913 01:35:27,305 --> 01:35:30,638 Niisiis, arvatavasti parem kasutaja kogemus tegelikult mulle öelda, mida teha siin. 1914 01:35:30,638 --> 01:35:33,030 Aga ma lähen lihtsalt pimesi öelda, y jah, OK, kena. 1915 01:35:33,030 --> 01:35:35,780 >> Laseme selle uuesti, n ilma, kena. 1916 01:35:35,780 --> 01:35:39,610 Oletame näiteks teatud inimesed, keda ma tean, minu suurtähelukuks on liiga sageli. 1917 01:35:39,610 --> 01:35:43,740 Nii ma kapitali Y, sisestada viga. 1918 01:35:43,740 --> 01:35:46,130 OK, see ei ole täpselt, mida ma oodanud. 1919 01:35:46,130 --> 01:35:48,170 Tõepoolest, arvuti teeb sõna otseses mõttes, mida 1920 01:35:48,170 --> 01:35:51,794 Ma ütlesin, et see do-- kontrollida väiketähed y ja väiketähed n. 1921 01:35:51,794 --> 01:35:53,960 See ei tunne hea kasutaja kogemus, kuigi. 1922 01:35:53,960 --> 01:35:59,010 Lubage mul küsida ja võtta vastu kas väiketähed või suurtähtedega. 1923 01:35:59,010 --> 01:36:02,090 Nii selgub, võiksite öelda midagi Scratch, 1924 01:36:02,090 --> 01:36:08,150 nagu sõna otseses mõttes või C võrdub võrdub kapitali ühe tsiteeritud y. 1925 01:36:08,150 --> 01:36:11,400 Selgub, C ei ole sõnasõnaline märksõna või. 1926 01:36:11,400 --> 01:36:12,880 >> Aga see ei ole püsttriipudele. 1927 01:36:12,880 --> 01:36:15,463 Sa pead hoida Shift tavaliselt, kui te kasutate USA klaviatuur, 1928 01:36:15,463 --> 01:36:18,910 tabas püstribale võtme üle oma klahvi Enter. 1929 01:36:18,910 --> 01:36:22,410 Aga see püstribale vertikaalne riba näitab või. 1930 01:36:22,410 --> 01:36:26,220 >> Kui seevastu tahtsime öelda ja nagu Scratch, 1931 01:36:26,220 --> 01:36:28,180 me võiks teha ampersand ampersand. 1932 01:36:28,180 --> 01:36:31,330 See teeb mingit loogilist mõtet siin sest inimene ei saanud 1933 01:36:31,330 --> 01:36:37,110 on kirjutatud nii y ja väiketähed y ja kapitali Y sama iseloomuga. 1934 01:36:37,110 --> 01:36:39,470 Nii või on see, mida me kavatseme siin. 1935 01:36:39,470 --> 01:36:46,280 >> Nii et kui ma seda mõlemas kohas või c võrdub võrdub kapitali N, nüüd uuesti,, 1936 01:36:46,280 --> 01:36:49,390 teevad loogiline, uuesti, loogiline. 1937 01:36:49,390 --> 01:36:51,200 Nüüd saab kirjutada y. 1938 01:36:51,200 --> 01:36:53,920 Ja ma ei saa seda teha jälle kapitali Y või kapitali N. 1939 01:36:53,920 --> 01:36:56,630 Ja ma saaks lisada täiendavaid kombinatsioonid ikka. 1940 01:36:56,630 --> 01:36:58,810 >> Seega on see loogiline programmi, kuivõrd nüüd 1941 01:36:58,810 --> 01:37:01,940 Ma kontrollin loogiliselt Selle väärtuse või selle väärtuse. 1942 01:37:01,940 --> 01:37:06,420 Ja ma ei pea ilmtingimata, tulla veel kaks-sid või siis ifs. 1943 01:37:06,420 --> 01:37:09,960 Ma ei saa tegelikult ühendada teatud seotud loogika koos sel viisil. 1944 01:37:09,960 --> 01:37:11,950 Nii et see oleks parem kujundatud kui lihtsalt 1945 01:37:11,950 --> 01:37:17,490 öeldes, kui C võrdub väiketähti y, printida jah, muidu, kui c on võrdne kapitali Y, 1946 01:37:17,490 --> 01:37:20,074 printida jah, muidu kui c võrdub lower-- teisisõnu 1947 01:37:20,074 --> 01:37:21,990 sa ei pea olema rohkem oksad. 1948 01:37:21,990 --> 01:37:28,840 Võite kombineerida mõne samaväärse oksad loogiliselt, kuna sel viisil. 1949 01:37:28,840 --> 01:37:34,150 >> Võtame pilk vaid üks viimane komponent, üks lõppkonstruktis 1950 01:37:34,150 --> 01:37:34,847 et C lubab. 1951 01:37:34,847 --> 01:37:36,930 Ja me tuleme tagasi tulevikus teised ikka. 1952 01:37:36,930 --> 01:37:41,400 Ja siis me järeldada vaadates kell ei õigsuse code-- 1953 01:37:41,400 --> 01:37:46,070 saada koodi work-- kuid projekti koodi ning istutada need seemned varakult. 1954 01:37:46,070 --> 01:37:51,337 >> Nii et lubage mul minna ja avada uus fail siit. 1955 01:37:51,337 --> 01:37:51,920 Tead mida? 1956 01:37:51,920 --> 01:37:54,450 Ma lähen uuesti rakendada Sama programmi 1957 01:37:54,450 --> 01:37:55,940 aga kasutada teist ehitada. 1958 01:37:55,940 --> 01:38:00,110 >> Nii et lubage mul kiiresti annan end juurdepääsu hulka CS50.h 1959 01:38:00,110 --> 01:38:04,150 jaoks CS50 raamatukogu standard Io.h printf. 1960 01:38:04,150 --> 01:38:06,510 Anna mu int main void. 1961 01:38:06,510 --> 01:38:09,310 Ja siis siin, las mul minna ja seda teha. 1962 01:38:09,310 --> 01:38:12,010 >> Char c satub saada char, just nagu enne. 1963 01:38:12,010 --> 01:38:16,770 Ja ma lähen kasutada uue konstruktsiooniga now-- lülitada, siis millistel iseloomu? 1964 01:38:16,770 --> 01:38:19,820 Nii lüliti on selline nagu lülitades rongi rajad. 1965 01:38:19,820 --> 01:38:22,070 Või tõesti, see on selline if muud, kui muidu, kui 1966 01:38:22,070 --> 01:38:23,980 aga kirjutatud mõnevõrra erinevalt. 1967 01:38:23,980 --> 01:38:25,490 >> Lüliti näeb välja selline. 1968 01:38:25,490 --> 01:38:29,060 Sul on lüliti, ja mis siis iseloomu või number, mida soovite vaadata, 1969 01:38:29,060 --> 01:38:32,000 siis mõned looksulg meeldi Scratch, lihtsalt öelda seda kraami. 1970 01:38:32,000 --> 01:38:33,480 Ja siis on erinevad juhtumid. 1971 01:38:33,480 --> 01:38:34,830 >> Sa ei kasuta, kas ja mujal. 1972 01:38:34,830 --> 01:38:37,050 Sa sõna otseses mõttes kasutada sõna puhul. 1973 01:38:37,050 --> 01:38:38,790 Ja sa ütleks midagi sellist. 1974 01:38:38,790 --> 01:38:43,820 >> Nii puhul väikeseks y, või juhul, kui kapitali Y, 1975 01:38:43,820 --> 01:38:47,350 minna ja välja printida jah. 1976 01:38:47,350 --> 01:38:49,020 Ja siis murda välja lüliti. 1977 01:38:49,020 --> 01:38:49,580 Nii see on. 1978 01:38:49,580 --> 01:38:50,880 Me teha. 1979 01:38:50,880 --> 01:38:57,270 >> Või kui nii-öelda, väiketähed n, või kapitali N, 1980 01:38:57,270 --> 01:39:02,560 siis minna ja print out ole, ja seejärel murda. 1981 01:39:02,560 --> 01:39:08,022 Else-- ja selline on Vaikimisi juhul indeed-- printf error-- 1982 01:39:08,022 --> 01:39:10,980 ja lihtsalt hea meede, kuigi loogiliselt seda pausi ei ole vajalik 1983 01:39:10,980 --> 01:39:12,896 sest me oleme lõpuks lüliti niikuinii 1984 01:39:12,896 --> 01:39:14,520 Ma olen nüüd murrab läbi lüliti. 1985 01:39:14,520 --> 01:39:16,280 Nii et see tundub veidi erinev. 1986 01:39:16,280 --> 01:39:18,272 >> Aga loogiliselt, see on tegelikult samaväärsed. 1987 01:39:18,272 --> 01:39:19,980 Ja miks te kasutate üks teiste üle? 1988 01:39:19,980 --> 01:39:23,220 Mõnikord lihtsalt isiklik eelistus, mõnikord esteetika, 1989 01:39:23,220 --> 01:39:25,420 kui ma pilgu sellele Nüüd, seal on midagi 1990 01:39:25,420 --> 01:39:27,510 Tuleb öelda, et loetavust see kood. 1991 01:39:27,510 --> 01:39:30,690 Ma mõtlen, rääkimata sellest, et see kood on uus paljud meist ruumis. 1992 01:39:30,690 --> 01:39:33,515 >> Aga see lihtsalt selline on ilus. 1993 01:39:33,515 --> 01:39:37,760 Näed väiketähed y, kapitali Y, väiketähed n, kapitali N vaikimisi 1994 01:39:37,760 --> 01:39:40,150 see lihtsalt selline hüppab läbi olete nii 1995 01:39:40,150 --> 01:39:42,200 et väidetavalt olla Eelmises näites 1996 01:39:42,200 --> 01:39:45,780 koos IFS ja vertikaalsete varraste, ja muud ifs, ei pruugi olla. 1997 01:39:45,780 --> 01:39:51,600 Nii et see on tõesti igaühe isiklik valik, tõesti, ega loetavuse 1998 01:39:51,600 --> 01:39:52,360 kood. 1999 01:39:52,360 --> 01:39:58,230 >> Aga nii funktsionaalsust, lase mind minna ja teha lüliti, dot kaldkriipsuga 2000 01:39:58,230 --> 01:40:05,830 lüliti, ja nüüd kirjuta väiketähed y, kapitali Y, väiketähed n, kapitali N, 2001 01:40:05,830 --> 01:40:09,250 David, uuesti, sest see on ei üks sümbol. 2002 01:40:09,250 --> 01:40:12,050 Teeme x, viga, kui oodatud. 2003 01:40:12,050 --> 01:40:15,640 Ja logically-- ja see on midagi, Ma julgustan ka general-- isegi 2004 01:40:15,640 --> 01:40:17,790 kuigi me ainult kriimustada pinnal mõned neist omadustest. 2005 01:40:17,790 --> 01:40:20,560 >> Ja see ei pruugi olla selge, kui ise istuma klaviatuur, 2006 01:40:20,560 --> 01:40:21,370 kuidas see töötab? 2007 01:40:21,370 --> 01:40:22,240 Mida see teeb? 2008 01:40:22,240 --> 01:40:25,630 Ilus asi, millel sülearvuti või lauaarvuti või juurdepääsu 2009 01:40:25,630 --> 01:40:29,290 arvutiga tõlkija, ja koodiga toimetaja niimoodi, 2010 01:40:29,290 --> 01:40:32,990 on saate peaaegu alati vastata nendele küsimused ise lihtsalt proovida. 2011 01:40:32,990 --> 01:40:36,570 >> Näiteks, kui retoorilise Küsimus käepärast olid, 2012 01:40:36,570 --> 01:40:39,540 Mis juhtub, kui te unustate oma vaheaega väidetega? 2013 01:40:39,540 --> 01:40:41,400 Mis on tegelikult väga levinud asi, mida teha, 2014 01:40:41,400 --> 01:40:43,540 sest see ei tundu nagu sa tõesti seda vajavad. 2015 01:40:43,540 --> 01:40:46,790 Nad ei ole tegelikult täita oma arvasin nagu sulgudes või lokkis 2016 01:40:46,790 --> 01:40:47,714 traksidega teeb. 2017 01:40:47,714 --> 01:40:49,630 Lähme edasi ja kompileerida koodi ja vaata. 2018 01:40:49,630 --> 01:40:53,690 Nii et lüliti dot kaldkriipsuga lüliti. 2019 01:40:53,690 --> 01:40:56,435 Olgem kirjutada väiketähtedega y, ülemine juhul Enter. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Nii ma kirjutada y. 2022 01:41:00,700 --> 01:41:04,420 >> Programm ütles jah, ei, viga, nagu ta oli muutmas oma meelt. 2023 01:41:04,420 --> 01:41:09,280 Aga see selline oli, sest mis juhtub lülitiga on esimene juhtum, et 2024 01:41:09,280 --> 01:41:13,899 match tähendab sisuliselt seda, hei arvuti täita kõik koodi all ta. 2025 01:41:13,899 --> 01:41:16,690 Ja kui sa ei ütle, break, või ei ütle pausi, või ei ütle, break, 2026 01:41:16,690 --> 01:41:19,540 arvuti läheb löök läbi kõik need jooned 2027 01:41:19,540 --> 01:41:22,779 ja täita kõik neist enne see jõuab, et lokkis traksidega. 2028 01:41:22,779 --> 01:41:24,320 Nii pidurid on tõepoolest vajalik. 2029 01:41:24,320 --> 01:41:27,120 Aga Buffee siin on, kui Kahtluse korral proovida midagi. 2030 01:41:27,120 --> 01:41:29,510 Ehk salvestada koodi esimene, või salvestada extra faili 2031 01:41:29,510 --> 01:41:32,930 kui sa tõesti mures jama ja millel taastuda 2032 01:41:32,930 --> 01:41:34,430 töö, et sa tead, töötab. 2033 01:41:34,430 --> 01:41:35,410 >> Aga proovida asju. 2034 01:41:35,410 --> 01:41:38,074 Ja ei ole nii kartma, võib-olla, mida arvuti võib teha? 2035 01:41:38,074 --> 01:41:39,490 või, et te võite kaotada midagi. 2036 01:41:39,490 --> 01:41:42,790 Teil on alati naasta mõne varasema versiooni. 2037 01:41:42,790 --> 01:41:45,640 >> Nii saab lõpuks vaadates projekteerimise koodi. 2038 01:41:45,640 --> 01:41:49,020 Meil on see võime nüüd kirjutada tingimused ja kirjuta silmad, 2039 01:41:49,020 --> 01:41:50,850 ja muutujad, ja kõne funktsioonid. 2040 01:41:50,850 --> 01:41:54,590 Niisiis, öeldes, et me oleme omamoodi tagasi kus me olime nädal tagasi Scratch, 2041 01:41:54,590 --> 01:42:00,120 kuigi vähem kaalukad tekstiline keskkonda kui Scratch lubab. 2042 01:42:00,120 --> 01:42:03,990 >> Aga märka, kui kiiresti me oleme omandanud et sõnavara, isegi kui see on 2043 01:42:03,990 --> 01:42:07,570 aega võtab natuke aega, valamu, nii et me saame nüüd kasutada seda sõnavara 2044 01:42:07,570 --> 01:42:10,320 kirjutada rohkem huvitavaid programme. 2045 01:42:10,320 --> 01:42:12,940 Ja võtame beebi samm poole, et võtta järgmiselt. 2046 01:42:12,940 --> 01:42:14,890 Lubage mul minna ja luua uus fail siin. 2047 01:42:14,890 --> 01:42:17,750 >> Ma nimetan seda prototype.c ja tutvustada 2048 01:42:17,750 --> 01:42:20,954 esmakordselt, võime teha oma funktsioone. 2049 01:42:20,954 --> 01:42:22,870 Mõned teist võivad olla teha seda Scratch, 2050 01:42:22,870 --> 01:42:25,430 mille saate luua oma omatehtud plokid Scratch, 2051 01:42:25,430 --> 01:42:27,892 ja seejärel lohistage need paika kus te soovite C. 2052 01:42:27,892 --> 01:42:30,100 Ja kõige programmeerimine keeled, mida saate teha täpselt 2053 01:42:30,100 --> 01:42:33,580 selle-- teha oma funktsioone, kui nad ei ole juba olemas. 2054 01:42:33,580 --> 01:42:38,660 >> Nii näiteks, lubage mul minna ning sisaldavad CS50.h ja sisaldavad 2055 01:42:38,660 --> 01:42:43,110 standard IO.h, int main void. 2056 01:42:43,110 --> 01:42:46,020 Ja nüüd on meil kohatäiteväljaga valmis minema. 2057 01:42:46,020 --> 01:42:48,550 Hoian trükkimine asju nagu inimeste nimed täna. 2058 01:42:48,550 --> 01:42:51,910 Ja et tunneb like-- ei oleks hea, kui seal 2059 01:42:51,910 --> 01:42:53,936 olid funktsioon nimega print nimi? 2060 01:42:53,936 --> 01:42:55,060 Ma ei pea kasutama printf. 2061 01:42:55,060 --> 01:42:56,976 Ma ei pea meeles pidama kõik vormi koodid. 2062 01:42:56,976 --> 01:43:00,050 Miks ma ei või miks ei keegi enne mind, 2063 01:43:00,050 --> 01:43:02,980 luua funktsioon nimega print nimi, mis antakse mõne nime, 2064 01:43:02,980 --> 01:43:03,980 lihtsalt trükib välja? 2065 01:43:03,980 --> 01:43:08,700 >> Teisisõnu, kui ma ütlen, hei, arvuti, anna mulle string 2066 01:43:08,700 --> 01:43:11,870 paludes kasutaja selliseks, kaudu CS50 s get string funktsiooni. 2067 01:43:11,870 --> 01:43:15,090 Hei, arvuti, pane seda stringi muutuja vasakul pool, 2068 01:43:15,090 --> 01:43:16,150 ja nimetavad seda s. 2069 01:43:16,150 --> 01:43:22,150 Ja siis, hei arvuti, edasi minna ja printida selle isiku nimi, tehtud. 2070 01:43:22,150 --> 01:43:26,240 >> Nüüd oleks tore, sest Selles programmis, tabavalt nimeks, 2071 01:43:26,240 --> 01:43:29,170 ütleb mulle, mida ta peaks tegema teel nende funktsioon nimed. 2072 01:43:29,170 --> 01:43:32,930 Lubage mul minna ja teha prototüüp, Enter. 2073 01:43:32,930 --> 01:43:34,930 Ja kahjuks see ei kavatse sõita. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, rida 7, iseloomu 5 viga, kaudne deklaratsiooni 2075 01:43:39,430 --> 01:43:42,960 funktsiooni print nimi on kehtetu C99, C99 2076 01:43:42,960 --> 01:43:45,130 tähendab versiooni C mis tuli välja 1999. aastal. 2077 01:43:45,130 --> 01:43:45,730 See on kõik. 2078 01:43:45,730 --> 01:43:48,780 >> Nii et ma ei tea, mida kõik see tähendab veel. 2079 01:43:48,780 --> 01:43:50,810 Aga ma tunnistama viga punane. 2080 01:43:50,810 --> 01:43:51,770 See on päris selge. 2081 01:43:51,770 --> 01:43:53,769 >> Ja tundub, et koos roheline märk siin 2082 01:43:53,769 --> 01:43:57,520 probleem on print nimi, avatud paren s lähedal paren, semikoolon. 2083 01:43:57,520 --> 01:44:01,800 Aga kaudne deklaratsiooni funktsiooni me ei vaata korraks tagasi. 2084 01:44:01,800 --> 01:44:04,880 See tähendab lihtsalt, et rõkkama ei tea, mida ma mõtlen. 2085 01:44:04,880 --> 01:44:09,000 >> Olen kasutanud sõnavara sõna, et see on kunagi näinud ega õpetatud enne. 2086 01:44:09,000 --> 01:44:11,950 Ja nii ma vajan seda õpetada mida see funktsioon tähendab. 2087 01:44:11,950 --> 01:44:13,590 Nii et ma lähen edasi minna ja seda teha. 2088 01:44:13,590 --> 01:44:17,970 >> Ma lähen edasi minna ja rakendada minu funktsioon nimega Print nimi. 2089 01:44:17,970 --> 01:44:24,720 Ja ma ütlen, on järgmine, et see teeb seda, printf, tere, protsenti 2090 01:44:24,720 --> 01:44:27,760 s, backslash n nimi, semikoolon. 2091 01:44:27,760 --> 01:44:29,250 Niisiis, mida ma teha saan? 2092 01:44:29,250 --> 01:44:31,325 >> Nii selgub, et rakendada oma funktsiooni, 2093 01:44:31,325 --> 01:44:33,845 me sellist laenata sama struktuur peamised 2094 01:44:33,845 --> 01:44:35,720 et oleme lihtsalt olnud iseenesestmõistetav, ja ma 2095 01:44:35,720 --> 01:44:37,730 tean ainult kopeerimise ja kleepida päris palju, mida 2096 01:44:37,730 --> 01:44:39,170 Olen kirjalikult varem. 2097 01:44:39,170 --> 01:44:40,570 Aga märgata muster siin. 2098 01:44:40,570 --> 01:44:43,750 Keskmine, Main, tühjus, me tease peale Enne pikk, mida see tegelikult tähendab. 2099 01:44:43,750 --> 01:44:46,160 >> Aga täna, just märgata parallelism. 2100 01:44:46,160 --> 01:44:48,210 Void, print nimi, string nimi, mistõttu ei 2101 01:44:48,210 --> 01:44:50,310 lilla märksõna, mis me ei kavatse hakata 2102 01:44:50,310 --> 01:44:54,067 helistades naasmise tüüp nime funktsioon ja seejärel sisend. 2103 01:44:54,067 --> 01:44:56,400 Niisiis, tegelikult saame destilleerida selline nagu eelmisel nädalal 2104 01:44:56,400 --> 01:44:59,030 kui see on nimi või algoritm kood oleme 2105 01:44:59,030 --> 01:45:00,761 läheb write-- algoritmi aluseks 2106 01:45:00,761 --> 01:45:02,010 kood läheme kirjutada. 2107 01:45:02,010 --> 01:45:03,180 >> See on tema panus. 2108 01:45:03,180 --> 01:45:04,670 See on selle väljundi. 2109 01:45:04,670 --> 01:45:08,730 See funktsioon, print nimi on eesmärk on võtta string nimega nime, 2110 01:45:08,730 --> 01:45:11,350 või mis iganes, sisendiks ja siis tühine. 2111 01:45:11,350 --> 01:45:13,904 See ei tagasta midagi, nagu saada string või saada int teeb. 2112 01:45:13,904 --> 01:45:15,570 Nii see läheb käsi mulle midagi tagasi. 2113 01:45:15,570 --> 01:45:17,960 See on lihtsalt läheb on kõrvaltoime, nii et rääkida, 2114 01:45:17,960 --> 01:45:19,570 trükkima isiku nimi. 2115 01:45:19,570 --> 01:45:22,260 Nii märkate, rida 7, I võib helistada print nimi. 2116 01:45:22,260 --> 01:45:25,920 Line 10, võin määratleda või rakendada print nimi. 2117 01:45:25,920 --> 01:45:28,450 Kuid kahjuks sellest ei piisa. 2118 01:45:28,450 --> 01:45:31,230 >> Lubage mul minna ja kompileerida selle pärast salvestamist. 2119 01:45:31,230 --> 01:45:33,910 Oot, nüüd olen teinud hullem, tundub. 2120 01:45:33,910 --> 01:45:37,027 Nii kaudne deklaratsiooni funktsiooni print nimi on kehtetu. 2121 01:45:37,027 --> 01:45:38,360 Ja jällegi, seal on rohkem vigu. 2122 01:45:38,360 --> 01:45:41,430 Aga nagu ma hoiatada varem, isegi kui sa ülekoormatud, 2123 01:45:41,430 --> 01:45:44,850 või natuke kurb näha nii palju vigu, keskenduda ainult esimene 2124 01:45:44,850 --> 01:45:47,500 Esialgu sest see võib lihtsalt on olnud doominoefekti. 2125 01:45:47,500 --> 01:45:51,970 Nii C või Clang täpsemalt ikka ei tunne print nimi. 2126 01:45:51,970 --> 01:45:54,580 >> Ja et sellepärast rõkkama, mille konstruktsioon on selline loll. 2127 01:45:54,580 --> 01:45:56,280 See ainult teeb seda, mida sa öelda tahad. 2128 01:45:56,280 --> 01:46:00,950 Ja see ainult teeb seda, et kus sa öelda tahad. 2129 01:46:00,950 --> 01:46:05,270 >> Nii olen määratletud peamine liin nelja nagu me oleme teinud päris tihti. 2130 01:46:05,270 --> 01:46:07,980 Olen määratletud print nimi real 10. 2131 01:46:07,980 --> 01:46:11,793 Aga ma üritan kasutada print nimi real seitse. 2132 01:46:11,793 --> 01:46:13,670 >> See on liiga vara, veel ei ole. 2133 01:46:13,670 --> 01:46:19,150 Nii et ma võiks olla tark ja olla nagu, OK, nii et vaatame lihtsalt mängida koos, 2134 01:46:19,150 --> 01:46:23,680 ja liikuda print nimi üles siin, ja uuesti kompileerida. 2135 01:46:23,680 --> 01:46:24,550 Oh mu jumal. 2136 01:46:24,550 --> 01:46:25,260 Ta töötas. 2137 01:46:25,260 --> 01:46:26,670 See oli nii lihtne. 2138 01:46:26,670 --> 01:46:28,120 >> Aga loogika on just nii. 2139 01:46:28,120 --> 01:46:30,870 Sul on õpetada rõkkama, mida ta on määratledes funktsiooni esimene. 2140 01:46:30,870 --> 01:46:31,920 Siis saab seda kasutada. 2141 01:46:31,920 --> 01:46:33,940 Aga ausalt öeldes, see tunneb nagu libe tee. 2142 01:46:33,940 --> 01:46:35,773 >> Nii et iga kord, kui ma joosta arvesse probleem, ma olen lihtsalt 2143 01:46:35,773 --> 01:46:39,450 läheb esile ja kopeerida koodi Kirjutasin, lõigata ja kleepida see siia üles. 2144 01:46:39,450 --> 01:46:41,370 Ja kindlasti, saime leiutama mõned stsenaariumid 2145 01:46:41,370 --> 01:46:43,286 kus üks funktsioon võiks vaja helistada teisele. 2146 01:46:43,286 --> 01:46:46,030 Ja sa lihtsalt ei saa panna iga funktsiooni üle kõigi teiste. 2147 01:46:46,030 --> 01:46:47,930 >> Nii selgub seal on parem lahendus. 2148 01:46:47,930 --> 01:46:50,100 Me ei jäta seda olla. 2149 01:46:50,100 --> 01:46:53,677 Ja ausalt öeldes, see on üldiselt kena, ja mugav ja hea disainiga 2150 01:46:53,677 --> 01:46:56,760 panna peamine esimene, sest jällegi Peamised nagu siis, kui roheline lipp klõpsates 2151 01:46:56,760 --> 01:46:59,027 mis on funktsioon, mis saab teostada vaikimisi. 2152 01:46:59,027 --> 01:47:01,110 Nii võite ka panna see ülaosas faili 2153 01:47:01,110 --> 01:47:03,560 nii, et kui teil või teiste inimeste vaadeldakse faili 2154 01:47:03,560 --> 01:47:06,360 sa tead, mis toimub lihtsalt lugedes peamine esimene. 2155 01:47:06,360 --> 01:47:15,360 Nii selgub, saame öelda rõkkama ennetavalt, hei, rõkkama, real neli, 2156 01:47:15,360 --> 01:47:17,940 Ma luban, et rakendada funktsioon nimega Prindi 2157 01:47:17,940 --> 01:47:22,600 Nimi, mis võtab stringi nimetatakse nimi sisendiks ja naaseb midagi, tühine. 2158 01:47:22,600 --> 01:47:24,770 Ja ma saan ümber rakendatakse seda hiljem. 2159 01:47:24,770 --> 01:47:25,680 >> Siin on peamised. 2160 01:47:25,680 --> 01:47:29,130 Peamised nüüd real 9 saab kasutada Prindi nimi, sest rõkkama 2161 01:47:29,130 --> 01:47:32,600 on uskudes, et lõpuks see tekib määratlus 2162 01:47:32,600 --> 01:47:34,880 rakendamise Prindi nimi. 2163 01:47:34,880 --> 01:47:37,390 Nii et pärast salvestamist minu faili, las mul minna ja teha prototüüp, 2164 01:47:37,390 --> 01:47:38,498 näeb hea seekord. 2165 01:47:38,498 --> 01:47:43,470 Dot kaldkriips, prototüüp, lase mind minna ja kirjuta nimi. 2166 01:47:43,470 --> 01:47:48,440 David, tere David, Zamila, tere Zamila, ja tõepoolest, nüüd see töötab. 2167 01:47:48,440 --> 01:47:52,200 >> Nii koostisosa on selles, et me oleme tehtud kohandatud funktsiooni, nagu kohandatud 2168 01:47:52,200 --> 01:47:54,219 Scratch plokk me nõuame seda. 2169 01:47:54,219 --> 01:47:57,010 Kuid erinevalt Scratch, kus saab lihtsalt luua seda ja seda kasutama hakata, 2170 01:47:57,010 --> 01:47:59,330 Nüüd peame olema veidi pedantne, 2171 01:47:59,330 --> 01:48:03,410 ja tegelikult koolitada rõkkama kasutada, või ootavad seda. 2172 01:48:03,410 --> 01:48:09,140 Nüüd, kui kõrvale, miks kõik see aeg on meil olnud lihtsalt pimesi usu, sealhulgas 2173 01:48:09,140 --> 01:48:12,170 CS50.h, kaasa arvatud standard IO.h? 2174 01:48:12,170 --> 01:48:15,190 >> Noh, selgub, hulgast mõned muud asjad, 2175 01:48:15,190 --> 01:48:18,550 kõik, mis on nende dot h failid, mis juhtub olema faile. 2176 01:48:18,550 --> 01:48:20,460 Nad päisefailiga, nii rääkida. 2177 01:48:20,460 --> 01:48:23,270 Nad ikka kirjutatud C. Aga nad teist tüüpi faili. 2178 01:48:23,270 --> 01:48:28,690 >> Praegu saab päris palju eeldada et kõik, mis on seestpoolt CS50.h 2179 01:48:28,690 --> 01:48:33,360 on mõned üks vooderdus niimoodi, ei funktsioonide nimetatakse Prindi nimi, 2180 01:48:33,360 --> 01:48:36,840 kuid siia String, siia Float, ja mõned teised. 2181 01:48:36,840 --> 01:48:41,510 Ja seal on sarnased prototüübid, üks vooderdus, sees standard IO.h 2182 01:48:41,510 --> 01:48:46,241 printf, mis on nüüd minu Prindi Nimi funktsioon. 2183 01:48:46,241 --> 01:48:49,490 Nii teisisõnu, kogu see aeg me oleme äsja pimesi kopeerides ja kleepides 2184 01:48:49,490 --> 01:48:51,780 lisada see sisaldama et mis toimub? 2185 01:48:51,780 --> 01:48:55,310 Need on lihtsalt selline vihjeid kuni rõkkama, millised funktsioonid 2186 01:48:55,310 --> 01:49:00,170 on tõepoolest ellu, vaid mujal erinevaid faile 2187 01:49:00,170 --> 01:49:02,440 mujal süsteemi. 2188 01:49:02,440 --> 01:49:05,160 >> Nii oleme rakendanud print nimi. 2189 01:49:05,160 --> 01:49:07,910 Tal on see kõrvalmõjuna trükkimine midagi ekraanil. 2190 01:49:07,910 --> 01:49:10,170 Aga see ei ole tegelikult anda mulle midagi tagasi. 2191 01:49:10,170 --> 01:49:12,200 Kuidas me minna programmi rakendamise, mis 2192 01:49:12,200 --> 01:49:14,510 ei anna mulle midagi tagasi? 2193 01:49:14,510 --> 01:49:15,580 >> Noh, proovime seda. 2194 01:49:15,580 --> 01:49:21,360 Lubage mul minna ja rakendada fail nimega return.c 2195 01:49:21,360 --> 01:49:24,530 nii et me saame näidata, kuidas midagi nagu siia String, või siia keskmine, 2196 01:49:24,530 --> 01:49:27,340 on tegelikult tagasi midagi tagasi kasutaja. 2197 01:49:27,340 --> 01:49:29,840 Lähme edasi ja määratleda int main void. 2198 01:49:29,840 --> 01:49:33,230 >> Ja jällegi, et tulevikus jagame selgitada, mida see int ja tühine 2199 01:49:33,230 --> 01:49:34,090 on tegelikult teevad. 2200 01:49:34,090 --> 01:49:35,840 Aga täna, jagame enesestmõistetavaks. 2201 01:49:35,840 --> 01:49:39,970 Ma lähen edasi minna ja printf, hea kasutaja kogemus, x on. 2202 01:49:39,970 --> 01:49:44,360 Ja siis ma lähen ootama kasutaja anda mulle x get int. 2203 01:49:44,360 --> 01:49:48,459 >> Ja siis ma lähen edasi minna ja välja printida x ruuduga. 2204 01:49:48,459 --> 01:49:50,500 Nii et kui sul on ainult klaviatuur, inimesed tavaliselt 2205 01:49:50,500 --> 01:49:52,600 kasutada vähe porgand sümbolile klaviatuuril 2206 01:49:52,600 --> 01:49:55,330 esindada võimu eest või astendaja. 2207 01:49:55,330 --> 01:49:58,960 Nii x ruudus on kohal i. 2208 01:49:58,960 --> 01:50:00,660 >> Ja nüüd ma lähen seda teha. 2209 01:50:00,660 --> 01:50:03,940 Ma võiks lihtsalt do-- mis on x ruudus? x ruudus x korda x. 2210 01:50:03,940 --> 01:50:06,690 >> Ja me tegime seda mõned aega tagasi juba täna. 2211 01:50:06,690 --> 01:50:08,730 See ei tunne kõik, et palju edu. 2212 01:50:08,730 --> 01:50:09,570 Tead mida? 2213 01:50:09,570 --> 01:50:13,100 Lähme ära mõned, et idee viimast korda võtmiseks. 2214 01:50:13,100 --> 01:50:16,080 >> Kas poleks tore, kui seal on funktsioon nimega 2215 01:50:16,080 --> 01:50:18,460 ruut, et just selline? 2216 01:50:18,460 --> 01:50:20,640 See ikka lõpus on päevas, mis teeb sama matemaatika. 2217 01:50:20,640 --> 01:50:22,410 Kuid olgem abstraktne ära idee võtta 2218 01:50:22,410 --> 01:50:25,280 üks number korrutatakse teise ja lihtsalt anda talle nimi, 2219 01:50:25,280 --> 01:50:27,360 nagu selle ruutu väärtus. 2220 01:50:27,360 --> 01:50:29,560 >> Ning teisisõnu C, loome funktsiooni 2221 01:50:29,560 --> 01:50:32,660 nimetatakse ruut, et just selline. 2222 01:50:32,660 --> 01:50:34,600 See saab nimetada ruut. 2223 01:50:34,600 --> 01:50:35,790 See saab võtta int. 2224 01:50:35,790 --> 01:50:37,820 Ja me tekitavad lihtsalt nimetame seda n vaikimisi. 2225 01:50:37,820 --> 01:50:39,403 >> Aga me võime seda kutsuda midagi tahame. 2226 01:50:39,403 --> 01:50:42,900 Ja kõik see läheb teha, sõna otseses mõttes, on tootlus 2227 01:50:42,900 --> 01:50:45,810 tulemus n korda n. 2228 01:50:45,810 --> 01:50:48,980 Aga kuna see on tagasi midagi, mis 2229 01:50:48,980 --> 01:50:53,690 on märksõna lilla me oleme kunagi näinud, I real 11, 2230 01:50:53,690 --> 01:50:55,410 ei saa just öelda tühine seekord. 2231 01:50:55,410 --> 01:51:01,320 >> Void, et näiteks me just nägime pigem print nimi, vaid tähendab, 2232 01:51:01,320 --> 01:51:02,190 tee midagi. 2233 01:51:02,190 --> 01:51:04,170 Aga ei anna mulle midagi tagasi. 2234 01:51:04,170 --> 01:51:06,790 Sel juhul ma ei taha naasta n korda n, 2235 01:51:06,790 --> 01:51:08,460 või mis iganes see on, et number. 2236 01:51:08,460 --> 01:51:12,460 >> Nii et ma ei saa öelda, hei, arvuti, Ma tagasi midagi, tühine. 2237 01:51:12,460 --> 01:51:16,166 See läheb tagasi oma olemuselt int. 2238 01:51:16,166 --> 01:51:17,790 Ja nii see on kõik, mis siin toimub. 2239 01:51:17,790 --> 01:51:20,070 >> Sisend ruutu saab olema int. 2240 01:51:20,070 --> 01:51:24,760 Ja nii, et me ei kasuta seda, see peab on nimi, N. See läheb väljund 2241 01:51:24,760 --> 01:51:26,240 int, et ei ole vaja nime. 2242 01:51:26,240 --> 01:51:29,590 Me ei saa jätta see peamine, mis või kes on kasutab mind mäletad seda väärtust, kui me 2243 01:51:29,590 --> 01:51:31,120 tahan oma muutuv. 2244 01:51:31,120 --> 01:51:33,230 >> Ja jällegi ainuke uus märksõna on siin Return. 2245 01:51:33,230 --> 01:51:34,480 Ja ma lihtsalt teeme mõned matemaatika. 2246 01:51:34,480 --> 01:51:41,825 Kui ma tõesti tahtsin olla tarbetu, Ma võiks öelda, int toodet saab n korda n. 2247 01:51:41,825 --> 01:51:44,170 >> Ja siis ma võiks öelda, tagastab toode. 2248 01:51:44,170 --> 01:51:47,360 Kuid jällegi, et minu küsimus on varasem See lihtsalt ei ole hea design-- 2249 01:51:47,360 --> 01:51:50,060 nagu, miks tutvustada nimi, sümbol, nagu toode, 2250 01:51:50,060 --> 01:51:51,570 lihtsalt kohe tagastada? 2251 01:51:51,570 --> 01:51:53,670 See on veidi puhtam, natuke tihedam, mistõttu 2252 01:51:53,670 --> 01:51:59,380 rääkida, vaid öelda, tagastamise n korda n, vabaneda selle rea kokku. 2253 01:51:59,380 --> 01:52:02,860 >> Ja see on lihtsalt vähem koodi lugeda, väiksem võimalus vigu. 2254 01:52:02,860 --> 01:52:05,180 Ja vaatame, kas see tegelikult töötab nüüd. 2255 01:52:05,180 --> 01:52:09,380 Nüüd ma lähen käia ja tagasipöördumine. 2256 01:52:09,380 --> 01:52:11,460 >> Uh-oh, kaudne deklaratsiooni funktsioon. 2257 01:52:11,460 --> 01:52:14,080 Tegin selle vea enne, ei ole suur asi. 2258 01:52:14,080 --> 01:52:18,950 Lubage mul lihtsalt kirjuta, või tuua ja kopeerida, täpselt sama funktsiooni prototüüp, 2259 01:52:18,950 --> 01:52:21,342 või allkiri, funktsiooni siin. 2260 01:52:21,342 --> 01:52:22,800 Või ma võiks liikuda kogu funktsiooni. 2261 01:52:22,800 --> 01:52:23,841 >> Aga see on natuke laisk. 2262 01:52:23,841 --> 01:52:24,870 Nii et me ei tee seda. 2263 01:52:24,870 --> 01:52:27,960 Nüüd lubage mul teha tagasipöördumist jälle dot kaldkriipsuga tagasi. 2264 01:52:27,960 --> 01:52:32,790 >> x 2. x ruudus on 4. x 3. x ruudus on 9. 2265 01:52:32,790 --> 01:52:35,300 Ja funktsioon tundub nüüd toimivat. 2266 01:52:35,300 --> 01:52:36,550 Mis vahet on siin? 2267 01:52:36,550 --> 01:52:42,520 Mul on funktsioon, mis nimetatakse ruut, sel juhul, mis panin sisend. 2268 01:52:42,520 --> 01:52:43,830 Ja ma saan tagasi väljund. 2269 01:52:43,830 --> 01:52:46,210 Ja veel, varem, kui Ma avan teisi näiteks 2270 01:52:46,210 --> 01:52:51,640 varasematest, mis kutsuti prototype.c, 2271 01:52:51,640 --> 01:52:54,770 Mul oli print nimi, mis tagasi tühine, kui nii võib öelda, 2272 01:52:54,770 --> 01:52:58,730 Või siis tagasi midagi, ja lihtsalt oli kõrvalmõjuna. 2273 01:52:58,730 --> 01:53:00,230 >> Mis siin toimub? 2274 01:53:00,230 --> 01:53:03,520 Noh, leiavad funktsiooni saada string hetkeks. 2275 01:53:03,520 --> 01:53:06,570 Oleme kasutanud funktsiooni saada string järgmisel viisil. 2276 01:53:06,570 --> 01:53:10,464 >> Meil on olnud funktsioon saada string, nagu hulka CS50.h, 2277 01:53:10,464 --> 01:53:16,624 hulka standard IO.h, int, peamine, tühine. 2278 01:53:16,624 --> 01:53:18,790 Ja siis iga kord, kui ma olen nimetatakse get string seni 2279 01:53:18,790 --> 01:53:23,260 Ma olen öelnud midagi, string s saab saada string, sest get string-- 2280 01:53:23,260 --> 01:53:27,880 olgem nimetame seda get.c-- get string ise tagastab stringi, et saan siis 2281 01:53:27,880 --> 01:53:32,050 kasutada, ja öelda, tere, koma, protsenti s, backslash n, s. 2282 01:53:32,050 --> 01:53:35,660 >> Nii et see on sama näiteks tõesti, et meil oli varem. 2283 01:53:35,660 --> 01:53:37,920 Nii et saada string tagastab väärtuse. 2284 01:53:37,920 --> 01:53:41,260 Aga hetk tagasi, print stringi ei tagasta väärtust. 2285 01:53:41,260 --> 01:53:42,721 See lihtsalt on kõrvalnäht. 2286 01:53:42,721 --> 01:53:44,220 Nii et see on põhimõtteline erinevus. 2287 01:53:44,220 --> 01:53:46,710 Me oleme näinud erinevat tüüpi funktsioone nüüd, 2288 01:53:46,710 --> 01:53:49,490 millest mõned on tagastatud väärtused, millest mõned mitte. 2289 01:53:49,490 --> 01:53:51,890 Ehk see on string või int või float. 2290 01:53:51,890 --> 01:53:53,480 Või äkki see on lihtsalt tühine. 2291 01:53:53,480 --> 01:53:55,710 >> Ja vahe on et need funktsioonid, mis 2292 01:53:55,710 --> 01:53:59,940 saada andmeid ja tagastab väärtuse tegelikult tuua midagi laua juurde tagasi, 2293 01:53:59,940 --> 01:54:01,110 niiöelda. 2294 01:54:01,110 --> 01:54:03,710 Nii lähme edasi ja vaadata ühe lõpuosa 2295 01:54:03,710 --> 01:54:09,129 näiteid, mis annab tunde, nüüd on kuidas me võiksime tõepoolest abstraktne parem, 2296 01:54:09,129 --> 01:54:11,670 ja parem, ja parem, või rohkem, ja rohkem, ja rohkem, et 2297 01:54:11,670 --> 01:54:13,810 kirjutada lõppkokkuvõttes parem koodi. 2298 01:54:13,810 --> 01:54:16,860 Lähme edasi, ja vaimus Scratch, tehke järgmist. 2299 01:54:16,860 --> 01:54:21,700 >> Lubage mul minna ja lisada CS50.h ja standard IO.h. 2300 01:54:21,700 --> 01:54:24,010 Lubage mul minna ja anda mina int, peamine, tühine. 2301 01:54:24,010 --> 01:54:27,380 Ja las ma minna, nimetame seda cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> Ja las ma minna ja lihtsalt nagu Scratch, välja printida köha / n. 2303 01:54:35,510 --> 01:54:37,170 Ja ma tahan seda teha kolm korda. 2304 01:54:37,170 --> 01:54:39,670 Nii et ma muidugi lihtsalt läheb kopeerida ja kleepida kolm korda. 2305 01:54:39,670 --> 01:54:46,440 Ma nüüd lähen tegema köha dot kaldkriipsuga köha. 2306 01:54:46,440 --> 01:54:50,120 Anname endale natuke rohkem ruumi Siin Sisesta, köha, köha, köha. 2307 01:54:50,120 --> 01:54:53,970 >> Seal on ilmselt juba võimaluse parandada. 2308 01:54:53,970 --> 01:54:55,679 Olen kopeerinud paar korda täna. 2309 01:54:55,679 --> 01:54:58,261 Aga see oli ainult, et ma ei tuleb kirjutada nii palju märke. 2310 01:54:58,261 --> 01:55:00,250 Ma ikka muutunud, mida neid ridu koodi on. 2311 01:55:00,250 --> 01:55:04,240 >> Need kolm rida on identsed, mis tundub laisk ja tõesti tähendab, 2312 01:55:04,240 --> 01:55:07,110 ja ei ole ilmselt õige lähenemine. 2313 01:55:07,110 --> 01:55:11,029 Nii, mida koostisosa saaksime parandada selle koodi? 2314 01:55:11,029 --> 01:55:12,570 Me ei pea kopeeri ja kleebi koodi. 2315 01:55:12,570 --> 01:55:15,070 >> Ja tõesti, iga kord, kui tunnen ise kopeerimine ja kleepimine 2316 01:55:15,070 --> 01:55:17,700 ja isegi mitte muutuva koodiga, koefitsiendid on seal parem. 2317 01:55:17,700 --> 01:55:19,470 Ja tõepoolest, seal on. 2318 01:55:19,470 --> 01:55:22,510 Lubage mul minna ja teha silmus, kuigi süntaks ei pruugi 2319 01:55:22,510 --> 01:55:24,570 tulema loomulikult veel. 2320 01:55:24,570 --> 01:55:29,494 >> Kas see kolm korda, lihtsalt tehes following-- 2321 01:55:29,494 --> 01:55:31,160 ja ma tean küll, see on praktika. 2322 01:55:31,160 --> 01:55:32,810 Aga meil on mitmeid näiteid praegu. 2323 01:55:32,810 --> 01:55:34,950 Ja näete Internetis rohkem viiteid veel. 2324 01:55:34,950 --> 01:55:37,790 >> See on süntaks real 6, mis palju nagu Scratch et kordub 2325 01:55:37,790 --> 01:55:40,090 plokk, korrata järgmised kolm korda. 2326 01:55:40,090 --> 01:55:41,340 See on veidi maagiline nüüd. 2327 01:55:41,340 --> 01:55:43,050 Aga see saab rohkem, ja rohkem tuttavad. 2328 01:55:43,050 --> 01:55:45,050 >> Ja see läheb kordama line kaheksa kolm korda, 2329 01:55:45,050 --> 01:55:52,390 nii et kui ma uuesti kompileerida make köha, dot kaldkriips köha, köha, köha, köha. 2330 01:55:52,390 --> 01:55:54,030 See töötab samamoodi. 2331 01:55:54,030 --> 01:55:55,550 Nii et kõik on hästi ja hea. 2332 01:55:55,550 --> 01:55:58,200 Aga see ei ole väga ammutatud. 2333 01:55:58,200 --> 01:55:59,371 >> See on täiesti õige. 2334 01:55:59,371 --> 01:56:01,370 Aga tundub, nagu seal võiks olla võimalus, 2335 01:56:01,370 --> 01:56:03,750 nagu maailma Scratch, et selline algus 2336 01:56:03,750 --> 01:56:07,530 lisada mõned semantika siin nii, et Ma ei ole lihtsalt mõned silmus, 2337 01:56:07,530 --> 01:56:09,867 ja funktsioon, mis ütleb, köha või ei köha. 2338 01:56:09,867 --> 01:56:10,450 Tead mida? 2339 01:56:10,450 --> 01:56:12,620 Las ma proovin olla veidi jahedam kui, et 2340 01:56:12,620 --> 01:56:16,090 ja tegelikult kirjutada funktsioon, mis on mõned kõrvaltoimed, nimetame seda köha. 2341 01:56:16,090 --> 01:56:20,830 >> Ja see ei võta sisend ja tagasi mingit väärtust väljundiks. 2342 01:56:20,830 --> 01:56:22,680 Aga sa tead, mida ta teeb? 2343 01:56:22,680 --> 01:56:29,370 Ta teeb see-- printf, tsitaat lõppeb, köha. 2344 01:56:29,370 --> 01:56:32,380 >> Ja nüüd siin, ma lähen minna ja int, 2345 01:56:32,380 --> 01:56:36,070 i saab nulli, i vähem kui 3, i pluss pluss. 2346 01:56:36,070 --> 01:56:39,770 Ma ei tee printf, mis on väidetavalt madal rakendamine 2347 01:56:39,770 --> 01:56:40,270 detail. 2348 01:56:40,270 --> 01:56:41,353 Mind ei huvita, kuidas köha. 2349 01:56:41,353 --> 01:56:43,240 Ma tahan kasutada köha funktsiooni. 2350 01:56:43,240 --> 01:56:44,840 Ja ma lihtsalt helistada köha. 2351 01:56:44,840 --> 01:56:46,204 >> Nüüd märgata dihhotoomia. 2352 01:56:46,204 --> 01:56:49,370 Kui te helistate funktsiooni, kui te ei tahan anda ta sisestab, täiesti korras. 2353 01:56:49,370 --> 01:56:51,780 Just do avatud paren lähedal paren, ja sa oled teinud. 2354 01:56:51,780 --> 01:56:56,271 >> Kui määratleda funktsiooni või Kinnitan funktsiooni prototüüp, 2355 01:56:56,271 --> 01:56:58,770 kui tead ette et see ei ole kavatseb võtta mingeid argumente, 2356 01:56:58,770 --> 01:57:01,170 öelda tühine need sulgudes seal. 2357 01:57:01,170 --> 01:57:05,660 Ja mis teeb kindel, et sa ei kogemata seda valesti. 2358 01:57:05,660 --> 01:57:07,020 Lubage mul minna ja teha köha. 2359 01:57:07,020 --> 01:57:08,540 Ja muidugi, ma tegin vea. 2360 01:57:08,540 --> 01:57:10,410 >> Kurat võtaks, seal on, et kaudne deklaratsiooni. 2361 01:57:10,410 --> 01:57:11,325 Aga see on hea. 2362 01:57:11,325 --> 01:57:12,590 See on lihtne lahendus. 2363 01:57:12,590 --> 01:57:18,240 Ma lihtsalt pean prototüüp kõrgemal minu faili, kui ma olen tegelikult seda kasutada. 2364 01:57:18,240 --> 01:57:20,070 >> Nüüd lubage mul teha köha taas, kena. 2365 01:57:20,070 --> 01:57:20,790 Nüüd, see toimib. 2366 01:57:20,790 --> 01:57:22,930 Tee köha, köha, köha, köha. 2367 01:57:22,930 --> 01:57:25,930 Nii võiks arvata, et me oleme tõesti veidi üle insener seda probleemi. 2368 01:57:25,930 --> 01:57:26,763 Ja tõesti, me oleme. 2369 01:57:26,763 --> 01:57:28,870 See ei ole hea kandidaadi programmi 2370 01:57:28,870 --> 01:57:31,930 Praegu jaoks refactoring, ja teeme, mis on 2371 01:57:31,930 --> 01:57:35,645 nimetatakse hierarhiline lagunemise kus te võtate mõnda koodi ja seejärel 2372 01:57:35,645 --> 01:57:38,790 sa mingi tegur asjad läbi, et omistada rohkem semantika neile, 2373 01:57:38,790 --> 01:57:40,930 ning uuesti lõpuks pikemas perspektiivis. 2374 01:57:40,930 --> 01:57:43,490 Aga see on ehituskivi poole keerukamaid programme 2375 01:57:43,490 --> 01:57:45,600 et hakkame kirjalikult enne kaua, et 2376 01:57:45,600 --> 01:57:50,090 võimaldab meil sõnavara kellega kirjutama paremaid koodi. 2377 01:57:50,090 --> 01:57:52,920 Ja tõepoolest, vaatame, kui me ei saa üldistada seda veelgi. 2378 01:57:52,920 --> 01:57:57,984 >> Tundub natuke lame, et mina, peamine, pea muretsema selle paganama silmus, 2379 01:57:57,984 --> 01:57:59,400 ja kutsudes köha ja jälle. 2380 01:57:59,400 --> 01:58:03,050 Miks ma ei saa lihtsalt öelda, köha, palun köha kolm korda? 2381 01:58:03,050 --> 01:58:08,170 Teisisõnu, miks ma ei saa lihtsalt anda oma panuse köha ja seda teha? 2382 01:58:08,170 --> 01:58:11,270 >> Miks ma ei saa öelda, et Peamised köha kolm korda. 2383 01:58:11,270 --> 01:58:13,150 Ja nüüd, see on omamoodi maagiline. 2384 01:58:13,150 --> 01:58:14,540 See on väga korduv siin. 2385 01:58:14,540 --> 01:58:15,940 Ja see on tõepoolest laps samm. 2386 01:58:15,940 --> 01:58:19,250 >> Aga võime öelda line kaheksa, köha kolm korda 2387 01:58:19,250 --> 01:58:20,730 see on lihtsalt nii palju loetavamaks. 2388 01:58:20,730 --> 01:58:24,210 Ja pluss, mul ei ole teada või hooli, kui köha on rakendatud. 2389 01:58:24,210 --> 01:58:26,460 Ja tõepoolest, hiljem Mõiste ja lõplik projekte, 2390 01:58:26,460 --> 01:58:29,150 kui te lahendada projekti, klassivend või kaks klassikaaslased 2391 01:58:29,150 --> 01:58:32,370 saate aru, et sa lähed pea, või tahad, jagada töö. 2392 01:58:32,370 --> 01:58:34,650 >> Ja sa lähed taha otsustada ette, kes läheb tegema seda, mida, 2393 01:58:34,650 --> 01:58:35,483 ja kus tükid? 2394 01:58:35,483 --> 01:58:37,520 Ja kas ei oleks tore kui sa näiteks 2395 01:58:37,520 --> 01:58:40,100 võtta vastutus kirjalikult peamine, tehtud. 2396 01:58:40,100 --> 01:58:43,470 Ja teie toakaaslane või oma partner üldisemalt 2397 01:58:43,470 --> 01:58:45,230 hoolitseb rakendamisel köha. 2398 01:58:45,230 --> 01:58:49,540 >> Ja see jaotus, neid seinte abst- 2399 01:58:49,540 --> 01:58:52,310 või kihti võtmiseks, kui siis on super võimas, 2400 01:58:52,310 --> 01:58:55,480 sest eriti suuremad, keerulisem programme ja süsteeme, 2401 01:58:55,480 --> 01:59:00,070 see võimaldab mitu inimest ehitada asjad kokku ja lõpuks 2402 01:59:00,070 --> 01:59:02,680 õmblema oma töös kokku niimoodi. 2403 01:59:02,680 --> 01:59:05,332 Aga muidugi, me pea nüüd parandada köha. 2404 01:59:05,332 --> 01:59:07,290 Me peame rääkima köha et kuule, tead mis? 2405 01:59:07,290 --> 01:59:11,230 Sa lähed vaja võtta input-- nii ei tühine, kuid int ja praegu. 2406 01:59:11,230 --> 01:59:15,170 Lähme edasi ja panna köha int. i saab nulli. 2407 01:59:15,170 --> 01:59:16,890 >> i on väiksem kui mitu korda. 2408 01:59:16,890 --> 01:59:18,550 Ütlesin kolm varem. 2409 01:59:18,550 --> 01:59:20,420 Aga see pole see, mida ma tahan. 2410 01:59:20,420 --> 01:59:25,520 Ma tahan köha tuleb üldistada Mistahes korduste arvu. 2411 01:59:25,520 --> 01:59:28,800 >> Niisiis, tõepoolest, see on n, et ma tahan, olenemata kasutaja ütleb mulle. 2412 01:59:28,800 --> 01:59:31,620 Nüüd saab minna ja öelda print köha. 2413 01:59:31,620 --> 01:59:34,750 Ja ükskõik mis number kasutaja möödub, 2414 01:59:34,750 --> 01:59:36,890 Ma itereerima, et mitu korda. 2415 01:59:36,890 --> 01:59:39,160 >> Nii lõpus päeval, Programm on identsed. 2416 01:59:39,160 --> 01:59:42,820 Aga märgata kõike seda kraami võiks isegi olla teise faili. 2417 01:59:42,820 --> 01:59:45,620 Tõepoolest, ma ei tea, on hetk, kuidas printf rakendatakse. 2418 01:59:45,620 --> 01:59:47,980 >> Ma ei tea hetkel, kuidas saada string või saada int või saada float 2419 01:59:47,980 --> 01:59:48,646 rakendamine. 2420 01:59:48,646 --> 01:59:50,930 Ja ma ei taha neid näha minu ekraanil. 2421 01:59:50,930 --> 01:59:55,320 Mis see on, ma olen hakanud keskenduma minu programm, mitte neid funktsioone. 2422 01:59:55,320 --> 01:59:59,070 >> Ja nii tõesti, niipea kui alustada faktooring koodi niimoodi välja, 2423 01:59:59,070 --> 02:00:01,397 kas me isegi liikuda köha eraldi faili? 2424 02:00:01,397 --> 02:00:02,730 Keegi võiks seda rakendada. 2425 02:00:02,730 --> 02:00:06,810 Ja teid ja teie programmi saada väga ilus ja kergesti loetav, 2426 02:00:06,810 --> 02:00:10,830 Väidetavalt on tõesti neli line programm seal. 2427 02:00:10,830 --> 02:00:13,510 >> Nii lähme edasi nüüd ja teha veel üks muutus. 2428 02:00:13,510 --> 02:00:16,180 Pange tähele, et minu prototüüp on muuta kuni top. 2429 02:00:16,180 --> 02:00:18,390 Nii et lubage mul kinnitada, et nii Ma ei pahandada saada. 2430 02:00:18,390 --> 02:00:22,580 >> Tee köha, lase mind kestab köha kord rohkem, ikka teevad sama asja. 2431 02:00:22,580 --> 02:00:26,010 Aga nüüd, märgata on meil koostisosa üks lõplik versioon. 2432 02:00:26,010 --> 02:00:26,940 Tead mida? 2433 02:00:26,940 --> 02:00:29,040 Ma ei taha lihtsalt köha, tingimata. 2434 02:00:29,040 --> 02:00:30,802 Ma tahan midagi üldisemat. 2435 02:00:30,802 --> 02:00:31,510 Nii et sa tead, mida? 2436 02:00:31,510 --> 02:00:32,450 Ma tahan seda teha. 2437 02:00:32,450 --> 02:00:37,140 Ma tahan olla palju nagu Scratch ei, rääkida blokeerida, kuid mitte ainult 2438 02:00:37,140 --> 02:00:38,680 midagi öelda mõned mitu korda. 2439 02:00:38,680 --> 02:00:41,510 Ma tahan seda öelda väga konkreetne string. 2440 02:00:41,510 --> 02:00:43,850 Ja seetõttu ma ei tahan seda öelda köha. 2441 02:00:43,850 --> 02:00:47,660 Ma tahan seda öelda, mida iganes string sooritanud. 2442 02:00:47,660 --> 02:00:49,960 >> Nii märgata, ma olen üldistatud See, et nüüd 2443 02:00:49,960 --> 02:00:53,110 ütleme tundub hea nimi Selle, nagu kriimustus, 2444 02:00:53,110 --> 02:00:55,530 kaht argumenti, erinevalt Scratch. 2445 02:00:55,530 --> 02:00:56,570 Üks on string. 2446 02:00:56,570 --> 02:00:57,300 Üks on int. 2447 02:00:57,300 --> 02:00:58,130 >> Ja ma võiks vahetada saavad. 2448 02:00:58,130 --> 02:01:00,713 Ma lihtsalt selline nagu idee öelda string esimene ja seejärel 2449 02:01:00,713 --> 02:01:01,940 mitu korda hiljem. 2450 02:01:01,940 --> 02:01:03,970 Tühjus tähendab see ikka ei tagasta midagi. 2451 02:01:03,970 --> 02:01:06,428 Need on vaid visuaalne külg mõju, nagu on [? Jordan,?] 2452 02:01:06,428 --> 02:01:08,240 verbaalne kõrvaltoime karjuma. 2453 02:01:08,240 --> 02:01:12,630 See ikka ei midagi n korda, 0 kuni, kuid mitte võrdne n. 2454 02:01:12,630 --> 02:01:14,540 See tähendab, n kokku korda. 2455 02:01:14,540 --> 02:01:16,540 Ja siis lihtsalt välja printida mida iganes, et string on. 2456 02:01:16,540 --> 02:01:19,060 Nii et ma olen tõesti üldistada See rida koodi. 2457 02:01:19,060 --> 02:01:22,460 Nüüd, kuidas ma ellu köha funktsioon? 2458 02:01:22,460 --> 02:01:25,520 >> Ma võin teha tühiseks köha. 2459 02:01:25,520 --> 02:01:28,501 Ja ma ei saa ikka võtta, kuidas mitu korda soovite köha. 2460 02:01:28,501 --> 02:01:29,250 Aga tead mis? 2461 02:01:29,250 --> 02:01:31,240 Nüüd saan punt öelda. 2462 02:01:31,240 --> 02:01:36,540 >> Ma ei helista sõnaõigus Sõna köha, läbides n. 2463 02:01:36,540 --> 02:01:40,410 Ja kui ma tahan ka rakendada, lihtsalt lõbu pärast, aevastust funktsiooni 2464 02:01:40,410 --> 02:01:42,290 Ma ei aevastama mõned mitu korda. 2465 02:01:42,290 --> 02:01:47,300 Ja ma ei saa hoida taaskasutades n, sest märgata, et m selles kontekstis või ulatus 2466 02:01:47,300 --> 02:01:49,470 eksisteerib ainult selle funktsiooni. 2467 02:01:49,470 --> 02:01:52,767 >> Ja n selles kontekstis ainult eksisteerib see funktsioon siin. 2468 02:01:52,767 --> 02:01:54,600 Nii et me tuleme tagasi Nende küsimuste ulatust. 2469 02:01:54,600 --> 02:02:01,160 Ja siin, ma lihtsalt öelda, achoo ja siis n korda, semikoolon. 2470 02:02:01,160 --> 02:02:04,340 >> Ja nüüd, ma lihtsalt vaja laenata Nende funktsioon allkirjad siin. 2471 02:02:04,340 --> 02:02:06,290 Nii köha on õige. 2472 02:02:06,290 --> 02:02:10,090 Void aevastus on õige nüüd. 2473 02:02:10,090 --> 02:02:12,390 >> Ja ma ikka lihtsalt vaja öelda. 2474 02:02:12,390 --> 02:02:18,990 Nii et ma lähen öelda, ütleme string s, int n, semikoolon. 2475 02:02:18,990 --> 02:02:22,010 Nii et ma olen üle insenerirajatis kuradit välja see programm. 2476 02:02:22,010 --> 02:02:23,760 >> Ja see ei ole tähenda tingimata seda on 2477 02:02:23,760 --> 02:02:26,343 mida sa peaksid tegema, kui kirjalikult isegi kõige lihtsamaid programme. 2478 02:02:26,343 --> 02:02:29,280 Võtke midagi, mis on ilmselt väga lihtne, tõesti lühike, 2479 02:02:29,280 --> 02:02:31,800 ja uuesti rakendada kasutades liiga palju koodi. 2480 02:02:31,800 --> 02:02:34,560 Aga sa tegelikult näha, ja aega tagasi vaadata neid näiteid, 2481 02:02:34,560 --> 02:02:38,610 ja mõistavad, oh, need on sammud võtsime tegelikult üldistada, 2482 02:02:38,610 --> 02:02:40,797 tegur midagi välja, kuni lõpus päeval 2483 02:02:40,797 --> 02:02:42,380 minu kood on tegelikult päris mõistlik. 2484 02:02:42,380 --> 02:02:45,960 Sest kui ma tahan köha kolm korda siis aevastama kolm korda 2485 02:02:45,960 --> 02:02:50,420 Ma lihtsalt lähen uuesti, see, Programm teha köha ja kestab köha. 2486 02:02:50,420 --> 02:02:53,620 Ja mul on kolm köha ja kolm aevastab. 2487 02:02:53,620 --> 02:02:55,990 >> Ja nii see on põhiline paradigma, kui soovite, 2488 02:02:55,990 --> 02:03:00,110 kuidas me võiks minna tegelikult programmi rakendamise. 2489 02:03:00,110 --> 02:03:03,220 Kuid olgem lihtsalt näha nüüd, mis see on oleme teinud kõik see aeg, 2490 02:03:03,220 --> 02:03:06,940 ja mida mõned lõplik tükki Selle taga on lihtne käsk. 2491 02:03:06,940 --> 02:03:09,620 Lõpus päeval oleme kasutanud rõkkama meie tõlkija. 2492 02:03:09,620 --> 02:03:11,494 Me oleme olnud kirjalikult allikas koodi, muutub see 2493 02:03:11,494 --> 02:03:12,820 kaudu rõkkama masinkoodiks. 2494 02:03:12,820 --> 02:03:15,540 >> Ja me oleme kasutanud Tee lihtsalt hõlbustada meie klahvivajutusi nii 2495 02:03:15,540 --> 02:03:20,740 et meil ei ole vaja meeles pidada need incantations rõkkama ise. 2496 02:03:20,740 --> 02:03:22,640 Aga milline on teha tegelikult teeb? 2497 02:03:22,640 --> 02:03:24,750 Ja omakorda, mida on Rõkkama tegelikult teeb? 2498 02:03:24,750 --> 02:03:28,790 >> Selgub, kuigi me oleme lihtsustatud tänane arutelu, öeldes, 2499 02:03:28,790 --> 02:03:33,090 te võtate lähtekoodi, andke seda, kui sisendi koostaja, mis annab teile 2500 02:03:33,090 --> 02:03:35,750 väljund masin koodi, lülitab seal on 2501 02:03:35,750 --> 02:03:37,420 vähe erinevaid etappe sees olemas. 2502 02:03:37,420 --> 02:03:41,940 Ja koostamise juhtub olema katuse tähtaeg terve hulk samme. 2503 02:03:41,940 --> 02:03:43,970 Kuid olgem lihtsalt kiusupunn see välja tõesti kiiresti. 2504 02:03:43,970 --> 02:03:48,070 >> Tuleb välja, et me oleme teinud rohkem asju iga kord, kui ma panna programm, 2505 02:03:48,070 --> 02:03:50,990 või iga kord kui ma koostada programm täna. 2506 02:03:50,990 --> 02:03:55,020 Nii eeltöötlus viitab see-- midagi C programmi 2507 02:03:55,020 --> 02:03:58,720 nagu me näeme ikka ja jälle, mis algab käesoleva hash sümbol, 2508 02:03:58,720 --> 02:04:03,320 või hashtag sümbol siin, tähendab see on eeltöötluse direktiivi. 2509 02:04:03,320 --> 02:04:07,330 See tähendab, antud juhul, hei arvuti, teha midagi selle faili 2510 02:04:07,330 --> 02:04:09,430 enne kui tegelikult koostada oma koodi. 2511 02:04:09,430 --> 02:04:15,220 >> Sel juhul hash hulka tähendab, Sisuliselt C viis öelda, 2512 02:04:15,220 --> 02:04:19,325 hey arvuti, mine saada sisu ning CS50.h ja kleebi need siin. 2513 02:04:19,325 --> 02:04:22,170 Hei arvuti käima saada sisu standard IO.h, 2514 02:04:22,170 --> 02:04:24,690 kus see asub kõvaketas, kleebi see siin. 2515 02:04:24,690 --> 02:04:27,390 Nii et need asjad juhtuvad Esimene ajal eeltöötlus. 2516 02:04:27,390 --> 02:04:28,880 >> Ja rõkkama see kõik meile. 2517 02:04:28,880 --> 02:04:30,510 Ja ta teeb seda nii darn kiire, sa isegi ei 2518 02:04:30,510 --> 02:04:32,000 vaata neli erinevat asju juhtub. 2519 02:04:32,000 --> 02:04:34,100 Aga see esimene selline samm. 2520 02:04:34,100 --> 02:04:35,560 >> Mis tegelikult juhtub? 2521 02:04:35,560 --> 02:04:38,320 Noh, järgmine ametlik samm on koostamisel. 2522 02:04:38,320 --> 02:04:40,385 Ja selgub, et koostamise programm 2523 02:04:40,385 --> 02:04:44,060 tehniliselt tähendab siirdumine lähtekoodi, asju me oleme 2524 02:04:44,060 --> 02:04:47,890 on kirjalikult täna midagi nimetatakse kokkupanek koodi, midagi 2525 02:04:47,890 --> 02:04:49,260 mis näeb välja natuke erinev. 2526 02:04:49,260 --> 02:04:51,050 >> Ja tegelikult, me näeme seda päris kiiresti. 2527 02:04:51,050 --> 02:04:53,890 Lubage mul tegelikult läheb minu IDE. 2528 02:04:53,890 --> 02:04:58,050 Lubage mul minna ja avada hello.c, mis on esimene programm, millega me 2529 02:04:58,050 --> 02:04:59,120 Täna algas. 2530 02:04:59,120 --> 02:05:04,130 Ja las ma minna ja joosta rõkkama natuke teistmoodi, rõkkama-s, hello.c, 2531 02:05:04,130 --> 02:05:07,720 mis tegelikult toimub anna mulle veel üks fail hello.s. 2532 02:05:07,720 --> 02:05:10,330 >> Ja me ilmselt kunagi jälle näha sellist koodi. 2533 02:05:10,330 --> 02:05:13,030 Kui te võtate madalamal tasemel süsteemid klassi nagu CS61, 2534 02:05:13,030 --> 02:05:14,920 näed palju rohkem Sedalaadi koodi. 2535 02:05:14,920 --> 02:05:17,020 Aga see on Assembly. 2536 02:05:17,020 --> 02:05:22,050 See on X86 Assembly et CPU, mis on aluseks 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE tegelikult aru. 2538 02:05:24,460 --> 02:05:27,060 >> Ja segasena, sest see ei otsida, see on midagi 2539 02:05:27,060 --> 02:05:29,180 arvuti mõistab päris hästi. 2540 02:05:29,180 --> 02:05:30,790 Sub q, see on lahutama. 2541 02:05:30,790 --> 02:05:31,660 Seal liigutusi. 2542 02:05:31,660 --> 02:05:35,730 >> Seal helistab funktsioonide siin x Ohring, liikumine, add, pop, 2543 02:05:35,730 --> 02:05:36,430 tagasi. 2544 02:05:36,430 --> 02:05:38,850 Nii et väga madal juhiseid 2545 02:05:38,850 --> 02:05:41,280 mis protsessoriga aru, et Ma vihjas varem. 2546 02:05:41,280 --> 02:05:43,100 Seda Intel Inside. 2547 02:05:43,100 --> 02:05:45,030 >> On mustrid ühtede ja nullide et 2548 02:05:45,030 --> 02:05:51,800 map nende arcanely sõnastatud, kuid mõnevõrra ka nimega, juhiseid, 2549 02:05:51,800 --> 02:05:52,780 niiöelda. 2550 02:05:52,780 --> 02:05:54,780 See juhtub siis, kui kompileerida koodi. 2551 02:05:54,780 --> 02:05:58,560 Saad kokkupanek keele välja, mis 2552 02:05:58,560 --> 02:06:04,680 tähendab kolmas samm on koondada et montaaži kood lõpuks 2553 02:06:04,680 --> 02:06:09,080 masin code-- ühtede ja nullide, mitte teksti, et me just nägin hetk tagasi. 2554 02:06:09,080 --> 02:06:13,370 >> Nii eeltöötlust ei, et leida ja asendada, ja mõned muud asjad. 2555 02:06:13,370 --> 02:06:16,430 Koostamine võtab oma allikas koodi C, lähtekoodi 2556 02:06:16,430 --> 02:06:18,980 et me kirjutasime, montaaži kood, et me lihtsalt vaatas. 2557 02:06:18,980 --> 02:06:22,170 Kokkupanek võtab selle assamblee koodi nullidega ja need 2558 02:06:22,170 --> 02:06:24,680 et CPU tõesti mõista lõpus päeval. 2559 02:06:24,680 --> 02:06:27,630 Ja sidudes on viimane samm mis juhtub us-- uuesti 2560 02:06:27,630 --> 02:06:29,830 nii kiiresti me isegi ei notice--, mis ütleb, 2561 02:06:29,830 --> 02:06:32,460 hey arvuti, võtta kõik nulli ja need, mis 2562 02:06:32,460 --> 02:06:36,750 tulenes koostamisel Davidi koodi ja tema põhiülesanne sel juhul. 2563 02:06:36,750 --> 02:06:39,160 >> Ja hei arvuti, mine saada kõik ühtede ja nullide 2564 02:06:39,160 --> 02:06:42,180 et CS50 töötajad kirjutasid sees CS50 raamatukogu. 2565 02:06:42,180 --> 02:06:43,440 Sega need koos David. 2566 02:06:43,440 --> 02:06:46,648 Ja hei arvuti käima saada kõik nullid ja need, mis keegi kirjutas aastat 2567 02:06:46,648 --> 02:06:47,470 tagasi printf. 2568 02:06:47,470 --> 02:06:49,880 Ja lisada need sisse Kogu asi, et me oleme 2569 02:06:49,880 --> 02:06:52,870 sain ühtede ja nullide on CS50 töötajate ühtede ja nullide, 2570 02:06:52,870 --> 02:06:55,370 printf ühtede ja nullide, ja midagi me kasutame. 2571 02:06:55,370 --> 02:07:00,410 >> Nad kõik saavad koondatakse ühte programmi nimega, antud juhul, tere. 2572 02:07:00,410 --> 02:07:03,141 Nii edaspidi, me lihtsalt kasutada sõna koostamine. 2573 02:07:03,141 --> 02:07:06,390 Ja me peame enesestmõistetavaks, et kui ütleme, koostada oma kava, see tähendab, 2574 02:07:06,390 --> 02:07:08,849 hey teha eeltöötlust, kokkupanek ja sidudes. 2575 02:07:08,849 --> 02:07:11,890 Aga seal on tegelikult mõned mahlane kraam toimub seal all kapuuts. 2576 02:07:11,890 --> 02:07:13,723 Ja eriti kui sa saada uudishimulik mõnda aega, 2577 02:07:13,723 --> 02:07:15,900 võite alustada poking ringi madalamal tasemel. 2578 02:07:15,900 --> 02:07:19,660 Aga nüüd, mõistavad, et hulgast takeaways täna 2579 02:07:19,660 --> 02:07:23,420 On üsna lihtsalt protsessi algusega, 2580 02:07:23,420 --> 02:07:26,700 saada rahul midagi tere. 2581 02:07:26,700 --> 02:07:29,575 Tõepoolest, kõige kohta, mida me tegime täna kindlasti ei upu super kiire. 2582 02:07:29,575 --> 02:07:31,491 Ja see võtab ajal ja mõned praktikas. 2583 02:07:31,491 --> 02:07:33,864 Ja koefitsiendid, siis sorteeri ning tahavad lüüa oma klaviatuuri 2584 02:07:33,864 --> 02:07:34,780 või kisa ekraani. 2585 02:07:34,780 --> 02:07:35,880 Ja kõik see on OK. 2586 02:07:35,880 --> 02:07:38,320 Kuigi, võib-olla proovida ei seda teegi nii palju. 2587 02:07:38,320 --> 02:07:40,820 >> Ja lõpuks, saate oleks võimalik küll, et alustada 2588 02:07:40,820 --> 02:07:44,580 nähes mustrid, nii heas koodi et olete kirjutanud ja vead 2589 02:07:44,580 --> 02:07:45,370 et olete teinud. 2590 02:07:45,370 --> 02:07:48,965 Ja palju nagu protsessi muutumas TF või CA on nagu, 2591 02:07:48,965 --> 02:07:51,590 hakkate parem ja parem nähes neid mustreid, 2592 02:07:51,590 --> 02:07:53,774 ja lihtsalt lahendada oma omad probleemid lõpuks. 2593 02:07:53,774 --> 02:07:56,940 Vahepeal tekib palju meist laenata teile toetust, ja sulle 2594 02:07:56,940 --> 02:07:57,481 läbi selle. 2595 02:07:57,481 --> 02:07:59,450 Ja kirjutada-ups jaoks kõik probleemid 2596 02:07:59,450 --> 02:08:01,366 sa juhatatakse läbi kõik käsud 2597 02:08:01,366 --> 02:08:05,330 et ma kindlasti teada palju harjutamist, mida nüüd, 2598 02:08:05,330 --> 02:08:07,380 aga võiks lennanud üle pea nüüd. 2599 02:08:07,380 --> 02:08:08,580 Ja see on täiesti korras. 2600 02:08:08,580 --> 02:08:11,230 >> Aga lõpuks, sa lähed alustada, et näha mustreid tekkima. 2601 02:08:11,230 --> 02:08:14,260 Ja kui sa varem kõik loll üksikasjad, nagu sulgudes, 2602 02:08:14,260 --> 02:08:16,710 ja looksulg ja semikoolonite, ja värki, öeldes, 2603 02:08:16,710 --> 02:08:19,360 see ei ole üldse intellektuaalselt huvitav. 2604 02:08:19,360 --> 02:08:22,690 Ja see ei ole eesmärki mingeid sissejuhatav klassi. 2605 02:08:22,690 --> 02:08:24,410 See on ideid, mis hakkavad oluline. 2606 02:08:24,410 --> 02:08:26,659 >> See on silmad, ja tingimused ning funktsioone, 2607 02:08:26,659 --> 02:08:30,552 ja jõulisemalt võtmiseks, ja faktooring koodi, 2608 02:08:30,552 --> 02:08:33,510 ja hea disaini ja hea stiili ja lõpuks õigsust 2609 02:08:33,510 --> 02:08:37,330 oma koodi, mis on lõppkokkuvõttes läheb asja kõige. 2610 02:08:37,330 --> 02:08:40,925 Nii et järgmine nädal, võtame need ideed, et me esimest korda nägime Scratch 2611 02:08:40,925 --> 02:08:42,800 ja on nüüd tõlgitud C. Ja hakkame 2612 02:08:42,800 --> 02:08:45,740 tutvustada esimene Muidugi on reaalse maailma domeenid. 2613 02:08:45,740 --> 02:08:50,140 >> Me keskendume maailma julgeolekut, täpsemalt krüptograafiale 2614 02:08:50,140 --> 02:08:51,980 kunst segunemise teavet. 2615 02:08:51,980 --> 02:08:54,000 Ja esimeste seas probleemidest ise 2616 02:08:54,000 --> 02:08:56,840 saavad kirjutada kaugemale mängides mõned süntaks 2617 02:08:56,840 --> 02:08:59,880 ja lahendada mõned loogilised probleeme, lõpuks enne pikk, 2618 02:08:59,880 --> 02:09:03,960 on tegelikult rüselus, või krüpteerida, ja lõpuks lahti teavet. 2619 02:09:03,960 --> 02:09:06,470 Ja kõik, mida me oleme teinud täna, hakkab üsna madal 2620 02:09:06,470 --> 02:09:09,190 tasandil, lihtsalt läheb lubada meil võtta üks, ja üks, 2621 02:09:09,190 --> 02:09:13,550 ja veel üks samm eespool suunas kirjalikult kõige huvitavam kood veel. 2622 02:09:13,550 --> 02:09:15,050 >> Nii enam, et järgmisel nädalal. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [VIDEO PLAYBACK] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> Mida saab räägi mulle viimane kord, kui teda nägin? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 Mida ma oskan öelda, kas tõesti? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 Ma mõtlen, et see oli nagu iga teine pre-production peaproov, 2631 02:09:35,340 --> 02:09:40,510 va ta midagi ütles päris lõpus, et ummikus mind. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -See Oli CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -See Lõigatud kõik, suure töö kohta peaproov. 2636 02:09:52,190 --> 02:09:53,070 >> -See Lõunasööki? 2637 02:09:53,070 --> 02:09:54,986 >> Jah, sina ja suudan haarata võileiva natuke. 2638 02:09:54,986 --> 02:09:58,380 Lubage mul saatkonna koos David tõesti kiiresti. 2639 02:09:58,380 --> 02:09:59,160 David? 2640 02:09:59,160 --> 02:10:01,260 David? 2641 02:10:01,260 --> 02:10:03,110 >> [END PLAYBACK]