1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [Prehrávanie hudby] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 David J. Malan: Dobre. 5 00:00:12,230 --> 00:00:16,440 To je CS50, a to je koniec týždňa 2. 6 00:00:16,440 --> 00:00:18,480 Takže dnes, ideme pokračovať v našom vzhľad 7 00:00:18,480 --> 00:00:21,150 na to, ako reprezentovať veci pod hood-- vzďaľuje 8 00:00:21,150 --> 00:00:23,520 z čísel ako čísel a plávajúcou desatinnou čiarkou hodnoty 9 00:00:23,520 --> 00:00:26,810 a zamerať sa na reťazca a nakoniec ďalšie zaujímavé programy. 10 00:00:26,810 --> 00:00:30,140 Ale budeme sa tiež pozrieť na pár domény špecifické problems-- 11 00:00:30,140 --> 00:00:33,620 z ktorých prvý bude byť zahŕňajúce kryptografiu, 12 00:00:33,620 --> 00:00:36,570 umenie kódovanie informácií, v ktorej vidíte vyššie tu 13 00:00:36,570 --> 00:00:41,480 je obraz Radio Orphan Annie Tajomstvo dekodér prsteň z minulosti. 14 00:00:41,480 --> 00:00:46,490 >> To je vlastne veľmi primitívna forma a dieťa-priateľský forma cryptopgraphy 15 00:00:46,490 --> 00:00:50,590 pričom tento krúžok má dve disks-- jeden vnútorný a jeden vonkajší. 16 00:00:50,590 --> 00:00:54,740 A otočením jedného z tých, môžete v podstate sa zoradia písmená ako a 17 00:00:54,740 --> 00:00:59,520 až Z s inými písmenami ako B prostredníctvom A. Inými slovami, 18 00:00:59,520 --> 00:01:03,730 môžete doslova otočiť abecedu, tak prísť s mapovaním od 19 00:01:03,730 --> 00:01:07,820 listy listy tak, že ak chcel poslať tajnú správu 20 00:01:07,820 --> 00:01:11,820 s niekým, ako je Annie, môžete napísať so svoju správu a otočte 21 00:01:11,820 --> 00:01:15,370 listy, pričom, ak máte na mysli hovoriť "A", namiesto toho povedal "B" 22 00:01:15,370 --> 00:01:17,280 Chcete tým povedať, "B" namiesto toho hovoria "C" - 23 00:01:17,280 --> 00:01:20,240 alebo niečo trochu múdrejší než to-- a potom, nakoniec, 24 00:01:20,240 --> 00:01:24,630 tak dlho, kým Anna má tento dekodér prsteň, vie dekódovať správu. 25 00:01:24,630 --> 00:01:28,540 Teraz môžete pripomenúť, v skutočnosti, že táto bol použitý vo veľmi známeho filmu, ktorý 26 00:01:28,540 --> 00:01:31,140 hrá najmenších podrobností počas Vianoce. 27 00:01:31,140 --> 00:01:32,650 Poďme sa pozrieť tu. 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 Ralphie PARKER: "Či už je to známe, že všetko v súhrne 30 00:01:37,210 --> 00:01:41,000 že Ralph Parker je menovaný člen Little Orphan Annie Secret 31 00:01:41,000 --> 00:01:44,860 Circle a je oprávnený na všetky vyznamenania a výhody dochádza k nim. " 32 00:01:44,860 --> 00:01:47,410 >> Ralphie PARKER (rozprávanie): Podpísané Malý sirota Annie. 33 00:01:47,410 --> 00:01:50,070 Spolupodpísať, Pierre Andre! 34 00:01:50,070 --> 00:01:51,490 Atramentom. 35 00:01:51,490 --> 00:01:55,494 Vyznamenania a výhody, Už vo veku deviatich rokov. 36 00:01:55,494 --> 00:01:57,402 >> [Prehrávanie hudby] 37 00:01:57,402 --> 00:02:00,470 >> [RADIO klábosení] 38 00:02:00,470 --> 00:02:01,470 Ralphie PARKER: Poď. 39 00:02:01,470 --> 00:02:02,344 Poďme na to. 40 00:02:02,344 --> 00:02:06,029 Nepotrebujem All That Jazz o pašerákov a pirátov. 41 00:02:06,029 --> 00:02:08,820 Rozhlasový hlásateľ: Počúvajte zajtra noc záverečné dobrodružstvo 42 00:02:08,820 --> 00:02:11,060 The Black pirátskej lodi. 43 00:02:11,060 --> 00:02:14,740 Teraz je čas pre Annie Tajná správa pre vás členov 44 00:02:14,740 --> 00:02:17,110 z The Secret Circle. 45 00:02:17,110 --> 00:02:20,700 Nezabudnite deti len členovia Annie Secret Circle 46 00:02:20,700 --> 00:02:23,270 vie dekódovať Annie tajnú správu. 47 00:02:23,270 --> 00:02:27,270 >> Pamätajte si, že Annie je závislá na vás. 48 00:02:27,270 --> 00:02:30,060 Nastavte si piny pre B-2. 49 00:02:30,060 --> 00:02:34,004 Tu je message-- 12, 11, 2-- 50 00:02:34,004 --> 00:02:36,503 Ralphie PARKER (rozprávanie): I som v prvej tajnej schôdzke. 51 00:02:36,503 --> 00:02:40,041 Rozhlasový hlásateľ: --25, 14, 11, 18, 16-- 52 00:02:40,041 --> 00:02:42,790 Ralphie PARKER (rozprávanie): Oh, Pierre bol vo skvelej hlasovej večer. 53 00:02:42,790 --> 00:02:46,110 Mohol by som povedať, že dnes je Správa bola naozaj dôležité. 54 00:02:46,110 --> 00:02:47,930 >> Rozhlasový hlásateľ: --3, 25. 55 00:02:47,930 --> 00:02:49,940 To je správa od Annie sama. 56 00:02:49,940 --> 00:02:52,182 Pamätajte si, že nikomu to nehovorte. 57 00:02:52,182 --> 00:02:55,077 >> [Lapal po dychu] 58 00:02:55,077 --> 00:02:57,285 Ralphie PARKER (rozprávanie): Deväťdesiat sekúnd neskôr som 59 00:02:57,285 --> 00:03:00,090 v jedinej miestnosti v Dom, v ktorom chlapec z deviatich 60 00:03:00,090 --> 00:03:04,380 mohol sedieť v súkromí a dekódovať. 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 >> [Zasmeje sa] 64 00:03:06,524 --> 00:03:08,684 >> Ralphie PARKER (rozprávanie): Išiel som ďalej. 65 00:03:08,684 --> 00:03:09,610 "E." 66 00:03:09,610 --> 00:03:11,641 Prvé slovo je "byť." 67 00:03:11,641 --> 00:03:12,140 Áno! 68 00:03:12,140 --> 00:03:14,293 Prichádzalo to teraz jednoduchšie. 69 00:03:14,293 --> 00:03:15,259 "U." 70 00:03:15,259 --> 00:03:16,225 >> [Zasmeje sa] 71 00:03:16,225 --> 00:03:18,157 >> Randy PARKER: Ale no tak, Ralphie. 72 00:03:18,157 --> 00:03:19,606 Musím ísť! 73 00:03:19,606 --> 00:03:21,538 >> Ralphie PARKER: Hneď som dole, mami. 74 00:03:21,538 --> 00:03:22,504 Gee svišťať. 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 "T." "O." "Uistite sa, že na. "" Uistite sa, že "Čo je? 77 00:03:31,220 --> 00:03:33,981 Aký bol malý sirota Annie snaží povedať? "Uistite sa, že" to, čo? 78 00:03:33,981 --> 00:03:35,522 MATKA: Ralphie, Randy má ísť. 79 00:03:35,522 --> 00:03:36,735 Mohli by ste, prosím von? 80 00:03:36,735 --> 00:03:38,190 >> Ralphie PARKER: Dobre, mami! 81 00:03:38,190 --> 00:03:39,787 Hneď som sa! 82 00:03:39,787 --> 00:03:41,995 Ralphie PARKER (rozprávanie): Bol som stále bližšie. 83 00:03:41,995 --> 00:03:43,370 Napätie bolo hrozné. 84 00:03:43,370 --> 00:03:44,794 Čo to bolo? 85 00:03:44,794 --> 00:03:47,656 Osud planéty môže visieť na vlásku. 86 00:03:47,656 --> 00:03:50,518 >> MATKA: Ralphie, Randy musí ísť! 87 00:03:50,518 --> 00:03:53,635 >> Ralphie PARKER: Budem hneď sa, preboha! 88 00:03:53,635 --> 00:03:55,343 Ralphie PARKER (Rozprávanie): Už sme skoro tam! 89 00:03:55,343 --> 00:03:56,520 Prsty sa mi letel! 90 00:03:56,520 --> 00:03:58,500 Moja myseľ bola oceľová pasca. 91 00:03:58,500 --> 00:03:59,850 Každý pór vibroval. 92 00:03:59,850 --> 00:04:01,806 Bolo skoro jasno! 93 00:04:01,806 --> 00:04:02,773 Áno! 94 00:04:02,773 --> 00:04:03,273 Áno! 95 00:04:03,273 --> 00:04:03,773 Áno! 96 00:04:03,773 --> 00:04:04,740 Áno! 97 00:04:04,740 --> 00:04:10,250 >> Ralphie PARKER: "Uistite sa, že piť svoju 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 Mizerný reklamu? 101 00:04:17,539 --> 00:04:19,439 >> [Prehrávanie hudby] 102 00:04:19,439 --> 00:04:21,724 >> Ralphie PARKER: Ten skurvysyn. 103 00:04:21,724 --> 00:04:23,460 >> [Smiech] 104 00:04:23,460 --> 00:04:27,070 >> David J. Malan: Takže to je potom letmý pohľad na to, čo kryptografie 105 00:04:27,070 --> 00:04:29,880 môže byť pre tohle-- A piť z minulosti. 106 00:04:29,880 --> 00:04:30,900 Tak rýchle oznámenia. 107 00:04:30,900 --> 00:04:33,410 Ak ste bez tejto Piatok v 13:15 a bolo by 108 00:04:33,410 --> 00:04:36,610 sa k nám pripojiť na CS50 obed, hlava na tejto adrese tu. 109 00:04:36,610 --> 00:04:38,080 Kto skôr príde, ten skôr melie ako obvykle. 110 00:04:38,080 --> 00:04:41,840 Ale postupom času, budeme sa uistite, že väčšina niekto, kto by sa chceli zúčastniť 111 00:04:41,840 --> 00:04:43,640 môže naplánovať-múdry. 112 00:04:43,640 --> 00:04:45,170 >> Takže reťazca. 113 00:04:45,170 --> 00:04:47,940 Máme Zamyla-- koho ste sa stretli s najväčšou pravdepodobnosťou 114 00:04:47,940 --> 00:04:50,750 v Zadanie problému 1-- ktorého názov uvedený takto. 115 00:04:50,750 --> 00:04:53,570 A predpokladám, že ste zadali svoje meno do počítačového programu, ktorý je 116 00:04:53,570 --> 00:04:55,710 používať niečo ako getString. 117 00:04:55,710 --> 00:04:57,890 Aby bolo možné načítať tie stlačenia klávesov, ako 118 00:04:57,890 --> 00:05:01,620 máme ísť o zastupovaní reťazec, slovo, odsek, 119 00:05:01,620 --> 00:05:03,960 alebo viac písmen, ako sú tieto tu? 120 00:05:03,960 --> 00:05:06,790 >> Hovorili sme minule o celé čísla a problémy 121 00:05:06,790 --> 00:05:09,960 ktoré vzniknú s pretečeniu celého čísla a plávajúcou desatinnou čiarkou hodnoty 122 00:05:09,960 --> 00:05:12,190 a problémy, ktoré vznikajú v rámci presnosti. 123 00:05:12,190 --> 00:05:16,080 S reťazci sme aspoň majú trochu väčšiu flexibilitu 124 00:05:16,080 --> 00:05:17,970 pretože strings-- len v reálnom svet 125 00:05:17,970 --> 00:05:19,790 môže byť docela ľubovoľnej dĺžky. 126 00:05:19,790 --> 00:05:21,055 Pekne povedané, dosť dlho. 127 00:05:21,055 --> 00:05:23,680 Ale aj potom, budeme zistil, že počítače môžu niekedy 128 00:05:23,680 --> 00:05:27,200 spustiť z pamäte, a dokonca ani uložiť dosť veľký reťazec. 129 00:05:27,200 --> 00:05:30,840 >> Ale teraz, poďme začať vizualizovať reťazec ako niečo, čo v týchto škatuliach 130 00:05:30,840 --> 00:05:31,340 tu. 131 00:05:31,340 --> 00:05:36,410 Takže šesť také škatuľky, z ktorých každá predstavuje znak alebo znak "." 132 00:05:36,410 --> 00:05:40,646 Takže pripomenúť, že "char" - c-h-a-r-- je jeden z vstavaných dátových typov v jazyku C. 133 00:05:40,646 --> 00:05:43,520 A čo je príjemné je, že môžete použiť že druh ako stavebný kameň, 134 00:05:43,520 --> 00:05:47,880 skladačky, ak chcete, k vytvoreniu Väčší typ dát, ktoré budeme aj naďalej 135 00:05:47,880 --> 00:05:49,410 volanie "reťazec". 136 00:05:49,410 --> 00:05:53,650 >> A teraz, čo je užitočné, o myslení o veciach, ako sú reťazce týmto spôsobom? 137 00:05:53,650 --> 00:05:57,720 No, ukázalo sa, že môžeme skutočne využiť túto štruktúru 138 00:05:57,720 --> 00:06:01,420 skutočne prístup k jednotlivé znaky v celkom priamočiaro. 139 00:06:01,420 --> 00:06:04,099 Chystám sa ísť dopredu a vytvoriť Súbor s názvom "stringzero.c" 140 00:06:04,099 --> 00:06:05,765 ale môžete hovoriť, čo chcete. 141 00:06:05,765 --> 00:06:08,500 A na internetových stránkach kurzu je Už tento príklad vopred, 142 00:06:08,500 --> 00:06:10,430 takže sa nemusíte Typ všetko von. 143 00:06:10,430 --> 00:06:13,820 >> A budem pokračovať a najprv urobiť int main neplatné. 144 00:06:13,820 --> 00:06:15,980 A v priebehu niekoľkých dní, začneme dráždiť seba 145 00:06:15,980 --> 00:06:19,070 čo void je tu, prečo je to int vedľa hlavnej, a tak ďalej. 146 00:06:19,070 --> 00:06:21,180 Ale teraz, poďme pokračovať kopírovať vložiť, že. 147 00:06:21,180 --> 00:06:23,455 >> Idem vyhlásiť reťazec s názvom s. 148 00:06:23,455 --> 00:06:26,920 A ja sa vrátiť z GetString za akýchkoľvek užívateľ zadá. 149 00:06:26,920 --> 00:06:29,170 To bude jednoduchý Program, žiadne pokyny, 150 00:06:29,170 --> 00:06:31,336 Ja len tak naslepo Predpokladáme, že užívateľ pozná 151 00:06:31,336 --> 00:06:32,600 čo robiť, aby to jednoduché. 152 00:06:32,600 --> 00:06:34,220 >> A teraz budem mať pre sláčiky. 153 00:06:34,220 --> 00:06:37,450 A vnútri mojej pre sláčiky som bude mať int aj dostane na nulu. 154 00:06:37,450 --> 00:06:40,660 A aj je, opäť, len konvencie, premenná index pre počítanie, 155 00:06:40,660 --> 00:06:42,350 ale ja som mohol zavolať to, čo chcem. 156 00:06:42,350 --> 00:06:46,275 Chystám sa urobiť aj menej than-- dobre Zamyla meno je šesť písmen dlhé. 157 00:06:46,275 --> 00:06:48,150 Takže idem tvrdo Kód, ktorý tam teraz. 158 00:06:48,150 --> 00:06:49,730 >> A potom som ++. 159 00:06:49,730 --> 00:06:53,190 A teraz vnútri týchto kučeravé traky budem robiť printf, 160 00:06:53,190 --> 00:06:55,460 a chcem vytlačiť jednu znakov naraz. 161 00:06:55,460 --> 00:06:58,227 Takže budem používať% c pre snáď prvýkrát. 162 00:06:58,227 --> 00:07:00,560 A potom chcem tlačiť každý znak na samostatnom riadku. 163 00:07:00,560 --> 00:07:02,550 Tak idem dať málo spätné lomítko n tam. 164 00:07:02,550 --> 00:07:03,640 Close quote. 165 00:07:03,640 --> 00:07:06,250 >> A teraz chcem urobiť niečo tu. 166 00:07:06,250 --> 00:07:10,610 Chcem vytlačiť konkrétne písmeno v reťazci, 167 00:07:10,610 --> 00:07:13,670 s, ako som iterácie z na do šiestich nulu. 168 00:07:13,670 --> 00:07:17,150 Inými slovami, chcem vytlačiť i'th charakter s. 169 00:07:17,150 --> 00:07:18,420 Teraz, ako to urobiť? 170 00:07:18,420 --> 00:07:21,550 >> Tak podobne ako krabica v toto zastúpenie tu 171 00:07:21,550 --> 00:07:25,560 druh, vykúzliť predstavu o boxe písmená, môžete to urobiť podobne 172 00:07:25,560 --> 00:07:32,630 syntakticky v C jednoduchým zadaním, Chcem vytlačiť s'S i'th charakteru. 173 00:07:32,630 --> 00:07:35,640 Pomocou hranatých zátvoriek na klávesnici počítača 174 00:07:35,640 --> 00:07:38,910 že na klávesnici a USA sú zvyčajne nad vašou kláves Enter. 175 00:07:38,910 --> 00:07:42,630 >> Takže to nie je úplne v poriadku napriek tomu, ako ste si možno všimli. 176 00:07:42,630 --> 00:07:44,780 Ale budem druhu slepo dopredu tu. 177 00:07:44,780 --> 00:07:47,020 A ja budem robiť, aby reťazec 0. 178 00:07:47,020 --> 00:07:50,860 Ale ako som to, uvidíme, či budeme nemôže predvídať niektoré bežné chyby. 179 00:07:50,860 --> 00:07:52,844 To bude zostaviť? 180 00:07:52,844 --> 00:07:54,510 Nie, mi chýba veľa vecí. 181 00:07:54,510 --> 00:07:55,280 Knižnice som počul. 182 00:07:55,280 --> 00:07:58,480 >> Tak ktorý hlavičkové súbory ja by som mohol chcieť pridať sem? 183 00:07:58,480 --> 00:07:59,205 Jo. 184 00:07:59,205 --> 00:08:01,580 >> Divákov: Potrebujete Štandardné I / O [nepočuteľné] 185 00:08:01,580 --> 00:08:02,663 >> David J. Malan: Výborne. 186 00:08:02,663 --> 00:08:06,060 Tak som potrebné Standard I / O. Za to, čo Účelom nechcem Standard I / O? 187 00:08:06,060 --> 00:08:06,670 Pre printf. 188 00:08:06,670 --> 00:08:09,220 Takže sú stdio.h. 189 00:08:09,220 --> 00:08:13,490 A tiež navrhnúť, aby mi patrí knižnica CS50 akého dôvodu? 190 00:08:13,490 --> 00:08:14,650 Ak chcete mať reťazca. 191 00:08:14,650 --> 00:08:17,780 Tak uvidíme, čo Knižnica CS50 je robí 192 00:08:17,780 --> 00:08:19,260 vytvoriť tento pojem reťazca. 193 00:08:19,260 --> 00:08:21,930 Ale teraz, stačí premýšľať to ako skutočný dátový typ. 194 00:08:21,930 --> 00:08:23,596 >> Tak, že sa zdá byť trochu vyčistiť. 195 00:08:23,596 --> 00:08:27,060 A teraz budem pokračovať a naozaj to, aby reťazec 0. 196 00:08:27,060 --> 00:08:27,700 Zostavené. 197 00:08:27,700 --> 00:08:28,370 Tak to je dobre. 198 00:08:28,370 --> 00:08:32,799 Takže ./string0 mi dovoľte priblížiť, takže môžeme viď bližšie, čo sa deje. 199 00:08:32,799 --> 00:08:33,850 Enter. 200 00:08:33,850 --> 00:08:37,789 Z-A-M-Y-L-vstúpiť. 201 00:08:37,789 --> 00:08:39,440 A my sme vytlačiť na Zamyla menom. 202 00:08:39,440 --> 00:08:40,409 >> Tak to je celkom dobrý. 203 00:08:40,409 --> 00:08:43,220 Takže teraz poďme do toho a znova spustiť tento program, 204 00:08:43,220 --> 00:08:45,659 a zadajte z Daven je celé meno. 205 00:08:45,659 --> 00:08:46,450 Prekvapenie, prekvapenie. 206 00:08:46,450 --> 00:08:48,021 Enter. 207 00:08:48,021 --> 00:08:48,520 Hmm. 208 00:08:48,520 --> 00:08:51,750 Nemáme vytlačiť Daven je plné krstné meno správne. 209 00:08:51,750 --> 00:08:54,250 Práve toto by malo byť zrejmé, v Retrospect pretože to, čo, 210 00:08:54,250 --> 00:08:57,010 druh rozhodnutia hlúpy návrh? 211 00:08:57,010 --> 00:08:59,590 >> Jo, tvrdo som kódované šesť vnútri mojej slučky for. 212 00:08:59,590 --> 00:09:01,610 Teraz som to urobil len preto, že Vedel som, že Zamyla meno 213 00:09:01,610 --> 00:09:02,776 to bude šesť písmen. 214 00:09:02,776 --> 00:09:04,720 Ale určite to nie je všeobecné riešenie. 215 00:09:04,720 --> 00:09:07,720 Tak to dopadá môžeme dynamicky zistiť dĺžku reťazca 216 00:09:07,720 --> 00:09:10,440 volaním funkcie nazýva strlen. 217 00:09:10,440 --> 00:09:12,840 >> Opäť platí, že úmyselne stručne pomenovaný práve 218 00:09:12,840 --> 00:09:14,450 aby bolo pohodlnejšie písanie. 219 00:09:14,450 --> 00:09:17,170 Ale to je synonymom pre získanie dĺžku reťazca. 220 00:09:17,170 --> 00:09:23,190 Chystám sa ísť späť do svojho terminálu okno a znovu spustiť kompilátor. 221 00:09:23,190 --> 00:09:24,170 Ale je to na mňa jačať. 222 00:09:24,170 --> 00:09:29,130 Implicitne deklarovať funkciu knižnice strlen s typom unsigned int const-- 223 00:09:29,130 --> 00:09:29,780 Stratil som sa. 224 00:09:29,780 --> 00:09:30,590 Úplne. 225 00:09:30,590 --> 00:09:32,940 >> Tak, ako je to najmä vaša oči začnú pohasly 226 00:09:32,940 --> 00:09:36,000 sa chybové správy, ako je tento, zameranie úprimne na prvých pár slov. 227 00:09:36,000 --> 00:09:38,590 Vieme, že problém je v linka 8, ako je tu uvedené. 228 00:09:38,590 --> 00:09:40,500 A to je v reťazci-0.c. 229 00:09:40,500 --> 00:09:43,580 Implicitne vyhlásení knižničný funkcie strlen. 230 00:09:43,580 --> 00:09:47,000 Tak, že sa všeobecne bude byť vzor chybových správ. 231 00:09:47,000 --> 00:09:49,190 Implicitne vyhlásil niečo. 232 00:09:49,190 --> 00:09:53,250 >> Takže v skratke, čo sa zdalo, že som sa urobil s ohľadom na linke 8, tu. 233 00:09:53,250 --> 00:09:56,880 Čo by mohlo byť riešením ešte ak ste nikdy nepoužívali strlen seba? 234 00:09:56,880 --> 00:09:58,907 >> Divákov: Časť inou knižnicou? 235 00:09:58,907 --> 00:10:00,740 David J. Malan: Part z iného knižnice. 236 00:10:00,740 --> 00:10:02,400 Tak to je deklarované, aby som tak povedal. 237 00:10:02,400 --> 00:10:07,510 To je uvedené v nejakom súbore iné ako stdio.h a CS50.h. 238 00:10:07,510 --> 00:10:09,179 Tak kde je to definované? 239 00:10:09,179 --> 00:10:12,220 Ak chcete byť úprimný, buď máte len že to z vrcholu vašej hlavy, 240 00:10:12,220 --> 00:10:13,640 alebo si to na Googli a zistiť. 241 00:10:13,640 --> 00:10:18,150 Alebo viem, som otvoril v CS50 spotrebič terminálový program, ktorý 242 00:10:18,150 --> 00:10:22,200 je jednoducho veľký, verzia plná obrazovka čo je v spodnej časti okna gedit je. 243 00:10:22,200 --> 00:10:24,970 >> A ukázalo sa, že je tu Podobne stručný príkaz s názvom 244 00:10:24,970 --> 00:10:29,280 muž pre ručné, kde keď zadáte názov funkcie a stlačte klávesu Enter, 245 00:10:29,280 --> 00:10:32,240 dostanete späť celkom Arcane dokumentácie. 246 00:10:32,240 --> 00:10:35,299 Je to text, ktorý všeobecne vyzerá niečo také. 247 00:10:35,299 --> 00:10:37,090 Je to trochu ohromujúce na prvý pohľad. 248 00:10:37,090 --> 00:10:39,048 Ale úprimne povedané, ja budem nechať oči pohasla 249 00:10:39,048 --> 00:10:41,930 a iba sa zameriavajú na strane Starám sa o pre túto chvíľu. 250 00:10:41,930 --> 00:10:42,780 >> Čo je to. 251 00:10:42,780 --> 00:10:45,470 Ktorý vyzerá ako štrukturálne niečo, čo som oboznámený sa. 252 00:10:45,470 --> 00:10:48,080 Naozaj manuálové stránky, tak hovoriť, vám povie, 253 00:10:48,080 --> 00:10:51,590 v čom hlavičky súboru funkciu ako strlen je definovaný. 254 00:10:51,590 --> 00:10:54,170 Takže som ísť späť do gedit. 255 00:10:54,170 --> 00:10:59,070 A ja idem do toho a pridať sem # include 256 00:10:59,070 --> 00:11:00,480 a súbor uložte. 257 00:11:00,480 --> 00:11:04,300 >> Chystám sa vyčistiť obrazovku Control L Ak ste premýšľal. 258 00:11:04,300 --> 00:11:08,210 A ja sa znova spustiť make string.0 zostavuje tentoraz. 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla. 260 00:11:11,790 --> 00:11:15,020 Zdalo sa, že pracovať Nechaj ma ísť dopredu a spustite ho Davenport. 261 00:11:15,020 --> 00:11:15,860 Enter. 262 00:11:15,860 --> 00:11:17,730 A to tiež zdalo, že funguje. 263 00:11:17,730 --> 00:11:21,220 >> Takže, čo môžeme urobiť o niečo lepšie, než to, keď môžeme začať uprataný veci 264 00:11:21,220 --> 00:11:23,257 sa len trochu. 265 00:11:23,257 --> 00:11:25,590 A ja vlastne predstaviť jednu vec teraz. 266 00:11:25,590 --> 00:11:28,930 Chystám sa ísť dopredu a uložiť to v inom súbore. 267 00:11:28,930 --> 00:11:31,770 A ja idem volať Tento súbor string1.c len 268 00:11:31,770 --> 00:11:34,620 byť v súlade s kódom budete môcť nájsť na internete. 269 00:11:34,620 --> 00:11:37,050 >> A poďme zamerať sa na presne rovnaký kód. 270 00:11:37,050 --> 00:11:39,000 Ukazuje sa, že som bol druh odberu 271 00:11:39,000 --> 00:11:42,600 za samozrejmosť to, že môjho notebooku, a naopak, CS50 spotrebiče 272 00:11:42,600 --> 00:11:47,450 má veľa pamäte, veľa RAM, veľa bajtov priestoru 273 00:11:47,450 --> 00:11:48,920 , V ktorom môžem ukladať reťazca. 274 00:11:48,920 --> 00:11:53,560 >> Ale realita, ak som napísal dlhý dosť a dosť klávesov, 275 00:11:53,560 --> 00:11:56,170 Mohol by som v type teórie vo viacerých znakov 276 00:11:56,170 --> 00:11:58,830 ako môj počítač fyzicky má pamäť pre. 277 00:11:58,830 --> 00:11:59,830 A to je problematické. 278 00:11:59,830 --> 00:12:03,050 Rovnako ako int môže iba Počet tak vysoká, teoreticky, 279 00:12:03,050 --> 00:12:06,600 môžete napchať len toľko znakov do pamäte RAM, alebo Random počítača 280 00:12:06,600 --> 00:12:07,920 Access Memory. 281 00:12:07,920 --> 00:12:11,140 >> Tak som sa lepšie predvídať tento problém, dokonca 282 00:12:11,140 --> 00:12:13,660 aj keď to môže byť vzácne roh prípad, aby som tak povedal. 283 00:12:13,660 --> 00:12:15,670 Nestáva tak často, by sa mohlo stať. 284 00:12:15,670 --> 00:12:18,815 A ak sa to stane, a vôbec sa mi nepáči predvídať a program pre neho, 285 00:12:18,815 --> 00:12:20,300 môj program mohol robiť kto vie čo. 286 00:12:20,300 --> 00:12:22,220 Zmraziť, zavesiť, reštart, čokoľvek. 287 00:12:22,220 --> 00:12:24,490 Niečo sa predpokladalo by sa mohlo stať. 288 00:12:24,490 --> 00:12:27,120 >> Takže to, čo budem robiť Teraz, odteraz naozaj, 289 00:12:27,120 --> 00:12:31,630 je, ako som vôbec naslepo použiť premennú, ako s, ktoré 290 00:12:31,630 --> 00:12:36,790 bola priradená návratovú hodnotu niektoré ďalšie funkcie, ako getString, 291 00:12:36,790 --> 00:12:40,200 Idem sa uistiť že jeho hodnota je platná. 292 00:12:40,200 --> 00:12:44,280 Takže viem len z prečítania Dokumentácia CS50 pre getString, 293 00:12:44,280 --> 00:12:49,020 čo v konečnom dôsledku budeme bod, v, že getString vracia špeciálny symbol 294 00:12:49,020 --> 00:12:53,610 názvom NULL, N-U-L-L vo všetkých čiapky, keď sa niečo pokazí. 295 00:12:53,610 --> 00:12:55,650 >> Tak normálne, vráti reťazec. 296 00:12:55,650 --> 00:12:59,700 Ale inak, ak sa vráti N-u-L-ja-- budeme nakoniec vidieť, čo to v skutočnosti 297 00:12:59,700 --> 00:13:01,790 means-- to len znamená niečo zlé stalo. 298 00:13:01,790 --> 00:13:05,560 Teraz to znamená, že rovnako ako v Scratch, Môžem skontrolovať stav tu v C, 299 00:13:05,560 --> 00:13:08,830 ak to nie je rovné NULL. 300 00:13:08,830 --> 00:13:11,930 Takže ak ste ešte nevideli predtým, to len znamená, že nie je rovné. 301 00:13:11,930 --> 00:13:15,290 >> Takže je to opak toho, rovnaké rovní, čo spomínam, 302 00:13:15,290 --> 00:13:18,940 sa líši od jedinej rovná, čo je úloha. 303 00:13:18,940 --> 00:13:23,030 Takže ak to nie je presne NULL, až potom 304 00:13:23,030 --> 00:13:25,980 Chcem spustiť tieto riadky kódu. 305 00:13:25,980 --> 00:13:28,080 Takže inými slovami, predtým, než som sa ponoriť naslepo 306 00:13:28,080 --> 00:13:30,919 a začať iterácie na s, a brať to 307 00:13:30,919 --> 00:13:33,710 ako by ich postupnosť znaky, budem najprv skontrolovať, 308 00:13:33,710 --> 00:13:37,900 počkajte chvíľu, je to určite nie je rovnajúce sa tejto zvláštnej hodnoty, NULL? 309 00:13:37,900 --> 00:13:40,030 >> Pretože ak áno, zlé veci sa môže stať. 310 00:13:40,030 --> 00:13:43,080 A teraz, predpokladám, že zlé veci deje znamená, že program spadne, 311 00:13:43,080 --> 00:13:45,070 a nemôžete nutne obnoviť. 312 00:13:45,070 --> 00:13:46,800 Takže úprimne povedané, vyzerá to škaredšie. 313 00:13:46,800 --> 00:13:48,660 Je to trochu mätúce, teraz, aby sa pozrel na. 314 00:13:48,660 --> 00:13:50,780 Ale toto sa stane viac zoznámiť onedlho. 315 00:13:50,780 --> 00:13:52,920 >> Ale budem navrhovať teraz jeden ďalšie zlepšenie. 316 00:13:52,920 --> 00:13:54,660 To je vylepšenie správnosť. 317 00:13:54,660 --> 00:13:58,800 Môj program je teraz presnejšia, pretože vo výnimočných prípadoch, že nie je dostatok pamäte 318 00:13:58,800 --> 00:14:01,180 existuje, bude to zvládnem, a ja proste nič. 319 00:14:01,180 --> 00:14:02,680 Ja aspoň nespadne. 320 00:14:02,680 --> 00:14:05,000 >> Ale poďme urobiť konečné verziu tu. 321 00:14:05,000 --> 00:14:07,690 A súbor s názvom string2.c. 322 00:14:07,690 --> 00:14:10,190 Chystám sa vložiť, že rovnaký kód na chvíľu, 323 00:14:10,190 --> 00:14:14,210 a ja sa zameriam na to linka, 11, tu len na chvíľu. 324 00:14:14,210 --> 00:14:18,179 Teraz je skutočnosťou, že chytré kompilátory ako Clang mohol opraviť to pre nás 325 00:14:18,179 --> 00:14:19,970 zákulisia bez toho aby sme vôbec vedeli. 326 00:14:19,970 --> 00:14:24,670 Ale poďme si o tom myslíte zásadne za problematické konštrukcie. 327 00:14:24,670 --> 00:14:29,010 >> Tento riadok kódu je, samozrejme, hovorí, inicializovať nejakú premennú i na 0. 328 00:14:29,010 --> 00:14:30,260 To je celkom jednoduché. 329 00:14:30,260 --> 00:14:34,691 A čo je zase toto vyhlásenie, tu, aj ++, robiť? 330 00:14:34,691 --> 00:14:37,066 My som to nevidel, ale my sa naozaj o tom hovoriť. 331 00:14:37,066 --> 00:14:37,900 >> Divákov: Zvyšovanie i. 332 00:14:37,900 --> 00:14:39,191 >> David J. Malan: Zvyšovanie i. 333 00:14:39,191 --> 00:14:41,890 Takže v každej iterácii cez Táto slučka, každý cyklus, 334 00:14:41,890 --> 00:14:43,570 ste zvyšovanie aj po druhom. 335 00:14:43,570 --> 00:14:45,740 Takže to bude väčšie a väčšie, a väčší ako slučka ukončí. 336 00:14:45,740 --> 00:14:46,810 Ako to skončí? 337 00:14:46,810 --> 00:14:49,430 No tam je to prostredný stav, ktorý sme použili predtým. 338 00:14:49,430 --> 00:14:52,500 Videli ste, a priechody v sade P. 339 00:14:52,500 --> 00:14:53,880 >> Ale čo je to príslovie? 340 00:14:53,880 --> 00:14:58,352 Vykonajte nasledujúce slučku tak, ak aj je menšia než čo? 341 00:14:58,352 --> 00:14:59,810 Divákov: dĺžka reťazca. 342 00:14:59,810 --> 00:15:01,518 David J. Malan: dĺžka reťazca. 343 00:15:01,518 --> 00:15:04,300 Tak to prekladá docela čisto do angličtiny v tomto zmysle. 344 00:15:04,300 --> 00:15:08,810 Teraz je problém je, že zakaždým, keď som iterovat tejto slučky v teórii, 345 00:15:08,810 --> 00:15:10,000 Pýtam sa na túto otázku. 346 00:15:10,000 --> 00:15:12,250 Je aj menšia ako dĺžka reťazca s? 347 00:15:12,250 --> 00:15:14,500 Je aj menšia ako dĺžka reťazca s? 348 00:15:14,500 --> 00:15:18,380 >> Teraz sa aj mení na každej iterácii? 349 00:15:18,380 --> 00:15:18,880 To je. 350 00:15:18,880 --> 00:15:19,629 Vzhľadom k ++. 351 00:15:19,629 --> 00:15:21,700 Takže každé iterácii aj je stále väčší. 352 00:15:21,700 --> 00:15:25,411 Ale je to stále väčšia, alebo menšie, alebo meniace sa vôbec? 353 00:15:25,411 --> 00:15:25,910 Nie 354 00:15:25,910 --> 00:15:30,240 Takže pokiaľ ide o dizajn, jednej z osí pozdĺž ktorej sa snažíme vyhodnotiť kód 355 00:15:30,240 --> 00:15:32,610 v triede, to cíti trochu hlúpy. 356 00:15:32,610 --> 00:15:34,690 >> Rovnako ako ste doslova, na každej iterácii 357 00:15:34,690 --> 00:15:37,110 tejto slučky s dotazom To isté opäť sakramentsky otázka, 358 00:15:37,110 --> 00:15:40,770 a znova, a znova, a doslova to sa nikdy nezmení. 359 00:15:40,770 --> 00:15:44,220 Aspoň keď som sa dotkol s a Pokúšate sa zmeniť obsah s. 360 00:15:44,220 --> 00:15:46,610 Tak som si to trochu lepšie ako toto. 361 00:15:46,610 --> 00:15:49,530 >> A to, čo budem robiť, je to uviesť len jednu premennú i, 362 00:15:49,530 --> 00:15:53,330 ale druhá premenná budem ľubovoľne, ale konvenčne, hovoria n. 363 00:15:53,330 --> 00:15:55,940 Priradenie n rovné dĺžka reťazca s. 364 00:15:55,940 --> 00:15:59,090 A potom tu, budem robiť šikovný trochu optimalizácia, tak 365 00:15:59,090 --> 00:16:03,460 hovoriť, že na konci dňa už nie je správne, alebo nie menej správne 366 00:16:03,460 --> 00:16:04,260 ako predtým. 367 00:16:04,260 --> 00:16:05,500 Ale je to lepší dizajn. 368 00:16:05,500 --> 00:16:09,480 V tom, že ja som s použitím menej času, menej cyklov procesora, takže 369 00:16:09,480 --> 00:16:14,040 hovoriť, odpovedať na rovnaký otázka, ale len raz. 370 00:16:14,040 --> 00:16:17,870 >> Akékoľvek otázky týkajúce sa tohto všeobecného zásady zlepšovania, 371 00:16:17,870 --> 00:16:21,294 povedať, účinnosť programu je? 372 00:16:21,294 --> 00:16:21,991 Jo? 373 00:16:21,991 --> 00:16:23,699 Divákov: Prečo sa použite [nepočuteľné]? 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 David J. Malan: Dobrá otázka. 376 00:16:27,010 --> 00:16:30,690 Tak prečo kladieme ++ na koniec aj miesto začiatku i? 377 00:16:30,690 --> 00:16:33,070 V tomto prípade, má žiadna funkčná dopad. 378 00:16:33,070 --> 00:16:36,670 A vôbec, mám tendenciu použiť operátor postfix 379 00:16:36,670 --> 00:16:41,750 takže je to trochu jasnejšie, ako , Kedy je operácia deje. 380 00:16:41,750 --> 00:16:46,670 >> Pre tých, ktorí nepoznajú, je tu ďalší vyhlásenie, ktorým by ste mohli urobiť ++ som. 381 00:16:46,670 --> 00:16:48,747 Jedná sa o funkčne ekvivalent v tomto prípade 382 00:16:48,747 --> 00:16:51,080 pretože nič iné okolo toho inkrementácia. 383 00:16:51,080 --> 00:16:54,435 Ale môžete prísť s prípady a riadkov kódu 384 00:16:54,435 --> 00:16:55,810 v ktorom to robí rozdiel. 385 00:16:55,810 --> 00:16:57,810 Takže všeobecne, my nie dokonca hovoriť o tomto. 386 00:16:57,810 --> 00:17:00,690 Vzhľadom k tomu, úprimne povedané, to je vaša Kód sexy a trochu pláštenku, 387 00:17:00,690 --> 00:17:01,776 a menej znakov. 388 00:17:01,776 --> 00:17:04,859 Skutočnosť je však taká, že je to oveľa ťažšie, Myslím, že aj pre mňa zabaliť moju myseľ 389 00:17:04,859 --> 00:17:07,319 okolo neho niekedy, poradie operácií. 390 00:17:07,319 --> 00:17:09,750 Tak bokom, ak Naozaj sa mi nepáči, 391 00:17:09,750 --> 00:17:14,650 aj keď to je celkom sexi hľadáte, môžete si tiež urobiť i + = 1, 392 00:17:14,650 --> 00:17:18,880 ktorý je škaredšie verzia Rovnaký nápad pre postfix inkrementácia. 393 00:17:18,880 --> 00:17:22,250 >> Hovorím to aj vás by sa robiť si žarty z toho, 394 00:17:22,250 --> 00:17:25,140 ale príde vidieť kódu niečo krásneho onedlho. 395 00:17:25,140 --> 00:17:27,160 >> [SMIECH] 396 00:17:27,160 --> 00:17:28,410 >> David J. Malan: Je to tak? 397 00:17:28,410 --> 00:17:29,360 Jo. 398 00:17:29,360 --> 00:17:30,480 Otázka uprostred. 399 00:17:30,480 --> 00:17:32,146 >> Divákov: Potrebujete povedať, int n? 400 00:17:32,146 --> 00:17:34,020 David J. Malan: Robíte Netreba hovoriť, int n. 401 00:17:34,020 --> 00:17:37,670 Preto, že sme už povedali int, nemusíte to hovoriť znova. 402 00:17:37,670 --> 00:17:41,820 Háčik je v tom, že n má byť rovnaký dátový typ ako ja. 403 00:17:41,820 --> 00:17:43,310 Tak to je len pohodlie tu. 404 00:17:43,310 --> 00:17:44,058 Jo. 405 00:17:44,058 --> 00:17:47,806 >> Divákov: Môžeš ísť cez tlačového charakteru s držiak aj znova? 406 00:17:47,806 --> 00:17:48,930 David J. Malan: Presne tak. 407 00:17:48,930 --> 00:17:52,110 Takže% c, prevezme späť od poslednej čas, je len zástupný symbol. 408 00:17:52,110 --> 00:17:53,930 To znamená dať char tu. 409 00:17:53,930 --> 00:17:56,780 spätné lomítko n, samozrejme, len znamená dať si pauzu tu. 410 00:17:56,780 --> 00:17:59,540 Tak to proste odíde, teraz, tento kus novú syntaxou. 411 00:17:59,540 --> 00:18:03,730 A to doslova hovorí, urvat reťazec s názvom S a choď jeho 412 00:18:03,730 --> 00:18:06,050 i'th znak, aby som tak povedal. 413 00:18:06,050 --> 00:18:10,590 >> A majte hovorím i'th charakter preto, že na každom opakovaní tohto cyklu 414 00:18:10,590 --> 00:18:14,540 je to, ako by sme sa tlačia v prvom rade je držiak 0, 415 00:18:14,540 --> 00:18:15,780 ako programátor by sa povedať. 416 00:18:15,780 --> 00:18:18,680 Potom to držiak 1, potom s držiak 2, potom 3, potom 4. 417 00:18:18,680 --> 00:18:21,610 Ale samozrejme je to premenná, tak som to vyjadriť aj. 418 00:18:21,610 --> 00:18:23,900 >> Kľúčové však je uvedomiť si, najmä ak ste nie 419 00:18:23,900 --> 00:18:26,358 bol acclimating do tohto sveta programovanie, kde sme sa všetci 420 00:18:26,358 --> 00:18:28,950 Zdá sa, že počítať od nuly, musím začína počítať od nuly teraz. 421 00:18:28,950 --> 00:18:35,130 Vzhľadom k tomu, struny, prvý znak, z v Zamyla je k lepšiemu alebo k horšiemu 422 00:18:35,130 --> 00:18:40,490 žiť na umiestnenie čísla nula. 423 00:18:40,490 --> 00:18:48,210 >> Dobre, tak mi dovoľte, aby nám sem do Zamyla 424 00:18:48,210 --> 00:18:50,746 a uvidíte, čo sa v skutočnosti deje na pod kapotou. 425 00:18:50,746 --> 00:18:52,370 Takže tam je to predstava typu odliatku. 426 00:18:52,370 --> 00:18:53,800 Možno, že ste v skutočnosti hral s tým už, 427 00:18:53,800 --> 00:18:55,970 Možno pre hackera vydanie P nastavili. 428 00:18:55,970 --> 00:19:00,320 Ale pretypovanie len sa odvoláva na schopnosti v jazyku C a niektoré ďalšie jazyky 429 00:19:00,320 --> 00:19:03,170 previesť jeden typ údajov do druhého. 430 00:19:03,170 --> 00:19:05,450 >> Teraz, ako môžeme vidieť celkom priamočiaro? 431 00:19:05,450 --> 00:19:08,530 Takže to, odvolania, je začiatok anglickej abecedy. 432 00:19:08,530 --> 00:19:11,265 A kontext, spomínam, od ako pred týždňom, je ASCII. 433 00:19:11,265 --> 00:19:13,790 American Standard Code pre výmenu informácií. 434 00:19:13,790 --> 00:19:17,080 Čo je len naozaj dlhá cesta hovoriť mapovanie z listov 435 00:19:17,080 --> 00:19:19,370 čísel, a od počtu písmen. 436 00:19:19,370 --> 00:19:22,940 >> Takže až som tu, dot dot bodka, zoradia sa, odvolanie, 437 00:19:22,940 --> 00:19:25,582 desatinné číslo 65 nahor. 438 00:19:25,582 --> 00:19:27,290 A my sme nehovorili o tom výslovne, 439 00:19:27,290 --> 00:19:29,850 ale určite je to podobné čísla pre malé písmená. 440 00:19:29,850 --> 00:19:30,820 A skutočne, tam sú. 441 00:19:30,820 --> 00:19:33,730 Svet sa rozhodol niekoľko rokov dávno, že len málo, malé písmená, 442 00:19:33,730 --> 00:19:35,020 bude 97. 443 00:19:35,020 --> 00:19:38,010 A malý b sa deje ako 98, a tak ďalej. 444 00:19:38,010 --> 00:19:40,200 >> A pre akýkoľvek iný kľúč na klávesnice, je tu 445 00:19:40,200 --> 00:19:42,190 bude podobný vzor bitov. 446 00:19:42,190 --> 00:19:44,540 Alebo ekvivalentne, desatinné číslo. 447 00:19:44,540 --> 00:19:47,110 Takže otázka po ruke, potom je, ako môžeme 448 00:19:47,110 --> 00:19:49,400 vlastne vidieť pod kapotou? 449 00:19:49,400 --> 00:19:51,539 Takže idem prejsť do gedit znova. 450 00:19:51,539 --> 00:19:53,330 A skôr než typ to jeden z nuly, 451 00:19:53,330 --> 00:19:55,330 Chystám sa ísť dopredu a stačí otvoriť niečo 452 00:19:55,330 --> 00:19:58,350 z dnešného kódu ASCII s názvom nula. 453 00:19:58,350 --> 00:20:01,210 >> A ASCII nula vyzerá takto. 454 00:20:01,210 --> 00:20:02,710 Takže poďme zabaliť svojej mysli okolo tohto. 455 00:20:02,710 --> 00:20:04,969 Takže prvé, čo som uviedol kód, čo je pekné. 456 00:20:04,969 --> 00:20:07,010 Vzhľadom k tomu, že je to doslova hovorí mi, čo mám očakávať, 457 00:20:07,010 --> 00:20:08,950 zobraziť mapovanie veľkými písmenami. 458 00:20:08,950 --> 00:20:13,690 Teraz som vlastne poriadne nevieme, čo som na mysli, že, tak sa poďme odvodiť. 459 00:20:13,690 --> 00:20:16,870 >> V angličtine, možno trochu techie Angličtina, 460 00:20:16,870 --> 00:20:20,660 čo robí linka 18 sa objaví sa, že robí pre nás? 461 00:20:20,660 --> 00:20:21,500 Len linka 18. 462 00:20:21,500 --> 00:20:22,430 Čo to vyvolanie? 463 00:20:22,430 --> 00:20:25,192 Čo sa to deje na kick off tu? 464 00:20:25,192 --> 00:20:26,100 >> Divákov: slučka. 465 00:20:26,100 --> 00:20:26,630 >> David J. Malan: slučka. 466 00:20:26,630 --> 00:20:28,463 A koľkokrát je že bude opakovať? 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 Divákov: [Prechodové VOICES] šesťkrát. 469 00:20:33,270 --> 00:20:34,830 David J. Malan: Nie šesťkrát. 470 00:20:34,830 --> 00:20:35,840 Divákov: 26 krát. 471 00:20:35,840 --> 00:20:36,560 David J. Malan: 26 krát. 472 00:20:36,560 --> 00:20:37,060 Jo, je mi ľúto. 473 00:20:37,060 --> 00:20:37,960 26 krát. 474 00:20:37,960 --> 00:20:38,460 Prečo? 475 00:20:38,460 --> 00:20:41,590 No, je to trochu divné, ale Začal som počítať od 65 rokov. 476 00:20:41,590 --> 00:20:43,300 Čo je divné, ale nie je zlé. 477 00:20:43,300 --> 00:20:44,610 To nie je zlé na to povedať. 478 00:20:44,610 --> 00:20:46,980 A robím to len preto, že, v tomto príklade, 479 00:20:46,980 --> 00:20:50,455 Som trochu predvídať že kapitál bol 65. 480 00:20:50,455 --> 00:20:53,330 Teraz to nie je najelegantnejší spôsob, ako to urobiť, aby druh pevný kód 481 00:20:53,330 --> 00:20:56,130 ezoterickej hodnoty, ktoré nikto sa stále očakáva, že mať na pamäti. 482 00:20:56,130 --> 00:21:00,155 >> Ale teraz, všimnite si, že som Pritom sa cez 65 a navyše 26. 483 00:21:00,155 --> 00:21:03,030 Vzhľadom k tomu, zrejme nemám ani nechcem robiť aritmetiku v mojej hlave. 484 00:21:03,030 --> 00:21:04,440 Tak som si nechal kompilátor to. 485 00:21:04,440 --> 00:21:08,600 Ale potom na každej slučky, každá iterácia slučky, ja zvyšovanie i. 486 00:21:08,600 --> 00:21:10,196 >> Takže teraz to vyzerá trochu záhadné. 487 00:21:10,196 --> 00:21:13,320 Ale mali by sme mať základné budovu bloky, s ktorými to pochopiť. 488 00:21:13,320 --> 00:21:15,510 % C je len zástupný symbol pre char. 489 00:21:15,510 --> 00:21:19,010 % Aj je zástupný symbol pre int. 490 00:21:19,010 --> 00:21:23,310 A ukázalo sa, že pri použití tejto Nová syntaxe, to okrúhlych zátvoriek, tak 491 00:21:23,310 --> 00:21:26,100 hovoriť, tak dátového typu vnútri zátvoriek, 492 00:21:26,100 --> 00:21:32,270 Môžem donútiť kompilátor na liečbu aj to je číslo, ale ako char. 493 00:21:32,270 --> 00:21:35,520 >> Tým mi ukazuje charakter ekvivalent tohto čísla. 494 00:21:35,520 --> 00:21:37,986 Teraz sem tento kód je do značnej miery zhodné. 495 00:21:37,986 --> 00:21:39,860 Len som chcel, aby Super explicitné skutočnosť, 496 00:21:39,860 --> 00:21:42,095 že som už od 97, ktorá je malé písmená. 497 00:21:42,095 --> 00:21:44,080 On sa cez 26 viac písmen. 498 00:21:44,080 --> 00:21:46,970 A ja doing-- znova liatie aj, aby som tak povedal. 499 00:21:46,970 --> 00:21:49,160 Alebo pretypovanie aj, aby som tak povedal. 500 00:21:49,160 --> 00:21:51,420 >> Z int na char. 501 00:21:51,420 --> 00:21:55,760 Takže konečným výsledkom bude, Úprimne povedané, informácie, už vieme. 502 00:21:55,760 --> 00:21:59,411 Chystám sa urobiť ascii-0 dot-- nie je dot c. 503 00:21:59,411 --> 00:22:02,160 Všimnite si, pravdepodobne robil to chyba, ako som to urobil omylom. 504 00:22:02,160 --> 00:22:03,820 Urobiť ASCII 0. 505 00:22:03,820 --> 00:22:06,090 Teraz budem robiť ./ascii-0. 506 00:22:06,090 --> 00:22:09,050 Budem priblížiť, a bohužiaľ to bude posúvať mimo obrazovku. 507 00:22:09,050 --> 00:22:15,060 Ale vidíme celú diagramu, kde mapy do 97, b mapy do 98, 508 00:22:15,060 --> 00:22:18,931 a ak budeme posúvať nahor ďalšie , Samozrejme, mapuje na 65. 509 00:22:18,931 --> 00:22:21,180 Takže je to len povedať, že čo sme boli kázne, 510 00:22:21,180 --> 00:22:25,310 je to ekvivalencie, je V skutočnosti tomu tak v skutočnosti. 511 00:22:25,310 --> 00:22:28,000 Tak rýchla zmena to. 512 00:22:28,000 --> 00:22:31,220 Dovoľte mi, aby som otvoriť ASCII 1.C. 513 00:22:31,220 --> 00:22:38,070 A všimnite si tento šikovný, triedenie z, objasnenie tohto. 514 00:22:38,070 --> 00:22:41,770 To je ascii-1.c, a Všimnite si tento šialený veci. 515 00:22:41,770 --> 00:22:45,120 >> A to naozaj dostane do srdca z toho, čo počítače robia. 516 00:22:45,120 --> 00:22:48,150 Aj napriek tomu, že my ľudia by nepočíta, pokiaľ ide o letters-- 517 00:22:48,150 --> 00:22:50,380 Nechcem začať premýšľať, v poriadku a potom b, 518 00:22:50,380 --> 00:22:52,590 a používať tie počítať fyzických objektov. 519 00:22:52,590 --> 00:22:58,680 Určite môžete povedať, že chcem, aby inicializovať nejakú premennú s názvom C-- 520 00:22:58,680 --> 00:23:03,220 ale nemohol som si to nazval anything-- takže c je inicializovaný kapitálu A. 521 00:23:03,220 --> 00:23:07,560 >> Pretože na konci dňa, počítače nie je jedno, čo ste skladovanie, 522 00:23:07,560 --> 00:23:10,170 je to len zaujíma, ako chcete prezentovať informácie. 523 00:23:10,170 --> 00:23:13,560 Ako chcete, aby sa počítač do vykladať tak, že vzor bitov? 524 00:23:13,560 --> 00:23:16,320 Takže to nie je niečo, čo som by vo všeobecnosti odporúčame robiť. 525 00:23:16,320 --> 00:23:19,500 Je to naozaj len príklad oznámiť, že môžete úplne 526 00:23:19,500 --> 00:23:22,049 inicializovať celé číslo k char. 527 00:23:22,049 --> 00:23:24,090 Vzhľadom k tomu, pod kapucňa na char, samozrejme, 528 00:23:24,090 --> 00:23:26,170 je len číslo od 0 do 255. 529 00:23:26,170 --> 00:23:28,540 >> Takže si určite dať to vnútri int. 530 00:23:28,540 --> 00:23:30,890 A čo to tiež ukazuje, že sme 531 00:23:30,890 --> 00:23:34,040 možno previesť z jedného typu na iný, tu, 532 00:23:34,040 --> 00:23:36,780 nakoniec tlač to isté. 533 00:23:36,780 --> 00:23:44,760 A v skutočnosti, to budem opraviť online-- bol chcel povedať, opäť tu. 534 00:23:44,760 --> 00:23:48,610 Dovoľte mi, aby som to vyčistiť on-line, a budeme pozri v on-line návode podľa potreby, 535 00:23:48,610 --> 00:23:50,280 to, čo bolo zamýšľané tam. 536 00:23:50,280 --> 00:23:50,960 >> OK. 537 00:23:50,960 --> 00:23:53,892 Takže posledný príklad sa zapojiť A je A a B a potom sme si 538 00:23:53,892 --> 00:23:54,850 vziať veci do zárezu. 539 00:23:54,850 --> 00:23:58,330 Takže s a b a c je v kapitalizácie 540 00:23:58,330 --> 00:24:01,560 a ich rovnocennosti, poďme pozrite sa na tomto príklade, tu. 541 00:24:01,560 --> 00:24:02,752 Ďalší príklad kódu. 542 00:24:02,752 --> 00:24:04,460 Budeme otvárať ten, ktorý je už bolo vykonané, a tak sme 543 00:24:04,460 --> 00:24:06,440 Nemusíte to písať všetko od nuly. 544 00:24:06,440 --> 00:24:09,420 >> A všimnite si v očakávaní sme pomocou viac záhlavia 545 00:24:09,420 --> 00:24:13,240 obrázkov, medzi ktorými je náš nový priateľ, string.h. 546 00:24:13,240 --> 00:24:15,597 Teraz to vyzerá, na prvý pohľad pohľad, trochu záhadné. 547 00:24:15,597 --> 00:24:18,180 Ale pozrime sa, či by sme nemohli uvažovať tým, čo sa tu deje. 548 00:24:18,180 --> 00:24:21,150 Najprv som si reťazec od užívateľa, a dal som tento reťazec v premennej 549 00:24:21,150 --> 00:24:22,286 s názvom. 550 00:24:22,286 --> 00:24:24,090 Kopírovať Vložiť pred rokom. 551 00:24:24,090 --> 00:24:27,250 V súlade 22, som zrejme robí presne to, čo 552 00:24:27,250 --> 00:24:30,760 Ja som pred chvíľou, som iterácie nad postavami s. 553 00:24:30,760 --> 00:24:34,780 >> A nové triky sú tu pomocou dĺžka reťazca, menšia optimalizácia 554 00:24:34,780 --> 00:24:37,930 ukladanie dĺžku reťazca v N, skôr než volanie znova strlen, 555 00:24:37,930 --> 00:24:38,850 a znovu a znovu. 556 00:24:38,850 --> 00:24:41,120 A len kontrolovať, že som je menšie ako n. 557 00:24:41,120 --> 00:24:43,330 A teraz, čo sa trochu zaujímavé. 558 00:24:43,330 --> 00:24:45,980 Ale je to len aplikácia z rovnakej nové myšlienky. 559 00:24:45,980 --> 00:24:48,470 Čo v angličtine robí s držiak aj reprezentovať? 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> Divákov: Počítanie každý znak [nepočuteľné]. 562 00:24:54,260 --> 00:24:55,926 >> David J. Malan: Počítanie každý znak. 563 00:24:55,926 --> 00:24:58,680 A ešte stručne, s držiak aj predstavujú to, čo? 564 00:24:58,680 --> 00:25:00,950 Povedali by ste, že. 565 00:25:00,950 --> 00:25:04,084 Nie aby vás na mieste tu. 566 00:25:04,084 --> 00:25:06,375 >> Divákov: Well-- 567 00:25:06,375 --> 00:25:09,500 David J. Malan: Takže v prípade, že slovo je-- ak reťazec je Zamyla, ktorý starts-- 568 00:25:09,500 --> 00:25:12,380 Divákov: --you riešiť znaky separately-- 569 00:25:12,380 --> 00:25:13,690 David J. Malan: Dobrý. 570 00:25:13,690 --> 00:25:14,190 Presne tak. 571 00:25:14,190 --> 00:25:17,940 Hranatá zátvorka notácie umožňuje prístup každý znak zvlášť, 572 00:25:17,940 --> 00:25:21,120 takže je držiak 0 bude Prvý znak v reťazci. 573 00:25:21,120 --> 00:25:24,110 Držiak s 1 bude druhý, a tak ďalej. 574 00:25:24,110 --> 00:25:28,050 Takže otázka, pýtam sa, tu, v tomto stave je to, čo? 575 00:25:28,050 --> 00:25:33,984 Je i'th charakter s Greater ako alebo rovnajúcu sa malé písmená? 576 00:25:33,984 --> 00:25:36,400 A čo to znamená, tu, s dvojitými ampersand? 577 00:25:36,400 --> 00:25:36,800 AUDIENCE (spoločne): a. 578 00:25:36,800 --> 00:25:37,210 David J. Malan: A. 579 00:25:37,210 --> 00:25:38,418 Je to ekvivalent k tomu. 580 00:25:38,418 --> 00:25:42,310 A nie je kľúčové slovo v jazyku C, musíte použitie, protivne, ampersand ampersand. 581 00:25:42,310 --> 00:25:47,520 A to, naopak, pýta sa s je i'th znak menšie alebo rovné 582 00:25:47,520 --> 00:25:49,030 na malé písmená z? 583 00:25:49,030 --> 00:25:52,440 A opäť, tu je miesto, kde pochopenie základnej 584 00:25:52,440 --> 00:25:54,550 realizácia Počítač má zmysel. 585 00:25:54,550 --> 00:25:57,330 Všimnite si, že aj keď mám dot dot dot tam, 586 00:25:57,330 --> 00:26:04,410 vyzerá to, až z malých písmen sú všetky susediace hodnoty až z 97 nahor. 587 00:26:04,410 --> 00:26:07,820 >> A to isté pre veľké písmena začínajúce na 65 rokov. 588 00:26:07,820 --> 00:26:10,410 Takže stánok s jedlom, a potom, je to v angličtine, 589 00:26:10,410 --> 00:26:12,760 Ako by ste opísali čo riadok 24 sa robí? 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 Jo? 592 00:26:16,728 --> 00:26:21,575 >> Divákov: Na 24 to kontroluje, či je každý znak je malá. 593 00:26:21,575 --> 00:26:24,700 David J. Malan: Je to overiť, či Každý znak je malé písmeno. 594 00:26:24,700 --> 00:26:28,590 Takže aj stručnejšie, je i'th charakter s malými písmenami? 595 00:26:28,590 --> 00:26:30,690 To je všetko, čo sme vyjadrenia tu logicky, 596 00:26:30,690 --> 00:26:33,750 trochu záhadne, ale nakoniec celkom priamočiaro. 597 00:26:33,750 --> 00:26:36,480 Je s to i'th znakov malými písmenami? 598 00:26:36,480 --> 00:26:40,130 >> Ak tomu tak je, a tu je miesto, kde sa veci trochu myseľ ohýbanie 599 00:26:40,130 --> 00:26:44,760 len na okamih, a ak áno, choďte dopredu a vytlačiť znak. 600 00:26:44,760 --> 00:26:47,360 Takže je to len zástupný symbol, ale to, čo postava? 601 00:26:47,360 --> 00:26:53,710 Prečo to robím y držiak aj mínus tento výraz tu? 602 00:26:53,710 --> 00:26:55,110 >> Tak zistíte tu vzor. 603 00:26:55,110 --> 00:26:57,380 Skutočné čísla nezáleží toľko. 604 00:26:57,380 --> 00:27:02,700 Ale všimnite si, že 97 je ako ďaleko od 65? 605 00:27:02,700 --> 00:27:03,560 >> Divákov: 32. 606 00:27:03,560 --> 00:27:04,480 >> David J. Malan: 32. 607 00:27:04,480 --> 00:27:06,890 Ako ďaleko je 98 z 66? 608 00:27:06,890 --> 00:27:07,740 >> Divákov: 32. 609 00:27:07,740 --> 00:27:09,890 >> David J. Malan: Malý c od veľkého C? 610 00:27:09,890 --> 00:27:10,420 32. 611 00:27:10,420 --> 00:27:14,550 Takže tam je 32 chmeľ od jedno písmeno do druhého. 612 00:27:14,550 --> 00:27:17,790 Takže úprimne povedané, mohol zjednodušiť tým, že. 613 00:27:17,790 --> 00:27:20,400 Ale potom som trochu ťažké kódovanie Táto nízka úroveň porozumenia 614 00:27:20,400 --> 00:27:21,740 že žiadny čitateľ je vždy bude rozumieť. 615 00:27:21,740 --> 00:27:25,080 Takže budem generalizovať ako som viem, že malé písmená sú väčšie. 616 00:27:25,080 --> 00:27:28,400 Viem, že písmená sú menšie hodnoty, ironicky. 617 00:27:28,400 --> 00:27:33,216 >> To je však skutočne ekvivalentná hovorí odpočítať 32 od držiaka s i. 618 00:27:33,216 --> 00:27:35,430 Takže v súvislosti s týmito listy, ak listu 619 00:27:35,430 --> 00:27:38,950 náhodou, malá a ja odpočítať 32, 620 00:27:38,950 --> 00:27:43,442 aký vplyv to má, matematicky, na malé písmená? 621 00:27:43,442 --> 00:27:44,400 Divákov: Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 David J. Malan: to zúročuje. 623 00:27:45,691 --> 00:27:48,440 A skutočne, to je dôvod, prečo naše program sa nazýva využiť nulu. 624 00:27:48,440 --> 00:27:51,590 Tento program buď ťažiace list, 625 00:27:51,590 --> 00:27:54,580 Po kontrole, či je naozaj malé písmeno. 626 00:27:54,580 --> 00:27:59,810 V opačnom prípade, v súlade 30, čo mám robiť, keď to nie je malé písmeno, že som 627 00:27:59,810 --> 00:28:02,852 pri pohľade na v určitom iterácie v slučke. 628 00:28:02,852 --> 00:28:03,890 Stačí ju vytlačiť. 629 00:28:03,890 --> 00:28:07,010 >> Takže sa nemusíte meniť veci to nie je ani malé písmená. 630 00:28:07,010 --> 00:28:10,790 Obmedziť sa na málo cez malú z. 631 00:28:10,790 --> 00:28:12,730 Teraz je to celkom tajomný. 632 00:28:12,730 --> 00:28:15,230 Ale na konci dňa, to je, ako sme sa raz za čas, 633 00:28:15,230 --> 00:28:16,460 musel vykonávať veci. 634 00:28:16,460 --> 00:28:19,780 Keby som namiesto toho otvoriť zarábať jeden, oh vďaka bohu. 635 00:28:19,780 --> 00:28:22,320 K dispozícii je funkcia zavolal na hornej, ktoré môžu 636 00:28:22,320 --> 00:28:25,410 robiť všetko, čo sme práve robili na pomerne nízkej úrovni. 637 00:28:25,410 --> 00:28:28,752 >> Teraz sa horná je zaujímavý pretože je deklarovaná v súbore, 638 00:28:28,752 --> 00:28:31,210 a tie by len vedieť kontrolou dokumentácie, 639 00:28:31,210 --> 00:28:35,730 alebo bolo povedané, povedzme, v triede, kde existuje, v súbore s názvom ctype.h. 640 00:28:35,730 --> 00:28:37,630 Takže to je ďalší nový priateľ náš. 641 00:28:37,630 --> 00:28:40,750 A horný robí presne to, čo jej názov napovedá. 642 00:28:40,750 --> 00:28:44,860 >> Môžete odovzdať ako argument, medzi Tieto zátvorky, niektorí charakter. 643 00:28:44,860 --> 00:28:48,390 Chystám sa prejsť v i'th charakteru S pomocou našej fantázie nový zápis 644 00:28:48,390 --> 00:28:49,870 zahŕňajúce hranatých zátvoriek. 645 00:28:49,870 --> 00:28:53,391 A hádajte, čo je návrat hodnota na hornej zrejme bude 646 00:28:53,391 --> 00:28:53,890 byť? 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 Veľké písmeno. 649 00:28:57,770 --> 00:28:58,620 Veľké písmeno. 650 00:28:58,620 --> 00:29:02,330 >> Takže keď som sa prejsť malými písmenami a, dúfajme, že z definície na hornej, 651 00:29:02,330 --> 00:29:05,600 že to bude návrat veľké písmená A. V opačnom prípade, 652 00:29:05,600 --> 00:29:08,590 ak to nie je malé písmeno v prvé miesto, len som ho vytlačiť. 653 00:29:08,590 --> 00:29:10,800 A naozaj si všimnite, Druhý priateľ. 654 00:29:10,800 --> 00:29:13,840 Nie je to len na hornej existuje, , Ale je menšia, čo 655 00:29:13,840 --> 00:29:16,200 vlastne odpovie, že otázka pre mňa. 656 00:29:16,200 --> 00:29:19,730 >> Teraz každý, kto napísal tieto veci, 10s rokov skôr, vieš čo? 657 00:29:19,730 --> 00:29:23,840 Realizované horné a znížiť pomocou kódu, ako je tento. 658 00:29:23,840 --> 00:29:27,270 Ale znovu, v súlade s Táto myšlienka oddeliť preč, 659 00:29:27,270 --> 00:29:29,190 druh, nižšia úroveň detaily implementácie. 660 00:29:29,190 --> 00:29:32,600 A stojí na ramenách ľudí ktorí prišli pred nami, pomocou funkcií 661 00:29:32,600 --> 00:29:36,300 ako na hornej a dolnej, ktorá tak nádherne, sú pekne 662 00:29:36,300 --> 00:29:40,190 menoval povedať, čo robia, je nádherný vzor prijať. 663 00:29:40,190 --> 00:29:44,040 >> Teraz sa ukazuje, že keď som čítal manuálová stránka pre, povedzme, na hornej, 664 00:29:44,040 --> 00:29:45,010 Aj niečo naučiť. 665 00:29:45,010 --> 00:29:46,890 Takže človek toupper. 666 00:29:46,890 --> 00:29:48,050 Je to trochu ohromujúce. 667 00:29:48,050 --> 00:29:51,110 Ale oznámenia, tu je to zmienka o hlavičkový súbor, ktorý by som mal použiť. 668 00:29:51,110 --> 00:29:54,460 Ako stranou, pretože toto je zavádzajúce, funkcia 669 00:29:54,460 --> 00:29:59,070 používa ints miesto znakov z dôvodu kontroly chýb. 670 00:29:59,070 --> 00:30:01,260 Ale budeme možno príde späť k tomu v budúcnosti. 671 00:30:01,260 --> 00:30:05,910 >> Ale nevšimol, tu, na hornej konvertitov písmeno c na veľké písmená, pokiaľ je to možné. 672 00:30:05,910 --> 00:30:07,674 Tak to je celkom jednoduché. 673 00:30:07,674 --> 00:30:09,340 A teraz buďme trochu konkrétnejší. 674 00:30:09,340 --> 00:30:12,750 Poďme sa pozrieť na časť muž strana pod návratovú hodnotu. 675 00:30:12,750 --> 00:30:15,420 Vrátená hodnota je to, že prevedené písmeno. 676 00:30:15,420 --> 00:30:18,690 Alebo C, v prípade, že prevod nebolo možné, 677 00:30:18,690 --> 00:30:20,250 kde c je pôvodný vstup. 678 00:30:20,250 --> 00:30:24,140 O ktorom viem, odtiaľ, z argument na hornej. 679 00:30:24,140 --> 00:30:25,780 >> Takže to, čo je stánok s jedlom to? 680 00:30:25,780 --> 00:30:28,060 Vrátená hodnota je to, že prevedené písmeno, 681 00:30:28,060 --> 00:30:32,110 alebo C, pôvodné písmeno, ak konverzie nebolo možné. 682 00:30:32,110 --> 00:30:36,460 Aké zlepšenia môžem teda aby do návrhu mojom kódu je? 683 00:30:36,460 --> 00:30:37,146 Jo? 684 00:30:37,146 --> 00:30:38,810 >> Divákov: Môžete odstrániť iný. 685 00:30:38,810 --> 00:30:40,810 David J. Malan: môžem odobrať vyhlásenie iného, 686 00:30:40,810 --> 00:30:42,510 a nie len príkaz else. 687 00:30:42,510 --> 00:30:44,150 >> Divákov: Môžete odstrániť [nepočuteľné]. 688 00:30:44,150 --> 00:30:46,310 >> David J. Malan: môžem odobrať celú vidlicu 689 00:30:46,310 --> 00:30:48,209 na ceste, ak úplne inde. 690 00:30:48,209 --> 00:30:50,250 Takže naozaj, dovoľte mi, aby som otvoriť Konečná verzia, 691 00:30:50,250 --> 00:30:55,540 zarábať-2 a všimnite si, ako, ak budete, sexy, kód je teraz dostáva, 692 00:30:55,540 --> 00:31:00,040 v tom, že som sa znížil z niektorých sedem alebo tak linky do len štyri, 693 00:31:00,040 --> 00:31:03,850 funkcie, ktoré som mal v úmysle jednoduchým volaním na hornej, 694 00:31:03,850 --> 00:31:09,410 odovzdaním s držiakom I a tlač von, s zástupný symbol% ​​C, 695 00:31:09,410 --> 00:31:11,090 že osobitný charakter. 696 00:31:11,090 --> 00:31:14,560 >> Teraz pravdepodobne, že ide o problém, alebo prinajmenšom riziko chyby, 697 00:31:14,560 --> 00:31:15,350 v tomto programe. 698 00:31:15,350 --> 00:31:18,200 Takže stačí, aby sa vrátil na skoršie stánok s jedlom, 699 00:31:18,200 --> 00:31:21,820 Čo by som mal asi tiež robiť v tento program, aby bolo viac robustný, 700 00:31:21,820 --> 00:31:24,974 tak, že neexistuje spôsob, ako to môže havárii, a to aj vo výnimočných prípadoch? 701 00:31:24,974 --> 00:31:26,390 Divákov: Uistite sa, že to nie je NULL. 702 00:31:26,390 --> 00:31:28,056 David J. Malan: Uistite sa, že to nie je NULL. 703 00:31:28,056 --> 00:31:31,030 Takže naozaj, aby to Super správne, mal by som niečo také, 704 00:31:31,030 --> 00:31:35,300 ak to nie je NULL, potom pokračovať a realizovať 705 00:31:35,300 --> 00:31:38,470 Tieto riadky kódu, ktoré Aj potom môžu zarážka takto, 706 00:31:38,470 --> 00:31:39,870 a potom dal v mojej blízkosti kríža. 707 00:31:39,870 --> 00:31:41,550 Tak dobrá previazanie dvoch myšlienok. 708 00:31:41,550 --> 00:31:42,429 Jo? 709 00:31:42,429 --> 00:31:44,470 Divákov: Mohli by ste použiť robiť, kým slučka, namiesto toho? 710 00:31:44,470 --> 00:31:47,270 David J. Malan: Mohol Ja si robiť, zatiaľ čo slučky? 711 00:31:47,270 --> 00:31:50,020 Divákov: --you chcete byť istý, že ste skutočne [nepočuteľné]. 712 00:31:50,020 --> 00:31:51,728 David J. Malan: Mohol Používate robiť, keď? 713 00:31:51,728 --> 00:31:52,450 Krátka odpoveď, no. 714 00:31:52,450 --> 00:31:54,700 Vzhľadom k tomu, že ste asi zaviesť ďalšie rohový prípad. 715 00:31:54,700 --> 00:31:56,660 Ak je reťazec nulovej dĺžky. 716 00:31:56,660 --> 00:31:59,600 Ak je napríklad, len som narazila Zadajte, bez toho aby sa písanie Zamyla. 717 00:31:59,600 --> 00:32:02,490 Budem ťa vrátiť aktuálne string, ako budeme nakoniec vidieť, 718 00:32:02,490 --> 00:32:03,780 , Ktorý má nulové znaky. 719 00:32:03,780 --> 00:32:05,630 Je to stále reťazec, je to proste super krátky. 720 00:32:05,630 --> 00:32:07,960 Ale ak používate robiť, keď, budete slepo 721 00:32:07,960 --> 00:32:10,050 pokúsiť sa urobiť niečo s rešpektovanie tohto reťazca, 722 00:32:10,050 --> 00:32:12,537 a nič sa tam. 723 00:32:12,537 --> 00:32:18,607 >> DIVÁKOV: No, ak ste to [nepočuteľné], zatiaľ čo s-- 724 00:32:18,607 --> 00:32:21,190 David J. Malan: Aha, udržať dostať reťazec od užívateľa. 725 00:32:21,190 --> 00:32:23,525 Takže krátka odpoveď, môžete mohol, a držať otravovať 726 00:32:23,525 --> 00:32:26,150 je, aby vám reťazec, ktorý je dostatočne krátky, aby sa zmestili do pamäte. 727 00:32:26,150 --> 00:32:26,700 Presne tak. 728 00:32:26,700 --> 00:32:27,630 Len som sa rozhodol sa. 729 00:32:27,630 --> 00:32:30,505 Ak tomu tak nie je, dajte mi reťazec I chcem, ja končím, dávam hore. 730 00:32:30,505 --> 00:32:33,260 Ale absolútne, za týmto účelom, môžete absolútne urobiť. 731 00:32:33,260 --> 00:32:37,500 >> Takže hlavičkové súbory knižnice, ktoré sme sa už zoznámili sa so to tu. 732 00:32:37,500 --> 00:32:41,550 Standard I / O, CS50.h, string.h, ctype.h, a tam sú skutočne iní. 733 00:32:41,550 --> 00:32:44,460 Niektorí z vás zistili, matematická knižnica v math.h. 734 00:32:44,460 --> 00:32:48,200 Ale dovoľte mi, aby som vám predstavil, teraz, tento zdroj, že zamestnanci CS50, Davin, 735 00:32:48,200 --> 00:32:50,630 a Rob a Gabe najmä dali dokopy. 736 00:32:50,630 --> 00:32:52,630 Že bude čoskoro spojiť na Webové stránky kurzu je. 737 00:32:52,630 --> 00:32:54,870 Hovorí sa CS50 referencie. 738 00:32:54,870 --> 00:32:58,230 >> Čo len aby vám rýchlo chuť na to, funguje nasledovne. 739 00:32:58,230 --> 00:33:00,740 Nechaj ma ísť do reference.cs50.net. 740 00:33:00,740 --> 00:33:02,990 Uvidíte na ľavej strane stranu ohromujúci zoznam 741 00:33:02,990 --> 00:33:04,595 funkcií, ktoré prichádzajú s cca. 742 00:33:04,595 --> 00:33:07,790 Ale keď ma to zaujíma, pre túto chvíľu, o niečom, ako je strlen, 743 00:33:07,790 --> 00:33:08,746 Aj to môžete písať tu. 744 00:33:08,746 --> 00:33:10,870 Filtruje sa ustanovuje zoznam len to, čo ma zaujíma. 745 00:33:10,870 --> 00:33:11,940 Chystám sa na neho. 746 00:33:11,940 --> 00:33:14,740 A teraz na ľavej strane, uvidíte, čo dúfame, 747 00:33:14,740 --> 00:33:18,290 je jednoduchšie, ľudský priateľské vysvetlenie, ako 748 00:33:18,290 --> 00:33:19,170 Táto funkcia funguje. 749 00:33:19,170 --> 00:33:20,600 >> Vráti dĺžku reťazca. 750 00:33:20,600 --> 00:33:24,060 Tu je stručné zhrnutie, tu je návod, ako použitie, pokiaľ ide o hlavičky súboru, 751 00:33:24,060 --> 00:33:27,430 a čo sa týka toho, čo funkcia vyzerá to, pokiaľ ide o jeho argumentov. 752 00:33:27,430 --> 00:33:30,250 A potom tu, vráti Dĺžka reťazca. 753 00:33:30,250 --> 00:33:34,280 Ale pre tých z vás pohodlnejšie, môžete skutočne na tlačidlo pohodlnejšie, 754 00:33:34,280 --> 00:33:37,070 a obsah tohto strana, teraz sa zmení 755 00:33:37,070 --> 00:33:41,660 ako predvolené hodnoty z toho, čo získate pomocou man stránke. 756 00:33:41,660 --> 00:33:44,100 >> Inými slovami, CS50 odkaz je zjednodušenie 757 00:33:44,100 --> 00:33:46,220 z manuálových stránok zo strany zamestnancov, pre študentov. 758 00:33:46,220 --> 00:33:49,320 Najmä tých menej pohodlné a medzi tým, takže si 759 00:33:49,320 --> 00:33:51,660 Nemusíte sa snažiť zabaliť vaša myseľ sa, úprimne povedané, 760 00:33:51,660 --> 00:33:55,030 niektoré docela mystický syntaxe a dokumentácie niekedy. 761 00:33:55,030 --> 00:33:57,650 >> Takže majte na pamäti, že v najbližších dňoch. 762 00:33:57,650 --> 00:33:59,560 Tak tu je opäť Zamyla. 763 00:33:59,560 --> 00:34:03,255 Poďme sa opýtať, ktorý je trochu ľudskejší prístup. 764 00:34:03,255 --> 00:34:05,380 Vďaka Chang, kto bol tlač viacerých slony 765 00:34:05,380 --> 00:34:07,090 nonstop za posledných pár dní. 766 00:34:07,090 --> 00:34:09,730 Máme príležitosť vyjadriť aspoň jeden z nich preč. 767 00:34:09,730 --> 00:34:13,239 Ak by sme sa mohli dostať len jeden dobrovoľník prísť až na kreslenie na obrazovke. 768 00:34:13,239 --> 00:34:14,530 A čo tu? 769 00:34:14,530 --> 00:34:15,340 >> Poď hore. 770 00:34:15,340 --> 00:34:16,720 Aké je vaše meno? 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 V poriadku. 774 00:34:18,259 --> 00:34:19,388 Alexi, poď hore. 775 00:34:19,388 --> 00:34:21,679 Chystáme sa vidieť svoje rukopis na obrazovke tu. 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 Tak jo, rád ťa spoznávam. 778 00:34:25,570 --> 00:34:26,429 >> ALEX: Nice si ťa spoznávam. 779 00:34:26,429 --> 00:34:27,512 >> David J. Malan: Dobre. 780 00:34:27,512 --> 00:34:28,969 Takže, super jednoduché cvičenie. 781 00:34:28,969 --> 00:34:31,440 Bar nie je vysoká, aby dostať slona dnes. 782 00:34:31,440 --> 00:34:33,439 Hráte úlohu getString. 783 00:34:33,439 --> 00:34:35,980 A ja budem len povedať, reťazec, ktorý ste dostali. 784 00:34:35,980 --> 00:34:38,080 A predpokladám, že vás, getString, boli povolaní. 785 00:34:38,080 --> 00:34:42,480 A človek, ako ja, má zadali Zamyla, Z-A-M-Y-L-A. 786 00:34:42,480 --> 00:34:45,650 Jednoducho ísť dopredu a písať Zamyla na obrazovke, ako by ste dostali to 787 00:34:45,650 --> 00:34:47,250 a uložené niekde v pamäti. 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> Ponecháva priestor pre to, čo bude niekoľko ďalšie words-- to je v poriadku, pokračuj. 790 00:34:55,570 --> 00:34:59,620 >> [SMIECH] 791 00:34:59,620 --> 00:35:00,800 >> Takže Zamyla, Výborný. 792 00:35:00,800 --> 00:35:04,880 Takže predpokladám, že vás, getString, sa ozval znova. 793 00:35:04,880 --> 00:35:09,350 A preto som vám, u klávesnica, pod iným názvom, Belinda. 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 V poriadku. 796 00:35:18,060 --> 00:35:22,380 A teraz nabudúce getString je volal som písať niečo ako Gabe, 797 00:35:22,380 --> 00:35:27,560 G-A-B-E. Ste naozaj užívať na srdcové pamäte s náhodným prístupom. 798 00:35:27,560 --> 00:35:29,631 Ktorá je kresba všetko úplne náhodne. 799 00:35:29,631 --> 00:35:30,130 OK. 800 00:35:30,130 --> 00:35:31,104 >> [SMIECH] 801 00:35:31,104 --> 00:35:32,520 ALEX: Ospravedlňujem sa môj rukopis je zlé. 802 00:35:32,520 --> 00:35:33,770 David J. Malan: Nie, to je v poriadku. 803 00:35:33,770 --> 00:35:40,480 A ako je to s Robom, R-O-B. OK. 804 00:35:40,480 --> 00:35:41,020 Dobre. 805 00:35:41,020 --> 00:35:43,853 Tak som sa vás predvídať by druh ležal veci týmto spôsobom. 806 00:35:43,853 --> 00:35:45,020 Ale môžeme túto prácu. 807 00:35:45,020 --> 00:35:48,810 Tak ako sa vám ísť o ktorú sa z týchto znakov v pamäti? 808 00:35:48,810 --> 00:35:51,310 Inými slovami, ak si myslíme, že Tento obdĺžnikový čierna obrazovka 809 00:35:51,310 --> 00:35:53,550 ako zastupujúci počítača RAM alebo pamäti. 810 00:35:53,550 --> 00:35:55,850 >> A pripomínajú, že RAM je len celá partia bajtov, 811 00:35:55,850 --> 00:35:57,480 a bytoch je celá banda bitov. 812 00:35:57,480 --> 00:35:59,350 A bity sú nejakým spôsobom vykonané, všeobecne 813 00:35:59,350 --> 00:36:01,119 s nejakou formou elektrickej energie v hardvéri. 814 00:36:01,119 --> 00:36:03,160 Tak to je druh vrstvenie sme hovorili o 815 00:36:03,160 --> 00:36:04,510 a teraz je možné brať ako samozrejmosť. 816 00:36:04,510 --> 00:36:07,020 Ako ste ísť o rozhodovanie o tom, kam napísať 817 00:36:07,020 --> 00:36:11,634 Rob proti Gabe proti Belinda proti Zamyla? 818 00:36:11,634 --> 00:36:14,020 >> ALEX: Len som to urobil v nariadiť, aby si mi to povedala. 819 00:36:14,020 --> 00:36:15,650 >> David J. Malan: A to je pravda. 820 00:36:15,650 --> 00:36:20,100 Ale to, čo riadi, kam umiestniť Belindina meno a Gabe meno? 821 00:36:20,100 --> 00:36:20,764 >> ALEX: Nič? 822 00:36:20,764 --> 00:36:22,930 David J. Malan: [smeje sa] Tak to funguje, je to v poriadku. 823 00:36:22,930 --> 00:36:25,290 Takže počítače sú málo poriadnejšia než to. 824 00:36:25,290 --> 00:36:29,000 A tak keď sme implement-- zostať len na moment-- keď sme vlastne 825 00:36:29,000 --> 00:36:31,470 zaviesť niečo ako getString v počítači, 826 00:36:31,470 --> 00:36:34,480 Zamyla by mohli byť stanovené do značnej miery ako si to urobil na obrazovke, tam. 827 00:36:34,480 --> 00:36:36,660 >> A čo je kľúčom k všimnete tu to, čo urobil Alex, 828 00:36:36,660 --> 00:36:40,260 je, že je tak trochu vymedzenie medzi každou z týchto slov, že? 829 00:36:40,260 --> 00:36:46,580 Vy ste to napísať Z - M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- 830 00:36:46,580 --> 00:36:49,740 Inými slovami, tam je nejaký druh z vymedzenia, ktoré sa zdá byť, 831 00:36:49,740 --> 00:36:52,370 druh, náhodné rozteč Medzi týmito rôznymi slovami. 832 00:36:52,370 --> 00:36:54,120 Ale to je dobre, pretože my ľudia môžu teraz 833 00:36:54,120 --> 00:36:56,470 predstaviť, že sa jedná štyri rôzne reťazca. 834 00:36:56,470 --> 00:36:59,540 Nie je to len jedna sekvencia hŕbu postáv. 835 00:36:59,540 --> 00:37:04,190 Takže počítač, a potom, zatiaľ, môže trvať reťazec ako Zamyla, 836 00:37:04,190 --> 00:37:07,220 dať každej z týchto písmen vnútri bajtu pamäte. 837 00:37:07,220 --> 00:37:10,400 Ale to číslo je oveľa väčšie, Samozrejme, ako šesť znakov. 838 00:37:10,400 --> 00:37:11,690 >> Je tu celá banda RAM. 839 00:37:11,690 --> 00:37:15,330 A tak ďalej, to mriežka krabíc sa deje 840 00:37:15,330 --> 00:37:17,560 reprezentovať to, čo Alex len robil tu na obrazovke. 841 00:37:17,560 --> 00:37:20,937 A teraz, Alex, môžeme vám ponúknuť modrá alebo oranžová slon z Chang. 842 00:37:20,937 --> 00:37:22,270 ALEX: Vezmem modrý slon. 843 00:37:22,270 --> 00:37:23,120 David J. Malan: modrý slon. 844 00:37:23,120 --> 00:37:25,580 Tak veľký potlesk, keby sme mohli, Alexa tu. 845 00:37:25,580 --> 00:37:26,100 >> [APPLAUSE] 846 00:37:26,100 --> 00:37:26,766 >> ALEX: Ďakujem. 847 00:37:26,766 --> 00:37:28,820 David J. Malan: Ďakujem. 848 00:37:28,820 --> 00:37:36,230 Tak je stánok s jedlom, ktoré, aj keď vzor trochu menili v priebehu času tu 849 00:37:36,230 --> 00:37:40,430 na doske, tam bol tento vymedzenie medzi jednotlivými reťazcami 850 00:37:40,430 --> 00:37:42,610 že Alex má pre nás. 851 00:37:42,610 --> 00:37:45,230 Teraz počítače, úprimne povedané, mohol urobiť to isté. 852 00:37:45,230 --> 00:37:48,210 Mohli druh PLOP reťazca kdekoľvek v pamäti RAM. 853 00:37:48,210 --> 00:37:50,710 Až tu, tu, tu, tu dole. 854 00:37:50,710 --> 00:37:52,020 >> Mohli by robiť presne to. 855 00:37:52,020 --> 00:37:54,280 Ale, samozrejme, to je asi nie je najlepší plánovania. 856 00:37:54,280 --> 00:37:54,780 Je to tak? 857 00:37:54,780 --> 00:37:57,340 Ak som si žiada Alex sa sa mená, pravdepodobne, že by 858 00:37:57,340 --> 00:38:01,370 dať ešte viac tu, možno až tu, tu, tu, nakoniec 859 00:38:01,370 --> 00:38:02,211 sem. 860 00:38:02,211 --> 00:38:05,460 Ale s trochu viac plánovania, iste, môžeme položiť veci čistejšie. 861 00:38:05,460 --> 00:38:07,350 A vskutku, to je to, čo počítač robí. 862 00:38:07,350 --> 00:38:10,720 >> Ale úlovok je, že v prípade, že ďalší reťazec dostanem 863 00:38:10,720 --> 00:38:14,050 po Zamyla je niečo, čo ako Belinda, 864 00:38:14,050 --> 00:38:17,929 navrhnúť, kde by sme mohli napísať písmeno b s ohľadom na túto mriežku? 865 00:38:17,929 --> 00:38:18,720 Kam by ste išli? 866 00:38:18,720 --> 00:38:21,480 Na pravej strane a, pod z, pod A? 867 00:38:21,480 --> 00:38:23,204 Čo by vaše prvé inštinkt je? 868 00:38:23,204 --> 00:38:24,120 Divákov: Pod z. 869 00:38:24,120 --> 00:38:25,100 David J. Malan: Takže pod z. 870 00:38:25,100 --> 00:38:26,530 A to je dosť jednoduché, že? 871 00:38:26,530 --> 00:38:29,321 Je to celkom pekné, to je to, čo robíme na klávesnici, keď stlačíte klávesu Enter, 872 00:38:29,321 --> 00:38:31,770 alebo e-mail pri vytváraní zoznam s odrážkami vecí. 873 00:38:31,770 --> 00:38:34,310 Ale realita je, že počítače sa snaží byť efektívnejšie, 874 00:38:34,310 --> 00:38:37,170 a napchať rozhodne toľko dáta do pamäte, ako je to možné, 875 00:38:37,170 --> 00:38:38,890 takže nemusíte strácať bajtov. 876 00:38:38,890 --> 00:38:41,545 Takže nemusíte strácať akejkoľvek obrazovky nehnuteľností. 877 00:38:41,545 --> 00:38:44,170 A problém však je, že ak budeme doslova dal list 878 00:38:44,170 --> 00:38:49,940 b potom, ako sa budeme vedieť, kde Zamyla meno končí 879 00:38:49,940 --> 00:38:51,840 a Belinda meno začína? 880 00:38:51,840 --> 00:38:55,270 Takže ste pre človeka práve navrhla, dobre, stlačte klávesu Enter, v podstate. 881 00:38:55,270 --> 00:38:56,410 Daj to dole. 882 00:38:56,410 --> 00:38:59,750 Alebo dokonca rovnako ako Alex, stačí začať písať ďalší názov pod predchádzajúce, 883 00:38:59,750 --> 00:39:01,583 a ďalej, že jeden, a potom pod týmto jeden. 884 00:39:01,583 --> 00:39:02,510 To je vizuálny podnet. 885 00:39:02,510 --> 00:39:05,960 >> Počítače majú ďalšie vizuálny podnet, ale je to trochu stručnejší. 886 00:39:05,960 --> 00:39:07,840 Je to funky charakter. 887 00:39:07,840 --> 00:39:11,890 Lomítko 0, čo je možno pripomínajúce obrátené lomítko n, 888 00:39:11,890 --> 00:39:12,640 a tak ďalej, sa. 889 00:39:12,640 --> 00:39:14,120 Špeciálny escape sekvencie. 890 00:39:14,120 --> 00:39:19,120 Spätné lomítko 0 je spôsob, ako čo predstavuje osem nula bitov v rade. 891 00:39:19,120 --> 00:39:22,000 0000 0000. 892 00:39:22,000 --> 00:39:26,130 >> Spôsob, ako vyjadriť, že nie je hit číslo nula na klávesnici, 893 00:39:26,130 --> 00:39:28,140 pretože v skutočnosti, že je ASCII char. 894 00:39:28,140 --> 00:39:30,990 Vyzerá to, že čísla, ale je vlastne desatinné číslo 895 00:39:30,990 --> 00:39:35,910 ktorý predstavuje obežník glyph, kruhový písmo. 896 00:39:35,910 --> 00:39:38,410 Medzitým, spätné lomítko Nula znamená, doslova 897 00:39:38,410 --> 00:39:40,700 dal osem nula bajtov tu pre mňa. 898 00:39:40,700 --> 00:39:42,136 >> Tak toto je trochu arbitrárny. 899 00:39:42,136 --> 00:39:44,260 Mohli sme použiť žiadny vzor bitov, ale svet 900 00:39:44,260 --> 00:39:46,610 rozhodla o niekoľko rokov pred, že predstavujú 901 00:39:46,610 --> 00:39:49,710 koniec reťazca v pamäti, len dať veľa núl. 902 00:39:49,710 --> 00:39:51,000 Vzhľadom k tomu, môžeme zistiť, že. 903 00:39:51,000 --> 00:39:54,790 Teraz to znamená, že žiadny list abeceda môže byť reprezentovaný nulami. 904 00:39:54,790 --> 00:39:58,480 >> Ale to je v poriadku, sme už videli že sme použili 65 o až v 97 nahor. 905 00:39:58,480 --> 00:40:00,290 Sme nemali nikam takmer na samé nuly. 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 Takže Belinda v pamäti počítača je vlastne ísť sem. 908 00:40:06,540 --> 00:40:09,764 Ja som nakreslil v žltej len k tomu našu pozornosť. 909 00:40:09,764 --> 00:40:11,680 A oznámenia, taky to je úplne ľubovoľné. 910 00:40:11,680 --> 00:40:12,680 Ja som nakreslil ako mriežka. 911 00:40:12,680 --> 00:40:14,460 Ako RAM je len nejaký fyzický objekt. 912 00:40:14,460 --> 00:40:17,300 Nemusí to nutne mať riadky a stĺpce, sám o sebe. 913 00:40:17,300 --> 00:40:20,490 Je to len má veľa bajtov implementované v hardvéru nejako. 914 00:40:20,490 --> 00:40:22,817 Ale ak po Belinda I zadali Gabe menom, 915 00:40:22,817 --> 00:40:25,650 on skončí tu v pamäti, a keď som napísal v Daven menom, 916 00:40:25,650 --> 00:40:27,316 Napríklad, on skončí tu. 917 00:40:27,316 --> 00:40:29,310 A môžem aj naďalej napísať aj viacej mien. 918 00:40:29,310 --> 00:40:32,100 >> Bohužiaľ, keď sa pokúsim napísať super dlhý názov, 919 00:40:32,100 --> 00:40:33,730 Možno nakoniec k vyčerpaniu pamäte. 920 00:40:33,730 --> 00:40:37,810 V takom prípade je getString bude vrátiť NULL, ako sme povedali. 921 00:40:37,810 --> 00:40:41,720 Ale našťastie, aspoň v tejto vizuálnej tu sme sa nedostali tak ďaleko. 922 00:40:41,720 --> 00:40:45,860 >> Čo je pekné je, že teraz to Všeobecná myšlienka liečenie veci 923 00:40:45,860 --> 00:40:49,720 ako v krabiciach je zástupca rys C 924 00:40:49,720 --> 00:40:52,690 a mnoho jazykov, známy ako pole. 925 00:40:52,690 --> 00:40:55,490 Pole je iný typ dát. 926 00:40:55,490 --> 00:40:57,380 Je to dátová štruktúra, ak chcete. 927 00:40:57,380 --> 00:41:01,160 Štruktúra v zmysle toho naozaj, druh, vyzerá ako krabica, aspoň 928 00:41:01,160 --> 00:41:02,320 vo svojej mysli. 929 00:41:02,320 --> 00:41:09,680 Pole je súvislá postupnosť rovnakých dátových typov, 930 00:41:09,680 --> 00:41:11,330 chrbtom k sebe k sebe k sebe. 931 00:41:11,330 --> 00:41:14,720 >> Takže reťazec, v iných slova, je pole znakov. 932 00:41:14,720 --> 00:41:16,120 Rad znakov. 933 00:41:16,120 --> 00:41:19,070 Ale ukazuje sa, môžete mať polia hrozna vecí. 934 00:41:19,070 --> 00:41:21,870 V skutočnosti, môžeme dať aj čísla v poli. 935 00:41:21,870 --> 00:41:23,920 Takže forme, v ktorej ideme na začiatok 936 00:41:23,920 --> 00:41:26,590 prehlasuje, tieto dáta štruktúra známa ako maticu 937 00:41:26,590 --> 00:41:28,250 bude tiež používať hranaté zátvorky. 938 00:41:28,250 --> 00:41:31,500 Ale tieto hranaté zátvorky budú majú rôzny význam v tomto kontexte. 939 00:41:31,500 --> 00:41:33,450 >> A nech sa na to takto. 940 00:41:33,450 --> 00:41:36,780 Predstavme si, že som otvoril do nového súboru tu. 941 00:41:36,780 --> 00:41:38,535 A ja som uložiť ako ages.c. 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 A ja budem uložiť to v mojej zložke tu. 944 00:41:43,470 --> 00:41:46,130 A teraz budem pokračovať a začnite písať niečo 945 00:41:46,130 --> 00:41:53,940 ako patrí CS50.h, patrí stdio.h, int main prázdnotu. 946 00:41:53,940 --> 00:41:57,370 A potom vnútri tu, chcem najprv mať int s názvom veku. 947 00:41:57,370 --> 00:42:01,371 >> A ja budem používať to, aby si int od užívateľa na jeho veku. 948 00:42:01,371 --> 00:42:04,620 Ale tento program je určený pre použitie viac ľudí, z akéhokoľvek kontextu. 949 00:42:04,620 --> 00:42:05,490 Mám rad ľudí. 950 00:42:05,490 --> 00:42:08,281 Všetky z nich majú písať vo svojich vek možno nejaký, ja neviem, 951 00:42:08,281 --> 00:42:10,530 súťaže alebo podujatia , Že som prišiel na. 952 00:42:10,530 --> 00:42:13,030 Takže ďalší človek, som Potrebujem ďalšie premenné. 953 00:42:13,030 --> 00:42:15,790 >> Pretože keď som to vek dostane vezmi_int, to je 954 00:42:15,790 --> 00:42:18,500 ísť na handry, alebo prepísať vek predchádzajúceho osoby. 955 00:42:18,500 --> 00:42:19,760 Takže to nie je dobré. 956 00:42:19,760 --> 00:42:21,790 Takže môj prvý inštinkt môže byť, oh, všetko v poriadku, 957 00:42:21,790 --> 00:42:26,260 keď chcem získať viac ľudí'S ages-- hovorme túto age1, 958 00:42:26,260 --> 00:42:31,280 int age2 dostane int, int Age3 dostane vezmi_int. 959 00:42:31,280 --> 00:42:35,340 A teraz budem používať nejaký pseudokód kód tu. 960 00:42:35,340 --> 00:42:37,679 >> Urobte niečo s tými číslami. 961 00:42:37,679 --> 00:42:40,470 Necháme na ďalší deň, čo robíme tam, pretože sme len 962 00:42:40,470 --> 00:42:44,200 starostlivosť o chvíľu o age1, age2, Age3. 963 00:42:44,200 --> 00:42:46,450 Bohužiaľ, akonáhle som skompilovať tento program 964 00:42:46,450 --> 00:42:51,140 a dať ju do prednej časti skutočných užívateľov, čo je zásadne zlý tvar 965 00:42:51,140 --> 00:42:53,890 rozhodnutie, ktoré som Zdá sa, že urobil? 966 00:42:53,890 --> 00:42:54,624 Jo? 967 00:42:54,624 --> 00:42:55,499 Divákov: [nepočuteľné] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 David J. Malan: Áno, Ani som sa snažil 970 00:42:59,820 --> 00:43:02,028 prísť na to, ako veľa vekov to vlastne zaujíma? 971 00:43:02,028 --> 00:43:05,380 Ak mám menej ako traja ľudia tu, a teda menej ako tri vekové kategórie, 972 00:43:05,380 --> 00:43:07,260 Som stále slepo očakával tri. 973 00:43:07,260 --> 00:43:08,720 Boh chráň, štyria ľudia objavia. 974 00:43:08,720 --> 00:43:10,990 Môj program jednoducho nebude ani podporovať ich. 975 00:43:10,990 --> 00:43:13,280 >> A tak to, dlhý príbeh Stručne povedané, je to dobrý zvyk. 976 00:43:13,280 --> 00:43:13,780 Je to tak? 977 00:43:13,780 --> 00:43:16,530 Bol som v podstate kopírovanie a vloženie kódu a len ladenie 978 00:43:16,530 --> 00:43:17,430 názvy premenných. 979 00:43:17,430 --> 00:43:22,410 A môj bože, keby ste mali, nie tri veku, ale 10 alebo 100, alebo dokonca 6500 980 00:43:22,410 --> 00:43:23,820 vysokoškoláci, napríklad. 981 00:43:23,820 --> 00:43:26,950 To nebude zvlášť elegantný kód, alebo udržateľné. 982 00:43:26,950 --> 00:43:29,200 Budeš musieť Zmeňte program zakaždým 983 00:43:29,200 --> 00:43:30,760 Váš Počet osôb zmien. 984 00:43:30,760 --> 00:43:35,090 >> Takže našťastie, v našej aktuálnej ages.c súbor pre dnešok, 985 00:43:35,090 --> 00:43:36,970 Máme viac šikovné riešenie. 986 00:43:36,970 --> 00:43:39,800 Po prvé, ja idem si požičať konštrukciu sme použili niekoľkokrát, 987 00:43:39,800 --> 00:43:43,744 to robiť, zatiaľ čo slučky, aby si počet ľudí v miestnosti. 988 00:43:43,744 --> 00:43:46,910 Idem len obťažovať užívateľa, znova a znovu, kým on alebo ona mi dáva 989 00:43:46,910 --> 00:43:49,260 hodnota n, ktoré je kladné celé číslo. 990 00:43:49,260 --> 00:43:51,590 >> Mohol som použiť, posledný čas sa dostať pozitívne int. 991 00:43:51,590 --> 00:43:53,720 Ale my nemáme, že pre skutočné, tak som išiel dopredu 992 00:43:53,720 --> 00:43:55,660 a znovu realizovať túto myšlienku. 993 00:43:55,660 --> 00:43:58,410 A teraz tu dole, to je nový trik. 994 00:43:58,410 --> 00:44:02,260 V súlade 27, ako komentáre v riadku 26 naznačuje, 995 00:44:02,260 --> 00:44:05,180 deklarovať pole, v ktorom uložiť veku každého. 996 00:44:05,180 --> 00:44:09,320 >> Takže ak sa chcete dostať, a nie jeden int, nie dva ints, ale celá partia ints. 997 00:44:09,320 --> 00:44:13,800 Konkrétne n celé čísla, boli n mohlo byť tri, môže byť 100, môže byť 1000. 998 00:44:13,800 --> 00:44:17,570 Syntax, jednoducho, je povedzme, aký typ dát chcete? 999 00:44:17,570 --> 00:44:19,620 Čo chcete volať že kus pamäte? 1000 00:44:19,620 --> 00:44:23,530 Čo chcete volať do siete že vyzerá takto obrazne? 1001 00:44:23,530 --> 00:44:27,700 >> A v zátvorke tu, hovoríš ako veľký chcete poľa byť. 1002 00:44:27,700 --> 00:44:30,450 A tak skôr, keď som povedal, že Syntax je tu trochu iný, 1003 00:44:30,450 --> 00:44:33,614 sme stále pomocou hranatých zátvoriek, ale keď som vyhlásil poľa, 1004 00:44:33,614 --> 00:44:35,530 počet vnútro Hranaté zátvorky prostriedky 1005 00:44:35,530 --> 00:44:37,610 ako veľký chcete poľa byť. 1006 00:44:37,610 --> 00:44:42,490 >> Naproti tomu, keď sme používali s držiak aj pred chvíľou, to, reťazec, 1007 00:44:42,490 --> 00:44:46,820 je skutočne rad znakov, ale aj keď nie ste deklarovanie premennej, 1008 00:44:46,820 --> 00:44:49,760 ako sa toto kľúčové slovo tu, ste jednoducho dostať 1009 00:44:49,760 --> 00:44:54,280 špecifický index, špecifický prvok z tohto poľa. 1010 00:44:54,280 --> 00:44:57,090 Akonáhle vieme, že ostatné to je jednoduché. 1011 00:44:57,090 --> 00:45:00,765 Ak sa objavia nové ja prvýkrát bude na vytlačenie čo je vek osoby čísla i. 1012 00:45:00,765 --> 00:45:03,890 Tam, kde som len povedať, osoba číslo jedna, osoba číslo dva, osoba číslo tri. 1013 00:45:03,890 --> 00:45:06,306 >> A ja som len robil aritmetiku, tak, že rovnako ako normálny ľudia, 1014 00:45:06,306 --> 00:45:09,030 počítame od jedného pre tento programu, a to od nuly. 1015 00:45:09,030 --> 00:45:13,620 Potom som zavolať vezmi_int, ale uložiť odpoveď vo veku bracketing i. 1016 00:45:13,620 --> 00:45:16,610 Čo je i'th vek v poli. 1017 00:45:16,610 --> 00:45:21,640 Takže zatiaľ čo poslednej dobe sme boli liečení Tieto boxy sú znaky pre Zamyla menom, 1018 00:45:21,640 --> 00:45:22,490 a ďalšie. 1019 00:45:22,490 --> 00:45:26,530 Teraz, tieto krabice predstavujú 32 bitov, alebo štyri bajty 1020 00:45:26,530 --> 00:45:29,510 v ktorých je možné uložiť int, int, int. 1021 00:45:29,510 --> 00:45:31,890 Z ktorých všetky, opäť, sú rovnakého dátového typu. 1022 00:45:31,890 --> 00:45:33,890 >> Teraz robím niečo hlúpe, ako čas ubieha, len 1023 00:45:33,890 --> 00:45:35,510 ospravedlniť písania tohto programu. 1024 00:45:35,510 --> 00:45:40,050 A potom tu dole, som zase opakovať cez pole hovorí, odo dneška za rok, 1025 00:45:40,050 --> 00:45:43,090 osoba číslo jedna vôľa niečo rokov. 1026 00:45:43,090 --> 00:45:45,010 A prísť na to, že math-- Myslím, že to 1027 00:45:45,010 --> 00:45:49,260 nie je príliš zložité arithmetic-- Len som pridať jeden ich veku. 1028 00:45:49,260 --> 00:45:51,240 Stačí dokázať, opäť to. 1029 00:45:51,240 --> 00:45:57,910 >> Rovnako ako môžem index do reťazca, s, Takže môžem index do poľa vekov, 1030 00:45:57,910 --> 00:45:59,950 takhle tam. 1031 00:45:59,950 --> 00:46:03,340 Takže tam, kde to bude možné, že nás? 1032 00:46:03,340 --> 00:46:07,070 Tak uvidíme, nakoniec, pár vecí, ktoré v najbližších dňoch. 1033 00:46:07,070 --> 00:46:09,510 Jeden, celú tú dobu, kedy písanie vlastných programov, 1034 00:46:09,510 --> 00:46:11,239 ako je Mario, chamtivý, úveru. 1035 00:46:11,239 --> 00:46:13,780 Boli ste písať názov program a stlačením klávesu Enter. 1036 00:46:13,780 --> 00:46:15,610 A potom sa dostať vstup používateľa. 1037 00:46:15,610 --> 00:46:18,137 >> S getString, vezmi_int, getLongLong, alebo podobne. 1038 00:46:18,137 --> 00:46:20,720 Ale ukazuje sa, že C podpery niečo, čo nazýva príkazový riadok 1039 00:46:20,720 --> 00:46:25,740 argumenty, ktoré nás bude nechať v skutočnosti sa na slová, ktoré zadáte, 1040 00:46:25,740 --> 00:46:28,570 na blikajúce riadku za menom vášho programu. 1041 00:46:28,570 --> 00:46:31,430 >> Takže v najbližších dňoch, vám mohol písať niečo ako Caesar, 1042 00:46:31,430 --> 00:46:34,950 alebo ./caesar číslo 13, neskôr. 1043 00:46:34,950 --> 00:46:36,070 Uvidíme, ako to funguje. 1044 00:46:36,070 --> 00:46:37,550 Pretože v skutočnosti, v problém nastaviť dva, my sme 1045 00:46:37,550 --> 00:46:39,383 ťa predstaviť aby ešte niečo 1046 00:46:39,383 --> 00:46:42,360 pripomína Ralphie je napadnúť skôr kartografia. 1047 00:46:42,360 --> 00:46:43,970 Umenie zakódovanie informácií. 1048 00:46:43,970 --> 00:46:46,660 To v skutočnosti, je veľmi pripomína, čo Ralphie urobil. 1049 00:46:46,660 --> 00:46:51,380 >> Toto je príklad šifrovanie algoritmus nazvaný ROT13, R-O-T 13. 1050 00:46:51,380 --> 00:46:54,910 Čo jednoducho znamená otočiť písmená v abecede 13 miest. 1051 00:46:54,910 --> 00:46:58,309 A ak to urobíte, uvidíte teraz čo je snáď známa frázy. 1052 00:46:58,309 --> 00:47:01,100 Ale spôsob, akým budeme používať Táto, v konečnom dôsledku, je všeobecne. 1053 00:47:01,100 --> 00:47:04,390 >> V P set dva, v štandardnej verzii, budete realizovať niekoľko šifier, 1054 00:47:04,390 --> 00:47:06,720 jeden s názvom Caesar, jeden s názvom Vigener. 1055 00:47:06,720 --> 00:47:10,090 Obaja sú rotačné šifry, v tom, že sa nejako 1056 00:47:10,090 --> 00:47:11,826 zase jeden list na iné písmeno. 1057 00:47:11,826 --> 00:47:12,950 A Caesar je super jednoduché. 1058 00:47:12,950 --> 00:47:16,220 Môžete pridať jeden, pridajte 13, alebo nejaké číslo až do 26. 1059 00:47:16,220 --> 00:47:19,570 Vigener robí, že na jedno písmeno základ. 1060 00:47:19,570 --> 00:47:22,140 Takže Vigener, ako uvidíte v spec, je bezpečnejšie. 1061 00:47:22,140 --> 00:47:24,973 >> Ale na konci dňa, čo budete zavádzanie a P nastaviť dva, 1062 00:47:24,973 --> 00:47:29,050 je to kľúč, ktorý používate obaja pre šifrovanie a dešifrovanie. 1063 00:47:29,050 --> 00:47:32,160 S odkazom na procese sústruženie obyčajný text, niektoré pôvodné správy, 1064 00:47:32,160 --> 00:47:34,490 do Cypher textu, ktorý je niečo, čo šifrovaná. 1065 00:47:34,490 --> 00:47:36,220 A potom ju znova dešifrovanie. 1066 00:47:36,220 --> 00:47:38,119 >> V hacker vydaní, Medzitým, budete 1067 00:47:38,119 --> 00:47:40,660 za úlohu niečo podobné v duchu, kde budeme vám 1068 00:47:40,660 --> 00:47:44,610 súbor, z typického Linux, alebo Mac alebo Unix počítač s názvom Etsy 1069 00:47:44,610 --> 00:47:47,800 heslo, ktoré obsahuje jeden celok banda používateľských mien a hesiel. 1070 00:47:47,800 --> 00:47:50,932 A tie heslá majú všetky bolo zakódované, alebo hash, 1071 00:47:50,932 --> 00:47:53,140 aby som tak povedal, presnejšie ako uvidíte v špec. 1072 00:47:53,140 --> 00:47:57,090 >> A hacker vydanie bude výzvou ste sa pri vstupnej takto, 1073 00:47:57,090 --> 00:47:58,800 a praskanie heslo. 1074 00:47:58,800 --> 00:48:02,590 To znamená, že prísť na to, čo je heslo Ľudský vlastne bol. 1075 00:48:02,590 --> 00:48:05,570 Vzhľadom k tomu, samozrejme, heslá sú všeobecne nie sú uložené v jasnej, 1076 00:48:05,570 --> 00:48:08,260 a všeobecne heslá by malo byť ťažké uhádnuť. 1077 00:48:08,260 --> 00:48:09,610 To nie je častý prípad. 1078 00:48:09,610 --> 00:48:12,110 >> A to, čo si myslel, že sme si robiť, je záver pár minút 1079 00:48:12,110 --> 00:48:15,160 pohľad na zvlášť zlá voľba hesla 1080 00:48:15,160 --> 00:48:17,260 z filmu môžete pripomenúť láskou. 1081 00:48:17,260 --> 00:48:18,915 A ak nie, mali by ste prenajať. 1082 00:48:18,915 --> 00:48:20,070 >> [PREHRÁVANIE] 1083 00:48:20,070 --> 00:48:22,320 >> -Helmet Ste diabol, čo sa deje? 1084 00:48:22,320 --> 00:48:24,240 Čo to robíš s mojou dcérou? 1085 00:48:24,240 --> 00:48:28,010 >> -Permit Mi predstaviť brilantný mladý plastický chirurg, 1086 00:48:28,010 --> 00:48:30,010 Doktor Phillip Schlotkin. 1087 00:48:30,010 --> 00:48:35,020 Najväčší Rhinoplastika muž Celý vesmír a Beverly Hills. 1088 00:48:35,020 --> 00:48:36,140 >> -Váš Výsosti. 1089 00:48:36,140 --> 00:48:36,820 >> -Nose Práca? 1090 00:48:36,820 --> 00:48:37,700 Nerozumiem tomu. 1091 00:48:37,700 --> 00:48:39,070 Už mal nos. 1092 00:48:39,070 --> 00:48:40,800 Bolo jej sweet 16 k dispozícii. 1093 00:48:40,800 --> 00:48:42,590 >> Nie, to nie je to, čo si myslíte. 1094 00:48:42,590 --> 00:48:44,490 Je to oveľa, oveľa horšie. 1095 00:48:44,490 --> 00:48:48,160 Ak si neželáte, aby mi Kombinácia s leteckou štít, 1096 00:48:48,160 --> 00:48:52,748 Lekár Schlotkin dám svoj dcéru svoju starú nos. 1097 00:48:52,748 --> 00:48:53,748 - [Vzdychy] Nooooooooooooo. 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 Kde si to zobral? 1100 00:48:59,652 --> 00:49:00,640 >> -Dobre. 1101 00:49:00,640 --> 00:49:02,506 Poviem, poviem. 1102 00:49:02,506 --> 00:49:03,498 >> Nie, oci, no. 1103 00:49:03,498 --> 00:49:04,490 Nesmiete. 1104 00:49:04,490 --> 00:49:06,090 >> Máš pravdu drahá. 1105 00:49:06,090 --> 00:49:07,390 Budeš mi chýbať váš nový nos. 1106 00:49:07,390 --> 00:49:10,990 Ale ja im na to povedať kombinácie bez ohľadu na to, čo sa deje. 1107 00:49:10,990 --> 00:49:12,450 >> -veľmi Dobre. 1108 00:49:12,450 --> 00:49:14,830 Doktor Schlotkin, robiť to najhoršie. 1109 00:49:14,830 --> 00:49:15,744 >> -Môj Potešenie. 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> Nie! 1112 00:49:20,800 --> 00:49:22,780 Počkať, počkať. 1113 00:49:22,780 --> 00:49:24,000 Poviem. 1114 00:49:24,000 --> 00:49:25,830 Poviem. 1115 00:49:25,830 --> 00:49:28,270 >> Ja som vedel, že to bude fungovať. 1116 00:49:28,270 --> 00:49:31,390 Dobre, daj mi to. 1117 00:49:31,390 --> 00:49:36,220 >> -The Kombinácia je jedna. 1118 00:49:36,220 --> 00:49:36,740 >> Onu. 1119 00:49:36,740 --> 00:49:37,473 >> Onu. 1120 00:49:37,473 --> 00:49:37,972 -Dve. 1121 00:49:37,972 --> 00:49:38,471 -Dve. 1122 00:49:38,471 --> 00:49:39,800 -Dve. 1123 00:49:39,800 --> 00:49:40,300 -tri. 1124 00:49:40,300 --> 00:49:40,800 -tri. 1125 00:49:40,800 --> 00:49:41,800 -tri. 1126 00:49:41,800 --> 00:49:42,300 -Štyri. 1127 00:49:42,300 --> 00:49:42,800 -Štyri. 1128 00:49:42,800 --> 00:49:44,707 -Štyri. 1129 00:49:44,707 --> 00:49:45,521 -Pět. 1130 00:49:45,521 --> 00:49:46,430 -Pět. 1131 00:49:46,430 --> 00:49:47,930 -Pět. 1132 00:49:47,930 --> 00:49:53,480 Takže kombinácia je jeden, dva, tri, štyri, päť. 1133 00:49:53,480 --> 00:49:56,140 To je ten najhlúpejší kombinácia Čo som kedy počul v mojom živote. 1134 00:49:56,140 --> 00:49:58,640 To je ten druh vecí an idiot bude mať na jeho batožine. 1135 00:49:58,640 --> 00:50:00,000 >> Ďakujem, Vaša Výsosť. 1136 00:50:00,000 --> 00:50:01,340 >> [REMOTE CLICKS] 1137 00:50:01,340 --> 00:50:02,450 >> Čo ste urobil? 1138 00:50:02,450 --> 00:50:03,800 >> Ja vypnutý múru. 1139 00:50:03,800 --> 00:50:05,010 >> Nie, ty nie, ty vypne celý film. 1140 00:50:05,010 --> 00:50:06,220 >> Ja muselo stlačil zlé tlačidlo. 1141 00:50:06,220 --> 00:50:07,064 >> No, dal ju späť na! 1142 00:50:07,064 --> 00:50:07,910 Dajte film späť! 1143 00:50:07,910 --> 00:50:08,300 >> Áno, pane! 1144 00:50:08,300 --> 00:50:08,799 Áno, pane. 1145 00:50:08,799 --> 00:50:09,660 -Ideme, Arnold. 1146 00:50:09,660 --> 00:50:10,450 Poď, Gretchen. 1147 00:50:10,450 --> 00:50:12,533 Samozrejme, že viem, že som to musieť účtovať za to. 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 No? 1150 00:50:17,220 --> 00:50:17,802 Zabralo to? 1151 00:50:17,802 --> 00:50:18,510 Kde je kráľ? 1152 00:50:18,510 --> 00:50:20,218 >> -je Pracoval, pane, my majú kombináciu. 1153 00:50:20,218 --> 00:50:20,740 Skvele. 1154 00:50:20,740 --> 00:50:24,810 Teraz môžeme vziať aj tú poslednú dych čerstvého vzduchu z planéty Druidia. 1155 00:50:24,810 --> 00:50:25,890 Čo je to kombinácia? 1156 00:50:25,890 --> 00:50:28,155 >> Onú, dva, tri, štyri, päť. 1157 00:50:28,155 --> 00:50:29,890 >> Onú, dva, tri, štyri, päť? 1158 00:50:29,890 --> 00:50:30,390 Áno. 1159 00:50:30,390 --> 00:50:31,110 -to Je úžasné. 1160 00:50:31,110 --> 00:50:34,550 Mám rovnaký kombinácia na mojom batožine. 1161 00:50:34,550 --> 00:50:37,160 Pripravte Spaceball 1 pre okamžitý odchod. 1162 00:50:37,160 --> 00:50:38,160 >> Áno, pane. 1163 00:50:38,160 --> 00:50:40,745 >> -A Zmeniť kombinácia na mojom batožine. 1164 00:50:40,745 --> 00:50:41,578 [Uzatváranie dverí SOUND] 1165 00:50:41,578 --> 00:50:42,064 [Cinkanie DVERÍ biť PRILBY] 1166 00:50:42,064 --> 00:50:42,550 -Ahh. 1167 00:50:42,550 --> 00:50:43,383 [END Videoprehrávanie] 1168 00:50:43,383 --> 00:50:46,700 David J. Malan: To je pre CS50, uvidíme sa budúci týždeň. 1169 00:50:46,700 --> 00:50:49,883 Rozprávač: A teraz, Hlboká Myšlienky, podľa Daven Farnham. 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> Daven FARNHAM: Kódovanie v jazyku C je tak oveľa ťažšie, než Scratch. 1172 00:50:55,860 --> 00:50:57,320 printf, Scratch bola lož. 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [SMIECH SoundBITE] 1175 00:51:01,430 --> 00:51:02,486