1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] DAVID J. Malan: Dobře, to je CS50, a to je 2 00:00:09,920 --> 00:00:15,250 konec 1. týdne, takže studijní karty jsou v a celkový počet 3 00:00:15,250 --> 00:00:18,640 spolužáci, že máte tento rok je 745. 4 00:00:18,640 --> 00:00:20,920 A my jsme tak nadšeni, že tak mnoho z vás v průběhu 5 00:00:20,920 --> 00:00:23,680 tento semestr, ale i přesto je tento kurz je tak velký, 6 00:00:23,680 --> 00:00:26,090 uvědomit, že to tyto věci jako oběd pátek jako 7 00:00:26,090 --> 00:00:29,020 úřední hodiny, 15-person profily, a tak dále, aby 8 00:00:29,020 --> 00:00:30,590 jsou opravdu chtěl vytvořit tento více intimní 9 00:00:30,590 --> 00:00:31,140 prostředí. 10 00:00:31,140 --> 00:00:34,070 Takže i když můžeme shromažďovat jednou nebo dvakrát týdně, tady v 11 00:00:34,070 --> 00:00:36,420 Sanders, vím, že hodně z vašich zkušeností v tomto kurzu 12 00:00:36,420 --> 00:00:39,330 bude velmi se hands-on na boku vašich spolužáků 13 00:00:39,330 --> 00:00:40,730 a pedagogičtí pracovníci. 14 00:00:40,730 --> 00:00:43,960 >> Tak jdeme na to, Fall 2012. 15 00:00:43,960 --> 00:00:47,530 Takže připomenout, že naposledy jsme skončil na sdělení ze dne 16 00:00:47,530 --> 00:00:50,460 nepřesnost, mluví o reprezentaci čísel. 17 00:00:50,460 --> 00:00:52,950 A my jsme se na jednom z poruch, které se staly v 18 00:00:52,950 --> 00:00:54,920 reálný svět, když to přišlo k nedorozumění 19 00:00:54,920 --> 00:00:55,890 jak počítače fungují. 20 00:00:55,890 --> 00:00:58,590 No, dnes budeme znovu další z těch nápadů, jak 21 00:00:58,590 --> 00:01:01,410 a pokračovat v naší diskuzi o CS50 klienta 22 00:01:01,410 --> 00:01:04,090 a C a co to znamená opravdu programu. 23 00:01:04,090 --> 00:01:06,430 Ale nejdřív, jen pár oznámení vichru. 24 00:01:06,430 --> 00:01:08,930 >> Sekce začnou tuto neděli, a první týden je vždy 25 00:01:08,930 --> 00:01:11,030 trochu rychlým rozběhem, protože jsme zrovna v 26 00:01:11,030 --> 00:01:12,620 svého oddílu formuláře. 27 00:01:12,620 --> 00:01:14,450 Děláme totéž, nyní s výukových kolegy, nyní 28 00:01:14,450 --> 00:01:16,410 že znají své plány, takže jsme s cílem, by 29 00:01:16,410 --> 00:01:19,380 V sobotu ráno, aby se vám, s vaším sekci 30 00:01:19,380 --> 00:01:20,760 přiřazení a TF. 31 00:01:20,760 --> 00:01:22,770 Uvědomte si, že začnou příští den, v neděli 32 00:01:22,770 --> 00:01:24,510 nebo v pondělí nebo v úterý. 33 00:01:24,510 --> 00:01:27,730 A pak jsme se ubytovat v části změny, které nastanou 34 00:01:27,730 --> 00:01:28,690 v nadcházejících dnech. 35 00:01:28,690 --> 00:01:31,590 Úřední hodiny, zatím jsou, opět, dnes, dvacet hodin na 11, v 36 00:01:31,590 --> 00:01:33,740 Annenberg, stejně jako zítra večer. 37 00:01:33,740 --> 00:01:36,150 I když problém sady jsou obecně kvůli čtvrtek 38 00:01:36,150 --> 00:01:39,020 v poledne, že jste si až pět pozdní dní strávit, 39 00:01:39,020 --> 00:01:42,430 tedy dostupnost úředních hodin ve čtvrtek, pokud 40 00:01:42,430 --> 00:01:45,930 vy hotovosti v jedné z těchto pozdních dnů, a tím, předloží 41 00:01:45,930 --> 00:01:47,070 něco na pátek. 42 00:01:47,070 --> 00:01:50,850 Dovolte mi navrhnout, že Scratch je mezi více zábavy, mezi 43 00:01:50,850 --> 00:01:52,390 Více nejnižší Klíčovým problémem sady. 44 00:01:52,390 --> 00:01:55,160 A já bych viset na těchto pozdních dnů, strategicky, jen 45 00:01:55,160 --> 00:01:57,380 pro pozdější použití do semestru, kdy život začíná v cestě 46 00:01:57,380 --> 00:01:59,470 s midterms a jiných tříd. 47 00:01:59,470 --> 00:02:01,580 Problém Set 1, mezitím, bude zanecháno kurz je 48 00:02:01,580 --> 00:02:06,080 Webové stránky tento pátek, jak bude na hřišti chůze 49 00:02:06,080 --> 00:02:08,789 přes video, které bude natočen v 14:30 v pátek 50 00:02:08,789 --> 00:02:11,890 a poté odesláno on-line do druhého dne. 51 00:02:11,890 --> 00:02:13,880 >> Takže jsme skončili v pondělí. 52 00:02:13,880 --> 00:02:15,450 Chci - vlastně, poznamenat, zde. 53 00:02:15,450 --> 00:02:18,870 Protože třídy - protože Sanders není přesně zapůjčení 54 00:02:18,870 --> 00:02:22,220 sám k příležitostnému Q & A sem a tam moc dobře, že jsme 55 00:02:22,220 --> 00:02:24,030 Pokusím se něco málo nových letošním roce, kdy 56 00:02:24,030 --> 00:02:26,160 Pokud nejste spokojeni zvýšit svou ruku, nebo si jen 57 00:02:26,160 --> 00:02:28,800 by raději zvednout ruku v místnosti, jako je tato, 58 00:02:28,800 --> 00:02:30,710 budeme mít některé z výukových kolegy a CAS 59 00:02:30,710 --> 00:02:33,260 obsazení cs50.net/discuss během přednášky. 60 00:02:33,260 --> 00:02:35,440 Takže pokud máte nějakou otázku, protože jsem byl úplně 61 00:02:35,440 --> 00:02:37,510 jasné, o něčem, nebo jste zvědaví, některé 62 00:02:37,510 --> 00:02:39,640 téma, zkuste vysílání to tam. 63 00:02:39,640 --> 00:02:42,670 Označit ji štítku Přednáška, a my se budeme snažit 64 00:02:42,670 --> 00:02:45,430 dnes a příští týden - Dáme zkuste tohle - postavit ji 65 00:02:45,430 --> 00:02:47,990 buď v elektronické, on-line, nebo pokud je to jako bychom měli 66 00:02:47,990 --> 00:02:50,430 Opravdu se jí zabývaly en masse, jeden z výukových chlapíků, nebo 67 00:02:50,430 --> 00:02:52,080 CA zvýší jejich ruku a zeptat se 68 00:02:52,080 --> 00:02:53,480 anonymně vaším jménem. 69 00:02:53,480 --> 00:02:55,650 Takže dáme to zkuste a uvidíte, jak dobře to funguje. 70 00:02:55,650 --> 00:02:58,540 Ale v každém případě, i nadále zvyšovat ruce, jako byste chtěli. 71 00:02:58,540 --> 00:03:11,420 >> Takže naposledy jsme zjistili, že 10% nebo jednu desetinu není v 72 00:03:11,420 --> 00:03:13,840 Skutečnost, 0.1, jako byste se učili před mnoha lety. 73 00:03:13,840 --> 00:03:15,390 Je to ve skutečnosti, hodnota takto. 74 00:03:15,390 --> 00:03:16,970 Ale to není zcela pravda, ne? 75 00:03:16,970 --> 00:03:19,585 Musíme jen toto omezení v počítačích, kdy, pokud 76 00:03:19,585 --> 00:03:22,450 mají pouze omezené množství paměti, RAM, nebo více 77 00:03:22,450 --> 00:03:25,220 konkrétně bity, dobře, je to jen konečný počet 78 00:03:25,220 --> 00:03:26,980 věcí, které mohou představovat. 79 00:03:26,980 --> 00:03:29,780 Například, pokud budeme mít číslo nula, a chceme, aby 80 00:03:29,780 --> 00:03:32,790 představují v binární, pomocí osmi bitů, kde bit, 81 00:03:32,790 --> 00:03:34,710 znovu, je nula nebo jedna, můžeme 82 00:03:34,710 --> 00:03:39,240 představují jako 00000000. 83 00:03:39,240 --> 00:03:41,160 A to je trochu zbytečně upovídaný. 84 00:03:41,160 --> 00:03:43,700 Stejně jako v desítkové soustavě v reálném světě, 85 00:03:43,700 --> 00:03:47,040 obecně, pokud chcete napsat číslo 123, se 86 00:03:47,040 --> 00:03:52,240 lidé pravděpodobně nebudou psát 00000123, i když, 87 00:03:52,240 --> 00:03:53,940 funkčně, že je to přesně stejný počet. 88 00:03:53,940 --> 00:03:56,580 Jsme jen kapka úvodní nuly, abych tak řekl. 89 00:03:56,580 --> 00:03:58,270 >> V binární, můžeme totéž. 90 00:03:58,270 --> 00:04:01,440 Binární a nula, nula a binární je jen nula. 91 00:04:01,440 --> 00:04:02,870 Potřebujete pouze jeden bit. 92 00:04:02,870 --> 00:04:05,020 Ale znovu, nejčastěji měrná jednotka na světě 93 00:04:05,020 --> 00:04:07,820 výpočetní jsou bajty, osm bitů. 94 00:04:07,820 --> 00:04:09,720 Jen proto, že jeden bit, docela k ničemu. 95 00:04:09,720 --> 00:04:12,020 Osm bitů, není příliš užitečná, ale alespoň je to více 96 00:04:12,020 --> 00:04:14,280 užitečnější než jednu měrnou jednotku. 97 00:04:14,280 --> 00:04:17,100 Takže pomocí osmi bitů, budeme obvykle představují binární. 98 00:04:17,100 --> 00:04:20,459 Takže tu máme čísla nula, jedna, dva, a pak, jak 99 00:04:20,459 --> 00:04:24,200 Nate dělal v našem videu minulou středu, můžeme pokračovat 100 00:04:24,200 --> 00:04:25,940 počítání až sedm, osm. 101 00:04:25,940 --> 00:04:27,860 A pak pokud budeme používat více a více bitů, jsme 102 00:04:27,860 --> 00:04:29,880 může počítat do nekonečna. 103 00:04:29,880 --> 00:04:32,800 Ale pokud máte jen konečný počet těchto bitů, jako je 104 00:04:32,800 --> 00:04:35,030 případ jakéhokoli počítačového systému, nebo dokonce střela 105 00:04:35,030 --> 00:04:36,670 systém, dobře, opravdu máte jen 106 00:04:36,670 --> 00:04:37,900 konečné množství přesnosti. 107 00:04:37,900 --> 00:04:41,290 Takže pokud chcete, aby zastupoval číslo jako 0,1, dobře, 108 00:04:41,290 --> 00:04:43,410 Počítač musí vybírat. 109 00:04:43,410 --> 00:04:45,970 A pokud to má jen konečný počet čísel pro to, 110 00:04:45,970 --> 00:04:50,490 představují, může přiblížit 0,1 pro ty, ale to nemůže 111 00:04:50,490 --> 00:04:53,730 nutně vám přesně hodnotu, kterou chcete. 112 00:04:53,730 --> 00:04:55,660 A to je jen jeden z problémů počítačů, 113 00:04:55,660 --> 00:04:57,090 pod kapotou, naštěstí. 114 00:04:57,090 --> 00:04:59,110 >> Jak jsme se přestěhovat dál v semestru, tyto nižší úrovně 115 00:04:59,110 --> 00:05:02,310 Podrobnosti mnohem méně zajímavé, ale rozhodně 116 00:05:02,310 --> 00:05:05,700 aplikace těchto myšlenek může mít některé velmi reálný svět 117 00:05:05,700 --> 00:05:06,760 následky. 118 00:05:06,760 --> 00:05:08,190 Jedním z nich je trochu legrace. 119 00:05:08,190 --> 00:05:12,150 Jak mnozí z vás viděli úžasný film Office Space? 120 00:05:12,150 --> 00:05:13,620 Pokud nemáte, je to váš neoficiální 121 00:05:13,620 --> 00:05:14,370 domácí za týden. 122 00:05:14,370 --> 00:05:16,730 Ale v kancelářských prostor, se chlapi v tomto filmu se 123 00:05:16,730 --> 00:05:19,900 Výhodou právě tohoto nápadu, ale oni vlastně ukradli 124 00:05:19,900 --> 00:05:21,270 to z jiného filmu, který by se Vám mohl mít 125 00:05:21,270 --> 00:05:22,760 Viděl, dokonce i roky předchozí. 126 00:05:22,760 --> 00:05:24,920 Takže mi dovolte, abych vám několik sekund tohoto přívěsu od 127 00:05:24,920 --> 00:05:27,470 tento úžasný film a to je velmi 128 00:05:27,470 --> 00:05:28,340 akademicky relevantní. 129 00:05:28,340 --> 00:05:30,310 >> [Hraje filmů] 130 00:05:30,310 --> 00:05:32,240 Vlastně jsem byl povýšen. 131 00:05:32,240 --> 00:05:33,360 Mohu naprogramovat virus, který bude trhat, že 132 00:05:33,360 --> 00:05:34,460 místo off velký čas. 133 00:05:34,460 --> 00:05:35,770 No, jak to funguje? 134 00:05:35,770 --> 00:05:37,836 Pokaždé, když je bankovní transakce, kde úroky jsou 135 00:05:37,836 --> 00:05:40,154 vypočítaný, existují tisíce den, počítač skončí 136 00:05:40,154 --> 00:05:41,040 s těmito zlomky procenta. 137 00:05:41,040 --> 00:05:43,050 Ale já nebudu dělat nic nezákonného. 138 00:05:43,050 --> 00:05:46,730 Nelegální? Samir, tohle je Amerika. 139 00:05:46,730 --> 00:05:48,010 Musíte přísahám Bohu. 140 00:05:48,010 --> 00:05:51,870 Pokud nikdo neví o tom, ale nás, v pořádku? Žádní rodinní příslušníci, žádné 141 00:05:51,870 --> 00:05:52,490 přítelkyně, nikdo. 142 00:05:52,490 --> 00:05:53,882 [Neslyšitelné]. 143 00:05:53,882 --> 00:05:57,594 Nebojte se, člověče, já to nikomu neřeknu ani. 144 00:05:57,594 --> 00:05:59,680 [Film končí] 145 00:05:59,680 --> 00:06:01,900 >> Dobře, takže možná jsem našel tento film lepší než většina 146 00:06:01,900 --> 00:06:05,530 lidé tady, ale v žádném případě, virus, že byly 147 00:06:05,530 --> 00:06:06,400 snaží vytvořit - 148 00:06:06,400 --> 00:06:08,410 a ve filmech, kdykoliv se to nazval něco virus, 149 00:06:08,410 --> 00:06:09,770 to obecně není vlastně virus. 150 00:06:09,770 --> 00:06:11,600 Je to jen program, který někdo napsal něco udělat. 151 00:06:11,600 --> 00:06:13,800 A v tomto případě, že kluci se snažili napsat program 152 00:06:13,800 --> 00:06:16,610 které využily jejich společnost s názvem INNOTECH tyto 153 00:06:16,610 --> 00:06:19,740 výpočetní systém, v jehož rámci počítače, taky, i když to 154 00:06:19,740 --> 00:06:21,350 přijde na peníze, nemůže být nutně 155 00:06:21,350 --> 00:06:23,490 představují peníze přesně. 156 00:06:23,490 --> 00:06:27,630 Takže i když budete muset 0,10 dolarů na váš bankovní účet, 157 00:06:27,630 --> 00:06:31,060 0,10, dobře, že počítač skutečně myslíte, že máte 158 00:06:31,060 --> 00:06:33,560 tento mnoho centů ve vašem bankovním účtu. 159 00:06:33,560 --> 00:06:35,750 A tak to, co tihle hoši byli aspirující na to - a oni 160 00:06:35,750 --> 00:06:38,240 ukradl nápad, to dopadá z Nadčlověk III, kde 161 00:06:38,240 --> 00:06:41,210 Richard Pryor udělal stejnou věc - oni byli nezbytně 162 00:06:41,210 --> 00:06:44,880 psaní programů, které aspirují, aby všechny koncové 163 00:06:44,880 --> 00:06:46,930 čísla, všechny z malých, drobných, malých frakcí 164 00:06:46,930 --> 00:06:50,160 pennies, a nasává ty z tak, aby se lidé jen 165 00:06:50,160 --> 00:06:52,620 myšlenka, oh, je to jen 0,10 dolarů tam, ale všichni ti, 166 00:06:52,620 --> 00:06:54,410 koncové čísla nakonec sčítají. 167 00:06:54,410 --> 00:06:57,490 Tak skvělý nápad a to selhalo vesele v tom, že 168 00:06:57,490 --> 00:06:58,250 zejména film. 169 00:06:58,250 --> 00:07:01,800 >> Ale v reálném světě, i tam jsou mnohem více o 170 00:07:01,800 --> 00:07:03,190 Důsledky těchto druhů věcí. 171 00:07:03,190 --> 00:07:05,450 A jedním z důvodů, proč se do toho ponořit do oblasti počítačové 172 00:07:05,450 --> 00:07:07,620 vědy je opět jeho použitelnost ne 173 00:07:07,620 --> 00:07:09,740 inženýrské vědy samotné, ale jen proto, aby 174 00:07:09,740 --> 00:07:10,650 jiných oblastech. 175 00:07:10,650 --> 00:07:14,760 Tak to je méně veselý pohled na to, co se může pokazit, ale 176 00:07:14,760 --> 00:07:17,630 je to také docela otevření očí, myslím, pokud jde o 177 00:07:17,630 --> 00:07:20,760 pochopení přesně tak, jak všudypřítomné technologie jako 178 00:07:20,760 --> 00:07:22,870 počítače a programování, nebo v těchto dnech, 179 00:07:22,870 --> 00:07:23,930 ve formě softwaru. 180 00:07:23,930 --> 00:07:26,500 Takže to další klip je jen asi šest minut, pokračuje 181 00:07:26,500 --> 00:07:30,320 kde jsme skončili minule, ale umožňuje nám nahlédnout trochu 182 00:07:30,320 --> 00:07:33,370 více do hloubky na jeden takový z těchto otázek. 183 00:07:33,370 --> 00:07:35,270 Dovolte mi, abych přeskočte na místo, kde jsme skončili, 184 00:07:35,270 --> 00:07:37,780 který byl tady. 185 00:07:37,780 --> 00:07:41,580 A máme druhou část dva, přibližně šest minut zde. 186 00:07:41,580 --> 00:07:41,980 >> [PLAY MOVIE] 187 00:07:41,980 --> 00:07:45,430 Soužený moderní raketové techniky. 188 00:07:45,430 --> 00:07:49,280 V roce 1991, se na začátku první Gulf válce, Patriot 189 00:07:49,280 --> 00:07:51,350 Střela zažil podobný typ 190 00:07:51,350 --> 00:07:52,645 číslo konverze problém. 191 00:07:52,645 --> 00:07:57,460 A jako výsledek, bylo zabito 20 lidí, 20 amerických vojáků, 192 00:07:57,460 --> 00:08:01,130 a asi 100 dalších zraněno, když Patriot, který měl 193 00:08:01,130 --> 00:08:03,400 na ochranu proti příchozí pluje, 194 00:08:03,400 --> 00:08:06,020 nepodařilo vystřelit raketu. 195 00:08:06,020 --> 00:08:09,350 >> Když Irák napadl Kuvajt a Spojené státy rozpoutaly Desert 196 00:08:09,350 --> 00:08:13,530 Storm počátkem roku 1991, Patriot raketové baterie byly 197 00:08:13,530 --> 00:08:16,970 nasazeny na ochranu Saudskou Arábii a Izrael z irácké 198 00:08:16,970 --> 00:08:19,810 Plout raketové útoky. 199 00:08:19,810 --> 00:08:23,740 Patriot je americký střední rozsah povrch-k-air systém, 200 00:08:23,740 --> 00:08:26,370 vyráběné společností Raytheon. 201 00:08:26,370 --> 00:08:30,860 Velikost Patriot interceptor samotné, ale o 202 00:08:30,860 --> 00:08:35,650 zhruba 20 metrů dlouhá a váží asi 2000 liber. 203 00:08:35,650 --> 00:08:38,809 A to s sebou nese bojovou hlavici asi - myslím, že to je zhruba 204 00:08:38,809 --> 00:08:40,169 150 liber. 205 00:08:40,169 --> 00:08:45,820 A hlavice sám o sobě je vysoce výbušné, který má 206 00:08:45,820 --> 00:08:48,120 fragmenty kolem ní. 207 00:08:48,120 --> 00:08:51,870 Kryt hlavice je navržen tak, aby fungovat jako hrubé broky. 208 00:08:51,870 --> 00:08:54,920 Rakety jsou prováděny čtyři na obalu a jsou 209 00:08:54,920 --> 00:08:57,850 přepravována návěsu. 210 00:08:57,850 --> 00:09:02,940 >> Patriot protiraketový systém sahá přinejmenším do 211 00:09:02,940 --> 00:09:05,530 20 let. 212 00:09:05,530 --> 00:09:09,150 To bylo původně navržené jako raketa protivzdušné obrany na 213 00:09:09,150 --> 00:09:12,920 sestřelit nepřátelské letouny, v první válce v Perském zálivu. 214 00:09:12,920 --> 00:09:17,700 Když ta válka přišel, armáda chtěla použít k fotografování 215 00:09:17,700 --> 00:09:19,880 stanoví pluje, ne letadel. 216 00:09:19,880 --> 00:09:24,860 Air Force Irácký nebyl tak velký problém, ale armáda 217 00:09:24,860 --> 00:09:27,260 strach o pluje. 218 00:09:27,260 --> 00:09:30,810 A tak se pokusili upgrade Patriot. 219 00:09:30,810 --> 00:09:33,770 Záchytný nepřítel střela jede MACH 5 se děje 220 00:09:33,770 --> 00:09:35,790 být dost náročné. 221 00:09:35,790 --> 00:09:39,460 Ale když byl Patriot spěchal do provozu, armáda 222 00:09:39,460 --> 00:09:43,730 si nebyl vědom iráckého úpravy, které udělali jejich 223 00:09:43,730 --> 00:09:46,510 Pluje téměř nemožné zasáhnout. 224 00:09:46,510 --> 00:09:50,040 >> Co se stalo je Pluje, které byly 225 00:09:50,040 --> 00:09:51,360 přichází v byly nestabilní. 226 00:09:51,360 --> 00:09:52,266 Byli viklání. 227 00:09:52,266 --> 00:09:56,300 Důvodem pro to bylo, že Iráčané, aby si 600 228 00:09:56,300 --> 00:10:00,650 kilometrů mimo a 300 km doletu, se 229 00:10:00,650 --> 00:10:02,423 hmotnost z přední hlavice a 230 00:10:02,423 --> 00:10:03,990 z hlavice lehčí. 231 00:10:03,990 --> 00:10:08,700 Takže teď Patriot se snaží přijít na Scud, a většina 232 00:10:08,700 --> 00:10:11,192 čas, drtivá většina času, by se 233 00:10:11,192 --> 00:10:13,450 Jen podívejte se v Scud. 234 00:10:13,450 --> 00:10:16,300 Jakmile provozovatelé systém Patriot, si uvědomil, Patriot 235 00:10:16,300 --> 00:10:20,160 minul svůj cíl, že odpálil Patriot hlavici. 236 00:10:20,160 --> 00:10:22,760 Aby se předešlo možným obětem, bylo dovoleno 237 00:10:22,760 --> 00:10:25,100 k pádu na zem. 238 00:10:25,100 --> 00:10:29,400 To bylo to, co většina lidí viděla, jak velké ohnivé koule na obloze, 239 00:10:29,400 --> 00:10:34,930 a nepochopení, jak zachytí jaderných hlavic Scud. 240 00:10:34,930 --> 00:10:37,490 >> I když, na noční obloze, Patriots se zdá být 241 00:10:37,490 --> 00:10:41,570 Úspěšně zničené Pluje na Dhahran, mohlo by být 242 00:10:41,570 --> 00:10:43,730 chyba týkající se jeho výkonu. 243 00:10:43,730 --> 00:10:46,370 Tam, na vlastence radarový systém ztratil stopu 244 00:10:46,370 --> 00:10:50,090 příchozí Scud a nikdy zahájena z důvodu 245 00:10:50,090 --> 00:10:51,340 k softwaru chyby. 246 00:10:54,030 --> 00:10:57,050 To bylo Izraelci poprvé objeven, že čím delší 247 00:10:57,050 --> 00:11:02,000 systém byl na, větší časový nesoulad se stal, 248 00:11:02,000 --> 00:11:05,530 kvůli hodiny vložené do systému v počítači. 249 00:11:05,530 --> 00:11:09,060 Asi dva týdny před tragédií v Dhahran, že 250 00:11:09,060 --> 00:11:11,730 Izraelci hlášeny na ministerstvu obrany, že 251 00:11:11,730 --> 00:11:13,250 Systém byl ztrácíme čas. 252 00:11:13,250 --> 00:11:15,610 Po osmi hodinách provozu, všimli si, že 253 00:11:15,610 --> 00:11:18,330 Systém byl stále znatelně méně přesné. 254 00:11:18,330 --> 00:11:20,910 Ministerstvo obrany odpověděl tím, že řekne všechno 255 00:11:20,910 --> 00:11:23,710 The Patriot baterie nenechat systémy 256 00:11:23,710 --> 00:11:25,450 po dlouhou dobu. 257 00:11:25,450 --> 00:11:28,010 Nikdy neřekl to, co dlouho byl - 8 hodin, 10 258 00:11:28,010 --> 00:11:29,690 hodin, 1000 hodin. 259 00:11:29,690 --> 00:11:31,940 Nikdo nevěděl. 260 00:11:31,940 --> 00:11:35,020 >> Patriot baterie umístěná v kasárnách v Dhahran 261 00:11:35,020 --> 00:11:39,030 a jeho nedostatky vnitřní hodiny byl na více než 100 hodin na 262 00:11:39,030 --> 00:11:42,240 noc února 25th. 263 00:11:42,240 --> 00:11:46,580 Je sledován čas s přesností na asi desetinu sekundy. 264 00:11:46,580 --> 00:11:48,830 Nyní desetina druhá je zajímavé číslo, protože 265 00:11:48,830 --> 00:11:52,660 nemůže být vyjádřen v binární, přesně, což znamená, že 266 00:11:52,660 --> 00:11:54,940 nemůže být vyjádřen přesně v jakékoli 267 00:11:54,940 --> 00:11:57,330 Moderní digitální počítač. 268 00:11:57,330 --> 00:11:59,130 Je těžké uvěřit. 269 00:11:59,130 --> 00:12:01,720 Ale používat to jako příklad. 270 00:12:01,720 --> 00:12:04,090 >> Pojďme se počet třetiny. 271 00:12:04,090 --> 00:12:07,950 Jedna třetina nemůže být vyjádřen v desetinné, přesně. 272 00:12:07,950 --> 00:12:12,710 Jedna třetina je 0,333 děje na nekonečno. 273 00:12:12,710 --> 00:12:17,050 Neexistuje žádný způsob, jak to udělat, aby s absolutní přesností v desítkové soustavě. 274 00:12:17,050 --> 00:12:19,340 To je přesně stejný druh problému, co se stalo v 275 00:12:19,340 --> 00:12:20,190 Patriot. 276 00:12:20,190 --> 00:12:24,680 Čím déle systém běžel, horší chybě v čase stal. 277 00:12:24,680 --> 00:12:28,640 Po 100 hodinách provozu, chyba v té době byl pouze 278 00:12:28,640 --> 00:12:29,870 asi jedna třetina sekundy. 279 00:12:29,870 --> 00:12:34,790 Ale pokud jde o cílení raketu cestování na MACH 5, 280 00:12:34,790 --> 00:12:39,140 to mělo za následek sledování chyb více než 600 metrů. 281 00:12:39,140 --> 00:12:42,510 Bylo by fatální chyba pro vojáky na Zahránu. 282 00:12:42,510 --> 00:12:48,680 >> Co se stalo, je spuštění Scud byl detekován včasného varování 283 00:12:48,680 --> 00:12:52,440 satelity a oni věděli, že Scud přichází v jejich 284 00:12:52,440 --> 00:12:53,350 Celkový směr. 285 00:12:53,350 --> 00:12:55,470 Oni nevěděli, kde to přichází. 286 00:12:55,470 --> 00:12:58,210 Bylo nyní na radaru složky Patriot 287 00:12:58,210 --> 00:13:01,920 systém, brání Dhahran, lokalizovat a sledovat 288 00:13:01,920 --> 00:13:03,700 příchozí nepřátelské rakety. 289 00:13:03,700 --> 00:13:05,390 Radar byl velmi chytrý. 290 00:13:05,390 --> 00:13:07,570 Ty by vlastně sledovat pozici Scud a pak 291 00:13:07,570 --> 00:13:10,340 předpovědět, kde to asi bude příště 292 00:13:10,340 --> 00:13:12,040 radar poslal puls ven. 293 00:13:12,040 --> 00:13:13,730 , Která byla nazývána rozsah brána. 294 00:13:13,730 --> 00:13:18,820 Poté, co Patriot rozhodne dost času uplynulo jít 295 00:13:18,820 --> 00:13:22,600 dozadu a zkontrolujte následující umístění tohoto zjištěného 296 00:13:22,600 --> 00:13:24,190 objekt, se vrátí zpět. 297 00:13:24,190 --> 00:13:27,940 Takže když se vrátil na špatné místo, pak nevidí 298 00:13:27,940 --> 00:13:31,000 námitky, a to rozhodne, že tam byl žádný objekt. 299 00:13:31,000 --> 00:13:34,370 Byl to falešný detekce a kapky na trať. 300 00:13:34,370 --> 00:13:37,630 >> Příchozí Scud zmizel z obrazovky radaru. 301 00:13:37,630 --> 00:13:41,300 A vteřin později, narazila do kasáren. Scud 302 00:13:41,300 --> 00:13:44,730 zabil 28 a byl poslední výpověď během 303 00:13:44,730 --> 00:13:46,450 první válka v Zálivu. 304 00:13:46,450 --> 00:13:50,570 Tragicky, aktualizovaný software dorazil Dhahran 305 00:13:50,570 --> 00:13:52,060 následující den. 306 00:13:52,060 --> 00:13:56,210 A software chyba byla stanovena, uzavření jedné kapitoly v 307 00:13:56,210 --> 00:13:58,370 ustaraný historie Patriot rakety. 308 00:14:01,790 --> 00:14:04,990 PATRIOT je vlastně zkratka pro "sfázovaných sledování 309 00:14:04,990 --> 00:14:08,516 Úsek TARGETu. " 310 00:14:08,516 --> 00:14:13,390 >> Dobře, tak mnohem víc smutný výsledek není zcela 311 00:14:13,390 --> 00:14:14,430 pochopení tohoto světa. 312 00:14:14,430 --> 00:14:18,180 A Takeaway, skutečně, z filmu je, že řešení 313 00:14:18,180 --> 00:14:20,790 tam byl restart systému protiraketové obrany 314 00:14:20,790 --> 00:14:21,770 každý jednou za čas. 315 00:14:21,770 --> 00:14:24,280 A tak znovu, je jedním z cílů tohoto kurzu, rozhodně 316 00:14:24,280 --> 00:14:26,900 na více skromného měřítku než tyto aplikace, je 317 00:14:26,900 --> 00:14:30,710 Opravdu přejdi na každého z nás oči do přesně tak, jak jste jít o 318 00:14:30,710 --> 00:14:34,380 Stroje na výrobu dělat to, co od nich chcete dělat a jak jdete 319 00:14:34,380 --> 00:14:37,180 o tom, že správně, zatímco na cestě dělá 320 00:14:37,180 --> 00:14:38,810 dobře, elegantně, a tak dále. 321 00:14:38,810 --> 00:14:41,680 A tak dnes, pojďme se ponořit do trochu více, ale 322 00:14:41,680 --> 00:14:44,210 tak, že se ne příliš rychle, a to zejména pro ty méně 323 00:14:44,210 --> 00:14:46,590 pohodlné, ale také tak, že se může zachovat zájem 324 00:14:46,590 --> 00:14:49,390 ty pohodlnější, pojďme rychle začít s trochou 325 00:14:49,390 --> 00:14:50,970 z rekapitulací některé z těchto myšlenek. 326 00:14:50,970 --> 00:14:53,710 A opět, ptej, jak osobně, nebo on-line, máte-li 327 00:14:53,710 --> 00:14:56,320 otázky tak můžeme udržet všechny na stejné stránce. 328 00:14:56,320 --> 00:14:58,820 >> Takže CS50 spotřebiče, rychlé krok zpět, je 329 00:14:58,820 --> 00:15:02,360 co, svými vlastními slovy? 330 00:15:02,360 --> 00:15:06,454 To je v pořádku, pokud máte tušení, co tato slova mohou být ještě. 331 00:15:06,454 --> 00:15:07,830 [Neslyšitelné] 332 00:15:07,830 --> 00:15:10,950 Dobře, tak univerzální rozhraní pro - 333 00:15:10,950 --> 00:15:11,900 že můžeme všichni sdílet. 334 00:15:11,900 --> 00:15:12,470 Absolutně. 335 00:15:12,470 --> 00:15:14,840 Takže jsme mohli, například, ti jít na některé 336 00:15:14,840 --> 00:15:16,910 webové stránky, stáhnout tento software pro Mac OS. 337 00:15:16,910 --> 00:15:19,140 Stáhněte si tento software pro Windows, konfigurovat 338 00:15:19,140 --> 00:15:20,100 tímto způsobem a že. 339 00:15:20,100 --> 00:15:22,370 Ale realita je pak narazíme na nespočet technických 340 00:15:22,370 --> 00:15:23,200 podporovat problémy. 341 00:15:23,200 --> 00:15:26,630 A také v těchto dnech, hodně z toho, co se děje na straně serveru, 342 00:15:26,630 --> 00:15:28,490 ve světě výpočetní techniky, a to zejména pokud jde o 343 00:15:28,490 --> 00:15:31,460 vývoj webových aplikací a webových aplikací, je ve skutečnosti 344 00:15:31,460 --> 00:15:35,110 často provádí na Unix nebo Linux počítačů, na rozdíl od 345 00:15:35,110 --> 00:15:36,800 Macs nebo Windows PC. 346 00:15:36,800 --> 00:15:39,240 >> Takže mezi upsides, pak použití tuhle věc nazývá 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance je budeme všichni mít stejné prostředí. 348 00:15:41,500 --> 00:15:43,670 Takže všichni jsou na stejné stránce bez ohledu na to, jaký hardware 349 00:15:43,670 --> 00:15:46,650 přišel do areálu s, ale také bude fušovat do přesně 350 00:15:46,650 --> 00:15:48,230 ve stejném prostředí, které budete používat k 351 00:15:48,230 --> 00:15:51,080 Semestr Konec i pro vývoj webových, stejně jako v 352 00:15:51,080 --> 00:15:53,580 Budoucnost reálných aplikacích jejich. 353 00:15:53,580 --> 00:15:56,350 Takže konkrétněji, CS50 Appliance je zdarma kus 354 00:15:56,350 --> 00:15:59,400 software, který vám umožní spustit jiný operační systém, 355 00:15:59,400 --> 00:16:02,670 Linux, v tomto případě, na svém počítači, v okně. 356 00:16:02,670 --> 00:16:04,750 Nyní si můžete nejen stáhnout spotřebič. 357 00:16:04,750 --> 00:16:08,170 Potřebujete program, se kterým se hrát nebo spustit přístroj. 358 00:16:08,170 --> 00:16:11,220 A ten kus softwaru, je obecně známý jako 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervizory přicházejí ve formě produktů, jako jsou VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Parallels. 362 00:16:15,820 --> 00:16:18,390 Všechny druhy společností, aby software, a to jak zdarma a 363 00:16:18,390 --> 00:16:19,310 obchodní, podobný. 364 00:16:19,310 --> 00:16:21,480 Co uvidíte v problému Set 1 jsou instrukce o tom, jak 365 00:16:21,480 --> 00:16:23,440 získat zdarma software, s nimiž se 366 00:16:23,440 --> 00:16:25,000 spustit CS50 Appliance. 367 00:16:25,000 --> 00:16:28,060 A jakmile to uděláte, budete mít v okně na vašem počítači Mac nebo PC, 368 00:16:28,060 --> 00:16:30,710 desktop prostředí, které vypadá docela jako to, kde 369 00:16:30,710 --> 00:16:33,100 má v nabídce Start-jako věc 370 00:16:33,100 --> 00:16:34,510 levém dolním rohu. 371 00:16:34,510 --> 00:16:38,030 Má domovskou složku, nebo domovský adresář, v levém horním rohu 372 00:16:38,030 --> 00:16:40,280 tam, může odpadky, a tak dále. 373 00:16:40,280 --> 00:16:43,450 Takže budeme šprýmaři odděleně potřebné údaje, jak jsme jít. 374 00:16:43,450 --> 00:16:46,430 >> Ale teď pojďme začít se ponořit do C. 375 00:16:46,430 --> 00:16:49,200 Takže C je to programovací jazyk, podobný v duchu, aby 376 00:16:49,200 --> 00:16:52,390 Scratch, ale daleko méně grafické, ale ironicky, pokud 377 00:16:52,390 --> 00:16:54,730 mocnější, jakmile se dostanete důvtipný s ním. 378 00:16:54,730 --> 00:16:58,970 Takže v C, píšeme programy psaním zdrojového kódu, který je 379 00:16:58,970 --> 00:17:01,640 Tento anglický-jako syntax, podobně jako ponožky 380 00:17:01,640 --> 00:17:05,609 prokázání, že jsme minule, která vám umožní 381 00:17:05,609 --> 00:17:07,910 vyjádřit sám sebe docela přesně, pokud 382 00:17:07,910 --> 00:17:09,760 arcanely, k počítači. 383 00:17:09,760 --> 00:17:11,960 >> Takže jaký druh výrobku softwaru si budete skutečně potřebovat 384 00:17:11,960 --> 00:17:15,520 psát programy v jazyce jako C, zakládají na našich 385 00:17:15,520 --> 00:17:17,492 konverzace v pondělí? 386 00:17:17,492 --> 00:17:19,650 [Neslyšitelné] 387 00:17:19,650 --> 00:17:21,079 OK, stačí textový editor. 388 00:17:21,079 --> 00:17:22,890 Nepotřebujete žádný speciální software 389 00:17:22,890 --> 00:17:24,460 samo o sobě psát programy. 390 00:17:24,460 --> 00:17:27,220 Potřebujete k tomu jen textový editor, jako je Poznámkový blok, v systému Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit na Mac, nebo něco, co nazývá gedit, ve světě 392 00:17:30,450 --> 00:17:32,020 Linux, který budeme používat tu. 393 00:17:32,020 --> 00:17:33,750 A to je, psát programy. 394 00:17:33,750 --> 00:17:35,480 >> Ale psaní je jen polovina z rovnice. 395 00:17:35,480 --> 00:17:36,630 Potom je třeba spustit. 396 00:17:36,630 --> 00:17:38,320 Aby však bylo možné spouštět programy - 397 00:17:38,320 --> 00:17:39,600 Nelze spustit zdrojový kód. 398 00:17:39,600 --> 00:17:41,500 Ty místo toho dělat to, co k ní jako první? 399 00:17:41,500 --> 00:17:41,900 Jo. 400 00:17:41,900 --> 00:17:43,200 DAVID J. Malan: Musíte 401 00:17:43,200 --> 00:17:44,130 zkompilovat. 402 00:17:44,130 --> 00:17:49,010 A někdo jiný, sestavování zdrojového kódu znamená - 403 00:17:49,010 --> 00:17:50,260 [Neslyšitelné] 404 00:17:52,300 --> 00:17:52,700 DAVID J. Malan: Přesně tak. 405 00:17:52,700 --> 00:17:54,430 Překládat do nul a jedniček. 406 00:17:54,430 --> 00:17:57,150 Protože všechny z nás, v těchto dnech, mají počítače, které mají procesory, 407 00:17:57,150 --> 00:18:00,350 téměř všechny, které jsou vyrobeny společností s názvem Intel, a 408 00:18:00,350 --> 00:18:03,320 Intel Inside, znamená, že je to mozek uvnitř vaší 409 00:18:03,320 --> 00:18:04,990 počítač, známý jako CPU. 410 00:18:04,990 --> 00:18:07,570 A jedna z věcí, které ten mozek dělá, je, že ví, 411 00:18:07,570 --> 00:18:10,390 jak pochopit zákonitosti nul a jedniček. 412 00:18:10,390 --> 00:18:13,240 To ví, co vzor bitů představuje Kromě toho, co 413 00:18:13,240 --> 00:18:15,500 vzor představuje součty a rozdíly, co se vzor 414 00:18:15,500 --> 00:18:18,890 bity představují tisku, a vytváří slyšitelný zvuk. 415 00:18:18,890 --> 00:18:22,450 >> Takže ve zkratce, CPU, spolu s operačním systémem, 416 00:18:22,450 --> 00:18:25,230 který je kus softwaru, který běží na procesoru, 417 00:18:25,230 --> 00:18:26,050 abych tak řekl. 418 00:18:26,050 --> 00:18:29,850 Společně tyto dva kusy vědět, jak spustit programy, které 419 00:18:29,850 --> 00:18:31,070 my lidé psát. 420 00:18:31,070 --> 00:18:34,040 >> Takže když jdu do CS50 Appliance tady, musím otevřít 421 00:18:34,040 --> 00:18:35,660 up textového editoru a můžu přístup k této 422 00:18:35,660 --> 00:18:36,560 v několika ohledech. 423 00:18:36,560 --> 00:18:39,060 Můžu buď jít do menu, programování, 424 00:18:39,060 --> 00:18:40,230 a pak jsem si vybrat - 425 00:18:40,230 --> 00:18:40,810 Ne, není to menu. 426 00:18:40,810 --> 00:18:43,860 Mohu jít k Příslušenství / gedit zde pro otevření 427 00:18:43,860 --> 00:18:45,090 můj malý textový editor. 428 00:18:45,090 --> 00:18:48,030 Nebo přesněji řečeno, mohu na tuto malou ikonu ve spodní části 429 00:18:48,030 --> 00:18:48,970 levém rohu. 430 00:18:48,970 --> 00:18:50,430 A teď jsem si toto prostředí zde. 431 00:18:50,430 --> 00:18:52,590 Je to docela připomíná jednoduchý textový editor, jen s 432 00:18:52,590 --> 00:18:53,820 jeden nebo dva rozdíly. 433 00:18:53,820 --> 00:18:56,420 V horní části, kde je kurzor blikající nyní, to je místo, kde 434 00:18:56,420 --> 00:18:57,900 Mohu začít psát svůj kód. 435 00:18:57,900 --> 00:19:00,415 Ve spodní části je to, co nazývá okno terminálu. 436 00:19:00,415 --> 00:19:03,400 A jaké věci mohu dělat v této 437 00:19:03,400 --> 00:19:04,960 tzv. okno terminálu? 438 00:19:04,960 --> 00:19:06,680 [Neslyšitelné] 439 00:19:06,680 --> 00:19:07,890 >> Dobře, tak budu spouštět příkazy. 440 00:19:07,890 --> 00:19:10,300 A některé z těchto příkazů se běžel v pondělí bylo trochu 441 00:19:10,300 --> 00:19:15,070 mystické na první, ale ls pro seznam, cd pro změnu adresáře, 442 00:19:15,070 --> 00:19:16,540 rm, pro odstranění. 443 00:19:16,540 --> 00:19:19,680 Takže je to něco jako old-school způsob navigace vaší 444 00:19:19,680 --> 00:19:22,310 počítač, pouze pomocí klávesnice a textové příkazy, 445 00:19:22,310 --> 00:19:24,130 a ne, obecně, použití myši. 446 00:19:24,130 --> 00:19:25,960 Ale uvidíme, netrvalo dlouho, to vlastně nám dává 447 00:19:25,960 --> 00:19:28,520 trochu více síly a trochu více přesnosti, s nimiž se 448 00:19:28,520 --> 00:19:29,600 vyjádřit se. 449 00:19:29,600 --> 00:19:31,330 A pak tady na levé, jsme jen tak vidět, 450 00:19:31,330 --> 00:19:34,360 jak jsme začít psát software, trochu shrnutí 451 00:19:34,360 --> 00:19:36,350 program, který jsme napsal vlevo nahoře. 452 00:19:36,350 --> 00:19:38,360 Ale uvidíme, že zase zanedlouho. 453 00:19:38,360 --> 00:19:40,050 >> Takže pojďme něco udělat poměrně jednoduchý zde. 454 00:19:40,050 --> 00:19:43,440 Dovolte mi, abych nejprve jít dopředu a jít do souboru, Uložit, a já jsem jen 455 00:19:43,440 --> 00:19:45,970 bude klikněte na jharvard zde, přes vlevo, a 456 00:19:45,970 --> 00:19:48,930 jharvard je opět jméno pro mé domovské složce, my 457 00:19:48,930 --> 00:19:52,110 osobní soubory, mi, že jsou nyní John Harvard, jako všichni z vás 458 00:19:52,110 --> 00:19:54,230 brzy bude John Harvard v tomto prostředí. 459 00:19:54,230 --> 00:19:57,360 Má tento domovský adresář, My Documents a tak dále, 460 00:19:57,360 --> 00:19:58,900 že chci zachránit, teď, tento soubor palců 461 00:19:58,900 --> 00:20:01,520 Takže budu říkat hello.c. Pak jsem jít 462 00:20:01,520 --> 00:20:05,770 dopředu a klepněte na tlačítko Uložit, a teď, co mám tady, je karta 463 00:20:05,770 --> 00:20:09,440 volal hello.c, tak jako jiný typ editoru. 464 00:20:09,440 --> 00:20:11,760 >> Takže teď mi dovolte pokračovat a začít psát program. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 A pak jsem minule, printf, pro tisk formátu, 467 00:20:18,150 --> 00:20:22,120 ("Hello, world!" 468 00:20:22,120 --> 00:20:24,500 );. 469 00:20:24,500 --> 00:20:25,630 Téměř kompletní. 470 00:20:25,630 --> 00:20:27,130 Ale já jsem chybí pár detailů. 471 00:20:27,130 --> 00:20:30,210 Co chybí z tohoto programu, který jsem opravdu potřebují pro 472 00:20:30,210 --> 00:20:31,890 to vlastně kompilaci? 473 00:20:31,890 --> 00:20:32,130 Jo. 474 00:20:32,130 --> 00:20:33,980 [Neslyšitelné]? 475 00:20:33,980 --> 00:20:35,770 >> DAVID J. Malan: Jo, tak musím zahrnout standard 476 00:20:35,770 --> 00:20:36,700 I / O knihovny. 477 00:20:36,700 --> 00:20:39,470 Takže to musí jít nad hlavní, tak jsem jen tak 478 00:20:39,470 --> 00:20:40,790 aby určitý prostor pro to tam. 479 00:20:40,790 --> 00:20:44,420 A já budu dělat # include . 480 00:20:44,420 --> 00:20:46,570 A všimněte si lomené závorky tam. 481 00:20:46,570 --> 00:20:49,410 A jak stranou, gedit je trochu uživatelsky přívětivý, pokud 482 00:20:49,410 --> 00:20:52,420 někdy trochu matoucí, v tom, že se snaží pomáhat vaší 483 00:20:52,420 --> 00:20:54,770 Oči upozornění, co vedení s tím, co. 484 00:20:54,770 --> 00:20:57,760 Takže skutečnost, že můj kurzor je hned vedle tohoto úhlová 485 00:20:57,760 --> 00:21:00,600 držák, všimněte si, jak je to zdůraznění druhé úhlová 486 00:21:00,600 --> 00:21:01,920 Držák a tohle. 487 00:21:01,920 --> 00:21:03,770 A to je jen k tomu mou pozornost na skutečnost, že jsem 488 00:21:03,770 --> 00:21:04,460 mají symetrii. 489 00:21:04,460 --> 00:21:07,010 A symetrie v programování je obecně dobrá věc. 490 00:21:07,010 --> 00:21:10,270 Podobně, když jsem pohnout kurzorem na konec, všimněte si, jak 491 00:21:10,270 --> 00:21:13,630 Složené závorky line up ukázat, že ano, mám otevřený 492 00:21:13,630 --> 00:21:15,160 a uzavřený jeden, abych tak řekl. 493 00:21:15,160 --> 00:21:16,640 >> Dobře, a co mohu udělat jednu věc. 494 00:21:16,640 --> 00:21:20,090 Není to nezbytně nutné, ale dobré praxe, tj. 495 00:21:20,090 --> 00:21:21,250 vrací 0.. 496 00:21:21,250 --> 00:21:24,140 A return 0 co dělá pro nás? 497 00:21:24,140 --> 00:21:25,584 Nebo znamená co? 498 00:21:25,584 --> 00:21:27,480 [Neslyšitelné] 499 00:21:27,480 --> 00:21:28,300 DAVID J. Malan: Ale nic se neděje. 500 00:21:28,300 --> 00:21:30,280 A upřímně řečeno, že je to těžké pro mnoho pokazit v 501 00:21:30,280 --> 00:21:31,250 naprogramovat tento krátký. 502 00:21:31,250 --> 00:21:33,930 Takže jsem jen výborný jasné, že je vše v pořádku. 503 00:21:33,930 --> 00:21:36,740 Já, člověk, když jsem spustit tento program, bude pravděpodobně nikdy 504 00:21:36,740 --> 00:21:38,150 vidět, že 0. 505 00:21:38,150 --> 00:21:41,070 Obecně platí, že jsou tato čísla, aby se vrátil z hlavní 506 00:21:41,070 --> 00:21:43,540 pouze vychovávat své hlavy k lidem, když 507 00:21:43,540 --> 00:21:44,360 se něco pokazí. 508 00:21:44,360 --> 00:21:46,640 A ty se trochu pop-up říká systémová chyba, jeden, 509 00:21:46,640 --> 00:21:48,760 dva, tři, nebo bez ohledu na počet byl, že 510 00:21:48,760 --> 00:21:50,100 byl vlastně vrátil. 511 00:21:50,100 --> 00:21:52,870 Takže něco v pořádku s tím? 512 00:21:52,870 --> 00:21:55,300 [Neslyšitelné] 513 00:21:55,300 --> 00:21:58,100 >> DAVID J. Malan: Takže to není tak funkční omyl 514 00:21:58,100 --> 00:21:59,240 ale estetický. 515 00:21:59,240 --> 00:22:02,340 Asi bych měl dát do znakem nového řádku tam 516 00:22:02,340 --> 00:22:05,240 konec tohoto řetězce, takže jsme vlastně přesuňte kurzor na 517 00:22:05,240 --> 00:22:08,340 další řádek, a program, který vypadá trochu hezčí. 518 00:22:08,340 --> 00:22:10,340 >> Takže teď mě nech jít dolů do mého okna terminálu 519 00:22:10,340 --> 00:22:11,490 a zoom zpět dovnitř 520 00:22:11,490 --> 00:22:13,390 A tahle věc tady, je to jen výzva. 521 00:22:13,390 --> 00:22:16,760 Je to prostě mi to připomněl, kdo jsem, jharvard @ spotřebič, kde 522 00:22:16,760 --> 00:22:18,850 Spotřebič je název počítače jsem na. 523 00:22:18,850 --> 00:22:22,380 V závorkách jsou to vlnovky, klikyháky symbol, který 524 00:22:22,380 --> 00:22:24,160 představuje to, co? 525 00:22:24,160 --> 00:22:25,590 Diváků: Home adresář. 526 00:22:25,590 --> 00:22:26,350 DAVID J. Malan: Domovský adresář. 527 00:22:26,350 --> 00:22:29,350 Takže to je jen zkrácený zápis pro ostatní jste v 528 00:22:29,350 --> 00:22:32,780 Vaše osobní složku, kde všechny vaše soubory jít ve výchozím nastavení. 529 00:22:32,780 --> 00:22:36,080 Takže teď, tady, můžu zadat ls pro seznam. 530 00:22:36,080 --> 00:22:40,020 A jediné, co jsem vidět zde v tuto chvíli je hello.c. 531 00:22:40,020 --> 00:22:41,770 A to je dobře, protože jsem právě napsal. 532 00:22:41,770 --> 00:22:44,380 >> Tak nech mě jít dopředu a to, aby ahoj. 533 00:22:44,380 --> 00:22:46,830 A všimněte si, nebudu psát, aby hello.c. 534 00:22:46,830 --> 00:22:50,300 Místo toho, já jsem jen psát základní název souboru, ahoj. 535 00:22:50,300 --> 00:22:53,690 A aby, jak jsme viděli v pondělí, bude jen usuzovat, že chci 536 00:22:53,690 --> 00:22:54,920 . c. souboru. 537 00:22:54,920 --> 00:22:56,820 Takže teď jsem napsal, aby ahoj. 538 00:22:56,820 --> 00:22:59,280 Teď vidím tuto poměrně dlouhou příkaz a bude pokračovat 539 00:22:59,280 --> 00:23:00,480 vidět to znovu a znovu. 540 00:23:00,480 --> 00:23:03,620 Ale aby bylo jasno, řinčet, slovo, které právě objevil, 541 00:23:03,620 --> 00:23:05,340 že je to skutečný kompilátor. 542 00:23:05,340 --> 00:23:08,200 Udělejte je jen nástroj sestavení. 543 00:23:08,200 --> 00:23:11,900 Je to jen další uživatelsky přívětivý program, který šetří mi, že v 544 00:23:11,900 --> 00:23:15,310 dlouhodobě, od nutnosti psát z neuvěřitelně únavné dlouhé 545 00:23:15,310 --> 00:23:17,020 Příkazy líbí. 546 00:23:17,020 --> 00:23:18,950 Takže byste mohli spustit řinčet ručně. 547 00:23:18,950 --> 00:23:20,530 Dalo by se napsat všechno ručně. 548 00:23:20,530 --> 00:23:21,580 Prostě dostane velmi únavné. 549 00:23:21,580 --> 00:23:24,720 A tak, aby je jen program, který zjednodušuje naše životy a 550 00:23:24,720 --> 00:23:27,120 běží složitější příkazy pro nás. 551 00:23:27,120 --> 00:23:29,410 >> Dobře, tak co teď souboru bych měl mít 552 00:23:29,410 --> 00:23:31,540 v mém aktuálním adresáři? 553 00:23:31,540 --> 00:23:36,310 Nejen hello.c, ale také ahoj. 554 00:23:36,310 --> 00:23:39,710 Takže když chci spustit ahoj, připomínám, že říkám dot lomítko, 555 00:23:39,710 --> 00:23:42,220 kde tečka znamená jít do aktuální složky, ať jste kdekoli 556 00:23:42,220 --> 00:23:46,060 jsou, a pak spustit program s názvem ahoj, a opravdu, teď, 557 00:23:46,060 --> 00:23:48,080 Mám Hello World. 558 00:23:48,080 --> 00:23:51,640 Dobře, nějaké otázky na pracovním postupu nebo syntaxe 559 00:23:51,640 --> 00:23:52,890 co jsme právě udělali? 560 00:23:55,380 --> 00:23:57,040 >> Dobře, takže se pojďme věci do zářezu znovu. 561 00:23:57,040 --> 00:24:00,430 Tak tohle byl nezaujatý jen napsat program, který pouze 562 00:24:00,430 --> 00:24:01,790 někdy říká ahoj, svět. 563 00:24:01,790 --> 00:24:03,920 Takže jsme změnili to, v pondělí, říkat, ahoj, David. 564 00:24:03,920 --> 00:24:06,560 Je to trochu osobní, ale stejně pevně dáno jako 565 00:24:06,560 --> 00:24:07,410 první verze. 566 00:24:07,410 --> 00:24:08,780 Takže není všechno, že přesvědčivé. 567 00:24:08,780 --> 00:24:13,120 Ale existuje, v C, funkce jistě kromě 568 00:24:13,120 --> 00:24:15,700 tisk, funkce, které vám umožní získat vstup od uživatele. 569 00:24:15,700 --> 00:24:17,990 A jak jsme to udělali, druhý den, a to takto. 570 00:24:17,990 --> 00:24:21,440 Než jsem skutečně vytisknout něco, jsem se poprvé dostal 571 00:24:21,440 --> 00:24:22,410 něco od uživatele. 572 00:24:22,410 --> 00:24:23,370 Tak mě nech dělat to znovu. 573 00:24:23,370 --> 00:24:26,580 >> String s, kde s je jen libovolný název, tady, pro 574 00:24:26,580 --> 00:24:30,600 string, rovná GetString. 575 00:24:30,600 --> 00:24:32,070 Takže to, co bylo GetString? 576 00:24:32,070 --> 00:24:34,630 Je to samozřejmě dostane řetězec, na základě jeho jméno. 577 00:24:34,630 --> 00:24:37,560 Ale co to je, více technicky? 578 00:24:37,560 --> 00:24:38,440 Je to funkce. 579 00:24:38,440 --> 00:24:41,790 Takže je to funkce, která nepřijde s C na sobě. 580 00:24:41,790 --> 00:24:43,660 CS50 personál napsal. 581 00:24:43,660 --> 00:24:46,940 A tak k použití, můžete nejen patří stdio.h, 582 00:24:46,940 --> 00:24:49,630 Také je potřeba zahrnout co? 583 00:24:49,630 --> 00:24:50,060 Jo. 584 00:24:50,060 --> 00:24:54,210 Takže cs50.h, která je jen soubor jsme psali před několika lety. 585 00:24:54,210 --> 00:24:57,130 Instalovali jsme jej na spotřebiče pro vás spolu 586 00:24:57,130 --> 00:24:58,490 všechny standardní souborů. 587 00:24:58,490 --> 00:25:00,500 A tak v těchto prvních několika týdnů po třídě, budeme používat 588 00:25:00,500 --> 00:25:02,820 to jen zjednodušit proces dělá velmi základní 589 00:25:02,820 --> 00:25:04,600 věci, jako dostat vstup od uživatele. 590 00:25:04,600 --> 00:25:07,370 Vzhledem k tomu, jak uvidíme za pár týdnů, jak se uživatel vstup do 591 00:25:07,370 --> 00:25:10,180 jazyk C je ve skutečnosti překvapivě složitý, 592 00:25:10,180 --> 00:25:14,360 zejména proto, že nevíte předem, obvykle, jak 593 00:25:14,360 --> 00:25:17,030 mnoho věcí je uživatel bude psát dovnitř 594 00:25:17,030 --> 00:25:20,340 A když nevíte, kolik dat se očekávat, nemusíte 595 00:25:20,340 --> 00:25:22,380 vědět, kolik paměti přidělit. 596 00:25:22,380 --> 00:25:25,480 A pokud jste skutečně máte kontradiktorní uživatele, který se snaží 597 00:25:25,480 --> 00:25:28,180 nabourat se do vašeho systému, zhroucení počítače, dobře, 598 00:25:28,180 --> 00:25:31,600 obvykle první metoda útoku je, stejně jako já na 599 00:25:31,600 --> 00:25:34,950 Pondělí, zadejte celý dlouhý sled náhodných znaků, 600 00:25:34,950 --> 00:25:37,020 Enter, a uvidíme, co se zlomí. 601 00:25:37,020 --> 00:25:40,800 Protože obecně, pokud se program přestávek, které naráží na 602 00:25:40,800 --> 00:25:42,650 bezpečnostní chyba, potenciálně. 603 00:25:42,650 --> 00:25:45,250 To jistě naznačuje na vás, programátor, který učinil 604 00:25:45,250 --> 00:25:49,050 chyba, ale nebezpečně, možná jste udělali 605 00:25:49,050 --> 00:25:52,430 související s bezpečností chyba, a obecně budeme vidět, že 606 00:25:52,430 --> 00:25:54,840 to je, jak se stroje ohrožena k tomuto dni, a to jak 607 00:25:54,840 --> 00:25:56,620 ve světě webu a programů na 608 00:25:56,620 --> 00:25:58,070 příkazového řádku, jako je tento. 609 00:25:58,070 --> 00:25:58,350 >> Dobrá. 610 00:25:58,350 --> 00:26:00,460 Takže string s rovná GetString. 611 00:26:00,460 --> 00:26:03,380 Takže konkrétněji teď, co na trati: 6 dělat? 612 00:26:03,380 --> 00:26:05,640 Takže funkce na pravé straně dostane řetězec, 613 00:26:05,640 --> 00:26:06,890 bere kolik argumenty? 614 00:26:09,458 --> 00:26:09,900 Dobře. 615 00:26:09,900 --> 00:26:10,400 Proto nikdo. 616 00:26:10,400 --> 00:26:11,360 Trochu zdravý rozum zkontrolovat. 617 00:26:11,360 --> 00:26:15,380 Argument, opět, je jen vstup do funkce změnit 618 00:26:15,380 --> 00:26:17,250 jeho výchozí chování nějakým způsobem. 619 00:26:17,250 --> 00:26:19,540 Ale v tomto případě, nechci měnit 620 00:26:19,540 --> 00:26:20,650 chování GetString. 621 00:26:20,650 --> 00:26:22,430 Jen jsem se chtěl dostat řetězec. 622 00:26:22,430 --> 00:26:25,190 Tak jsem dal nic v závorkách, a pak jsem dal 623 00:26:25,190 --> 00:26:27,550 středník demarking konec řádku kódu. 624 00:26:27,550 --> 00:26:29,840 Nyní, rovnítka neznamená rovné, samo o sobě. 625 00:26:29,840 --> 00:26:32,690 To znamená, že přiřazení, což znamená, že bez ohledu na dal dostane 626 00:26:32,690 --> 00:26:36,060 výstup na pravé vnitřní co je na levé straně. 627 00:26:36,060 --> 00:26:39,400 >> Takže na levé straně, můžeme říci, že jsme deklarovali 628 00:26:39,400 --> 00:26:41,630 string volal s. 629 00:26:41,630 --> 00:26:44,240 A konkrétně, jsme přidělené paměti uvnitř 630 00:26:44,240 --> 00:26:46,340 které dáme na kousky, které představuje posloupnost 631 00:26:46,340 --> 00:26:46,850 znaků. 632 00:26:46,850 --> 00:26:49,400 Ale pro dnešek, jsme přiděleny 633 00:26:49,400 --> 00:26:51,450 nebo prohlášeno za řetězec. 634 00:26:51,450 --> 00:26:51,790 Dobrá. 635 00:26:51,790 --> 00:26:54,760 Takže teď poté, co jsem to udělal, chci připojit v hodnotě 636 00:26:54,760 --> 00:26:56,535 s, není hodnota David. 637 00:26:56,535 --> 00:27:00,200 Tak to je v pořádku, proč? 638 00:27:03,060 --> 00:27:04,870 Takže je to jen doslova pevně s. 639 00:27:04,870 --> 00:27:06,870 Je to říct "ahoj, s", což není to, co chci. 640 00:27:06,870 --> 00:27:07,790 Tak jsem to udělat. 641 00:27:07,790 --> 00:27:10,330 Znak procenta je zástupný symbol, ale teď musím 642 00:27:10,330 --> 00:27:12,520 předat do tisku i druhý argument. 643 00:27:12,520 --> 00:27:15,160 Připomenout, že argumenty funkce jsou od sebe odděleny 644 00:27:15,160 --> 00:27:20,300 čárky, takže další čárka tady jsem si po tomto dopisu s. 645 00:27:20,300 --> 00:27:23,740 A v této souvislosti nyní, s je proměnná, a printf, 646 00:27:23,740 --> 00:27:25,550 po obdržení těchto dvou vstupů - 647 00:27:25,550 --> 00:27:29,440 řetězec na levé straně a názvy proměnných sa na P - 648 00:27:29,440 --> 00:27:32,750 bude zapojte posledně do bývalé pro nás, a 649 00:27:32,750 --> 00:27:34,600 jen vytisknout pěkný krásný řetězec obsahující 650 00:27:34,600 --> 00:27:36,770 co to je, že jsme zadali dovnitř 651 00:27:36,770 --> 00:27:37,560 >> Tak pojďme to zkusit. 652 00:27:37,560 --> 00:27:38,860 Chystáte se do toho pusťte a oddálit, zpět 653 00:27:38,860 --> 00:27:40,250 k mému terminálovém okně. 654 00:27:40,250 --> 00:27:41,840 Zvětšení na dně zde. 655 00:27:41,840 --> 00:27:44,070 Opište, aby ahoj. 656 00:27:44,070 --> 00:27:45,870 Řinčení se zdá k byli znovu spusťte. 657 00:27:45,870 --> 00:27:49,280 Jdu psát. / Hello, Enter. 658 00:27:49,280 --> 00:27:52,145 Nic se neděje ještě, ale je to na tuto výzvu 659 00:27:52,145 --> 00:27:55,700 že mohu psát něco jako Nate, Enter, a nyní máme 660 00:27:55,700 --> 00:27:56,380 Dobrý den, Nate. 661 00:27:56,380 --> 00:27:59,600 A já si to znovu s Robem, a tak dále. 662 00:27:59,600 --> 00:28:03,410 Takže doufejme, že teď tento program se chová, jak jsem v úmyslu. 663 00:28:03,410 --> 00:28:05,720 >> Teď, ne všechny, že uživatelsky přívětivý. 664 00:28:05,720 --> 00:28:07,930 Nemám tušení, co se se ode mě očekává. 665 00:28:07,930 --> 00:28:09,620 Takže můžeme určitě vyčistit to až trochu. 666 00:28:09,620 --> 00:28:13,270 Nech mě jít zpátky sem, a ne jen potápění v a 667 00:28:13,270 --> 00:28:16,480 žádá uživatele o řetězec, dovolte mi říci, výslovně 668 00:28:16,480 --> 00:28:17,750 uživatel, co jsem očekával. 669 00:28:17,750 --> 00:28:21,610 Takže printf ("Zadejte řetězec:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Takže žádné proměnné zde. 672 00:28:25,510 --> 00:28:26,750 Žádné procent znaky. 673 00:28:26,750 --> 00:28:28,550 Jen jednoduchý anglický výraz. 674 00:28:28,550 --> 00:28:34,030 Dovolte mi nyní jít ke dnu zde a znovu můj program. 675 00:28:34,030 --> 00:28:35,380 Ale nic se zřejmě změnila. 676 00:28:35,380 --> 00:28:37,350 Proč? 677 00:28:37,350 --> 00:28:38,380 Musím překompilovat ho. 678 00:28:38,380 --> 00:28:39,570 Tak chybka se snadno vloudí. 679 00:28:39,570 --> 00:28:41,700 Ale musíte nejen uložit soubor, ale 680 00:28:41,700 --> 00:28:43,260 překompilovat program. 681 00:28:43,260 --> 00:28:46,640 A tak když jsem znovu spustit, aby ahoj, nyní zvonění běží. 682 00:28:46,640 --> 00:28:51,800 Teď už může běžet. / Hello. A teď vidím, "Zadejte řetězec:". 683 00:28:51,800 --> 00:28:52,050 Dobře. 684 00:28:52,050 --> 00:28:53,440 Teď je to trochu více uživatelsky příjemný. 685 00:28:53,440 --> 00:28:55,850 Nate, Enter, ahoj, Nate. 686 00:28:55,850 --> 00:28:57,310 >> No, zkusme to znovu a začít přemýšlet 687 00:28:57,310 --> 00:28:58,080 o rohových případech. 688 00:28:58,080 --> 00:29:00,520 Takže stejně jako v Scratch, budete podporovat nebo jsou 689 00:29:00,520 --> 00:29:03,180 podporovat v spec na druh přemýšlet o tom, co by se mohlo jít 690 00:29:03,180 --> 00:29:06,610 špatně, když nemáte předvídat všechno uživatel mohl udělat. 691 00:29:06,610 --> 00:29:08,050 Chyby, a proto může následovat. 692 00:29:08,050 --> 00:29:09,710 Takže zadejte řetězec - 693 00:29:09,710 --> 00:29:11,130 Co je rohová případ? 694 00:29:11,130 --> 00:29:13,320 Co je to scénář, který jsem, programátor, nemusí mít 695 00:29:13,320 --> 00:29:16,070 Předpokládá se? 696 00:29:16,070 --> 00:29:17,600 Jo. 697 00:29:17,600 --> 00:29:17,920 Dobře. 698 00:29:17,920 --> 00:29:22,060 Takže, co když jsem psát v řadě, jako je tento? 699 00:29:22,060 --> 00:29:22,500 Dobrá. 700 00:29:22,500 --> 00:29:24,490 Takže to ještě funguje. 701 00:29:24,490 --> 00:29:25,880 Gramaticky nedává smysl. 702 00:29:25,880 --> 00:29:27,180 Ale aspoň program funguje. 703 00:29:27,180 --> 00:29:28,650 >> Co je další roh případ? 704 00:29:28,650 --> 00:29:29,610 Něco, co jsem nečekala. 705 00:29:29,610 --> 00:29:31,590 Jo? 706 00:29:31,590 --> 00:29:31,940 Dobře. 707 00:29:31,940 --> 00:29:34,950 Takže bychom mohli udělat něco jako opravdu, ale opravdu velké číslo. 708 00:29:34,950 --> 00:29:37,270 Takže jdeme na to tady. 709 00:29:37,270 --> 00:29:40,880 Dovolte mi, abych vzdálíte na vteřinu, dovolte mi, abych zmínil. 710 00:29:40,880 --> 00:29:42,250 Nelze kopírovat a vložit sem. 711 00:29:42,250 --> 00:29:42,470 Dobrá. 712 00:29:42,470 --> 00:29:44,440 Takže nemohu kopírovat a vložit do této terminálovém okně, takže budeme 713 00:29:44,440 --> 00:29:46,950 také jen simulovat. 714 00:29:46,950 --> 00:29:51,340 Dovolte mi, abych oddálit, bude zabalit. 715 00:29:51,340 --> 00:29:52,700 Nebudu dělat to příliš dlouho, protože to nebude 716 00:29:52,700 --> 00:29:54,440 skutečně rozbít v tomto programu. 717 00:29:54,440 --> 00:29:55,260 Ale to mohlo. 718 00:29:55,260 --> 00:29:55,830 Enter. 719 00:29:55,830 --> 00:29:56,580 Ale to se nestalo. 720 00:29:56,580 --> 00:29:57,050 Dobrá. 721 00:29:57,050 --> 00:29:58,440 Ale je to skutečný roh případ. 722 00:29:58,440 --> 00:30:01,610 A jediný důvod, proč se choval správně, tak 723 00:30:01,610 --> 00:30:05,820 mluvit, je proto, že CS50 funkce GetString je vlastně 724 00:30:05,820 --> 00:30:08,040 navržena pod pokličku, jak uvidíme za pár týdnů, 725 00:30:08,040 --> 00:30:11,570 automaticky přidělit více a více paměti RAM, stále více a více 726 00:30:11,570 --> 00:30:14,330 paměť od operačního systému, když si uvědomí,, wow, 727 00:30:14,330 --> 00:30:16,670 jste opravdu zadali v něco docela dlouho. 728 00:30:16,670 --> 00:30:18,500 Nyní, to je trochu lež. 729 00:30:18,500 --> 00:30:22,020 Pokud bychom skutečně zastavil na nějakou dobu a jsem psát v 730 00:30:22,020 --> 00:30:24,640 něco jako 5000000000 znaků na klávesnici 731 00:30:24,640 --> 00:30:28,060 zde, nebo opravdu hit copy-paste docela dost, jsme dost možná 732 00:30:28,060 --> 00:30:29,730 může způsobit, že program na zhroucení. 733 00:30:29,730 --> 00:30:32,130 Jen trochu těžší simulovat, že s konečnou 734 00:30:32,130 --> 00:30:33,740 množství času. 735 00:30:33,740 --> 00:30:37,320 >> Co je další roh případ, že bychom mohli zkusit? 736 00:30:37,320 --> 00:30:38,730 Jo? 737 00:30:38,730 --> 00:30:39,020 Jo. 738 00:30:39,020 --> 00:30:40,360 Tak proč ne my odpovídáme nic? 739 00:30:40,360 --> 00:30:43,130 Takže ve skutečnosti máme na nějakou akci, protože jinak 740 00:30:43,130 --> 00:30:45,060 Program se bude sedět tam bliká celý den. 741 00:30:45,060 --> 00:30:46,860 Ale když jsem jednoduše stisknout Enter - 742 00:30:46,860 --> 00:30:48,780 OK, teď, stále vypadá špatně. 743 00:30:48,780 --> 00:30:51,670 Copak pád, ale možná je teď příležitost 744 00:30:51,670 --> 00:30:54,190 začít provádět více přísný program 745 00:30:54,190 --> 00:30:55,290 že ve skutečnosti kontroluje. 746 00:30:55,290 --> 00:30:57,640 A pokud řetězec, věta, slovo, které jsem 747 00:30:57,640 --> 00:31:00,890 zadali má délku 0, dobře, možná bych měl křičet na 748 00:31:00,890 --> 00:31:03,770 uživatel, nebo mu říct, nebo ji zadat řetězec znovu tak, aby 749 00:31:03,770 --> 00:31:06,560 jsme vlastně dostat to, co vypadá jako správné chování a ne 750 00:31:06,560 --> 00:31:08,570 Jen kompletní dohled z mé strany. 751 00:31:08,570 --> 00:31:11,130 >> Otázka v zádech? 752 00:31:11,130 --> 00:31:11,970 Desetinné číslo. 753 00:31:11,970 --> 00:31:13,120 Takže jsme si mohli vyzkoušet, že taky. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Zdá se, že takhle to bude jen práce skutečně v pořádku. 756 00:31:19,470 --> 00:31:21,160 A skutečně se očekává. 757 00:31:21,160 --> 00:31:24,550 I když jsme možná jste zadali, že číslo neexistuje, nebo 758 00:31:24,550 --> 00:31:28,200 větší množství dříve, si uvědomit, že když jsme psaní uživatele 759 00:31:28,200 --> 00:31:31,070 vstupní a my jsme pomocí GetString funkce, není 760 00:31:31,070 --> 00:31:34,380 ohledu na to, jestli to, co píšu vypadá jako číslo. 761 00:31:34,380 --> 00:31:36,720 Připomeňme si, že podle ASCII, vše na svém 762 00:31:36,720 --> 00:31:39,920 Klávesnice má číselnou hodnotu, která může být mapována do 763 00:31:39,920 --> 00:31:41,480 znak, char. 764 00:31:41,480 --> 00:31:44,490 Takže v tomto případě, i když se může zadat číslo, 765 00:31:44,490 --> 00:31:48,190 počítač bude myslet na to, abych tak řekl, jako řetězec - 766 00:31:48,190 --> 00:31:49,870 něco, co vypadá jako číslo, ale je 767 00:31:49,870 --> 00:31:51,090 ne vlastně číslo. 768 00:31:51,090 --> 00:31:53,450 Ale to je vlastně dokonalý segue, protože teď můžeme 769 00:31:53,450 --> 00:31:55,450 vlastně přechod k psaní programů, které 770 00:31:55,450 --> 00:31:56,730 používat jiné datové typy. 771 00:31:56,730 --> 00:32:01,840 >> Takže kromě používání znaku, nebo spíše, vedle používání řetězců, 772 00:32:01,840 --> 00:32:04,510 uvědomit, že máme jiné datové typy v C, stejně jako v 773 00:32:04,510 --> 00:32:05,230 jiné jazyky. 774 00:32:05,230 --> 00:32:08,480 Char, jak již název napovídá, je jen jeden znak. 775 00:32:08,480 --> 00:32:12,150 Plovák je plovoucí bodová hodnota, a to je jen fantazie 776 00:32:12,150 --> 00:32:14,470 způsob, jak říkat reálné číslo - něco, co má desetinnou čárku 777 00:32:14,470 --> 00:32:17,410 bod v něm s některými čísly na levé a / nebo pravé. 778 00:32:17,410 --> 00:32:21,370 Int je celé číslo, které je stejně jako číslo 123. 779 00:32:21,370 --> 00:32:24,170 A teď zajímavější, jsou věci jako dvojníka. 780 00:32:24,170 --> 00:32:28,540 Co řekneme double byl naposledy? 781 00:32:28,540 --> 00:32:30,050 Je to 64, že jo. 782 00:32:30,050 --> 00:32:33,560 Takže vzhledem k tomu, typicky float je 32-bit - 783 00:32:33,560 --> 00:32:37,340 takže je to tak dlouho v paměti, používá 32 nul a jedniček na 784 00:32:37,340 --> 00:32:40,530 představují hodnoty - double je doslova dvakrát, což 785 00:32:40,530 --> 00:32:43,810 Znamená to, že můžete buď představovat větší čísla, nebo 786 00:32:43,810 --> 00:32:45,810 můžete představují více přesná čísla. 787 00:32:45,810 --> 00:32:48,690 Takže můžete mít více čísel za desetinnou čárkou, ale 788 00:32:48,690 --> 00:32:51,520 jako kolega řekl ve videu, i něco jednoduchého, 789 00:32:51,520 --> 00:32:55,360 koncepčně jako třetina nemůže být reprezentován přesně podle 790 00:32:55,360 --> 00:32:58,330 počítač, protože nakonec vám dojdou bitů, a 791 00:32:58,330 --> 00:33:02,510 Proto můžete dělat jen .33333333 tolikrát, na 792 00:33:02,510 --> 00:33:05,050 který bod stačí říct, že jsem z reprezentace 793 00:33:05,050 --> 00:33:08,120 prostor, musím jen nazývat to den a zastupovat ji 794 00:33:08,120 --> 00:33:10,200 poněkud nepřesně líbí. 795 00:33:10,200 --> 00:33:11,110 A long long - 796 00:33:11,110 --> 00:33:13,880 hloupý název, ale je to proto, že je datový typ známý jako 797 00:33:13,880 --> 00:33:19,350 dlouho v C, který shodou okolností je často 32 bitů, stejně jako 798 00:33:19,350 --> 00:33:21,670 int je 32 bitů, ale dlouho dlouho 799 00:33:21,670 --> 00:33:23,560 obecně 64 bitů. 800 00:33:23,560 --> 00:33:25,740 Tak to prostě znamená, že může představovat větší 801 00:33:25,740 --> 00:33:26,990 čísla než toto. 802 00:33:26,990 --> 00:33:27,410 >> Dobrá. 803 00:33:27,410 --> 00:33:29,390 Takže pokud chceme skutečně začít reprezentovat věci, my 804 00:33:29,390 --> 00:33:31,030 může být potřeba více sofistikované typy, a 805 00:33:31,030 --> 00:33:32,340 to je důvod, proč máme řetězec. 806 00:33:32,340 --> 00:33:36,450 Takže v CS50 knihovně, že soubor s názvem cs50.h, máme 807 00:33:36,450 --> 00:33:41,110 vlastně deklaroval, datový typ, abych tak řekl, tzv. string, 808 00:33:41,110 --> 00:33:42,710 ale řetězec ve skutečnosti neexistuje. 809 00:33:42,710 --> 00:33:44,780 To je opět jeden z těchto vrstev se budeme slupkou 810 00:33:44,780 --> 00:33:47,490 zpět na týden nebo dva a vyhoďte ho, a vlastně 811 00:33:47,490 --> 00:33:49,640 dívají pod pokličku, co řetězec vlastně je, a 812 00:33:49,640 --> 00:33:50,840 jak se zastoupena. 813 00:33:50,840 --> 00:33:53,520 Jsme také se podíváme na logické hodnoty. 814 00:33:53,520 --> 00:33:56,040 >> Takže, co bylo bool v kontextu Scratch? 815 00:33:59,154 --> 00:34:00,300 Je to pravda, nebo ne. 816 00:34:00,300 --> 00:34:03,900 Takže je to jen hodnota, která je true nebo false, zapnout nebo vypnout, 1 nebo 817 00:34:03,900 --> 00:34:06,140 0, ale chcete-li zobrazit svět. 818 00:34:06,140 --> 00:34:09,739 Takže v C, a to díky CS50 knihovny, což 819 00:34:09,739 --> 00:34:12,179 obsahuje jiné knihovny pod kapotou, máme 820 00:34:12,179 --> 00:34:14,909 přístup k datovým typem, který je volal bool, která bude 821 00:34:14,909 --> 00:34:18,730 doslova nám umožní přiřadit hodnoty true nebo false na 822 00:34:18,730 --> 00:34:20,219 věci v programu. 823 00:34:20,219 --> 00:34:23,880 >> Tak pojďme do toho sem a napsat malý program, který 824 00:34:23,880 --> 00:34:26,330 dělá něco zahrnující čísla místo. 825 00:34:26,330 --> 00:34:29,840 Tak nech mě jít zpátky do CS50 Appliance, nechte mě jít napřed a 826 00:34:29,840 --> 00:34:32,770 vytvořte nový soubor s názvem zde - 827 00:34:32,770 --> 00:34:35,460 řekněme něco jednoduchého, jako math.c. 828 00:34:38,270 --> 00:34:38,710 Dobrá. 829 00:34:38,710 --> 00:34:41,600 A teď jít až na vrchol svého programu, jsem 830 00:34:41,600 --> 00:34:42,510 dělat obvyklé - 831 00:34:42,510 --> 00:34:44,780 # Include , takže mohu použít 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 vrátíme do, případně, co int znamená 834 00:34:49,270 --> 00:34:52,389 tady, co void znamená tu, ale teď, jen vím, že 835 00:34:52,389 --> 00:34:54,270 budete muset spouštět programy, jako je tento. 836 00:34:54,270 --> 00:34:56,280 Teď budu pokračovat a řeknu něco málo 837 00:34:56,280 --> 00:35:02,110 různé - printf ("Dej mi číslo:" 838 00:35:02,110 --> 00:35:03,570 );. 839 00:35:03,570 --> 00:35:09,220 Pak budu dělat int n = GetInt, protože 840 00:35:09,220 --> 00:35:12,770 Ukázalo se, že GetInt je další funkce v CS50 knihovně 841 00:35:12,770 --> 00:35:14,060 kromě GetString. 842 00:35:14,060 --> 00:35:17,340 A teď jdu dělat něco hloupého, jako "díky 843 00:35:17,340 --> 00:35:25,760 pro% d, "pro desetinné číslo, a pak se čárka n, a 844 00:35:25,760 --> 00:35:26,620 pak se vrátit 0. 845 00:35:26,620 --> 00:35:28,940 Takže znovu, vrátí 0 nemá nic společného s číslem jsem 846 00:35:28,940 --> 00:35:30,080 žádá uživatele o. 847 00:35:30,080 --> 00:35:33,620 Jen znamená na konci, že všechny, pravděpodobně, je dobře. 848 00:35:33,620 --> 00:35:36,290 >> Tak nech mě jít k mé terminálovém okně zde. 849 00:35:36,290 --> 00:35:39,590 Dovolte mi, abych zadejte dělat matematiku, zadejte. 850 00:35:39,590 --> 00:35:41,360 A je něco špatně. 851 00:35:41,360 --> 00:35:44,620 Udělejte matematika nefunguje. 852 00:35:44,620 --> 00:35:46,170 Zde je první z našich chybových zpráv. 853 00:35:46,170 --> 00:35:46,570 Proč? 854 00:35:46,570 --> 00:35:49,720 Trochu záhadné, ale - 855 00:35:49,720 --> 00:35:50,060 Jo. 856 00:35:50,060 --> 00:35:51,240 Tak cs50.h. 857 00:35:51,240 --> 00:35:53,900 Takže znovu, a to zejména na začátku, budete psát vaše první 858 00:35:53,900 --> 00:35:56,590 program pro PSet 1 v sekcích, v úředních hodinách, a 859 00:35:56,590 --> 00:35:59,050 upřímně řečeno, bude to ohromující někdy to, co tyto věci 860 00:35:59,050 --> 00:36:00,000 jsou vlastně říká. 861 00:36:00,000 --> 00:36:01,890 Ale budete realizovat velmi rychle začnou klesat 862 00:36:01,890 --> 00:36:06,120 do kbelíků přičemž tato znamená, že jste odešel se od jednoho 863 00:36:06,120 --> 00:36:08,290 z # obsahuje v horní části souboru. 864 00:36:08,290 --> 00:36:10,960 A zvonění, kompilátor, je informovat vás o toto tím, že 865 00:36:10,960 --> 00:36:14,090 říká, spíše fancifully, implicitní prohlášení 866 00:36:14,090 --> 00:36:15,990 funkce GetInt je neplatný. 867 00:36:15,990 --> 00:36:16,310 >> Dobrá. 868 00:36:16,310 --> 00:36:17,520 Takže co to znamená? 869 00:36:17,520 --> 00:36:22,080 To jen znamená, že jste implicitně prohlásil GetInt v 870 00:36:22,080 --> 00:36:24,850 pocit, že jste výslovně prohlásil to. 871 00:36:24,850 --> 00:36:27,300 Chcete-li explicitně deklarovat int, budete muset naučit 872 00:36:27,300 --> 00:36:28,740 Řinčet, že to existuje. 873 00:36:28,740 --> 00:36:32,020 A velmi jednoduché řešení pro které je učit jej 874 00:36:32,020 --> 00:36:34,780 včetně tohoto jiného souboru, cs50.h, na 875 00:36:34,780 --> 00:36:35,850 horní části souboru. 876 00:36:35,850 --> 00:36:40,380 Vzhledem k tomu, doslova to, co # include dělá, je to řekne řinčet 877 00:36:40,380 --> 00:36:44,030 skoro jít najít soubor s názvem cs50.h, kopírování, 878 00:36:44,030 --> 00:36:48,150 vložte jej automaticky do horní části mého programu pro mě, 879 00:36:48,150 --> 00:36:50,850 a pak převést zdrojový kód nul a jedniček. 880 00:36:50,850 --> 00:36:52,850 Ale to by samozřejmě bylo velmi únavné, pokud se my lidé měli 881 00:36:52,850 --> 00:36:55,370 jít kopírování a vkládání těchto velkých souborů po celou dobu, 882 00:36:55,370 --> 00:36:58,540 takže # include jen dělá vše automaticky, bez nutnosti 883 00:36:58,540 --> 00:37:01,550 muddying můj kód někoho jiného knihovny. 884 00:37:01,550 --> 00:37:06,370 A knihovna je jen další soubor, který obsahuje funkce a 885 00:37:06,370 --> 00:37:08,340 jiné věci, které někdo jiný napsal, že jsme 886 00:37:08,340 --> 00:37:10,270 využití pro naše vlastní dobro. 887 00:37:10,270 --> 00:37:10,580 >> Dobrá. 888 00:37:10,580 --> 00:37:11,200 Zkusíme to znovu. 889 00:37:11,200 --> 00:37:12,250 Udělejte matematiku. 890 00:37:12,250 --> 00:37:13,120 Enter. 891 00:37:13,120 --> 00:37:13,530 Dobré. 892 00:37:13,530 --> 00:37:14,880 Takže se zdá, že jsem pracoval. 893 00:37:14,880 --> 00:37:18,330 Tak ať mi teď běží matematiku;. / Math. 894 00:37:18,330 --> 00:37:21,100 Zadejte dává mi číslo, 123. 895 00:37:21,100 --> 00:37:22,620 Díky za 123. 896 00:37:22,620 --> 00:37:24,490 Nyní se pojďme zkusit jiný rohový případ. 897 00:37:24,490 --> 00:37:26,530 Řetězec je docela štědrý, protože 898 00:37:26,530 --> 00:37:27,620 řetězec může být cokoliv. 899 00:37:27,620 --> 00:37:28,910 Může vypadat jako čísla, vypadat 900 00:37:28,910 --> 00:37:30,600 postavy, vypadají jako slova. 901 00:37:30,600 --> 00:37:31,900 Ale int je int. 902 00:37:31,900 --> 00:37:34,370 Takže teď když jsem těžký uživatele, a to říká: "Dej mi 903 00:37:34,370 --> 00:37:38,730 číslo, "co když se snažím udělat něco jako 0,1? 904 00:37:38,730 --> 00:37:41,510 No, to je číslo, a to v souladu s 905 00:37:41,510 --> 00:37:44,180 gramatika I zde používá, ale pod kapotou, jsem z 906 00:37:44,180 --> 00:37:45,610 Předmět pomocí funkce GetInt. 907 00:37:45,610 --> 00:37:46,610 >> Tak uvidíme, co se stane. 908 00:37:46,610 --> 00:37:48,250 Zadejte, zkuste to znovu. 909 00:37:48,250 --> 00:37:48,560 Dobrá. 910 00:37:48,560 --> 00:37:50,570 Nech mě být obtížné a prostě zmáčknout Enter znovu. 911 00:37:50,570 --> 00:37:51,700 Zadejte, Enter. 912 00:37:51,700 --> 00:37:53,890 Takže teď se zdá, že GetInt je trochu více 913 00:37:53,890 --> 00:37:55,240 silnější než GetString. 914 00:37:55,240 --> 00:37:58,540 My, pracovníci, které se provádí tak, že pokud se všimnout 915 00:37:58,540 --> 00:38:02,100 jste nám nedal int - a int je desetinné číslo 916 00:38:02,100 --> 00:38:04,785 obsahující nuly, ty, dvojky, trojky, čtyřky, pětky, šestky, 917 00:38:04,785 --> 00:38:05,540 sedmičky, osmičky, nebo devítky. 918 00:38:05,540 --> 00:38:06,310 A to je vše. 919 00:38:06,310 --> 00:38:08,810 Žádné desetinná místa, žádné znaky, bez interpunkčních znamének. 920 00:38:08,810 --> 00:38:10,390 Zdá se, že musíme spolupracovat. 921 00:38:10,390 --> 00:38:13,680 Tak zkusím čtyři, pět, šest, a to dostává mě. 922 00:38:13,680 --> 00:38:16,760 Takže opravdu, být anální tady, měl bych asi říct "Dej mi 923 00:38:16,760 --> 00:38:20,310 číslo ", aby se dopravují k uživateli 924 00:38:20,310 --> 00:38:22,620 přesně to, co mám v úmyslu. 925 00:38:22,620 --> 00:38:24,090 >> Nyní se pojďme zamyslet pod kapotou. 926 00:38:24,090 --> 00:38:27,930 Nebudeme se dívat na to, jak je cs50.h provedena dnes, 927 00:38:27,930 --> 00:38:29,080 že knihovna. 928 00:38:29,080 --> 00:38:33,600 Ale jestli to pořád říká opakování, opakování, opakování, jaký programovací 929 00:38:33,600 --> 00:38:36,970 konstruovat jsem pravděpodobně pomocí pod pokličku na 930 00:38:36,970 --> 00:38:39,000 implementovat, že? 931 00:38:39,000 --> 00:38:39,980 Takže jen smyčka, ne? 932 00:38:39,980 --> 00:38:41,930 Jeden z nejjednodušších nápadů, které jsme viděli na Scratch. 933 00:38:41,930 --> 00:38:45,050 Forever konstrukce, Repeat konstrukce. 934 00:38:45,050 --> 00:38:47,320 Lze předpokládat, že v tomto programu, pod kapotou, a to i 935 00:38:47,320 --> 00:38:49,470 když je to napsané v C, a ne poškrábání, to dělá 936 00:38:49,470 --> 00:38:54,300 něco jako ekvivalent věčně, pokud uživatel nemá 937 00:38:54,300 --> 00:38:58,710 napsáno v celé číslo, řekněme opakování, opakování, opakování, opakování, takže 938 00:38:58,710 --> 00:39:01,220 nakonec, když to dostaneme celé číslo, pak 939 00:39:01,220 --> 00:39:02,970 vymanit z tohoto cyklu. 940 00:39:02,970 --> 00:39:05,610 >> Takže jaké další funkce můžeme používat zde v knihovně CS50 je? 941 00:39:05,610 --> 00:39:07,880 No,, druh zřejmých ty alespoň na základě 942 00:39:07,880 --> 00:39:09,570 datové typy, které my teď víme existují. 943 00:39:09,570 --> 00:39:12,900 Zavedli jsme GetString, GetInt, ale v celé 944 00:39:12,900 --> 00:39:15,680 První týdny v termínu, můžete také použít GetFloat a 945 00:39:15,680 --> 00:39:18,870 GetDouble a GetLongLong aby se přesně 946 00:39:18,870 --> 00:39:20,030 datové typy, které chcete. 947 00:39:20,030 --> 00:39:24,030 Vzhledem k tomu, klíč detail je, že na rozdíl od některých jazycích, 948 00:39:24,030 --> 00:39:26,630 jako je Python a Ruby, kde nemusíte nutně muset 949 00:39:26,630 --> 00:39:29,730 prohlásil datový typ proměnné - 950 00:39:29,730 --> 00:39:32,390 nemusíte říkat počítač, jaký druh věcí 951 00:39:32,390 --> 00:39:34,000 budete dát do proměnné - 952 00:39:34,000 --> 00:39:36,640 v C, musíte být vždy tak přesné. 953 00:39:36,640 --> 00:39:40,060 Takže pokud chcete proměnnou s názvem n, kus skladování 954 00:39:40,060 --> 00:39:42,900 že v tomto případě se stane, že 32 bitů podle konvence, můžete 955 00:39:42,900 --> 00:39:45,660 musím říct počítač, že tyto kousky jsou 956 00:39:45,660 --> 00:39:47,840 bude pro uložení čísla - 957 00:39:47,840 --> 00:39:50,630 není postava, ne řetězec, ne float. 958 00:39:50,630 --> 00:39:52,620 A to řeší problém se efektivně 959 00:39:52,620 --> 00:39:53,760 běžel do minulého týdne. 960 00:39:53,760 --> 00:39:57,050 Pokud jsme pomocí nul a jedniček čísla představují nejen 961 00:39:57,050 --> 00:40:00,770 čísla, ale AS a BS a Cs, jak ve světě, je 962 00:40:00,770 --> 00:40:03,460 Počítač bude vědět, že tento vzor bitů ve skutečnosti má 963 00:40:03,460 --> 00:40:07,650 představuje číslo 65, na rozdíl od zastupující 964 00:40:07,650 --> 00:40:09,860 písmeno, které náhodně, podle 965 00:40:09,860 --> 00:40:13,440 ASCII, vzpomínám, byl ekvivalentní k 65? 966 00:40:13,440 --> 00:40:16,550 >> Takže tyto datové typy poskytovat kontext k počítači, takže 967 00:40:16,550 --> 00:40:18,810 že neví, jestli se tyto bity musí být vykládán v tom 968 00:40:18,810 --> 00:40:23,660 int nebo jako řetězec. 969 00:40:23,660 --> 00:40:26,500 Jakékoliv dotazy, pak na to? 970 00:40:26,500 --> 00:40:28,149 Jo? 971 00:40:34,780 --> 00:40:35,270 DAVID J. Malan: Dobrá otázka. 972 00:40:35,270 --> 00:40:39,140 Vezmeme-li z stdio.h, uložíme soubor - 973 00:40:39,140 --> 00:40:44,360 dovolte mi, abych šel do okna terminálu a spusťte make matematiky, zoom 974 00:40:44,360 --> 00:40:45,530 a zadat - 975 00:40:45,530 --> 00:40:47,700 teď jsem si různé chyby, protože jsem implicitně 976 00:40:47,700 --> 00:40:49,650 prohlašuje, jakou funkci teď? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Takže teď jsem vytvořil nový problém, jehož řešení je 979 00:40:52,970 --> 00:40:53,890 v podstatě stejné. 980 00:40:53,890 --> 00:40:55,365 Musím to dát zpátky. 981 00:40:55,365 --> 00:40:56,615 PUBLIKUM: [Neslyšitelné] 982 00:41:03,534 --> 00:41:04,030 DAVID J. Malan: Oh. 983 00:41:04,030 --> 00:41:04,850 Takže když to vezmu z - 984 00:41:04,850 --> 00:41:05,360 Dobře, jo. 985 00:41:05,360 --> 00:41:08,960 Takže když jsem odstranit standardní I / O knihovny začlenění do 986 00:41:08,960 --> 00:41:12,020 zde, a pak říkáš, že když jsem se zbavit printf, se 987 00:41:12,020 --> 00:41:13,450 zbavit printf? 988 00:41:13,450 --> 00:41:13,810 Ano. 989 00:41:13,810 --> 00:41:18,450 To by mělo fungovat, protože jsem už s použitím kteréhokoliv - POZOR. 990 00:41:18,450 --> 00:41:20,110 Už jsem jen tak ležet? 991 00:41:20,110 --> 00:41:21,650 Oh, dobře. 992 00:41:21,650 --> 00:41:25,640 To nebude fungovat, protože o novém chybě, kterou právě zavádí. 993 00:41:25,640 --> 00:41:28,390 A tohle je trochu více intuitivní. 994 00:41:28,390 --> 00:41:29,440 >> V čem je problém? 995 00:41:29,440 --> 00:41:30,680 Nepoužité variabilní n. 996 00:41:30,680 --> 00:41:34,040 Takže tato chyba je výsledkem našeho provedení konfigurace 997 00:41:34,040 --> 00:41:36,640 Přístroj být zvláště pedantský, opravdu zařvat 998 00:41:36,640 --> 00:41:39,060 si pro každou možnou chybu, i když je to trochu 999 00:41:39,060 --> 00:41:41,950 non-fatální chyba takhle - je to opravdu tak velký 1000 00:41:41,950 --> 00:41:44,820 zabývat, že jsem přidělil int, dát číslo v ní, a potom 1001 00:41:44,820 --> 00:41:46,030 jen dělal nic s tím? 1002 00:41:46,030 --> 00:41:47,020 Takže funkčně, no. 1003 00:41:47,020 --> 00:41:50,410 To není rozbije program. 1004 00:41:50,410 --> 00:41:51,490 Je to jen trochu hloupé, ne? 1005 00:41:51,490 --> 00:41:54,220 Žádné hodnoty na které požádaly o změnu této číslo, uložené 1006 00:41:54,220 --> 00:41:56,370 to v proměnné, pokud jste nikdy dělat nic 1007 00:41:56,370 --> 00:41:58,000 s tím, ať ji vytisknout nebo uložit. 1008 00:41:58,000 --> 00:42:00,270 Takže v tomto případě, zvonění připouštění tolik, a 1009 00:42:00,270 --> 00:42:02,010 to říká nepoužívané proměnné n. 1010 00:42:02,010 --> 00:42:05,380 >> Tak jsme to spravit, pokud skutečně chceme. 1011 00:42:05,380 --> 00:42:07,250 Ale znovu, to není dobré programovací teď. 1012 00:42:07,250 --> 00:42:09,310 Takže jsem mohl jen udělat - 1013 00:42:09,310 --> 00:42:12,060 jít sem, dovolte mi, abych je vymazat obrazovku, aby matematiku. 1014 00:42:12,060 --> 00:42:13,090 To funguje. 1015 00:42:13,090 --> 00:42:18,110 Teď jsem si spustit můj matematický program, vezme vstup - 1016 00:42:18,110 --> 00:42:18,700 dobře, to bylo špatné. 1017 00:42:18,700 --> 00:42:23,450 Bere vstup, a že je vše dělá, v tomto případě. 1018 00:42:23,450 --> 00:42:25,220 >> Takže vlastně, pojďme zkusit ještě jeden rohový případ, že bychom 1019 00:42:25,220 --> 00:42:26,300 nemyslel dříve. 1020 00:42:26,300 --> 00:42:28,220 V tomto případě - tady, pojďme zpět k té, která je 1021 00:42:28,220 --> 00:42:29,500 trochu více uživatelsky příjemný. 1022 00:42:29,500 --> 00:42:32,580 Nech mě jít sem a spusťte make matematiku znovu. 1023 00:42:32,580 --> 00:42:34,190 Jejda, co jsem udělal špatně? 1024 00:42:34,190 --> 00:42:35,400 Musím vrátit zpět další. 1025 00:42:35,400 --> 00:42:36,390 Dobře. 1026 00:42:36,390 --> 00:42:38,490 Teď jsme zpátky v původním stavu, kde všichni 1027 00:42:38,490 --> 00:42:39,990 je snad dobře. 1028 00:42:39,990 --> 00:42:43,360 A teď, když spustím matematiku, 123 Zdá se, že funguje. 1029 00:42:43,360 --> 00:42:46,010 Ale to není opravdu efektivní důkaz, jen říct 1030 00:42:46,010 --> 00:42:47,930 v pořádku, že funguje. 1031 00:42:47,930 --> 00:42:49,120 789, která funguje. 1032 00:42:49,120 --> 00:42:50,100 Lhůta pro podání. 1033 00:42:50,100 --> 00:42:51,870 Protože tam je další roh případy zde. 1034 00:42:51,870 --> 00:42:55,040 Řetězec se opravdu nám hodně potíže zadáním 1035 00:42:55,040 --> 00:42:56,510 spousta postav. 1036 00:42:56,510 --> 00:42:59,580 Ale co když píšu v tomto? 1037 00:42:59,580 --> 00:43:04,850 Bít číslo 1 mnohem, mnohem zde - 1038 00:43:04,850 --> 00:43:06,300 v pořádku, je to stále trochu nudné, tak budu 1039 00:43:06,300 --> 00:43:10,040 zastavit zde, a budu stiskněte Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Co se to sakra stalo? 1041 00:43:14,110 --> 00:43:17,680 Takže to může být ve skutečnosti vysvětlit. 1042 00:43:17,680 --> 00:43:18,920 Tak se to brát jako binární? 1043 00:43:18,920 --> 00:43:21,130 Dobrá myšlenka, ale ne, to není fakt, že to vzal 1044 00:43:21,130 --> 00:43:22,815 jako binární, protože to opravdu, to bylo tak nějak 1045 00:43:22,815 --> 00:43:23,080 náhoda. 1046 00:43:23,080 --> 00:43:23,930 Můžeme to udělat znovu. 1047 00:43:23,930 --> 00:43:26,530 Takže tam je č. 2 v binárním systému, který je 1048 00:43:26,530 --> 00:43:27,420 asi dost stejně. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Takže to nebyl problém. 1051 00:43:30,140 --> 00:43:31,390 Co ještě? 1052 00:43:34,650 --> 00:43:35,400 Přesně tak. 1053 00:43:35,400 --> 00:43:37,830 >> Takže myslíte, že zpět na to, co int vlastně je. 1054 00:43:37,830 --> 00:43:40,970 Je to 32 bitů, které dohromady jsou interpretovány 1055 00:43:40,970 --> 00:43:42,090 jako číslo. 1056 00:43:42,090 --> 00:43:44,730 Pokud se mají 32 bitů, to znamená, že každý z kousků může být 1057 00:43:44,730 --> 00:43:46,690 0 nebo 1, 0 nebo 1. 1058 00:43:46,690 --> 00:43:49,090 Takže to znamená, že jsou dvě možnosti pro tento kousek, 1059 00:43:49,090 --> 00:43:51,140 dvě možnosti pro to, dvě možnosti pro to 1060 00:43:51,140 --> 00:43:52,570 bit - tak to je 2 krát 2 krát - 1061 00:43:52,570 --> 00:43:55,480 tak, že je 2 až na 32 síly je celkový počet 1062 00:43:55,480 --> 00:43:58,960 permutace nul a jedniček, pokud máte 32 1063 00:43:58,960 --> 00:44:01,400 Zástupné symboly, nuly nebo jedničky, před vámi. 1064 00:44:01,400 --> 00:44:04,250 Takže pokud jsem 2 na 32, matematicky, to je to co? 1065 00:44:07,080 --> 00:44:07,840 Takže je to hodně. 1066 00:44:07,840 --> 00:44:09,910 Je to 4 miliardy eur, dávat nebo brát. 1067 00:44:09,910 --> 00:44:13,510 A 4000000000 nezdá být tím, čím byla vytištěna tady. 1068 00:44:13,510 --> 00:44:16,290 Ve skutečnosti, to vypadá blíže k 2000000000. 1069 00:44:16,290 --> 00:44:17,970 Ale to není náhoda. 1070 00:44:17,970 --> 00:44:21,590 Skutečnost, že počítač nesprávně vyložila moje obrovské množství, 1071 00:44:21,590 --> 00:44:24,260 můj obrovský posloupnost jedniček a pak můj obrovský sled dvojky, 1072 00:44:24,260 --> 00:44:26,880 jako zhruba 2 miliardy USD, je vysvětleno, jak? 1073 00:44:30,250 --> 00:44:32,180 Tam je limit na int. 1074 00:44:32,180 --> 00:44:34,970 Tam je jistě maximální hodnota, kterou lze reprezentovat. 1075 00:44:34,970 --> 00:44:36,370 Ale je to obvykle 4 mld. Kč, ne? 1076 00:44:36,370 --> 00:44:39,100 Pokud 2 na 32 je zhruba 4 miliardy, které se jeví jako 1077 00:44:39,100 --> 00:44:40,350 že je to největší počet. 1078 00:44:42,420 --> 00:44:45,240 Takže není zbytek, ale dobrá myšlenka. 1079 00:44:45,240 --> 00:44:46,340 Záporná čísla. 1080 00:44:46,340 --> 00:44:49,570 Takže pokud máte 4 miliardy možných věcí, které můžete 1081 00:44:49,570 --> 00:44:52,970 představují s těmito různých obměnách po 32 0s a 1082 00:44:52,970 --> 00:44:55,600 1s, dobře, to dá rozum, že my lidé by mohli chtít 1083 00:44:55,600 --> 00:44:57,110 představují nejen pozitivní celá čísla 1084 00:44:57,110 --> 00:44:58,240 ale záporná celá čísla. 1085 00:44:58,240 --> 00:45:00,410 A skutečně, že je předpoklad, že C je. 1086 00:45:00,410 --> 00:45:03,550 Takže s 32 bity, můžete reprezentují zhruba negativní 2 1087 00:45:03,550 --> 00:45:06,630 miliard celou cestu až k pozitivnímu 2000000000. 1088 00:45:06,630 --> 00:45:08,750 A tak v tomto případě to, co jsme opravdu svědky, je jen 1089 00:45:08,750 --> 00:45:13,600 třásně kapacity naší celé číslo, a my jsme, tak 1090 00:45:13,600 --> 00:45:15,860 mluvit, vylila celé číslo. 1091 00:45:15,860 --> 00:45:19,180 Snažili jsme se nacpat více bitů do něj, než vejde. 1092 00:45:19,180 --> 00:45:22,960 Takže konečný výsledek je, že jsme v podstatě mají všechny bity 1. 1093 00:45:22,960 --> 00:45:25,280 Jsme převrátil všechny naše bitů na, jsme se snažili reprezentovat 1094 00:45:25,280 --> 00:45:27,630 největší možné množství, ale to zjevně není zdaleka 1095 00:45:27,630 --> 00:45:30,960 dostatečně velké, aby reprezentovat dvě věci, které jsem právě zadané a. 1096 00:45:30,960 --> 00:45:31,730 Jo? 1097 00:45:31,730 --> 00:45:32,980 PUBLIKUM: [Neslyšitelné] 1098 00:45:37,230 --> 00:45:37,830 >> DAVID J. Malan: Dobrá otázka. 1099 00:45:37,830 --> 00:45:40,080 Proč prostě nemůžeme představovat, že negativní 1100 00:45:40,080 --> 00:45:41,500 přihlásit jen jako znak? 1101 00:45:41,500 --> 00:45:44,200 Tak jsme absolutně mohli, a tak bychom mohli uložit 1102 00:45:44,200 --> 00:45:45,470 další bit. 1103 00:45:45,470 --> 00:45:49,100 Ale jste stále bude muset zastupovat tuto pomlčku, a 1104 00:45:49,100 --> 00:45:50,700 že to bude stát alespoň něco, 1105 00:45:50,700 --> 00:45:52,220 pravděpodobně trochu. 1106 00:45:52,220 --> 00:45:55,610 Takže ano, mohli bychom mít 32 bitů použitých pro naše číslo, ale teď 1107 00:45:55,610 --> 00:45:57,610 potřebujeme další trochu používané pro naši pomlčkou 1108 00:45:57,610 --> 00:45:58,810 symbol, znaménko minus. 1109 00:45:58,810 --> 00:46:01,470 Takže teď máme 33-bitové hodnoty, které bychom mohli dělat, ale je to 1110 00:46:01,470 --> 00:46:02,570 jen ne tak, jak to udělal. 1111 00:46:02,570 --> 00:46:05,140 Udělali jsme rozhodnutí volání lety, 32 bitů je trochu 1112 00:46:05,140 --> 00:46:06,170 měrná jednotka zde. 1113 00:46:06,170 --> 00:46:08,120 Takže budeme používat jeden z těchto bitů účinně 1114 00:46:08,120 --> 00:46:12,950 představují negativitu, a 31 bitů k reprezentaci čísla. 1115 00:46:12,950 --> 00:46:15,550 Další otázky? 1116 00:46:15,550 --> 00:46:15,670 Dobrá. 1117 00:46:15,670 --> 00:46:16,030 To je hodně. 1118 00:46:16,030 --> 00:46:17,930 Proč nejdeme dopředu a vzít naše pětiminutovou přestávku tady? 1119 00:46:23,580 --> 00:46:24,270 >> Dobrá. 1120 00:46:24,270 --> 00:46:31,250 Takže znovu, ne přeceňovat matematické aplikace 1121 00:46:31,250 --> 00:46:33,840 programování, pojďme jen utrhnout z tohoto jeden příklad 1122 00:46:33,840 --> 00:46:36,590 předtím, než jsme se přestěhovat do jiných konstruktů, právě proto, že 1123 00:46:36,590 --> 00:46:39,430 bude ilustrovat několik společných klopýtal bodů na některé z 1124 00:46:39,430 --> 00:46:41,520 základy, pokud jde o psaní programů. 1125 00:46:41,520 --> 00:46:44,360 V tomto případě, dělá aritmetické výrazy, které mají některé 1126 00:46:44,360 --> 00:46:48,010 zajímavé význam pro syntaxi. 1127 00:46:48,010 --> 00:46:50,430 >> Takže je to jen formule, se kterými se můžeme převést 1128 00:46:50,430 --> 00:46:52,690 teploty ze stupňů Fahrenheita na stupně Celsia. 1129 00:46:52,690 --> 00:46:54,600 Pokud nechcete vzpomenout, je to jen vzorec. 1130 00:46:54,600 --> 00:46:58,870 Takže pokud se připojit Celsia hodnotě 32 stupňů, což je 1131 00:46:58,870 --> 00:47:02,850 zmrazení, že to bude 32 minus 32 je 0, a opravdu, 1132 00:47:02,850 --> 00:47:05,130 0 ve stupních Celsia je také zmrazení. 1133 00:47:05,130 --> 00:47:08,210 Tak rychlé sanity check tam - to je známá rovnice. 1134 00:47:08,210 --> 00:47:10,880 Nech mě jít se k zařízení, i když, a začít 1135 00:47:10,880 --> 00:47:13,920 psaní s názvem programu, stejně jako, f2c, "Fahrenheit 1136 00:47:13,920 --> 00:47:15,920 Celsius dot c ". 1137 00:47:15,920 --> 00:47:18,930 A až na vrchol tady, jdu začít s # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, a já budu dělat int main (void), a 1139 00:47:22,190 --> 00:47:24,680 znovu, budeme vracet v budoucnosti, co int znamená 1140 00:47:24,680 --> 00:47:26,820 tam a co void znamená, že. 1141 00:47:26,820 --> 00:47:28,770 A teď mi dovolte pokračovat a realizovat program, který 1142 00:47:28,770 --> 00:47:31,170 v podstatě dělá tento převod pro nás. 1143 00:47:31,170 --> 00:47:36,830 >> Takže printf, řekněme, teplota ve stupních Fahrenheita. 1144 00:47:36,830 --> 00:47:40,140 A pak mě nech jít dopředu a získat hodnotu od uživatele. 1145 00:47:40,140 --> 00:47:43,120 Jaké hodnoty bych měl dostat od uživatele, pokud chci 1146 00:47:43,120 --> 00:47:45,620 je, aby mi teplotu ve stupních Fahrenheita? 1147 00:47:45,620 --> 00:47:48,090 Jo? 1148 00:47:48,090 --> 00:47:50,090 Co byste navrhli? 1149 00:47:50,090 --> 00:47:50,410 Jo. 1150 00:47:50,410 --> 00:47:51,960 Takže float cítí docela rozumné. 1151 00:47:51,960 --> 00:47:53,950 Máme opět jen málo možností, že 1152 00:47:53,950 --> 00:47:55,310 jsme viděli doposud. 1153 00:47:55,310 --> 00:48:00,100 Máme věci, jako char, double, float, int, long long, 1154 00:48:00,100 --> 00:48:01,150 bool, string. 1155 00:48:01,150 --> 00:48:03,510 Takže z nich, float cítí docela rozumné. 1156 00:48:03,510 --> 00:48:06,340 Můžeme použít dvojí, právo, protože pokud skutečně chceme, aby 1157 00:48:06,340 --> 00:48:07,580 představují lidské teplotu - 1158 00:48:07,580 --> 00:48:10,730 98.60000 - 1159 00:48:10,730 --> 00:48:12,990 můžeme použít 64 bitů k tomu, že, ale to vypadá 1160 00:48:12,990 --> 00:48:14,200 přezbrojení na teplotě. 1161 00:48:14,200 --> 00:48:16,380 Tak pojďme s plovákem. 1162 00:48:16,380 --> 00:48:18,100 Teď potřebuji proměnnou. 1163 00:48:18,100 --> 00:48:20,500 Jen, aby to jednoduché, budu říkat, že f, ale já 1164 00:48:20,500 --> 00:48:23,370 mohl jen jak správně nazývat to teplota, 1165 00:48:23,370 --> 00:48:24,600 ale buď je v pořádku. 1166 00:48:24,600 --> 00:48:27,610 Takže float f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Jakmile jsem se teď se rozhodli používat GetFloat, když jsem 1168 00:48:30,220 --> 00:48:33,340 je třeba udělat jednu opravu. 1169 00:48:33,340 --> 00:48:33,720 Jo. 1170 00:48:33,720 --> 00:48:37,460 Takže musíme # include , jinak kompilátor 1171 00:48:37,460 --> 00:48:39,000 bude křičet na nás. 1172 00:48:39,000 --> 00:48:41,720 Teď, když mám float, nechte mě jít dopředu a dělat 1173 00:48:41,720 --> 00:48:42,460 konverze. 1174 00:48:42,460 --> 00:48:44,980 >> Takže první, dovolte mi, abych také dostat do zvyk zde o 1175 00:48:44,980 --> 00:48:46,310 komentovat můj kód. 1176 00:48:46,310 --> 00:48:49,820 Takže znovu, komentář je jen zápis na člověka, který je 1177 00:48:49,820 --> 00:48:52,600 není součástí programu na sobě, ale to jeden, pomáhá 1178 00:48:52,600 --> 00:48:55,010 pochopit, co jsi udělal ráno, nebo další 1179 00:48:55,010 --> 00:48:57,570 měsíc, pomáhá vaše vyučování člověk pochopit, co jsi udělal 1180 00:48:57,570 --> 00:48:59,230 nebo co jste chtěli dělat, tak je to 1181 00:48:59,230 --> 00:49:00,950 obecně velmi dobrá praxe. 1182 00:49:00,950 --> 00:49:02,940 Každých pár řádků kódu, napsat komentář k 1183 00:49:02,940 --> 00:49:04,490 sami, nebo váš kolega. 1184 00:49:04,490 --> 00:49:08,460 Tak tady, budu říkat, "Zeptejte se uživatele na teplotu." 1185 00:49:08,460 --> 00:49:10,890 Nemusí to být kompletní věta, jen krátká fráze. 1186 00:49:10,890 --> 00:49:14,270 Ale myšlenka komentování v C je, že každý z vašich 1187 00:49:14,270 --> 00:49:17,980 komentáře by měly posílit vás - nebo, řekněme, TF nebo kolegu - 1188 00:49:17,980 --> 00:49:21,290 sbírat svůj program a přesně vědět, co to dělá, tím, že 1189 00:49:21,290 --> 00:49:24,650 tolik čtení kódu, ale čtení připomínky, které 1190 00:49:24,650 --> 00:49:26,220 by měly být stručné a jasné. 1191 00:49:26,220 --> 00:49:29,030 Dobře, takže teď mě nech jít dál a říct, "Převést 1192 00:49:29,030 --> 00:49:32,660 Fahrenheit Celsius. "Takže budu pokračovat, a to, 1193 00:49:32,660 --> 00:49:34,340 řekněme, float c. 1194 00:49:34,340 --> 00:49:36,610 Budeme Celsia jako hodnota s plovoucí čárkou. 1195 00:49:36,610 --> 00:49:37,630 >> A dovolte mi, abych se bodnout se na tohle. 1196 00:49:37,630 --> 00:49:40,350 Vzorec je opět tady. 1197 00:49:40,350 --> 00:49:45,510 Jako 5/9 krát F minus 32. 1198 00:49:45,510 --> 00:49:46,360 Takže jdeme na to. 1199 00:49:46,360 --> 00:49:50,450 Takže 5 děleno 9, minus - 1200 00:49:50,450 --> 00:49:52,330 jejda, jsem pokazil to už. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 Takže 5/9 krát F minus 32. 1203 00:49:56,550 --> 00:49:59,650 Takže F minus 32, středník. 1204 00:49:59,650 --> 00:50:02,000 A teď, tady dole, budu pokračovat 1205 00:50:02,000 --> 00:50:03,220 a říkají, vytiskněte výsledek. 1206 00:50:03,220 --> 00:50:05,160 A tato část je snadná. Printf. 1207 00:50:05,160 --> 00:50:07,980 Jak mám jít o tisku to? 1208 00:50:07,980 --> 00:50:16,890 No, mohl bych říct "Toto číslo ve stupních Celsia je% f \ n", 1209 00:50:16,890 --> 00:50:18,060 jen pro některé estetiku. 1210 00:50:18,060 --> 00:50:20,450 A pak to, co hodnota se chci připojit zde printf je 1211 00:50:20,450 --> 00:50:21,360 Druhý argument? 1212 00:50:21,360 --> 00:50:21,650 Dobře. 1213 00:50:21,650 --> 00:50:22,540 Takže jen c. 1214 00:50:22,540 --> 00:50:24,760 Takže začneme s tím a pak už jen vrátit 0. 1215 00:50:24,760 --> 00:50:25,960 Opět, to nemá nic společného s matematikou. 1216 00:50:25,960 --> 00:50:27,610 To jen znamená, že je vše v pořádku. 1217 00:50:27,610 --> 00:50:31,210 >> Nyní, je to správné, tento program? 1218 00:50:31,210 --> 00:50:31,520 Dobrá. 1219 00:50:31,520 --> 00:50:33,630 Tak jsem udělal nějaké chyby. 1220 00:50:33,630 --> 00:50:35,980 I když nemáte tušení, co programovací je můžete třídit 1221 00:50:35,980 --> 00:50:37,120 zad toho vyvozují na základní škole, co 1222 00:50:37,120 --> 00:50:38,740 chyby zde může být. 1223 00:50:38,740 --> 00:50:40,050 Co je to jeden z prvních? 1224 00:50:40,050 --> 00:50:41,256 PUBLIKUM: [Neslyšitelné] 1225 00:50:41,256 --> 00:50:41,660 DAVID J. Malan: Jo. 1226 00:50:41,660 --> 00:50:42,940 Takže nám chybí závorky. 1227 00:50:42,940 --> 00:50:45,420 Bylo to záměrné, že jsem závorky v keynote 1228 00:50:45,420 --> 00:50:48,130 posuňte tady, protože je to vlastně tento pojem objednávky 1229 00:50:48,130 --> 00:50:51,590 operací, nebo priorita, přičemž některé operace - 1230 00:50:51,590 --> 00:50:52,890 násobení - 1231 00:50:52,890 --> 00:50:56,000 mají vyšší závazné, mají vyšší prioritu, než věci 1232 00:50:56,000 --> 00:50:58,050 jako sčítání nebo odčítání. 1233 00:50:58,050 --> 00:51:00,550 Takže jsme udělali to pro let jen aby bylo jasné, přesně 1234 00:51:00,550 --> 00:51:02,840 what matematická operace by měla být provedena jako první. 1235 00:51:02,840 --> 00:51:05,010 Tak jsem měl asi napodobovat přesně to. 1236 00:51:05,010 --> 00:51:08,990 V opačném případě, je počítač pravděpodobně bude snažit dělat 1237 00:51:08,990 --> 00:51:13,090 něco jako předěl 5 od 9, pak násobit F, pak odečtěte 1238 00:51:13,090 --> 00:51:14,850 32 z celé věci. 1239 00:51:14,850 --> 00:51:16,480 Což není, ve skutečnosti to, co chceme dělat. 1240 00:51:16,480 --> 00:51:17,340 Tak pojďme parenthesize. 1241 00:51:17,340 --> 00:51:20,860 Pojďme přidat své závorky zde, závorky zde. 1242 00:51:20,860 --> 00:51:22,670 Pojďme si tohle sem. 1243 00:51:22,670 --> 00:51:25,130 Tady, jsem si všiml další chybu jsem udělal po cestě. 1244 00:51:25,130 --> 00:51:25,680 Jo? 1245 00:51:25,680 --> 00:51:26,930 PUBLIKUM: [Neslyšitelné] 1246 00:51:29,632 --> 00:51:30,130 >> DAVID J. Malan: Ah. 1247 00:51:30,130 --> 00:51:30,470 Dobré. 1248 00:51:30,470 --> 00:51:32,400 Takže jsme vlastně mít stejnou celé číslo 1249 00:51:32,400 --> 00:51:34,020 Divize vydání z před. 1250 00:51:34,020 --> 00:51:35,800 I opravit, že se podíváme, co se tento příznak. 1251 00:51:35,800 --> 00:51:36,990 Ale budeme muset správnému 1252 00:51:36,990 --> 00:51:37,680 další chyba zde. 1253 00:51:37,680 --> 00:51:38,015 Jo? 1254 00:51:38,015 --> 00:51:39,540 PUBLIKUM: [Neslyšitelné] 1255 00:51:39,540 --> 00:51:40,070 DAVID J. Malan: Ano. 1256 00:51:40,070 --> 00:51:43,130 Takže, hloupá chyba jsem, ale nesmírně důležité. 1257 00:51:43,130 --> 00:51:45,870 Počítač nebude jen přimhouřit oči a nechte 1258 00:51:45,870 --> 00:51:48,770 mi použít kapitálu F, když jsem vlastně deklaroval proměnnou 1259 00:51:48,770 --> 00:51:51,360 jako malá f zde, v souladu 8. 1260 00:51:51,360 --> 00:51:54,470 Tak jsem třeba opravit v řádku 11 mi kapitalizace, která 1261 00:51:54,470 --> 00:51:56,820 Před chvílí byl kapitál F omylem. 1262 00:51:56,820 --> 00:51:57,610 Co tady? 1263 00:51:57,610 --> 00:51:59,980 Mělo by to být malými písmeny, jak dobře? 1264 00:51:59,980 --> 00:52:02,260 Mělo by být, ale to je náhoda. 1265 00:52:02,260 --> 00:52:05,070 To% f nemá nic společného s proměnnou. 1266 00:52:05,070 --> 00:52:07,980 Takže jen pro super clear tady, nechte mě jít napřed a 1267 00:52:07,980 --> 00:52:10,710 přejmenovat, krátce, "teplotu." Dovolte mi, abych přejmenovat 1268 00:52:10,710 --> 00:52:15,050 Tento "teploty." Dovolte mi, abych to přejmenujete. 1269 00:52:15,050 --> 00:52:18,180 Protože, znovu,% f globálně znamená, "plovoucí bodovou hodnotu." 1270 00:52:18,180 --> 00:52:19,950 Nemá nic společného s mým proměnné. 1271 00:52:19,950 --> 00:52:23,080 Ale "teploty" všude možně je jen trochu rozvláčný, 1272 00:52:23,080 --> 00:52:25,370 takže jsem jít zpátky do mého malého "f" s. 1273 00:52:25,370 --> 00:52:27,890 >> Nyní mi dovolte, abych do toho do mého okna zde. 1274 00:52:27,890 --> 00:52:29,190 Značka f2c - 1275 00:52:29,190 --> 00:52:31,200 který byl opět, libovolný název I 1276 00:52:31,200 --> 00:52:32,590 dal k tomuto souboru. 1277 00:52:32,590 --> 00:52:33,690 Zdá se, že sestavují. 1278 00:52:33,690 --> 00:52:35,080 Dovolte mi, abych běžet f2c. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Teplota ve stupních Fahrenheita - pojďme udělat jednoduchý jeden. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, opravit. 1283 00:52:40,910 --> 00:52:45,910 Ale, když jsem teď udělat 212 na vaření - 1284 00:52:45,910 --> 00:52:46,630 damn. 1285 00:52:46,630 --> 00:52:47,030 Dobrá. 1286 00:52:47,030 --> 00:52:50,780 Takže, jasně není správné, pokud vaše TF pokusí 1287 00:52:50,780 --> 00:52:51,800 nejméně dvě hodnoty. 1288 00:52:51,800 --> 00:52:53,340 Tak v čem je problém? 1289 00:52:53,340 --> 00:52:55,970 No, už si prstem na to, co je problém. 1290 00:52:55,970 --> 00:52:57,600 Ale proč je to, že v případě,? 1291 00:52:57,600 --> 00:53:00,630 Až tady, když dělám matematiku 5 děleno 9. 1292 00:53:00,630 --> 00:53:02,190 Takže koncepčně, je to naprosto správný. 1293 00:53:02,190 --> 00:53:03,690 Zcela v souladu se vzorcem. 1294 00:53:03,690 --> 00:53:05,940 Ale pouze počítačů dělat přesně to, co 1295 00:53:05,940 --> 00:53:06,760 řekni jim dělat. 1296 00:53:06,760 --> 00:53:08,940 A to, co jsme skutečně říkat počítač je zde 1297 00:53:08,940 --> 00:53:12,320 rozdělit celé číslo 5 v celé číslo 9 1298 00:53:12,320 --> 00:53:13,670 a dej mi výsledek. 1299 00:53:13,670 --> 00:53:16,230 Problém ale je, když nemáte divize použitím údajů 1300 00:53:16,230 --> 00:53:20,220 Typy, výstup je stejný typ dat jako vstupy. 1301 00:53:20,220 --> 00:53:23,670 A tak jestliže dva vstupy jsou oba ints, výstup bude 1302 00:53:23,670 --> 00:53:25,110 být int. 1303 00:53:25,110 --> 00:53:28,770 A tak 5 děleno 9 je bod něco. 1304 00:53:28,770 --> 00:53:32,320 Ale co je nejbližší celé číslo na něco? 1305 00:53:32,320 --> 00:53:33,630 Takže, je to vlastně 0. 1306 00:53:33,630 --> 00:53:36,620 Tak jak jsme se bavili v pondělí, vše, co po desetinné 1307 00:53:36,620 --> 00:53:37,940 bod dostane zkráceny. 1308 00:53:37,940 --> 00:53:39,495 Je to prostě dostane vyhodit. 1309 00:53:39,495 --> 00:53:42,760 Tak to je naprostý omyl, protože jsem mohl stejně dobře 1310 00:53:42,760 --> 00:53:44,700 vynásobte všechno 0 zde. 1311 00:53:44,700 --> 00:53:46,550 >> Nyní, to mohu opravit v několika způsoby. 1312 00:53:46,550 --> 00:53:48,080 Mohl bych to udělat. 1313 00:53:48,080 --> 00:53:50,490 5,0 děleno 9.0. 1314 00:53:50,490 --> 00:53:52,110 Technicky, jsem ani nemusíte dělat. 1315 00:53:52,110 --> 00:53:55,780 To se stačí jen, aby jedno z čísel float - 1316 00:53:55,780 --> 00:53:58,290 nebo dvojité - tím, že desetinnou čárku zde. 1317 00:53:58,290 --> 00:54:01,740 Vzhledem k tomu, co se teď stane, je při dělení celé číslo od 1318 00:54:01,740 --> 00:54:04,670 float, nebo double, počítač to bude realizovat 1319 00:54:04,670 --> 00:54:06,830 oh, jedním z nich je přesnější. 1320 00:54:06,830 --> 00:54:09,420 Dovolte mi, abych chybovat na straně dává vám větší přesnost než 1321 00:54:09,420 --> 00:54:10,310 jste zamýšleli. 1322 00:54:10,310 --> 00:54:12,700 Tak to bude převést výsledek - 1323 00:54:12,700 --> 00:54:16,240 vrátí výsledek jako desetinné hodnoty, jakož. 1324 00:54:16,240 --> 00:54:17,330 Tak to bude fungovat. 1325 00:54:17,330 --> 00:54:18,060 To bude fungovat. 1326 00:54:18,060 --> 00:54:20,010 A je tu ještě jedna mechanismus, který uvidíme v 1327 00:54:20,010 --> 00:54:21,390 větší detail příští týden. 1328 00:54:21,390 --> 00:54:24,690 Můžete si skutečně, jako programátor, řekněte počítač 1329 00:54:24,690 --> 00:54:27,930 skutečně léčit jeden datový typ jako 1330 00:54:27,930 --> 00:54:29,260 by to bylo jiné. 1331 00:54:29,260 --> 00:54:30,990 >> Takže jsem mohl skutečně udělat. 1332 00:54:30,990 --> 00:54:35,280 V závorce, mohu říci něco podobného (float), otevřený 1333 00:54:35,280 --> 00:54:36,350 paren, úzkým paren. 1334 00:54:36,350 --> 00:54:39,050 A to je to, co se nazývá "lití". Opět, více 1335 00:54:39,050 --> 00:54:39,940 na tomto příští týden. 1336 00:54:39,940 --> 00:54:42,280 Ale to je jen programový způsob vyprávění 1337 00:54:42,280 --> 00:54:45,910 počítač, jo já vím, 9 je celé číslo nebo dlouhé. 1338 00:54:45,910 --> 00:54:47,700 Já vím, že to není hodnota s plovoucí čárkou. 1339 00:54:47,700 --> 00:54:49,420 Ale vemte to jako takový stejně. 1340 00:54:49,420 --> 00:54:52,000 Takže na obsazení datový typ znamená převést 1341 00:54:52,000 --> 00:54:53,310 od jednoho k druhému. 1342 00:54:53,310 --> 00:54:55,790 Upřímně řečeno, je to jen trochu ošklivý, takže navrhuji, jdeme 1343 00:54:55,790 --> 00:54:58,830 zpět na původní návrh jen konverze 1344 00:54:58,830 --> 00:55:00,770 aby se tyto věci plovoucí desetinnou čárkou hodnoty ručně. 1345 00:55:00,770 --> 00:55:02,890 Protože teď je to prostě super jasné, co se děje, a 1346 00:55:02,890 --> 00:55:04,280 to není všechno, že rušivě. 1347 00:55:04,280 --> 00:55:06,710 >> Takže pojďme se teď vrátit do svého terminálovém okně. 1348 00:55:06,710 --> 00:55:07,990 Udělejte F2C. 1349 00:55:07,990 --> 00:55:09,430 Nech mě jít napřed a spustit tento. 1350 00:55:09,430 --> 00:55:12,340 A jak stranou, vás nudit psaní těchto příkazů 1351 00:55:12,340 --> 00:55:14,910 znovu a znovu, si uvědomit, že počítače, jako je Linux tady, 1352 00:55:14,910 --> 00:55:16,010 mají tendenci být dost chytrý. 1353 00:55:16,010 --> 00:55:18,890 A pokud jsem narazila Up, můžeme jít přes můj celé historii 1354 00:55:18,890 --> 00:55:20,380 příkazy, nahoru a dolů. 1355 00:55:20,380 --> 00:55:23,840 Takže v tomto případě zde, mohu jen jít až spusťte make F2C. 1356 00:55:23,840 --> 00:55:25,830 Já se křičel na, protože jsem to udělal, že před vteřinou. 1357 00:55:25,830 --> 00:55:27,030 Je to již aktuální. 1358 00:55:27,030 --> 00:55:30,720 Takže teď můžu běžet f2c znovu. 1359 00:55:30,720 --> 00:55:33,260 Zkusme 32 Fahrenheita. 1360 00:55:33,260 --> 00:55:36,720 Nyní se pojďme zkusit 212 Fahrenheita. 1361 00:55:36,720 --> 00:55:37,250 >> Uf. 1362 00:55:37,250 --> 00:55:38,250 Zdá se, že se do práce. 1363 00:55:38,250 --> 00:55:41,760 Nyní, je to dobře, ale je to trochu libovolný že 1364 00:55:41,760 --> 00:55:44,890 Jsem ukazuje šest čísel po desetinných míst. 1365 00:55:44,890 --> 00:55:45,070 Je to tak? 1366 00:55:45,070 --> 00:55:47,830 Pokud jste osoba počasí v televizi, že jste trochu doofus 1367 00:55:47,830 --> 00:55:49,150 pokud čtete teplotu na 1368 00:55:49,150 --> 00:55:50,070 tento stupeň přesnosti. 1369 00:55:50,070 --> 00:55:51,270 Tak pojďme zjednodušit tím. 1370 00:55:51,270 --> 00:55:53,880 Takže pojďme skutečně jít sem, k mému printf. 1371 00:55:53,880 --> 00:55:55,490 A jo, já chci plout. 1372 00:55:55,490 --> 00:55:57,570 Ale já chci, aby nyní určit přesnost. 1373 00:55:57,570 --> 00:55:59,070 A já budu trochu stručné. 1374 00:55:59,070 --> 00:56:03,090 Já řeknu, dej mi jeden bod po desetinné místo. 1375 00:56:03,090 --> 00:56:07,590 Takže spíše než říkat% f, budu říkat% .1 f. 1376 00:56:07,590 --> 00:56:09,760 A to jen znamená, dej mi jednu pozici 1377 00:56:09,760 --> 00:56:11,410 za desetinnou čárkou. 1378 00:56:11,410 --> 00:56:11,700 Dobrá. 1379 00:56:11,700 --> 00:56:12,570 Zkusme to znovu. 1380 00:56:12,570 --> 00:56:15,590 Dovolte mi, abych znovu spustit po kompilaci. 1381 00:56:15,590 --> 00:56:18,160 A teď píšu v 32, a já se vrátím 1382 00:56:18,160 --> 00:56:19,310 stručnější hodnotu. 1383 00:56:19,310 --> 00:56:22,480 A můžu psát, teď, 212, a získat zpět více stručné 1384 00:56:22,480 --> 00:56:23,260 hodnota stejně. 1385 00:56:23,260 --> 00:56:25,190 A je tu další věci, které můžete dělat s printf. 1386 00:56:25,190 --> 00:56:27,950 Můžete si skutečně určit, jak široký číslo by mělo být. 1387 00:56:27,950 --> 00:56:30,900 Pokud chcete mít výplň na to, takže můžete zarovnat nebo 1388 00:56:30,900 --> 00:56:32,360 vlevo zarovnat všechny vaše čísla nebo 1389 00:56:32,360 --> 00:56:33,400 zkuste centra věci. 1390 00:56:33,400 --> 00:56:35,340 Takže uvědomila, že existují malé triky, které můžete udělat zde. 1391 00:56:35,340 --> 00:56:38,420 Ale oni prostě se redukuje na formátu kódů, 1392 00:56:38,420 --> 00:56:39,600 to, že máme tu. 1393 00:56:39,600 --> 00:56:41,090 >> Takže pokud jde o této otázce priorit. 1394 00:56:41,090 --> 00:56:43,820 To je velmi nudné tabulky projít metodicky. 1395 00:56:43,820 --> 00:56:46,780 Ale uvědomte si, že autoři C přišli s 1396 00:56:46,780 --> 00:56:50,190 Pravidla, která specifikují, které provozovatelé mají vyšší 1397 00:56:50,190 --> 00:56:53,680 přednost, více závazný výkon, než ostatní. 1398 00:56:53,680 --> 00:56:55,890 Takže vzhledem k tomu, na základní škole, jsme se obecně věděli, že je to 1399 00:56:55,890 --> 00:56:58,930 násobení a dělení, pak sčítání a odčítání, 1400 00:56:58,930 --> 00:56:59,950 pak některé další věci. 1401 00:56:59,950 --> 00:57:01,720 Ve světě programování, je tu mnohem 1402 00:57:01,720 --> 00:57:03,360 delší seznam věcí. 1403 00:57:03,360 --> 00:57:05,150 A to není něco, co stojí za zapamatování teď. 1404 00:57:05,150 --> 00:57:07,310 Dostanete aklimatizovat na to zanedlouho. 1405 00:57:07,310 --> 00:57:10,690 Ale stejně jako v základní škole, závorky obecně řešit 1406 00:57:10,690 --> 00:57:12,990 otázky priority, tím, že Super jasné 1407 00:57:12,990 --> 00:57:15,620 počítač a lidský podobný co je určen. 1408 00:57:15,620 --> 00:57:17,770 Takže zvažte to jen trochu tahák tam. 1409 00:57:17,770 --> 00:57:21,690 Ale většina z těchto údajů nebudeme mít na nějakou dobu. 1410 00:57:21,690 --> 00:57:21,900 >> Dobrá. 1411 00:57:21,900 --> 00:57:24,120 Nyní, pojďme vybudovat a odklon od těchto hloupá 1412 00:57:24,120 --> 00:57:25,460 matematické příklady. 1413 00:57:25,460 --> 00:57:27,500 Stále používají stejné základy, ale kdo 1414 00:57:27,500 --> 00:57:29,960 vyjadřování trochu více jako Scratch. 1415 00:57:29,960 --> 00:57:31,660 Takže v Scratch, měli jsme booleovské výrazy. 1416 00:57:31,660 --> 00:57:34,890 A v angličtině, booleovský výraz je to, co? 1417 00:57:34,890 --> 00:57:35,580 True nebo false. 1418 00:57:35,580 --> 00:57:38,300 Je to něco, co vyhodnotí jako true nebo false. 1419 00:57:38,300 --> 00:57:39,060 1 nebo 0. 1420 00:57:39,060 --> 00:57:39,870 Zapnout nebo vypnout. 1421 00:57:39,870 --> 00:57:41,000 Ať už chcete nazývat. 1422 00:57:41,000 --> 00:57:43,210 Nyní v Scratch, jednotlivé díly skládačky vypadal takhle. 1423 00:57:43,210 --> 00:57:45,850 A to je kombinace, na dně, ze tří 1424 00:57:45,850 --> 00:57:47,980 dílky. 1425 00:57:47,980 --> 00:57:48,980 Jedna spojka - 1426 00:57:48,980 --> 00:57:51,710 něco, co má prázdné a prázdné. 1427 00:57:51,710 --> 00:57:53,970 A pak dva logické výrazy uvnitř ní. 1428 00:57:53,970 --> 00:57:56,460 Takže můžete vnořovat Booleovské výrazy získat více 1429 00:57:56,460 --> 00:57:59,360 složité booleovských výrazů. 1430 00:57:59,360 --> 00:58:03,930 Například, pokud je sobota, a to je hezké 1431 00:58:03,930 --> 00:58:06,180 počasí, pak jít ven. 1432 00:58:06,180 --> 00:58:07,500 Nebo tak něco svévolné takového. 1433 00:58:07,500 --> 00:58:10,090 Takže se můžete připojit logické výrazy přijít s 1434 00:58:10,090 --> 00:58:12,780 větší pravdivostní hodnota, jejíž odpověď je založena 1435 00:58:12,780 --> 00:58:13,800 na těch menších. 1436 00:58:13,800 --> 00:58:15,770 >> Nyní, v C, naštěstí, to je mapování 1437 00:58:15,770 --> 00:58:16,720 vlastně docela jednoduché. 1438 00:58:16,720 --> 00:58:18,820 Závorky napomoci tomu, aby se situace nevyjasní zde. 1439 00:58:18,820 --> 00:58:21,700 && Je to, co znamená "a". Tak to je, jak 1440 00:58:21,700 --> 00:58:24,700 budeme převést tyto bloky od nuly do C. 1441 00:58:24,700 --> 00:58:27,590 A podmínky, jsme viděli v Scratch, na levé straně 1442 00:58:27,590 --> 00:58:31,150 strana tam, můžu vyskládat podobně v C. Je-li x menší 1443 00:58:31,150 --> 00:58:32,970 než y, pak to udělat. 1444 00:58:32,970 --> 00:58:35,100 Nebo jestliže x je větší než y, pak to. 1445 00:58:35,100 --> 00:58:38,030 Else logicky musí být stejná, tak říci, 1446 00:58:38,030 --> 00:58:39,140 , že jsou stejné. 1447 00:58:39,140 --> 00:58:41,210 Takže nyní můžeme začít budovat tyto věci. 1448 00:58:41,210 --> 00:58:42,170 >> Takže pojďme udělat příklad. 1449 00:58:42,170 --> 00:58:45,550 Dovolte mi, abych otevřít soubor, který je na hřišti internetových stránkách tohoto 1450 00:58:45,550 --> 00:58:47,270 Jsem napsal v předstihu. 1451 00:58:47,270 --> 00:58:50,540 To se nazývá nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 A uvidíme, proč za chvíli. 1453 00:58:52,270 --> 00:58:54,770 Takže v tomto souboru - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 nejprve uvědomit, že je tu celá parta 1455 00:58:56,830 --> 00:58:58,460 připomínky na vrcholu. 1456 00:58:58,460 --> 00:59:00,110 To je jen vysvětlení názvu souboru, co to 1457 00:59:00,110 --> 00:59:01,260 dělá, a tak dále. 1458 00:59:01,260 --> 00:59:04,390 A to zřejmě ukazuje použití Boolean A-ing - 1459 00:59:04,390 --> 00:59:06,220 konjunkci dvou výrazů. 1460 00:59:06,220 --> 00:59:07,670 >> Takže pojďme se podívat, jak tento program funguje. 1461 00:59:07,670 --> 00:59:10,840 Můžu zahrnout své dva soubory, cs50.h a stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Kdybych posunout dolů, nyní, na programu, je to trochu déle 1463 00:59:13,180 --> 00:59:15,730 než jsme napsal dříve, ale docela čitelné. 1464 00:59:15,730 --> 00:59:18,360 Tak jsem nejprve vytisknout pro uživatele, na řádku 18, 1465 00:59:18,360 --> 00:59:20,460 "Dej mi číslo mezi 1 a 10." Tak 1466 00:59:20,460 --> 00:59:21,530 že je to tady. 1467 00:59:21,530 --> 00:59:23,410 Teď jsem si na celé číslo. 1468 00:59:23,410 --> 00:59:25,380 Ale uvědomte si, že GetInt - velmi jednoduchý. 1469 00:59:25,380 --> 00:59:26,510 Je to prostě dostane int. 1470 00:59:26,510 --> 00:59:28,830 Bude to, aby to dostat int a ne 1471 00:59:28,830 --> 00:59:30,060 řetězec nebo float. 1472 00:59:30,060 --> 00:59:32,390 Ale to nebude dělat jakékoliv hranice kontroly. 1473 00:59:32,390 --> 00:59:34,750 To nebude filtrovat čísla, aby se mezi 1474 00:59:34,750 --> 00:59:35,630 určitý sortiment. 1475 00:59:35,630 --> 00:59:37,730 Takže musíme implementovat, že sami. 1476 00:59:37,730 --> 00:59:40,680 Takže stejně jako v Scratch, kde bych mohl udělat konjunkci 1477 00:59:40,680 --> 00:59:43,560 dva výrazy, mohu to udělat v C takto. 1478 00:59:43,560 --> 00:59:48,660 Je-li n vyšší než nebo rovna 1, a n je menší než a 1479 00:59:48,660 --> 00:59:52,220 nebo roven 3, budu velmi libovolně vyhlášky, kterou se 1480 00:59:52,220 --> 00:59:53,830 číslo být malé množství. 1481 00:59:53,830 --> 00:59:56,730 Jen kvůli prohlášení. 1482 00:59:56,730 --> 01:00:00,210 Else if n je mezi 4 a 6, print "Vybrali jste si médium 1483 01:00:00,210 --> 01:00:03,440 číslo. "Else, pokud n je mezi 7 a 10, print" Vybrali jste si 1484 01:00:03,440 --> 01:00:06,390 velké číslo. "Else tisku" Vy si vyberete neplatný počet. " 1485 01:00:06,390 --> 01:00:07,900 Protože logicky, že takto, pokud máme 1486 01:00:07,900 --> 01:00:09,230 vyčerpání náš sortiment. 1487 01:00:09,230 --> 01:00:12,400 >> Takže uvědomit to není úplně jak zapsat větší než nebo 1488 01:00:12,400 --> 01:00:15,000 rovná v matiku. 1489 01:00:15,000 --> 01:00:15,160 Je to tak? 1490 01:00:15,160 --> 01:00:17,430 Ty obvykle nakreslit to takhle, s linkou pod ním. 1491 01:00:17,430 --> 01:00:19,250 Ale není tam žádný takový klíč na mé klávesnice. 1492 01:00:19,250 --> 01:00:22,390 Takže symbol C pro vyjádření větší než nebo 1493 01:00:22,390 --> 01:00:25,770 rovná se dva znaky, a symbol po dobu kratší než 1494 01:00:25,770 --> 01:00:29,100 nebo rovná se dva znaky, stejně. 1495 01:00:29,100 --> 01:00:29,330 Dobrá. 1496 01:00:29,330 --> 01:00:31,910 Takže když jsem spustit tento program, budete pravděpodobně uhodnout, co to je 1497 01:00:31,910 --> 01:00:32,650 dělat. 1498 01:00:32,650 --> 01:00:36,180 Pokud bych do toho a udělat nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 A potom spusťte nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Dejte mi číslo mezi 1 a 10. 1501 01:00:39,530 --> 01:00:40,870 Chystám se dát mu 11. 1502 01:00:40,870 --> 01:00:42,280 Vybral jsem neplatné číslo. 1503 01:00:42,280 --> 01:00:44,090 Zkusím číslo 3. 1504 01:00:44,090 --> 01:00:45,990 Vybral jsem si malý počet. 1505 01:00:45,990 --> 01:00:48,360 Takže poměrně přímočará tam. 1506 01:00:48,360 --> 01:00:52,230 >> Co když chci změnit chování tohoto programu a 1507 01:00:52,230 --> 01:00:54,250 něco trochu jiného místo? 1508 01:00:54,250 --> 01:00:57,620 Nech mě jít dál a říct. 1509 01:00:57,620 --> 01:00:59,480 Dovolte mi, abych se zbavit toho všeho. 1510 01:00:59,480 --> 01:01:03,780 A dovolte mi říci, zda (n == 42). 1511 01:01:03,780 --> 01:01:08,730 A pak budu pokračovat a říct tisk "Ty si vybral 1512 01:01:08,730 --> 01:01:16,340 Správná odpověď. "Else budeme pokračovat a říct, 1513 01:01:16,340 --> 01:01:18,460 printf ("Vybrali jste si 1514 01:01:18,460 --> 01:01:21,170 špatná odpověď ");. Dobře. 1515 01:01:21,170 --> 01:01:22,040 Jen proto, že. 1516 01:01:22,040 --> 01:01:23,890 >> Nyní, o několik bodů můžeme zde. 1517 01:01:23,890 --> 01:01:26,570 Jednou jsem neměl zadejte symbol, který by si myslel, je 1518 01:01:26,570 --> 01:01:27,390 nejrozumnějším. 1519 01:01:27,390 --> 01:01:30,110 Když chci zkontrolovat rovnost, ukázalo se, že nepoužíváte 1520 01:01:30,110 --> 01:01:30,910 znaménko rovná se. 1521 01:01:30,910 --> 01:01:34,000 Místo toho použít rovná rovnítko. 1522 01:01:34,000 --> 01:01:36,440 A proč by to mělo být, jen intuitivně? 1523 01:01:36,440 --> 01:01:37,030 Jo. 1524 01:01:37,030 --> 01:01:39,330 PUBLIKUM: [Neslyšitelné] 1525 01:01:39,330 --> 01:01:39,615 DAVID J. Malan: Správně. 1526 01:01:39,615 --> 01:01:41,630 Znaménko rovná se již používá pro přiřazení. 1527 01:01:41,630 --> 01:01:43,020 Někdo se opravdu si to promyslet. 1528 01:01:43,020 --> 01:01:45,820 A tak teď, když přijde na rovnost testování, musíme 1529 01:01:45,820 --> 01:01:48,850 být více explicitní, a řekni rovná rovná. 1530 01:01:48,850 --> 01:01:52,110 Velmi častou chybou je udělat to. 1531 01:01:52,110 --> 01:01:54,800 A pokud v úředních hodinách, nebo někdy příští týden, nebo v 1532 01:01:54,800 --> 01:01:58,340 Další dva týdny si něco takového a pak 1533 01:01:58,340 --> 01:02:00,920 bojovat s ním 10, 20 minut se snaží přijít na to, 1534 01:02:00,920 --> 01:02:03,330 co sakra chyba je, si uvědomit, že jste jedním z těch, 1535 01:02:03,330 --> 01:02:04,470 lidé, kteří z této chyby. 1536 01:02:04,470 --> 01:02:06,030 Takže, Super snadné. 1537 01:02:06,030 --> 01:02:08,240 Ale cílem je nyní odrazit tuto chybu. 1538 01:02:08,240 --> 01:02:11,840 To by mohlo hodnotit, protože to, co je to vlastně říká? 1539 01:02:11,840 --> 01:02:15,010 Je-li n dostane 42. 1540 01:02:15,010 --> 01:02:18,250 Takže sloveso lidé používají, ústně, vyjádřit 1541 01:02:18,250 --> 01:02:21,800 Pojem práce je "dostane." Takže pokud n dostane 42. 1542 01:02:21,800 --> 01:02:24,060 Takže to znamená, přiřadit 42 až n. 1543 01:02:24,060 --> 01:02:26,250 Teď mám logický výraz v závorce, 1544 01:02:26,250 --> 01:02:30,230 uvnitř tohoto stavu, jehož hodnota je 42. 1545 01:02:30,230 --> 01:02:30,390 Je to tak? 1546 01:02:30,390 --> 01:02:32,690 Protože pokud budete hodnotit zevnitř ven, celkem 1547 01:02:32,690 --> 01:02:34,100 Odpověď, nyní je 42. 1548 01:02:34,100 --> 01:02:37,360 >> Takže pokud jsem se vás na otázku, "jestli (42)," to, co je 1549 01:02:37,360 --> 01:02:38,410 že vlastně říká? 1550 01:02:38,410 --> 01:02:40,990 No, logické výrazy pouze true nebo false. 1551 01:02:40,990 --> 01:02:42,010 1 nebo 0. 1552 01:02:42,010 --> 01:02:43,010 Zapnout nebo vypnout. 1553 01:02:43,010 --> 01:02:45,240 Takže se zdá, že mají rohovou případ tady, kdy všichni 1554 01:02:45,240 --> 01:02:50,060 náhlé, říkám "pokud (42)". To není logická hodnota. 1555 01:02:50,060 --> 01:02:54,500 Takže to, co počítače dělat, když je to v podstatě odpovídá 1556 01:02:54,500 --> 01:02:58,620 něco, co to není 0 je interpretována být pravdivý. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 On. 1559 01:02:59,690 --> 01:03:01,510 Všichni jsou funkčně ekvivalentní. 1560 01:03:01,510 --> 01:03:05,070 Pouze hodnota 0, nebo klíčové slovo false, as potkáme 1561 01:03:05,070 --> 01:03:07,860 nakonec vidět, je ve skutečnosti falešný. 1562 01:03:07,860 --> 01:03:15,040 Takže ", pokud (42)" skutečně pravda, protože to je nenulová. 1563 01:03:15,040 --> 01:03:18,620 Takže přesněji tady, Boolean hodnota opravdu není tak 1564 01:03:18,620 --> 01:03:20,680 Kolik true nebo false, ale pro tento 1565 01:03:20,680 --> 01:03:24,650 případě, pokud je 0 nebo nenulová. 1566 01:03:24,650 --> 01:03:26,330 Takže false false, nebo ne. 1567 01:03:26,330 --> 01:03:28,640 A to nám umožňuje zahrnout všechny více 1568 01:03:28,640 --> 01:03:30,980 možnosti v závorkách výrazu. 1569 01:03:30,980 --> 01:03:33,840 Takže musíme, někdy tak pečlivě, říkají, že toto - 1570 01:03:33,840 --> 01:03:35,620 if (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Jednoduše proto, že musíme určit test rovnosti, 1572 01:03:39,100 --> 01:03:40,930 není přiřazení hodnoty. 1573 01:03:40,930 --> 01:03:42,830 >> Co jiného stojí za zmínku tady? 1574 01:03:42,830 --> 01:03:46,030 Tyto složené závorky jsou skutečně není nutné. 1575 01:03:46,030 --> 01:03:48,650 Dělal jsem je jen proto, aby se NIT-vybíravý zde. 1576 01:03:48,650 --> 01:03:51,350 Ale když máte podmínku, která má pouze jeden řádek 1577 01:03:51,350 --> 01:03:55,100 kód, jako pohodlí, programátoři nemusí používat 1578 01:03:55,100 --> 01:03:56,030 složené závorky. 1579 01:03:56,030 --> 01:03:59,370 Postačí jen odrážky, z estetických důvodů, a 1580 01:03:59,370 --> 01:04:01,050 Poté napište řádek kódu. 1581 01:04:01,050 --> 01:04:04,160 Pouze tehdy, když chcete napsat dva řádky kódu - pro 1582 01:04:04,160 --> 01:04:08,230 instance, jinak printf ("Ahoj!"). Pokud chcete udělat 1583 01:04:08,230 --> 01:04:09,540 to, že je vadný. 1584 01:04:09,540 --> 01:04:11,700 Můžete odrážka vše, co chceš, ale skutečnost, že máte 1585 01:04:11,700 --> 01:04:14,600 napsal dva řádky kódu bez použití složené závorky 1586 01:04:14,600 --> 01:04:16,860 znamená, že tento program nebude fungovat správně nebo mohlo 1587 01:04:16,860 --> 01:04:18,530 Ani sestavit správně. 1588 01:04:18,530 --> 01:04:21,040 Takže teď, abych byl upřímný, myslím, že nejlepší zvyk je jen 1589 01:04:21,040 --> 01:04:24,460 používat složené závorky, a zjistíte, že oni dělají 1590 01:04:24,460 --> 01:04:25,750 Super jasné, co se děje. 1591 01:04:25,750 --> 01:04:29,410 >> Také, jako stranou - zvláště pokud jste mezi těmi, kteří používají 1592 01:04:29,410 --> 01:04:31,700 doporučené knihy nebo zdroje on-line - 1593 01:04:31,700 --> 01:04:33,480 si uvědomit, že tam je to pojem stylu 1594 01:04:33,480 --> 01:04:34,130 programování. 1595 01:04:34,130 --> 01:04:37,280 A někteří lidé skutečně raději dát složená závorka 1596 01:04:37,280 --> 01:04:38,720 sem na řádku. 1597 01:04:38,720 --> 01:04:41,520 Někteří lidé raději dělat směšné věci, 1598 01:04:41,520 --> 01:04:43,830 Líbí dát je sem. 1599 01:04:43,830 --> 01:04:45,140 Není špatná odpověď, pokud jde o 1600 01:04:45,140 --> 01:04:46,710 styl, ale to je v pořádku. 1601 01:04:46,710 --> 01:04:47,700 Ale někteří lidé to. 1602 01:04:47,700 --> 01:04:49,160 [Smích] 1603 01:04:49,160 --> 01:04:51,760 DAVID J. Malan: Tak jsem zmínil teď, jednoduše proto, že jako 1604 01:04:51,760 --> 01:04:54,400 můžete přečíst na věci v knihách nebo on-line, budete si 1605 01:04:54,400 --> 01:04:55,990 různé zprávy z různých učitelů a 1606 01:04:55,990 --> 01:04:56,730 různí autoři. 1607 01:04:56,730 --> 01:04:58,640 A jen uvědomit, že, funkčně, jsou 1608 01:04:58,640 --> 01:05:00,740 obecně ekvivalent, ale být konzistentní. 1609 01:05:00,740 --> 01:05:02,850 Takže v tomto případě, budeme standardizovat na kudrnatý 1610 01:05:02,850 --> 01:05:04,650 šle seřazovat tady nalevo. 1611 01:05:04,650 --> 01:05:04,910 >> Dobrá. 1612 01:05:04,910 --> 01:05:07,040 Tak pojďme do toho hned a spustit to, a uvidíme, co se stane 1613 01:05:07,040 --> 01:05:07,780 s tímto programem. 1614 01:05:07,780 --> 01:05:09,970 Udělejte nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Pak spusťte nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Dej mi celé číslo mezi 0 a - takže to není relevantní 1617 01:05:13,900 --> 01:05:16,480 už, ale já jsem prostě jít na libovolně říct 42. 1618 01:05:16,480 --> 01:05:17,850 A já jsem si vybral správnou odpověď. 1619 01:05:17,850 --> 01:05:20,430 No, pojďme si to vlastně v jiném směru. 1620 01:05:20,430 --> 01:05:22,070 Ukazuje se, že je to nějaký jiný syntax jsme 1621 01:05:22,070 --> 01:05:23,480 lze použít v programu. 1622 01:05:23,480 --> 01:05:27,310 Zde je nový kus syntaxe, který je funkčně stejný, 1623 01:05:27,310 --> 01:05:30,680 ale jen představuje další způsob vyjadřování. 1624 01:05:30,680 --> 01:05:32,830 Tak tohle je to, co se nazývá "switch". A 1625 01:05:32,830 --> 01:05:34,820 switch funguje následovně. 1626 01:05:34,820 --> 01:05:37,580 To trvá, v závorce, hodnotu, kterou chcete 1627 01:05:37,580 --> 01:05:38,860 "Switch" na. 1628 01:05:38,860 --> 01:05:41,490 Chcete-li chovat různě v závislosti na jeho hodnotě. 1629 01:05:41,490 --> 01:05:44,360 Takže to znamená, spínač na hodnotu n. 1630 01:05:44,360 --> 01:05:45,480 A co to znamená? 1631 01:05:45,480 --> 01:05:50,530 No, pokud n je 1 nebo 2 nebo 3, jděte do toho a vytisknout "You 1632 01:05:50,530 --> 01:05:52,680 vybral velké množství "a pak se lámou. 1633 01:05:52,680 --> 01:05:55,720 Důvodem pro přerušení je, že způsob C funguje je 1634 01:05:55,720 --> 01:05:59,790 Jakmile najde případ, který odpovídá, začne provádění 1635 01:05:59,790 --> 01:06:01,610 všechny kód pod ním. 1636 01:06:01,610 --> 01:06:04,580 Takže pokud mám jeden řádek kódu, jako já tady na lince 27, je 1637 01:06:04,580 --> 01:06:05,360 se provede. 1638 01:06:05,360 --> 01:06:07,520 Pokud mohu přidat další řádek sem, dostane vykonán. 1639 01:06:07,520 --> 01:06:09,350 Další linka zde, dostane vykonán. 1640 01:06:09,350 --> 01:06:12,460 Program pouze zastaví provádění, co je pod 1641 01:06:12,460 --> 01:06:14,680 použitelné case, kdy jsem se explicitně 1642 01:06:14,680 --> 01:06:17,210 říkají "zlomit." Tak špatně. 1643 01:06:17,210 --> 01:06:19,220 Právě v tomto případě, stejně jako výsledek. 1644 01:06:19,220 --> 01:06:22,130 Případ 4 nebo 5 nebo 6, podobně, se děje 1645 01:06:22,130 --> 01:06:23,160 vytisknout zprávu. 1646 01:06:23,160 --> 01:06:24,410 V tomto případě, střední číslo. 1647 01:06:24,410 --> 01:06:25,200 Přestávka. 1648 01:06:25,200 --> 01:06:28,160 Případ 7, 8, 9, 10, bude to vytisknout "Vybrali jste velký 1649 01:06:28,160 --> 01:06:28,950 číslo. "Break. 1650 01:06:28,950 --> 01:06:31,290 A pak je tu doslova klíčové slovo názvem "default" 1651 01:06:31,290 --> 01:06:34,090 to skutečně jako "jiný" konstrukce. 1652 01:06:34,090 --> 01:06:36,010 Takže nová syntaxe, ale intelektuálně, 1653 01:06:36,010 --> 01:06:37,060 vůbec nic nového. 1654 01:06:37,060 --> 01:06:38,280 Je to stejně jako Scratch. 1655 01:06:38,280 --> 01:06:41,040 If, else if, else, pokud druh bloku. 1656 01:06:41,040 --> 01:06:44,560 >> Tak to je zapnutý verze tohoto programu. 1657 01:06:44,560 --> 01:06:46,280 Povšimněme si ale, že jsme to udělali s čísly zde. 1658 01:06:46,280 --> 01:06:49,040 Dovolte mi, abych otevřít druhou verzi, jen aby ukázal, 1659 01:06:49,040 --> 01:06:50,670 něco trochu konkrétnější. 1660 01:06:50,670 --> 01:06:52,840 Takže tu máme stupňů místo. 1661 01:06:52,840 --> 01:06:55,540 Ukázalo se, že můžete použít přepínače nejen s čísly, ale na 1662 01:06:55,540 --> 01:06:56,340 znaků. 1663 01:06:56,340 --> 01:06:58,930 Ne ve všech datových typů, ale alespoň na charakterech. 1664 01:06:58,930 --> 01:07:02,670 Takže tady, mohli bychom udělat něco, jako kdyby hodnota C, která 1665 01:07:02,670 --> 01:07:06,230 Uživatel napsal v, v souladu 19, pomocí funkce GetChar, 1666 01:07:06,230 --> 01:07:09,410 je kapitál nebo malá písmena, pojďme interpretovat jako třídy, 1667 01:07:09,410 --> 01:07:11,340 a tvrdí, že si vybral vynikající stupeň. 1668 01:07:11,340 --> 01:07:14,690 A dolů podél switch, máme jiné 1669 01:07:14,690 --> 01:07:17,950 pouzdra na "B" s a "C" s, a tak dále. 1670 01:07:17,950 --> 01:07:19,780 Ale pojďme se teď završují jednu věc. 1671 01:07:19,780 --> 01:07:21,130 A opět, druh letí 1672 01:07:21,130 --> 01:07:22,200 některé z těchto příkladů. 1673 01:07:22,200 --> 01:07:26,990 Ale je to opravdu tak, že jsme mohli aplikovat, nyní - 1674 01:07:26,990 --> 01:07:28,880 nebo opravdu, jen přeložit je nyní - 1675 01:07:28,880 --> 01:07:32,220 na C. 1676 01:07:32,220 --> 01:07:33,310 >> Tak nech mě jít dál a dělat to. 1677 01:07:33,310 --> 01:07:34,830 Jdu otevřít nový soubor. 1678 01:07:34,830 --> 01:07:39,430 A já budu dělat include . 1679 01:07:39,430 --> 01:07:42,770 A pak budu dělat, int main (void). 1680 01:07:42,770 --> 01:07:46,390 Dovolte mi, abych tento soubor uložit jako loop.c. 1681 01:07:46,390 --> 01:07:48,280 Jen jako příklad. 1682 01:07:48,280 --> 01:07:49,910 A já jdu dál a proveďte následující. 1683 01:07:49,910 --> 01:07:54,180 Chci psát velmi nudné programu. 1684 01:07:54,180 --> 01:07:56,170 Tak 10. 1685 01:07:56,170 --> 01:07:58,862 Pojďme to. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Dobrá. 1688 01:08:00,360 --> 01:08:02,120 Jakmile začnete dělat to v programování, ty jsi 1689 01:08:02,120 --> 01:08:03,490 pravděpodobně dělá něco špatného. 1690 01:08:03,490 --> 01:08:04,950 Ale začneme tam stejně. 1691 01:08:04,950 --> 01:08:05,430 Chybička se vloudila. 1692 01:08:05,430 --> 01:08:06,950 To je vlastně v pořádku. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Nic se nestane, když se dostaneme do 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Dobře. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Odstranit. 1704 01:08:18,689 --> 01:08:19,029 >> Dobrá. 1705 01:08:19,029 --> 01:08:20,029 Takže návrat 0. 1706 01:08:20,029 --> 01:08:22,010 Takže tento program je zřejmě bude dělat to, co velmi 1707 01:08:22,010 --> 01:08:23,310 zdlouhavě říká, že to bude dělat. 1708 01:08:23,310 --> 01:08:24,060 Bude to pro tisk všech těch 1709 01:08:24,060 --> 01:08:25,290 hodnoty, od shora dolů. 1710 01:08:25,290 --> 01:08:27,140 Dovolte mi tedy udělat, aby smyčku. 1711 01:08:27,140 --> 01:08:28,640 A pak - POZOR. 1712 01:08:28,640 --> 01:08:29,700 Udělejte smyčku. 1713 01:08:29,700 --> 01:08:31,479 Byl jsem ve špatném adresáři. 1714 01:08:31,479 --> 01:08:33,300 A teď mi dovolte běžet smyčku. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Very nice. 1718 01:08:35,270 --> 01:08:36,279 Pěkný, dlouhý program. 1719 01:08:36,279 --> 01:08:38,109 >> Dobře, ale teď se na to lépe. 1720 01:08:38,109 --> 01:08:40,810 Stejně jako v roce Scratch, když jste začal používat opakování 1721 01:08:40,810 --> 01:08:43,149 konstrukce, místo toho jen kopírování a vkládání všechny 1722 01:08:43,149 --> 01:08:45,580 skládačky, dovolte mi představit tuhle věc. 1723 01:08:45,580 --> 01:08:48,609 Takže v C, existují různé smyčkování konstrukty, 1724 01:08:48,609 --> 01:08:50,540 z nichž jedna vypadá následovně. 1725 01:08:50,540 --> 01:08:55,069 "Pro" loop má tři věci, oddělené dvěma středníky. 1726 01:08:55,069 --> 01:08:57,770 A pak, uvnitř těla smyčky, takže mluvit - 1727 01:08:57,770 --> 01:08:59,390 věci uvnitř složených závorek - 1728 01:08:59,390 --> 01:09:01,010 můžeme něco udělat znovu a znovu. 1729 01:09:01,010 --> 01:09:02,310 Takže to, co jsem tady na obrazovce, to je 1730 01:09:02,310 --> 01:09:03,300 doslova komentář. 1731 01:09:03,300 --> 01:09:05,380 / / Zde znamená přichází komentář. 1732 01:09:05,380 --> 01:09:06,180 To není kód. 1733 01:09:06,180 --> 01:09:08,890 To je jen anglický popis, pro mě, člověka. 1734 01:09:08,890 --> 01:09:11,300 >> Takže inicializace, podmínky a aktualizace. 1735 01:09:11,300 --> 01:09:12,770 No, uvidíme, jak to funguje. 1736 01:09:12,770 --> 01:09:15,520 To mi umožňuje přepsat tento program takto. 1737 01:09:15,520 --> 01:09:16,399 Pro - 1738 01:09:16,399 --> 01:09:18,029 takže tady je můj smyčka - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 tady je proměnná s názvem "i" - 1741 01:09:21,330 --> 01:09:23,140 dostane inicializovány na 10. 1742 01:09:23,140 --> 01:09:25,260 Takže tam je moje inicializace. 1743 01:09:25,260 --> 01:09:29,450 Chci to udělat smyčku tak dlouho, jak "i" je větší než nebo 1744 01:09:29,450 --> 01:09:30,899 rovno 0. 1745 01:09:30,899 --> 01:09:32,880 A při každém opakování tohoto cyklu, chci 1746 01:09:32,880 --> 01:09:34,979 dělat i -. 1747 01:09:34,979 --> 01:09:36,310 Takže jsme viděli + + v pondělí. 1748 01:09:36,310 --> 01:09:37,660 - Je opakem. 1749 01:09:37,660 --> 01:09:39,410 Že snižuje hodnotu 1. 1750 01:09:39,410 --> 01:09:43,319 Uvnitř této smyčky, chci skutečně něco udělat. 1751 01:09:43,319 --> 01:09:46,390 Tak jsem chtěl říct něco jako printf. 1752 01:09:46,390 --> 01:09:48,939 Nechci říkat 10 teď, protože to je samozřejmě jen 1753 01:09:48,939 --> 01:09:50,000 bude tisknout stejnou hodnotu. 1754 01:09:50,000 --> 01:09:52,246 Co chci tisknout místo, pravděpodobně? 1755 01:09:52,246 --> 01:09:52,590 Jo. 1756 01:09:52,590 --> 01:09:55,270 Takže "i". Takže% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> Takže budu ukrást jeden z těch nápadů od dříve - 1758 01:09:57,340 --> 01:09:59,640 to náhrada za formát kódů - 1759 01:09:59,640 --> 01:10:01,620 a pak sem, v dolní části, vrátím 0, jen 1760 01:10:01,620 --> 01:10:02,710 pro správnou míru. 1761 01:10:02,710 --> 01:10:04,740 Ale teď, mám víc stručný program. 1762 01:10:04,740 --> 01:10:07,490 Je to jen pár řádků, a ne asi 10 nebo 11 řádků. 1763 01:10:07,490 --> 01:10:09,440 Nechte mě jít na můj dotaz tady. 1764 01:10:09,440 --> 01:10:10,630 Remake smyčky. 1765 01:10:10,630 --> 01:10:12,140 Znovu smyčku. 1766 01:10:12,140 --> 01:10:13,570 A zdá se, že je stejný. 1767 01:10:13,570 --> 01:10:15,550 Nyní je program není zajímavější. 1768 01:10:15,550 --> 01:10:17,180 Ale teď můžu napsat něco takového. 1769 01:10:17,180 --> 01:10:18,970 Mohu změnit to 100. 1770 01:10:18,970 --> 01:10:21,400 Pak mohu překompilovat můj program. 1771 01:10:21,400 --> 01:10:23,360 A pak jsem si znovu spustit můj program. 1772 01:10:23,360 --> 01:10:26,390 A teď to jde super-rychle na dnešních počítačích. 1773 01:10:26,390 --> 01:10:27,820 Ale tam jsem se - 1774 01:10:27,820 --> 01:10:29,620 a skutečně, můj scrollback vyrovnávací není 1775 01:10:29,620 --> 01:10:30,890 dokonce jít tak daleko. 1776 01:10:30,890 --> 01:10:31,680 Tam jdeme. 1777 01:10:31,680 --> 01:10:34,090 Tak tady to máme všude 100. 1778 01:10:34,090 --> 01:10:35,880 Ale je to snadné udělat chybu zde. 1779 01:10:35,880 --> 01:10:37,920 Co se bude očekávané chování, když 1780 01:10:37,920 --> 01:10:41,150 náhodně udělat? 1781 01:10:41,150 --> 01:10:42,550 Tak to cítí jako nekonečné. 1782 01:10:42,550 --> 01:10:44,670 Tak uvidíme, jestli počítač chová. 1783 01:10:44,670 --> 01:10:47,020 >> Tak nech mě jít napřed a udělat smyčku. 1784 01:10:47,020 --> 01:10:48,355 A dovolte mi spustit smyčku. 1785 01:10:53,590 --> 01:10:55,210 Tak pojďme vrátit k tomu za chvíli. 1786 01:10:55,210 --> 01:10:56,720 Necháme to běžet. 1787 01:10:56,720 --> 01:10:59,520 Vzhledem k tomu, co bychom měli počítat až, minimálně? 1788 01:10:59,520 --> 01:11:02,200 Pravděpodobně nejméně 2 miliardy, když máme tolik bitů, a 1789 01:11:02,200 --> 01:11:03,660 jsme s využitím pozitivních hodnot. 1790 01:11:03,660 --> 01:11:04,890 Takže pojďme skočit zpátky. 1791 01:11:04,890 --> 01:11:07,810 Kromě těchto druhů smyček, máme to, co se nazývá, zatímco 1792 01:11:07,810 --> 01:11:09,430 smyčky. Takže, stejně jako v Scratch, jste měli Forever 1793 01:11:09,430 --> 01:11:11,240 bloky, a vy jste měli Opakovat bloky. 1794 01:11:11,240 --> 01:11:13,270 Podobně, v C, stačí mít jiné způsoby, jak 1795 01:11:13,270 --> 01:11:14,260 vyjádřit se. 1796 01:11:14,260 --> 01:11:17,110 Takže budete mít tento pojem cyklu while, který umožňuje 1797 01:11:17,110 --> 01:11:18,860 Vyjádřete se trochu jinak. 1798 01:11:18,860 --> 01:11:21,490 A pak máte něco, co se nazývá do-while, 1799 01:11:21,490 --> 01:11:24,200 který funguje poněkud odlišně stejně. 1800 01:11:24,200 --> 01:11:25,320 A budeme dráždit ty od sebe v průběhu času. 1801 01:11:25,320 --> 01:11:28,630 >> Ale pojďme se podívat na tuto poslední zde. 1802 01:11:28,630 --> 01:11:30,160 Pokud půjdeme do - 1803 01:11:30,160 --> 01:11:31,466 stále běží. 1804 01:11:31,466 --> 01:11:32,770 Je to docela nekonečný. 1805 01:11:32,770 --> 01:11:36,870 Tak mě nech jít do pozitivní, a ukázat, jak můžeme skutečně 1806 01:11:36,870 --> 01:11:39,410 upravují vstup uživatele trochu efektivněji. 1807 01:11:39,410 --> 01:11:40,910 Je to docela krátký program. 1808 01:11:40,910 --> 01:11:43,730 A máme tady, v hlavní, int n prohlášení. 1809 01:11:43,730 --> 01:11:46,570 Tak mi proměnnou s názvem n. Teď, jsem doslova řekl 1810 01:11:46,570 --> 01:11:48,340 "Dělat." A pak mám otevřenou kudrnaté 1811 01:11:48,340 --> 01:11:49,630 rovnátka, úzkým složená závorka. 1812 01:11:49,630 --> 01:11:52,000 A pak zjistíte, hned po to, že se říká, zatímco n 1813 01:11:52,000 --> 01:11:53,790 je menší než 1. 1814 01:11:53,790 --> 01:11:55,300 Takže si všimnout, že tyto řádky - 1815 01:11:55,300 --> 01:11:56,740 19 - 24 - 1816 01:11:56,740 --> 01:11:59,450 skládat kolektivní a do-while. 1817 01:11:59,450 --> 01:12:01,280 A opět, nová syntaxe, není nová myšlenka. 1818 01:12:01,280 --> 01:12:03,740 Je to jen další způsob, jak smyčky, syntakticky. 1819 01:12:03,740 --> 01:12:04,890 Takže co to dělá? 1820 01:12:04,890 --> 01:12:08,000 Do následující zatímco n je menší než 1,. 1821 01:12:08,000 --> 01:12:09,080 Tak co chci dělat? 1822 01:12:09,080 --> 01:12:11,390 Žádám, abyste mi celé kladné číslo. 1823 01:12:11,390 --> 01:12:14,110 Pak jsem se skutečně snaží získat celé číslo od uživatele. 1824 01:12:14,110 --> 01:12:16,740 Ale pokud jde o pořadí operací zde, protože 1825 01:12:16,740 --> 01:12:21,850 zatímco podmínka je tady, já pak jít zkontrolovat, je n 1826 01:12:21,850 --> 01:12:23,100 méně než 1? 1827 01:12:23,100 --> 01:12:24,600 Takže předpokládám, že uživatel - 1828 01:12:24,600 --> 01:12:26,450 po požadované tímto způsobem - 1829 01:12:26,450 --> 01:12:29,190 Typy v hodnotovém 0. 1830 01:12:29,190 --> 01:12:34,510 Tato podmínka bude true nebo false? 1831 01:12:34,510 --> 01:12:35,820 No, je to vlastně bude pravda. 1832 01:12:35,820 --> 01:12:38,700 Vzhledem k tomu, n je 0, a 0 je menší než 1. 1833 01:12:38,700 --> 01:12:40,140 Takže co to znamená? 1834 01:12:40,140 --> 01:12:41,160 Udělej to znovu. 1835 01:12:41,160 --> 01:12:41,990 Udělej to znovu. 1836 01:12:41,990 --> 01:12:42,640 Udělej to znovu. 1837 01:12:42,640 --> 01:12:46,080 Jen jednou, že podmínka vyhodnocena jako false. 1838 01:12:46,080 --> 01:12:47,510 Pokud jsem psát 42. 1839 01:12:47,510 --> 01:12:49,690 No ne, 42 je menší než 1. 1840 01:12:49,690 --> 01:12:52,320 Proto je tento smyčka se provádí spuštěním. 1841 01:12:52,320 --> 01:12:54,650 A tak v tomto bodě, bude program říct, díky za 1842 01:12:54,650 --> 01:12:57,530 za 42, v tomto případě. 1843 01:12:57,530 --> 01:13:00,320 Nyní, když máte tento způsob vyjádření sebe sama - 1844 01:13:00,320 --> 01:13:02,360 Neměli bychom čekat na to až do konce. 1845 01:13:02,360 --> 01:13:03,620 Bude to nějakou dobu trvat. 1846 01:13:03,620 --> 01:13:04,990 Chcete-li se pokračovat příště, snad. 1847 01:13:04,990 --> 01:13:08,050 >> Ale teď, máte možnost na snad rozumět 1848 01:13:08,050 --> 01:13:09,060 trochu pouťového kejklíře humor. 1849 01:13:09,060 --> 01:13:11,560 Omlouvám se. 1850 01:13:11,560 --> 01:13:13,620 To není reprezentativní humoru v informatice 1851 01:13:13,620 --> 01:13:14,870 svět, ale je to roztomilý. 1852 01:13:21,020 --> 01:13:23,890 [Směje se] Pojďme konec tohoto záznamu. 1853 01:13:23,890 --> 01:13:25,750 A uvidíme se v pondělí. 1854 01:13:25,750 --> 01:13:31,629 [APPLAUSE]