1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 1: Olgu. 3 00:00:13,650 --> 00:00:14,390 Tere tulemast tagasi. 4 00:00:14,390 --> 00:00:19,260 See on nädal Kaks CS50, ja meil on siiani kasutades funktsioone, kuid 5 00:00:19,260 --> 00:00:20,830 suuresti võetud neid iseenesestmõistetavaks. 6 00:00:20,830 --> 00:00:23,430 Oleme kasutanud printf mis on kõrvalmõju trükkimine 7 00:00:23,430 --> 00:00:24,110 asjad ekraanil. 8 00:00:24,110 --> 00:00:25,790 Oleme kasutanud get-int, saada hõljuda. 9 00:00:25,790 --> 00:00:29,230 >> Aga mis siis, kui sa tegelikult tahad luua oma funktsioone, nagu mõned 10 00:00:29,230 --> 00:00:31,740 võite on juba alustanud teha Ülesanded Üks, kuigi 11 00:00:31,740 --> 00:00:33,140 mitte tingimata vajalik? 12 00:00:33,140 --> 00:00:37,150 Noh, lähme edasi ja vaadata, et probleem lihtsalt paludes kasutaja 13 00:00:37,150 --> 00:00:40,660 oma nimi ja trükkimine midagi ekraan, kuid proovige tegurdada mõned 14 00:00:40,660 --> 00:00:44,000 Euroopa ühtsust, mida me oleme näha meie kood siiani. 15 00:00:44,000 --> 00:00:45,120 Nii et ma mõtlen järgmise. 16 00:00:45,120 --> 00:00:47,315 >> Ma lähen edasi minna ja luua uus programm, helistage 17 00:00:47,315 --> 00:00:49,320 see hello.c nagu tavaliselt. 18 00:00:49,320 --> 00:00:53,730 Ma lähen edasi minna ja mina sisaldavad standard io.h ülaosas. 19 00:00:53,730 --> 00:00:57,040 Ma lähen ka siis ennast preemptively CS50 raamatukogu, nii et 20 00:00:57,040 --> 00:00:59,080 Ma ei saa aru karjus poolt tõlkija. 21 00:00:59,080 --> 00:01:02,400 Ja nüüd ma lähen edasi minna ja deklareerima int, peamine, tühine. 22 00:01:02,400 --> 00:01:09,020 >> Ja siis siin, see on koht, kus ma tahan alustada tellida funktsionaalsust 23 00:01:09,020 --> 00:01:12,090 mõne muu funktsiooni, et ma ise olen kavatsen kirjutada, kuid see ei 24 00:01:12,090 --> 00:01:13,820 praegu ei ole. 25 00:01:13,820 --> 00:01:19,210 Oletame näiteks, et ma tahtsin kirjutada funktsioon, mis võimaldab mul 26 00:01:19,210 --> 00:01:23,830 välja printida tere, koma ja siis mõned kasutaja nimi. 27 00:01:23,830 --> 00:01:29,010 Selle asemel, et jätkata seda, printf Tere,% s, kas ei oleks tore, kui 28 00:01:29,010 --> 00:01:33,380 oli lihtsalt funktsiooni nimega ei printf kuid print nimi? 29 00:01:33,380 --> 00:01:36,600 >> Nii teisisõnu, ma tahan, et oleks võimalik Kirjutada programm, mis teeb veidi 30 00:01:36,600 --> 00:01:37,710 midagi sellist. 31 00:01:37,710 --> 00:01:42,070 Esiteks, ma lähen ütlen printf oma nimi, mis ajendades kasutajal 32 00:01:42,070 --> 00:01:46,150 anna mulle tema nime, ja siis ma olen kavatse kasutada tuttav string s 33 00:01:46,150 --> 00:01:47,290 kuulutada string. 34 00:01:47,290 --> 00:01:50,420 Anna tüüpi muutuja stringi kutsume seda s ning kaupluse, et 35 00:01:50,420 --> 00:01:52,120 kaasa kutsudes saada string. 36 00:01:52,120 --> 00:01:56,060 Aga nüüd nädalat varem, oleksin veidi igavalt tehtud tere,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> Ja Teisisõnu, me oleme näinud selles Näiteks kamp korda, ja see on 39 00:02:02,570 --> 00:02:05,280 triviaalne näide, sest seal on vaid üks koodirida nii see tõesti ei ole 40 00:02:05,280 --> 00:02:06,860 suur asi, et hoida kirjutades uuesti. 41 00:02:06,860 --> 00:02:09,990 Aga oletame, et see rida koodi tegelikult olid koormata, ja 42 00:02:09,990 --> 00:02:12,900 see ei ole üks rida koodi, kuid see on 10 rida koodi paar nädalat nüüd, 43 00:02:12,900 --> 00:02:15,190 ja sa oled lihtsalt väsinud kopeerimine ja kleepimine või 44 00:02:15,190 --> 00:02:17,180 tippida sama kood. 45 00:02:17,180 --> 00:02:22,100 Kas poleks tore, selle asemel et teha printf Tere,% s ja nii edasi, 46 00:02:22,100 --> 00:02:26,500 kas ei oleks tore, kui seal oli lihtsalt funktsioon nimega print nimi 47 00:02:26,500 --> 00:02:27,560 võtab argument - 48 00:02:27,560 --> 00:02:29,120 Teisisõnu, see võtab sisend - 49 00:02:29,120 --> 00:02:30,620 ja siis semikoolon. 50 00:02:30,620 --> 00:02:33,240 Nii et funktsioon, kas ei oleks Ole kena, kui see on olemas? 51 00:02:33,240 --> 00:02:36,690 Siis ma ei pea muretsema mida printf on, mida% s ja kõik 52 00:02:36,690 --> 00:02:39,400 neid keerukusi, mis on ei ole kõik nii huvitav. 53 00:02:39,400 --> 00:02:40,570 Need on kasulikud. 54 00:02:40,570 --> 00:02:44,700 >> Nii print nimi kahjuks ei olnud leiutas umbes 40 pluss aastat tagasi. 55 00:02:44,700 --> 00:02:45,980 Keegi arvas, et kirjutada seda. 56 00:02:45,980 --> 00:02:48,300 Aga mis on ilu, millel programmeerimiskeel, just nagu 57 00:02:48,300 --> 00:02:52,930 Scratch saate määrata kohandatud plokid, nii C ja kõige tahes keeles, sa saad 58 00:02:52,930 --> 00:02:57,260 määrata oma funktsiooni, saate sa määrata oma funktsioone. 59 00:02:57,260 --> 00:03:01,710 Nii et kuigi me saame peamine poolt automaatselt vabaks saame kuulutada 60 00:03:01,710 --> 00:03:02,730 oma funktsioone. 61 00:03:02,730 --> 00:03:05,670 >> Ma lähen tegema ruumi siin üleval ja ma lähen kuulutada minu 62 00:03:05,670 --> 00:03:08,210 oma funktsiooni, et läheb otsima natuke imelik alguses, kuid me tuleme 63 00:03:08,210 --> 00:03:09,400 tagasi selle enne pikk. 64 00:03:09,400 --> 00:03:12,310 Ma lähen ütlen tühine, seega näitab see funktsioon teeb 65 00:03:12,310 --> 00:03:16,040 midagi, on kõrvaltoime, kuid see ei tagasta mulle midagi 66 00:03:16,040 --> 00:03:18,810 Samamoodi, et saada int või saada string ise teeb. 67 00:03:18,810 --> 00:03:22,450 Ja ma annan selle funktsiooni nimi print nimi, ja ma lähen 68 00:03:22,450 --> 00:03:26,470 täpsustada, et see mees ei kavatse võtta string, ja ma lähen, et helistada, et 69 00:03:26,470 --> 00:03:27,600 string nimi. 70 00:03:27,600 --> 00:03:32,100 Ma võiksin nimetada seda, mida tahan, vaid ma tahan oma kood olla füüsilisest isikust dokumenteerimine. 71 00:03:32,100 --> 00:03:34,770 Teisisõnu, kui üks sa olid seda faili avada ja seda lugeda, siis võib 72 00:03:34,770 --> 00:03:39,020 omamoodi järeldavad nime, et sisend, millist rolli see peaks mängima. 73 00:03:39,020 --> 00:03:42,270 >> Ja nüüd alla, et ma lähen avama lokkis traksidega ja suletud lokkis traksidega, 74 00:03:42,270 --> 00:03:47,140 ja nii teate Olen järginud sama mustri rida neli läbi seitse nagu 75 00:03:47,140 --> 00:03:51,622 Olen jälginud hea nädal pluss nüüd vahel, ütleme, read üheksa ja 76 00:03:51,622 --> 00:03:53,400 14, mis moodustavad peamise. 77 00:03:53,400 --> 00:03:56,160 Teisisõnu, printida nimi on teine ​​funktsioon. 78 00:03:56,160 --> 00:03:58,990 Nüüd koostaja ei kavatse teada helistada see asi automaatselt 79 00:03:58,990 --> 00:04:02,670 sest ma sõna otseses mõttes lihtsalt leiutas selle, kuid ta ei tea veel helistada peamine 80 00:04:02,670 --> 00:04:08,710 automaatselt ja siis muidugi line 13 kutsun ma oma funktsiooni. 81 00:04:08,710 --> 00:04:12,805 Ja kuna ma olen teatanud, et funktsioon up line neli enne peamisi, 82 00:04:12,805 --> 00:04:16,579 see läheb õpetama koostaja mida tsiteerin lõppeb, "print nimi" 83 00:04:16,579 --> 00:04:18,140 tähendab ja mida ta peaks tegema. 84 00:04:18,140 --> 00:04:22,700 Nii et ma olen omamoodi annab see uue kohandatud blokeerida kontekstis, ütleme, nullist. 85 00:04:22,700 --> 00:04:27,240 >> Nii et siin, ma ei saa panna, et väga sage või korduv muster kood Hoian 86 00:04:27,240 --> 00:04:32,300 kirjalikult klassi printf % S Tere,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 Mida ma tahan panna siia? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Nii et ma tahan panna nimi selles kontekstis. 91 00:04:41,420 --> 00:04:43,440 Nii märkate natuke dihhotoomia siin. 92 00:04:43,440 --> 00:04:47,680 Sest ma kuulutan oma funktsiooni ja ma olen mõnevõrra meelevaldselt nimetatakse 93 00:04:47,680 --> 00:04:50,880 see trükkida nimi ja kuna ma olen sulgudes täpsustatud, et see 94 00:04:50,880 --> 00:04:55,035 Funktsioon üks argument, tüüp mis on string - nii et see on sõna 95 00:04:55,035 --> 00:05:00,010 või fraas või midagi sellist - ja Ma helistan, et argument nimi, et 96 00:05:00,010 --> 00:05:04,770 sugugi ainus muutuja, mis on in reguleerimisala, nii et rääkida, on nimi. 97 00:05:04,770 --> 00:05:07,780 >> S ainult vahel, mida kaks looksulg muidugi? 98 00:05:07,780 --> 00:05:12,990 Noh tegelikult, nagu liin 10 kaudu 14, nii lihtsalt meeldib esmaspäeval ei saa kasutada 99 00:05:12,990 --> 00:05:17,650 S, kuid see, mida ma teha saan, on edasi S arvesse print nimi. 100 00:05:17,650 --> 00:05:21,030 Trüki nimi lihtsalt nii juhtub, et anda sellele alias, sünonüüm, hüüdnimi, 101 00:05:21,030 --> 00:05:24,400 nimetades seda nime, ja nüüd kasuta seda joont. 102 00:05:24,400 --> 00:05:26,840 Nüüd lubage mul päästa see, zoom out. 103 00:05:26,840 --> 00:05:31,250 >> Lubage mul minna ja teha tere. 104 00:05:31,250 --> 00:05:32,400 Paistab hea. 105 00:05:32,400 --> 00:05:36,110 Ei sülitama vigu. . / Hello Enter. 106 00:05:36,110 --> 00:05:37,020 Mis mu nimi on? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 Ja tere David. 109 00:05:39,270 --> 00:05:41,820 Nii et mitte kõik, põnev, kuid mõtle nüüd. 110 00:05:41,820 --> 00:05:44,310 Nüüd on teil, et sama koostisosa nagu me tegime Scratch et 111 00:05:44,310 --> 00:05:45,420 teha oma funktsioone. 112 00:05:45,420 --> 00:05:46,770 >> Aga seal on natuke gotcha. 113 00:05:46,770 --> 00:05:50,620 Oletame, et ma ei olnud tõesti arvasin see läbi ja ma tegelikult ilma 114 00:05:50,620 --> 00:05:54,250 tegelikult mõtlesin selle kirjutas et funktsioon siin. 115 00:05:54,250 --> 00:05:55,420 Tundub täiesti mõistlik. 116 00:05:55,420 --> 00:05:58,440 Scratch puudub mõiste Asukoha oma skripte. 117 00:05:58,440 --> 00:06:00,670 Sa võiksid panna ühe siia, üks siin, üks siin, ja see võib hakata 118 00:06:00,670 --> 00:06:03,310 vaadata veidi räpane, kui te ei näha seda korralikult, kuid see ei ole 119 00:06:03,310 --> 00:06:05,910 oluline, kus füüsiliselt skriptid olid ekraanil. 120 00:06:05,910 --> 00:06:09,660 Kahjuks C - ja see on erinevalt keeltes nagu Java ja Python 121 00:06:09,660 --> 00:06:13,600 ja teised, et võite olla tuttav koos - kahjuks C, et temal 122 00:06:13,600 --> 00:06:15,830 oluline, sest vaata, mis on juhtub nüüd. 123 00:06:15,830 --> 00:06:19,010 >> Vaikefunktsioon mis toimub täitmiseks on muidugi põhiline. 124 00:06:19,010 --> 00:06:22,290 Main läheb helistada print nime line kaheksa, kuid kahjuks 125 00:06:22,290 --> 00:06:26,660 koostaja ei tea isegi, et print nimi olemas enne, kui see jõuab liini 11, 126 00:06:26,660 --> 00:06:28,520 mis kahjuks on saab olema liiga hilja. 127 00:06:28,520 --> 00:06:30,660 Teeme teha tere. 128 00:06:30,660 --> 00:06:32,950 Ja nüüd neetud, kaks viga tekkinud. 129 00:06:32,950 --> 00:06:36,050 Nüüd lubage mul kerida kuni väga Esiteks, nagu me alati teeme, ja 130 00:06:36,050 --> 00:06:39,560 märgata, et see on minu peale karjumine, "Kaudne deklaratsiooni funktsioon 131 00:06:39,560 --> 00:06:40,540 prindi nimi. " 132 00:06:40,540 --> 00:06:43,860 >> Nii et me oleme näinud seda enne sõnumi, kaudne deklaratsiooni funktsioon. 133 00:06:43,860 --> 00:06:48,080 Millal me oleme näinud, et selline viga? 134 00:06:48,080 --> 00:06:49,180 Kui ma ei sisaldanud raamatukogu. 135 00:06:49,180 --> 00:06:53,470 Kui ma unustasin cs50.h ja ma saaksin karjus eest saada string või saada int. 136 00:06:53,470 --> 00:06:56,880 Aga sel juhul, selle funktsiooni print nime pole raamatukogu, eks? 137 00:06:56,880 --> 00:07:00,230 See on sõna otseses mõttes seda pilti, nii et mida on tõesti probleem? 138 00:07:00,230 --> 00:07:04,660 >> Noh kahjuks C, kulub teil nii uskumatult sõnalt, et kui sa 139 00:07:04,660 --> 00:07:08,640 soovite funktsiooni nimetatakse print nime olemas, siis kas rakendada 140 00:07:08,640 --> 00:07:11,940 mis toimivad väga peal oma koodi nii, et see on kättesaadav alandada 141 00:07:11,940 --> 00:07:15,070 funktsioone, kuid ausalt öeldes, et muutub lohakas väga kiiresti. 142 00:07:15,070 --> 00:07:18,160 Isiklikult mulle meeldib panna peamised esimene sest siis on väga selge, mida see 143 00:07:18,160 --> 00:07:19,890 programm teeb esimesel pilgul. 144 00:07:19,890 --> 00:07:23,290 Ja pluss, võite sattuda kummaline nurgas kui siis, kui x tahab helistada 145 00:07:23,290 --> 00:07:27,530 y kuid y võib helistada x, sa lihtsalt füüsiliselt ei saa tegelikult panna üks 146 00:07:27,530 --> 00:07:28,540 peale. 147 00:07:28,540 --> 00:07:31,230 >> Aga selgub, C, saame lahendada väga lihtsalt. 148 00:07:31,230 --> 00:07:34,010 Ma panen natuke ruumi siin, ja ma olen lihtsalt läheb 149 00:07:34,010 --> 00:07:38,170 ennetavalt, ehkki mõnevõrra liigselt, mida kavatsetakse õpetama hakata 150 00:07:38,170 --> 00:07:42,320 koostaja, et on olemas funktsioon nimetatakse print nimi, see võtab stringi, 151 00:07:42,320 --> 00:07:46,330 ja ma lähen helistada see nimi semikooloniga. 152 00:07:46,330 --> 00:07:50,220 >> Nii see nüüd vastavalt neli, mis me pole enne näinud, on deklaratsioon 153 00:07:50,220 --> 00:07:53,940 ning funktsiooni print nimi, kuid see on ainult luban, et see funktsioon 154 00:07:53,940 --> 00:07:56,620 lõpuks tuleb määratleda, lõpuks rakendada. 155 00:07:56,620 --> 00:08:00,180 See nüüd ma ei jäta üksi, sest Nüüd on see mõiste, 156 00:08:00,180 --> 00:08:04,090 rakendamise, omamoodi viimane miil rakendamise selles 157 00:08:04,090 --> 00:08:05,130 Konkreetse funktsiooni. 158 00:08:05,130 --> 00:08:08,450 Nii öeldes on see loll, see on tüütu, kuid see on tee C on, ja see on 159 00:08:08,450 --> 00:08:12,050 sest see viib teid väga sõna-sõnalt ja, kui arvuti öeldes peaks 160 00:08:12,050 --> 00:08:16,020 ainult ei täpselt, mida sa öelda seda, et teha, ja nii, et tellimine on oluline. 161 00:08:16,020 --> 00:08:18,940 >> Nii et hoidke seda silmas pidades, ja jälle hakata teate kordumise mustrid. 162 00:08:18,940 --> 00:08:21,850 Koefitsiendid on teil, kui te pole juba alustada kogevad sõnumeid 163 00:08:21,850 --> 00:08:24,700 nagu see, mis esmapilgul tunduvad täiesti segasena, kuid kui te alustate 164 00:08:24,700 --> 00:08:29,000 otsida need märksõnad nagu "Kaudne avaldus," mainitakse 165 00:08:29,000 --> 00:08:32,380 funktsioon sel juhul - ja ausalt, siis mõnikord isegi natuke roheline 166 00:08:32,380 --> 00:08:35,010 porgand sümbol, mis ütleb teile, kui küsimus ilmselt on - 167 00:08:35,010 --> 00:08:40,980 võite alustada tööd teed kaudu veel nähtamatu veateateid. 168 00:08:40,980 --> 00:08:45,860 Kõik küsimused on kirjalikult oma oma funktsiooni niimoodi? 169 00:08:45,860 --> 00:08:47,540 >> Teeme midagi, mis on natuke selgem. 170 00:08:47,540 --> 00:08:51,760 Selle asemel, et lihtsalt midagi teha, mis on kõrvalmõju trükkimine, lase mul minna 171 00:08:51,760 --> 00:08:55,340 minna ja salvestada uus fail ja me nimetame seda positive.c, kuigi see on 172 00:08:55,340 --> 00:08:57,600 kavatse olla natuke erinev versus viimast korda. 173 00:08:57,600 --> 00:09:01,910 Ja see kord, ma tahan uuesti rakendada viimane aeg on positive.C näiteks mis 174 00:09:01,910 --> 00:09:04,430 on sundida kasutaja anda mulle positiivne täisarv. 175 00:09:04,430 --> 00:09:07,280 Aga mul oli kasutada saada int viimast korda. 176 00:09:07,280 --> 00:09:10,780 Kas poleks olnud tore, kui seal oli funktsiooni nimetatakse saada positiivne int 177 00:09:10,780 --> 00:09:13,610 et ma võiks lihtsalt osta see tükk funktsionaalsust? 178 00:09:13,610 --> 00:09:16,480 Seega erinevus on selles, paneme rakendama saada positiivne int, kuid erinevalt 179 00:09:16,480 --> 00:09:20,330 print nimi mis oli kõrvalmõju - see ei andnud mulle midagi nagu 180 00:09:20,330 --> 00:09:21,710 number või string - 181 00:09:21,710 --> 00:09:25,510 saada positiivne int on muidugi läheb tagasi loodetavasti positiivne int. 182 00:09:25,510 --> 00:09:26,170 >> Teeme seda. 183 00:09:26,170 --> 00:09:30,840 Kaasa cs50.h sisaldab standard io.h. 184 00:09:30,840 --> 00:09:33,520 Int main tühine. 185 00:09:33,520 --> 00:09:42,160 Ja nüüd siin, ma lähen edasi minna ja oletame int, nimetame seda n, võrdub 186 00:09:42,160 --> 00:09:44,270 saada positiivne int. 187 00:09:44,270 --> 00:09:49,080 Ja just nagu saada int juba olemas sest töötajad kirjutas ta, ma lähen 188 00:09:49,080 --> 00:09:53,950 eeldada, et praegu, et saada positiivse int olemas, ja nüüd ma lähen 189 00:09:53,950 --> 00:09:57,730 minna ja öelda printf, tänud% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Nüüd, kui ma kompileerida seda programmi, mida juhtub minu terminal 192 00:10:07,770 --> 00:10:09,075 akna allosas ekraani? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Ma ilmselt saan et sama viga nagu enne. 195 00:10:13,900 --> 00:10:14,570 Seega proovime seda. 196 00:10:14,570 --> 00:10:16,450 Tee positiivne. 197 00:10:16,450 --> 00:10:19,900 Ja jälle kaudne deklaratsioon funktsiooni, saate positiivse int. 198 00:10:19,900 --> 00:10:21,970 Nii saame lahendada seda paar võimalust. 199 00:10:21,970 --> 00:10:27,310 Ma lähen hoida lihtsa ja lihtsalt panen avaldus siin ja saada 200 00:10:27,310 --> 00:10:28,120 positiivse int. 201 00:10:28,120 --> 00:10:29,720 Mul on vaja nn allkirja. 202 00:10:29,720 --> 00:10:32,410 Allkiri lihtsalt viitab et esteetika 203 00:10:32,410 --> 00:10:34,090 esimesel real on programmi. 204 00:10:34,090 --> 00:10:37,420 Niisiis, mida peaks saama positiivne int tagasi? 205 00:10:37,420 --> 00:10:37,970 >> Nii int. 206 00:10:37,970 --> 00:10:41,540 Ma mõtlen ideaalis oleks tagasi midagi positiivset int, kuid et 207 00:10:41,540 --> 00:10:42,160 ei ole olemas. 208 00:10:42,160 --> 00:10:45,280 Me ei ole näinud, et üks meie andmed tüüpi, nii et me peame tegelema 209 00:10:45,280 --> 00:10:47,170 Asjaolu, et meil on väga vähe andmetüübid töötada. 210 00:10:47,170 --> 00:10:50,360 Aga me ei saa tagasi int ja lihtsalt usun, et see saab olema positiivne. 211 00:10:50,360 --> 00:10:52,690 See saab nimetada saada positiivne int. 212 00:10:52,690 --> 00:10:55,122 >> Ja nüüd, kui umbes tema argumendid? 213 00:10:55,122 --> 00:10:56,440 Kas see võtab iga sisend? 214 00:10:56,440 --> 00:10:58,280 Kas see vaja sisend? 215 00:10:58,280 --> 00:11:00,900 Nii et see ei ole vaja teada, ette midagi. 216 00:11:00,900 --> 00:11:03,220 Hangi string ei, saad int ei ole. 217 00:11:03,220 --> 00:11:06,430 Printf ei - see peab olema mingi input läks see - ja print nimi 218 00:11:06,430 --> 00:11:09,020 vaja mingit sisendit, kuid saavad positiivse int ei ole. 219 00:11:09,020 --> 00:11:11,530 Nii et ma lähen selgesõnaliselt ütle koostaja tühine. 220 00:11:11,530 --> 00:11:13,470 Void on ilma midagi muud. 221 00:11:13,470 --> 00:11:17,990 Nii void tähenda midagi läheb sees need sulgudesse, semikoolon. 222 00:11:17,990 --> 00:11:20,840 >> Ja nüüd allosas minu faili - ja jälle, ma olen lihtsalt selline anal 223 00:11:20,840 --> 00:11:23,640 siin paneb peamise ülaosas, mis on hea tava, kuna see viis, 224 00:11:23,640 --> 00:11:26,220 millal teie või keegi teine avab faili 225 00:11:26,220 --> 00:11:27,400 funktsionaalsus on seal. 226 00:11:27,400 --> 00:11:29,660 Võite sukelduda alates algusest. 227 00:11:29,660 --> 00:11:34,190 Nüüd ma lähen korrata seda, saada positiivne int tühine, aga ma ei ole 228 00:11:34,190 --> 00:11:35,430 läheb löögi semikooloniga nüüd. 229 00:11:35,430 --> 00:11:38,280 Ma lähen avama looksulg, ja nüüd ma pean laenama 230 00:11:38,280 --> 00:11:39,700 mõned ideed esmaspäevast. 231 00:11:39,700 --> 00:11:44,450 >> Nii nagu te mäletate, me tegime midagi meeldib teha järgmist ajal 232 00:11:44,450 --> 00:11:45,830 midagi on tõsi. 233 00:11:45,830 --> 00:11:46,630 Ja mida ma tegin? 234 00:11:46,630 --> 00:11:51,540 Ma tegin midagi anda mulle positiivne täisarv, 235 00:11:51,540 --> 00:11:52,430 natuke kiire. 236 00:11:52,430 --> 00:11:53,540 Ma ei kasuta sõnu, mida ma tahan. 237 00:11:53,540 --> 00:11:54,960 Ja siis ma kasutasin mida? 238 00:11:54,960 --> 00:11:59,530 Int n võrdub saada int, argumente pole seda. 239 00:11:59,530 --> 00:12:00,550 >> Ja märgata erinevust. 240 00:12:00,550 --> 00:12:04,680 Kui te helistate funktsiooni, kui kasutate funktsiooni, siis ei panna tühine. 241 00:12:04,680 --> 00:12:08,570 Sa ainult seda deklareerimisel funktsioon, õpetades koostaja mida 242 00:12:08,570 --> 00:12:09,780 tuleb oodata. 243 00:12:09,780 --> 00:12:11,650 Nii et sa ei pea tegema void seal ise. 244 00:12:11,650 --> 00:12:12,940 >> Ja nüüd, mis oli minu tingimus? 245 00:12:12,940 --> 00:12:19,670 Noh, n ei võrdu positiivne, kuid see on vaid pseudo-kood. 246 00:12:19,670 --> 00:12:22,530 Niisiis, kuidas ma väljendada seda puhtamalt? 247 00:12:22,530 --> 00:12:24,090 Nii on väiksem või võrdne nulliga. 248 00:12:24,090 --> 00:12:26,250 Nii et taas, teate saate teha väiksem või võrdne. 249 00:12:26,250 --> 00:12:28,100 Kuigi see on kaks eraldi sümboleid, saate seda teha 250 00:12:28,100 --> 00:12:29,350 klaviatuuri kui sellist. 251 00:12:29,350 --> 00:12:33,950 >> Aga seal on veel viga, mis Ma silmamunad viimane kord ka. 252 00:12:33,950 --> 00:12:36,950 Ma pean deklareerima - 253 00:12:36,950 --> 00:12:37,460 täpselt. 254 00:12:37,460 --> 00:12:39,640 Ma pean deklareerima n väljaspool silmus. 255 00:12:39,640 --> 00:12:44,180 Nii et ma vaja panna n siia üles, ja Ma ei ole soovite uuesti kuulutada siin 256 00:12:44,180 --> 00:12:46,480 et ma saan uue muutuja. 257 00:12:46,480 --> 00:12:48,860 Ma lihtsalt tahan, et määrata väärtus siin. 258 00:12:48,860 --> 00:12:54,320 >> Ja nüüd ma ei ole päris teha siin. 259 00:12:54,320 --> 00:12:57,290 Las ma saan enne ise ja teeselda, ma olen teinud. 260 00:12:57,290 --> 00:13:01,220 Tee positiivne ja nüüd seal on uus viga. 261 00:13:01,220 --> 00:13:04,550 Kontroll jõuab lõpuks mitte tühine funktsioon. 262 00:13:04,550 --> 00:13:07,760 Nii uus veateadet, aga kui sa lahke kohta tease peale iga sõna, see 263 00:13:07,760 --> 00:13:09,620 Ilmselt vihjab mis viga. 264 00:13:09,620 --> 00:13:11,240 >> Kontrollida. 265 00:13:11,240 --> 00:13:14,250 Kontroll tähendab lihtsalt, et operatsioonide programm. 266 00:13:14,250 --> 00:13:16,510 Arvuti kontrolli ja midagi läks valesti. 267 00:13:16,510 --> 00:13:18,510 Nii et see jõuab lõpuks mitte tühine funktsioon. 268 00:13:18,510 --> 00:13:21,760 Mis funktsioon on see ilmselt viidates? 269 00:13:21,760 --> 00:13:24,790 Mis ülesanne on mitte-tühine? 270 00:13:24,790 --> 00:13:27,400 Nii et saada positiivne int ja natuke segane, et hästi, 271 00:13:27,400 --> 00:13:29,010 see on selline tühine. 272 00:13:29,010 --> 00:13:33,070 See on kirjeldus void oma argumente, kuid tema toodang läheb 273 00:13:33,070 --> 00:13:34,540 olema tüüpi n. 274 00:13:34,540 --> 00:13:37,260 Nii sõna vasakul on niinimetatud tagastab tüüp. 275 00:13:37,260 --> 00:13:40,320 Sõna sees siin null või rohkem argumente 276 00:13:40,320 --> 00:13:41,970 et funktsioon võtab. 277 00:13:41,970 --> 00:13:44,060 >> Mida ma pean tegema? 278 00:13:44,060 --> 00:13:47,650 Siinkohal minu kood, joon 21, kus vilgub kiire praegu, ma 279 00:13:47,650 --> 00:13:51,430 positiivne int sees muutuja nimega n. 280 00:13:51,430 --> 00:13:55,200 Kuidas ma annan selle tagasi main? 281 00:13:55,200 --> 00:13:55,960 Sõna otseses mõttes. 282 00:13:55,960 --> 00:13:59,320 Tagasi n semikooloniga. 283 00:13:59,320 --> 00:14:04,090 >> Nii nagu Colton tagasi tükk paberile vastus mind visates 284 00:14:04,090 --> 00:14:07,020 et paberile väike must kast laual, seda teha 285 00:14:07,020 --> 00:14:10,100 koodi, siis sõna otseses mõttes lihtsalt kirjutada, tagasi n, ja see on nii, nagu Colton olid 286 00:14:10,100 --> 00:14:12,140 jagab mulle midagi füüsilist tagasi. 287 00:14:12,140 --> 00:14:15,870 Sel juhul, mis juhtub, on saada positiivse int läheb tagastama 288 00:14:15,870 --> 00:14:19,220 mis eeldatavasti positiivne täisarv kellele? 289 00:14:19,220 --> 00:14:21,380 Kuhu see raha lõpuks? 290 00:14:21,380 --> 00:14:29,080 See jõuab see muutuja, n, ja siis astume line üheksa. 291 00:14:29,080 --> 00:14:31,920 >> Nii teisisõnu, järjekorras toimingud, see programm hakkab 292 00:14:31,920 --> 00:14:34,430 täidesaatva ja koostaja mõistab, oh, sa tahad raamatukogu? 293 00:14:34,430 --> 00:14:36,310 Lubage mul minna haarata kõike, mis on sees, et. 294 00:14:36,310 --> 00:14:37,750 Oh, sa tahad standard IO raamatukogu? 295 00:14:37,750 --> 00:14:39,660 Lubage mul minna haarata kõike, mis on sees, et. 296 00:14:39,660 --> 00:14:44,510 Mis koostaja ütlen ise kui see tabab rida neli? 297 00:14:44,510 --> 00:14:47,980 Oh, sa lubasid, et rakendada funktsiooni nimetatakse saada positiivne, kuid 298 00:14:47,980 --> 00:14:50,820 me jõuame hiljem tagasi, midagi sarnast. 299 00:14:50,820 --> 00:14:53,450 >> Int main void lihtsalt tähendab siin julgust oma programmi. 300 00:14:53,450 --> 00:14:54,990 Line seitse on lihtsalt lokkis traksidega. 301 00:14:54,990 --> 00:14:59,540 Line kaheksa ütleb vasakul, anna minu 32-bitise täisarvu, nimetame seda n. 302 00:14:59,540 --> 00:15:02,160 Paremal pool, see on öeldes saan positiivse int. 303 00:15:02,160 --> 00:15:07,120 Nüüd paus, et lugu, sest nüüd Ma ei liigu edasi minu kursor alla. 304 00:15:07,120 --> 00:15:11,720 Minu kursor nüüd loojub siin, sest nüüd saan positiivse int hukatakse. 305 00:15:11,720 --> 00:15:13,100 Int n deklareeritakse. 306 00:15:13,100 --> 00:15:14,040 Tehke järgmist. 307 00:15:14,040 --> 00:15:16,090 Printf annab mulle positiivne täisarv. 308 00:15:16,090 --> 00:15:19,740 >> Get int kasutaja, hoidke seda n, ja võib-olla seda uuesti ja uuesti. 309 00:15:19,740 --> 00:15:23,010 See ahel tähendab, et see kood võib täitma üles-alla nagu see uuesti 310 00:15:23,010 --> 00:15:25,810 ja uuesti, kuid kui kasutaja lõpuks koostööd ja annab mulle positiivne 311 00:15:25,810 --> 00:15:31,750 int, ma tabanud rida 21, kus punkt number antakse tagasi, ja kus üks 312 00:15:31,750 --> 00:15:34,280 ma peaks esile nüüd? 313 00:15:34,280 --> 00:15:35,070 Üheksa. 314 00:15:35,070 --> 00:15:39,010 Kontrolli, nii et rääkida, tagastab liinile üheksa. 315 00:15:39,010 --> 00:15:40,650 See on joon, mis on nüüd tasuta. 316 00:15:40,650 --> 00:15:43,250 >> Nii et mis siin juhtunud kõik seekord all kapuuts, kuid 317 00:15:43,250 --> 00:15:46,480 kui meil kasutada funktsioone nagu printf või isegi saada string, et keegi 318 00:15:46,480 --> 00:15:50,600 kirjutas teie jaoks, kontroll oli sunnitud edasi off kellegi koodi rida 319 00:15:50,600 --> 00:15:51,290 poolt rida-realt. 320 00:15:51,290 --> 00:15:53,770 See on lihtsalt me ​​ei näe seda ja me ei saa tõesti kirjeldada seda selles 321 00:15:53,770 --> 00:15:57,620 programm, sest see on mõnes muus faili kõvakettale 322 00:15:57,620 --> 00:16:00,000 meile teadmata. 323 00:16:00,000 --> 00:16:02,100 Teeme tegelikult kompileerida ja kasutada seda nüüd. 324 00:16:02,100 --> 00:16:03,890 >> Tee positiivne. 325 00:16:03,890 --> 00:16:05,260 Koguda, et see edu. 326 00:16:05,260 --> 00:16:06,650 . / Positiivne. 327 00:16:06,650 --> 00:16:08,020 Anna positiivne täisarv. 328 00:16:08,020 --> 00:16:08,800 Olgem raske. 329 00:16:08,800 --> 00:16:10,430 Negatiivne 1. 330 00:16:10,430 --> 00:16:11,360 Zero. 331 00:16:11,360 --> 00:16:13,370 Anname ta 50. 332 00:16:13,370 --> 00:16:18,100 Täname 50, ja nii kontroll on nüüd tagasi. 333 00:16:18,100 --> 00:16:21,750 Kõik küsimused, siis on seda? 334 00:16:21,750 --> 00:16:23,180 Jah? 335 00:16:23,180 --> 00:16:25,630 >> [Kuuldamatu]. 336 00:16:25,630 --> 00:16:26,130 >> Ütle uuesti. 337 00:16:26,130 --> 00:16:27,860 Oh, hea küsimus. 338 00:16:27,860 --> 00:16:31,100 Nii võite märgata paralleelselt siin, et Ma olen selline lõikamine nurgas. 339 00:16:31,100 --> 00:16:35,420 Vastavalt 12, ma väidan, saad positiivse int tagastab int, kuid sama 340 00:16:35,420 --> 00:16:39,660 loogika, see nüüd loogiline, et line kuus, ma väidan, et peamine tulu 341 00:16:39,660 --> 00:16:44,040 int, kuid mis meil kunagi olid kõik meie programmid? 342 00:16:44,040 --> 00:16:46,470 Meil pole kunagi olnud mainitud see võtmesõnaks tagasi. 343 00:16:46,470 --> 00:16:49,970 >> Nii selgub, et C, vähemalt versioon see, et me kasutame 344 00:16:49,970 --> 00:16:55,750 valmistatud aastal 1999, tehniliselt, see on toimub automaatselt. 345 00:16:55,750 --> 00:16:59,300 Igakord kui rakendada programmi ja te rakendada funktsioon nimega peamine, 346 00:16:59,300 --> 00:17:04,230 et funktsioon tagastab nulli Vaikimisi, kui te ei öelda teisiti, 347 00:17:04,230 --> 00:17:05,849 ja null on vaid konventsiooni. 348 00:17:05,849 --> 00:17:09,430 Maailma tagastab null seeläbi näitab, et kõik on hästi, 349 00:17:09,430 --> 00:17:13,040 tõhusalt jättes meid 4000000000 võimalik asju, mis võiksid minna 350 00:17:13,040 --> 00:17:17,530 vale, nii et kui me tagasi üks, mis võib tähendada kood, mis tähendab, see 351 00:17:17,530 --> 00:17:18,310 asi läks valesti. 352 00:17:18,310 --> 00:17:20,589 Võiksime tagasi kaks, mis tähendab, see asi läks valesti. 353 00:17:20,589 --> 00:17:23,440 Võiksime tagasi 4000000000, mis tähendab see muu asi läks valesti. 354 00:17:23,440 --> 00:17:27,170 >> Ja kui te nüüd mõtlema oma PC või Mac, võite meelde tuletada, et 355 00:17:27,170 --> 00:17:29,610 mõnikord saad segasena veateateid alates tarkvara, mis sa oled 356 00:17:29,610 --> 00:17:32,650 kasutavad, ja mõnikord on tal inimese sõbralik kirjeldus, kuid seal 357 00:17:32,650 --> 00:17:35,265 sageli kood või number ekraanil? 358 00:17:35,265 --> 00:17:37,800 Kui see ei tule meelde, lihtsalt hoida silma peal seda. 359 00:17:37,800 --> 00:17:40,790 See on tavaliselt, mida need koodid viitavad. 360 00:17:40,790 --> 00:17:44,200 Nad kuuluvad Microsoft Word ja teised programmid, nii et kui sa faili 361 00:17:44,200 --> 00:17:48,850 veateatele firmaga, saate ütle neile, oh, ma sain viga number 45. 362 00:17:48,850 --> 00:17:51,750 Ja mõned programmeerija tagasi ettevõte saab vaadata, et kuni tema 363 00:17:51,750 --> 00:17:54,940 kood ja öelda, oh, see on sellepärast tegin see viga ja sellepärast kasutaja 364 00:17:54,940 --> 00:17:56,240 sain selle sõnumi. 365 00:17:56,240 --> 00:17:59,490 >> Aga ausalt, see on lihtsalt veidi häirivad ja natuke tüütu 366 00:17:59,490 --> 00:18:02,130 järeldada, et vähemalt meie Esimese paari programmid, et me oleme 367 00:18:02,130 --> 00:18:02,970 välja jättes ta. 368 00:18:02,970 --> 00:18:07,450 Aga kõik see aeg iga ühe oma funktsioone peamine on salaja oli see 369 00:18:07,450 --> 00:18:11,600 line lisatakse automaatselt teie poolt tõlkija, lihtsalt kokkuleppeliselt, et 370 00:18:11,600 --> 00:18:13,172 säästa aega. 371 00:18:13,172 --> 00:18:14,620 >> [Kuuldamatu]. 372 00:18:14,620 --> 00:18:16,250 >> Sul ei ole vaja lisada see peamine. 373 00:18:16,250 --> 00:18:16,700 See on hea. 374 00:18:16,700 --> 00:18:20,260 Sa ei vaja seda, kui sa olid rakendatakse funktsiooni niimoodi. 375 00:18:20,260 --> 00:18:22,850 Vastasel funktsioon korter välja ei tööta. 376 00:18:22,850 --> 00:18:24,480 Aga peamine, et see ei ole vajalik. 377 00:18:24,480 --> 00:18:28,450 In nädal või kaks, me alustada saada arvesse, et harjumus kui tahame alustada 378 00:18:28,450 --> 00:18:29,690 tähendades vigu. 379 00:18:29,690 --> 00:18:32,550 Tõesti hea küsimus. 380 00:18:32,550 --> 00:18:36,880 >> Nii kiire verbaalne break mainida, et Selle reede, me ei lõunatamas 381 00:18:36,880 --> 00:18:39,980 per se, vaid saadame őhtustan mõned õpilased ja töötajad. 382 00:18:39,980 --> 00:18:42,940 Kui soovite meiega liituda, võid tasuta minna cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 06:00 see reede. 384 00:18:45,030 --> 00:18:47,990 Kosmos on, nagu alati, on piiratud, kuid me jätkata teed neid on peaaegu 385 00:18:47,990 --> 00:18:51,420 kord nädalas, kui ruumi otsa sel nädalal. 386 00:18:51,420 --> 00:18:56,160 >> Nii pinge et jätsime maha Esmaspäev oli, et stringe saab tegelikult 387 00:18:56,160 --> 00:19:00,520 indekseeritakse arvesse, mis tähendab, et sa saavad esimese märgi, 388 00:19:00,520 --> 00:19:03,770 teine ​​märk, kolmas märk ja nii edasi, sest sa võid 389 00:19:03,770 --> 00:19:07,860 tõhusalt mõelda string, nagu tere, nagu oleks sel juhul viis 390 00:19:07,860 --> 00:19:09,670 tähed sees kastid. 391 00:19:09,670 --> 00:19:13,370 Ja saad iga nimetatud lahtrid, mida süntaks kas me 392 00:19:13,370 --> 00:19:15,230 tutvustada esmaspäeval? 393 00:19:15,230 --> 00:19:16,760 Need nurksulgudes klaviatuuril. 394 00:19:16,760 --> 00:19:18,980 See lihtsalt tähendab, minge asukohta null. 395 00:19:18,980 --> 00:19:22,840 >> Alustame nullist, nii et sulg null tähistab h, sulg üks 396 00:19:22,840 --> 00:19:25,170 tähendab e, ja nii edasi. 397 00:19:25,170 --> 00:19:28,490 Ja nii kogu aeg, kui me oleme abil stringid ja kirjutama "tere" 398 00:19:28,490 --> 00:19:31,250 ja "maailm" ja muid asju ekraan, see on hoitud 399 00:19:31,250 --> 00:19:32,820 lahtrites niimoodi. 400 00:19:32,820 --> 00:19:33,370 Ja võtke oletus. 401 00:19:33,370 --> 00:19:37,470 Mis igas kastis esindama füüsiliselt sees arvuti? 402 00:19:37,470 --> 00:19:38,250 >> [Kuuldamatu]. 403 00:19:38,250 --> 00:19:39,150 >> Vabandust? 404 00:19:39,150 --> 00:19:39,580 >> Lõbu. 405 00:19:39,580 --> 00:19:44,760 >> Nii iseloomu, kindlasti puhul stringide ja iseloom on lihtsalt 406 00:19:44,760 --> 00:19:46,800 kaheksa bitti või üks bait. 407 00:19:46,800 --> 00:19:49,550 Nii et ilmselt on vähemalt ähmaselt tuttavad asjaoluga, et oma 408 00:19:49,550 --> 00:19:50,500 Arvutil on mälu. 409 00:19:50,500 --> 00:19:52,110 See on kahte tüüpi mälu vähemalt. 410 00:19:52,110 --> 00:19:54,810 Üks on kõvakettal, kuhu salvestada kraami püsivalt, ja see on 411 00:19:54,810 --> 00:19:57,400 tavaliselt suur, siis võite olla filme muusika ja nii edasi. 412 00:19:57,400 --> 00:20:04,010 >> Siis on teist tüüpi mälu nimetatakse RAM, R-A-M, Random Access 413 00:20:04,010 --> 00:20:07,510 Memory, ja see on tüüpi mälu mida kasutatakse siis, kui arvuti on 414 00:20:07,510 --> 00:20:11,520 töötab, aga kui sa kaotad võimu või oma aku sureb, midagi, mis on salvestatud 415 00:20:11,520 --> 00:20:15,300 RAM kaob, kui sa kaotad võimu üldse, sest see ei ole 416 00:20:15,300 --> 00:20:16,060 püsiv. 417 00:20:16,060 --> 00:20:19,120 Siis tavaliselt on need päevad, kaarik on kaks kontserti, võibolla rohkem. 418 00:20:19,120 --> 00:20:23,490 Ja teistpidi RAM on, et see on palju palju, palju kiiremini kui kõvakettad 419 00:20:23,490 --> 00:20:27,390 või isegi SSD kõvakettad nendel päevadel, aga see on tavaliselt kallimad, nii 420 00:20:27,390 --> 00:20:28,480 sul on vähem seda. 421 00:20:28,480 --> 00:20:32,400 >> Nii tänane vestlus tegelikult viitab RAM, mis tüüpi mälu, mis 422 00:20:32,400 --> 00:20:35,270 olemas ainult siis, kui seal on võim söödetakse arvutisse. 423 00:20:35,270 --> 00:20:40,530 Nii et kui sa kirjutad H-E-L-L-O, Enter klaviatuur, H läheb üks 424 00:20:40,530 --> 00:20:44,550 bait RAM, E läheb teine ​​bait RAM, nagu on 425 00:20:44,550 --> 00:20:45,800 ülejäänud sõna. 426 00:20:45,800 --> 00:20:49,010 Nii meenutada, mida me suutsime teha viimane kord oli see. 427 00:20:49,010 --> 00:20:53,940 Lubage mul minna ja avada fail et me kutsusime string.c ja meenutavad 428 00:20:53,940 --> 00:20:56,860 et see tundus vähe midagi sellist. 429 00:20:56,860 --> 00:20:59,860 Lubage mul tegelikult tagasi pöörata ja muuta see täpselt see, mida ta nägi, 430 00:20:59,860 --> 00:21:02,654 string pikkusega s. 431 00:21:02,654 --> 00:21:04,560 >> Nii vaatate programmi siin. 432 00:21:04,560 --> 00:21:08,530 Me sisaldama CS50 raamatukogu nii et saame kasutada saada string. 433 00:21:08,530 --> 00:21:11,400 Me sisaldama standard io.h nii saame kasutada printf. 434 00:21:11,400 --> 00:21:13,580 Miks me hulka string? 435 00:21:13,580 --> 00:21:16,980 See oli uus esmaspäeval. 436 00:21:16,980 --> 00:21:18,230 Nii et me tahtsime string pikkus. 437 00:21:18,230 --> 00:21:19,090 Str leng. 438 00:21:19,090 --> 00:21:21,470 Inimesed otsustas aastaid tagasi, Olgem lühidalt. 439 00:21:21,470 --> 00:21:24,290 Selle asemel, nimetades seda "string pikkus" kutsume seda "str leng" ja lasta 440 00:21:24,290 --> 00:21:28,540 maailma näitaja läbi, ja nii see on mida me pääse koos string. 441 00:21:28,540 --> 00:21:29,390 >> See on tuttav. 442 00:21:29,390 --> 00:21:30,320 See on tuttav. 443 00:21:30,320 --> 00:21:31,450 See on tuttav. 444 00:21:31,450 --> 00:21:32,370 See on natuke uus. 445 00:21:32,370 --> 00:21:35,420 Kooskõlas 22 - ja me tuleme tagasi sellele, kuid nüüd teame - 446 00:21:35,420 --> 00:21:37,880 ja sa oleks vaid tean seda omamast dokumentatsiooni lugeda või kui 447 00:21:37,880 --> 00:21:39,010 sa teadsid C juba - 448 00:21:39,010 --> 00:21:41,510 saada string mõnikord võib kägardama. 449 00:21:41,510 --> 00:21:45,130 Kui kasutaja on tõesti võistlev või koostöövalmiduse ja ta lihtsalt 450 00:21:45,130 --> 00:21:49,450 ei kirjuta midagi klaviatuuri või liigid niivõrd klaviatuur, mis 451 00:21:49,450 --> 00:21:53,760 see haarab arvuti mällu teoreetiliselt saada string võib naasta 452 00:21:53,760 --> 00:21:56,270 midagi muud kui märgijada. 453 00:21:56,270 --> 00:22:01,930 See võib naasta eriline väärtus nimega NULL kõik mütsid, T-U-L-L, ja see on 454 00:22:01,930 --> 00:22:03,390 lihtsalt nn valvur väärtus. 455 00:22:03,390 --> 00:22:08,010 See on eriline väärtus, mis tähendab midagi halba juhtunud käesolevas asjas. 456 00:22:08,010 --> 00:22:10,520 On puudumisel string. 457 00:22:10,520 --> 00:22:16,190 >> Nii tühjaks Ma kontrollin jaoks lihtsalt nii, et pikk lugu lühike, str leng ja 458 00:22:16,190 --> 00:22:20,230 muid funktsioone, mis tulevad koos C, kui nad ootavad string kuid te kaotate neid 459 00:22:20,230 --> 00:22:23,630 Kuna string, kui te kaotate neid nullimine, arvuti või programmi 460 00:22:23,630 --> 00:22:25,000 lihtsalt krahhi tähelepanuta. 461 00:22:25,000 --> 00:22:25,610 See riputada. 462 00:22:25,610 --> 00:22:27,250 See öökima mõned veateate. 463 00:22:27,250 --> 00:22:28,690 Halbu asju juhtub. 464 00:22:28,690 --> 00:22:31,130 Nii et kuigi see on veel mitte täpselt määratletud - 465 00:22:31,130 --> 00:22:33,730 seda mõttekam on nädalas või kaks - vastavalt 22, see on lihtsalt 466 00:22:33,730 --> 00:22:38,790 Näiteks füüsilisest kaitsev veatuvastuse igaks juhuks üks kord välja 467 00:22:38,790 --> 00:22:42,040 miljoni midagi läheb valesti, on Vähemalt minu programm ei krahhi. 468 00:22:42,040 --> 00:22:45,960 >> Nii et kui te ei ole võrdne midagi halba, Mul on seda loop, ja see oli 469 00:22:45,960 --> 00:22:47,710 kus meil oli, et teised uus tükk süntaks. 470 00:22:47,710 --> 00:22:51,580 Mul on silmus iterating alates null kuni pikkus s. 471 00:22:51,580 --> 00:22:56,140 Ja siis siin, olin trüki välja s sulg i, kuid miks ma kasutan% c kõik 472 00:22:56,140 --> 00:23:00,770 ootamatu asemel% s isegi kuigi s on string? 473 00:23:00,770 --> 00:23:02,110 See on märk, kas pole? 474 00:23:02,110 --> 00:23:06,560 S on string, kuid s sulg midagi, s sulg i kus i on null 475 00:23:06,560 --> 00:23:10,380 või üks või kaks, see on individuaalne märgi string, ja nii kohta 476 00:23:10,380 --> 00:23:14,970 et printf tuleb teavitada, et see on tõesti märk oodata. 477 00:23:14,970 --> 00:23:18,096 >> Ja siis meenutada, mis tegi programm tegelikult teeb? 478 00:23:18,096 --> 00:23:19,848 >> Trükitud see välja veerud. 479 00:23:19,848 --> 00:23:21,120 >> Jah, täpselt. 480 00:23:21,120 --> 00:23:24,990 See lihtsalt trükitud sõna, et ma kirjuta kolonn, üks märk igale reale. 481 00:23:24,990 --> 00:23:26,190 Vaatame seda uuesti. 482 00:23:26,190 --> 00:23:27,810 Nii et string. 483 00:23:27,810 --> 00:23:30,200 Koostanud OK. . / String. 484 00:23:30,200 --> 00:23:35,560 Las ma kirjuta H-E-L-L-O, Enter ja tõesti Ma saan aru, üks rea kohta. 485 00:23:35,560 --> 00:23:37,280 >> Nii et lubage mul teha üks optimeerimise siin. 486 00:23:37,280 --> 00:23:40,240 Kui mõtled seda, eriti kui oled programmeeritud enne, seal on 487 00:23:40,240 --> 00:23:43,340 väidetavalt ebatõhusus line 24. 488 00:23:43,340 --> 00:23:46,160 Teisisõnu, see ei ole tingimata parim disain. 489 00:23:46,160 --> 00:23:50,200 Arusaadav, vähemalt kui sa mäleta, mida str leng on, kuid see on 490 00:23:50,200 --> 00:23:52,640 midagi loll olla. 491 00:23:52,640 --> 00:23:54,863 Mis see võiks olla? 492 00:23:54,863 --> 00:23:56,280 >> [Kuuldamatu]. 493 00:23:56,280 --> 00:23:56,800 >> Täpselt. 494 00:23:56,800 --> 00:24:00,340 See kontrollimine pikkus s iga kord, kuigi 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O alati saab kuni viis tähemärki. 496 00:24:02,980 --> 00:24:05,490 Iga kord, kui läbi selle silmuse, viis ei muutu. 497 00:24:05,490 --> 00:24:08,750 Ma võiks incrementing i, kuid mida on pikkus s iga 498 00:24:08,750 --> 00:24:09,690 iteratsiooni see loop? 499 00:24:09,690 --> 00:24:15,810 See on viis, see on viis, see on viis, ja kuid ma olen siiski küsida seda 500 00:24:15,810 --> 00:24:18,320 küsimus uuesti ja uuesti ja uuesti. 501 00:24:18,320 --> 00:24:20,750 Nüüd ausalt öeldes arvuti on nii kuradi kiire, keegi läheb teade 502 00:24:20,750 --> 00:24:23,780 vahe sel juhul, kuid sellised halva disaini otsuseid võib 503 00:24:23,780 --> 00:24:28,330 hakkavad tõusta, kui koostaja ise ei püüa seda parandada teid, mis 504 00:24:28,330 --> 00:24:30,630 ta tavaliselt ei teeks, on vähemalt aparaat. 505 00:24:30,630 --> 00:24:31,540 >> Ma lähen seda tegema. 506 00:24:31,540 --> 00:24:34,580 Ma lähen Koma pärast minu esimene muutuja i. 507 00:24:34,580 --> 00:24:37,310 Ma annan endale veel muutuja, nimetades seda n, lihtsalt 508 00:24:37,310 --> 00:24:41,330 konventsiooni numbreid ja siis ma olen kavatse anda n väärtus string 509 00:24:41,330 --> 00:24:42,530 pikkus s. 510 00:24:42,530 --> 00:24:46,060 Ja siis ma lähen muuta minu tingimus oleks see, mida? 511 00:24:46,060 --> 00:24:51,960 Ma muudan tingimus et kui ma alla n. 512 00:24:51,960 --> 00:24:55,700 >> Nüüd, kui mitu korda olen ma kontrollides pikkus s? 513 00:24:55,700 --> 00:25:00,110 Kord, kuid see on OK, et kontrollida i vastu n ja jälle, sest nüüd need 514 00:25:00,110 --> 00:25:03,170 väärtused ei ole tegelikult muutumas. 515 00:25:03,170 --> 00:25:06,020 Nüüd kohe, lihtsalt teada, et millal helistada funktsioon, seal on natuke 516 00:25:06,020 --> 00:25:09,930 üldkulud, ei piisa, et takistada teid tegelikult enam kunagi kasutades funktsioone, kuid 517 00:25:09,930 --> 00:25:12,750 kindlasti, kui seal on rida koodi niimoodi - ja liinid saavad 518 00:25:12,750 --> 00:25:15,490 huvitavam enne pikk - kui seal on võimalus mõelda, kui ma 519 00:25:15,490 --> 00:25:18,320 kirjuta see kood, kui palju korda on ta ellu? 520 00:25:18,320 --> 00:25:20,950 Hakkate näha ajas täita oma programme saab 521 00:25:20,950 --> 00:25:21,660 tõepoolest muuta. 522 00:25:21,660 --> 00:25:24,110 >> Tegelikult üks probleem seab oleme teinud varasematel aastatel hõlmab 523 00:25:24,110 --> 00:25:27,600 rakendamisel, nagu te võib-olla mäletate alates nädal null, õigekirjakontrolli, kuid 524 00:25:27,600 --> 00:25:31,380 Õigekirja kontrollija, mis on kavandatud toetama sõnaraamat 150000 pluss 525 00:25:31,380 --> 00:25:32,860 sõnad, mis me teile poisid. 526 00:25:32,860 --> 00:25:37,100 Sa oleks kirjutada kood, mis laeb need sõnad RAM, nii et arvesse 527 00:25:37,100 --> 00:25:40,700 kastid nagu nägime ekraanil hetkeks tagasi, ja siis nii kiiresti kui 528 00:25:40,700 --> 00:25:43,740 ei, sa pead suutma vastata küsimus vormis, on see sõna 529 00:25:43,740 --> 00:25:44,280 valesti? 530 00:25:44,280 --> 00:25:45,420 Kas see sõna valesti? 531 00:25:45,420 --> 00:25:46,770 Kas see sõna valesti? 532 00:25:46,770 --> 00:25:49,525 >> Ja midagi sellist, mida me oleme teinud varasematel aastatel on välja see, 533 00:25:49,525 --> 00:25:53,500 ehkki opt-in vabatahtlikult konkurents kehvasti, kusjuures 534 00:25:53,500 --> 00:25:59,470 õpilased, kes kasutavad vähem RAM ja vähem ajal vähem protsessori, lõpetame 535 00:25:59,470 --> 00:26:02,640 vahustamine kuni tippu veidi juht pardal või pingerida et me panna 536 00:26:02,640 --> 00:26:04,770 Muidugi kodulehte nagu me oleme teinud varasematel aastatel. 537 00:26:04,770 --> 00:26:08,100 Nii et taas, täiesti vabatahtlik, kuid see räägib disaini võimalusi 538 00:26:08,100 --> 00:26:11,250 mis on ees, kui me hakkame hoone atop mõned neist 539 00:26:11,250 --> 00:26:14,010 ehituskive. 540 00:26:14,010 --> 00:26:16,780 >> Nii et lubage mul minna tagasi selle skeemi hetk ja paljastada vähe 541 00:26:16,780 --> 00:26:17,610 midagi enamat. 542 00:26:17,610 --> 00:26:21,400 See tõesti on string, ja me oleme võtnud ära mõned raamatukogud, 543 00:26:21,400 --> 00:26:25,150 standard io.h mis on - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, muu hulgas. 546 00:26:27,860 --> 00:26:31,540 cs50.h, mis on saada int ja saada string ja nii edasi, string, mis 547 00:26:31,540 --> 00:26:32,570 oli str leng. 548 00:26:32,570 --> 00:26:34,800 Aga selgub, seal on veel üks. 549 00:26:34,800 --> 00:26:38,540 Ausalt, seal on palju ja palju header faile, mis kuulutab funktsioonid 550 00:26:38,540 --> 00:26:43,320 raamatukogude, kuid see ctype.h on tegelikult saab olema mõnevõrra 551 00:26:43,320 --> 00:26:46,900 kasulik, sest ma lähen minna ja rakendada üks 552 00:26:46,900 --> 00:26:48,120 muu programm siin. 553 00:26:48,120 --> 00:26:52,420 >> Lubage mul minna ja avada midagi Kirjutasin eelnevalt kutsunud 554 00:26:52,420 --> 00:26:55,750 capitalize.c ja võtame Vaata, kuidas see töötab. 555 00:26:55,750 --> 00:27:00,340 Pange tähele, et ma kasutan, et see versioon see, kolm tuttav faile. 556 00:27:00,340 --> 00:27:04,110 Pane tähele, et rida 18, ma olen saada rida teksti. 557 00:27:04,110 --> 00:27:07,660 Teade liin 21, ma olen väites, et järgmine kood läheb 558 00:27:07,660 --> 00:27:12,170 ära s, olenemata kasutaja sisestatud aastal, ja kuidas ma teen seda? 559 00:27:12,170 --> 00:27:13,300 Noh, ma võtan - 560 00:27:13,300 --> 00:27:14,750 õppetund viimast korda - 561 00:27:14,750 --> 00:27:18,370 Teatan i ja n ning iterating üle märkide string. 562 00:27:18,370 --> 00:27:22,720 Ja mis siis on see plokk koodi rida 24 kuni 27 563 00:27:22,720 --> 00:27:24,550 teeme üldarusaadavat mõttes? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Väiketäht tagasi. 566 00:27:29,730 --> 00:27:30,430 >> Täpselt. 567 00:27:30,430 --> 00:27:35,920 Kui te sulg i - nii et kui i-nda iseloomu s, mis on spetsiifiline 568 00:27:35,920 --> 00:27:40,220 char string on suurem kui võrdne või väiketähed ja - 569 00:27:40,220 --> 00:27:42,670 meelde tuletada, et topelt-märk tähistada ja - 570 00:27:42,670 --> 00:27:46,810 ja sama märk, s sulg i, on väiksem või võrdne väiketähed z, 571 00:27:46,810 --> 00:27:50,600 mis tähendab, et see või b või c või dot, dot, dot, või z, mis tähendab, 572 00:27:50,600 --> 00:27:51,340 see on väiketähed. 573 00:27:51,340 --> 00:27:52,900 Mida ma tahan teha sel juhul? 574 00:27:52,900 --> 00:27:55,010 Noh, ma ei saa seda teha mõnevõrra cryptically, kuid 575 00:27:55,010 --> 00:27:56,160 olgem kiusupunn see peale. 576 00:27:56,160 --> 00:28:00,210 >> Ma lähen kutsun printf, prindib% c sest ma tahan kordustrükk see 577 00:28:00,210 --> 00:28:01,580 märk ekraanile. 578 00:28:01,580 --> 00:28:06,650 Ma siis kavatseme s sulg i, i-nda märgi s ja siis miks 579 00:28:06,650 --> 00:28:12,330 ma teen seda veidi trikk siin väiketähed miinus kapitali? 580 00:28:12,330 --> 00:28:16,352 Mis on see, et annan mulle üldiselt? 581 00:28:16,352 --> 00:28:18,600 >> [Kuuldamatu]. 582 00:28:18,600 --> 00:28:19,390 >> Täpselt. 583 00:28:19,390 --> 00:28:20,860 Ma tõesti ei mäleta - 584 00:28:20,860 --> 00:28:24,390 see oli 65 kapital A. Ma tõesti ei mäleta, mida väiketähed on 585 00:28:24,390 --> 00:28:25,540 kuid ükski asi. 586 00:28:25,540 --> 00:28:26,580 Arvuti teab. 587 00:28:26,580 --> 00:28:30,380 Nii öeldes, väiketähed miinus kapitali, see on imelik olla 588 00:28:30,380 --> 00:28:33,530 lahutatakse üks char teise, kuid Millised on sümbolid all kapuuts? 589 00:28:33,530 --> 00:28:34,520 Nad on lihtsalt numbrid. 590 00:28:34,520 --> 00:28:36,980 Mida iganes need numbrid on, lase arvuti mäleta 591 00:28:36,980 --> 00:28:38,240 mitte mulle inimene. 592 00:28:38,240 --> 00:28:41,710 >> Nii väiketähed miinus kapitali on annan mina erinevus. 593 00:28:41,710 --> 00:28:45,370 See juhtub olema, 32, ja et oleks puhul väiketähti b ja kapitali B 594 00:28:45,370 --> 00:28:45,930 ja nii edasi. 595 00:28:45,930 --> 00:28:47,710 See püsib muutumatuna, õnneks. 596 00:28:47,710 --> 00:28:51,930 Nii et ma olen põhiliselt öeldes võtma väiketäht, lahutada maha, et 597 00:28:51,930 --> 00:28:55,340 standard erinevus, ning et tõhusalt muutuste s sulg i alates 598 00:28:55,340 --> 00:28:59,400 väiketähed, muidugi, suur-, ilma minu tõesti võttes mõelda 599 00:28:59,400 --> 00:29:03,040 kohta või mäletad, millised olid need numbreid me rääkisime, kui kaheksa 600 00:29:03,040 --> 00:29:04,800 vabatahtlikud tulid lavale? 601 00:29:04,800 --> 00:29:08,800 Nüüd vahepeal on muud, kui see ei ole väiketäht määratud 602 00:29:08,800 --> 00:29:10,400 realt 24, lihtsalt printida. 603 00:29:10,400 --> 00:29:12,590 Ma tahan ainult puudutada märgid, mis olid 604 00:29:12,590 --> 00:29:14,410 tegelikult algselt väiketähed. 605 00:29:14,410 --> 00:29:15,150 >> Vaatame seda. 606 00:29:15,150 --> 00:29:17,400 Tee ära. 607 00:29:17,400 --> 00:29:18,470 Koostanud, OK. 608 00:29:18,470 --> 00:29:19,730 . / Lõikama. 609 00:29:19,730 --> 00:29:23,530 Ja las ma kirjuta H-E-L-L-O väiketähtedega, Enter. 610 00:29:23,530 --> 00:29:26,370 Ja teate, mis on ümber arvesse suurtähtedega. 611 00:29:26,370 --> 00:29:27,940 Las ma teen seda jälle eri sõna. 612 00:29:27,940 --> 00:29:32,720 Kuidas D-A-V-I-D esimese D kapitaliseeritud nimi tavaliselt on? 613 00:29:32,720 --> 00:29:33,560 Enter. 614 00:29:33,560 --> 00:29:34,870 Teade see on ikka õige. 615 00:29:34,870 --> 00:29:40,250 See lihtsalt väljastada et esimene D muutmata kaudu, mis muidu ehitada. 616 00:29:40,250 --> 00:29:42,170 >> Nii et pidage meeles, siis paar asja siin. 617 00:29:42,170 --> 00:29:45,060 Üks, kui sa kunagi tahad, et kontrollida kaks tingimustel korraga, saad ja neid 618 00:29:45,060 --> 00:29:46,500 koos, kui me ennustada. 619 00:29:46,500 --> 00:29:49,900 Võite võrrelda tähemärki sel viisil ja tõhusalt ravida märgid 620 00:29:49,900 --> 00:29:53,050 numbrid, aga ausalt, see on nii kuradi segasena ma kunagi meeles 621 00:29:53,050 --> 00:29:56,510 kuidas tulla see nullist ilma põhjendusi läbi see täiesti 622 00:29:56,510 --> 00:29:57,140 natuke aega. 623 00:29:57,140 --> 00:30:00,590 >> Kas poleks olnud tore, kui keegi seal kirjutas funktsioon nimega on 624 00:30:00,590 --> 00:30:05,390 alandada, mis võiks vastata mulle tõeline või vale, see märk on väiketähed? 625 00:30:05,390 --> 00:30:09,350 Noh õnneks kes kirjutas ctype.h just tegigi. 626 00:30:09,350 --> 00:30:15,540 Lubage mul minna siia ja lisage ctype jaoks c liigid ja nüüd ma lähen alla ja 627 00:30:15,540 --> 00:30:18,820 Kirjutan selle rea järgmiselt. 628 00:30:18,820 --> 00:30:27,510 >> Nii et kui seda nimetatakse on väiksem, ma väita, s sulg i, siis ma lähen kustutada 629 00:30:27,510 --> 00:30:29,400 need kaks rida kokku. 630 00:30:29,400 --> 00:30:32,570 Nüüd keegi, ma loodan, kirjutas funktsioon nimega on väiksem, ja see 631 00:30:32,570 --> 00:30:36,250 Tuleb välja, et nad tegid ja nad kuulutatud see sees ctype.h. 632 00:30:36,250 --> 00:30:39,480 Ja nüüd ma lähen lahkuda line 27 üksi, ma lähen lahkuda line 31 633 00:30:39,480 --> 00:30:41,890 üksi, kuid teate, kui palju ma olen karmistada oma kood. 634 00:30:41,890 --> 00:30:42,690 See on nüüd puhtam. 635 00:30:42,690 --> 00:30:47,250 See on vähem raske vaadata läbi sest nüüd funktsioon on lisaks 636 00:30:47,250 --> 00:30:50,080 nii imeliselt nimetas seda lihtsalt teeb mida ta ütleb. 637 00:30:50,080 --> 00:30:51,520 >> Nüüd ma lähen salvestada. 638 00:30:51,520 --> 00:30:52,930 Ma lähen välja suumida. 639 00:30:52,930 --> 00:30:56,650 Ja just nagu Scratch te oleksite Tõeväärtused Kahendmuutujad tõsi või 640 00:30:56,650 --> 00:31:01,530 vale, see on täpselt see, mida on alandab tõhusalt tulu. 641 00:31:01,530 --> 00:31:02,960 Las ma kompileerida. 642 00:31:02,960 --> 00:31:04,500 Lubage mul uuesti jooksma. 643 00:31:04,500 --> 00:31:07,350 Ja nüüd proovime uuesti, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 See on päris hea. 645 00:31:07,970 --> 00:31:10,150 Ja proovige uuesti, veendumaks, et ma ei kruvi midagi välja. 646 00:31:10,150 --> 00:31:11,670 See on kapitaliseeritud samuti. 647 00:31:11,670 --> 00:31:14,190 >> Aga see ei ole piisavalt hea, sest Teine asi, mida ma kunagi 648 00:31:14,190 --> 00:31:19,090 mäletan, kui ma töötan läbi see tõesti ettevaatlikult, ütleme, paber on 649 00:31:19,090 --> 00:31:19,920 see pagana joon. 650 00:31:19,920 --> 00:31:23,450 Kas poleks tore, kui oli funktsiooni nimetatakse ülemise? 651 00:31:23,450 --> 00:31:26,930 Noh selgub seal on ctype.h samuti. 652 00:31:26,930 --> 00:31:30,150 Ma lähen edasi minna ja kirjutada - 653 00:31:30,150 --> 00:31:31,340 lubage mul tuua selle joone taga. 654 00:31:31,340 --> 00:31:36,430 Selle asemel siin, lase mul minna ja öelda, asenda% c 655 00:31:36,430 --> 00:31:42,110 tulemusena kutsudes seda funktsiooni ülemine on i-nda iseloomu s. 656 00:31:42,110 --> 00:31:45,430 Ja nüüd teate, et see muutub veidi tasakaalustada. 657 00:31:45,430 --> 00:31:48,870 Mul on jälgida, kui palju Sulgudes Olen avatud ja suletud. 658 00:31:48,870 --> 00:31:50,050 >> Nüüd on see veelgi puhtamaks. 659 00:31:50,050 --> 00:31:53,460 Nüüd on see programm hakkab parem ja paremini kavandatud väidetavalt, sest see on 660 00:31:53,460 --> 00:31:56,450 palju, palju rohkem loetav kuid see ei lase nii. 661 00:31:56,450 --> 00:31:57,600 Tee ära. 662 00:31:57,600 --> 00:31:58,930 . / Lõikama. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Olgem kasutada seda uuesti, D-A-V-I-D. OK, nii et me oleme ikka 664 00:32:03,220 --> 00:32:04,250 päris hea kuju. 665 00:32:04,250 --> 00:32:06,030 >> Aga nüüd, et ülemine. 666 00:32:06,030 --> 00:32:09,720 Pakun, et seal on veel üks täiustamise saaksime et oleks 667 00:32:09,720 --> 00:32:12,820 tore, et võiks tõesti pingutada kuni see kood ja tegelikult annab meile viis 668 00:32:12,820 --> 00:32:15,150 Viiest projekteerimiseks, näiteks. 669 00:32:15,150 --> 00:32:16,510 Mida oleks tore vabaneda? 670 00:32:16,510 --> 00:32:20,770 Noh, vaata kui kuradi kaua see plokk kood on lihtsalt teha midagi lihtsat. 671 00:32:20,770 --> 00:32:23,850 >> Nüüd kui kõrvale, nagu te võib-olla näha super osa möödunud 672 00:32:23,850 --> 00:32:27,570 nädalavahetus, siis ei ole rangelt vaja looksulg kui sa lihtsalt üks 673 00:32:27,570 --> 00:32:32,180 koodirida, kuigi me pakkusime hoida neid nii, et ta teeb palju 674 00:32:32,180 --> 00:32:36,190 veel selge, nagu Scratch U-kujuline plokid, mis seal sees on filiaali. 675 00:32:36,190 --> 00:32:40,170 Aga kas ei oleks tore, kui ülemise, kui andnud oma panuse, pöördus see 676 00:32:40,170 --> 00:32:44,730 suureks kui see ei ole, ja see, mida oleks imeline, vastupidisel juhul, kui 677 00:32:44,730 --> 00:32:47,210 see on juba suur-? 678 00:32:47,210 --> 00:32:49,620 Lihtsalt lastakse läbi ja jäta ta rahule. 679 00:32:49,620 --> 00:32:50,660 >> Nii et äkki ta ei tee seda. 680 00:32:50,660 --> 00:32:52,990 Ma võiks proovida ja lihtsalt loodan, et see, kuid lubage mul 681 00:32:52,990 --> 00:32:54,450 tutvustada veel üks asi. 682 00:32:54,450 --> 00:32:57,440 Selle asemel, see sisseehitatud terminal aken siia, meelde tuletada, et 683 00:32:57,440 --> 00:33:01,130 Selle ruudu must ikoon annab teile suurem terminal akna, et ma saan täis 684 00:33:01,130 --> 00:33:02,260 ekraani, kui ma tahan? 685 00:33:02,260 --> 00:33:05,820 Nii selgub, et nad omamoodi kummaliselt nime, kuid seal on neid asju nimetatakse 686 00:33:05,820 --> 00:33:10,970 man, manuaal lehti mees lühikeseks, ja ma saan kasutada neid, mida 687 00:33:10,970 --> 00:33:14,515 kirjutades mees - 688 00:33:14,515 --> 00:33:15,570 Mida ma tahan tüüpi? 689 00:33:15,570 --> 00:33:17,830 Man ülemine. 690 00:33:17,830 --> 00:33:21,090 >> Ja nüüd teate, kui on olemas funktsiooni sees arvuti, sisse 691 00:33:21,090 --> 00:33:23,970 Sel juhul on seade, mis on lihtsalt operatsioonisüsteemi Linux, see läheb 692 00:33:23,970 --> 00:33:27,920 mulle veidi segasena komplekt väljund, kuid leiad aja, et 693 00:33:27,920 --> 00:33:31,720 alati on vormindatud päris palju sama nii hakkate harjuda. 694 00:33:31,720 --> 00:33:35,130 Teade ülaosas ülemise ja ilmselt on sama dokumentatsioon 695 00:33:35,130 --> 00:33:35,680 jaoks alandada. 696 00:33:35,680 --> 00:33:38,740 Kes kirjutas ta lõikamise mõned nurgad ja panna see kõik ühel lehel. 697 00:33:38,740 --> 00:33:40,720 Need asjad "eesmärk elu on teisendada 698 00:33:40,720 --> 00:33:42,780 kirjas Suur-ja väiketähti. 699 00:33:42,780 --> 00:33:46,290 >> Pange tähele, et alla Synopsis, man õpetab mulle, mis fail on mul 700 00:33:46,290 --> 00:33:48,130 lisada, et kasutada seda asja. 701 00:33:48,130 --> 00:33:51,320 See annab mulle allkirju need funktsioonid, mõlemad on isegi 702 00:33:51,320 --> 00:33:53,510 kuigi me praegu ainult hooli üks. 703 00:33:53,510 --> 00:33:54,730 Siin on nüüd kirjeldus. 704 00:33:54,730 --> 00:33:58,800 Ülemise teisendab kirja c suureks kui võimalik. 705 00:33:58,800 --> 00:34:02,280 >> Ikka ei ole nii õpetlik, kuid lubage mul Nüüd vaadake tagasi raha, asi 706 00:34:02,280 --> 00:34:03,520 mis on kätega tagasi. 707 00:34:03,520 --> 00:34:08,600 Seega väärtus tagastatakse on see, et ümber tähe või c, kui 708 00:34:08,600 --> 00:34:09,870 muutmine ei ole võimalik. 709 00:34:09,870 --> 00:34:11,202 Mis on c? 710 00:34:11,202 --> 00:34:12,560 >> Algne iseloom. 711 00:34:12,560 --> 00:34:15,370 >> Originaal iseloomu ja me teame, et jälle läheb kuni 712 00:34:15,370 --> 00:34:19,179 ülevaate, ja kes iganes selle kirjutas funktsioon lihtsalt otsustas, et sisestada 713 00:34:19,179 --> 00:34:22,909 et ülemise ja alumise on lihtsalt omavoliliselt nimetama hakatakse c. 714 00:34:22,909 --> 00:34:24,909 Nad oleksid võinud seda nimetas kõige midagi nad tahavad, kuid nad hoidsid seda 715 00:34:24,909 --> 00:34:26,270 lihtne kui c. 716 00:34:26,270 --> 00:34:27,880 Nii et ma olen konsulteerinud mees lehele. 717 00:34:27,880 --> 00:34:31,870 See lause rahustab mind, et kui see ei ole väike täht, see on 718 00:34:31,870 --> 00:34:34,969 lähed anna mulle tagasi c, mis on täiuslik, mis tähendab, et ma saan lahti 719 00:34:34,969 --> 00:34:36,199 minu teine ​​tingimus. 720 00:34:36,199 --> 00:34:39,679 >> Nii et lubage mul minna tagasi gedit ja Nüüd lubage mul seda teha. 721 00:34:39,679 --> 00:34:41,960 Ma kopeerida minu printf avaldus. 722 00:34:41,960 --> 00:34:45,969 Ma lähen edasi minna ja õige sees loop print läbi, ja saada 723 00:34:45,969 --> 00:34:48,760 lahti nüüd kogu see kui ehitada. 724 00:34:48,760 --> 00:34:51,860 Kas ei ole halb mõte, ja see oli väga palju õige ja kooskõlas 725 00:34:51,860 --> 00:34:54,100 kõik oleme kuulutanud, kuid lihtsalt ei ole vaja. 726 00:34:54,100 --> 00:34:57,070 Niipea, kui sa mõistad, mõned raamatukogu funktsioon on olemas, et keegi 727 00:34:57,070 --> 00:35:01,340 kirjutas, või äkki sa kirjutasid mujal fail, saab seda kasutada ja tõesti 728 00:35:01,340 --> 00:35:02,690 alustada karmistada kood. 729 00:35:02,690 --> 00:35:06,080 >> Ja kui ma ütlen asju nagu hea stiil, Asjaolu, et see isik nimetatakse 730 00:35:06,080 --> 00:35:11,490 funktsiooni, et ülemine või varem on madalam on imeliselt kasulik, sest 731 00:35:11,490 --> 00:35:12,900 nad väga kirjeldav. 732 00:35:12,900 --> 00:35:16,120 Sa ei taha, et helistada oma ülesandeid x ja y ja z, mis on 733 00:35:16,120 --> 00:35:19,620 palju, palju vähem tähendust. 734 00:35:19,620 --> 00:35:25,160 Kõik küsimused selle seeria parandusi? 735 00:35:25,160 --> 00:35:28,010 >> Seega piisab, kui öelda üks takeaways on isegi oma probleem 736 00:35:28,010 --> 00:35:30,960 set - äkki lahendamist, vaid kindlasti P seatud kaks ja edasi, isegi 737 00:35:30,960 --> 00:35:34,380 kui nad on õige ei pruugi tähenda, et nad on täiuslik lihtsalt 738 00:35:34,380 --> 00:35:36,155 veel või hästi disainitud. 739 00:35:36,155 --> 00:35:38,420 See on teise telje hakata mõtlema. 740 00:35:38,420 --> 00:35:41,730 Nii et see oli string sees oma arvuti mällu, kuid kui teil on 741 00:35:41,730 --> 00:35:46,180 terve hunnik sümboleid, näiteks H-E-L-L-O sees RAM, ja arvan, 742 00:35:46,180 --> 00:35:51,330 et sinu programm helistada saada string mitu korda nii, et sa 743 00:35:51,330 --> 00:35:54,200 kutsuvad saada string kord, siis helistada saan stringi. 744 00:35:54,200 --> 00:35:55,880 Noh, mis läheb juhtub aja jooksul? 745 00:35:55,880 --> 00:35:59,170 >> Teisisõnu, kui teil on joon kood, ehkki kontekstist välja, nagu 746 00:35:59,170 --> 00:36:02,120 string s saab - 747 00:36:02,120 --> 00:36:02,960 Teeme seda. 748 00:36:02,960 --> 00:36:05,270 String nimi võrdub saada string. 749 00:36:05,270 --> 00:36:08,590 Olgu, oletame, et koodirida on mõeldud küsida kasutajalt tema nime. 750 00:36:08,590 --> 00:36:14,580 See järgmise koodirida mõeldakse küsida kasutaja jaoks tema kooli ja 751 00:36:14,580 --> 00:36:15,920 see järgmisele reale, ja nii edasi. 752 00:36:15,920 --> 00:36:18,150 Oletame, et me küsime endiselt kasutaja teise ja 753 00:36:18,150 --> 00:36:19,750 teine ​​ja teine ​​string. 754 00:36:19,750 --> 00:36:22,390 Nad ei kavatse jääda mälu samal ajal. 755 00:36:22,390 --> 00:36:24,280 Üks ei kavatse Tellida muud. 756 00:36:24,280 --> 00:36:26,420 Kool ei kirjuta muud. 757 00:36:26,420 --> 00:36:28,520 Aga kus nad kõik sattuda mälu? 758 00:36:28,520 --> 00:36:32,030 >> Noh, kui me hakkame juhtida ekraanil mida saame kasutada seda asja 759 00:36:32,030 --> 00:36:35,800 siin nagu tahvlile, kui see must ristkülik esindab minu arvuti 760 00:36:35,800 --> 00:36:39,800 mälu, ma lähen suvaliselt alustada jagades selle üles võetud väike ruutu, 761 00:36:39,800 --> 00:36:42,120 millest igaüks esindab üks bait mälu. 762 00:36:42,120 --> 00:36:46,560 Ausalt, kui teil on GB RAM Nendel päevadel, teil on miljard baiti 763 00:36:46,560 --> 00:36:49,540 mälu arvutisse, nii et miljardi need ruudud. 764 00:36:49,540 --> 00:36:52,110 Seega piisab, kui öelda, et see tegelikult ei ole skaalal. 765 00:36:52,110 --> 00:36:58,250 >> Aga me võiksime hoida joonistus kõik need selgelt ei ole mõõtkavas ruudud ja see 766 00:36:58,250 --> 00:37:01,260 kollektiivselt esindab mu arvuti mällu. 767 00:37:01,260 --> 00:37:03,136 Nüüd me lihtsalt teha dot, dot, dot. 768 00:37:03,136 --> 00:37:06,260 Nii teisisõnu, kui ma nüüd kiire kasutaja get string mulle 769 00:37:06,260 --> 00:37:07,350 string, mis juhtub? 770 00:37:07,350 --> 00:37:14,270 Kui kasutaja liigid "tere", mis lõpeb üles H-E-L-L-O. Aga oletame 771 00:37:14,270 --> 00:37:15,720 kasutaja siis liigid - 772 00:37:15,720 --> 00:37:17,250 tegelikult, ma ei oleks pidanud tere kuna me palume 773 00:37:17,250 --> 00:37:18,330 neid oma nime all. 774 00:37:18,330 --> 00:37:20,580 Seega lähme tagasi, kui ma ei tee seda. 775 00:37:20,580 --> 00:37:26,130 >> Nii et kui ma tüüpi D-A-V-I-D minu nimi, aga meelde tuletada, et teine ​​rida 776 00:37:26,130 --> 00:37:29,220 kood oli saada stringi saada oma koolis. 777 00:37:29,220 --> 00:37:32,090 Kus on see sõna, mida kasutaja liigid lähe edasi? 778 00:37:32,090 --> 00:37:38,290 Noh, võib-olla see läheb minema H-A-R-V-A-R-D. Nii et kuigi ma olen 779 00:37:38,290 --> 00:37:41,560 ära, kui kaks rida, see on lihtsalt terve hunnik baite oma 780 00:37:41,560 --> 00:37:42,710 arvuti RAM. 781 00:37:42,710 --> 00:37:46,560 Seal on probleem nüüd, sest nüüd, kui ma olen kasutades RAM selles väga mõistlik 782 00:37:46,560 --> 00:37:49,910 aga omamoodi naiivne tee, mida saate ei ilmselt vahet? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Kui üks algab ja kus üks otsas, eks? 785 00:37:54,680 --> 00:37:55,860 Nad on omamoodi hägustumas kokku. 786 00:37:55,860 --> 00:37:57,920 >> Nii selgub arvuti ei tee seda. 787 00:37:57,920 --> 00:38:04,720 Las ma tegelikult liikuda ajas tagasi mõned märgid, ja selle asemel, et Harvard 788 00:38:04,720 --> 00:38:09,570 läheb kohe pärast kasutaja nimi, kasutaja tegelikult muutub, taga 789 00:38:09,570 --> 00:38:12,000 stseene, erimärk lisatud 790 00:38:12,000 --> 00:38:13,885 arvuti temale. 791 00:38:13,885 --> 00:38:19,470 / 0, muidu tuntud nul iseloomu tüütult nimega N-U-L, ei 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, kuid sa kirjutad seda / 0. 793 00:38:22,190 --> 00:38:27,130 See on lihtsalt kõik null bitti on SM vahel esimene sõna, et kasutaja 794 00:38:27,130 --> 00:38:28,290 kirjutatud ja teine. 795 00:38:28,290 --> 00:38:33,020 >> Nii Harvard tegelikult nüüd jõuab kui see märgijada 796 00:38:33,020 --> 00:38:36,110 ja veel üks / 0. 797 00:38:36,110 --> 00:38:41,690 Nii teisisõnu, lastes need valvur väärtused, kaheksa külgnevas null 798 00:38:41,690 --> 00:38:45,220 bitti, saab nüüd hakata eristama üks märk teisest. 799 00:38:45,220 --> 00:38:49,720 Nii et kõik see aeg, mis on "tere" on tegelikult "Tere" / 0, ja 800 00:38:49,720 --> 00:38:53,580 Vahepeal võib väga hästi olla üsna natuke rohkem RAM 801 00:38:53,580 --> 00:38:56,400 arvuti sisemus. 802 00:38:56,400 --> 00:38:57,810 >> Lubage mul teha üks asi nüüd. 803 00:38:57,810 --> 00:39:01,800 Selgub, et kõik need väljakud oleme olnud joonistus, nad on, jah, 804 00:39:01,800 --> 00:39:06,140 stringid, kuid üldisemalt need asjad on massiivid. 805 00:39:06,140 --> 00:39:10,590 Massiiv on lihtsalt tüki mälu see on seljad et seljad, 806 00:39:10,590 --> 00:39:15,130 ja sa tavaliselt kasutada massiivi teel Selle nurksulg märke. 807 00:39:15,130 --> 00:39:18,210 Nii et me näeme neid üsna vähe aja jooksul, kuid lubage mul minna ja 808 00:39:18,210 --> 00:39:21,160 avama, ütleme vanuses. 809 00:39:21,160 --> 00:39:23,920 Ja teate, mis me saame teha koos neid samu trikke, veidi 810 00:39:23,920 --> 00:39:25,750 natuke rohkem süntaks siin. 811 00:39:25,750 --> 00:39:29,270 >> Nii rida 17 on see programm - tegelikult, las ma käivitada programmi esimene 812 00:39:29,270 --> 00:39:30,770 nii et me saame näha, mida see asi teeb. 813 00:39:30,770 --> 00:39:33,530 Las ma helistan teha vanuses koostada programmi. 814 00:39:33,530 --> 00:39:34,950 . / Aegade. 815 00:39:34,950 --> 00:39:36,480 Mitu inimest on ruumi? 816 00:39:36,480 --> 00:39:38,020 Kõne see kolm. 817 00:39:38,020 --> 00:39:39,575 Vanus esimese inimesena? 818 00:39:39,575 --> 00:39:42,710 18, 19, ja 20. 819 00:39:42,710 --> 00:39:46,770 Ja nüüd veidi naeruväärselt, ma lihtsalt on teinud programmi, mis vanuses need 820 00:39:46,770 --> 00:39:47,740 kolm inimest. 821 00:39:47,740 --> 00:39:50,390 >> Nii et seal on selgelt võimalus lõbutseda aritmeetika siin. 822 00:39:50,390 --> 00:39:51,560 Õnneks matemaatika on õige. 823 00:39:51,560 --> 00:39:54,720 18 läks 19, 19 läks 20 ja nii edasi. 824 00:39:54,720 --> 00:39:58,510 Aga mis tegelikult mõeldud olema illustreerivad siin on, kuidas me hoidmine 825 00:39:58,510 --> 00:40:00,190 Nende kolme inimese vanuses. 826 00:40:00,190 --> 00:40:02,370 Lubage mul suumida, mida on siin toimub. 827 00:40:02,370 --> 00:40:06,240 >> Nii et esimene, need paar esimest rida peaks saada üsna tuttav. 828 00:40:06,240 --> 00:40:08,770 Ma lihtsalt sunnib kasutaja inimeste arvu ruumis. 829 00:40:08,770 --> 00:40:11,490 Siis ma kasutan saada int ja teha samal ajal, et seda uuesti ja uuesti ja uuesti. 830 00:40:11,490 --> 00:40:15,780 Me oleme näinud, et muster enne, kuid line 27 on uus ja tegelikult üsna 831 00:40:15,780 --> 00:40:18,160 kasulik ning muutub enam kasulik. 832 00:40:18,160 --> 00:40:21,620 Pange tähele, et see, mis on erinev vastavalt 27 on see, et ma tundub, et kuulutatakse 833 00:40:21,620 --> 00:40:23,960 int nimega vanuses, kuid oota. 834 00:40:23,960 --> 00:40:27,140 See ei ole lihtsalt int aegade. 835 00:40:27,140 --> 00:40:30,130 Seal on need nurksulgudesse mille sees on n. 836 00:40:30,130 --> 00:40:35,150 >> Nii sulg n selles kontekstis ei sees printf avaldus siin aga 837 00:40:35,150 --> 00:40:44,370 Selles ainus liin 27, see liin on ütles mulle n ints, millest igaüks 838 00:40:44,370 --> 00:40:46,080 on tüüpi int. 839 00:40:46,080 --> 00:40:49,870 Nii et see on ämber, nii et rääkida, on, sel juhul kolm täisarvu tagasi 840 00:40:49,870 --> 00:40:52,770 seljad et ma tõhusalt on kolm muutujat. 841 00:40:52,770 --> 00:40:54,890 Alternatiivina oleks selge, oleks see. 842 00:40:54,890 --> 00:40:57,400 >> Kui ma tahtsin esimese õpilase vanusest, ma võin seda teha. 843 00:40:57,400 --> 00:40:59,520 Kui ma tahtsin teise õpilase vanus võin seda teha. 844 00:40:59,520 --> 00:41:01,860 Kui ma tahtsin kolmanda õpilase vanusest, ma võin seda teha. 845 00:41:01,860 --> 00:41:04,320 Ja jumal hoidku peame igaühe vanus selles ruumis - 846 00:41:04,320 --> 00:41:07,670 Ma mõtlen, et see on paganama palju koopia, pasta ja jälle ja jälle. 847 00:41:07,670 --> 00:41:10,870 Ja pluss kui ma kompileerida seda programmi, kui teine ​​üliõpilane kõnnib üle viia 848 00:41:10,870 --> 00:41:14,200 selle ukse, nüüd minu number muutujaid on vale. 849 00:41:14,200 --> 00:41:17,450 >> Mis on ilus umbes massiiv on niipea kui hakkate tunne ennast 850 00:41:17,450 --> 00:41:20,190 kopeerimine ja kleepimine, koefitsiendid on see mitte parim lahendus. 851 00:41:20,190 --> 00:41:22,240 Massiiv on dünaamiline potentsiaalselt. 852 00:41:22,240 --> 00:41:24,610 Ma ei tea ette, kui palju inimesi hakkavad olema ruumis, 853 00:41:24,610 --> 00:41:28,670 aga ma tean, mul on vaja n neist ja ma nuputada, n, kui aeg tuleb. 854 00:41:28,670 --> 00:41:35,500 See koodirida tähendab nüüd, anna mulle tüki mälu, mis näeb välja selline 855 00:41:35,500 --> 00:41:40,380 kus kastide arv ekraanil sõltub täielikult n, et 856 00:41:40,380 --> 00:41:42,010 kasutaja sisestatud sisse 857 00:41:42,010 --> 00:41:44,850 >> Nüüd ülejäänud seda programmi tegelikult üsna sarnane sellega, mida me 858 00:41:44,850 --> 00:41:46,860 tegin tegelastega. 859 00:41:46,860 --> 00:41:49,970 Teade mul silmus alates rida 30. 860 00:41:49,970 --> 00:41:54,920 Niisiis peale saan massiiv, I itereerima alates y võrdub null kuni n. 861 00:41:54,920 --> 00:41:58,890 Mul on ainult see õpetlik printf sõnum lihtsalt ütlen, anna mulle vanus 862 00:41:58,890 --> 00:42:03,690 Isiku #% i, nii et number üks, number kaks, number kolm. 863 00:42:03,690 --> 00:42:04,730 Ja miks ma seda teen? 864 00:42:04,730 --> 00:42:08,870 Ausalt, inimesed eelistavad lugeda ühest püsti et arvuti teadlased, 865 00:42:08,870 --> 00:42:09,620 nulli siia. 866 00:42:09,620 --> 00:42:11,700 arvuti teadlased ei kavatse kasutada sellist programmi, nii et me oleme 867 00:42:11,700 --> 00:42:13,990 läheb lihtsalt hakka lugema üks nagu normaalsed inimesed. 868 00:42:13,990 --> 00:42:17,630 >> Ja nüüd vastavalt 33, märkate veidi erinev tükk süntaks. 869 00:42:17,630 --> 00:42:23,710 I-nda vanuse mis tüüpi muutuja massiiv on hakka int. 870 00:42:23,710 --> 00:42:25,770 Ja nüüd lõpuks, see on lihtsalt aritmeetiline siin. 871 00:42:25,770 --> 00:42:29,200 Ma otsustasin eraldi loop nõuda mõnda aega möödub, ja nüüd on see 872 00:42:29,200 --> 00:42:31,400 eraldi loop, need read täita. 873 00:42:31,400 --> 00:42:35,810 >> Aasta pärast, inimene i saab i aastat vana, kuid teade ei ole 874 00:42:35,810 --> 00:42:36,500 muutujale i. 875 00:42:36,500 --> 00:42:38,390 See on nüüd% i jaoks int. 876 00:42:38,390 --> 00:42:43,210 Ja teate esimest kohatäide, I pistik i pluss 1, seega me loota, nagu 877 00:42:43,210 --> 00:42:44,250 normaalne inimene. 878 00:42:44,250 --> 00:42:49,190 Ja siis, et raha nende vanusest i-aastane, mul kuluda sulg 879 00:42:49,190 --> 00:42:52,980 i - ja miks ma teen pluss üks siin? 880 00:42:52,980 --> 00:42:53,760 Nad lihtsalt vanuses. 881 00:42:53,760 --> 00:42:55,030 See on minu loll programmide valiku. 882 00:42:55,030 --> 00:42:56,810 Nad lihtsalt aastastel. 883 00:42:56,810 --> 00:42:59,770 Ma ei kirjuta iga number, mis Ma tegelikult tahan seal. 884 00:42:59,770 --> 00:43:02,430 >> Mis on tegelikult kõik tekst siin? 885 00:43:02,430 --> 00:43:07,610 Noh, las ma tegelikult kerida tagasi siin ja maalida pilti 886 00:43:07,610 --> 00:43:10,830 mis ees ootab. 887 00:43:10,830 --> 00:43:15,720 Mida me teeme, meie kõrval Ülesanded Kaks on dabbling 888 00:43:15,720 --> 00:43:17,070 maailma krüptograafia. 889 00:43:17,070 --> 00:43:22,500 Nii et see on märgijada, nii jada mitu tähte, ja mida 890 00:43:22,500 --> 00:43:23,750 see ütleb? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 See ei ole online-versioon kohta slaidid. 893 00:43:30,600 --> 00:43:35,880 >> Nii et ma väita, et see võrdub see, loll reklaam paljude aastate 894 00:43:35,880 --> 00:43:39,950 tagasi, et võiks tegelikult meenutada üks selle päritolu. 895 00:43:39,950 --> 00:43:42,740 Nii et see on näide krüpteerimist või krüptograafia. 896 00:43:42,740 --> 00:43:46,150 Selgub, et kui sa tahad tegelikult saata teavet või osa 897 00:43:46,150 --> 00:43:49,310 teavet keegi kindlalt, nagu selline teade, saate 898 00:43:49,310 --> 00:43:50,500 rüselus tähed. 899 00:43:50,500 --> 00:43:53,170 Aga tavaliselt, sõnad ei Segipaisatud juhuslikult. 900 00:43:53,170 --> 00:43:56,365 Nad permuteeritakse mingil moel muutunud kuidagi nii, et - oih. 901 00:43:56,365 --> 00:43:59,040 See on lõbus spoiler järgmine kord. 902 00:43:59,040 --> 00:44:04,390 >> Nii saab kaardistada, mis on ilmselt O B. Pange tähele, et read üles 903 00:44:04,390 --> 00:44:05,420 kapitalisatsioon tark. 904 00:44:05,420 --> 00:44:07,960 Ilmselt r muutub e. 905 00:44:07,960 --> 00:44:14,000 Ilmselt F-H-E-R saab S-U-R-E. Nii Selgub seal kaardistamine ja 906 00:44:14,000 --> 00:44:18,720 Sel juhul on päris loll kaardistamine, kas keegi on aru saanud? 907 00:44:18,720 --> 00:44:21,440 See on midagi, mida nimetatakse Rot 13, Pööra 13. 908 00:44:21,440 --> 00:44:24,760 See on kõige lollim krüpteerimist mehhanisme, sest see sõna otseses mõttes lihtsalt 909 00:44:24,760 --> 00:44:29,160 lisab 13 iga üks tähti, loll selles mõttes, et kui sa lihtsalt 910 00:44:29,160 --> 00:44:31,890 on natuke vaba aega oma käed ja pliiats, või sa lihtsalt arvan, et see 911 00:44:31,890 --> 00:44:35,260 läbi oma peas, võid proovida kõik võimalikud lisandused - üks, kaks, 912 00:44:35,260 --> 00:44:38,470 kolm, dot, dot, dot, 25 lihtsalt pööramiseks kogu tähestikku ja 913 00:44:38,470 --> 00:44:40,860 lõpuks, siis saad aru, mida see sõnum on. 914 00:44:40,860 --> 00:44:43,700 Nii et kui sa tegid midagi sellist algkool kulgeb sõnumeid oma 915 00:44:43,700 --> 00:44:46,830 Parim sõber, kui oma algkool õpetaja lihtsalt läbi lugeda 916 00:44:46,830 --> 00:44:50,320 sõnum ja loomalik sunnitud lahus võite olla saanud 917 00:44:50,320 --> 00:44:52,550 Vastus, et. 918 00:44:52,550 --> 00:44:54,970 >> Nüüd muidugi, reaalses maailmas, krüptograafia on keerukamad. 919 00:44:54,970 --> 00:45:00,120 See on väljavõte teksti arvutisüsteem, mis on kasutajanimed ja 920 00:45:00,120 --> 00:45:03,630 paroole, nagu peaaegu kõik meie teha ja see on see, mida oma parooli võib 921 00:45:03,630 --> 00:45:07,260 nägema kui salvestatud raske sõita kuid krüpteeritud kujul. 922 00:45:07,260 --> 00:45:11,050 See ei ole lihtsalt rotatsiooni tähed On B ja B on C. See 923 00:45:11,050 --> 00:45:15,620 palju keerukam, kuid ta kasutab mis üldiselt tuntud kui salajane võti 924 00:45:15,620 --> 00:45:16,690 krüptograafia. 925 00:45:16,690 --> 00:45:20,210 See pilt ütleb järgmist lugu mõne ikoonid. 926 00:45:20,210 --> 00:45:22,250 >> Vasakul, meil on see, mida me kutsume lihttekstina. 927 00:45:22,250 --> 00:45:25,420 Tänapäeva maailmas on krüptograafia, tavaline tekst on lihtsalt algse sõnumi 928 00:45:25,420 --> 00:45:29,050 kirjutatud inglise või prantsuse või keel üldse. 929 00:45:29,050 --> 00:45:32,405 Kui soovite krüptida ta, siis me edasi see piltlikult läbi tabalukk, nii 930 00:45:32,405 --> 00:45:35,580 mõned liiki algoritmi mõne funktsiooni või programmi, et keegi kirjutas 931 00:45:35,580 --> 00:45:39,880 et ajaja tähed loodetavasti rohkem complicatedly kui lihtsalt lisades 13 932 00:45:39,880 --> 00:45:40,980 igaühele neist. 933 00:45:40,980 --> 00:45:43,780 >> Mida sa välja, et protsessi keskel on kutsutud cyphertext. 934 00:45:43,780 --> 00:45:44,850 Nii omamoodi seksikas sõna. 935 00:45:44,850 --> 00:45:47,630 See tähendab lihtsalt, et see on krüpteeritud versioon lihttekstina. 936 00:45:47,630 --> 00:45:52,570 Ja ainult siis, kui sul on see sama salajane, 13 või miinus 13, on teil võimalik 937 00:45:52,570 --> 00:45:54,970 dekrüpteerimiseks sõnum niimoodi. 938 00:45:54,970 --> 00:45:57,770 >> Nii Ülesanded Kaks hulgas asjad saate teha, kui ka Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, siis on vaja kirjutada koodi crack nende paroolide figuring 940 00:46:01,860 --> 00:46:05,170 mida nad olid ja kuidas nad olid krüpteeritud, kuigi me teeme teile natuke 941 00:46:05,170 --> 00:46:06,460 juhendamise teel. 942 00:46:06,460 --> 00:46:09,320 In Standard Edition, tutvustame paar ciphers krüpteerimine 943 00:46:09,320 --> 00:46:12,400 mehhanismid, üks nimega Caesar, üks nimetatakse Vigenere, mis on veel 944 00:46:12,400 --> 00:46:16,100 vahelduva ciphers kus saab midagi, B muutub midagi, kuid 945 00:46:16,100 --> 00:46:18,820 sa pead seda tegema programmiliselt sest seal on tõepoolest saladus 946 00:46:18,820 --> 00:46:22,840 võti kaasatud, mis on tavaliselt number või märksõna, mis ainult 947 00:46:22,840 --> 00:46:26,420 saatja ja saaja need kirjadest aru. 948 00:46:26,420 --> 00:46:28,660 >> Nüüd, see on tegelikult inkarnatsiooni reaalses maailmas. 949 00:46:28,660 --> 00:46:32,910 See on näiteks vähe harva Annie salajane decoder ring, ja sa 950 00:46:32,910 --> 00:46:35,180 saab tegelikult rakendada neid vahelduva ciphers - 951 00:46:35,180 --> 00:46:37,930 Muutub midagi, B muutub midagi - koos paari rattaid, 952 00:46:37,930 --> 00:46:40,840 üks väljaspool, üks sees nii et kui te pöörake ratast või 953 00:46:40,840 --> 00:46:44,170 ring, saab tegelikult rivistama tähed erinevate tähtedega, 954 00:46:44,170 --> 00:46:45,430 saada salakood. 955 00:46:45,430 --> 00:46:48,110 Ja nii nagu pinge täna, mida ma mõtlesin, et ma teha, on natuke 956 00:46:48,110 --> 00:46:52,170 Sarnasusi et kui lülitate TV 24. detsembril, saab vaadata 957 00:46:52,170 --> 00:46:55,390 film ad nauseum eest 24 tundi järjest. 958 00:46:55,390 --> 00:47:06,030 Aga täna, ma seda avatumaks siin ja anna meile ainult kaks minutit 959 00:47:06,030 --> 00:47:13,493 pedagoogiliselt asjakohane Christmas Story koos väikese mehe nimega Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [VIDEO PLAYBACK] 961 00:47:14,400 --> 00:47:17,420 >> -Olgu see kõigile teada ja mitmesugused et Ralph Parker nimetatakse 962 00:47:17,420 --> 00:47:20,650 liige Little Orphan Annie saladus ringi ning tal on õigus kõigile 963 00:47:20,650 --> 00:47:23,460 kiitusega ja hüvitised esinevad lisa. 964 00:47:23,460 --> 00:47:25,990 >> Allkirjastatud, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Allkirjastas Pierre Andre tindiga. 966 00:47:30,100 --> 00:47:34,270 Kiitusega ja kasu juba aastaselt üheksa. 967 00:47:34,270 --> 00:47:39,440 >> [Karjumine raadio] 968 00:47:39,440 --> 00:47:40,770 >> Tule, lähme edasi. 969 00:47:40,770 --> 00:47:44,965 Ma ei pea kõik, mis jazz umbes salakaubavedajate ja piraatidest. 970 00:47:44,965 --> 00:47:48,270 >> Kuula homme õhtul sõlmides seiklus must 971 00:47:48,270 --> 00:47:49,650 Piraatlaeva. 972 00:47:49,650 --> 00:47:53,320 Nüüd on aeg Annie Secret Sõnum teile kohal 973 00:47:53,320 --> 00:47:55,720 saladus ringi. 974 00:47:55,720 --> 00:47:56,580 Pea meeles, et lapsed. 975 00:47:56,580 --> 00:48:01,720 Ainult liikmed Annie Secret Circle saab dekodeerida Annie salajane sõnum. 976 00:48:01,720 --> 00:48:05,872 Pea meeles, et Annie on sõltuvalt teile. 977 00:48:05,872 --> 00:48:08,670 Määra oma sõrmed B2. 978 00:48:08,670 --> 00:48:11,000 Siin on sõnum. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Ma olen oma esimese salajane koosolek. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> Pierre oli suurepärane hääl täna. 983 00:48:21,650 --> 00:48:24,830 Ma võiksin öelda, et tänase sõnum oli tõesti oluline. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 See on sõnum Annie ise. 986 00:48:28,540 --> 00:48:30,086 Pea meeles, et ei räägi kellelegi. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Sekundit hiljem, ma olen ainult tuba maja, kus poiss üheksa 989 00:48:38,710 --> 00:48:42,668 võiks istuda privaatsust ja dekodeerida. 990 00:48:42,668 --> 00:48:47,628 Aha, B. Ma läksin edasi. 991 00:48:47,628 --> 00:48:53,060 E. esimene sõna on "olema." S. See oli tulemas lihtsam nüüd. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 See on R. 994 00:48:55,940 --> 00:48:56,900 >> Tule, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Ma pean minema. 996 00:48:57,860 --> 00:48:59,780 >> -Ma kohe alla, ema. 997 00:48:59,780 --> 00:49:01,030 Gee viuhti. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Kindlasti. 1000 00:49:08,220 --> 00:49:09,500 Kindlasti mida? 1001 00:49:09,500 --> 00:49:11,660 Mis oli Little harva Annie sellega öelda tahad? 1002 00:49:11,660 --> 00:49:12,844 Kindlasti mida? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy minema. 1004 00:49:14,732 --> 00:49:16,148 Kas te välja tulema? 1005 00:49:16,148 --> 00:49:17,092 >> -Olgu, ema. 1006 00:49:17,092 --> 00:49:18,510 Ma tulen kohe välja. 1007 00:49:18,510 --> 00:49:20,270 >> -Ma olin jõudmas nüüd. 1008 00:49:20,270 --> 00:49:21,823 Pinge oli kohutav. 1009 00:49:21,823 --> 00:49:23,045 Mis see oli? 1010 00:49:23,045 --> 00:49:26,510 Saatus planeet võib vaekausil. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, Randy pean minema. 1012 00:49:28,985 --> 00:49:32,680 >> -Ma kohe välja Tule taevas appi. 1013 00:49:32,680 --> 00:49:33,956 >> -Peaaegu valmis. 1014 00:49:33,956 --> 00:49:35,140 Minu sõrmed lendas. 1015 00:49:35,140 --> 00:49:36,880 Minu arvates oli teras lõksu. 1016 00:49:36,880 --> 00:49:38,010 Iga pooride vibreerima. 1017 00:49:38,010 --> 00:49:39,878 See oli peaaegu selge. 1018 00:49:39,878 --> 00:49:43,210 Jah, jah, jah, jah, jah. 1019 00:49:43,210 --> 00:49:49,030 >> -Kindlasti joo oma Ovaltine. 1020 00:49:49,030 --> 00:49:50,280 Ovaltine? 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 Trullakas kaubandus? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Son of a bitch. 1025 00:50:00,694 --> 00:50:01,900 >> [END VIDEO PLAYBACK] 1026 00:50:01,900 --> 00:50:04,260 >> SPEAKER 1: See on CS50, ja et on probleem Set Two. 1027 00:50:04,260 --> 00:50:06,305 Näeme järgmisel nädalal. 1028 00:50:06,305 --> 00:50:08,800 >> SPEAKER 2: Järgmisel CS50, see juhtub. 1029 00:50:08,800 --> 00:50:11,060 >> SPEAKER 1: Nii üks teema meil ei Vaatasin seni on 1030 00:50:11,060 --> 00:50:12,220 et funktsiooni osuti. 1031 00:50:12,220 --> 00:50:14,540 Nüüd funktsiooni osuti on lihtsalt aadress avaliku 1032 00:50:14,540 --> 00:50:17,000 funktsioon, kuid palju nagu - 1033 00:50:17,000 --> 00:50:18,250 poeg - 1034 00:50:18,250 --> 00:50:19,670