1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [Zenelejátszás] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 David J. MALAN: Rendben. 5 00:00:12,230 --> 00:00:16,440 Ez CS50, és ez a a vége a 2. héten. 6 00:00:16,440 --> 00:00:18,480 Így ma, megyünk hogy továbbra is a megjelenés 7 00:00:18,480 --> 00:00:21,150 meg, hogy az általunk képviselt dolgok alatt a hood-- távolodik 8 00:00:21,150 --> 00:00:23,520 a számok, mint egész és lebegőpontos értékek 9 00:00:23,520 --> 00:00:26,810 és amelynek középpontjában a vonósok és végül több érdekes program. 10 00:00:26,810 --> 00:00:30,140 De mi is vessünk egy pillantást a Néhány terület-specifikus problems-- 11 00:00:30,140 --> 00:00:33,620 az első az, ami legyen bevonásával kriptográfia, 12 00:00:33,620 --> 00:00:36,570 a művészet kódolás információ, amelyben lásd fent itt 13 00:00:36,570 --> 00:00:41,480 van egy kép a Radio Orphan Annie titkos dekóder gyűrűt múlt. 14 00:00:41,480 --> 00:00:46,490 >> Ez valójában nagyon kezdetleges formában és gyermekbarát formában cryptopgraphy 15 00:00:46,490 --> 00:00:50,590 amelyben ez a gyűrű két disks-- egy belső és egy külső. 16 00:00:50,590 --> 00:00:54,740 És forgó egyik ilyen, akkor lényegében sorakoznak betűkkel, mint egy 17 00:00:54,740 --> 00:00:59,520 Z-ig további betűk révén, mint a B A. Más szóval, 18 00:00:59,520 --> 00:01:03,730 akkor szó forgatni az ábécé, így jön a leképezés 19 00:01:03,730 --> 00:01:07,820 levelek levelek, hogy, ha akart küldeni egy titkos üzenetet 20 00:01:07,820 --> 00:01:11,820 hogy valaki, mint Annie, meg lehetett írni le az üzenetet, majd forgassa 21 00:01:11,820 --> 00:01:15,370 a levelek, ahol, ha érted mondani, hogy "A", ahelyett, hogy "B" 22 00:01:15,370 --> 00:01:17,280 úgy érted, hogy azt mondják: "B" , ahelyett, hogy "C" - 23 00:01:17,280 --> 00:01:20,240 vagy valami egy kicsit ügyes mint hogy-- majd végül 24 00:01:20,240 --> 00:01:24,630 amíg Annie ezt dekóder gyűrű, ő képes dekódolni az üzenetet. 25 00:01:24,630 --> 00:01:28,540 Most te is emlékszel, az tény, hogy ez a alkalmaztunk egy nagyon híres film, amely 26 00:01:28,540 --> 00:01:31,140 játszik csömörig alatt a karácsonyi szezonban. 27 00:01:31,140 --> 00:01:32,650 Vessünk egy pillantást ide. 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 Ralphie Parker: "Legyen ismert, hogy minden összefoglaló 30 00:01:37,210 --> 00:01:41,000 hogy Ralph Parker-t nevezi ki tagja a Kis Árva Annie Secret 31 00:01:41,000 --> 00:01:44,860 Kör és jogosult a kitüntetések és előnyök előforduló hozzá. " 32 00:01:44,860 --> 00:01:47,410 >> Ralphie PARKER (elbeszélése): Aláírt Kis Árva Annie. 33 00:01:47,410 --> 00:01:50,070 Ellenjegyzett, Pierre Andre! 34 00:01:50,070 --> 00:01:51,490 Tintával. 35 00:01:51,490 --> 00:01:55,494 Kitüntetések és juttatások, Már kilenc évesen. 36 00:01:55,494 --> 00:01:57,402 >> [Zenelejátszás] 37 00:01:57,402 --> 00:02:00,470 >> [RADIO CHATTER] 38 00:02:00,470 --> 00:02:01,470 Ralphie PARKER: Gyere. 39 00:02:01,470 --> 00:02:02,344 Essünk túl rajta. 40 00:02:02,344 --> 00:02:06,029 Nem kell ez a jazz a csempészek és kalózok. 41 00:02:06,029 --> 00:02:08,820 Bemondó: Figyelj holnap este a záró kaland 42 00:02:08,820 --> 00:02:11,060 A The Black Pirate Ship. 43 00:02:11,060 --> 00:02:14,740 Most itt az idő, Annie Titkos üzenetet neked tagok 44 00:02:14,740 --> 00:02:17,110 A Secret Circle. 45 00:02:17,110 --> 00:02:20,700 Ne feledje a gyerekek, csak a tagok Annie Secret Circle 46 00:02:20,700 --> 00:02:23,270 tudja dekódolni Annie titkos üzenetet. 47 00:02:23,270 --> 00:02:27,270 >> Ne feledje, hogy Annie is attól függően, hogy. 48 00:02:27,270 --> 00:02:30,060 Állítsa be a csapok, hogy a B-2. 49 00:02:30,060 --> 00:02:34,004 Itt van a message-- 12, 11, 2-- 50 00:02:34,004 --> 00:02:36,503 Ralphie PARKER (elbeszélése): I vagyok az első titkos találkozón. 51 00:02:36,503 --> 00:02:40,041 Bemondó: --25, 14, 11, 18, 16-- 52 00:02:40,041 --> 00:02:42,790 Ralphie PARKER (elbeszélése): Oh, Pierre volt nagy hangja ma este. 53 00:02:42,790 --> 00:02:46,110 Elmondhatom, hogy a ma esti üzenet volt igazán fontos. 54 00:02:46,110 --> 00:02:47,930 >> Bemondó: Legalább 3, 25. 55 00:02:47,930 --> 00:02:49,940 Ez egy üzenet Annie magát. 56 00:02:49,940 --> 00:02:52,182 Ne feledje, ne mondd el senkinek. 57 00:02:52,182 --> 00:02:55,077 >> [Zihálás] 58 00:02:55,077 --> 00:02:57,285 Ralphie PARKER (elbeszélése): Kilencven másodperc múlva, én vagyok 59 00:02:57,285 --> 00:03:00,090 Az egyetlen szobában ház, ahol a fiú kilenc 60 00:03:00,090 --> 00:03:04,380 ülhetett adatvédelmi és dekódolni. 61 00:03:04,380 --> 00:03:04,990 Ah. 62 00:03:04,990 --> 00:03:05,680 "B." 63 00:03:05,680 --> 00:03:06,524 >> [Nevet] 64 00:03:06,524 --> 00:03:08,684 >> Ralphie PARKER (elbeszélése): Elmentem a következő. 65 00:03:08,684 --> 00:03:09,610 "E" 66 00:03:09,610 --> 00:03:11,641 Az első szó a "legyen." 67 00:03:11,641 --> 00:03:12,140 Igen! 68 00:03:12,140 --> 00:03:14,293 Hogy jön könnyebb most. 69 00:03:14,293 --> 00:03:15,259 "U." 70 00:03:15,259 --> 00:03:16,225 >> [Nevet] 71 00:03:16,225 --> 00:03:18,157 >> Randy Parker: Ugyan már, Ralphie. 72 00:03:18,157 --> 00:03:19,606 Mennem kell! 73 00:03:19,606 --> 00:03:21,538 >> Ralphie PARKER: Mindjárt le, anya. 74 00:03:21,538 --> 00:03:22,504 Gee zseniális. 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 "T." "O." "Győződjön meg róla, a "." Ügyeljen arra, hogy "mi? 77 00:03:31,220 --> 00:03:33,981 Mi volt árva Annie mondani? "Ügyeljen arra, hogy" mi? 78 00:03:33,981 --> 00:03:35,522 ANYA: Ralphie, Randy mennie. 79 00:03:35,522 --> 00:03:36,735 Kérlek gyere ki? 80 00:03:36,735 --> 00:03:38,190 >> Ralphie PARKER: Rendben, anya! 81 00:03:38,190 --> 00:03:39,787 Mindjárt ki! 82 00:03:39,787 --> 00:03:41,995 Ralphie PARKER (elbeszélése): Kezdtem közelebb van. 83 00:03:41,995 --> 00:03:43,370 A feszültség volt szörnyű. 84 00:03:43,370 --> 00:03:44,794 Mi volt ez? 85 00:03:44,794 --> 00:03:47,656 A sorsa a bolygó lefagy a mérleg. 86 00:03:47,656 --> 00:03:50,518 >> ANYA: Ralphie, Randy mennie kell! 87 00:03:50,518 --> 00:03:53,635 >> Ralphie PARKER: Mindjárt ki, az isten szerelmére! 88 00:03:53,635 --> 00:03:55,343 Ralphie PARKER (Elbeszélése): Majdnem ott! 89 00:03:55,343 --> 00:03:56,520 Ujjaim repült! 90 00:03:56,520 --> 00:03:58,500 Az agyam egy acél csapda. 91 00:03:58,500 --> 00:03:59,850 Minden pórus vibrált. 92 00:03:59,850 --> 00:04:01,806 Már majdnem tiszta! 93 00:04:01,806 --> 00:04:02,773 Igen! 94 00:04:02,773 --> 00:04:03,273 Igen! 95 00:04:03,273 --> 00:04:03,773 Igen! 96 00:04:03,773 --> 00:04:04,740 Igen! 97 00:04:04,740 --> 00:04:10,250 >> Ralphie Parker: "Légy biztos inni a Ovaltine. " 98 00:04:10,250 --> 00:04:10,750 Ovaltine? 99 00:04:10,750 --> 00:04:14,864 100 00:04:14,864 --> 00:04:17,539 Egy vacak kereskedelmi? 101 00:04:17,539 --> 00:04:19,439 >> [Zenelejátszás] 102 00:04:19,439 --> 00:04:21,724 >> Ralphie Parker: A kurva anyját. 103 00:04:21,724 --> 00:04:23,460 >> [Nevet] 104 00:04:23,460 --> 00:04:27,070 >> David J. MALAN: Tehát akkor ez Egy pillantás, mi kriptográfia 105 00:04:27,070 --> 00:04:29,880 lehet a Ez-- a inni múlt. 106 00:04:29,880 --> 00:04:30,900 Tehát egy gyors bejelentés. 107 00:04:30,900 --> 00:04:33,410 Ha szabad ezt Péntek 13:15, és 108 00:04:33,410 --> 00:04:36,610 szeretne csatlakozni hozzánk CS50 ebéd, irány ezt az URL itt. 109 00:04:36,610 --> 00:04:38,080 Érkezési sorrendben szolgálják, mint rendesen. 110 00:04:38,080 --> 00:04:41,840 De az idő múlásával, akkor ügyeljen arra, hogy a legtöbb, aki szeretne részt venni 111 00:04:41,840 --> 00:04:43,640 beoszthat-bölcs. 112 00:04:43,640 --> 00:04:45,170 >> Így húrok. 113 00:04:45,170 --> 00:04:47,940 Van Zamyla-- kit már most találkozott a legvalószínűbb 114 00:04:47,940 --> 00:04:50,750 A Probléma Set 1-- akiknek nevét írta így. 115 00:04:50,750 --> 00:04:53,570 És tegyük fel, hogy beírt nevét egy számítógépes program, amely az 116 00:04:53,570 --> 00:04:55,710 használ valami hasonló getString. 117 00:04:55,710 --> 00:04:57,890 Ahhoz, hogy letölteni azokat a billentyűleütéseket, hogyan 118 00:04:57,890 --> 00:05:01,620 megyünk a képviselő húr, egy szó, egy bekezdés, 119 00:05:01,620 --> 00:05:03,960 vagy több levelet, mint ezek itt? 120 00:05:03,960 --> 00:05:06,790 >> Beszéltünk utoljára a egész számok és problémák 121 00:05:06,790 --> 00:05:09,960 hogy merülnek fel egész túlcsordulás és lebegőpontos értékek 122 00:05:09,960 --> 00:05:12,190 és problémák felmerülő pontosság. 123 00:05:12,190 --> 00:05:16,080 A húrok, akkor legalább egy kicsit több rugalmasságot 124 00:05:16,080 --> 00:05:17,970 mert strings-- csak a valós world-- 125 00:05:17,970 --> 00:05:19,790 lehet egy szép tetszőleges hosszúságú. 126 00:05:19,790 --> 00:05:21,055 Elég rövid, nagyon hosszú. 127 00:05:21,055 --> 00:05:23,680 De még akkor is, megyünk meg, hogy a számítógépek néha 128 00:05:23,680 --> 00:05:27,200 elfogyott a memória, és még csak nem is tárolni elég nagy sor. 129 00:05:27,200 --> 00:05:30,840 >> De most kezdjük vizualizálni egy string valami ezekben a dobozokban 130 00:05:30,840 --> 00:05:31,340 itt. 131 00:05:31,340 --> 00:05:36,410 Tehát hat ilyen dobozok, amelyek mindegyike mutatja a karakter vagy a "char". 132 00:05:36,410 --> 00:05:40,646 Úgy emlékszem, hogy a "char" - c-h-a-r-- is az egyik a beépített adattípusok C. 133 00:05:40,646 --> 00:05:43,520 És mi a jó az, hogy tudod használni hogy a fajta, mint egy építőelem, 134 00:05:43,520 --> 00:05:47,880 egy puzzle-darabot, ha úgy tetszik, hogy egy nagyobb típusú adat, hogy mi lesz tovább 135 00:05:47,880 --> 00:05:49,410 hívni a "string". 136 00:05:49,410 --> 00:05:53,650 >> Nos, ami hasznos a gondolkodás a dolgok, mint húrok ilyen módon? 137 00:05:53,650 --> 00:05:57,720 Nos, kiderült, hogy mi is valójában tőkeáttétel ezt a struktúrát 138 00:05:57,720 --> 00:06:01,420 hogy valóban elérni egyes karaktereket Egy nagyon egyszerű módon. 139 00:06:01,420 --> 00:06:04,099 Én megyek előre, és hozzon létre egy fájlt a "stringzero.c," 140 00:06:04,099 --> 00:06:05,765 de hívhatjuk, amit csak szeretne. 141 00:06:05,765 --> 00:06:08,500 És a pályán honlapja Ebben a példában már előre, 142 00:06:08,500 --> 00:06:10,430 így nem kell típus mindent. 143 00:06:10,430 --> 00:06:13,820 >> És én megyek előre és először nem int main semmis. 144 00:06:13,820 --> 00:06:15,980 És néhány napon belül, kezdjük ugratni egymástól 145 00:06:15,980 --> 00:06:19,070 milyen üres itt van, miért ez int következő a fő, és így tovább. 146 00:06:19,070 --> 00:06:21,180 De most, folytassuk másolni be ezt. 147 00:06:21,180 --> 00:06:23,455 >> Fogok arra, hogy egy sor úgynevezett s. 148 00:06:23,455 --> 00:06:26,920 És fogok visszatérni GetString függetlenül a felhasználó által. 149 00:06:26,920 --> 00:06:29,170 Ez lesz egyszerű programot, nem utasítható, 150 00:06:29,170 --> 00:06:31,336 Én csak úgy vakon arra számítanak, hogy a felhasználó tudja, 151 00:06:31,336 --> 00:06:32,600 mit kell tenni, hogy ez egyszerű. 152 00:06:32,600 --> 00:06:34,220 >> És most lesz egy hurok. 153 00:06:34,220 --> 00:06:37,450 És azon belül a for ciklus vagyok lesz int i lesz nulla. 154 00:06:37,450 --> 00:06:40,660 És én megint csak egy egyezmény, index változó számolás, 155 00:06:40,660 --> 00:06:42,350 de nem tudtam hívni ezt, amit akarok. 156 00:06:42,350 --> 00:06:46,275 Fogok tenni én kevésbé mint-- jól Zamyla neve hat betű hosszú. 157 00:06:46,275 --> 00:06:48,150 Így fogok kemény kód, hogy van most. 158 00:06:48,150 --> 00:06:49,730 >> És akkor ++. 159 00:06:49,730 --> 00:06:53,190 És most benne ilyen göndör fogszabályozó fogok csinálni printf, 160 00:06:53,190 --> 00:06:55,460 és szeretnék nyomtatni egy karakter egy időben. 161 00:06:55,460 --> 00:06:58,227 Így fogom használni% C talán az első alkalommal. 162 00:06:58,227 --> 00:07:00,560 És akkor azt akarom, hogy nyomtassa ki az összes karaktert külön sorba. 163 00:07:00,560 --> 00:07:02,550 Így fogok tenni a kis backslash n ott. 164 00:07:02,550 --> 00:07:03,640 Bezárás idézet. 165 00:07:03,640 --> 00:07:06,250 >> És most én akarok valamit. 166 00:07:06,250 --> 00:07:10,610 Azt akarom, hogy nyomtassa ki a adott betű a húr, 167 00:07:10,610 --> 00:07:13,670 s, mint én vagyok iterációjával a nulla hat. 168 00:07:13,670 --> 00:07:17,150 Más szóval, azt akarom, hogy nyomtassa ki az i-edik karakterét s. 169 00:07:17,150 --> 00:07:18,420 Most hogyan tudom ezt megtenni? 170 00:07:18,420 --> 00:07:21,550 >> Hát ugyanúgy, mint a dobozok ez az ábrázolás itt, 171 00:07:21,550 --> 00:07:25,560 fajta, idézik fel a fogalom a boksz betűk, akkor hasonlóképpen csinálni 172 00:07:25,560 --> 00:07:32,630 szintaktikailag C egyszerűen megadásával, Azt akarom, hogy nyomtassa ki s a i-edik karaktere. 173 00:07:32,630 --> 00:07:35,640 A szögletes zárójelek a számítógép billentyűzet 174 00:07:35,640 --> 00:07:38,910 hogy egy amerikai billentyűzet általában felett a vissza gomb. 175 00:07:38,910 --> 00:07:42,630 >> Tehát ez nem teljesen igaz mégis, mivel lehet, hogy észrevette. 176 00:07:42,630 --> 00:07:44,780 De fogom, hogy milyen vakon előretör itt. 177 00:07:44,780 --> 00:07:47,020 És fogok tenni, hogy húr 0. 178 00:07:47,020 --> 00:07:50,860 De mielőtt ezt, lássuk, mi Nem előre néhány gyakori hibák. 179 00:07:50,860 --> 00:07:52,844 Fog ez össze? 180 00:07:52,844 --> 00:07:54,510 Nem, én vagyok hiányzik egy csomó dolgot. 181 00:07:54,510 --> 00:07:55,280 Könyvtárak hallottam. 182 00:07:55,280 --> 00:07:58,480 >> Tehát ami header fájlok Lehet, hogy én szeretnék hozzá itt? 183 00:07:58,480 --> 00:07:59,205 Igen. 184 00:07:59,205 --> 00:08:01,580 >> Közönség: Meg kell standard I / O [nem hallható] 185 00:08:01,580 --> 00:08:02,663 >> David J. MALAN: Kiváló. 186 00:08:02,663 --> 00:08:06,060 Szóval kell standard I / O. Milyen cél akarok standard I / O? 187 00:08:06,060 --> 00:08:06,670 A printf. 188 00:08:06,670 --> 00:08:09,220 Így többek között stdio.h. 189 00:08:09,220 --> 00:08:13,490 És azt is javasolja, hogy többek között A CS50 könyvtár milyen okból? 190 00:08:13,490 --> 00:08:14,650 Ahhoz, hogy a húrok. 191 00:08:14,650 --> 00:08:17,780 Szóval majd meglátjuk, mit CS50 könyvtár csinál 192 00:08:17,780 --> 00:08:19,260 létre ez a fogalom a húr. 193 00:08:19,260 --> 00:08:21,930 De most, ha csak gondol rá, mint egy tényleges adat típusát. 194 00:08:21,930 --> 00:08:23,596 >> Annak érdekében, hogy úgy tűnik, hogy egy kicsit rendbe. 195 00:08:23,596 --> 00:08:27,060 És most én megyek előre és valóban nem teszik húr 0. 196 00:08:27,060 --> 00:08:27,700 Összeállítani. 197 00:08:27,700 --> 00:08:28,370 Szóval ez jó. 198 00:08:28,370 --> 00:08:32,799 Tehát ./string0 hadd nagyítás így tudjuk lásd közelebbről, mi történik. 199 00:08:32,799 --> 00:08:33,850 Az Enter billentyűt. 200 00:08:33,850 --> 00:08:37,789 Z-A-M-Y-L-A be. 201 00:08:37,789 --> 00:08:39,440 És mi már nyomtatott ki Zamyla nevét. 202 00:08:39,440 --> 00:08:40,409 >> Szóval ez nagyon jó. 203 00:08:40,409 --> 00:08:43,220 Tehát most menjünk előre, és futtatni ezt a programot, 204 00:08:43,220 --> 00:08:45,659 és írja ki Daven teljes nevét. 205 00:08:45,659 --> 00:08:46,450 Meglepetés, meglepetés. 206 00:08:46,450 --> 00:08:48,021 Az Enter billentyűt. 207 00:08:48,021 --> 00:08:48,520 Hmm. 208 00:08:48,520 --> 00:08:51,750 Még nem nyomtatott Daven a teljes első név helyesen. 209 00:08:51,750 --> 00:08:54,250 Most ez nyilvánvalónak kellene lennie a visszapillantás, mert mi, 210 00:08:54,250 --> 00:08:57,010 fajta, hülye tervezés döntés? 211 00:08:57,010 --> 00:08:59,590 >> Igen, nehéz kódolt a hat belső én a hurok. 212 00:08:59,590 --> 00:09:01,610 Most tettem, hogy csak azért, mert Tudtam Zamyla nevét 213 00:09:01,610 --> 00:09:02,776 volt, lesz hat betű. 214 00:09:02,776 --> 00:09:04,720 De ez bizonyára nem általános megoldás. 215 00:09:04,720 --> 00:09:07,720 Így kiderül, mi is dinamikusan kitalálni a string hossza 216 00:09:07,720 --> 00:09:10,440 meghívásával nevezett funkció strlen. 217 00:09:10,440 --> 00:09:12,840 >> Ismét szándékosan tömören elemzi csak 218 00:09:12,840 --> 00:09:14,450 annak érdekében, hogy sokkal kényelmesebb gépelni. 219 00:09:14,450 --> 00:09:17,170 De ez egyet jelent a szerzés a karakterlánc hosszát. 220 00:09:17,170 --> 00:09:23,190 Én megyek vissza a terminál ablak és futtassa újra a fordító. 221 00:09:23,190 --> 00:09:24,170 De ez kiabál velem. 222 00:09:24,170 --> 00:09:29,130 Értelemszerűen kijelentette könyvtári funkció strlen típusú unsigned int const-- 223 00:09:29,130 --> 00:09:29,780 Vagyok elveszett. 224 00:09:29,780 --> 00:09:30,590 Teljesen. 225 00:09:30,590 --> 00:09:32,940 >> Így különösen a szemek elkezdenek máz alatt 226 00:09:32,940 --> 00:09:36,000 A hibaüzenetek, mint ez, a hangsúly őszintén az első néhány szót. 227 00:09:36,000 --> 00:09:38,590 Tudjuk, hogy a probléma az 8 sor, amint azt itt. 228 00:09:38,590 --> 00:09:40,500 És ez a karakterlánc-0.c. 229 00:09:40,500 --> 00:09:43,580 Értelemszerűen nyilvánította könyvtári funkció strlen. 230 00:09:43,580 --> 00:09:47,000 Annak érdekében, hogy általában fog egy minta a hibaüzenetek. 231 00:09:47,000 --> 00:09:49,190 Értelemszerűen kijelentette valamit. 232 00:09:49,190 --> 00:09:53,250 >> Tehát röviden, mit úgy tűnt, tettek tekintetében 8. sor, itt. 233 00:09:53,250 --> 00:09:56,880 Mi lehet a megoldás még ha még soha nem használt strlen magad? 234 00:09:56,880 --> 00:09:58,907 >> Közönség: része egy másik könyvtár? 235 00:09:58,907 --> 00:10:00,740 David J. MALAN rész egy másik könyvtárat. 236 00:10:00,740 --> 00:10:02,400 Így bejelentik, hogy úgy mondjam. 237 00:10:02,400 --> 00:10:07,510 Ez szerepel néhány fájlban kivéve stdio.h és CS50.h. 238 00:10:07,510 --> 00:10:09,179 Most hol van definiálva? 239 00:10:09,179 --> 00:10:12,220 Hogy őszinte legyek, meg sem kell, hogy csak tudják ezt ki a fejedre, 240 00:10:12,220 --> 00:10:13,640 vagy Google ezt a, és derítse ki. 241 00:10:13,640 --> 00:10:18,150 Vagy tudja ezt, már megnyílt a CS50 készülék a terminál program, amely 242 00:10:18,150 --> 00:10:22,200 csak a nagy, teljes képernyős változat mi van az alján, gedit ablak. 243 00:10:22,200 --> 00:10:24,970 >> És kiderül, hogy van egy hasonlóan tömör parancs, az úgynevezett 244 00:10:24,970 --> 00:10:29,280 férfi kézi, ahol, ha begépeli a a függvény nevét, és nyomja meg az Enter, 245 00:10:29,280 --> 00:10:32,240 kapsz vissza eléggé misztikus dokumentáció. 246 00:10:32,240 --> 00:10:35,299 Ez csak szöveg, hogy általában úgy néz ki, egy kis valamit, mint ez. 247 00:10:35,299 --> 00:10:37,090 Ez egy kicsit nyomasztó első pillantásra. 248 00:10:37,090 --> 00:10:39,048 De őszintén fogok legyen a szemem máz alatt 249 00:10:39,048 --> 00:10:41,930 és csak összpontosítani a rész Érdekel, ebben a pillanatban. 250 00:10:41,930 --> 00:10:42,780 >> Melyik ez. 251 00:10:42,780 --> 00:10:45,470 Ami úgy néz ki, mint a szerkezetileg valami vagyok ismerős. 252 00:10:45,470 --> 00:10:48,080 Valójában a man oldalon, így beszélni, megmondja 253 00:10:48,080 --> 00:10:51,590 milyen fejléc fájlt funkció mint strlen meghatározása. 254 00:10:51,590 --> 00:10:54,170 Szóval megyek vissza most a gedit. 255 00:10:54,170 --> 00:10:59,070 És én megyek előre, és add ide #include 256 00:10:59,070 --> 00:11:00,480 és mentse a fájlt. 257 00:11:00,480 --> 00:11:04,300 >> Megyek, hogy törölje a képernyőt Vezérlés L Ha már kíváncsi. 258 00:11:04,300 --> 00:11:08,210 És fogok újra futni make string.0, állítja össze ezúttal. 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla. 260 00:11:11,790 --> 00:11:15,020 Úgy tűnt, a munka Engedj előre, és futtassa újra azt Davenport. 261 00:11:15,020 --> 00:11:15,860 Az Enter billentyűt. 262 00:11:15,860 --> 00:11:17,730 És az is, úgy tűnt, működik. 263 00:11:17,730 --> 00:11:21,220 >> Így nem tehetünk egy kicsit jobban, mint ez, bár, elkezdhetjük rendben a dolgokat 264 00:11:21,220 --> 00:11:23,257 akár csak egy kicsit. 265 00:11:23,257 --> 00:11:25,590 És megyek, hogy valóban bemutatni egy másik dolog most. 266 00:11:25,590 --> 00:11:28,930 Én megyek előre, és kivéve ezt egy másik fájlt. 267 00:11:28,930 --> 00:11:31,770 És én fogom hívni A fájl string1.c csak 268 00:11:31,770 --> 00:11:34,620 hogy összhangban legyen a kód Ön képes lesz arra, hogy megtalálja az interneten. 269 00:11:34,620 --> 00:11:37,050 >> És nézzük hangsúly az pontosan ugyanazt a kódot. 270 00:11:37,050 --> 00:11:39,000 Kiderül, hogy én már már egyfajta figyelembe 271 00:11:39,000 --> 00:11:42,600 magától értetődőnek, hogy a laptop, és viszont, a CS50 készülék 272 00:11:42,600 --> 00:11:47,450 van egy csomó memóriát, sok RAM, sok helyet byte 273 00:11:47,450 --> 00:11:48,920 amiben tárolható szálakat. 274 00:11:48,920 --> 00:11:53,560 >> De a valóság az, ha gépelt hosszú elég, és elég billentyűleütéseket, 275 00:11:53,560 --> 00:11:56,170 Én elméletileg típus több karakter 276 00:11:56,170 --> 00:11:58,830 mint a számítógép fizikailag van memória. 277 00:11:58,830 --> 00:11:59,830 És ez problematikus. 278 00:11:59,830 --> 00:12:03,050 Csakúgy, mint egy int csak számít olyan nagy, elméletben, 279 00:12:03,050 --> 00:12:06,600 akkor csak belegyömöszölni annyi karakter a számítógép RAM Random 280 00:12:06,600 --> 00:12:07,920 Access Memory. 281 00:12:07,920 --> 00:12:11,140 >> Szóval, jobb előre ezt a problémát, sőt 282 00:12:11,140 --> 00:12:13,660 bár lehet, hogy a ritka sarok eset, hogy úgy mondjam. 283 00:12:13,660 --> 00:12:15,670 Nem történik meg gyakran, megtörténhet. 284 00:12:15,670 --> 00:12:18,815 És ha ez megtörténik, és én nem előre és program azt, 285 00:12:18,815 --> 00:12:20,300 programom tehet ki tudja, mi. 286 00:12:20,300 --> 00:12:22,220 Freeze, lefagy, újraindítás, bármi. 287 00:12:22,220 --> 00:12:24,490 Valami várt megtörténhet. 288 00:12:24,490 --> 00:12:27,120 >> Szóval, mit fogok csinálni most, ezentúl tényleg, 289 00:12:27,120 --> 00:12:31,630 előtt áll, amit valaha is vakon használja a változó, mint s hogy 290 00:12:31,630 --> 00:12:36,790 hozzá van rendelve a visszatérési értéke más funkció, mint a getstring, 291 00:12:36,790 --> 00:12:40,200 Megyek győződjön meg róla, hogy az érték érvényes. 292 00:12:40,200 --> 00:12:44,280 Szóval tudom, csak olvastam CS50 dokumentációjában getstring, 293 00:12:44,280 --> 00:12:49,020 amely végül fogjuk mutatni vagy, hogy getstring visszaadja a speciális szimbólum 294 00:12:49,020 --> 00:12:53,610 NULL úgynevezett N-U-L-L minden sapkák, ha valami balul sül el. 295 00:12:53,610 --> 00:12:55,650 >> Tehát általában, visszatér a húr. 296 00:12:55,650 --> 00:12:59,700 De egyébként, ha visszatér az N-U-L-L-- majd végül, hogy mi az igazán 297 00:12:59,700 --> 00:13:01,790 means-- az csak azt jelenti, valami rossz történt. 298 00:13:01,790 --> 00:13:05,560 Most ez azt jelenti, hogy ugyanúgy, mint a Scratch, Tudom ellenőrizni a feltétel itt C, 299 00:13:05,560 --> 00:13:08,830 ha s nem egyenlő NULL. 300 00:13:08,830 --> 00:13:11,930 Tehát, ha nem láttam ilyet, ez csak azt jelenti, nem egyenlő. 301 00:13:11,930 --> 00:13:15,290 >> Szóval ez az ellentéte egyenlő az egyenlők, ami, emlékszem, 302 00:13:15,290 --> 00:13:18,940 eltér egyetlen értéke, ami a feladat. 303 00:13:18,940 --> 00:13:23,030 Tehát, ha s nem egyenlő NULL, csak akkor nem 304 00:13:23,030 --> 00:13:25,980 Azt akarom, hogy végre ezeket a sorokat a kód. 305 00:13:25,980 --> 00:13:28,080 Más szóval, mielőtt merülés vakon 306 00:13:28,080 --> 00:13:30,919 és indítsa iterációjával át s, és kezeli azt 307 00:13:30,919 --> 00:13:33,710 mintha ez egy sorozata karakter, megyek először ellenőrizze, 308 00:13:33,710 --> 00:13:37,900 várj egy percet, ez s egyáltalán nem megegyezik a különleges érték NULL? 309 00:13:37,900 --> 00:13:40,030 >> Mert ha igen, rossz dolgok történnek. 310 00:13:40,030 --> 00:13:43,080 És most tegyük fel, hogy a rossz dolgok történik azt jelenti, hogy a program összeomlik, 311 00:13:43,080 --> 00:13:45,070 és nem feltétlenül vissza. 312 00:13:45,070 --> 00:13:46,800 Szóval őszintén szólva, úgy néz ki, csúnyább. 313 00:13:46,800 --> 00:13:48,660 ez a fajta zavaró most pillantott. 314 00:13:48,660 --> 00:13:50,780 De ez válik ismerős nemsokára. 315 00:13:50,780 --> 00:13:52,920 >> De fogom javasolni most egy másik javulást. 316 00:13:52,920 --> 00:13:54,660 Ez már haladás a korrektség. 317 00:13:54,660 --> 00:13:58,800 Az a program már több helyes, mert Abban a ritka esetben, hogy nincs elég memória 318 00:13:58,800 --> 00:14:01,180 létezik, én is kezelni, és én csak nem csinál semmit. 319 00:14:01,180 --> 00:14:02,680 Én legalábbis nem fog összeomlani. 320 00:14:02,680 --> 00:14:05,000 >> De tegyük a végleges változat itt. 321 00:14:05,000 --> 00:14:07,690 És nevű fájl string2.c. 322 00:14:07,690 --> 00:14:10,190 Megyek be az ugyanazt a kódot egy pillanatra, 323 00:14:10,190 --> 00:14:14,210 és fogom kiemelni ezt vonal, 11, itt, csak egy pillanatra. 324 00:14:14,210 --> 00:14:18,179 Most a valóság az, hogy okos fordítók mint csenget is erősít ez nekünk 325 00:14:18,179 --> 00:14:19,970 a színfalak mögött Anélkül, hogy valaha is tudta. 326 00:14:19,970 --> 00:14:24,670 De nézzük gondol erről alapvetően, mint egy problémás design. 327 00:14:24,670 --> 00:14:29,010 >> Ez a vonal a kód, természetesen, mondván inicializálni néhány változó i 0-ra. 328 00:14:29,010 --> 00:14:30,260 Ez elég egyértelmű. 329 00:14:30,260 --> 00:14:34,691 És mi megint ez állítás, itt, én ++ csinálsz? 330 00:14:34,691 --> 00:14:37,066 Láttuk korábban, de nem nagyon beszélnek róla. 331 00:14:37,066 --> 00:14:37,900 >> Közönség: növelésének i. 332 00:14:37,900 --> 00:14:39,191 >> David J. MALAN: növelésének i. 333 00:14:39,191 --> 00:14:41,890 Így minden iterációs keresztül Ez a hurok, minden ciklusban, 334 00:14:41,890 --> 00:14:43,570 te megnő i egy. 335 00:14:43,570 --> 00:14:45,740 Így egyre nagyobb és nagyobb, és nagyobb, míg a hurok megszűnik. 336 00:14:45,740 --> 00:14:46,810 Hogyan felmondani? 337 00:14:46,810 --> 00:14:49,430 Hát itt van ez a középső állapot amit korábban használt. 338 00:14:49,430 --> 00:14:52,500 Láttad és walkthroughs a P halmaz. 339 00:14:52,500 --> 00:14:53,880 >> De mi ez a mondás? 340 00:14:53,880 --> 00:14:58,352 Tegye a következőket hurkot úgy Amíg én kevesebb, mint amit? 341 00:14:58,352 --> 00:14:59,810 Közönség: A hossza a húr. 342 00:14:59,810 --> 00:15:01,518 David J. MALAN: The hosszát a húr. 343 00:15:01,518 --> 00:15:04,300 Így fordítja elég tisztán angol ebben az értelemben. 344 00:15:04,300 --> 00:15:08,810 Most a probléma az, hogy minden alkalommal, amikor halad végig ezt hurok elméletben, 345 00:15:08,810 --> 00:15:10,000 Azt kérdeztem ezt a kérdést. 346 00:15:10,000 --> 00:15:12,250 Én vagyok kevesebb, mint a húr hossza s? 347 00:15:12,250 --> 00:15:14,500 Én vagyok kevesebb, mint a húr hossza s? 348 00:15:14,500 --> 00:15:18,380 >> Most én változik minden iterációs? 349 00:15:18,380 --> 00:15:18,880 Ez az. 350 00:15:18,880 --> 00:15:19,629 Mivel a ++. 351 00:15:19,629 --> 00:15:21,700 Tehát minden iterációs i egyre nagyobb. 352 00:15:21,700 --> 00:15:25,411 De s egyre nagyobb, vagy kisebb, vagy megváltoztatása egyáltalán? 353 00:15:25,411 --> 00:15:25,910 Nr. 354 00:15:25,910 --> 00:15:30,240 Így a tervezés, az egyik tengely amely mentén igyekszünk értékelni kód 355 00:15:30,240 --> 00:15:32,610 az osztályban, ez olyan fajta hülye. 356 00:15:32,610 --> 00:15:34,690 >> Mint a szó szoros értelmében, minden iterációs 357 00:15:34,690 --> 00:15:37,110 Ennek hurok kéri a ugyanazt a rohadt kérdés megint, 358 00:15:37,110 --> 00:15:40,770 és újra, és újra, és a szó szoros értelmében ez soha nem fog megváltozni. 359 00:15:40,770 --> 00:15:44,220 Legalábbis ha én nem érnek s és próbál változtatni a tartalmát s. 360 00:15:44,220 --> 00:15:46,610 Így tudok egy kicsit jobban, mint ez. 361 00:15:46,610 --> 00:15:49,530 >> És mit fogok tenni, nem Kijelentem, csak egy i változó, 362 00:15:49,530 --> 00:15:53,330 de a második változó én önkényesen, de hagyományos, hívják n. 363 00:15:53,330 --> 00:15:55,940 Rendeljen n egyenlő a húr hossza s. 364 00:15:55,940 --> 00:15:59,090 Itt pedig, megyek nem egy okos kis optimalizálás, így 365 00:15:59,090 --> 00:16:03,460 beszélni, hogy a végén a nap Nem helyes, vagy nem kevésbé helyes 366 00:16:03,460 --> 00:16:04,260 mint korábban. 367 00:16:04,260 --> 00:16:05,500 De ez egy jobb design. 368 00:16:05,500 --> 00:16:09,480 Az a tény, hogy én vagyok a kevesebb idő, kevesebb CPU ciklust, így 369 00:16:09,480 --> 00:16:14,040 beszélni, hogy válaszoljon az azonos kérdés, de csak egyszer. 370 00:16:14,040 --> 00:16:17,870 >> Minden olyan kérdésre, hogy az általános javításának elve, 371 00:16:17,870 --> 00:16:21,294 mondjuk, a program hatékonysága? 372 00:16:21,294 --> 00:16:21,991 Igen? 373 00:16:21,991 --> 00:16:23,699 Közönség: Miért használja a [nem hallható]? 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 David J. MALAN: Jó kérdés. 376 00:16:27,010 --> 00:16:30,690 Akkor miért tesszük a ++ a végén i eleje helyett az i? 377 00:16:30,690 --> 00:16:33,070 Ebben az esetben azt nem funkcionális hatás. 378 00:16:33,070 --> 00:16:36,670 És általában, én inkább használja a postfix operátor 379 00:16:36,670 --> 00:16:41,750 úgy, hogy ez egy kicsit világosabb, mint hogy a művelet történik. 380 00:16:41,750 --> 00:16:46,670 >> Azok számára ismeretlen, van egy másik nyilatkozatok amellyel meg tudná csinálni ++ i. 381 00:16:46,670 --> 00:16:48,747 Ezek funkcionálisan Ebben az esetben azzal egyenértékű 382 00:16:48,747 --> 00:16:51,080 mert semmi más körül, hogy a növelés. 383 00:16:51,080 --> 00:16:54,435 De akkor jön ki esetekben és sornyi kódot 384 00:16:54,435 --> 00:16:55,810 amelyben ez a különbség. 385 00:16:55,810 --> 00:16:57,810 Tehát általában, mi nem még beszélni ezt. 386 00:16:57,810 --> 00:17:00,690 Mert őszintén szólva, ez teszi a kód szexisebb, és egyfajta esőköpeny, 387 00:17:00,690 --> 00:17:01,776 és kevesebb karaktert. 388 00:17:01,776 --> 00:17:04,859 De a valóság az, hogy ez sokkal nehezebb, Azt hiszem, még számomra is, hogy lezárja az agyam 389 00:17:04,859 --> 00:17:07,319 körül néha, a műveletek sorrendjét. 390 00:17:07,319 --> 00:17:09,750 Tehát, mint egy félre, ha nagyon nem tetszik ez, 391 00:17:09,750 --> 00:17:14,650 annak ellenére, hogy ez a fajta szexi néz, akkor is csinálni i + = 1, 392 00:17:14,650 --> 00:17:18,880 amely a csúnyább változata Ugyanez a gondolat a Postfix növelés. 393 00:17:18,880 --> 00:17:22,250 >> Én mondom ezt, és kell gúnyolódni meg, 394 00:17:22,250 --> 00:17:25,140 de akkor jön, hogy kódot valami szép nemsokára. 395 00:17:25,140 --> 00:17:27,160 >> [Nevetés] 396 00:17:27,160 --> 00:17:28,410 >> David J. MALAN: Igaz? 397 00:17:28,410 --> 00:17:29,360 Igen. 398 00:17:29,360 --> 00:17:30,480 Kérdés a közepén. 399 00:17:30,480 --> 00:17:32,146 >> Közönség: Azt kell mondani, int n? 400 00:17:32,146 --> 00:17:34,020 David J. MALAN: Ugye Nem kell mondani, int n. 401 00:17:34,020 --> 00:17:37,670 , Mert már azt mondta int, nem kell azt mondani, hogy újra. 402 00:17:37,670 --> 00:17:41,820 A fogást, hogy n kell azonos adattípust, mint én. 403 00:17:41,820 --> 00:17:43,310 Szóval ez csak a kényelem kedvéért itt. 404 00:17:43,310 --> 00:17:44,058 Igen. 405 00:17:44,058 --> 00:17:47,806 >> Közönség: Tud megy át a print karakter s konzol én megint? 406 00:17:47,806 --> 00:17:48,930 David J. MALAN: Abszolút. 407 00:17:48,930 --> 00:17:52,110 Szóval% c, emlékszem az utolsó idő, csak egy helyfoglaló. 408 00:17:52,110 --> 00:17:53,930 Ez azt jelenti, hogy egy char itt. 409 00:17:53,930 --> 00:17:56,780 backslash n, persze, csak eszköz, hogy egy sortörés itt. 410 00:17:56,780 --> 00:17:59,540 Úgy, hogy csak hagy, most, ez a darab az új szintaxis. 411 00:17:59,540 --> 00:18:03,730 És ez szó szerint azt mondja, fogd a húr hívott s és menj a 412 00:18:03,730 --> 00:18:06,050 i-edik karaktert, hogy úgy mondjam. 413 00:18:06,050 --> 00:18:10,590 >> És ne mondja edik karaktert mert minden egyes iterációs erre a ciklusra 414 00:18:10,590 --> 00:18:14,540 olyan, mintha mi nyomtat ki, az első s konzol 0, 415 00:18:14,540 --> 00:18:15,780 mint a programozó lehet mondani. 416 00:18:15,780 --> 00:18:18,680 Akkor s konzol 1, akkor s konzol 2, majd 3, majd 4. 417 00:18:18,680 --> 00:18:21,610 De természetesen ez egy változó, úgyhogy csak kifejezni azt i. 418 00:18:21,610 --> 00:18:23,900 >> Key, bár az, hogy észre, különösen, ha már nem 419 00:18:23,900 --> 00:18:26,358 már acclimating erre a világra programozás, ahol minden 420 00:18:26,358 --> 00:18:28,950 Úgy tűnik, hogy számít a nulla, Gotta indul számolás nulláról most. 421 00:18:28,950 --> 00:18:35,130 Mivel a vonósok, az első karakter, a Z Zamyla nem jobb vagy rosszabb 422 00:18:35,130 --> 00:18:40,490 fog élni helyre nullát. 423 00:18:40,490 --> 00:18:48,210 >> Rendben, hadd hozza minket vissza, hogy Zamyla 424 00:18:48,210 --> 00:18:50,746 és nézd meg, mi folyik valójában az a motorháztető alatt. 425 00:18:50,746 --> 00:18:52,370 Szóval itt van ez a fogalom típusú öntvény. 426 00:18:52,370 --> 00:18:53,800 Lehet, hogy tényleg játszott ezzel már, 427 00:18:53,800 --> 00:18:55,970 Lehet, hogy a hacker kiadása P az egyiket. 428 00:18:55,970 --> 00:19:00,320 De típus öntés csak utal az képesség C és néhány más nyelven 429 00:19:00,320 --> 00:19:03,170 átalakítani egy adattípust a másikra. 430 00:19:03,170 --> 00:19:05,450 >> Most, hogy lehet, hogy látjuk, hogy ez szép egyenesen? 431 00:19:05,450 --> 00:19:08,530 Tehát ez, emlékszem, ez a kezdet az angol ábécé. 432 00:19:08,530 --> 00:19:11,265 És a kontextus, emlékszem, a mint egy hete nem ASCII. 433 00:19:11,265 --> 00:19:13,790 Az American Standard Code Információs váltásnál. 434 00:19:13,790 --> 00:19:17,080 Ami csak egy nagyon hosszú út mondván leképezés betűk 435 00:19:17,080 --> 00:19:19,370 a számok, és a számok a betűk. 436 00:19:19,370 --> 00:19:22,940 >> Tehát A-tól M itt, pont pont pont, vonal fel, emlékszem, 437 00:19:22,940 --> 00:19:25,582 a decimális 65-ig. 438 00:19:25,582 --> 00:19:27,290 És mi nem beszélünk erről kifejezetten, 439 00:19:27,290 --> 00:19:29,850 de biztosan van hasonló számok kisbetűk. 440 00:19:29,850 --> 00:19:30,820 És valóban, vannak. 441 00:19:30,820 --> 00:19:33,730 A világ úgy döntött, néhány évvel ezelőtt, hogy kevés a, kisbetű a, 442 00:19:33,730 --> 00:19:35,020 lesz 97. 443 00:19:35,020 --> 00:19:38,010 És a kis b megy hogy 98, és így tovább. 444 00:19:38,010 --> 00:19:40,200 >> És bármely más gomb a billentyűzet, ott van 445 00:19:40,200 --> 00:19:42,190 lesz egy hasonló mintát bit. 446 00:19:42,190 --> 00:19:44,540 Vagy azzal egyenértékű, tizedes. 447 00:19:44,540 --> 00:19:47,110 Tehát a kérdés kéznél, tehát az, hogy hogyan tudjuk 448 00:19:47,110 --> 00:19:49,400 valóban látni ezt a motorháztető alatt? 449 00:19:49,400 --> 00:19:51,539 Szóval megyek át a gedit újra. 450 00:19:51,539 --> 00:19:53,330 És ahelyett, hogy típus ez a semmiből, 451 00:19:53,330 --> 00:19:55,330 Én megyek előre, és Csak nyissa fel valamit 452 00:19:55,330 --> 00:19:58,350 a mai kód nevű ASCII nulla. 453 00:19:58,350 --> 00:20:01,210 >> És ASCII nulla néz ki. 454 00:20:01,210 --> 00:20:02,710 Szóval betakar elménket körül ezt. 455 00:20:02,710 --> 00:20:04,969 Tehát az első, amit nyilatkozott A kód, ami szép és jó. 456 00:20:04,969 --> 00:20:07,010 Mert ez a szó szoros értelmében mondani, mire számíthat, 457 00:20:07,010 --> 00:20:08,950 megjelenik egy leképezést a nagybetűket. 458 00:20:08,950 --> 00:20:13,690 Most már nem igazán tudom, mit jelent ez, úgyhogy következtethetünk. 459 00:20:13,690 --> 00:20:16,870 >> Angolul, talán némileg techie angol, 460 00:20:16,870 --> 00:20:20,660 mit vonal 18 jelenik meg hogy csinál nekünk? 461 00:20:20,660 --> 00:20:21,500 Csak a 18. sor. 462 00:20:21,500 --> 00:20:22,430 Mi az indukáló? 463 00:20:22,430 --> 00:20:25,192 Mi a helyzet, hogy kick off itt? 464 00:20:25,192 --> 00:20:26,100 >> Közönség: A hurok. 465 00:20:26,100 --> 00:20:26,630 >> David J. MALAN: A hurok. 466 00:20:26,630 --> 00:20:28,463 És hányszor van hogy fog iterálására? 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 KÖZÖNSÉG: [közbeiktatásával VOICES] hatszor. 469 00:20:33,270 --> 00:20:34,830 David J. MALAN: Nem hatszor. 470 00:20:34,830 --> 00:20:35,840 Közönség: 26 alkalommal. 471 00:20:35,840 --> 00:20:36,560 David J. MALAN: 26 alkalommal. 472 00:20:36,560 --> 00:20:37,060 Ja, bocs. 473 00:20:37,060 --> 00:20:37,960 26 alkalommal. 474 00:20:37,960 --> 00:20:38,460 Miért? 475 00:20:38,460 --> 00:20:41,590 Nos, ez egy kicsit furcsa, de Elkezdtem számolni 65. 476 00:20:41,590 --> 00:20:43,300 Ami furcsa, de nem rossz. 477 00:20:43,300 --> 00:20:44,610 Ez nem rossz egy mondani. 478 00:20:44,610 --> 00:20:46,980 És csinálok, hogy csak a mert ehhez a példához, 479 00:20:46,980 --> 00:20:50,455 Én vagyok a fajta felkészülés hogy a tőke A 65. 480 00:20:50,455 --> 00:20:53,330 Most ez nem a legelegánsabb módja ennek az, hogy milyen kemény kód 481 00:20:53,330 --> 00:20:56,130 ezoterikus értékek senki valaha várható emlékezni. 482 00:20:56,130 --> 00:21:00,155 >> De most, észre, hogy én vagyok ezt egészen 65 plusz 26. 483 00:21:00,155 --> 00:21:03,030 Mert nyilvánvalóan nem is akarok hogy nem a számtani a fejemben. 484 00:21:03,030 --> 00:21:04,440 Úgyhogy hagyja, hogy a fordító csinálni. 485 00:21:04,440 --> 00:21:08,600 De aztán minden egyes hurok, mindegyik ismétlésnél A hurok, én növelés i. 486 00:21:08,600 --> 00:21:10,196 >> Tehát most ez úgy néz ki, egy kicsit rejtélyes. 487 00:21:10,196 --> 00:21:13,320 De meg kell, hogy az alapvető épület blokkok amely megérteni. 488 00:21:13,320 --> 00:21:15,510 % C csak helyőrzője a karakter. 489 00:21:15,510 --> 00:21:19,010 % I helyőrzője egy int. 490 00:21:19,010 --> 00:21:23,310 És kiderül, hogy ezzel a új szintaxis, ez zárójeles, így 491 00:21:23,310 --> 00:21:26,100 beszélni, így egy adattípust belül a zárójelben 492 00:21:26,100 --> 00:21:32,270 Tudom kényszeríteni a fordító kezelésére Én nem egész szám, hanem a kar. 493 00:21:32,270 --> 00:21:35,520 >> Ezáltal megmutatta a karakter megegyezik az adott számot. 494 00:21:35,520 --> 00:21:37,986 Most itt ez a kód nagyjából azonos. 495 00:21:37,986 --> 00:21:39,860 Én csak azt akartam, hogy szuper világos az a tény, 496 00:21:39,860 --> 00:21:42,095 hogy kezdek 97, amely kisbetűs a. 497 00:21:42,095 --> 00:21:44,080 Akár a 26 további leveleket. 498 00:21:44,080 --> 00:21:46,970 És én doing-- újra, casting i, hogy úgy mondjam. 499 00:21:46,970 --> 00:21:49,160 Vagy típusú öntés i, hogy úgy mondjam. 500 00:21:49,160 --> 00:21:51,420 >> Egy int, hogy a kar. 501 00:21:51,420 --> 00:21:55,760 Tehát a végeredmény lesz, őszintén szólva, információ már tudjuk. 502 00:21:55,760 --> 00:21:59,411 Fogok tenni ASCII 0 dot-- nem pont c. 503 00:21:59,411 --> 00:22:02,160 Értesítést, akkor valószínűleg készült, hogy hiba, mint én csináltam véletlenül. 504 00:22:02,160 --> 00:22:03,820 Készíts ascii-0-ra. 505 00:22:03,820 --> 00:22:06,090 Most fogok csinálni ./ascii-0-ra. 506 00:22:06,090 --> 00:22:09,050 Én nagyítás, és sajnos ez meg fog lépjünk ki a képernyőn. 507 00:22:09,050 --> 00:22:15,060 De azt látjuk, egy egész táblázatot, ahol a térképek 97, b térképek 98, 508 00:22:15,060 --> 00:22:18,931 és ha felfelé tovább A természetesen térképek 65. 509 00:22:18,931 --> 00:22:21,180 Tehát ez csak azt jelenti, hogy mi az, amit prédikált, 510 00:22:21,180 --> 00:22:25,310 van ez az egyenértékűség, a valójában az a valóságban. 511 00:22:25,310 --> 00:22:28,000 Tehát egy gyors módosítása ezt. 512 00:22:28,000 --> 00:22:31,220 Hadd nyitni ASCII-1.c. 513 00:22:31,220 --> 00:22:38,070 És vegyük észre az okos, fajta a tisztázása ezt. 514 00:22:38,070 --> 00:22:41,770 Ez ASCII 1.c, és észre ezt az őrült dolog. 515 00:22:41,770 --> 00:22:45,120 >> És ez tényleg eljut a szív A mi számítógépek csinálnak. 516 00:22:45,120 --> 00:22:48,150 Annak ellenére, hogy mi emberek azt nem számít szempontjából letters-- 517 00:22:48,150 --> 00:22:50,380 Nem indul gondolkodás, minden rendben a majd b, 518 00:22:50,380 --> 00:22:52,590 és használja ezeket számolni fizikai tárgyak. 519 00:22:52,590 --> 00:22:58,680 Akkor biztosan mondani, hogy én szeretnék inicializálása néhány változó nevű C-- 520 00:22:58,680 --> 00:23:03,220 de tudtam neveztem ezt bármit így c inicializálja a tőke A. 521 00:23:03,220 --> 00:23:07,560 >> Mert a nap végén, a számítógép Nem érdekel, mit tárolása, 522 00:23:07,560 --> 00:23:10,170 csak érdekel, hogy hogyan szeretné bemutatni ezt az információt. 523 00:23:10,170 --> 00:23:13,560 Hogyan szeretné, hogy a számítógép értelmezni, hogy a minta a bitek? 524 00:23:13,560 --> 00:23:16,320 Szóval ez nem olyasmi, amit általában azt javasoljuk, csinál. 525 00:23:16,320 --> 00:23:19,500 Ez tényleg csak egy példa, hogy közvetíteni, hogy akkor teljesen 526 00:23:19,500 --> 00:23:22,049 inicializálni egy egész a kar. 527 00:23:22,049 --> 00:23:24,090 Mert alatta motorháztető egy char, persze, 528 00:23:24,090 --> 00:23:26,170 csak egy szám 0 és 255. 529 00:23:26,170 --> 00:23:28,540 >> Így biztosan tedd belsejében egy int. 530 00:23:28,540 --> 00:23:30,890 És mi ezt is azt mutatja, hogy mi 531 00:23:30,890 --> 00:23:34,040 tudja alakítani egy írja a másik, itt, 532 00:23:34,040 --> 00:23:36,780 végül nyomtatás ugyanezt. 533 00:23:36,780 --> 00:23:44,760 És valóban, ez azt rögzíti online-- volt a célja, hogy ezt kell mondanom, megint itt. 534 00:23:44,760 --> 00:23:48,610 Hadd tisztítsák ezt fel az interneten, és mi lásd az online áttekintése, szükség szerint, 535 00:23:48,610 --> 00:23:50,280 mi volt a célja is. 536 00:23:50,280 --> 00:23:50,960 >> OK. 537 00:23:50,960 --> 00:23:53,892 Tehát utolsó példa már magában A és a B, és aztán 538 00:23:53,892 --> 00:23:54,850 a dolgokat egy kicsit. 539 00:23:54,850 --> 00:23:58,330 Tehát a és a b és a c rejt a kapitalizáció 540 00:23:58,330 --> 00:24:01,560 és az ekvivalencia cikkére, nézzük nézd meg ezt a példát, itt. 541 00:24:01,560 --> 00:24:02,752 Egy másik példa kód. 542 00:24:02,752 --> 00:24:04,460 Majd nyissa meg az egyik, hogy már, így 543 00:24:04,460 --> 00:24:06,440 nem kell beírni minden ki a semmiből. 544 00:24:06,440 --> 00:24:09,420 >> És észre előre mi ha több fejléc 545 00:24:09,420 --> 00:24:13,240 fájlokat, amelyek között az új barátunk, string.h. 546 00:24:13,240 --> 00:24:15,597 Most ez úgy néz ki, az első pillantás, egy kicsit rejtélyes. 547 00:24:15,597 --> 00:24:18,180 De nézzük, ha nincs oka át, mi folyik itt. 548 00:24:18,180 --> 00:24:21,150 Először kap egy string a felhasználó, és tettem, hogy a húr a változó 549 00:24:21,150 --> 00:24:22,286 s az úgynevezett. 550 00:24:22,286 --> 00:24:24,090 Másolás Beillesztés előtt. 551 00:24:24,090 --> 00:24:27,250 A 22. sor, én vagyok látszólag csinál pontosan mit 552 00:24:27,250 --> 00:24:30,760 Én egy perce, én iterációjával át a karakter s. 553 00:24:30,760 --> 00:24:34,780 >> És az új trükköket itt használ húr hossza, a kisebb optimalizálás 554 00:24:34,780 --> 00:24:37,930 tárolására a húr hossza n, inkább, mint amelyben strlen újra, 555 00:24:37,930 --> 00:24:38,850 és újra, és újra. 556 00:24:38,850 --> 00:24:41,120 És csak ellenőrzi, hogy i kisebb, mint n. 557 00:24:41,120 --> 00:24:43,330 Most itt, a dolgok egy kicsit érdekes. 558 00:24:43,330 --> 00:24:45,980 De ez csak egy alkalmazás ugyanennek az új ötlet. 559 00:24:45,980 --> 00:24:48,470 Mi az angol nem s konzol képviselek? 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> Közönség: Counting minden karakter [nem hallható]. 562 00:24:54,260 --> 00:24:55,926 >> David J. MALAN: Counting minden karakter. 563 00:24:55,926 --> 00:24:58,680 És még több tömören, s konzol képviselek mi? 564 00:24:58,680 --> 00:25:00,950 Mit mondana. 565 00:25:00,950 --> 00:25:04,084 Ne tegye meg a helyszínen itt. 566 00:25:04,084 --> 00:25:06,375 >> Közönség: Nos-- 567 00:25:06,375 --> 00:25:09,500 David J. MALAN: Tehát, ha a szó ez-- ha a húr Zamyla, ami starts-- 568 00:25:09,500 --> 00:25:12,380 Közönség: --you foglalkozik a karakterek separately-- 569 00:25:12,380 --> 00:25:13,690 David J. MALAN: Jó. 570 00:25:13,690 --> 00:25:14,190 Pontosan. 571 00:25:14,190 --> 00:25:17,940 A szögletes zárójel jelölés segítségével eléréséhez minden egyes karakter külön, 572 00:25:17,940 --> 00:25:21,120 így s konzol 0 lesz a első karaktere. 573 00:25:21,120 --> 00:25:24,110 s konzol 1 lesz a második, és így tovább. 574 00:25:24,110 --> 00:25:28,050 Tehát a kérdés, amit kérek, itt, ebben az állapotban, az mi? 575 00:25:28,050 --> 00:25:33,984 Az i-edik karaktere s nagyobb vagy egyenlő, mint kisbetűs a? 576 00:25:33,984 --> 00:25:36,400 És mit jelent ez, itt, A dupla jellel is jelölhetünk? 577 00:25:36,400 --> 00:25:36,800 KÖZÖNSÉG (együtt): És. 578 00:25:36,800 --> 00:25:37,210 David J. MALAN És. 579 00:25:37,210 --> 00:25:38,418 Csak egyenértékűek az ezen. 580 00:25:38,418 --> 00:25:42,310 És nem egy kulcsszót C, akkor használat, bosszantóan, jel jel. 581 00:25:42,310 --> 00:25:47,520 És ez fordítva, arra kéri a S i-edik karaktere kisebb vagy egyenlő 582 00:25:47,520 --> 00:25:49,030 a kisbetűs z? 583 00:25:49,030 --> 00:25:52,440 És ismét itt, ahol megértése a mögöttes 584 00:25:52,440 --> 00:25:54,550 végrehajtása számítógép van értelme. 585 00:25:54,550 --> 00:25:57,330 Figyeljük meg, hogy, bár én a pont pont pont ott, 586 00:25:57,330 --> 00:26:04,410 úgy néz ki, mint egy a z kisbetűkkel vannak minden összefüggő értékek fel 97-ig. 587 00:26:04,410 --> 00:26:07,820 >> És ugyanazzal a nagybetűs kezdve 65. 588 00:26:07,820 --> 00:26:10,410 Tehát az elvihető, akkor, az, hogy az angol, 589 00:26:10,410 --> 00:26:12,760 hogyan írnád le milyen vonal 24 csinál? 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 Igen? 592 00:26:16,728 --> 00:26:21,575 >> Közönség: 24 ez ellenőrzi, hogy hogy az egyes karakter egy kisbetűs. 593 00:26:21,575 --> 00:26:24,700 David J. MALAN: Ez ellenőrzi, hogy minden karakter egy kisbetű. 594 00:26:24,700 --> 00:26:28,590 Így még érthetőbb legyen, a i-edik karaktere s kisbetűs? 595 00:26:28,590 --> 00:26:30,690 Ennyi vagyunk kifejező itt logikusan, 596 00:26:30,690 --> 00:26:33,750 egy kicsit rejtélyesen, de végül szép egyenesen. 597 00:26:33,750 --> 00:26:36,480 Az S-edik karaktere kisbetű? 598 00:26:36,480 --> 00:26:40,130 >> Ha igen, és itt, ahol a dolgok egy kicsit elme hajlító 599 00:26:40,130 --> 00:26:44,760 egy pillanatra, ha igen, megy előre, és nyomtassa ki a karaktert. 600 00:26:44,760 --> 00:26:47,360 Tehát ez csak egy helyfoglaló, de milyen karakter? 601 00:26:47,360 --> 00:26:53,710 Miért csinálom s konzol i mínusz ez a kifejezés itt? 602 00:26:53,710 --> 00:26:55,110 >> Jól észre a minta itt. 603 00:26:55,110 --> 00:26:57,380 A tényleges számok nem számít annyira. 604 00:26:57,380 --> 00:27:02,700 De figyeljük meg, hogy a 97. milyen messze van a 65? 605 00:27:02,700 --> 00:27:03,560 >> Közönség: 32. 606 00:27:03,560 --> 00:27:04,480 >> David J. MALAN: 32. 607 00:27:04,480 --> 00:27:06,890 Milyen messze van a 98 66? 608 00:27:06,890 --> 00:27:07,740 >> Közönség: 32. 609 00:27:07,740 --> 00:27:09,890 >> David J. MALAN: kis c a nagy C? 610 00:27:09,890 --> 00:27:10,420 32.. 611 00:27:10,420 --> 00:27:14,550 Szóval van 32 komló egyik levél a másikba. 612 00:27:14,550 --> 00:27:17,790 Szóval őszintén, tudtam egyszerűsíteni ezt az. 613 00:27:17,790 --> 00:27:20,400 De akkor én vagyok ilyen kemény kódolás ez az alacsony szint a megértés 614 00:27:20,400 --> 00:27:21,740 hogy nincs olvasó valaha fogja megérteni. 615 00:27:21,740 --> 00:27:25,080 Így fogok általánosítani, mint én tudni, hogy a kisbetűk nagyobbak. 616 00:27:25,080 --> 00:27:28,400 Tudom, hogy a nagybetűvel kisebb értékeket, ironikusan. 617 00:27:28,400 --> 00:27:33,216 >> De ez gyakorlatilag egyenértékű mondván, kivonni 32-s konzol i. 618 00:27:33,216 --> 00:27:35,430 Tehát ezek az összefüggésben betű, ha a levél 619 00:27:35,430 --> 00:27:38,950 előfordul, hogy egy, a kisbetűs a, és én kivonás 32, 620 00:27:38,950 --> 00:27:43,442 milyen hatása van, amelyek, Matematikailag a kisbetűs a? 621 00:27:43,442 --> 00:27:44,400 Közönség: Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 David J. MALAN: kihasználja azt. 623 00:27:45,691 --> 00:27:48,440 És valóban, ez az, amiért a program neve tőkét nulla. 624 00:27:48,440 --> 00:27:51,590 Ez a program sem épít a levél, 625 00:27:51,590 --> 00:27:54,580 ellenőrzése után, ha ez valóban kisbetű. 626 00:27:54,580 --> 00:27:59,810 Ellenkező esetben, a 30. sor, mit tegyek, ha ez nem egy kisbetű, hogy én vagyok 627 00:27:59,810 --> 00:28:02,852 néztem egy bizonyos iteráció a hurok. 628 00:28:02,852 --> 00:28:03,890 Csak nyomtassa ki. 629 00:28:03,890 --> 00:28:07,010 >> Így nem változik a cucc ez nem is kisbetűs. 630 00:28:07,010 --> 00:28:10,790 Korlátozza magát a kicsit egy a kis részt. 631 00:28:10,790 --> 00:28:12,730 Most ez a meglehetősen misztikus. 632 00:28:12,730 --> 00:28:15,230 De a végén a nap, ez a az, hogy hogyan, egyszer régen, 633 00:28:15,230 --> 00:28:16,460 kellett végrehajtani a dolgokat. 634 00:28:16,460 --> 00:28:19,780 Ha ehelyett nyitott tőkét egy, oh hála istennek. 635 00:28:19,780 --> 00:28:22,320 Van egy funkció hívott, hogy a felső, ami 636 00:28:22,320 --> 00:28:25,410 mindent megteszünk csináltál egy viszonylag alacsony. 637 00:28:25,410 --> 00:28:28,752 >> Most a felső érdekes mert bejelentett egy fájlt, 638 00:28:28,752 --> 00:28:31,210 és akkor csak azt tudják ezt ellenőrzi a dokumentációt, 639 00:28:31,210 --> 00:28:35,730 vagy, hogy azt mondta, mondjuk az osztályban, ahol létezik, egy nevű fájlt ctype.h. 640 00:28:35,730 --> 00:28:37,630 Tehát ez egy új barátunk. 641 00:28:37,630 --> 00:28:40,750 És a felső pontosan amit a neve is sugallja. 642 00:28:40,750 --> 00:28:44,860 >> Akkor át, amikor egy érv között ezeket zárójelben néhány karakter. 643 00:28:44,860 --> 00:28:48,390 Megyek át az i-edik karaktert S a mi szép új jelölés 644 00:28:48,390 --> 00:28:49,870 bevonásával szögletes zárójelben. 645 00:28:49,870 --> 00:28:53,391 És akkor gondolom, mi a visszatérés érték felső látszólag megy 646 00:28:53,391 --> 00:28:53,890 lenni? 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 A nagybetű. 649 00:28:57,770 --> 00:28:58,620 A nagybetű. 650 00:28:58,620 --> 00:29:02,330 >> Tehát, ha én át kisbetűvel a, Remélhetőleg a meghatározása, hogy a felső, 651 00:29:02,330 --> 00:29:05,600 ez fog visszatérni egy nagybetűs A. Ellenkező esetben 652 00:29:05,600 --> 00:29:08,590 ha ez nem egy kisbetű az első helyen, csak nyomtassa ki. 653 00:29:08,590 --> 00:29:10,800 És valóban, észre második barátom. 654 00:29:10,800 --> 00:29:13,840 Nem csak a felső van, de alacsonyabb, ami 655 00:29:13,840 --> 00:29:16,200 tulajdonképpen megválaszolja a kérdést nekem. 656 00:29:16,200 --> 00:29:19,730 >> Most aki írta ezeket a dolgokat, 10s évvel ezelőtt, tudod mit? 657 00:29:19,730 --> 00:29:23,840 Megvalósított felső és csökkenti a kód, mint ez. 658 00:29:23,840 --> 00:29:27,270 De ismétlem, összhangban ez a gondolat az absztrakció el, 659 00:29:27,270 --> 00:29:29,190 fajta, alacsonyabb szintű végrehajtás részleteit. 660 00:29:29,190 --> 00:29:32,600 És állva a vállán az emberek , akik előttünk jártak, a funkciók 661 00:29:32,600 --> 00:29:36,300 mint a felső és az alsó, ami csodálatosan elég szépen 662 00:29:36,300 --> 00:29:40,190 elemzi azt, amit csinálnak, az csodálatos paradigma, hogy fogadjanak el. 663 00:29:40,190 --> 00:29:44,040 >> Most kiderül, hogy ha elolvastam a man oldalt, mondjuk, a felső, 664 00:29:44,040 --> 00:29:45,010 Tanulok valami mást. 665 00:29:45,010 --> 00:29:46,890 Tehát az ember TOUPPER. 666 00:29:46,890 --> 00:29:48,050 Ez egy kicsit nyomasztó. 667 00:29:48,050 --> 00:29:51,110 De észre, itt van, hogy említést a header fájlt kell használnom. 668 00:29:51,110 --> 00:29:54,460 Mellesleg, mivel ez félrevezető, a funkció 669 00:29:54,460 --> 00:29:59,070 használ ints helyett karakter okokból hibaellenőrzés. 670 00:29:59,070 --> 00:30:01,260 De majd talán jön vissza, hogy a jövőben. 671 00:30:01,260 --> 00:30:05,910 >> De észre, itt, a felső megtértek a C betű a nagybetűs, ha lehetséges. 672 00:30:05,910 --> 00:30:07,674 Szóval ez elég egyértelmű. 673 00:30:07,674 --> 00:30:09,340 És most nézzük egy kicsit konkrétabb. 674 00:30:09,340 --> 00:30:12,750 Nézzük meg a részét a man oldal alatt a visszatérési érték. 675 00:30:12,750 --> 00:30:15,420 A visszaadott érték az az átalakított levél. 676 00:30:15,420 --> 00:30:18,690 Vagy c, ha az átalakítás nem volt lehetséges, 677 00:30:18,690 --> 00:30:20,250 ahol c az eredeti bemenet. 678 00:30:20,250 --> 00:30:24,140 Ami tudom, hogy innen, az érvelés, hogy a felső. 679 00:30:24,140 --> 00:30:25,780 >> Tehát mi az elvihető ez? 680 00:30:25,780 --> 00:30:28,060 A visszaadott érték az Az átalakított levél, 681 00:30:28,060 --> 00:30:32,110 vagy c, az eredeti levél, ha az átalakítás nem volt lehetséges. 682 00:30:32,110 --> 00:30:36,460 Mi javulás ezért hogy az a kód a design? 683 00:30:36,460 --> 00:30:37,146 Igen? 684 00:30:37,146 --> 00:30:38,810 >> Közönség: eltávolíthatja a mást. 685 00:30:38,810 --> 00:30:40,810 David J. MALAN: Nem tudok távolítsa el a más állítás, 686 00:30:40,810 --> 00:30:42,510 és nem csak a más nyilatkozatot. 687 00:30:42,510 --> 00:30:44,150 >> Közönség: eltávolíthatja [nem hallható]. 688 00:30:44,150 --> 00:30:46,310 >> David J. MALAN: Nem tudok távolítsa el az egész villa 689 00:30:46,310 --> 00:30:48,209 Az út, a ha más teljesen. 690 00:30:48,209 --> 00:30:50,250 Tehát valóban, hadd nyissa a végleges változatát, 691 00:30:50,250 --> 00:30:55,540 kihasználni-2, és vegyük észre, hogy milyen, ha akkor, szexi, a kód most kezd, 692 00:30:55,540 --> 00:31:00,040 az, hogy én már csökkent néhány hét, vagy úgy vonalakat, hogy csak négy, 693 00:31:00,040 --> 00:31:03,850 a funkcionalitás, hogy tervezett egyszerűen hívja a felső, 694 00:31:03,850 --> 00:31:09,410 halad s konzol i, és a nyomtatás ki, és a helykitöltő% c, 695 00:31:09,410 --> 00:31:11,090 az adott karaktert. 696 00:31:11,090 --> 00:31:14,560 >> Most vitathatóan, van egy hiba, vagy legalábbis a kockázatát, hogy a hiba, 697 00:31:14,560 --> 00:31:15,350 ebben a programban. 698 00:31:15,350 --> 00:31:18,200 Tehát csak, hogy jöjjön vissza egy korábbi elvihető, 699 00:31:18,200 --> 00:31:21,820 Mit kell tennem valószínűleg csinálni ezt a programot, hogy ez erőteljesebb, 700 00:31:21,820 --> 00:31:24,974 úgy, hogy ez semmilyen módon nem tud lezuhan, még ritkán? 701 00:31:24,974 --> 00:31:26,390 Közönség: Győződjön meg róla, hogy nem NULL. 702 00:31:26,390 --> 00:31:28,056 David J. MALAN: Győződjön meg róla, hogy nem NULL. 703 00:31:28,056 --> 00:31:31,030 Szóval tényleg, hogy ez a szuper megfelelő, tennem kell valamit, mint, 704 00:31:31,030 --> 00:31:35,300 ha s nem NULL, akkor megy előre, és végre 705 00:31:35,300 --> 00:31:38,470 ezeket a sorokat a kód, amely Tudok majd francia, mint az, 706 00:31:38,470 --> 00:31:39,870 és aztán az én közel merevítő. 707 00:31:39,870 --> 00:31:41,550 Tehát jó összekapcsolása a két fogalom. 708 00:31:41,550 --> 00:31:42,429 Igen? 709 00:31:42,429 --> 00:31:44,470 Közönség: Lehet használni a do while ciklus helyett? 710 00:31:44,470 --> 00:31:47,270 David J. MALAN: sikerült Én egy do while ciklus? 711 00:31:47,270 --> 00:31:50,020 Közönség: --you szeretnénk, hogy győződjön meg arról, hogy valójában [nem hallható]. 712 00:31:50,020 --> 00:31:51,728 David J. MALAN: sikerült használja a do közben? 713 00:31:51,728 --> 00:31:52,450 A rövid válasz, nem. 714 00:31:52,450 --> 00:31:54,700 Mert te arról, hogy be egy másik sarok eset. 715 00:31:54,700 --> 00:31:56,660 Ha a string nulla hosszúságú. 716 00:31:56,660 --> 00:31:59,600 Ha például, csak hit Adja meg, anélkül, hogy valaha gépelés Zamyla. 717 00:31:59,600 --> 00:32:02,490 Fogom kézzel vissza a tényleges húr, ahogy majd végül látni, 718 00:32:02,490 --> 00:32:03,780 hogy nulla karaktereket. 719 00:32:03,780 --> 00:32:05,630 Ez még mindig egy sor, ez csak szuper rövid. 720 00:32:05,630 --> 00:32:07,960 De ha egy do közben, fogsz vakon 721 00:32:07,960 --> 00:32:10,050 megpróbál tenni valamit a hoz a húr, 722 00:32:10,050 --> 00:32:12,537 és semmi sem lesz ott. 723 00:32:12,537 --> 00:32:18,607 >> Közönség: Hát, ha nem do [nem hallható] miközben S-- 724 00:32:18,607 --> 00:32:21,190 David J. MALAN: Ó, én látni, folyamatosan kapok egy húr a felhasználó. 725 00:32:21,190 --> 00:32:23,525 Tehát rövid válasz, akkor lehet, és folyamatosan zaklat 726 00:32:23,525 --> 00:32:26,150 őket, hogy kapsz egy húr, ami rövid ahhoz, hogy elférjen a memóriában. 727 00:32:26,150 --> 00:32:26,700 Abszolút. 728 00:32:26,700 --> 00:32:27,630 Én csak úgy döntött, hogy nem. 729 00:32:27,630 --> 00:32:30,505 Ha nem adja ide a húr I akar, én kilépek, adok fel. 730 00:32:30,505 --> 00:32:33,260 De teljesen, erre a célra, akkor feltétlenül csinálni. 731 00:32:33,260 --> 00:32:37,500 >> Így a könyvtár header fájlok mi most ismerik ezek itt. 732 00:32:37,500 --> 00:32:41,550 Standard I / O, CS50.h, string.h, ctype.h, és vannak, sőt, mások. 733 00:32:41,550 --> 00:32:44,460 Néhányan közületek felfedezték a matematikai könyvtár math.h. 734 00:32:44,460 --> 00:32:48,200 De hadd mutassam be, most, hogy Ez a forrás az CS50 személyzet, Davin, 735 00:32:48,200 --> 00:32:50,630 és Rob és Gabe különös állítottunk össze. 736 00:32:50,630 --> 00:32:52,630 Hogy hamarosan hivatkozásra a tanfolyam honlapján. 737 00:32:52,630 --> 00:32:54,870 Úgy hívják CS50 hivatkozás. 738 00:32:54,870 --> 00:32:58,230 >> Amely csak, hogy egy gyors íze is, a következőképpen működik. 739 00:32:58,230 --> 00:33:00,740 Hadd menjen reference.cs50.net. 740 00:33:00,740 --> 00:33:02,990 Látni fogod a bal side elsöprő lista 741 00:33:02,990 --> 00:33:04,595 funkciók, hogy jöjjön c. 742 00:33:04,595 --> 00:33:07,790 De ha érdekel, ebben a pillanatban, valami hasonló strlen, 743 00:33:07,790 --> 00:33:08,746 Azt írja, hogy ott. 744 00:33:08,746 --> 00:33:10,870 Ez szűri le a listából hogy csak mi érdekel. 745 00:33:10,870 --> 00:33:11,940 Megyek kattintson rá. 746 00:33:11,940 --> 00:33:14,740 És most a bal oldalon, látni fogod, mi reméljük 747 00:33:14,740 --> 00:33:18,290 egy egyszerűbb, az emberi barátságos magyarázata, hogy 748 00:33:18,290 --> 00:33:19,170 ez a funkció. 749 00:33:19,170 --> 00:33:20,600 >> Visszaadja a string hossza. 750 00:33:20,600 --> 00:33:24,060 Itt egy szinopszist, itt van, hogyan használja szempontjából a header file, 751 00:33:24,060 --> 00:33:27,430 és tekintve, hogy mi a funkciója úgy néz ki, mint tekintve érveket. 752 00:33:27,430 --> 00:33:30,250 És akkor itt, visszatér a karakterlánc hosszát. 753 00:33:30,250 --> 00:33:34,280 De azoknak, kényelmesebb, akkor valóban kattintva több kényelmes, 754 00:33:34,280 --> 00:33:37,070 és a tartalmát ezen oldal, most meg fog változni 755 00:33:37,070 --> 00:33:41,660 hogy az alapértelmezett értékek milyen kap használatával a man oldalt. 756 00:33:41,660 --> 00:33:44,100 >> Más szóval, CS50 hivatkozás egyszerűsítés 757 00:33:44,100 --> 00:33:46,220 A man oldalak a személyzet, a diákok számára. 758 00:33:46,220 --> 00:33:49,320 Különösen a kevésbé kényelmes és a kettő között, így 759 00:33:49,320 --> 00:33:51,660 Nem kell, hogy megpróbálja betakar az elme körül, őszintén szólva, 760 00:33:51,660 --> 00:33:55,030 néhány meglehetősen rejtélyes szintaxis és dokumentáció valamikor. 761 00:33:55,030 --> 00:33:57,650 >> Így tartsa szem előtt, hogy a napokban. 762 00:33:57,650 --> 00:33:59,560 Tehát itt ismét egy Zamyla. 763 00:33:59,560 --> 00:34:03,255 Nézzük most kérdezni, hogy ez egy kicsit több ember számára hozzáférhető. 764 00:34:03,255 --> 00:34:05,380 Köszönet Chang, aki már nyomtatás több elefánt 765 00:34:05,380 --> 00:34:07,090 nonstop az elmúlt pár napban. 766 00:34:07,090 --> 00:34:09,730 Van egy lehetőség, hogy legalább egyikük el. 767 00:34:09,730 --> 00:34:13,239 Ha tudnánk, hogy csak egy önkéntes hogy jöjjön fel, hogy vonja le a képernyőn. 768 00:34:13,239 --> 00:34:14,530 És itt? 769 00:34:14,530 --> 00:34:15,340 >> Gyere fel. 770 00:34:15,340 --> 00:34:16,720 Mi a neve? 771 00:34:16,720 --> 00:34:17,219 ALEX: Alex. 772 00:34:17,219 --> 00:34:17,760 David J. MALAN: Alex. 773 00:34:17,760 --> 00:34:18,259 Rendben. 774 00:34:18,259 --> 00:34:19,388 Alex, gyere fel. 775 00:34:19,388 --> 00:34:21,679 Azon vagyunk, hogy a a képernyőn kézírás itt. 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 Rendben, örülök, hogy találkoztunk. 778 00:34:25,570 --> 00:34:26,429 >> ALEX: Szép találkoztunk. 779 00:34:26,429 --> 00:34:27,512 >> David J. MALAN: Rendben. 780 00:34:27,512 --> 00:34:28,969 Szóval, szuper egyszerű feladat. 781 00:34:28,969 --> 00:34:31,440 Bár nem nagy a kap egy elefánt ma. 782 00:34:31,440 --> 00:34:33,439 Ön szerepét játssza getstring. 783 00:34:33,439 --> 00:34:35,980 És én fogom csak mondani a szöveg, hogy már ütött. 784 00:34:35,980 --> 00:34:38,080 És tegyük fel, hogy te, getstring, hívták. 785 00:34:38,080 --> 00:34:42,480 És az ember, mint én, már beírt Zamyla, Z-A-M-Y-L-A. 786 00:34:42,480 --> 00:34:45,650 Csak megy előre, és írja Zamyla a képernyőn, mintha ütött meg 787 00:34:45,650 --> 00:34:47,250 és tárolni valahol a memóriában. 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> Teret hagyva, mi lesz több egyéb szavaim nem baj, folytasd. 790 00:34:55,570 --> 00:34:59,620 >> [Nevetés] 791 00:34:59,620 --> 00:35:00,800 >> Tehát Zamyla, kiváló. 792 00:35:00,800 --> 00:35:04,880 Tehát most, tegyük fel, hogy te, getstring, nevezzük újra. 793 00:35:04,880 --> 00:35:09,350 És ezért, én az Ön számára, a billentyűzet, a másik nevet, Belinda. 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 Rendben. 796 00:35:18,060 --> 00:35:22,380 És most a legközelebb getstring van hívott, én írja valami hasonló Gabe, 797 00:35:22,380 --> 00:35:27,560 G-A-B-E. Te tényleg figyelembe a szív véletlen hozzáférésű memória. 798 00:35:27,560 --> 00:35:29,631 Amely a rajz minden teljesen véletlenszerűen. 799 00:35:29,631 --> 00:35:30,130 OK. 800 00:35:30,130 --> 00:35:31,104 >> [Nevetés] 801 00:35:31,104 --> 00:35:32,520 ALEX: Sajnos a kézírás rossz. 802 00:35:32,520 --> 00:35:33,770 David J. MALAN: Nem, semmi gond. 803 00:35:33,770 --> 00:35:40,480 És mi van Rob, R-O-B. OK. 804 00:35:40,480 --> 00:35:41,020 Jó. 805 00:35:41,020 --> 00:35:43,853 Szóval nem számítottak akkor ilyen feküdt a dolgokat ezen a módon. 806 00:35:43,853 --> 00:35:45,020 De lehet, hogy ezt a munkát. 807 00:35:45,020 --> 00:35:48,810 Szóval hogyan megy a szóló, ezeket a karakterek a memóriában? 808 00:35:48,810 --> 00:35:51,310 Más szóval, ha arra gondolunk, ez négyszögletes fekete képernyő 809 00:35:51,310 --> 00:35:53,550 mint ami a számítógép RAM, vagy a memória. 810 00:35:53,550 --> 00:35:55,850 >> És emlékeztetnek arra, hogy a RAM csak egy csomó bájt, 811 00:35:55,850 --> 00:35:57,480 és bájtok egy csomó bit. 812 00:35:57,480 --> 00:35:59,350 És bitek valahogy végre, általában 813 00:35:59,350 --> 00:36:01,119 valamilyen formában villamos hardver. 814 00:36:01,119 --> 00:36:03,160 Szóval ez a fajta a rétegződés beszéltünk 815 00:36:03,160 --> 00:36:04,510 és most már magától értetődőnek. 816 00:36:04,510 --> 00:36:07,020 Hogy megy a döntés, hogy hova írjon 817 00:36:07,020 --> 00:36:11,634 Rob versus Gabe versus Belinda versus Zamyla? 818 00:36:11,634 --> 00:36:14,020 >> ALEX: Én csak tettem a elrendelheti, hogy elmondtad nekem. 819 00:36:14,020 --> 00:36:15,650 >> David J. MALAN: És ez igaz. 820 00:36:15,650 --> 00:36:20,100 De mi az irányadó, ahol fel Belinda neve és Gabe neve? 821 00:36:20,100 --> 00:36:20,764 >> ALEX: Semmi? 822 00:36:20,764 --> 00:36:22,930 David J. MALAN: [nevet] Annak érdekében, hogy működik, az rendben van. 823 00:36:22,930 --> 00:36:25,290 Így számítógépek kis rendezettebb, mint ezt. 824 00:36:25,290 --> 00:36:29,000 És amikor implement-- ott csak egy moment-- amikor valójában 825 00:36:29,000 --> 00:36:31,470 végre valami hasonló getString egy számítógép, 826 00:36:31,470 --> 00:36:34,480 Zamyla lehet lefektetett nagyjából mint te meg a képernyőn, ott. 827 00:36:34,480 --> 00:36:36,660 >> És mi a legfontosabb, hogy észre itt, amit Alex tett, 828 00:36:36,660 --> 00:36:40,260 van egyfajta demarkációs egymás között ezeket a szavakat, nem igaz? 829 00:36:40,260 --> 00:36:46,580 Nem te írtad Z-A-Y-M-L-A-B-E-L-I-N-D-G-A-A-B-- 830 00:36:46,580 --> 00:36:49,740 más szóval, van valami demarkációs tűnő, 831 00:36:49,740 --> 00:36:52,370 fajta véletlenszerű távolság között a különböző szavak. 832 00:36:52,370 --> 00:36:54,120 De ez jó, mert a mi emberek most már 833 00:36:54,120 --> 00:36:56,470 elképzelni, hogy ezek négy különböző szálakat. 834 00:36:56,470 --> 00:36:59,540 Ez nem csak egy sorozat A sok karaktert. 835 00:36:59,540 --> 00:37:04,190 Így a számítógép, akkor eközben Lehet, hogy egy sor hasonló Zamyla, 836 00:37:04,190 --> 00:37:07,220 tesz minden egyes ilyen levelek belsejében egy byte memória. 837 00:37:07,220 --> 00:37:10,400 De ez a szám sokkal nagyobb, Természetesen, mint hat karakter. 838 00:37:10,400 --> 00:37:11,690 >> Van egy csomó RAM. 839 00:37:11,690 --> 00:37:15,330 És ezentúl, ez rács dobozok megy 840 00:37:15,330 --> 00:37:17,560 képviseli, amit Alex csak tette itt a képernyőn. 841 00:37:17,560 --> 00:37:20,937 És most, Alex, tudjuk ajánlani a kék vagy narancs elefánt Chang. 842 00:37:20,937 --> 00:37:22,270 ALEX: Elviszem a kék elefánt. 843 00:37:22,270 --> 00:37:23,120 David J. MALAN: A kék elefánt. 844 00:37:23,120 --> 00:37:25,580 Így egy nagy tapsot, ha tudnánk, az Alex itt. 845 00:37:25,580 --> 00:37:26,100 >> [Taps] 846 00:37:26,100 --> 00:37:26,766 >> ALEX: Köszönöm. 847 00:37:26,766 --> 00:37:28,820 David J. MALAN: Köszönöm. 848 00:37:28,820 --> 00:37:36,230 Tehát az, hogy az elvihető, bár a minta fajta változott az idők során, itt 849 00:37:36,230 --> 00:37:40,430 A fedélzeten ott volt ez lehatárolás a különböző húrok 850 00:37:40,430 --> 00:37:42,610 Alex van számunkra. 851 00:37:42,610 --> 00:37:45,230 Most számítógépek, őszintén szólva, lehet nem ugyanaz a dolog. 852 00:37:45,230 --> 00:37:48,210 Tudtak a fajta puff húrok bárhol RAM. 853 00:37:48,210 --> 00:37:50,710 Fel itt, mint itt, itt, itt. 854 00:37:50,710 --> 00:37:52,020 >> Ők pontosan ezt. 855 00:37:52,020 --> 00:37:54,280 De persze, ez talán nem a legjobb tervezés. 856 00:37:54,280 --> 00:37:54,780 Nem igaz? 857 00:37:54,780 --> 00:37:57,340 Ha folyamatosan azt kérdezi, hogy Alex kap nevet, valószínűleg ő lenne 858 00:37:57,340 --> 00:38:01,370 tenni néhány ide, talán fel itt, ide, ide, végül 859 00:38:01,370 --> 00:38:02,211 itt. 860 00:38:02,211 --> 00:38:05,460 De egy kicsit több tervezést, természetesen, mi lehetne rögzíteni a dolgokat tisztábban. 861 00:38:05,460 --> 00:38:07,350 És valóban, ez az, amit a számítógép nem. 862 00:38:07,350 --> 00:38:10,720 >> De a fogást, hogy ha a következő szöveg kapok 863 00:38:10,720 --> 00:38:14,050 után Zamyla valami mint a Belinda, 864 00:38:14,050 --> 00:38:17,929 javasol, ahol talán írni a levél b között e rács? 865 00:38:17,929 --> 00:38:18,720 Hova mész? 866 00:38:18,720 --> 00:38:21,480 Jobbra az a, alatti Z, az alábbiakban egy? 867 00:38:21,480 --> 00:38:23,204 Mi lenne az első ösztönök az? 868 00:38:23,204 --> 00:38:24,120 Közönség: alatt a z. 869 00:38:24,120 --> 00:38:25,100 David J. MALAN: Tehát alatt a z. 870 00:38:25,100 --> 00:38:26,530 És ez nagyon egyszerű, ugye? 871 00:38:26,530 --> 00:38:29,321 Ez olyan szép, hogy az, amit csinálunk a billentyűzeten, amikor elérünk az Enter, 872 00:38:29,321 --> 00:38:31,770 vagy egy e-mailt, ha így a felsorolás a dolgok. 873 00:38:31,770 --> 00:38:34,310 De a valóság az, hogy a számítógépek próbálja meg, hogy hatékonyabb, 874 00:38:34,310 --> 00:38:37,170 és teletölteni legalább annyira adatok RAM lehet, 875 00:38:37,170 --> 00:38:38,890 így, hogy ne pazaroljuk az bájt. 876 00:38:38,890 --> 00:38:41,545 Annak érdekében, hogy ne pazarolják bármilyen képernyő ingatlan. 877 00:38:41,545 --> 00:38:44,170 És a probléma azonban az, hogy ha szó szerint a levelet 878 00:38:44,170 --> 00:38:49,940 b után, hogyan fogunk tudja, hol Zamyla nevét végződik 879 00:38:49,940 --> 00:38:51,840 és a Belinda neve kezdődik? 880 00:38:51,840 --> 00:38:55,270 Szóval az embereket csak javasolt, illetve, nyomja meg az Enter billentyűt, lényegében. 881 00:38:55,270 --> 00:38:56,410 Tedd le az alábbiakban. 882 00:38:56,410 --> 00:38:59,750 Vagy akár Alex tette, csak kezdjünk el írni a következő név alatt az előző, 883 00:38:59,750 --> 00:39:01,583 és az alábbiakban, hogy az egyik, és a akkor alá, hogy az egyik. 884 00:39:01,583 --> 00:39:02,510 Ez egy vizuális cue. 885 00:39:02,510 --> 00:39:05,960 >> Számítógépek egy vizuális dákó, de ez egy kicsit tömörebb. 886 00:39:05,960 --> 00:39:07,840 Ez az a funky jellegű. 887 00:39:07,840 --> 00:39:11,890 Backslash 0, ami talán emlékeztet backslash n 888 00:39:11,890 --> 00:39:12,640 és így tovább, most. 889 00:39:12,640 --> 00:39:14,120 A különleges escape sor. 890 00:39:14,120 --> 00:39:19,120 Backslash 0 a módja ami nyolc nulla bitet a sorban. 891 00:39:19,120 --> 00:39:22,000 0000 0000. 892 00:39:22,000 --> 00:39:26,130 >> Ahogy kifejezni, hogy nem megüt a szám nulla a billentyűzeten, 893 00:39:26,130 --> 00:39:28,140 mert tény, hogy egy ASCII karakter. 894 00:39:28,140 --> 00:39:30,990 Úgy néz ki, mint egy szám, de valójában egy decimális szám 895 00:39:30,990 --> 00:39:35,910 amely képviseli a körkörös glyph, a kör alakú betűtípus. 896 00:39:35,910 --> 00:39:38,410 Eközben backslash nulla azt jelenti, hogy a szó szoros értelmében 897 00:39:38,410 --> 00:39:40,700 fel nyolc nulla bájt itt nekem. 898 00:39:40,700 --> 00:39:42,136 >> Szóval ez kissé önkényes. 899 00:39:42,136 --> 00:39:44,260 Mi volna használni bármilyen minta bit, de a világ 900 00:39:44,260 --> 00:39:46,610 úgy döntött, néhány évvel ezelőtt, hogy képviselje 901 00:39:46,610 --> 00:39:49,710 a végén egy húr a memóriában, csak hogy egy csomó nulla. 902 00:39:49,710 --> 00:39:51,000 Mert képes észlelni, hogy a. 903 00:39:51,000 --> 00:39:54,790 Most, hogy azt jelenti, hogy nincs levél a ábécé is képviselteti nullákkal. 904 00:39:54,790 --> 00:39:58,480 >> De ez rendben van, akkor már láttam hogy mi a 65 akár 97 akár. 905 00:39:58,480 --> 00:40:00,290 Nem kap sehol Zárja be az összes nullát. 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 Így Belinda a számítógép memóriájában valójában fog menni itt. 908 00:40:06,540 --> 00:40:09,764 Már készült, hogy a sárga csak hogy hívják fel a figyelmet. 909 00:40:09,764 --> 00:40:11,680 És értesítés is, ez teljesen önkényes. 910 00:40:11,680 --> 00:40:12,680 Már készült, mint a rács. 911 00:40:12,680 --> 00:40:14,460 Mint, RAM csak valami fizikai tárgy. 912 00:40:14,460 --> 00:40:17,300 Ez nem feltétlenül sorok és oszlopok, önmagában. 913 00:40:17,300 --> 00:40:20,490 Ez csak kapott egy csomó bájt megvalósított hardver valahogy. 914 00:40:20,490 --> 00:40:22,817 De ha miután Belinda I begépelte Gabe nevét, 915 00:40:22,817 --> 00:40:25,650 ő lesz a végén itt a memóriában, és ha én beírtam Daven nevét, 916 00:40:25,650 --> 00:40:27,316 például, ő lesz a vége itt. 917 00:40:27,316 --> 00:40:29,310 És én továbbra is levelet még több nevet. 918 00:40:29,310 --> 00:40:32,100 >> Sajnos, ha megpróbálom levelet szuper hosszú nevet, 919 00:40:32,100 --> 00:40:33,730 Lehet, hogy végül elfogy a memória. 920 00:40:33,730 --> 00:40:37,810 Abban az esetben, getstring van fog visszatérni NULL, ahogy mondta. 921 00:40:37,810 --> 00:40:41,720 De szerencsére, legalábbis ebben a vizuális itt, nem kaptunk ilyen messzire. 922 00:40:41,720 --> 00:40:45,860 >> Most meg mi a jó, hogy ez a általános elképzelés úgy kezeli a dolgokat 923 00:40:45,860 --> 00:40:49,720 mint a dobozok képviselője jellemző C 924 00:40:49,720 --> 00:40:52,690 és sok nyelven, ismert tömb. 925 00:40:52,690 --> 00:40:55,490 A tömb egy másik típusú adat. 926 00:40:55,490 --> 00:40:57,380 Ez egy adatstruktúra, ha úgy tetszik. 927 00:40:57,380 --> 00:41:01,160 Struktúra abban az értelemben, hogy valóban, olyan, akár egy doboz, legalább 928 00:41:01,160 --> 00:41:02,320 a lelki szemei ​​előtt. 929 00:41:02,320 --> 00:41:09,680 A tömb egy összefüggő sorrendje azonos adattípusok, 930 00:41:09,680 --> 00:41:11,330 háttal a háttal. 931 00:41:11,330 --> 00:41:14,720 >> Tehát egy sor, más szóval, egy sor karakter. 932 00:41:14,720 --> 00:41:16,120 Egy sor karakter. 933 00:41:16,120 --> 00:41:19,070 De kiderül, hogy lehet tömbök fürtök a dolgok. 934 00:41:19,070 --> 00:41:21,870 Sőt, mi tud még számokat egy tömbben. 935 00:41:21,870 --> 00:41:23,920 Tehát a formában, amelyben fogunk kezdeni 936 00:41:23,920 --> 00:41:26,590 nyilvánította az adatok szerkezete ismert, mint egy tömb 937 00:41:26,590 --> 00:41:28,250 is fog használni szögletes zárójelben. 938 00:41:28,250 --> 00:41:31,500 De ezek a szögletes zárójelek fognak különböző jelentése ebben az összefüggésben. 939 00:41:31,500 --> 00:41:33,450 >> És lássuk a következő. 940 00:41:33,450 --> 00:41:36,780 Tegyük fel, hogy én megnyílt egy új fájlt itt. 941 00:41:36,780 --> 00:41:38,535 És tudom menteni ezt ages.c. 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 És én menteni ezt a Saját mappa itt. 944 00:41:43,470 --> 00:41:46,130 És most én megyek előre és kezdjen el írni valamit 945 00:41:46,130 --> 00:41:53,940 mint többek között CS50.h, többek között stdio.h, int fő érvénytelen. 946 00:41:53,940 --> 00:41:57,370 És akkor belseje itt szeretnék az első, hogy egy int hívott korban. 947 00:41:57,370 --> 00:42:01,371 >> És én fogom használni, hogy, hogy egy int a felhasználó a saját korában. 948 00:42:01,371 --> 00:42:04,620 De ez a program célja, hogy kell használni a több ember, bármilyen környezetben. 949 00:42:04,620 --> 00:42:05,490 Van egy sor ember. 950 00:42:05,490 --> 00:42:08,281 Mindegyikük rendelkezik, hogy írja be a életkor talán néhány, nem is tudom, 951 00:42:08,281 --> 00:42:10,530 verseny, vagy esemény hogy már megérkezett. 952 00:42:10,530 --> 00:42:13,030 Így a következő ember, én Kell még egy változót. 953 00:42:13,030 --> 00:42:15,790 >> Mert ha csak nem kor lesz getInt, ez 954 00:42:15,790 --> 00:42:18,500 fog cucc, vagy felülírja az előző személy életkorát. 955 00:42:18,500 --> 00:42:19,760 Szóval ez nem jó. 956 00:42:19,760 --> 00:42:21,790 Tehát az első gondolatom Lehet, hogy, ó, rendben, 957 00:42:21,790 --> 00:42:26,260 ha azt akarjuk, hogy több ember ages-- Nevezzük ezt Age1, 958 00:42:26,260 --> 00:42:31,280 int Kor2 kap int, int age3 lesz getInt. 959 00:42:31,280 --> 00:42:35,340 És most én fogom használni néhány pszeudokódja kódot. 960 00:42:35,340 --> 00:42:37,679 >> Valamit csinálni ezeket a számokat. 961 00:42:37,679 --> 00:42:40,470 Elmegyünk egy másik nap, amit csinálunk ott, mert csak 962 00:42:40,470 --> 00:42:44,200 törődik a pillanat körülbelül Age1, Kor2, age3. 963 00:42:44,200 --> 00:42:46,450 Sajnos egyszer lefordítani ezt a programot 964 00:42:46,450 --> 00:42:51,140 és tedd elé a tényleges felhasználók, mi az alapvetően rossz kialakítás 965 00:42:51,140 --> 00:42:53,890 döntés úgy tűnik, hogy volna? 966 00:42:53,890 --> 00:42:54,624 Igen? 967 00:42:54,624 --> 00:42:55,499 KÖZÖNSÉG: [nem hallható] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 David J. MALAN: Igen, Én még nem is próbáltam 970 00:42:59,820 --> 00:43:02,028 hogy kitaláljuk, hogyan sok korosztály tudom tényleg érdekel? 971 00:43:02,028 --> 00:43:05,380 Ha kevesebb, mint három ember itt, és ezért kevesebb, mint három korosztály, 972 00:43:05,380 --> 00:43:07,260 Én még mindig vakon vár három. 973 00:43:07,260 --> 00:43:08,720 Isten ments, négy emberek jelennek meg. 974 00:43:08,720 --> 00:43:10,990 Az a program, csak nem is támogatja őket. 975 00:43:10,990 --> 00:43:13,280 >> És ez hosszú történet rövid, nem egy jó szokás. 976 00:43:13,280 --> 00:43:13,780 Nem igaz? 977 00:43:13,780 --> 00:43:16,530 Én alapvetően másolás és beillesztése kód és csak a csípés 978 00:43:16,530 --> 00:43:17,430 a változó neveket. 979 00:43:17,430 --> 00:43:22,410 És, istenem, ha volt, nem három korosztály, de a 10, vagy 100, vagy akár 6500 980 00:43:22,410 --> 00:43:23,820 egyetemisták, például. 981 00:43:23,820 --> 00:43:26,950 Ez nem lesz különösen elegáns kód, vagy a fenntartható. 982 00:43:26,950 --> 00:43:29,200 Fogsz kell átírni a program minden alkalommal 983 00:43:29,200 --> 00:43:30,760 az emberek száma változik. 984 00:43:30,760 --> 00:43:35,090 >> Tehát szerencsére, a mi jelenlegi ages.c fájl ma, 985 00:43:35,090 --> 00:43:36,970 van egy okos megoldás. 986 00:43:36,970 --> 00:43:39,800 Először fogok kölcsönkérni a konstrukció általunk használt néhány alkalommal, 987 00:43:39,800 --> 00:43:43,744 ez nem while ciklus, annak érdekében, hogy a száma, akik a szobában. 988 00:43:43,744 --> 00:43:46,910 Elmegyek, hogy zaklat a felhasználó, ismét és újra, amíg ő ad nekem 989 00:43:46,910 --> 00:43:49,260 értéke n, hogy ez egy pozitív egész szám. 990 00:43:49,260 --> 00:43:51,590 >> Tudtam volna használni, az utolsó Az idő, hogy pozitív int. 991 00:43:51,590 --> 00:43:53,720 De nincs ilyen az igazi, így mentem előre 992 00:43:53,720 --> 00:43:55,660 és újra megvalósítani ezt az elképzelést. 993 00:43:55,660 --> 00:43:58,410 Most itt ez az új trükk. 994 00:43:58,410 --> 00:44:02,260 A 27. sorban, mint a megjegyzések sorban 26. sugallja, 995 00:44:02,260 --> 00:44:05,180 egy tömböt, amelyben tárolni mindenki korban. 996 00:44:05,180 --> 00:44:09,320 >> Tehát, ha azt akarjuk, hogy, nem egy int, nem két ints, de egy csomó ints. 997 00:44:09,320 --> 00:44:13,800 Pontosabban n egészek voltak n talán három, lehet, hogy a 100, lehet, hogy 1000. 998 00:44:13,800 --> 00:44:17,570 A szintaxis, egészen egyszerűen az, hogy mondjuk, milyen adattípust akarsz? 999 00:44:17,570 --> 00:44:19,620 Mit akarsz hívni hogy darab memória? 1000 00:44:19,620 --> 00:44:23,530 Mit akarsz hívni a rács úgy néz ki, mint ez képileg? 1001 00:44:23,530 --> 00:44:27,700 >> És zárójelben van, azt mondod, milyen nagy szeretné, hogy a tömb legyen. 1002 00:44:27,700 --> 00:44:30,450 És korábban, amikor azt mondtam a szintaxis egy kicsit más itt, 1003 00:44:30,450 --> 00:44:33,614 mi még mindig a szögletes zárójelek de amikor én nyilvánította egy tömb, 1004 00:44:33,614 --> 00:44:35,530 a belsejében a számát szögletes zárójelek eszközök 1005 00:44:35,530 --> 00:44:37,610 milyen nagy akarsz a tömb legyen. 1006 00:44:37,610 --> 00:44:42,490 >> Ezzel szemben, amikor használtuk s konzol i egy pillanattal ezelőtt, s egy húr, 1007 00:44:42,490 --> 00:44:46,820 valóban egy sor karakter, de ha éppen nem nyilvánító változó, 1008 00:44:46,820 --> 00:44:49,760 mivel ezzel a kulcsszó itt, te csak egyre 1009 00:44:49,760 --> 00:44:54,280 egy specifikus indexet, egy adott elem a tömbben. 1010 00:44:54,280 --> 00:44:57,090 Amint azt tudjuk, hogy a többiek ennek egyértelmű. 1011 00:44:57,090 --> 00:45:00,765 Ha új én először fog kinyomtatni mi a kora személy szám i. 1012 00:45:00,765 --> 00:45:03,890 Ahol én csak azt mondom ember első számú, személy a második, ember száma három. 1013 00:45:03,890 --> 00:45:06,306 >> És én csak ezzel számtani, hogy mint a normális emberek, 1014 00:45:06,306 --> 00:45:09,030 mi számít egy erre a programot, és nem nulla. 1015 00:45:09,030 --> 00:45:13,620 Akkor hívom getint, de tárolni A válasz a korban zárójelbe i. 1016 00:45:13,620 --> 00:45:16,610 Amely az i-edik kor a tömbben. 1017 00:45:16,610 --> 00:45:21,640 Tehát míg utoljára bántak ezeket a dobozokat a karakter a Zamyla nevét, 1018 00:45:21,640 --> 00:45:22,490 és mások. 1019 00:45:22,490 --> 00:45:26,530 Nos, ezeket a dobozokat képviselnek 32 bites, vagy négy bájt 1020 00:45:26,530 --> 00:45:29,510 ahol tudunk tárolni egy int, int, int. 1021 00:45:29,510 --> 00:45:31,890 Amelyek mindegyike, ismét, azonos adattípus. 1022 00:45:31,890 --> 00:45:33,890 >> Most valami buta, mint az idő múlásával, csak 1023 00:45:33,890 --> 00:45:35,510 igazolni írásban ezt a programot. 1024 00:45:35,510 --> 00:45:40,050 És akkor itt, megint léptetjük mint a tömb mondás egy év múlva, 1025 00:45:40,050 --> 00:45:43,090 személy számú akarat valami éves. 1026 00:45:43,090 --> 00:45:45,010 És kitalálni, hogy math-- Úgy értem, ez 1027 00:45:45,010 --> 00:45:49,260 nem túl bonyolult arithmetic-- Én csak hozzá egy koruknak. 1028 00:45:49,260 --> 00:45:51,240 Csak bizonyítani, ismét ez. 1029 00:45:51,240 --> 00:45:57,910 >> Mint ahogy én is index egy húr, s, akkor én is index egy sor korosztály, 1030 00:45:57,910 --> 00:45:59,950 mint az ott. 1031 00:45:59,950 --> 00:46:03,340 Szóval, ha lesz ez vesz minket? 1032 00:46:03,340 --> 00:46:07,070 Szóval majd meglátjuk, végül, a néhány dolgot a napokban. 1033 00:46:07,070 --> 00:46:09,510 Egy, egész idő alatt, amikor a írásban a saját programok 1034 00:46:09,510 --> 00:46:11,239 mint Mario, mohó, hitel. 1035 00:46:11,239 --> 00:46:13,780 Már beírja a nevét A program és az Enter. 1036 00:46:13,780 --> 00:46:15,610 És akkor kapok a felhasználó által megadott. 1037 00:46:15,610 --> 00:46:18,137 >> A getString, getInt, getLongLong, vagy hasonlók. 1038 00:46:18,137 --> 00:46:20,720 De kiderül, hogy a C támogatások úgynevezett parancssori 1039 00:46:20,720 --> 00:46:25,740 érveket, ami megy, hogy menjünk valóban kap a szó, hogy a beírt, 1040 00:46:25,740 --> 00:46:28,570 A villogó prompt, után a program nevét. 1041 00:46:28,570 --> 00:46:31,430 >> Így a napokban, akkor begépelni valamit, mint Caesar, 1042 00:46:31,430 --> 00:46:34,950 vagy ./caesar 13., ezt követően. 1043 00:46:34,950 --> 00:46:36,070 Meglátjuk, hogy hogy működik. 1044 00:46:36,070 --> 00:46:37,550 Mert valóban, a probléma meg két, vagyunk 1045 00:46:37,550 --> 00:46:39,383 fog bemutatni egy kis valami 1046 00:46:39,383 --> 00:46:42,360 emlékeztet Ralphie a kihívást korábbi térképészet. 1047 00:46:42,360 --> 00:46:43,970 A művészet a kódolási információ. 1048 00:46:43,970 --> 00:46:46,660 Ez az, sőt, nagyon emlékeztet, amit Ralphie tett. 1049 00:46:46,660 --> 00:46:51,380 >> Ez egy példa egy titkosítási algoritmus az úgynevezett ROT13, R-O-T 13. 1050 00:46:51,380 --> 00:46:54,910 Ami egyszerűen azt jelenti, forgassa a betűk az ábécé 13. helyen. 1051 00:46:54,910 --> 00:46:58,309 És ha ezt teszed, akkor most látni mi az, talán egy ismerős kifejezés. 1052 00:46:58,309 --> 00:47:01,100 De ahogy fogunk használni ez végül is általában. 1053 00:47:01,100 --> 00:47:04,390 >> A P meg két, a standard változat, akkor végre egy pár titkosírás, 1054 00:47:04,390 --> 00:47:06,720 egy úgynevezett Caesar, egy úgynevezett Vigenère. 1055 00:47:06,720 --> 00:47:10,090 Mindkettő forgási algoritmusok, hogy valahogy 1056 00:47:10,090 --> 00:47:11,826 viszont egy levél egy másik levelet. 1057 00:47:11,826 --> 00:47:12,950 És Caesar szuper egyszerű. 1058 00:47:12,950 --> 00:47:16,220 Hozzá az egyik, akkor adjunk hozzá 13 vagy néhány szám legfeljebb 26. 1059 00:47:16,220 --> 00:47:19,570 Vigenère nem, hogy a egy főre levél alapján. 1060 00:47:19,570 --> 00:47:22,140 Tehát Vigenère, mint látni fogod A spec, sokkal biztonságosabb. 1061 00:47:22,140 --> 00:47:24,973 >> De a nap végén mi leszel végrehajtása és a P meg a két, 1062 00:47:24,973 --> 00:47:29,050 az, hogy a legfontosabb, hogy használja a két A titkosítás és a visszafejtés. 1063 00:47:29,050 --> 00:47:32,160 Hivatkozva a folyamat fordult sima szöveg, néhány eredeti üzenetet, 1064 00:47:32,160 --> 00:47:34,490 a Cypher szöveg, amely valami titkosított. 1065 00:47:34,490 --> 00:47:36,220 Majd visszafejteni újra. 1066 00:47:36,220 --> 00:47:38,119 >> A hacker kiadás, közben, akkor lehet 1067 00:47:38,119 --> 00:47:40,660 feladata valami hasonló lélekben, ahol kapsz 1068 00:47:40,660 --> 00:47:44,610 egy fájlt, egy tipikus Linux, vagy Mac vagy Unix számítógép nevű Etsy 1069 00:47:44,610 --> 00:47:47,800 jelszót, amely tartalmaz egy egész csomó felhasználóneveket és jelszavakat. 1070 00:47:47,800 --> 00:47:50,932 És ezek a jelszavak az összes nem titkosított, vagy kivonatos, 1071 00:47:50,932 --> 00:47:53,140 hogy úgy mondjam, pontosabban ahogy látni fogod a spec. 1072 00:47:53,140 --> 00:47:57,090 >> És a hacker kiadás kihívást Ön vesz egy bemenet, mint ez, 1073 00:47:57,090 --> 00:47:58,800 és repedések a jelszót. 1074 00:47:58,800 --> 00:48:02,590 Ez azt jelenti, kitalálni, mi a emberi jelszó valójában volt. 1075 00:48:02,590 --> 00:48:05,570 Mert valóban, a jelszavak általában nem tárolják a tiszta, 1076 00:48:05,570 --> 00:48:08,260 és általában jelszavak kell nehéz kitalálni. 1077 00:48:08,260 --> 00:48:09,610 Ez gyakran nem ez a helyzet. 1078 00:48:09,610 --> 00:48:12,110 >> És amit gondoltam, hogy az arra, hogy egy pár percig 1079 00:48:12,110 --> 00:48:15,160 pillantást a különösen rossz választás jelszavak 1080 00:48:15,160 --> 00:48:17,260 Egy film lehet felidézni szeretettel. 1081 00:48:17,260 --> 00:48:18,915 És ha nem, akkor meg kell bérelni. 1082 00:48:18,915 --> 00:48:20,070 >> [Videolejátszás] 1083 00:48:20,070 --> 00:48:22,320 >> -Helmet, Te ördög, mi folyik itt? 1084 00:48:22,320 --> 00:48:24,240 Mit csinálsz a lányommal? 1085 00:48:24,240 --> 00:48:28,010 >> -Permit Meg, hogy bemutassam a ragyogó fiatal plasztikai sebész, 1086 00:48:28,010 --> 00:48:30,010 Doktor Phillip Schlotkin. 1087 00:48:30,010 --> 00:48:35,020 A legnagyobb orr munka embere egész világegyetem és Beverly Hills-ben. 1088 00:48:35,020 --> 00:48:36,140 >> -A Fenség. 1089 00:48:36,140 --> 00:48:36,820 >> -Nose Munkát? 1090 00:48:36,820 --> 00:48:37,700 Nem értem. 1091 00:48:37,700 --> 00:48:39,070 Ő már volt egy orr munkát. 1092 00:48:39,070 --> 00:48:40,800 Ez volt az édes 16 jelen van. 1093 00:48:40,800 --> 00:48:42,590 >> Nem, ez nem az, amire gondolsz. 1094 00:48:42,590 --> 00:48:44,490 Sokkal, sokkal rosszabb. 1095 00:48:44,490 --> 00:48:48,160 Ha nem adja meg a kombináció, hogy a levegő pajzs, 1096 00:48:48,160 --> 00:48:52,748 orvos Schlotkin ad a lánya vissza a régi orrát. 1097 00:48:52,748 --> 00:48:53,748 - [Nyelés] Nooooooooooooo. 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 Hol szerezted ezt? 1100 00:48:59,652 --> 00:49:00,640 >> Rendben. 1101 00:49:00,640 --> 00:49:02,506 Megmondom, én elmondom. 1102 00:49:02,506 --> 00:49:03,498 >> Nem, apa, nem. 1103 00:49:03,498 --> 00:49:04,490 Nem szabad. 1104 00:49:04,490 --> 00:49:06,090 >> -Te Jobb kedvesem. 1105 00:49:06,090 --> 00:49:07,390 Hiányozni fog az új orrát. 1106 00:49:07,390 --> 00:49:10,990 De én nem mondom el nekik a kombináció nem számít, mit. 1107 00:49:10,990 --> 00:49:12,450 >> -nagyon Is. 1108 00:49:12,450 --> 00:49:14,830 Orvos Schlotkin, nem a legrosszabb. 1109 00:49:14,830 --> 00:49:15,744 >> Az én öröm. 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> Nem! 1112 00:49:20,800 --> 00:49:22,780 Várj, várj. 1113 00:49:22,780 --> 00:49:24,000 Elmondom. 1114 00:49:24,000 --> 00:49:25,830 Elmondom. 1115 00:49:25,830 --> 00:49:28,270 >> -Tudtam Ez a munka. 1116 00:49:28,270 --> 00:49:31,390 Rendben, add ide. 1117 00:49:31,390 --> 00:49:36,220 >> -A Kombináció egy. 1118 00:49:36,220 --> 00:49:36,740 >> -Egy. 1119 00:49:36,740 --> 00:49:37,473 >> -Egy. 1120 00:49:37,473 --> 00:49:37,972 -Két. 1121 00:49:37,972 --> 00:49:38,471 -Két. 1122 00:49:38,471 --> 00:49:39,800 -Két. 1123 00:49:39,800 --> 00:49:40,300 -Három. 1124 00:49:40,300 --> 00:49:40,800 -Három. 1125 00:49:40,800 --> 00:49:41,800 -Három. 1126 00:49:41,800 --> 00:49:42,300 -Négy. 1127 00:49:42,300 --> 00:49:42,800 -Négy. 1128 00:49:42,800 --> 00:49:44,707 -Négy. 1129 00:49:44,707 --> 00:49:45,521 Öt. 1130 00:49:45,521 --> 00:49:46,430 Öt. 1131 00:49:46,430 --> 00:49:47,930 Öt. 1132 00:49:47,930 --> 00:49:53,480 -Szóval A kombináció egy, kettő, három, négy, öt. 1133 00:49:53,480 --> 00:49:56,140 Ez a leghülyébb kombináció Amit valaha hallottam életemben. 1134 00:49:56,140 --> 00:49:58,640 Ez az a fajta dolog, amit egy idióta lenne a holmiját. 1135 00:49:58,640 --> 00:50:00,000 >> Köszönöm, felség. 1136 00:50:00,000 --> 00:50:01,340 >> [REMOTE megszakad] 1137 00:50:01,340 --> 00:50:02,450 >> Mit csináltál? 1138 00:50:02,450 --> 00:50:03,800 >> -I Kikapcsolta a falon. 1139 00:50:03,800 --> 00:50:05,010 >> Nem, te nem, akkor kikapcsolta az egész film. 1140 00:50:05,010 --> 00:50:06,220 >> -I Biztos megnyomta a megfelelő gombot. 1141 00:50:06,220 --> 00:50:07,064 >> Nos, tedd vissza! 1142 00:50:07,064 --> 00:50:07,910 Helyezze a film újra! 1143 00:50:07,910 --> 00:50:08,300 >> Igen, uram! 1144 00:50:08,300 --> 00:50:08,799 Igen, uram. 1145 00:50:08,799 --> 00:50:09,660 -Gyerünk, Arnold. 1146 00:50:09,660 --> 00:50:10,450 Gyere, Gretchen. 1147 00:50:10,450 --> 00:50:12,533 Természetesen tudod, hogy én kell számlázni neked ezt. 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 Nos? 1150 00:50:17,220 --> 00:50:17,802 Sikerült? 1151 00:50:17,802 --> 00:50:18,510 Hol van a király? 1152 00:50:18,510 --> 00:50:20,218 >> -Ez Dolgozott, uram, van kombináció. 1153 00:50:20,218 --> 00:50:20,740 Remek. 1154 00:50:20,740 --> 00:50:24,810 Most már tudjuk, hogy minden utolsó lehelete A friss levegő a bolygóról Druidia. 1155 00:50:24,810 --> 00:50:25,890 Mi ez a kombináció? 1156 00:50:25,890 --> 00:50:28,155 >> Egy, kettő, három, négy, öt. 1157 00:50:28,155 --> 00:50:29,890 >> Egy, kettő, három, négy, öt? 1158 00:50:29,890 --> 00:50:30,390 Igen. 1159 00:50:30,390 --> 00:50:31,110 -Ez Elképesztő. 1160 00:50:31,110 --> 00:50:34,550 Megvan az azonos kombináció a csomagom. 1161 00:50:34,550 --> 00:50:37,160 Készülj Spaceball 1 azonnali távozása. 1162 00:50:37,160 --> 00:50:38,160 >> Igen, uram. 1163 00:50:38,160 --> 00:50:40,745 >> -és Változtatni a kombináció a csomagom. 1164 00:50:40,745 --> 00:50:41,578 [Ajtózáró SOUND] 1165 00:50:41,578 --> 00:50:42,064 [Sitt AJTÓK Ütő HELMET] 1166 00:50:42,064 --> 00:50:42,550 -Ahh. 1167 00:50:42,550 --> 00:50:43,383 [END Videolejátszás] 1168 00:50:43,383 --> 00:50:46,700 David J. MALAN: Ez az a CS50, találkozunk jövő héten. 1169 00:50:46,700 --> 00:50:49,883 Narrátor: A És most, a Deep Gondolatok, az Daven Farnham. 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> Daven FARNHAM: kódolás C így sokkal nehezebb, mint Scratch. 1172 00:50:55,860 --> 00:50:57,320 printf, Scratch hazugság volt. 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [Nevetés soundbite] 1175 00:51:01,430 --> 00:51:02,486