1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 1: Dobre. 3 00:00:13,650 --> 00:00:14,390 Vitaj späť. 4 00:00:14,390 --> 00:00:19,260 To je týždeň Dva CS50, a máme Doteraz boli pomocou funkcie, ale 5 00:00:19,260 --> 00:00:20,830 z veľkej časti za samozrejmosť. 6 00:00:20,830 --> 00:00:23,430 Použili sme printf, ktorá má vedľajší efekt tlače 7 00:00:23,430 --> 00:00:24,110 veci na obrazovke. 8 00:00:24,110 --> 00:00:25,790 Použili sme get-int, float dostať. 9 00:00:25,790 --> 00:00:29,230 >> Ale čo keď naozaj chcete vytvoriť vlastné funkcie, ako sa niektorí 10 00:00:29,230 --> 00:00:31,740 Možno ste už začala urobiť pre Problem Set One, aj keď 11 00:00:31,740 --> 00:00:33,140 nie je nevyhnutne nutné? 12 00:00:33,140 --> 00:00:37,150 Dobre, poďme ďalej, a znova, že Problém sa pýtal na užívateľa 13 00:00:37,150 --> 00:00:40,660 ich meno a tlač niečo na obrazovke, ale skúste vytknúť niektoré 14 00:00:40,660 --> 00:00:44,000 o konformity, ktoré sme vidieť v našom kóde tak ďaleko. 15 00:00:44,000 --> 00:00:45,120 Takže mám na mysli nasledujúce. 16 00:00:45,120 --> 00:00:47,315 >> Chystám sa ísť dopredu a vytvoriť nový program, stačí zavolať 17 00:00:47,315 --> 00:00:49,320 to hello.c ako obvykle. 18 00:00:49,320 --> 00:00:53,730 Chystám sa ísť dopredu a dať sám zahŕňajú štandardný IO.H v hornej časti. 19 00:00:53,730 --> 00:00:57,040 Chystám sa tiež oddať preventívne CS50 knižnice tak, aby 20 00:00:57,040 --> 00:00:59,080 Nechápem kričal na prekladač. 21 00:00:59,080 --> 00:01:02,400 A teraz budem pokračovať a vyhlasujú, int, hlavné, za neplatné. 22 00:01:02,400 --> 00:01:09,020 >> A potom tu je to miesto, kde chcem začať zadávať funkčnosť 23 00:01:09,020 --> 00:01:12,090 niektoré ďalšie funkcie, ktoré ja sám som budem písať, ale to nie je 24 00:01:12,090 --> 00:01:13,820 v súčasnej dobe neexistuje. 25 00:01:13,820 --> 00:01:19,210 Predpokladajme napríklad, že som chcel napísať funkciu, ktorá mi umožňuje 26 00:01:19,210 --> 00:01:23,830 vytlačiť ahoj, čiarku a potom nejaké užívateľské meno. 27 00:01:23,830 --> 00:01:29,010 Namiesto toho, aby to printf Dobrý deň,% s, nebolo by pekné, keby 28 00:01:29,010 --> 00:01:33,380 tam bolo len volané funkcie nie je printf, ale print jmeno? 29 00:01:33,380 --> 00:01:36,600 >> Takže inými slovami, chcem byť schopný napísať program, ktorý robí len málo 30 00:01:36,600 --> 00:01:37,710 niečo také. 31 00:01:37,710 --> 00:01:42,070 Po prvé, ja som chcel povedať printf váš meno, čím vyzývajúci užívateľa k 32 00:01:42,070 --> 00:01:46,150 daj mi jeho alebo jej meno, a potom som bude používať známe reťazec s na 33 00:01:46,150 --> 00:01:47,290 deklarovať reťazec. 34 00:01:47,290 --> 00:01:50,420 Daj mi premennú typu reťazec, hovoria to a obchod v tom, že 35 00:01:50,420 --> 00:01:52,120 Výsledkom volanie sa reťazec. 36 00:01:52,120 --> 00:01:56,060 Ale teraz v posledných týždňoch, musel by som trochu nudne urobil Dobrý deň,% s / n 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> A inými slovami, sme videli tento Príkladom banda časov, a to je 39 00:02:02,570 --> 00:02:05,280 triviálne príklad, pretože tam je len jeden riadok kódu, takže to naozaj nie je 40 00:02:05,280 --> 00:02:06,860 veľký problém udržať písať znova. 41 00:02:06,860 --> 00:02:09,990 Ale predpokladám, že tento riadok kódu skutočne stali príťažou, a 42 00:02:09,990 --> 00:02:12,900 nie je to jeden riadok kódu, ale je to 10 riadky kódu pred pár týždňami od teraz, 43 00:02:12,900 --> 00:02:15,190 a vy ste len unavení kopírovanie a vkladanie alebo 44 00:02:15,190 --> 00:02:17,180 prepisovanie rovnaký kód. 45 00:02:17,180 --> 00:02:22,100 Nebolo by pekné miesto vykonávania printf ahoj,% s, a tak ďalej, 46 00:02:22,100 --> 00:02:26,500 Nebolo by pekné, keby tam boli len volaná funkcia print jmeno, že 47 00:02:26,500 --> 00:02:27,560 má argument - 48 00:02:27,560 --> 00:02:29,120 inými slovami, že má vstup - 49 00:02:29,120 --> 00:02:30,620 a potom bodkočiarka. 50 00:02:30,620 --> 00:02:33,240 Takže funkcie, nebolo by to by pekné, keby to existovalo? 51 00:02:33,240 --> 00:02:36,690 Potom by som nemusel obávať čo printf je, čo% s a všetky 52 00:02:36,690 --> 00:02:39,400 Tieto komplikácie, ktoré sú nie je všetko tak zaujímavé. 53 00:02:39,400 --> 00:02:40,570 Sú užitočné. 54 00:02:40,570 --> 00:02:44,700 >> Takže print jmeno, bohužiaľ, nebol vymyslel nejaký 40 + rokmi. 55 00:02:44,700 --> 00:02:45,980 Nikto si to napísať. 56 00:02:45,980 --> 00:02:48,300 Ale to je krása mať programovací jazyk, rovnako ako v 57 00:02:48,300 --> 00:02:52,930 Scratch môžete definovať vlastné bloky tak, v C a takmer akýkoľvek jazyk, môžete 58 00:02:52,930 --> 00:02:57,260 definovať vlastné funkcie, môže môžete definovať svoje vlastné funkcie. 59 00:02:57,260 --> 00:03:01,710 Takže aj keď sa dostaneme do hlavnej automaticky zadarmo, môžeme vyhlásiť, 60 00:03:01,710 --> 00:03:02,730 naše vlastné funkcie. 61 00:03:02,730 --> 00:03:05,670 >> Takže budem robiť nejaké miesto tu hore hore a budem deklarovať my 62 00:03:05,670 --> 00:03:08,210 vlastné funkcie, ktorá bude vyzerať trochu divný, ale na prvý prídeme 63 00:03:08,210 --> 00:03:09,400 späť k tomu onedlho. 64 00:03:09,400 --> 00:03:12,310 Chystám sa povedať neplatné, a tým ukazuje táto funkcia 65 00:03:12,310 --> 00:03:16,040 niečo, má vedľajšie účinky, ale nevráti mi niečo v 66 00:03:16,040 --> 00:03:18,810 rovnakým spôsobom, ako sa int alebo dostať reťazec sama. 67 00:03:18,810 --> 00:03:22,450 A budem k tejto funkcii názov tlačového mená a budem 68 00:03:22,450 --> 00:03:26,470 určiť, že tento človek bude trvať reťazec, a ja budem volať, že 69 00:03:26,470 --> 00:03:27,600 Názov reťazca. 70 00:03:27,600 --> 00:03:32,100 Mohol by som hovoriť, čo chcem, ale ja chcem, aby moje kód byť self-dokumentovať. 71 00:03:32,100 --> 00:03:34,770 Inými slovami, ak je niekto z vás mal tento súbor otvoriť a čítať, mohli by ste 72 00:03:34,770 --> 00:03:39,020 druh odvodzovať z názvu, ktorý Vstup akú úlohu to má hrať. 73 00:03:39,020 --> 00:03:42,270 >> A teraz ďalej, že idem otvoriť zložená zátvorka a uzavreté zložená zátvorka, 74 00:03:42,270 --> 00:03:47,140 a tak zistíte Dodržal som rovnaký vzor na tratiach štyri až sedem ako 75 00:03:47,140 --> 00:03:51,622 Sledoval som na dobrý týždeň naviac teraz medzi, povedzme, vedenie a deväť 76 00:03:51,622 --> 00:03:53,400 14, ktorý skladať hlavné. 77 00:03:53,400 --> 00:03:56,160 Inými slovami, tlačiť názov je ďalšie funkcie. 78 00:03:56,160 --> 00:03:58,990 Teraz, kompilátor nebude poznať volať túto vec automaticky 79 00:03:58,990 --> 00:04:02,670 pretože som doslova vymyslel, ale to bude vedieť ešte zavolať hlavný 80 00:04:02,670 --> 00:04:08,710 automaticky, a potom samozrejme v linka 13, Volám svoju vlastnú funkciu. 81 00:04:08,710 --> 00:04:12,805 A preto, že som vyhlásil, že funkcia sa na radový štvorvalec pred hlavnými, 82 00:04:12,805 --> 00:04:16,579 to bude učiť kompilátor čo citujem, koniec citátu, "print jmeno" 83 00:04:16,579 --> 00:04:18,140 znamená a čo by mala robiť. 84 00:04:18,140 --> 00:04:22,700 Takže som trochu dávať to nový zvyk zablokovať v rámci, povedzme, Scratch. 85 00:04:22,700 --> 00:04:27,240 >> Tak tu, môžem dať, že veľmi časté alebo opakujúce sa vzor kódu držím 86 00:04:27,240 --> 00:04:32,300 písanie v triede, printf % S ahoj,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 Čo chcem, aby tu? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Tak som chcel dať meno v tejto súvislosti. 91 00:04:41,420 --> 00:04:43,440 Takže si všimnúť trochu dichotómia tu. 92 00:04:43,440 --> 00:04:47,680 Pretože som vyhlásil svoju vlastnú funkciu a ja som trochu svojvoľne nazýva 93 00:04:47,680 --> 00:04:50,880 vytlačí meno, a pretože som je uvedené v zátvorkách, že sa 94 00:04:50,880 --> 00:04:55,035 funkcia má jeden argument, typ čo je reťazec - tak to je slovo, 95 00:04:55,035 --> 00:05:00,010 alebo slovné spojenie, alebo niečo také - a Volám tento argument názov, ktorý 96 00:05:00,010 --> 00:05:04,770 znamená iba premenná, ktoré je v priestor, aby som tak povedal, je názov. 97 00:05:04,770 --> 00:05:07,780 >> S existuje iba medzi tým, čo dvaja Zložené zátvorky, samozrejme? 98 00:05:07,780 --> 00:05:12,990 No naozaj, rovnako ako linky 10 cez 14, takže rovnako ako v pondelok nemožno použiť 99 00:05:12,990 --> 00:05:17,650 S, ale to, čo môžem urobiť, je prejsť S do tlače názvu. 100 00:05:17,650 --> 00:05:21,030 Vytlačiť meno len tak sa stane, že ju dám alias, synonymum, prezývka, 101 00:05:21,030 --> 00:05:24,400 volať to meno, a teraz použitie v tomto riadku. 102 00:05:24,400 --> 00:05:26,840 Takže teraz mi dovoľte zachrániť to, oddialiť. 103 00:05:26,840 --> 00:05:31,250 >> Nechaj ma ísť ďalej a robiť ahoj. 104 00:05:31,250 --> 00:05:32,400 Vyzerá to dobre. 105 00:05:32,400 --> 00:05:36,110 Vari vypľuť žiadne chyby. . / Ahoj Enter. 106 00:05:36,110 --> 00:05:37,020 Ako sa volám? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 A ahoj Dávid. 109 00:05:39,270 --> 00:05:41,820 Takže nie je tak vzrušujúce, ale len, že teraz. 110 00:05:41,820 --> 00:05:44,310 Teraz máte tú istú látku ako sme to urobili v nuly 111 00:05:44,310 --> 00:05:45,420 aby naše vlastné funkcie. 112 00:05:45,420 --> 00:05:46,770 >> Ale je tu trochu Gotcha. 113 00:05:46,770 --> 00:05:50,620 Dajme tomu, že som si naozaj myslel, to až do konca a ja vlastne bez 114 00:05:50,620 --> 00:05:54,250 naozaj premýšľať o tom písal že funkcie tu. 115 00:05:54,250 --> 00:05:55,420 Pocit úplne rozumné. 116 00:05:55,420 --> 00:05:58,440 V Scratch nie je pojem z miesta vo svojich skriptoch. 117 00:05:58,440 --> 00:06:00,670 Dalo by sa dal jeden sem, jeden sem, jeden tu, a to by mohlo začať 118 00:06:00,670 --> 00:06:03,310 vyzerať trochu chaotický, ak nemáte položte ju úhľadne, ale to nie je 119 00:06:03,310 --> 00:06:05,910 na tom, kde fyzicky skripty sa na obrazovke. 120 00:06:05,910 --> 00:06:09,660 Bohužiaľ v C - a to je na rozdiel od jazyky ako Java a Python 121 00:06:09,660 --> 00:06:13,600 a ďalšie, ktoré by vás mohli oboznámiť s - bohužial C, aby sa 122 00:06:13,600 --> 00:06:15,830 nezáleží, pretože hodinky to, čo je teraz stane. 123 00:06:15,830 --> 00:06:19,010 >> Predvolené funkcia, ktorá sa deje na vykonanie je, samozrejme, hlavné. 124 00:06:19,010 --> 00:06:22,290 Hlavné bude volať meno v tlači linka osem, ale bohužiaľ, 125 00:06:22,290 --> 00:06:26,660 kompilátor nebude ani vedieť, že tlačový meno existuje, kým sa dostane do riadku 11, 126 00:06:26,660 --> 00:06:28,520 čo je bohužiaľ bude príliš neskoro. 127 00:06:28,520 --> 00:06:30,660 Takže poďme urobiť ahoj. 128 00:06:30,660 --> 00:06:32,950 A teraz sakra, dve chyby generované. 129 00:06:32,950 --> 00:06:36,050 Takže teraz mi dovoľte prejdite do veľmi Po prvé, ako sme mali vždy, a 130 00:06:36,050 --> 00:06:39,560 Všimnite si, že je to na mňa reval, "Implicitná deklarácie funkcie 131 00:06:39,560 --> 00:06:40,540 tlačiť meno. " 132 00:06:40,540 --> 00:06:43,860 >> Takže sme videli, táto správa skôr, implicitné vyhlásenia funkcie. 133 00:06:43,860 --> 00:06:48,080 Keď sme videli, že takéto chyby? 134 00:06:48,080 --> 00:06:49,180 Keď som nezahŕňal knižnice. 135 00:06:49,180 --> 00:06:53,470 Ak som zabudol cs50.h a ja by som si zareval na pre získanie reťazca, alebo si int. 136 00:06:53,470 --> 00:06:56,880 Ale v tomto prípade, je táto funkcia tlače meno nie je v knižnici, nie? 137 00:06:56,880 --> 00:07:00,230 Je to doslova v tomto súbore, takže čo je naozaj problém? 138 00:07:00,230 --> 00:07:04,660 >> No bohužial C, to sa ti tak neuveriteľne doslova, že ak 139 00:07:04,660 --> 00:07:08,640 chcete funkciu nazvanú tlače na meno existujú, buď musieť implementovať 140 00:07:08,640 --> 00:07:11,940 ktoré fungujú na veľmi hornú časť kód tak, že je k dispozícii pre zníženie 141 00:07:11,940 --> 00:07:15,070 funkcie, ale úprimne povedané, to sa stane nedbalý veľmi rýchlo. 142 00:07:15,070 --> 00:07:18,160 Osobne som rád uvedenia prvej hlavnej pretože potom je úplne jasné, čo to 143 00:07:18,160 --> 00:07:19,890 program sa na prvý pohľad. 144 00:07:19,890 --> 00:07:23,290 A navyše sa môžete dostať do podivné rohu prípady, kedy, ak x chce volať 145 00:07:23,290 --> 00:07:27,530 y, ale y nazvať x, stačí fyzicky nemôže skutočne dať jeden 146 00:07:27,530 --> 00:07:28,540 nad sebou. 147 00:07:28,540 --> 00:07:31,230 >> Ale ukazuje sa v C, môžeme vyriešiť veľmi jednoducho. 148 00:07:31,230 --> 00:07:34,010 Chystám sa dať trochu priestoru tu, a ja som jednoducho ísť 149 00:07:34,010 --> 00:07:38,170 preventívne, aj keď trochu redundantne, bude učiť 150 00:07:38,170 --> 00:07:42,320 kompilátor, že existuje funkcia hovorí tlačový meno, to trvá reťazec, 151 00:07:42,320 --> 00:07:46,330 a ja idem volať to meno bodkočiarku. 152 00:07:46,330 --> 00:07:50,220 >> Tak to teraz v súlade štyri, ktoré sme ešte nevideli, je vyhlásenie 153 00:07:50,220 --> 00:07:53,940 z mena funkcie tlače, ale je to len sľub, že táto funkcia bude 154 00:07:53,940 --> 00:07:56,620 nakoniec byť definované, prípadne byť vykonávaná. 155 00:07:56,620 --> 00:08:00,180 To teraz môžem odísť sám, pretože Teraz sa jedná o definície, 156 00:08:00,180 --> 00:08:04,090 implementácie, niečo ako poslednú míľu vykonávanie tejto 157 00:08:04,090 --> 00:08:05,130 niektoré funkcie. 158 00:08:05,130 --> 00:08:08,450 Takže úprimne povedané, je to hlúposť, je to nepríjemné, ale toto je cesta C, a to 159 00:08:08,450 --> 00:08:12,050 pretože vás doslovne a ako by počítač úprimne, 160 00:08:12,050 --> 00:08:16,020 len robí presne to, čo si povedať, že sa robiť, a tak, že usporiadanie je dôležité. 161 00:08:16,020 --> 00:08:18,940 >> Takže majte na pamäti, že a znovu začať Všimnite si opakovanie vzorov. 162 00:08:18,940 --> 00:08:21,850 Kurzy sú, že áno, ak nemáte už začínajú stretnúť správy 163 00:08:21,850 --> 00:08:24,700 ako je táto, na prvý pohľad sa zdá úplne záhadné, ale keď začnete 164 00:08:24,700 --> 00:08:29,000 pozrieť sa na týchto kľúčových slov, ako "Implicitná vyhlásenie," zmienka o 165 00:08:29,000 --> 00:08:32,380 Funkcie v tomto prípade - a úprimne povedané, je niekedy dokonca dostať trochu zelený 166 00:08:32,380 --> 00:08:35,010 mrkva symbol, ktorý vám povie, kde problém asi je - 167 00:08:35,010 --> 00:08:40,980 môžete začať pracovať si cestu cez Zatiaľ neviditeľné chybové správy. 168 00:08:40,980 --> 00:08:45,860 Akékoľvek otázky týkajúce sa písania Vlastné funkcie týmto spôsobom? 169 00:08:45,860 --> 00:08:47,540 >> Poďme urobiť niečo, čo je trochu viac presvedčivé. 170 00:08:47,540 --> 00:08:51,760 Skôr než len robiť niečo, čo má vedľajší efekt tlače, nechaj ma ísť 171 00:08:51,760 --> 00:08:55,340 dopredu a uložiť nový súbor, a budeme nazývajú positive.c, aj keď je to 172 00:08:55,340 --> 00:08:57,600 Bude to trochu inak oproti minule. 173 00:08:57,600 --> 00:09:01,910 A tentoraz chcem znovu zaviesť Poslednou dobou je positive.C príklad, ktorý 174 00:09:01,910 --> 00:09:04,430 sila je užívateľ, aby mi kladné celé číslo. 175 00:09:04,430 --> 00:09:07,280 Ale musel som použiť dostať int minule. 176 00:09:07,280 --> 00:09:10,780 Nebolo by pekné, keby tam bol funkcia je volaná získať kladný int 177 00:09:10,780 --> 00:09:13,610 že som mohol len zadať túto kus funkčnosti? 178 00:09:13,610 --> 00:09:16,480 Takže rozdiel je stretneme realizovať získať pozitívny int, ale na rozdiel od 179 00:09:16,480 --> 00:09:20,330 print jmeno ktorý mal vedľajší účinok - nevrátil sa pre mňa niečo ako 180 00:09:20,330 --> 00:09:21,710 číslo alebo reťazec - 181 00:09:21,710 --> 00:09:25,510 sa pozitívny int je, samozrejme, bude vrátiť sa, dúfajme, že pozitívne int. 182 00:09:25,510 --> 00:09:26,170 >> Tak poďme na to. 183 00:09:26,170 --> 00:09:30,840 Zahrnúť cs50.h zahŕňajú štandardný io.h. 184 00:09:30,840 --> 00:09:33,520 Int main neplatné. 185 00:09:33,520 --> 00:09:42,160 A teraz tu, budem pokračovať a povedzme int, hovoria n, sa rovná 186 00:09:42,160 --> 00:09:44,270 získať kladný int. 187 00:09:44,270 --> 00:09:49,080 A rovnako ako sa int už existuje pretože zamestnanci to napísal, ja idem 188 00:09:49,080 --> 00:09:53,950 prevziať na chvíľu, že dostanete kladný int existuje, a teraz idem 189 00:09:53,950 --> 00:09:57,730 ísť ďalej a povedať printf, vďaka za% i / n ", n 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Takže teraz, keď som skompilovať tento program, čo sa bude diať v mojom termináli 192 00:10:07,770 --> 00:10:09,075 okno v dolnej časti obrazovky? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Chystám sa pravdepodobne dostanete, že rovnaká chyba ako predtým. 195 00:10:13,900 --> 00:10:14,570 Takže poďme skúsiť. 196 00:10:14,570 --> 00:10:16,450 Urobiť pozitívne. 197 00:10:16,450 --> 00:10:19,900 A opäť, implicitné vyhlásenie funkcie, získať pozitívny int. 198 00:10:19,900 --> 00:10:21,970 Takže môžeme to vyriešiť v niekoľko spôsobov. 199 00:10:21,970 --> 00:10:27,310 Budem držať to jednoduchý a len dať svoje vyhlásenie sem a dostať 200 00:10:27,310 --> 00:10:28,120 pozitívny int. 201 00:10:28,120 --> 00:10:29,720 Musím tzv podpis. 202 00:10:29,720 --> 00:10:32,410 Podpis len odkazuje k estetike 203 00:10:32,410 --> 00:10:34,090 prvý riadok programu. 204 00:10:34,090 --> 00:10:37,420 Takže to, čo by mali dostať pozitívny int návrat? 205 00:10:37,420 --> 00:10:37,970 >> Tak int. 206 00:10:37,970 --> 00:10:41,540 Myslím ideálnom prípade by sa vrátiť niečo ako pozitívna int, ale 207 00:10:41,540 --> 00:10:42,160 neexistuje. 208 00:10:42,160 --> 00:10:45,280 Sme nevideli, že medzi našimi dátami typy, takže máme čo do činenia s 209 00:10:45,280 --> 00:10:47,170 Skutočnosť, že máme veľmi málo dátové typy pre prácu s 210 00:10:47,170 --> 00:10:50,360 Ale môžeme vrátiť int a len verím, že to bude pozitívny. 211 00:10:50,360 --> 00:10:52,690 Bude to nazvať získať kladný int. 212 00:10:52,690 --> 00:10:55,122 >> A teraz, ako o jeho argumenty? 213 00:10:55,122 --> 00:10:56,440 Trvá žiadny vstup? 214 00:10:56,440 --> 00:10:58,280 Znamená to potrebný žiadny vstup? 215 00:10:58,280 --> 00:11:00,900 Takže to nemusí vedieť dopredu čokoľvek. 216 00:11:00,900 --> 00:11:03,220 Získajte reťazec neobsahuje, dostať int nie je. 217 00:11:03,220 --> 00:11:06,430 Printf robí - je potrebné mať niektoré Vstup prešiel do neho - a tlačiť názov 218 00:11:06,430 --> 00:11:09,020 potreboval nejaký vstup, ale dostať int pozitívny nie je. 219 00:11:09,020 --> 00:11:11,530 Takže budem explicitne povedať kompilátora neplatné. 220 00:11:11,530 --> 00:11:13,470 Void je absencia čokoľvek iného. 221 00:11:13,470 --> 00:11:17,990 Tak void znamená, sa nič vo vnútri z tých zátvoriek, bodkočiarku. 222 00:11:17,990 --> 00:11:20,840 >> A teraz na dne môjho súboru - a znova, som len trochu análny 223 00:11:20,840 --> 00:11:23,640 tu uvedení hlavné v hornej časti, ktorý je dobrá prax, pretože týmto spôsobom, 224 00:11:23,640 --> 00:11:26,220 kedykoľvek vy alebo niekto iný otvorí súbor, na 225 00:11:26,220 --> 00:11:27,400 Funkcia je tu. 226 00:11:27,400 --> 00:11:29,660 Môžete sa potápať v jednom z námestí. 227 00:11:29,660 --> 00:11:34,190 Takže teraz budem duplikovať to, získať kladný int neplatné, ale nie som 228 00:11:34,190 --> 00:11:35,430 dopadne na bodkočiarku teraz. 229 00:11:35,430 --> 00:11:38,280 Idem otvoriť zložené zátvorky, a teraz musím požičať 230 00:11:38,280 --> 00:11:39,700 niektoré nápady od pondelka. 231 00:11:39,700 --> 00:11:44,450 >> Tak, ako si spomínate, sme urobili niečo ako vykonajte nasledujúce pri 232 00:11:44,450 --> 00:11:45,830 niečo, čo je pravda. 233 00:11:45,830 --> 00:11:46,630 A čo som urobil? 234 00:11:46,630 --> 00:11:51,540 Urobil som niečo ako dať mi kladné celé číslo, 235 00:11:51,540 --> 00:11:52,430 trochu výzva. 236 00:11:52,430 --> 00:11:53,540 Mohol by som použiť všetky slová, čo chcem. 237 00:11:53,540 --> 00:11:54,960 A potom som použil čo? 238 00:11:54,960 --> 00:11:59,530 Int n sa rovná dostať int, žiadne argumenty do nej. 239 00:11:59,530 --> 00:12:00,550 >> A všimnite si rozdiel. 240 00:12:00,550 --> 00:12:04,680 Keď voláte funkciu, pri použití funkcie, vy nie dať do prázdna. 241 00:12:04,680 --> 00:12:08,570 Môžete robiť len to, že pri deklarovaní funkcie, výučba kompilátor, čo 242 00:12:08,570 --> 00:12:09,780 by mal očakávať. 243 00:12:09,780 --> 00:12:11,650 Takže nemusíte dať zrušiť tam sami. 244 00:12:11,650 --> 00:12:12,940 >> A teraz, čo sa môj stav? 245 00:12:12,940 --> 00:12:19,670 Tak, n sa nerovná pozitívny, ale to je len pseudo-kód. 246 00:12:19,670 --> 00:12:22,530 Tak ako to mám vyjadriť čistejšie? 247 00:12:22,530 --> 00:12:24,090 Tak menšie ako alebo rovná nule. 248 00:12:24,090 --> 00:12:26,250 Takže znova, zistíte, čo môžete urobiť menšie alebo rovné. 249 00:12:26,250 --> 00:12:28,100 Aj keď je to dva samostatné symboly, môžete tak urobiť na 250 00:12:28,100 --> 00:12:29,350 klávesnica ako také. 251 00:12:29,350 --> 00:12:33,950 >> Ale je tu ešte problém, že Posral som to minule taky. 252 00:12:33,950 --> 00:12:36,950 Musím vyhlásiť - 253 00:12:36,950 --> 00:12:37,460 presne. 254 00:12:37,460 --> 00:12:39,640 Musím vyhlásiť n mimo zo slučky. 255 00:12:39,640 --> 00:12:44,180 Takže musím dať n sem, a ja nie chcem znovu vyhlásiť ju tu 256 00:12:44,180 --> 00:12:46,480 aby som si novú premennú. 257 00:12:46,480 --> 00:12:48,860 Len chcem priradiť hodnotu tu. 258 00:12:48,860 --> 00:12:54,320 >> A teraz som úplne hotoví. 259 00:12:54,320 --> 00:12:57,290 Dovoľte mi, aby som sa pred seba a predstierať, že som urobil. 260 00:12:57,290 --> 00:13:01,220 Urobiť pozitívne, a teraz je tu nová chyba. 261 00:13:01,220 --> 00:13:04,550 Control dosiahne koniec non-void funkcie. 262 00:13:04,550 --> 00:13:07,760 Takže nové chybové hlásenie, ale ak ste typ z srandista oddelene každý slovami, 263 00:13:07,760 --> 00:13:09,620 pravdepodobne naznačuje, čo sa deje. 264 00:13:09,620 --> 00:13:11,240 >> Ovládajte. 265 00:13:11,240 --> 00:13:14,250 Riadenie spočíva iba v poriadku operácií v programe. 266 00:13:14,250 --> 00:13:16,510 Počítač je pod kontrolou a sa niečo pokazilo. 267 00:13:16,510 --> 00:13:18,510 Tak sa dostane na koniec non-void funkcie. 268 00:13:18,510 --> 00:13:21,760 Aké funkcie je zrejme na mysli? 269 00:13:21,760 --> 00:13:24,790 Aká je funkcia non-void? 270 00:13:24,790 --> 00:13:27,400 Tak sa pozitívne int, a trochu mätúce, že dobre, 271 00:13:27,400 --> 00:13:29,010 je to druh prázdnoty. 272 00:13:29,010 --> 00:13:33,070 To má špecifikáciu neplatnosť jeho argumenty, ale jeho výstup bude 273 00:13:33,070 --> 00:13:34,540 byť typu n 274 00:13:34,540 --> 00:13:37,260 Takže slovo na ľavej strane je tzv návratový typ. 275 00:13:37,260 --> 00:13:40,320 Slovo na vnútornej strane je tu nulové alebo viac argumentov 276 00:13:40,320 --> 00:13:41,970 že funkcia má. 277 00:13:41,970 --> 00:13:44,060 >> Takže to, čo musím urobiť? 278 00:13:44,060 --> 00:13:47,650 Na tomto mieste v mojom kóde, riadok 21, kde bliká prompt teraz je, že som 279 00:13:47,650 --> 00:13:51,430 mať kladný int vnútri premenné s názvom n 280 00:13:51,430 --> 00:13:55,200 Ako môžem dať ho späť do Main? 281 00:13:55,200 --> 00:13:55,960 Doslova. 282 00:13:55,960 --> 00:13:59,320 Návrat n bodkočiarka. 283 00:13:59,320 --> 00:14:04,090 >> Teda rovnako ako u Colton vrátil kus papier s odpoveďou na mňa pri páde 284 00:14:04,090 --> 00:14:07,020 ten kus papiera, v malej čiernej krabice na stole, k tomu, že v 285 00:14:07,020 --> 00:14:10,100 kód, môžete doslova len napísať, vráti n, a je to, ako by boli Colton 286 00:14:10,100 --> 00:14:12,140 podal mi niečo fyzického späť. 287 00:14:12,140 --> 00:14:15,870 V tomto prípade, čo sa deje, je dostať kladný int sa chystá odovzdať späť 288 00:14:15,870 --> 00:14:19,220 čo je pravdepodobne pozitívny číslo pre koho? 289 00:14:19,220 --> 00:14:21,380 Kde sa táto hodnota skončí? 290 00:14:21,380 --> 00:14:29,080 , Ktorá končí v tejto premennej, n, a potom budeme pokračovať s líniou deväť. 291 00:14:29,080 --> 00:14:31,920 >> Takže inými slovami, aby z operácií, tento program spustí 292 00:14:31,920 --> 00:14:34,430 vykonávanie a kompilátor zistí, oh, chceš knižnicu? 293 00:14:34,430 --> 00:14:36,310 Nechaj ma ísť chytiť, čo je vo vnútri, že. 294 00:14:36,310 --> 00:14:37,750 Oh, chceš štandardné IO knižnice? 295 00:14:37,750 --> 00:14:39,660 Nechaj ma ísť chytiť, čo je vo vnútri, že. 296 00:14:39,660 --> 00:14:44,510 Čo kompilátor povedal sám keď to udrie linky štyri? 297 00:14:44,510 --> 00:14:47,980 Oh, si sľúbil realizovať Funkcia sa nazýva pozitívne, ale 298 00:14:47,980 --> 00:14:50,820 dostaneme späť na neskôr, niečo, čo v tomto smere. 299 00:14:50,820 --> 00:14:53,450 >> Int main void len znamená, že tu je vnútornosti môjho programu. 300 00:14:53,450 --> 00:14:54,990 Linka je len sedem zložená zátvorka. 301 00:14:54,990 --> 00:14:59,540 Linka osem hovorí na ľavej strane, dať mi 32 bitov na celé číslo, hovoria n 302 00:14:59,540 --> 00:15:02,160 Na pravej strane je to hovoriť si pozitívne int. 303 00:15:02,160 --> 00:15:07,120 Teraz sa poďme pozastaviť ten príbeh, pretože teraz Nechcem ďalej môj kurzor nadol. 304 00:15:07,120 --> 00:15:11,720 Môj Kurzor sa teraz chodia sem, pretože teraz získať kladný int spustí. 305 00:15:11,720 --> 00:15:13,100 Int n je deklarovaná. 306 00:15:13,100 --> 00:15:14,040 Vykonajte nasledujúce. 307 00:15:14,040 --> 00:15:16,090 Printf mi dáva kladné celé číslo. 308 00:15:16,090 --> 00:15:19,740 >> Získajte int od užívateľa, uložte ho na n, a možno to znova a znova. 309 00:15:19,740 --> 00:15:23,010 Tento cyklus znamená, že tento kód môže spustiť hore a dole takhle zase 310 00:15:23,010 --> 00:15:25,810 a znova, ale keď užívateľ konečne spolupracuje a dáva mi pozitívne 311 00:15:25,810 --> 00:15:31,750 int, som narazila riadok 21, na ktorom mieste číslo sa odovzdá späť, a ktorý z nich 312 00:15:31,750 --> 00:15:34,280 mal by som zdôrazniť teraz? 313 00:15:34,280 --> 00:15:35,070 Nine. 314 00:15:35,070 --> 00:15:39,010 Control, aby som tak povedal, vráti na linku deväť. 315 00:15:39,010 --> 00:15:40,650 To je línia, ktorá je teraz na starosti. 316 00:15:40,650 --> 00:15:43,250 >> Takže to, čo sa deje po tentoraz pod kapotou, ale 317 00:15:43,250 --> 00:15:46,480 keď sme použili funkcie ako printf alebo dokonca dostať reťazec, ktorý niekto iný 318 00:15:46,480 --> 00:15:50,600 napísal vám, kontrola bola odovzdaním off niekoho iného riadok kódu 319 00:15:50,600 --> 00:15:51,290 o riadok po riadku. 320 00:15:51,290 --> 00:15:53,770 Je to proste sme nemohli vidieť, a my by naozaj opísať to v tomto 321 00:15:53,770 --> 00:15:57,620 programu, pretože je to v niektorých iných Súbor na pevnom disku 322 00:15:57,620 --> 00:16:00,000 unbeknownst nám. 323 00:16:00,000 --> 00:16:02,100 Takže poďme sa vlastne zostaviť a spustiť hneď. 324 00:16:02,100 --> 00:16:03,890 >> Urobiť pozitívne. 325 00:16:03,890 --> 00:16:05,260 Kompilácia, to je pokrok. 326 00:16:05,260 --> 00:16:06,650 . / Pozitívne. 327 00:16:06,650 --> 00:16:08,020 Daj mi kladné celé číslo. 328 00:16:08,020 --> 00:16:08,800 Poďme byť ťažké. 329 00:16:08,800 --> 00:16:10,430 Negatívne 1. 330 00:16:10,430 --> 00:16:11,360 Zero. 331 00:16:11,360 --> 00:16:13,370 Dajme tomu 50. 332 00:16:13,370 --> 00:16:18,100 Vďaka za päťdesiat, a tak kontrola teraz sa vrátil. 333 00:16:18,100 --> 00:16:21,750 Akékoľvek otázky, potom o tom myslíte? 334 00:16:21,750 --> 00:16:23,180 Jo? 335 00:16:23,180 --> 00:16:25,630 >> [Nepočuteľný]. 336 00:16:25,630 --> 00:16:26,130 >> Povedz to znova. 337 00:16:26,130 --> 00:16:27,860 Oh, dobrá otázka. 338 00:16:27,860 --> 00:16:31,100 Takže si môžete všimnúť paralelu tu Som typ rezu na roh. 339 00:16:31,100 --> 00:16:35,420 V súlade 12, hovorím, získať pozitívny int vracia int, ale ten rovnaký 340 00:16:35,420 --> 00:16:39,660 logika, to teraz dá rozum, že v linka šesť, hovorím, že hlavné vráti 341 00:16:39,660 --> 00:16:44,040 int, ale to, čo sme ešte mal niektorý z našich programov? 342 00:16:44,040 --> 00:16:46,470 Nikdy sme nemali zmienku o toto kľúčové slovo return. 343 00:16:46,470 --> 00:16:49,970 >> Tak sa ukázalo, že v C, a to najmenej verzia toho, že sme pomocou 344 00:16:49,970 --> 00:16:55,750 z roku 1999, technicky, je to sa deje automaticky. 345 00:16:55,750 --> 00:16:59,300 Kedykoľvek budete vykonávať program a vy implementovať funkciu nazvanú main, 346 00:16:59,300 --> 00:17:04,230 že funkcia vráti nulové Predvolené ak nechcete hovoriť inak, 347 00:17:04,230 --> 00:17:05,849 a nula je len konvencie. 348 00:17:05,849 --> 00:17:09,430 Svet sa vracia nulu tým čo znamená, že je všetko v poriadku, 349 00:17:09,430 --> 00:17:13,040 účinne opúšťať nám štyri miliardy možné veci, ktoré by mohli ísť 350 00:17:13,040 --> 00:17:17,530 zle, takže keď sme sa vrátiť jednu, ktorá môže znamenať kód, ktorý znamená, že tento 351 00:17:17,530 --> 00:17:18,310 čo sa stalo. 352 00:17:18,310 --> 00:17:20,589 Mohli by sme sa vrátiť dve, čo znamená, tá druhá vec sa stala chyba. 353 00:17:20,589 --> 00:17:23,440 Mohli by sme sa vrátiť štyri miliardy, čo znamená, že táto vec sa stala chyba. 354 00:17:23,440 --> 00:17:27,170 >> A či si teraz premýšľať o svoje vlastné PC alebo Mac, môžete pripomenúť, že 355 00:17:27,170 --> 00:17:29,610 niekedy dostanete záhadné chybové správy od softvéru, ktorý ste 356 00:17:29,610 --> 00:17:32,650 použitie, a niekedy má človek Zrozumiteľný opis, ale je tu 357 00:17:32,650 --> 00:17:35,265 často kód alebo číslo na obrazovke? 358 00:17:35,265 --> 00:17:37,800 Ak to nepríde na myseľ, len dávať pozor na to. 359 00:17:37,800 --> 00:17:40,790 To je to, čo to typicky kódy na mysli. 360 00:17:40,790 --> 00:17:44,200 Sú zahrnuté v programe Microsoft Word a ďalšie programy, takže ak súbor 361 00:17:44,200 --> 00:17:48,850 bug report s firmou, môžete povedzte im, oh, mám číslo chyby 45. 362 00:17:48,850 --> 00:17:51,750 A niektorí programátor späť v spoločnosti môže vyzerať, že v jeho alebo jej 363 00:17:51,750 --> 00:17:54,940 kód a povedať, oh, to preto, že som urobil táto chyba a to je dôvod, prečo užívateľ 364 00:17:54,940 --> 00:17:56,240 dostala túto správu. 365 00:17:56,240 --> 00:17:59,490 >> Ale úprimne povedané, je to len trochu rušivo a trochu nudné 366 00:17:59,490 --> 00:18:02,130 k záveru, že aspoň na našich Prvých niekoľko programov, a tak sme 367 00:18:02,130 --> 00:18:02,970 sa vynechá to. 368 00:18:02,970 --> 00:18:07,450 Ale celú tú dobu každý jeden z vašich Hlavné funkcie tajne mal toto 369 00:18:07,450 --> 00:18:11,600 linka automaticky pridané pre vás kompilátor, len tým, že konvencie 370 00:18:11,600 --> 00:18:13,172 ušetrí nejaký čas. 371 00:18:13,172 --> 00:18:14,620 >> [Nepočuteľný]. 372 00:18:14,620 --> 00:18:16,250 >> Nemusíte zahrnúť do hlavnej. 373 00:18:16,250 --> 00:18:16,700 To je v poriadku. 374 00:18:16,700 --> 00:18:20,260 Je potrebné zahrnúť, ak ste boli vykonávanie funkcií, ako je tento. 375 00:18:20,260 --> 00:18:22,850 Inak sa funkcia bytu sa nebude fungovať. 376 00:18:22,850 --> 00:18:24,480 Ale hlavné, že to nie je nutné. 377 00:18:24,480 --> 00:18:28,450 Za týždeň alebo dva, začneme dostať do tohto zvyku, akonáhle chceme začať 378 00:18:28,450 --> 00:18:29,690 znamenať chyby. 379 00:18:29,690 --> 00:18:32,550 Naozaj dobrá otázka. 380 00:18:32,550 --> 00:18:36,880 >> Tak rýchlo slovné prestávka spomenúť, že tento piatok, nebudeme mať obed 381 00:18:36,880 --> 00:18:39,980 samo o sebe, ale my budeme mať večeru s niektorých študentov a zamestnancov. 382 00:18:39,980 --> 00:18:42,940 Ak by ste sa k nám pripojiť, pocit môže ísť do cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 18:00 tento piatok. 384 00:18:45,030 --> 00:18:47,990 Vesmír je ako vždy obmedzená, ale budeme pokračovať v tom to na takmer 385 00:18:47,990 --> 00:18:51,420 raz týždenne, ak priestor Vypršal tento týždeň. 386 00:18:51,420 --> 00:18:56,160 >> Takže Cliffhanger, že sme skončili na Pondelok bolo, že reťazce môžu v skutočnosti 387 00:18:56,160 --> 00:19:00,520 byť indexované, čo práve znamená, že tie môže dostať na prvý znak, 388 00:19:00,520 --> 00:19:03,770 druhý znak, tretí znak a tak ďalej, pretože môžete 389 00:19:03,770 --> 00:19:07,860 efektívne myslieť na reťazce, napr Dobrý deň, ako v tomto prípade päť 390 00:19:07,860 --> 00:19:09,670 Písmená vnútri krabíc. 391 00:19:09,670 --> 00:19:13,370 A môžete získať v každom z týchto Krabica s tým, čo sme urobili syntaxe 392 00:19:13,370 --> 00:19:15,230 predstaví v pondelok? 393 00:19:15,230 --> 00:19:16,760 Tieto hranaté zátvorky na vašej klávesnici. 394 00:19:16,760 --> 00:19:18,980 To len chcel ísť do miesta nulové. 395 00:19:18,980 --> 00:19:22,840 >> Začneme počítať od nuly, takže držiak nula znamená h, držiak jeden 396 00:19:22,840 --> 00:19:25,170 E znamená, a tak ďalej. 397 00:19:25,170 --> 00:19:28,490 A tak po celú dobu, kedy sme boli pomocou reťazca a zadaním príkazu "ahoj" 398 00:19:28,490 --> 00:19:31,250 a "svet" a ďalšie veci na na obrazovke, to bolo uložené 399 00:19:31,250 --> 00:19:32,820 v krabiciach, ako je tento. 400 00:19:32,820 --> 00:19:33,370 A hádajte. 401 00:19:33,370 --> 00:19:37,470 Čo každý box predstavuje fyzicky vnútro vášho počítača? 402 00:19:37,470 --> 00:19:38,250 >> [Nepočuteľný]. 403 00:19:38,250 --> 00:19:39,150 >> Je nám ľúto? 404 00:19:39,150 --> 00:19:39,580 >> Postavy. 405 00:19:39,580 --> 00:19:44,760 >> Tak charakter, rozhodne v prípade, reťazcov a postava je len 406 00:19:44,760 --> 00:19:46,800 osem bitov alebo jeden byte. 407 00:19:46,800 --> 00:19:49,550 Takže ste pravdepodobne aspoň nejasne oboznámení s tým, že vaša 408 00:19:49,550 --> 00:19:50,500 počítač má pamäť. 409 00:19:50,500 --> 00:19:52,110 To má dva typy pamätí aspoň. 410 00:19:52,110 --> 00:19:54,810 Jedným z nich je pevný disk, kde ušetríte veci trvalo, a to 411 00:19:54,810 --> 00:19:57,400 typicky veľký, takže môžete mať filmy a hudbu a tak ďalej. 412 00:19:57,400 --> 00:20:04,010 >> Potom máte ďalší typ pamäte tzv RAM, R-A-M, Random Access 413 00:20:04,010 --> 00:20:07,510 Pamäť, a to je typ pamäte, , Ktorý sa používa, keď je počítač 414 00:20:07,510 --> 00:20:11,520 beží, ale ak už strácam silu alebo váš vybitia batérie, čokoľvek, čo je uložené 415 00:20:11,520 --> 00:20:15,300 v pamäti RAM zmizne, pokiaľ už strácam silu dohromady, pretože to nie je 416 00:20:15,300 --> 00:20:16,060 vytrvalý. 417 00:20:16,060 --> 00:20:19,120 Tie majú zvyčajne v týchto dňoch, koncert z toho dva koncerty, možno viac. 418 00:20:19,120 --> 00:20:23,490 A hore RAM je, že je to oveľa oveľa, oveľa rýchlejší ako pevné disky 419 00:20:23,490 --> 00:20:27,390 alebo dokonca solid state disky v týchto dňoch, ale je to zvyčajne drahšie, takže 420 00:20:27,390 --> 00:20:28,480 máte menej. 421 00:20:28,480 --> 00:20:32,400 >> Takže dnešný rozhovor skutočne odkazuje RAM, ktorý typ pamäte, ktorá 422 00:20:32,400 --> 00:20:35,270 existuje len keď tam je moc dodávané do počítača. 423 00:20:35,270 --> 00:20:40,530 Takže keď napíšete H-E-L-L-O, Enter klávesnice, H sa deje v jednom 424 00:20:40,530 --> 00:20:44,550 byte RAM, E sa deje v ďalší bajt pamäte RAM, ako je 425 00:20:44,550 --> 00:20:45,800 zvyšok slova. 426 00:20:45,800 --> 00:20:49,010 Takže spomenúť, čo sme boli schopní urobiť, minule to bolo. 427 00:20:49,010 --> 00:20:53,940 Nechaj ma ísť dopredu a otvoriť súbor že sme nazvali string.c a vyvolať 428 00:20:53,940 --> 00:20:56,860 že vyzeral trochu niečo také. 429 00:20:56,860 --> 00:20:59,860 Dovoľte mi, aby som skutočne vrátiť späť a zmeniť to presne to, čo vyzerá, 430 00:20:59,860 --> 00:21:02,654 dĺžka reťazca s 431 00:21:02,654 --> 00:21:04,560 >> Takže sa na programe tu. 432 00:21:04,560 --> 00:21:08,530 Sme patrí CS50 knižnicu tak že môžeme použiť získať reťazec. 433 00:21:08,530 --> 00:21:11,400 Použili sme štandardné IO.H takže môžeme použiť printf. 434 00:21:11,400 --> 00:21:13,580 Prečo sme ich string.h? 435 00:21:13,580 --> 00:21:16,980 To bol nový v pondelok. 436 00:21:16,980 --> 00:21:18,230 Takže sme chceli dĺžku reťazca. 437 00:21:18,230 --> 00:21:19,090 Str Leng. 438 00:21:19,090 --> 00:21:21,470 Ľudia sa rozhodli pred rokmi, buďme stručné. 439 00:21:21,470 --> 00:21:24,290 Namiesto toho, volať to "dĺžka reťazca," nazvime ju "str Leng" a nechajte 440 00:21:24,290 --> 00:21:28,540 Svet je číslo, ktoré sa, a tak to je to, čo dostaneme prístup k s string.h. 441 00:21:28,540 --> 00:21:29,390 >> To je dobre známa. 442 00:21:29,390 --> 00:21:30,320 To je dobre známa. 443 00:21:30,320 --> 00:21:31,450 To je dobre známa. 444 00:21:31,450 --> 00:21:32,370 Jedná sa o málo nových. 445 00:21:32,370 --> 00:21:35,420 V súlade 22 - a vrátime sa na to, ale teraz vieme - 446 00:21:35,420 --> 00:21:37,880 a vy by ste len vedieť to z nutnosti prečítajte si dokumentáciu, alebo ak 447 00:21:37,880 --> 00:21:39,010 ste vedel, že C už - 448 00:21:39,010 --> 00:21:41,510 dostať reťazec môže niekedy pokaziť. 449 00:21:41,510 --> 00:21:45,130 V prípade, že používateľ je skutočne nepriateľský alebo nespolupracujúce a on alebo ona len 450 00:21:45,130 --> 00:21:49,450 nemá nič písať na klávesnici alebo typy toľko na klávesnici, ktorá 451 00:21:49,450 --> 00:21:53,760 to premôže pamäte počítača, teoreticky dostať reťazec by sa mohol vrátiť 452 00:21:53,760 --> 00:21:56,270 niečo iné, než reťazec znakov. 453 00:21:56,270 --> 00:22:01,930 To by sa mohol vrátiť špeciálnu hodnotu s názvom NULL vo všetkých čiapky, N-U-L-L, a to je 454 00:22:01,930 --> 00:22:03,390 len tzv sentinel hodnotu. 455 00:22:03,390 --> 00:22:08,010 Je to zvláštne hodnotu, ktorá označuje, niečo zlé sa stalo v tomto prípade. 456 00:22:08,010 --> 00:22:10,520 To je absencia reťazca. 457 00:22:10,520 --> 00:22:16,190 >> Takže null som kontrolu jednoducho tak, dlhý príbeh krátky, str leng a 458 00:22:16,190 --> 00:22:20,230 ďalšie funkcie, ktoré prichádzajú s C, ak je očakávajú reťazec, ale predáte je 459 00:22:20,230 --> 00:22:23,630 absencia reťazca, predáte je NULL, počítač alebo program 460 00:22:23,630 --> 00:22:25,000 sa jednoducho zrúti úplne. 461 00:22:25,000 --> 00:22:25,610 To bude visieť. 462 00:22:25,610 --> 00:22:27,250 To sa bude hodiť do nejakej chybové hlásenie. 463 00:22:27,250 --> 00:22:28,690 Zlé veci sa bude diať. 464 00:22:28,690 --> 00:22:31,130 Takže aj keď je to stále nie je dobre definované - 465 00:22:31,130 --> 00:22:33,730 to bude dávať väčší zmysel v týždni alebo dve - v rade 22, je to len 466 00:22:33,730 --> 00:22:38,790 Príkladom vlastné obranné kontrolu chýb len v prípade, že jednou z 467 00:22:38,790 --> 00:22:42,040 miliónov sa niečo pokazí, na Aspoň môj program nebude padať. 468 00:22:42,040 --> 00:22:45,960 >> Takže ak to nie je rovná niečo zlé, Mám to pre sláčiky, a to bolo 469 00:22:45,960 --> 00:22:47,710 kde sme mali ten druhý nový kus syntaxe. 470 00:22:47,710 --> 00:22:51,580 Mám pre slučky iterácie od nula, až do dĺžky s 471 00:22:51,580 --> 00:22:56,140 A potom tu, bol som vytlačenie s držiak aj, ale prečo ja používam% c všetky 472 00:22:56,140 --> 00:23:00,770 Zrazu miesto% s ešte aj keď s je reťazec? 473 00:23:00,770 --> 00:23:02,110 Je to postava, nie? 474 00:23:02,110 --> 00:23:06,560 S je reťazec, ale s niečím držiak, Držiak s i, kde i je nulová 475 00:23:06,560 --> 00:23:10,380 alebo jeden alebo dva, to je individuálne znak v reťazci, a preto pre 476 00:23:10,380 --> 00:23:14,970 že printf musí byť informovaný, že je to naozaj postava očakávať. 477 00:23:14,970 --> 00:23:18,096 >> A potom si spomenúť, čo to urobil Program vlastne robiť? 478 00:23:18,096 --> 00:23:19,848 >> Vytlačené to v stĺpcoch. 479 00:23:19,848 --> 00:23:21,120 >> Jo, presne tak. 480 00:23:21,120 --> 00:23:24,990 Je to proste vytlačené slovo, ktoré som písať, stĺpec, jeden znak na riadku. 481 00:23:24,990 --> 00:23:26,190 Tak uvidíme znova. 482 00:23:26,190 --> 00:23:27,810 Tak, aby reťazec. 483 00:23:27,810 --> 00:23:30,200 Spracovala OK. . / String. 484 00:23:30,200 --> 00:23:35,560 Dovoľte mi, aby som zadajte H-E-L-L-O, Enter, a naozaj som si to, na každom riadku jeden. 485 00:23:35,560 --> 00:23:37,280 >> Takže mi dovoľte ešte jeden optimalizáciu tu. 486 00:23:37,280 --> 00:23:40,240 Pokiaľ si myslíte o tom, najmä ak ste naprogramované, je tu 487 00:23:40,240 --> 00:23:43,340 pravdepodobne neplatnosť v súlade 24. 488 00:23:43,340 --> 00:23:46,160 Inými slovami, nie je to nutne Najlepší dizajn. 489 00:23:46,160 --> 00:23:50,200 Jednoduchá, aspoň raz vás Pamätáš si, čo str Leng je, ale je to 490 00:23:50,200 --> 00:23:52,640 robiť niečo hlúpeho potenciálne. 491 00:23:52,640 --> 00:23:54,863 Čo by to mohlo byť? 492 00:23:54,863 --> 00:23:56,280 >> [Nepočuteľný]. 493 00:23:56,280 --> 00:23:56,800 >> Presne tak. 494 00:23:56,800 --> 00:24:00,340 Je kontrola dĺžky s zakaždým, aj keď 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O je vždycky sa päť znakov. 496 00:24:02,980 --> 00:24:05,490 Zakaždým, keď sa prostredníctvom tejto slučky, päť nemení. 497 00:24:05,490 --> 00:24:08,750 Mohol by som byť aj zvyšovanie, ale to, čo je dĺžka s na každom 498 00:24:08,750 --> 00:24:09,690 opakovanie tejto slučky? 499 00:24:09,690 --> 00:24:15,810 Je to päť, to je päť, to je päť, a napriek tomu som však pýtam 500 00:24:15,810 --> 00:24:18,320 otázku znova a znova a znova. 501 00:24:18,320 --> 00:24:20,750 Teraz úprimne povedané, počítač je tak sakramentsky rýchlo, nikto nevšimne 502 00:24:20,750 --> 00:24:23,780 Rozdiel je v tomto prípade, ale tieto druhy zlých rozhodnutí o návrhu môže 503 00:24:23,780 --> 00:24:28,330 začnú sčítavať, ak kompilátor sám Nesnaží sa opraviť to pre vás, ktorý 504 00:24:28,330 --> 00:24:30,630 zvyčajne to by nemal byť v aspoň v prístroji. 505 00:24:30,630 --> 00:24:31,540 >> Tak idem na to. 506 00:24:31,540 --> 00:24:34,580 Chystám sa pridať čiarku moja prvá premenná, i 507 00:24:34,580 --> 00:24:37,310 Chystám sa dať sám iný variabilný, volať to n, len tým, že 508 00:24:37,310 --> 00:24:41,330 konvencie pre čísla, a potom som bude priradiť n hodnotu reťazca 509 00:24:41,330 --> 00:24:42,530 dĺžka s 510 00:24:42,530 --> 00:24:46,060 A potom som sa zmení môj stav sa čo? 511 00:24:46,060 --> 00:24:51,960 Idem zmeniť svoj stav sa, keď som je menšia ako n. 512 00:24:51,960 --> 00:24:55,700 >> Takže teraz, koľkokrát som kontrolu dĺžky s? 513 00:24:55,700 --> 00:25:00,110 Raz, ale to je v poriadku kontrolovať aj proti n znova a znova, pretože teraz tie 514 00:25:00,110 --> 00:25:03,170 hodnoty sa skutočne mení. 515 00:25:03,170 --> 00:25:06,020 Teraz sa, len viem, že kedykoľvek volanie funkcie, je to trochu 516 00:25:06,020 --> 00:25:09,930 nad hlavou, nie je dosť odradiť naozaj od niekedy pomocou funkcií, ale 517 00:25:09,930 --> 00:25:12,750 iste, keď je riadok kódu páči - a linky budú mať 518 00:25:12,750 --> 00:25:15,490 zaujímavejšie onedlho - tam, kde je tu príležitosť premýšľať, či som 519 00:25:15,490 --> 00:25:18,320 zadajte tento kód, koľko krát to bude vykonávať? 520 00:25:18,320 --> 00:25:20,950 Začnete vidieť v priebehu času Výkon vašich programov môže 521 00:25:20,950 --> 00:25:21,660 naozaj zmeniť. 522 00:25:21,660 --> 00:25:24,110 >> V skutočnosti, jeden z problému sady máme urobil v minulých rokoch zahŕňa 523 00:25:24,110 --> 00:25:27,600 vykonávanie, ako si môže stiahnuť z týždeň nula, kontrola pravopisu, ale 524 00:25:27,600 --> 00:25:31,380 Kontrola pravopisu, ktorý je navrhnutý pre podporu slovník 150.000 a 525 00:25:31,380 --> 00:25:32,860 Slová, ktoré sme vám chalani. 526 00:25:32,860 --> 00:25:37,100 Budete musieť písať kód, ktorý načíta tieto slová do pamäte RAM, takže do 527 00:25:37,100 --> 00:25:40,700 krabice, ako sme videli na obrazovke na okamih rokmi, a potom rovnako rýchlo ako vy 528 00:25:40,700 --> 00:25:43,740 môžete, musíte byť schopní odpovedať otázka formy, je toto slovo 529 00:25:43,740 --> 00:25:44,280 chybne? 530 00:25:44,280 --> 00:25:45,420 Toto slovo je chybne? 531 00:25:45,420 --> 00:25:46,770 Toto slovo je chybne? 532 00:25:46,770 --> 00:25:49,525 >> A niečo také, čo máme urobil v minulých rokoch sa obrátil ju do, 533 00:25:49,525 --> 00:25:53,500 keď na opt-in dobrovoľnom základe, súťaž druhov, pričom 534 00:25:53,500 --> 00:25:59,470 študenti, ktorí používajú menej RAM a menej času, menej cykly procesora, skončí 535 00:25:59,470 --> 00:26:02,640 vyviera na vrchol málo leader board alebo poradí, ktoré kladieme na 536 00:26:02,640 --> 00:26:04,770 Kurz je úvodná stránka, ako máme prebiehala v rokoch minulých. 537 00:26:04,770 --> 00:26:08,100 Takže znova, úplne voliteľný, ale hovorí k návrhu príležitosti 538 00:26:08,100 --> 00:26:11,250 ktoré sú pred nami, akonáhle začneme budova na vrchole niektorej z nich 539 00:26:11,250 --> 00:26:14,010 základné stavebné kamene. 540 00:26:14,010 --> 00:26:16,780 >> Takže mi dovoľte vrátiť sa k tejto schéme pre len na chvíľu a odhaliť málo 541 00:26:16,780 --> 00:26:17,610 niečo viac. 542 00:26:17,610 --> 00:26:21,400 To je skutočne reťazec, a urobili sme Výhodou niekoľkých knižníc, 543 00:26:21,400 --> 00:26:25,150 štandardné IO.H ktorá má - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, okrem iného. 546 00:26:27,860 --> 00:26:31,540 cs50.h, ktorá sa int a získať reťazec a tak ďalej, string.h, ktorý 547 00:26:31,540 --> 00:26:32,570 mal str Leng. 548 00:26:32,570 --> 00:26:34,800 Ale ukazuje sa, že je ešte iný. 549 00:26:34,800 --> 00:26:38,540 Úprimne povedané, je tu veľa a veľa záhlavia Súbory, ktoré deklarujú funkcie 550 00:26:38,540 --> 00:26:43,320 pre knižnice, ale to je ctype.h v skutočnosti bude trochu 551 00:26:43,320 --> 00:26:46,900 výhodné, pretože idem ísť ďalej a realizovať jeden 552 00:26:46,900 --> 00:26:48,120 iný program tu. 553 00:26:48,120 --> 00:26:52,420 >> Nechaj ma ísť dopredu a otvoriť niečo Napísal som vopred s názvom 554 00:26:52,420 --> 00:26:55,750 capitalize.c, a poďme sa Pozrite sa, ako to funguje. 555 00:26:55,750 --> 00:27:00,340 Všimnite si, že som pomocou, v tejto verzii z toho tri známe súbory. 556 00:27:00,340 --> 00:27:04,110 Všimnite si, že v rade 18, som získanie riadok textu. 557 00:27:04,110 --> 00:27:07,660 Všimnite si riadku 21, som tvrdil, že Nasledujúci kód bude 558 00:27:07,660 --> 00:27:12,170 zarábať s, čo užívateľ napísal v roku, a ako to robím, že? 559 00:27:12,170 --> 00:27:13,300 No, ja si beriem - 560 00:27:13,300 --> 00:27:14,750 poučenie z minula - 561 00:27:14,750 --> 00:27:18,370 Ja som vyhlásil i a n a iterácie nad znaky v reťazci. 562 00:27:18,370 --> 00:27:22,720 A čo je to za blok kód v súlade 24 až 27. 563 00:27:22,720 --> 00:27:24,550 robí Laicky povedané? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Malé písmeno späť. 566 00:27:29,730 --> 00:27:30,430 >> Presne tak. 567 00:27:30,430 --> 00:27:35,920 Ak je držiak s aj -, takže v prípade, že i-ty charakter s, čo je špecifický 568 00:27:35,920 --> 00:27:40,220 char v reťazci, je väčší než alebo rovnajúcu sa malé písmená a - 569 00:27:40,220 --> 00:27:42,670 pripomenúť, že dvojitý ampersand znamenajú a - 570 00:27:42,670 --> 00:27:46,810 a rovnaký charakter, s držiak i, je menší ako alebo rovnajúcu sa malé písmená Z, 571 00:27:46,810 --> 00:27:50,600 to znamená, že to, alebo b alebo c alebo dot, dot, dot, alebo Z, čo znamená, že 572 00:27:50,600 --> 00:27:51,340 to je malá. 573 00:27:51,340 --> 00:27:52,900 Čo chcem robiť v tomto prípade? 574 00:27:52,900 --> 00:27:55,010 No, môžem to urobiť trochu záhadne, ale 575 00:27:55,010 --> 00:27:56,160 poďme podpichovať to od seba. 576 00:27:56,160 --> 00:28:00,210 >> Idem zavolať printf, vytlačí% c pretože chcem dotlač tohto 577 00:28:00,210 --> 00:28:01,580 znak na obrazovke. 578 00:28:01,580 --> 00:28:06,650 Ja potom bude trvať s držiak ja, i-tý znak s, a prečo 579 00:28:06,650 --> 00:28:12,330 robím tento malý trik tu, malá mínus kapitálu je? 580 00:28:12,330 --> 00:28:16,352 Čo to bude dať ja všeobecne? 581 00:28:16,352 --> 00:28:18,600 >> [Nepočuteľný]. 582 00:28:18,600 --> 00:28:19,390 >> Presne tak. 583 00:28:19,390 --> 00:28:20,860 Nemám moc nepamätám - 584 00:28:20,860 --> 00:28:24,390 to bolo 65 na kapitálové A. naozaj nemám Pamätáš si, čo malá je, 585 00:28:24,390 --> 00:28:25,540 ale to nevadí. 586 00:28:25,540 --> 00:28:26,580 Počítač vie. 587 00:28:26,580 --> 00:28:30,380 Takže tým, že hovorí, malá znamienko mínus kapitálu, je to divné, že 588 00:28:30,380 --> 00:28:33,530 odpočíta jeden char od druhého, ale aké sú znaky pod pokrievku? 589 00:28:33,530 --> 00:28:34,520 Sú to len čísla. 590 00:28:34,520 --> 00:28:36,980 Takže bez ohľadu na tieto čísla, nechajte počítač si to pamätať 591 00:28:36,980 --> 00:28:38,240 skôr než ja človek. 592 00:28:38,240 --> 00:28:41,710 >> Tak malá mínus kapitál je bude mi rozdiel. 593 00:28:41,710 --> 00:28:45,370 To sa stáva, že je 32, a že by sa prípad malým b a kapitálu B 594 00:28:45,370 --> 00:28:45,930 a tak ďalej. 595 00:28:45,930 --> 00:28:47,710 To zostáva konzistentné, našťastie. 596 00:28:47,710 --> 00:28:51,930 Takže som v podstate povedal, sa malé písmeno, odpočítať z tej 597 00:28:51,930 --> 00:28:55,340 štadartný diferenciál, a že držiak účinne Zmeny S i od 598 00:28:55,340 --> 00:28:59,400 malé písmená, samozrejme, veľká, bez toho aby som naozaj majú myslieť 599 00:28:59,400 --> 00:29:03,040 o alebo si pamätať, čo boli tí, Čísla s ktorými sme hovorili o tom, kedy osem 600 00:29:03,040 --> 00:29:04,800 dobrovoľníkov prišla na pódium? 601 00:29:04,800 --> 00:29:08,800 Teraz medzitým, v inak, pokiaľ to nie je malé písmeno ako je stanovené 602 00:29:08,800 --> 00:29:10,400 linkou 24, stačí ju vytlačiť. 603 00:29:10,400 --> 00:29:12,590 Ja len chcem, aby ste sa nedotkli znaky, ktoré boli 604 00:29:12,590 --> 00:29:14,410 vlastne pôvodne malé písmená. 605 00:29:14,410 --> 00:29:15,150 >> Takže poďme sa pozrieť. 606 00:29:15,150 --> 00:29:17,400 Urobiť využiť. 607 00:29:17,400 --> 00:29:18,470 Spracovala, OK. 608 00:29:18,470 --> 00:29:19,730 . / Zarobiť. 609 00:29:19,730 --> 00:29:23,530 A dovoľte mi písať v H-E-L-L-O malými písmenami, Enter. 610 00:29:23,530 --> 00:29:26,370 A zistíte, že je prevedený na veľká. 611 00:29:26,370 --> 00:29:27,940 Nechaj ma to urobiť znova iný slovo. 612 00:29:27,940 --> 00:29:32,720 Ako sa o D-A-V-I-D s prvým D zarábal ako meno je obvykle? 613 00:29:32,720 --> 00:29:33,560 Enter. 614 00:29:33,560 --> 00:29:34,870 Všimnite si, že je stále platná. 615 00:29:34,870 --> 00:29:40,250 To len, že prvý výstup D bezo zmeny cez ktoré else. 616 00:29:40,250 --> 00:29:42,170 >> Takže majte na pamäti, potom pár vecí tu. 617 00:29:42,170 --> 00:29:45,060 Po prvé, ak ste niekedy chceli skontrolovať dva podmienky naraz, môžete im a 618 00:29:45,060 --> 00:29:46,500 spolu, ako sme predpovedali. 619 00:29:46,500 --> 00:29:49,900 Môžete porovnať znaky týmto spôsobom a účinne liečiť znaky ako 620 00:29:49,900 --> 00:29:53,050 čísla, ale úprimne povedané, je to tak sakramentsky mystický Nikdy nebudem pamätať 621 00:29:53,050 --> 00:29:56,510 ako prísť s tým od začiatku bez uvažovania cez to na celkom 622 00:29:56,510 --> 00:29:57,140 trochu času. 623 00:29:57,140 --> 00:30:00,590 >> Nebolo by pekné, keby niekto tam napísal funkciu nazvanú je 624 00:30:00,590 --> 00:30:05,390 zníženie, ktoré by mohli zodpovedať za mňa true alebo false, tento znak je malá? 625 00:30:05,390 --> 00:30:09,350 No našťastie, kto napísal ctype.h urobil presne to. 626 00:30:09,350 --> 00:30:15,540 Nechaj ma ísť sem a pridať Cdruh pre c typy, a teraz nechaj ma ísť sem dole a 627 00:30:15,540 --> 00:30:18,820 prepísať tento riadok takto. 628 00:30:18,820 --> 00:30:27,510 >> Takže ak sa to nazýva, je nižšia, tvrdím, je držiak i, potom idem zmazať 629 00:30:27,510 --> 00:30:29,400 tieto dva riadky dohromady. 630 00:30:29,400 --> 00:30:32,570 Takže teraz niekto iný, dúfam, napísal s názvom funkcie je nižšia, a to 631 00:30:32,570 --> 00:30:36,250 ukázalo sa, že to urobili, a oni deklarovali že vnútri ctype.h. 632 00:30:36,250 --> 00:30:39,480 A teraz idem nechať linku 27 sám, idem nechať linku 31 633 00:30:39,480 --> 00:30:41,890 sám, ale všimnite si, ako veľmi som sprísnila svoj kód. 634 00:30:41,890 --> 00:30:42,690 Teraz je čistejšie. 635 00:30:42,690 --> 00:30:47,250 Je to menej ťažké prehliadnuť pretože sa funkcie, je navyše 636 00:30:47,250 --> 00:30:50,080 tak nádherne menoval to len robí to, čo hovorí. 637 00:30:50,080 --> 00:30:51,520 >> Takže teraz idem zachrániť to. 638 00:30:51,520 --> 00:30:52,930 Chystám sa oddialiť. 639 00:30:52,930 --> 00:30:56,650 A rovnako ako v Scratch by ste mohli mať Booleovské operácie, logické hodnoty true alebo 640 00:30:56,650 --> 00:31:01,530 false, to je presne to, čo je nižšia skutočne vráti. 641 00:31:01,530 --> 00:31:02,960 Dovoľte mi, aby som prekompilovať. 642 00:31:02,960 --> 00:31:04,500 Dovoľte mi, aby som re-run. 643 00:31:04,500 --> 00:31:07,350 A teraz skúsme to znova, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 To je celkom dobrý. 645 00:31:07,970 --> 00:31:10,150 A skúste to znova, uistite sa, že som sa nezničí niečo vymyslieť. 646 00:31:10,150 --> 00:31:11,670 To je aktivované rovnako. 647 00:31:11,670 --> 00:31:14,190 >> Ale to nie je dosť dobrý, pretože Ďalšia vec, ktorá ma nikdy 648 00:31:14,190 --> 00:31:19,090 spomeniete, ak pracujem cez to naozaj opatrne na, povedzme, papier 649 00:31:19,090 --> 00:31:19,920 to sakramentsky riadok. 650 00:31:19,920 --> 00:31:23,450 Nebolo by pekné, keby tam boli volaná funkcia na hornej? 651 00:31:23,450 --> 00:31:26,930 Tak to dopadá, že je v ctype.h rovnako. 652 00:31:26,930 --> 00:31:30,150 Chystám sa ísť dopredu a zadajte - 653 00:31:30,150 --> 00:31:31,340 dovoľte mi, aby som tento riadok späť. 654 00:31:31,340 --> 00:31:36,430 Namiesto toho tu, nechaj ma ísť napred a hovoria, nahrádzať% C 655 00:31:36,430 --> 00:31:42,110 Výsledkom volanie tejto funkcie Horný na i-tom charakteru s 656 00:31:42,110 --> 00:31:45,430 A teraz všimnete, že to stále trochu vyvážiť. 657 00:31:45,430 --> 00:31:48,870 Musím sledovať, koľko zátvorky som otvoriť a zatvoriť. 658 00:31:48,870 --> 00:31:50,050 >> Takže teraz je to ešte čistejšie. 659 00:31:50,050 --> 00:31:53,460 Teraz je tento program stále lepšie a lepšie navrhnuté pravdepodobne preto, že je 660 00:31:53,460 --> 00:31:56,450 oveľa, oveľa čitateľnejší, ale Nie je to poďme napraviť. 661 00:31:56,450 --> 00:31:57,600 Urobiť využiť. 662 00:31:57,600 --> 00:31:58,930 . / Zarobiť. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Poďme spustiť znovu, D - V-I-D. OK, takže sme stále v 664 00:32:03,220 --> 00:32:04,250 celkom dobrej kondícii. 665 00:32:04,250 --> 00:32:06,030 >> Ale teraz k hornej. 666 00:32:06,030 --> 00:32:09,720 Navrhujem, že je tu ešte jedna zjemnenie môžeme robiť, že by bolo 667 00:32:09,720 --> 00:32:12,820 naozaj pekné, mohlo by to naozaj dotiahnuť do tohto kódu, a naozaj nám päť 668 00:32:12,820 --> 00:32:15,150 z piatich pre návrh, napríklad. 669 00:32:15,150 --> 00:32:16,510 Čo by bolo pekné, ako sa zbaviť? 670 00:32:16,510 --> 00:32:20,770 No, pozrite sa, ako sakramentsky dlhé tento blok Kód je len niečo jednoduché. 671 00:32:20,770 --> 00:32:23,850 >> Teraz, ako stranou, pretože môžete mať vidieť v super časti minulý 672 00:32:23,850 --> 00:32:27,570 víkend, nemusíte nevyhnutne potrebuje, Zložené zátvorky, keď stačí mať jeden 673 00:32:27,570 --> 00:32:32,180 riadok kódu, aj keď sme navrhli držať je tak, že je oveľa 674 00:32:32,180 --> 00:32:36,190 jasnejšie, ako v Scratch je v tvare písmena U bloky, čo je vo vnútri pobočky. 675 00:32:36,190 --> 00:32:40,170 Ale nebolo by to bolo pekné, keby na hornej, keď vzhľadom k jeho vstup, otočil sa do 676 00:32:40,170 --> 00:32:44,730 veľké písmená, ak tomu tak nie je, a to, čo by bolo úžasné v opačnom prípade, ak 677 00:32:44,730 --> 00:32:47,210 je to už veľká? 678 00:32:47,210 --> 00:32:49,620 Stačí prejsť cez a nechať to byť. 679 00:32:49,620 --> 00:32:50,660 >> Takže možno, že to robí. 680 00:32:50,660 --> 00:32:52,990 Mohol by som to skúsiť, a len dúfam, , Že nemá, ale dovoľte mi, aby som 681 00:32:52,990 --> 00:32:54,450 predstaviť jednu vec. 682 00:32:54,450 --> 00:32:57,440 Namiesto použitia tohto zabudovaný terminál Okno sa tu pripomenúť, že 683 00:32:57,440 --> 00:33:01,130 Toto námestie čierna ikona vám väčšie okno terminálu, že môžem plný 684 00:33:01,130 --> 00:33:02,260 obrazovky, ak chcem? 685 00:33:02,260 --> 00:33:05,820 Tak to dopadá, že sú nejako podivne menoval, ale je tu nazývajú veci 686 00:33:05,820 --> 00:33:10,970 manuálových stránok, manuálové stránky, muž v krátkosti, a ja k nim pristupovať podľa 687 00:33:10,970 --> 00:33:14,515 písanie muž - 688 00:33:14,515 --> 00:33:15,570 čo chcem písať na stroji? 689 00:33:15,570 --> 00:33:17,830 Človek do hornej. 690 00:33:17,830 --> 00:33:21,090 >> A teraz zistíte, ak existuje funkcie vnútri počítača, v 691 00:33:21,090 --> 00:33:23,970 V tomto prípade je prístroj, ktorý je práve operačný systém Linux, bude to 692 00:33:23,970 --> 00:33:27,920 aby mi trochu záhadný súbor výstup, ale zistíte, že v priebehu času 693 00:33:27,920 --> 00:33:31,720 vždy je formátovaný do značnej miery rovnaké, takže začnete to zvyknúť. 694 00:33:31,720 --> 00:33:35,130 Všimnite si, v hornej časti na hornej a zrejme je rovnaký dokumentácie 695 00:33:35,130 --> 00:33:35,680 na znížiť. 696 00:33:35,680 --> 00:33:38,740 Ten, kto písal, že to bolo nejaké rezanie rohy a dať to všetko na jednej stránke. 697 00:33:38,740 --> 00:33:40,720 Účelom týchto vecí "v život je previesť 698 00:33:40,720 --> 00:33:42,780 List hornej alebo malé písmená. 699 00:33:42,780 --> 00:33:46,290 >> Všimnite si, že v Synopsis manuálové stránky Učí ma, čo mám súbor 700 00:33:46,290 --> 00:33:48,130 zahrnúť používať túto vec. 701 00:33:48,130 --> 00:33:51,320 To mi dáva podpisy na nich funkcie, a to ako z nich, a to aj 702 00:33:51,320 --> 00:33:53,510 keď sme teraz len starostlivosť o jednom. 703 00:33:53,510 --> 00:33:54,730 Tu je teraz popis. 704 00:33:54,730 --> 00:33:58,800 Ak chcete horný prevádza list c veľká, ak je to možné. 705 00:33:58,800 --> 00:34:02,280 >> Stále nie je to poučné, ale dovoľte mi, aby som teraz pozrieť pod návratovú hodnotu, vec, 706 00:34:02,280 --> 00:34:03,520 ktorý je odovzdaný späť. 707 00:34:03,520 --> 00:34:08,600 Takže vrátená hodnota je, že prevedené písmeno alebo c, ak 708 00:34:08,600 --> 00:34:09,870 konverzie nebolo možné. 709 00:34:09,870 --> 00:34:11,202 Čo je to c? 710 00:34:11,202 --> 00:34:12,560 >> Pôvodný charakter. 711 00:34:12,560 --> 00:34:15,370 >> Pôvodný charakter a vieme, že by opäť stúpa do 712 00:34:15,370 --> 00:34:19,179 synopse, a ten, kto to napísal Funkcia sa rozhodli, že vstupné 713 00:34:19,179 --> 00:34:22,909 sa na hornej a spodnej, je len ľubovoľne sa mal volať c 714 00:34:22,909 --> 00:34:24,909 Mohli by hovorili, že väčšina niečo chcú, ale stále to 715 00:34:24,909 --> 00:34:26,270 jednoduché c 716 00:34:26,270 --> 00:34:27,880 Tak som konzultovala manuálovú stránku. 717 00:34:27,880 --> 00:34:31,870 Táto veta uisťuje ma, že ak to nie je malé písmeno, je to 718 00:34:31,870 --> 00:34:34,969 bude daj mi C, čo je perfektné, čo znamená, že môžete zbaviť 719 00:34:34,969 --> 00:34:36,199 môj iný stav. 720 00:34:36,199 --> 00:34:39,679 >> Tak nechaj ma ísť späť do gedit, a Teraz mi dovoľte to. 721 00:34:39,679 --> 00:34:41,960 Idem kopírovať mojej printf vyhlásenia. 722 00:34:41,960 --> 00:34:45,969 Chystám sa ísť dopredu a doprava vnútri slučky pre tlač, ktoré sa, a získať 723 00:34:45,969 --> 00:34:48,760 zbaviť sa tohto celku, ak by konštrukcia. 724 00:34:48,760 --> 00:34:51,860 Nebol to zlý nápad, a bolo to veľmi Koľko správne av súlade s 725 00:34:51,860 --> 00:34:54,100 všetko, čo sme kázali, ale jednoducho nie je nutné. 726 00:34:54,100 --> 00:34:57,070 Akonáhle si uvedomíte, niektoré knižnice funkcia existuje, že niekto iný 727 00:34:57,070 --> 00:35:01,340 písal, alebo možno ste napísal inde súboru, môžete ho použiť, a naozaj 728 00:35:01,340 --> 00:35:02,690 začať sprísniť kód. 729 00:35:02,690 --> 00:35:06,080 >> A keď hovorím veci ako dobrom štýle, skutočnosť, že sa táto osoba nazýva 730 00:35:06,080 --> 00:35:11,490 pracovať na hornej, alebo skôr, je nižšia je nádherne užitočná, pretože 731 00:35:11,490 --> 00:35:12,900 sú veľmi popisné. 732 00:35:12,900 --> 00:35:16,120 Tie by nechcel volať funkcie x a y a z, ktoré majú 733 00:35:16,120 --> 00:35:19,620 oveľa, oveľa menší význam. 734 00:35:19,620 --> 00:35:25,160 Akékoľvek otázky týkajúce sa tejto série vylepšenie? 735 00:35:25,160 --> 00:35:28,010 >> Takže stačí teda jeden z takeaways je dokonca ako svoj vlastný problém 736 00:35:28,010 --> 00:35:30,960 set - možno problém nastaviť jednu, ale Určite P nastaviť dva a dopredu, dokonca 737 00:35:30,960 --> 00:35:34,380 keď sú správne nemusí nutne znamenať, že sú perfektné len 738 00:35:34,380 --> 00:35:36,155 ešte, alebo veľmi dobre navrhnuté. 739 00:35:36,155 --> 00:35:38,420 To je ďalší osi začať premýšľať o tom. 740 00:35:38,420 --> 00:35:41,730 Takže to bol reťazec vnútri vášho pamäť počítača, ale ak máte 741 00:35:41,730 --> 00:35:46,180 celá partia postáv ako H-E-L-L-O v pamäti RAM, a predpokladajme, 742 00:35:46,180 --> 00:35:51,330 ktoré ste v programe volať získať reťazec niekoľkokrát taká, že 743 00:35:51,330 --> 00:35:54,200 zavolajte si reťazec raz, potom zavolajte si reťazec znova. 744 00:35:54,200 --> 00:35:55,880 No, čo sa deje na sa stalo v priebehu času? 745 00:35:55,880 --> 00:35:59,170 >> Inými slovami, ak máte linku kód, aj keď z kontextu, ako je 746 00:35:59,170 --> 00:36:02,120 string s dostane - 747 00:36:02,120 --> 00:36:02,960 poďme na to. 748 00:36:02,960 --> 00:36:05,270 String name rovná sa reťazec. 749 00:36:05,270 --> 00:36:08,590 Takže predpokladám, že riadok kódu je určená požiadať užívateľa o jeho alebo jej meno. 750 00:36:08,590 --> 00:36:14,580 Táto ďalší riadok kódu je chcel opýtať, užívateľ pre jeho alebo jej školy, a 751 00:36:14,580 --> 00:36:15,920 Táto ďalší riadok, a tak ďalej. 752 00:36:15,920 --> 00:36:18,150 Predpokladajme, že sme stále pýtajú užívateľa pre ďalšie a 753 00:36:18,150 --> 00:36:19,750 ďalšie a ďalšie reťazec. 754 00:36:19,750 --> 00:36:22,390 Chystajú sa zostať v pamäti v rovnakom čase. 755 00:36:22,390 --> 00:36:24,280 Jedným z nich je nebude handry druhej. 756 00:36:24,280 --> 00:36:26,420 Škola je neprepíše iný. 757 00:36:26,420 --> 00:36:28,520 Ale kam sa všetci skončí v pamäti? 758 00:36:28,520 --> 00:36:32,030 >> No, ak začneme kresliť na obrazovku, ktoré môžeme použiť túto vec 759 00:36:32,030 --> 00:36:35,800 tu ako tabuľu, ak je táto čierna obdĺžnik predstavuje môj počítač je 760 00:36:35,800 --> 00:36:39,800 pamäť, budem ľubovoľne začať rozdeliť ju na malé štvorčeky, 761 00:36:39,800 --> 00:36:42,120 z ktorých každá reprezentuje jeden bajt pamäte. 762 00:36:42,120 --> 00:36:46,560 Úprimne povedané, ak máte gigabajty pamäte RAM v týchto dňoch, máte miliardu bajtov 763 00:36:46,560 --> 00:36:49,540 pamäte vo vašom počítači, takže miliarda týchto štvorcov. 764 00:36:49,540 --> 00:36:52,110 Takže stačí povedať, to v skutočnosti nie je v mierke. 765 00:36:52,110 --> 00:36:58,250 >> Ale my sme mohli držať čerpanie všetkých týchto zjavne nie sú v mierke štvorca, a to 766 00:36:58,250 --> 00:37:01,260 súhrnne predstavuje mojej pamäti počítača. 767 00:37:01,260 --> 00:37:03,136 Teraz budeme proste bodka, bodka, bodka. 768 00:37:03,136 --> 00:37:06,260 Takže inými slovami, keď som teraz vyzve Užívateľ s get reťazca, aby mi 769 00:37:06,260 --> 00:37:07,350 reťazec, čo sa stane? 770 00:37:07,350 --> 00:37:14,270 Ak používateľ zadá "ahoj", ktorá sa končí v H-E-L-L-O. Ale predpokladajme, že 771 00:37:14,270 --> 00:37:15,720 Užívateľ potom druhy uvedené v - 772 00:37:15,720 --> 00:37:17,250 Vlastne by som nemal robiť Dobrý deň, pretože sa pýtame 773 00:37:17,250 --> 00:37:18,330 je ich názvy. 774 00:37:18,330 --> 00:37:20,580 Tak poďme naspäť, keď to zvládnem. 775 00:37:20,580 --> 00:37:26,130 >> Takže keď som typ D-A-V-I-D pre moje meno, ale pripomenúť, že druhý riadok 776 00:37:26,130 --> 00:37:29,220 Kód bol dostať reťazec znova získať ich školu. 777 00:37:29,220 --> 00:37:32,090 Kde je, že slovo, ktoré užívateľ druhy uvedené v ísť ďalej? 778 00:37:32,090 --> 00:37:38,290 No, možno to bude ísť do H-A-R-V-A-R-D. Takže aj keď som 779 00:37:38,290 --> 00:37:41,560 vypracovaný ako dvoch radoch, je to len celá partia bytoch vo vašom 780 00:37:41,560 --> 00:37:42,710 počítača RAM. 781 00:37:42,710 --> 00:37:46,560 Je tu problém teraz, pretože teraz, keď som pomocou RAM v tomto veľmi rozumné 782 00:37:46,560 --> 00:37:49,910 ale trochu naivný spôsobom, čo môžete nie je zrejme rozlišovať? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Tam, kde jeden začína a kde jeden koniec, nie? 785 00:37:54,680 --> 00:37:55,860 Sú trochu rozmazaniu dohromady. 786 00:37:55,860 --> 00:37:57,920 >> Tak to dopadá počítač to nerobí. 787 00:37:57,920 --> 00:38:04,720 Dovoľte mi vlastne môžete vrátiť v čase a niekoľko znakov a miesto Harvarde 788 00:38:04,720 --> 00:38:09,570 bude ihneď po užívateľským menom, používateľ skutočne dostane, za 789 00:38:09,570 --> 00:38:12,000 scény, špeciálny znak vložil 790 00:38:12,000 --> 00:38:13,885 Počítač pre neho. 791 00:38:13,885 --> 00:38:19,470 / 0, inak známy ako znak NUL nepríjemne tzv N-U-L, nie 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, ale píšete to ako / 0. 793 00:38:22,190 --> 00:38:27,130 Je to len všetky nulových bitov je marker medzi prvým slovom, ktoré užívateľa 794 00:38:27,130 --> 00:38:28,290 napísal a druhý. 795 00:38:28,290 --> 00:38:33,020 >> Takže Harvard vlastne teraz končí ako je sekvencia znakov 796 00:38:33,020 --> 00:38:36,110 a ešte jedna / 0. 797 00:38:36,110 --> 00:38:41,690 Takže inými slovami, tým, že tieto overovací hodnoty, osem susediace nula 798 00:38:41,690 --> 00:38:45,220 bity, si teraz môžete začať rozlišovať jeden znak z druhého. 799 00:38:45,220 --> 00:38:49,720 Takže celú tú dobu, čo bolo "ahoj" je vlastne "ahoj" s / 0, a 800 00:38:49,720 --> 00:38:53,580 Zatiaľ by sa tam veľmi dobre byť trochu viac pamäte RAM 801 00:38:53,580 --> 00:38:56,400 vnútri počítača. 802 00:38:56,400 --> 00:38:57,810 >> Nechaj ma urobiť jednu vec teraz. 803 00:38:57,810 --> 00:39:01,800 Ukazuje sa, že všetky z týchto štvorcov sme boli kreslenie, sú, áno, 804 00:39:01,800 --> 00:39:06,140 reťazca, ale všeobecne, tieto veci sú polia. 805 00:39:06,140 --> 00:39:10,590 Pole je len kus pamäte to je chrbtom k sebe k sebe k sebe, 806 00:39:10,590 --> 00:39:15,130 a zvyčajne používajú rad spôsobom tohto hranatá zátvorka zápisu. 807 00:39:15,130 --> 00:39:18,210 Takže budeme vidieť, ako sa trochu v priebehu času, ale dovoľte mi ísť dopredu a 808 00:39:18,210 --> 00:39:21,160 otvoriť, povedzme veku. 809 00:39:21,160 --> 00:39:23,920 A všimnite si, čo s nimi môžeme robiť tie isté triky, malé 810 00:39:23,920 --> 00:39:25,750 trochu syntaxe tu. 811 00:39:25,750 --> 00:39:29,270 >> Takže v rade 17 tohto programu - skutočnosti, dovoľte mi, aby som najprv spustiť program 812 00:39:29,270 --> 00:39:30,770 a tak môžeme vidieť, čo toto robí. 813 00:39:30,770 --> 00:39:33,530 Zavolám, aby na veky skompilovať tento program. 814 00:39:33,530 --> 00:39:34,950 . / Vek. 815 00:39:34,950 --> 00:39:36,480 Koľko ľudí je v miestnosti? 816 00:39:36,480 --> 00:39:38,020 Nazvime to tri. 817 00:39:38,020 --> 00:39:39,575 Vek prvej osobe? 818 00:39:39,575 --> 00:39:42,710 18, 19, a 20. 819 00:39:42,710 --> 00:39:46,770 A teraz trochu smiešne, ja len urobili program, ktorý ages ty 820 00:39:46,770 --> 00:39:47,740 traja ľudia. 821 00:39:47,740 --> 00:39:50,390 >> Takže je tu jasne príležitosť pre nejakú zábavu aritmetiky tu. 822 00:39:50,390 --> 00:39:51,560 Našťastie, matematika je správna. 823 00:39:51,560 --> 00:39:54,720 18 šiel do 19, 19 išiel do 20 a tak ďalej. 824 00:39:54,720 --> 00:39:58,510 Ale to, čo naozaj znamená byť Ilustratívny je, ako sme ukladanie 825 00:39:58,510 --> 00:40:00,190 vek týchto troch ľudí. 826 00:40:00,190 --> 00:40:02,370 Dovoľte mi priblížiť, čo je tu deje. 827 00:40:02,370 --> 00:40:06,240 >> Takže v prvom rade, by mali tieto prvý pár riadkov je stále dosť známe. 828 00:40:06,240 --> 00:40:08,770 Ja som len výzva k zvoleniu počet ľudí v miestnosti. 829 00:40:08,770 --> 00:40:11,490 Potom som pomocou dostať int a robiť, keď sa to znova a znova a znova. 830 00:40:11,490 --> 00:40:15,780 Videli sme, že vzor predtým, ale linka 27 je nový a celkom 831 00:40:15,780 --> 00:40:18,160 užitočné, a bude sa stále užitočné. 832 00:40:18,160 --> 00:40:21,620 Všimnite si, že to, čo je v súlade 27 je, že som sa zdajú byť vyhlásenie 833 00:40:21,620 --> 00:40:23,960 int tzv veky, ale počkajte. 834 00:40:23,960 --> 00:40:27,140 Nie je to len int veku. 835 00:40:27,140 --> 00:40:30,130 Tam je táto hranaté zátvorky, vnútri ktorej je n 836 00:40:30,130 --> 00:40:35,150 >> Takže držiak n v tejto súvislosti, nie vnútri printf vyhlásenie tu, ale 837 00:40:35,150 --> 00:40:44,370 V tejto jedinej linke 27, tento riadok povedal, daj mi n INT, z ktorých každá 838 00:40:44,370 --> 00:40:46,080 je typu int. 839 00:40:46,080 --> 00:40:49,870 Tak to je vedro, aby som tak povedal, z, v tomto prípade tri celé čísla späť do 840 00:40:49,870 --> 00:40:52,770 chrbtom k sebe, takže som skutočne má tri premenné. 841 00:40:52,770 --> 00:40:54,890 Alternatívou, aby sa jasné, že je to. 842 00:40:54,890 --> 00:40:57,400 >> Ak by som chcel najprv študenta vek, mohol by som to urobiť. 843 00:40:57,400 --> 00:40:59,520 Keby som chcel druhý študenta vek by som mohol urobiť. 844 00:40:59,520 --> 00:41:01,860 Keby som chcel tretie študenta vek, mohol by som to urobiť. 845 00:41:01,860 --> 00:41:04,320 A nedaj bože potrebujeme každého z nás vek v tejto miestnosti - 846 00:41:04,320 --> 00:41:07,670 Myslím, že je to sakra veľa kópie, vložiť znova a znova a znova. 847 00:41:07,670 --> 00:41:10,870 A navyše, keď som skompilovať tento program, ak ďalší študent chodí cez von 848 00:41:10,870 --> 00:41:14,200 z dverí, teraz moje číslo premenných je nesprávne. 849 00:41:14,200 --> 00:41:17,450 >> Takže to, čo je pekné o pole je Akonáhle sa začnete cítiť sami 850 00:41:17,450 --> 00:41:20,190 kopírovanie a vkladanie, je pravdepodobné, že je to nie je najlepší prístup. 851 00:41:20,190 --> 00:41:22,240 Pole je dynamická potenciálne. 852 00:41:22,240 --> 00:41:24,610 Neviem dopredu, koľko ľudí sa bude v miestnosti, 853 00:41:24,610 --> 00:41:28,670 ale viem, že musím n z nich, a budem zistiť, n, keď príde čas. 854 00:41:28,670 --> 00:41:35,500 Tento riadok kódu teraz znamená, daj mi kus pamäti, ktorá vyzerá takto 855 00:41:35,500 --> 00:41:40,380 kde počet schránok na obrazovke je úplne závislá na n ktoré 856 00:41:40,380 --> 00:41:42,010 Užívateľ napísal palcov 857 00:41:42,010 --> 00:41:44,850 >> Takže teraz zvyšok tohto programu je vlastne celkom podobné tomu, čo sme 858 00:41:44,850 --> 00:41:46,860 Len som sa znaky. 859 00:41:46,860 --> 00:41:49,970 Všimnite si, mám pre sláčiky začína v riadku 30. 860 00:41:49,970 --> 00:41:54,920 Takže hneď po som si pole, som prechádzať z y rovná nule až na n 861 00:41:54,920 --> 00:41:58,890 Len som to poučné printf správy len hovorím, daj mi vek 862 00:41:58,890 --> 00:42:03,690 osoby #% aj tak číslo jedna, číslo dva, číslo tri. 863 00:42:03,690 --> 00:42:04,730 A prečo som to urobil? 864 00:42:04,730 --> 00:42:08,870 Úprimne povedané, ľudia radšej počítať od jednej na hore, zatiaľ čo počítačoví vedci, 865 00:42:08,870 --> 00:42:09,620 nuly hore. 866 00:42:09,620 --> 00:42:11,700 počítačoví experti nebudú použiť tento druh programu, takže sme 867 00:42:11,700 --> 00:42:13,990 bude len začať počítať v jednom, ako normálnych ľudí. 868 00:42:13,990 --> 00:42:17,630 >> A teraz v súlade 33, všimnete mierne iný kus syntaxe. 869 00:42:17,630 --> 00:42:23,710 I-tý vek v tej premennej typu poľa dostane int. 870 00:42:23,710 --> 00:42:25,770 A teraz konečne, je to len aritmetický sem. 871 00:42:25,770 --> 00:42:29,200 Rozhodol som sa v samostatnej slučke tvrdí, nejaký čas ubieha, a teraz v tejto 872 00:42:29,200 --> 00:42:31,400 samostatná slučka, tieto riadky spustiť. 873 00:42:31,400 --> 00:42:35,810 >> Odo dneška za rok, človek i bude aj rokov, ale oznámenie nie je 874 00:42:35,810 --> 00:42:36,500 premennej i 875 00:42:36,500 --> 00:42:38,390 To je teraz% aj pre int. 876 00:42:38,390 --> 00:42:43,210 A oznámenia ako prvý zástupný symbol, Aj zapojte aj plus 1, takže počítame ako 877 00:42:43,210 --> 00:42:44,250 normálny človek. 878 00:42:44,250 --> 00:42:49,190 A potom sa za hodnotu ich veku, pre i rokov, beriem ages držiak 879 00:42:49,190 --> 00:42:52,980 i - a prečo to robím a jeden tu? 880 00:42:52,980 --> 00:42:53,760 Proste veku. 881 00:42:53,760 --> 00:42:55,030 Je to moja hlúpa voľba programov. 882 00:42:55,030 --> 00:42:56,810 Proste vo veku jedného roka. 883 00:42:56,810 --> 00:42:59,770 Mohol by som písať v akejkoľvek číslo, ktoré Ja vlastne chcem tam. 884 00:42:59,770 --> 00:43:02,430 >> Takže čo to vlastne všetko relevance tu? 885 00:43:02,430 --> 00:43:07,610 No, dovoľte mi vlastne listovať sem a namaľovať obraz 886 00:43:07,610 --> 00:43:10,830 toho, čo leží pred nami. 887 00:43:10,830 --> 00:43:15,720 Čo budeme robiť s našou ďalšou Problém nastaviť dva sa pustili do 888 00:43:15,720 --> 00:43:17,070 svet kryptografie. 889 00:43:17,070 --> 00:43:22,500 Takže to je reťazec znakov, takže sekvencie z viacerých znakov, a to, čo 890 00:43:22,500 --> 00:43:23,750 to hovorí? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 Nie je to v online verzii zo snímok. 893 00:43:30,600 --> 00:43:35,880 >> Takže tvrdím, že to sa rovná to, hlúpa reklama od mnohých rokov 894 00:43:35,880 --> 00:43:39,950 pred ktorý by mohol vyvolať jeden z jeho pôvodu. 895 00:43:39,950 --> 00:43:42,740 Tak to je príklad šifrovanie alebo šifrovanie. 896 00:43:42,740 --> 00:43:46,150 Ukazuje sa, že ak chcete v skutočnosti poslať informácie alebo zdieľať 897 00:43:46,150 --> 00:43:49,310 informácie s niekým bezpečne ako správy, ako je táto, môžete 898 00:43:49,310 --> 00:43:50,500 vyškriabať listy. 899 00:43:50,500 --> 00:43:53,170 Ale zvyčajne sú slová nie sú kódované náhodne. 900 00:43:53,170 --> 00:43:56,365 Sú deionizovaná nejakým spôsobom alebo zmeniť nejakým spôsobom, aby - oops. 901 00:43:56,365 --> 00:43:59,040 To je zábava spojler pre nabudúce. 902 00:43:59,040 --> 00:44:04,390 >> Takže si môžete zmapovať, čo je zrejme O všímať B., ktorý zoradí 903 00:44:04,390 --> 00:44:05,420 kapitalizácie ručičiek. 904 00:44:05,420 --> 00:44:07,960 Zrejme r e sa stane. 905 00:44:07,960 --> 00:44:14,000 Zdá sa F-H-E-R sa S-U-R-E. Tak Ukazuje sa, že je mapovanie, a 906 00:44:14,000 --> 00:44:18,720 V tomto prípade je to dosť hlúpy mapovanie, či má niekto na to prišiel? 907 00:44:18,720 --> 00:44:21,440 To je niečo, čo nazýva Rot 13, 13 Otočiť. 908 00:44:21,440 --> 00:44:24,760 Je to najhlúpejší šifrovanie mechanizmy, pretože to doslova 909 00:44:24,760 --> 00:44:29,160 pridáva 13 na každého z písmen, hlúpy v tom zmysle, že ak ste práve 910 00:44:29,160 --> 00:44:31,890 mať trochu voľného času na ruky a ceruzka, alebo si len myslím, že 911 00:44:31,890 --> 00:44:35,260 až v hlave, môžete skúsiť všetky možné obrázky - jeden, dva, 912 00:44:35,260 --> 00:44:38,470 tri, bodka, bodka, bodka, len 25 otočte celú abecedu a 913 00:44:38,470 --> 00:44:40,860 nakoniec budete zistiť, čo táto správa je. 914 00:44:40,860 --> 00:44:43,700 Takže ak ste niečo také v základnej školy odovzdávanie správ do 915 00:44:43,700 --> 00:44:46,830 najlepší priateľ, ak vaše základné školy Učiteľ len prečítať 916 00:44:46,830 --> 00:44:50,320 správy a brutálny nútení riešenie, Možno ste dostali 917 00:44:50,320 --> 00:44:52,550 odpoveď, že. 918 00:44:52,550 --> 00:44:54,970 >> Teraz samozrejme, v reálnom svete, kryptografie je zložitejšia. 919 00:44:54,970 --> 00:45:00,120 To je úryvok textu, ktorý je počítačový systém, ktorý má užívateľské meno a 920 00:45:00,120 --> 00:45:03,630 hesiel, ako takmer všetci z nás robia, a To je to, čo by mohlo vaše heslo 921 00:45:03,630 --> 00:45:07,260 vyzerať, ak je uložený na pevnom riadiť, ale v zašifrovanej forme. 922 00:45:07,260 --> 00:45:11,050 To nie je len rotácie listov, Je B a B je C. To je 923 00:45:11,050 --> 00:45:15,620 oveľa sofistikovanejšie, ale používa čo je všeobecne známe ako tajný kľúč 924 00:45:15,620 --> 00:45:16,690 kryptografie. 925 00:45:16,690 --> 00:45:20,210 Tento snímok rozpráva nasledujúce Príbeh s niekoľkými ikonami. 926 00:45:20,210 --> 00:45:22,250 >> Na ľavej strane, máme to, čo zavoláme obyčajný text. 927 00:45:22,250 --> 00:45:25,420 Vo svete kryptografia, prostý Text je pôvodný správu 928 00:45:25,420 --> 00:45:29,050 písaný v angličtine alebo francúzštine alebo jazyka vôbec. 929 00:45:29,050 --> 00:45:32,405 Ak chcete zašifrovať, budeme odovzdávať je obrazovo cez visiacim zámkom, takže 930 00:45:32,405 --> 00:45:35,580 niektoré druh algoritmu, niektoré funkcie alebo program, ktorý niekto napísal 931 00:45:35,580 --> 00:45:39,880 že sa perie písmená dúfajme viac komplikovane ako jednoduchým pridaním 13 932 00:45:39,880 --> 00:45:40,980 ku každému z nich. 933 00:45:40,980 --> 00:45:43,780 >> Čo získate z tohto procesu, Uprostred sa nazýva cyphertext. 934 00:45:43,780 --> 00:45:44,850 Tak trochu sexy slová. 935 00:45:44,850 --> 00:45:47,630 To len znamená, že je šifrovaná verzia obyčajný text. 936 00:45:47,630 --> 00:45:52,570 A iba ak máte rovnaký tajomstvo, 13 alebo mínus 13, ste schopní 937 00:45:52,570 --> 00:45:54,970 dešifrovať správy takhle. 938 00:45:54,970 --> 00:45:57,770 >> Takže problém nastaviť dva, medzi vecami, budete robiť, keď v Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, budete musieť napísať kód bezva tieto heslá, prísť na to, 940 00:46:01,860 --> 00:46:05,170 čo sú zač a ako boli zašifrované, ale my vám trochu 941 00:46:05,170 --> 00:46:06,460 z vedenia pozdĺž cesty. 942 00:46:06,460 --> 00:46:09,320 V Standard Edition, predstavíme pár šifier, šifrovanie 943 00:46:09,320 --> 00:46:12,400 mechanizmy, jeden s názvom Caesar, jeden volal Vigenère, ktoré sú stále 944 00:46:12,400 --> 00:46:16,100 rotačné šifry, kedy sa stane niečo, B sa stáva niečím, ale 945 00:46:16,100 --> 00:46:18,820 musíte to urobiť programovo pretože tam bude skutočne tajná 946 00:46:18,820 --> 00:46:22,840 kľúč zúčastnených, z ktorých je zvyčajne číslo alebo kľúčové slovo, ktoré iba 947 00:46:22,840 --> 00:46:26,420 odosielateľ a príjemca týchto správy by mal pochopiť. 948 00:46:26,420 --> 00:46:28,660 >> Teraz, to vlastne má inkarnácie v reálnom svete. 949 00:46:28,660 --> 00:46:32,910 Toto, napríklad, je málo orphan Annie je tajné dekodér prsteň, a 950 00:46:32,910 --> 00:46:35,180 môže skutočne realizovať tieto rotačné šifry - 951 00:46:35,180 --> 00:46:37,930 Sa stáva niečím, B sa stáva niečo - s niekoľkými kolesami, 952 00:46:37,930 --> 00:46:40,840 jeden na vonkajšej strane, druhá vnútri taká, že ak otočíte kolieskom alebo 953 00:46:40,840 --> 00:46:44,170 krúžok, môžete skutočne zarovnať listy s rôznymi písmenami, 954 00:46:44,170 --> 00:46:45,430 získanie tajného kódu. 955 00:46:45,430 --> 00:46:48,110 A tak ako Cliffhanger pre dnešok, čo som myslel, že to je trochu 956 00:46:48,110 --> 00:46:52,170 návrat, že ak zapnete televíziu 24. decembra, môžete sledovať 957 00:46:52,170 --> 00:46:55,390 Film najmenších podrobností pre 24 hodín v rade. 958 00:46:55,390 --> 00:47:06,030 Ale pre dnešok, otvorím to tu a dá nám len dve minúty z 959 00:47:06,030 --> 00:47:13,493 pedagogicky relevantné Vianočný príbeh s malým chlapíkom menom Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [PLAYBACK] 961 00:47:14,400 --> 00:47:17,420 >> -Či už je to známe všetkým a rôzne, že Ralph Parker je menovaný 962 00:47:17,420 --> 00:47:20,650 člen Malý sirota Annie tajomstvo kruh a je oprávnený na všetky 963 00:47:20,650 --> 00:47:23,460 so cťou a výhody vyskytujúce sa na ne vzťahujú. 964 00:47:23,460 --> 00:47:25,990 >> -Podpísané, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Spolupodpísal, Pierre Andre atramentom. 966 00:47:30,100 --> 00:47:34,270 Vyznamenania a výhody už vo veku deviatich rokov. 967 00:47:34,270 --> 00:47:39,440 >> [Kričal na rozhlasových] 968 00:47:39,440 --> 00:47:40,770 >> Poď, ideme na to. 969 00:47:40,770 --> 00:47:44,965 Nepotrebujem All That Jazz o pašeráci a piráti. 970 00:47:44,965 --> 00:47:48,270 >> -Počúvajte zajtra pre uzavretie dobrodružstvo čierny 971 00:47:48,270 --> 00:47:49,650 pirátska loď. 972 00:47:49,650 --> 00:47:53,320 Teraz je čas na tajomstvo Annie Správa pre vás členmi 973 00:47:53,320 --> 00:47:55,720 tajného kruhu. 974 00:47:55,720 --> 00:47:56,580 Pamätajte si, deti. 975 00:47:56,580 --> 00:48:01,720 Iba členovia Secret Circle Annie vie dekódovať Annie tajnú správu. 976 00:48:01,720 --> 00:48:05,872 Pamätajte si, že Annie je závislá na vás. 977 00:48:05,872 --> 00:48:08,670 Nastaviť piny B2. 978 00:48:08,670 --> 00:48:11,000 Tu je správa. 979 00:48:11,000 --> 00:48:12,335 12., 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Ja som vo svojom prvom tajnej schôdzke. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre bol vo veľkej hlasové dnes. 983 00:48:21,650 --> 00:48:24,830 Som spoznal, že z dnešnej správy bolo naozaj dôležité. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 To je správa od Annie sama. 986 00:48:28,540 --> 00:48:30,086 Pamätajte si, že nikomu to nehovorte. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Sekúnd neskôr som v jedinej miestnosti v dome, kde deväťročný chlapec 989 00:48:38,710 --> 00:48:42,668 mohli sedieť v súkromí a dekódovanie. 990 00:48:42,668 --> 00:48:47,628 Aha, B. som išiel na ďalšie. 991 00:48:47,628 --> 00:48:53,060 E. Prvé slovo je "byť." S. Prichádzalo to teraz jednoduchšie. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 To je R. 994 00:48:55,940 --> 00:48:56,900 >> -No tak, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Musím ísť. 996 00:48:57,860 --> 00:48:59,780 >> -Hneď som dole, mami. 997 00:48:59,780 --> 00:49:01,030 Gee svišťanie. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Uistite sa, že. 1000 00:49:08,220 --> 00:49:09,500 Uistite sa, že to, čo? 1001 00:49:09,500 --> 00:49:11,660 Aký bol malý sirota Annie snaží povedať? 1002 00:49:11,660 --> 00:49:12,844 Uistite sa, že to, čo? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy má ísť. 1004 00:49:14,732 --> 00:49:16,148 Prosím vás vyjde? 1005 00:49:16,148 --> 00:49:17,092 >> -Dobre, mami. 1006 00:49:17,092 --> 00:49:18,510 Budem hneď späť. 1007 00:49:18,510 --> 00:49:20,270 >> -Bol som stále bližšie do súčasnosti. 1008 00:49:20,270 --> 00:49:21,823 Napätie bolo hrozné. 1009 00:49:21,823 --> 00:49:23,045 Čo to bolo? 1010 00:49:23,045 --> 00:49:26,510 Osud planéty môže visí na vlásku. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, Randyho musím ísť. 1012 00:49:28,985 --> 00:49:32,680 >> -Hneď som von kričať nahlas. 1013 00:49:32,680 --> 00:49:33,956 >> -Už tam skoro sme. 1014 00:49:33,956 --> 00:49:35,140 Prsty sa mi letel. 1015 00:49:35,140 --> 00:49:36,880 Moja myseľ bola oceľová pasca. 1016 00:49:36,880 --> 00:49:38,010 Každý pórov vibroval. 1017 00:49:38,010 --> 00:49:39,878 To bolo skoro jasno. 1018 00:49:39,878 --> 00:49:43,210 Áno, áno, áno, áno, áno. 1019 00:49:43,210 --> 00:49:49,030 >> -Uistite sa, že piť Ovaltine. 1020 00:49:49,030 --> 00:49:50,280 Ovaltine? 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 Mizerný reklamu? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Ten hajzel. 1025 00:50:00,694 --> 00:50:01,900 >> [END PLAYBACK] 1026 00:50:01,900 --> 00:50:04,260 >> Reproduktor 1: Toto je CS50, a že bude problém nastaviť dva. 1027 00:50:04,260 --> 00:50:06,305 Uvidíme sa budúci týždeň. 1028 00:50:06,305 --> 00:50:08,800 >> SPEAKER 2: Na ďalšom CS50, sa to stane. 1029 00:50:08,800 --> 00:50:11,060 >> Reproduktor 1: Takže jednu tému, nemáme Pozrel sa na potiaľ je 1030 00:50:11,060 --> 00:50:12,220 že funkčných ukazovateľov. 1031 00:50:12,220 --> 00:50:14,540 Teraz, ukazovateľ funkcia je len adresu verejné 1032 00:50:14,540 --> 00:50:17,000 funkcie, ale rovnako ako - 1033 00:50:17,000 --> 00:50:18,250 syn - 1034 00:50:18,250 --> 00:50:19,670