1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] DAVID J. Malan: Dobre, to je CS50, a to je 2 00:00:09,920 --> 00:00:15,250 koniec 1. týždňa, takže študijné karty sú v a celkový počet 3 00:00:15,250 --> 00:00:18,640 spolužiaci, že máte tento rok je 745. 4 00:00:18,640 --> 00:00:20,920 A my sme tak nadšení, že tak veľa z vás v priebehu 5 00:00:20,920 --> 00:00:23,680 tento semester, ale aj napriek tomu je tento kurz je tak veľký, 6 00:00:23,680 --> 00:00:26,090 uvedomiť, že to tieto veci ako obed piatok ako 7 00:00:26,090 --> 00:00:29,020 úradné hodiny, 15-person profily, a tak ďalej, aby 8 00:00:29,020 --> 00:00:30,590 sú naozaj chcel vytvoriť tento viac intímne 9 00:00:30,590 --> 00:00:31,140 prostredie. 10 00:00:31,140 --> 00:00:34,070 Takže aj keď môžeme zhromažďovať raz alebo dvakrát týždenne, tu v 11 00:00:34,070 --> 00:00:36,420 Sanders, viem, že veľa z vašich skúseností v tomto kurze 12 00:00:36,420 --> 00:00:39,330 bude veľmi sa hands-on na boku vašich spolužiakov 13 00:00:39,330 --> 00:00:40,730 a pedagogickí pracovníci. 14 00:00:40,730 --> 00:00:43,960 >> Tak ideme na to, Fall 2012. 15 00:00:43,960 --> 00:00:47,530 Takže pripomenúť, že naposledy sme skončil na oznámenie zo dňa 16 00:00:47,530 --> 00:00:50,460 nepresnosť, hovorí o reprezentáciu čísel. 17 00:00:50,460 --> 00:00:52,950 A my sme sa na jednom z porúch, ktoré sa stali v 18 00:00:52,950 --> 00:00:54,920 reálny svet, keď to prišlo k nedorozumeniu 19 00:00:54,920 --> 00:00:55,890 ako počítače fungujú. 20 00:00:55,890 --> 00:00:58,590 No, dnes budeme opäť ďalší z tých nápadov, ako 21 00:00:58,590 --> 00:01:01,410 a pokračovať v našej diskusii o CS50 klienta 22 00:01:01,410 --> 00:01:04,090 a C a čo to znamená naozaj programu. 23 00:01:04,090 --> 00:01:06,430 Ale najprv, len pár oznámenia víchrici. 24 00:01:06,430 --> 00:01:08,930 >> Sekcia začnú túto nedeľu, a prvý týždeň je vždy 25 00:01:08,930 --> 00:01:11,030 trochu rýchlym rozbehom, pretože sme práve dostali do 26 00:01:11,030 --> 00:01:12,620 svojho oddielu formulára. 27 00:01:12,620 --> 00:01:14,450 Robíme to isté, teraz s výučbových kolegami, teraz 28 00:01:14,450 --> 00:01:16,410 že poznajú svoje plány, takže sme s cieľom, by 29 00:01:16,410 --> 00:01:19,380 V sobotu ráno, aby sa vám, s vaším sekcii 30 00:01:19,380 --> 00:01:20,760 priradenie a TF. 31 00:01:20,760 --> 00:01:22,770 Uvedomte si, že začnú budúci deň, v nedeľu 32 00:01:22,770 --> 00:01:24,510 alebo v pondelok alebo v utorok. 33 00:01:24,510 --> 00:01:27,730 A potom sme sa ubytovať v časti zmeny, ktoré nastanú 34 00:01:27,730 --> 00:01:28,690 v nadchádzajúcich dňoch. 35 00:01:28,690 --> 00:01:31,590 Úradné hodiny, zatiaľ sú, opäť, dnes, dvadsať hodín na 11, v 36 00:01:31,590 --> 00:01:33,740 Annenberg, rovnako ako zajtra večer. 37 00:01:33,740 --> 00:01:36,150 Aj keď problém sady sú všeobecne kvôli štvrtok 38 00:01:36,150 --> 00:01:39,020 na poludnie, že ste si až päť neskoré dní stráviť, 39 00:01:39,020 --> 00:01:42,430 teda dostupnosť úradných hodín vo štvrtok, ak 40 00:01:42,430 --> 00:01:45,930 vy hotovosti v jednej z týchto neskorých dní, a tým, predloží 41 00:01:45,930 --> 00:01:47,070 niečo na piatok. 42 00:01:47,070 --> 00:01:50,850 Dovoľte mi navrhnúť, že Scratch je medzi viac zábavy, medzi 43 00:01:50,850 --> 00:01:52,390 Viac najnižšej Kľúčovým problémom sady. 44 00:01:52,390 --> 00:01:55,160 A ja by som visieť na týchto neskorých dní, strategicky, len 45 00:01:55,160 --> 00:01:57,380 pre neskôr v semestri, kedy život začína v ceste 46 00:01:57,380 --> 00:01:59,470 s midterms a iných tried. 47 00:01:59,470 --> 00:02:01,580 Problém Set 1, medzitým, bude zanechané kurz je 48 00:02:01,580 --> 00:02:06,080 Webové stránky tento piatok, ako bude na ihrisku chôdze 49 00:02:06,080 --> 00:02:08,789 cez video, ktoré bude natočený v 14:30 v piatok 50 00:02:08,789 --> 00:02:11,890 a potom odoslané on-line do druhého dňa. 51 00:02:11,890 --> 00:02:13,880 >> Takže sme skončili v pondelok. 52 00:02:13,880 --> 00:02:15,450 Chcem - vlastne, poznamenať, tu. 53 00:02:15,450 --> 00:02:18,870 Pretože triedy - pretože Sanders nie je presne zapožičanie 54 00:02:18,870 --> 00:02:22,220 sám k príležitostnému Q & A sem a tam moc dobre, že sme 55 00:02:22,220 --> 00:02:24,030 Pokúsim sa niečo málo nových tomto roku, kedy 56 00:02:24,030 --> 00:02:26,160 Ak nie ste spokojní zvýšiť svoju ruku, alebo si len 57 00:02:26,160 --> 00:02:28,800 by radšej zdvihnúť ruku v miestnosti, ako je táto, 58 00:02:28,800 --> 00:02:30,710 budeme mať niektoré z výučbových kolegami a CAS 59 00:02:30,710 --> 00:02:33,260 obsadenie cs50.net/discuss počas prednášky. 60 00:02:33,260 --> 00:02:35,440 Takže ak máte nejakú otázku, pretože som bol úplne 61 00:02:35,440 --> 00:02:37,510 jasné, o niečom, alebo ste zvedaví, niektoré 62 00:02:37,510 --> 00:02:39,640 tému, skúste vysielania to tam. 63 00:02:39,640 --> 00:02:42,670 Označiť ju štítku Prednáška, a my sa budeme snažiť 64 00:02:42,670 --> 00:02:45,430 dnes a budúci týždeň - Dáme skúste toto - postaviť ju 65 00:02:45,430 --> 00:02:47,990 buď v elektronickej, on-line, alebo ak je to ako by sme mali 66 00:02:47,990 --> 00:02:50,430 Naozaj sa jej zaoberali en masse, jeden z výučbových chlapíkov, alebo 67 00:02:50,430 --> 00:02:52,080 CA zvýši ich ruku a spýtať sa 68 00:02:52,080 --> 00:02:53,480 anonymne vaším menom. 69 00:02:53,480 --> 00:02:55,650 Takže dáme to skúste a uvidíte, ako dobre to funguje. 70 00:02:55,650 --> 00:02:58,540 Ale v každom prípade, aj naďalej zvyšovať ruky, ako by ste chceli. 71 00:02:58,540 --> 00:03:11,420 >> Takže naposledy sme zistili, že 10% alebo jednu desatinu nie je v 72 00:03:11,420 --> 00:03:13,840 Skutočnosť, 0.1, ako by ste sa učili pred mnohými rokmi. 73 00:03:13,840 --> 00:03:15,390 Je to v skutočnosti, hodnota takto. 74 00:03:15,390 --> 00:03:16,970 Ale to nie je celkom pravda, nie? 75 00:03:16,970 --> 00:03:19,585 Musíme len toto obmedzenie v počítačoch, kedy, ak 76 00:03:19,585 --> 00:03:22,450 majú len obmedzené množstvo pamäte, RAM, alebo viac 77 00:03:22,450 --> 00:03:25,220 konkrétne bity, no, je tu len konečný počet 78 00:03:25,220 --> 00:03:26,980 vecí, ktoré môžu predstavovať. 79 00:03:26,980 --> 00:03:29,780 Napríklad, ak budeme mať číslo nula, a chceme, aby 80 00:03:29,780 --> 00:03:32,790 predstavujú v binárnej, pomocou ôsmich bitov, kde bit, 81 00:03:32,790 --> 00:03:34,710 znovu, je nula alebo jedna, môžeme 82 00:03:34,710 --> 00:03:39,240 predstavujú ako 00000000. 83 00:03:39,240 --> 00:03:41,160 A to je trochu zbytočne ukecaný. 84 00:03:41,160 --> 00:03:43,700 Rovnako ako v desiatkovej sústave v reálnom svete, 85 00:03:43,700 --> 00:03:47,040 všeobecne, ak chcete napísať číslo 123, sa 86 00:03:47,040 --> 00:03:52,240 ľudia pravdepodobne nebudú písať 00000123, aj keď, 87 00:03:52,240 --> 00:03:53,940 funkčne, že je to presne rovnaký počet. 88 00:03:53,940 --> 00:03:56,580 Sme len kvapka úvodnej nuly, aby som tak povedal. 89 00:03:56,580 --> 00:03:58,270 >> V binárne, môžeme to isté. 90 00:03:58,270 --> 00:04:01,440 Binárne a nula, nula a binárne je len nula. 91 00:04:01,440 --> 00:04:02,870 Potrebujete len jeden bit. 92 00:04:02,870 --> 00:04:05,020 Ale znova, najčastejšie merná jednotka na svete 93 00:04:05,020 --> 00:04:07,820 výpočtovej sú bajty, osem bitov. 94 00:04:07,820 --> 00:04:09,720 Len preto, že jeden bit, celkom k ničomu. 95 00:04:09,720 --> 00:04:12,020 Osem bitov, nie je príliš užitočná, ale aspoň je to viac 96 00:04:12,020 --> 00:04:14,280 užitočnejšie ako jednu mernú jednotku. 97 00:04:14,280 --> 00:04:17,100 Takže pomocou ôsmich bitov, budeme zvyčajne predstavujú binárne. 98 00:04:17,100 --> 00:04:20,459 Takže tu máme čísla nula, jedna, dva, a potom, ako 99 00:04:20,459 --> 00:04:24,200 Nate robil v našom videu minulú stredu, môžeme pokračovať 100 00:04:24,200 --> 00:04:25,940 počítanie až sedem, osem. 101 00:04:25,940 --> 00:04:27,860 A potom ak budeme používať viac a viac bitov, sme 102 00:04:27,860 --> 00:04:29,880 môže počítať do nekonečna. 103 00:04:29,880 --> 00:04:32,800 Ale ak máte len konečný počet týchto bitov, ako je 104 00:04:32,800 --> 00:04:35,030 prípad akéhokoľvek počítačového systému, alebo dokonca strela 105 00:04:35,030 --> 00:04:36,670 systém, dobre, naozaj máte len 106 00:04:36,670 --> 00:04:37,900 konečné množstvo presnosti. 107 00:04:37,900 --> 00:04:41,290 Takže ak chcete, aby zastupoval číslo ako 0,1, dobre, 108 00:04:41,290 --> 00:04:43,410 Počítač musí vyberať. 109 00:04:43,410 --> 00:04:45,970 A ak to má len konečný počet čísel pre to, 110 00:04:45,970 --> 00:04:50,490 predstavujú, môže priblížiť 0,1 pre tých, ale to nemôže 111 00:04:50,490 --> 00:04:53,730 nutne vám presne hodnotu, ktorú chcete. 112 00:04:53,730 --> 00:04:55,660 A to je len jeden z problémov počítačov, 113 00:04:55,660 --> 00:04:57,090 pod kapotou, našťastie. 114 00:04:57,090 --> 00:04:59,110 >> Ako sme sa presťahovať ďalej v semestri, tieto nižšie úrovne 115 00:04:59,110 --> 00:05:02,310 Podrobnosti oveľa menej zaujímavé, ale rozhodne 116 00:05:02,310 --> 00:05:05,700 aplikácie týchto myšlienok môže mať niektoré veľmi reálny svet 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 zábavy. 119 00:05:08,190 --> 00:05:12,150 Ako mnohí z vás videli úžasný film Office Space? 120 00:05:12,150 --> 00:05:13,620 Ak nemáte, je to váš neoficiálne 121 00:05:13,620 --> 00:05:14,370 domáci za týždeň. 122 00:05:14,370 --> 00:05:16,730 Ale v kancelárskych priestorov, sa chlapi v tomto filme sa 123 00:05:16,730 --> 00:05:19,900 Výhodou práve tohto nápadu, ale oni vlastne ukradli 124 00:05:19,900 --> 00:05:21,270 to z iného filmu, ktorý by sa Vám mohol mať 125 00:05:21,270 --> 00:05:22,760 Videl, dokonca aj roky predchádzajúce. 126 00:05:22,760 --> 00:05:24,920 Takže mi dovoľte, aby som vám niekoľko sekúnd tohto prívesu od 127 00:05:24,920 --> 00:05:27,470 tento úžasný film a to je veľmi 128 00:05:27,470 --> 00:05:28,340 akademicky relevantné. 129 00:05:28,340 --> 00:05:30,310 >> [Hrá filmov] 130 00:05:30,310 --> 00:05:32,240 Vlastne som bol povýšený. 131 00:05:32,240 --> 00:05:33,360 Môžem naprogramovať vírus, ktorý bude trhať, že 132 00:05:33,360 --> 00:05:34,460 miesto off veľký čas. 133 00:05:34,460 --> 00:05:35,770 No, ako to funguje? 134 00:05:35,770 --> 00:05:37,836 Zakaždým, keď je bankové transakcie, kde úroky sú 135 00:05:37,836 --> 00:05:40,154 vypočítaný, existujú tisíce deň, počítač skončí 136 00:05:40,154 --> 00:05:41,040 s týmito zlomky percenta. 137 00:05:41,040 --> 00:05:43,050 Ale ja nebudem robiť nič nezákonného. 138 00:05:43,050 --> 00:05:46,730 Nelegálne? Samir, toto je Amerika. 139 00:05:46,730 --> 00:05:48,010 Musíte prisahám Bohu. 140 00:05:48,010 --> 00:05:51,870 Pokiaľ nikto nevie o tom, ale nás, v poriadku? Žiadni rodinní príslušníci, žiadne 141 00:05:51,870 --> 00:05:52,490 priateľka, nikto. 142 00:05:52,490 --> 00:05:53,882 [Nepočuteľné]. 143 00:05:53,882 --> 00:05:57,594 Nebojte sa, človeče, ja to nikomu nepoviem ani. 144 00:05:57,594 --> 00:05:59,680 [Film končí] 145 00:05:59,680 --> 00:06:01,900 >> Dobre, takže možno som našiel tento film lepší ako väčšina 146 00:06:01,900 --> 00:06:05,530 ľudia tu, ale v žiadnom prípade, vírus, že boli 147 00:06:05,530 --> 00:06:06,400 snaží vytvoriť - 148 00:06:06,400 --> 00:06:08,410 a vo filmoch, kedykoľvek sa to nazval niečo vírus, 149 00:06:08,410 --> 00:06:09,770 to vo všeobecnosti nie je vlastne vírus. 150 00:06:09,770 --> 00:06:11,600 Je to len program, ktorý niekto napísal niečo urobiť. 151 00:06:11,600 --> 00:06:13,800 A v tomto prípade, že chlapci sa snažili napísať program 152 00:06:13,800 --> 00:06:16,610 ktoré využili ich spoločnosť s názvom INNOTECH tieto 153 00:06:16,610 --> 00:06:19,740 výpočtový systém, v rámci ktorého počítača, taky, aj keď to 154 00:06:19,740 --> 00:06:21,350 príde na peniaze, nemôže byť nutne 155 00:06:21,350 --> 00:06:23,490 predstavujú peniaze presne. 156 00:06:23,490 --> 00:06:27,630 Takže aj keď budete musieť 0,10 dolárov na váš bankový účet, 157 00:06:27,630 --> 00:06:31,060 0,10, dobre, že počítač skutočne myslíte, že máte 158 00:06:31,060 --> 00:06:33,560 tento mnoho centov vo vašom bankovom účte. 159 00:06:33,560 --> 00:06:35,750 A tak to, čo títo chlapci boli ašpirujúci na to - a oni 160 00:06:35,750 --> 00:06:38,240 ukradol nápad, to dopadá z nadčloveka III, kde 161 00:06:38,240 --> 00:06:41,210 Richard Pryor urobil rovnakú vec - oni boli nevyhnutne 162 00:06:41,210 --> 00:06:44,880 písanie programov, ktoré ašpirujú, aby všetky koncové 163 00:06:44,880 --> 00:06:46,930 čísla, všetky z malých, drobných, malých frakcií 164 00:06:46,930 --> 00:06:50,160 Pennies, a nasáva tie z tak, aby sa ľudia len 165 00:06:50,160 --> 00:06:52,620 myšlienka, oh, je to len 0,10 dolárov tam, ale všetci tí, 166 00:06:52,620 --> 00:06:54,410 koncové čísla nakoniec sčítajú. 167 00:06:54,410 --> 00:06:57,490 Tak skvelý nápad a to zlyhalo veselo v tom, že 168 00:06:57,490 --> 00:06:58,250 najmä film. 169 00:06:58,250 --> 00:07:01,800 >> Ale v reálnom svete, aj tam sú oveľa viac o 170 00:07:01,800 --> 00:07:03,190 Dôsledky týchto druhov vecí. 171 00:07:03,190 --> 00:07:05,450 A jedným z dôvodov, prečo sa do toho ponoriť do oblasti počítačovej 172 00:07:05,450 --> 00:07:07,620 vedy je opäť jeho použiteľnosť nie 173 00:07:07,620 --> 00:07:09,740 inžinierske vedy samotnej, ale len preto, aby 174 00:07:09,740 --> 00:07:10,650 iných oblastiach. 175 00:07:10,650 --> 00:07:14,760 Tak to je menej veselý pohľad na to, čo sa môže pokaziť, ale 176 00:07:14,760 --> 00:07:17,630 je to tiež celkom otvorenie očí, myslím, pokiaľ ide o 177 00:07:17,630 --> 00:07:20,760 pochopenie presne tak, ako všadeprítomné technológie ako 178 00:07:20,760 --> 00:07:22,870 počítače a programovanie, alebo v týchto dňoch, 179 00:07:22,870 --> 00:07:23,930 vo forme softvéru. 180 00:07:23,930 --> 00:07:26,500 Takže to ďalší klip je len asi šesť minút, pokračuje 181 00:07:26,500 --> 00:07:30,320 kde sme skončili minule, ale umožňuje nám nahliadnuť trochu 182 00:07:30,320 --> 00:07:33,370 viac do hĺbky na jeden taký z týchto otázok. 183 00:07:33,370 --> 00:07:35,270 Dovoľte mi, aby som preskočte na miesto, kde sme skončili, 184 00:07:35,270 --> 00:07:37,780 ktorý bol tu. 185 00:07:37,780 --> 00:07:41,580 A máme druhú časť dva, približne šesť minút tu. 186 00:07:41,580 --> 00:07:41,980 >> [PLAY MOVIE] 187 00:07:41,980 --> 00:07:45,430 Súdení modernej raketovej techniky. 188 00:07:45,430 --> 00:07:49,280 V roku 1991, sa na začiatku prvej Gulf vojne, Patriot 189 00:07:49,280 --> 00:07:51,350 Strela zažil podobný typ 190 00:07:51,350 --> 00:07:52,645 číslo konverzie problém. 191 00:07:52,645 --> 00:07:57,460 A ako výsledok, bolo zabitých 20 ľudí, 20 amerických vojakov, 192 00:07:57,460 --> 00:08:01,130 a asi 100 ďalších zranených, keď Patriot, ktorý mal 193 00:08:01,130 --> 00:08:03,400 na ochranu proti prichádzajúce pláva, 194 00:08:03,400 --> 00:08:06,020 nepodarilo vystreliť raketu. 195 00:08:06,020 --> 00:08:09,350 >> Keď Irak napadol Kuvajt a Spojené štáty rozpútali Desert 196 00:08:09,350 --> 00:08:13,530 Storm začiatkom roka 1991, Patriot raketové batérie boli 197 00:08:13,530 --> 00:08:16,970 nasadené na ochranu Saudskú Arábiu a Izrael z irackej 198 00:08:16,970 --> 00:08:19,810 Plávať raketové útoky. 199 00:08:19,810 --> 00:08:23,740 Patriot je americký strednej vzdialenosti povrch-k-vzduchový systém, 200 00:08:23,740 --> 00:08:26,370 vyrábané spoločnosťou Raytheon. 201 00:08:26,370 --> 00:08:30,860 Veľkosť Patriot Interceptor samotnej, ale o 202 00:08:30,860 --> 00:08:35,650 približne 20 metrov dlhá a váži asi 2000 libier. 203 00:08:35,650 --> 00:08:38,809 A to so sebou nesie bojovou hlavicu asi - myslím, že to je zhruba 204 00:08:38,809 --> 00:08:40,169 150 libier. 205 00:08:40,169 --> 00:08:45,820 A hlavice sám o sebe je vysoko výbušné, ktorý má 206 00:08:45,820 --> 00:08:48,120 fragmenty okolo nej. 207 00:08:48,120 --> 00:08:51,870 Kryt hlavica je navrhnutý tak, aby fungovať ako hrubé broky. 208 00:08:51,870 --> 00:08:54,920 Rakety sú vykonávané štyri na obale a sú 209 00:08:54,920 --> 00:08:57,850 prepravovaná návesu. 210 00:08:57,850 --> 00:09:02,940 >> Patriot protiraketový systém siaha prinajmenšom do 211 00:09:02,940 --> 00:09:05,530 20 rokov. 212 00:09:05,530 --> 00:09:09,150 To bolo pôvodne navrhnuté ako raketa protivzdušnej obrany na 213 00:09:09,150 --> 00:09:12,920 zostreliť nepriateľské lietadlá, v prvej vojne v Perzskom zálive. 214 00:09:12,920 --> 00:09:17,700 Keď tá vojna prišiel, armáda chcela použiť na fotografovanie 215 00:09:17,700 --> 00:09:19,880 stanovuje pláva, nie lietadiel. 216 00:09:19,880 --> 00:09:24,860 Air Force Iracký nebol tak veľký problém, ale armáda 217 00:09:24,860 --> 00:09:27,260 strach o pláva. 218 00:09:27,260 --> 00:09:30,810 A tak sa pokúsili upgrade Patriot. 219 00:09:30,810 --> 00:09:33,770 Záchytný nepriateľ strela jede MACH 5 sa deje 220 00:09:33,770 --> 00:09:35,790 byť dosť náročné. 221 00:09:35,790 --> 00:09:39,460 Ale keď bol Patriot ponáhľal do prevádzky, armáda 222 00:09:39,460 --> 00:09:43,730 si nebol vedomý irackého úpravy, ktoré urobili ich 223 00:09:43,730 --> 00:09:46,510 Pláva takmer nemožné zasiahnuť. 224 00:09:46,510 --> 00:09:50,040 >> Čo sa stalo je Pláva, ktoré boli 225 00:09:50,040 --> 00:09:51,360 prichádza v boli nestabilné. 226 00:09:51,360 --> 00:09:52,266 Boli kývanie. 227 00:09:52,266 --> 00:09:56,300 Dôvodom pre to bolo, že Iračania, aby si 600 228 00:09:56,300 --> 00:10:00,650 kilometrov mimo a 300 km doletu, sa 229 00:10:00,650 --> 00:10:02,423 hmotnosť z prednej hlavice a 230 00:10:02,423 --> 00:10:03,990 z hlavice ľahší. 231 00:10:03,990 --> 00:10:08,700 Takže teraz Patriot sa snaží prísť na Scud, a väčšina 232 00:10:08,700 --> 00:10:11,192 čas, drvivá väčšina času, by sa 233 00:10:11,192 --> 00:10:13,450 Len pozrite sa v Scud. 234 00:10:13,450 --> 00:10:16,300 Akonáhle prevádzkovatelia systém Patriot, si uvedomil, Patriot 235 00:10:16,300 --> 00:10:20,160 minul svoj cieľ, že odpálil Patriot hlavicu. 236 00:10:20,160 --> 00:10:22,760 Aby sa predišlo možným obetiam, bolo dovolené 237 00:10:22,760 --> 00:10:25,100 k pádu na zem. 238 00:10:25,100 --> 00:10:29,400 To bolo to, čo väčšina ľudí videla, aké veľké ohnivé gule na oblohe, 239 00:10:29,400 --> 00:10:34,930 a nepochopenie, ako zachytí jadrových hlavíc Scud. 240 00:10:34,930 --> 00:10:37,490 >> Aj keď, na nočnej oblohe, Patriots sa zdá byť 241 00:10:37,490 --> 00:10:41,570 Úspešne zničené Pláva na Dhahran, mohlo by byť 242 00:10:41,570 --> 00:10:43,730 chyba týkajúce sa jeho výkonu. 243 00:10:43,730 --> 00:10:46,370 Tam, vlastenca radarový systém stratil stopu 244 00:10:46,370 --> 00:10:50,090 prichádzajúce Scud a nikdy zahájená z dôvodu 245 00:10:50,090 --> 00:10:51,340 k softvéru chyby. 246 00:10:54,030 --> 00:10:57,050 To bolo Izraelčania prvýkrát objavený, že čím dlhšia 247 00:10:57,050 --> 00:11:02,000 bol tento systém zapnutý, tým väčší je časový nesúlad sa 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ýždne pred tragédiou v Dhahran, že 250 00:11:09,060 --> 00:11:11,730 Izraelčania hlásené na ministerstve obrany, že 251 00:11:11,730 --> 00:11:13,250 Systém bol strácame čas. 252 00:11:13,250 --> 00:11:15,610 Po ôsmich hodinách prevádzky, všimli si, že 253 00:11:15,610 --> 00:11:18,330 Systém bol stále výrazne menej presné. 254 00:11:18,330 --> 00:11:20,910 Ministerstvo obrany odpovedal tým, že povie všetko 255 00:11:20,910 --> 00:11:23,710 The Patriot batérie nenechať systémy 256 00:11:23,710 --> 00:11:25,450 po dlhú dobu. 257 00:11:25,450 --> 00:11:28,010 Nikdy nepovedal to, čo dlho bol - 8 hodín, 10 258 00:11:28,010 --> 00:11:29,690 hodín, 1000 hodín. 259 00:11:29,690 --> 00:11:31,940 Nikto nevedel. 260 00:11:31,940 --> 00:11:35,020 >> Patriot batérie umiestnená v kasárňach v Dhahran 261 00:11:35,020 --> 00:11:39,030 a jeho nedostatky vnútorné hodiny bol na viac než 100 hodín na 262 00:11:39,030 --> 00:11:42,240 noc februára 25th. 263 00:11:42,240 --> 00:11:46,580 Je sledovaný čas s presnosťou na asi desatinu sekundy. 264 00:11:46,580 --> 00:11:48,830 Teraz desatina druhá je zaujímavé číslo, pretože 265 00:11:48,830 --> 00:11:52,660 nemôže byť vyjadrený v binárnej, presne, čo znamená, že 266 00:11:52,660 --> 00:11:54,940 nemôže byť vyjadrený presne v akejkoľvek 267 00:11:54,940 --> 00:11:57,330 Moderný digitálny počítač. 268 00:11:57,330 --> 00:11:59,130 Je ťažké uveriť. 269 00:11:59,130 --> 00:12:01,720 Ale používať to ako príklad. 270 00:12:01,720 --> 00:12:04,090 >> Poďme sa počet tretiny. 271 00:12:04,090 --> 00:12:07,950 Jedna tretina nemôže byť vyjadrený v desatinné, presne. 272 00:12:07,950 --> 00:12:12,710 Jedna tretina je 0,333 deje na nekonečno. 273 00:12:12,710 --> 00:12:17,050 Neexistuje žiadny spôsob, ako to urobiť, aby s absolútnou presnosťou v desiatkovej sústave. 274 00:12:17,050 --> 00:12:19,340 To je presne rovnaký druh problému, čo sa stalo v 275 00:12:19,340 --> 00:12:20,190 Patriot. 276 00:12:20,190 --> 00:12:24,680 Čím dlhšie systém bežal, horšie chybe v čase stal. 277 00:12:24,680 --> 00:12:28,640 Po 100 hodinách prevádzky, chyba v tej dobe bol iba 278 00:12:28,640 --> 00:12:29,870 asi jedna tretina sekundy. 279 00:12:29,870 --> 00:12:34,790 Ale pokiaľ ide o cielenie raketu cestovanie na MACH 5, 280 00:12:34,790 --> 00:12:39,140 to malo za následok sledovanie chýb viac než 600 metrov. 281 00:12:39,140 --> 00:12:42,510 Bolo by fatálna chyba pre vojakov na zahrani. 282 00:12:42,510 --> 00:12:48,680 >> Čo sa stalo, je spustenie Scud bol detekovaný včasného varovania 283 00:12:48,680 --> 00:12:52,440 satelity a oni vedeli, že Scud prichádza v ich 284 00:12:52,440 --> 00:12:53,350 Celkový smer. 285 00:12:53,350 --> 00:12:55,470 Oni nevedeli, kde to prichádza. 286 00:12:55,470 --> 00:12:58,210 Bolo teraz na radare zložky Patriot 287 00:12:58,210 --> 00:13:01,920 systém, bráni Dhahran, lokalizovať a sledovať 288 00:13:01,920 --> 00:13:03,700 prichádzajúce nepriateľské rakety. 289 00:13:03,700 --> 00:13:05,390 Radar bol veľmi šikovný. 290 00:13:05,390 --> 00:13:07,570 Tie by vlastne sledovať pozíciu Scud a potom 291 00:13:07,570 --> 00:13:10,340 predpovedať, kde to asi bude nabudúce 292 00:13:10,340 --> 00:13:12,040 radar poslal pulz von. 293 00:13:12,040 --> 00:13:13,730 , Ktorá bola nazývaná rozsah brána. 294 00:13:13,730 --> 00:13:18,820 Potom, čo Patriot rozhodne dosť času uplynulo ísť 295 00:13:18,820 --> 00:13:22,600 dozadu a skontrolujte nasledujúce umiestnenia tohto zisteného 296 00:13:22,600 --> 00:13:24,190 objekt, sa vráti späť. 297 00:13:24,190 --> 00:13:27,940 Takže keď sa vrátil na zlé miesto, potom nevidí 298 00:13:27,940 --> 00:13:31,000 námietky, a to rozhodne, že tam bol žiadny objekt. 299 00:13:31,000 --> 00:13:34,370 Bol to falošný detekcie a kvapky na trať. 300 00:13:34,370 --> 00:13:37,630 >> Prichádzajúce Scud zmizol z obrazovky radaru. 301 00:13:37,630 --> 00:13:41,300 A sekúnd neskôr, narazila do kasární. Scud 302 00:13:41,300 --> 00:13:44,730 zabil 28 a bol posledný výpoveď počas 303 00:13:44,730 --> 00:13:46,450 prvý vojna v Perzskom zálive. 304 00:13:46,450 --> 00:13:50,570 Tragicky, aktualizovaný softvér dorazil Dhahran 305 00:13:50,570 --> 00:13:52,060 nasledujúci deň. 306 00:13:52,060 --> 00:13:56,210 A softvér chyba bola stanovená, uzavretie jednej kapitoly v 307 00:13:56,210 --> 00:13:58,370 ustarostený histórie Patriot rakety. 308 00:14:01,790 --> 00:14:04,990 PATRIOT je vlastne skratka pre "fázové sledovanie 309 00:14:04,990 --> 00:14:08,516 Úsek TARGET. " 310 00:14:08,516 --> 00:14:13,390 >> Dobre, tak oveľa viac smutný výsledok nie je úplne 311 00:14:13,390 --> 00:14:14,430 pochopenie tohto sveta. 312 00:14:14,430 --> 00:14:18,180 A Takeaway, skutočne, z filmu je, že riešenie 313 00:14:18,180 --> 00:14:20,790 tam bol reštart systému protiraketovej obrany 314 00:14:20,790 --> 00:14:21,770 každý raz za čas. 315 00:14:21,770 --> 00:14:24,280 A tak znovu, je jedným z cieľov tohto kurzu, rozhodne 316 00:14:24,280 --> 00:14:26,900 na viac skromného meradle ako tieto aplikácie, je 317 00:14:26,900 --> 00:14:30,710 Naozaj prejdi na každého z nás oči do presne tak, ako ste ísť o 318 00:14:30,710 --> 00:14:34,380 Stroje na výrobu robiť to, čo od nich chcete robiť a ako idete 319 00:14:34,380 --> 00:14:37,180 o tom, že správne, zatiaľ čo na ceste robí 320 00:14:37,180 --> 00:14:38,810 dobre, elegantne, a tak ďalej. 321 00:14:38,810 --> 00:14:41,680 A tak dnes, poďme sa ponoriť do trochu viac, ale 322 00:14:41,680 --> 00:14:44,210 tak, že sa nie príliš rýchlo, a to najmä pre tých menej 323 00:14:44,210 --> 00:14:46,590 pohodlné, ale aj tak, že sa môže zachovať záujem 324 00:14:46,590 --> 00:14:49,390 tie pohodlnejšie, poďme rýchlo začať s trochou 325 00:14:49,390 --> 00:14:50,970 z rekapituláciou niektoré z týchto myšlienok. 326 00:14:50,970 --> 00:14:53,710 A opäť, pýtaj, ako osobne, alebo on-line, ak máte 327 00:14:53,710 --> 00:14:56,320 otázky tak môžeme udržať všetky na rovnakej stránke. 328 00:14:56,320 --> 00:14:58,820 >> Takže CS50 spotrebiče, rýchle krok späť, je 329 00:14:58,820 --> 00:15:02,360 čo, svojimi vlastnými slovami? 330 00:15:02,360 --> 00:15:06,454 To je v poriadku, ak máte tušenie, čo tieto slová môžu byť ešte. 331 00:15:06,454 --> 00:15:07,830 [Nepočuteľné] 332 00:15:07,830 --> 00:15:10,950 Dobre, tak univerzálne rozhranie pre - 333 00:15:10,950 --> 00:15:11,900 že môžeme všetci zdieľať. 334 00:15:11,900 --> 00:15:12,470 Absolútne. 335 00:15:12,470 --> 00:15:14,840 Takže sme mohli, napríklad, ti ísť na niektoré 336 00:15:14,840 --> 00:15:16,910 webové stránky, stiahnuť tento softvér pre Mac OS. 337 00:15:16,910 --> 00:15:19,140 Stiahnite si tento softvér pre Windows, konfigurovať 338 00:15:19,140 --> 00:15:20,100 týmto spôsobom a že. 339 00:15:20,100 --> 00:15:22,370 Ale realita je potom narazíme na nespočet technických 340 00:15:22,370 --> 00:15:23,200 podporovať problémy. 341 00:15:23,200 --> 00:15:26,630 A tiež v týchto dňoch, veľa z toho, čo sa deje na strane servera, 342 00:15:26,630 --> 00:15:28,490 vo svete výpočtovej techniky, a to najmä pokiaľ ide o 343 00:15:28,490 --> 00:15:31,460 vývoj webových aplikácií a webových aplikácií, je v skutočnosti 344 00:15:31,460 --> 00:15:35,110 často vykonáva na Unix alebo Linux počítačov, na rozdiel od 345 00:15:35,110 --> 00:15:36,800 Macs alebo Windows PC. 346 00:15:36,800 --> 00:15:39,240 >> Takže medzi upsides, potom použitie túto vec nazýva 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance ich budeme všetci mať rovnaké prostredie. 348 00:15:41,500 --> 00:15:43,670 Takže všetci sú na rovnakej stránke bez ohľadu na to, aký hardvér 349 00:15:43,670 --> 00:15:46,650 prišiel do areálu s, ale tiež bude fušovať do presne 350 00:15:46,650 --> 00:15:48,230 v rovnakom prostredí, ktoré budete používať na 351 00:15:48,230 --> 00:15:51,080 Semester Koniec aj pre vývoj webových, rovnako ako v 352 00:15:51,080 --> 00:15:53,580 Budúcnosť reálnych aplikáciách ich. 353 00:15:53,580 --> 00:15:56,350 Takže konkrétnejšie, CS50 Appliance je zadarmo kus 354 00:15:56,350 --> 00:15:59,400 softvér, ktorý vám umožní spustiť iný operačný systém, 355 00:15:59,400 --> 00:16:02,670 Linux, v tomto prípade, na svojom počítači, v okne. 356 00:16:02,670 --> 00:16:04,750 Teraz si môžete nielen stiahnuť spotrebič. 357 00:16:04,750 --> 00:16:08,170 Potrebujete program, s ktorým sa hrať alebo spustiť prístroj. 358 00:16:08,170 --> 00:16:11,220 A ten kus softvéru, je všeobecne známy ako 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervízora prichádzajú vo forme výrobkov, ako sú VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Parallels. 362 00:16:15,820 --> 00:16:18,390 Všetky druhy spoločností, aby softvér, a to ako zadarmo a 363 00:16:18,390 --> 00:16:19,310 obchodné, podobný. 364 00:16:19,310 --> 00:16:21,480 Čo uvidíte v problému Set 1 sú inštrukcie o tom, ako 365 00:16:21,480 --> 00:16:23,440 získať zadarmo softvér, s ktorými sa 366 00:16:23,440 --> 00:16:25,000 spustiť CS50 Appliance. 367 00:16:25,000 --> 00:16:28,060 A akonáhle to urobíte, budete mať v okne na vašom počítači Mac alebo PC, 368 00:16:28,060 --> 00:16:30,710 desktop prostredie, ktoré vyzerá celkom ako to, kde 369 00:16:30,710 --> 00:16:33,100 má v ponuke Štart-ako vec 370 00:16:33,100 --> 00:16:34,510 ľavom dolnom rohu. 371 00:16:34,510 --> 00:16:38,030 Má domovskú zložku, alebo domovský adresár, v ľavom hornom rohu 372 00:16:38,030 --> 00:16:40,280 tam, môže odpadky, a tak ďalej. 373 00:16:40,280 --> 00:16:43,450 Takže budeme šprýmař oddelene potrebné údaje, ako sme ísť. 374 00:16:43,450 --> 00:16:46,430 >> Ale teraz poďme začať sa ponoriť 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 ďaleko menej grafické, ale ironicky, ak 377 00:16:52,390 --> 00:16:54,730 mocnejší, akonáhle sa dostanete pútavé s ním. 378 00:16:54,730 --> 00:16:58,970 Takže v C, píšeme programy písaním zdrojového kódu, ktorý je 379 00:16:58,970 --> 00:17:01,640 Tento anglický-ako syntax, podobne ako ponožky 380 00:17:01,640 --> 00:17:05,609 preukázanie, že sme minule, ktorá vám umožní 381 00:17:05,609 --> 00:17:07,910 vyjadriť sám seba celkom presne, ak 382 00:17:07,910 --> 00:17:09,760 arcanely, k počítaču. 383 00:17:09,760 --> 00:17:11,960 >> Takže aký druh výrobku softvéru si budete skutočne potrebovať 384 00:17:11,960 --> 00:17:15,520 písať programy v jazyku ako C, zakladajú na našich 385 00:17:15,520 --> 00:17:17,492 konverzácia v pondelok? 386 00:17:17,492 --> 00:17:19,650 [Nepočuteľné] 387 00:17:19,650 --> 00:17:21,079 OK, stačí textový editor. 388 00:17:21,079 --> 00:17:22,890 Nepotrebujete žiadny špeciálny softvér 389 00:17:22,890 --> 00:17:24,460 samo o sebe písať programy. 390 00:17:24,460 --> 00:17:27,220 Potrebujete k tomu len textový editor, ako je Poznámkový blok, v systéme Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit na Mac, alebo niečo, čo nazýva gedit, vo svete 392 00:17:30,450 --> 00:17:32,020 Linux, ktorý budeme používať tú. 393 00:17:32,020 --> 00:17:33,750 A to je, písať programy. 394 00:17:33,750 --> 00:17:35,480 >> Ale písanie je len polovica z rovnice. 395 00:17:35,480 --> 00:17:36,630 Potom je potrebné spustiť. 396 00:17:36,630 --> 00:17:38,320 Aby však bolo možné spúšťať programy - 397 00:17:38,320 --> 00:17:39,600 Nemožno spustiť zdrojový kód. 398 00:17:39,600 --> 00:17:41,500 Tie namiesto toho robiť to, čo k nej ako prvý? 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 skompilovať. 402 00:17:44,130 --> 00:17:49,010 A niekto iný, zostavovanie zdrojového kódu znamená - 403 00:17:49,010 --> 00:17:50,260 [Nepočuteľné] 404 00:17:52,300 --> 00:17:52,700 DAVID J. Malan: Presne tak. 405 00:17:52,700 --> 00:17:54,430 Prekladať do núl a jedničiek. 406 00:17:54,430 --> 00:17:57,150 Pretože všetky z nás, v týchto dňoch, majú počítače, ktoré majú procesory, 407 00:17:57,150 --> 00:18:00,350 takmer všetky, ktoré sú vyrobené spoločnosťou s názvom Intel, a 408 00:18:00,350 --> 00:18:03,320 Intel Inside, znamená, že je to mozog vnútri vašej 409 00:18:03,320 --> 00:18:04,990 počítač, známy ako CPU. 410 00:18:04,990 --> 00:18:07,570 A jedna z vecí, ktoré ten mozog robí, je, že vie, 411 00:18:07,570 --> 00:18:10,390 ako pochopiť zákonitosti núl a jedničiek. 412 00:18:10,390 --> 00:18:13,240 To vie, čo vzor bitov predstavuje Okrem toho, čo 413 00:18:13,240 --> 00:18:15,500 vzor predstavuje súčty a rozdiely, čo sa vzor 414 00:18:15,500 --> 00:18:18,890 bity predstavujú tlače, a vytvára počuteľný zvuk. 415 00:18:18,890 --> 00:18:22,450 >> Takže v skratke, CPU, spolu s operačným systémom, 416 00:18:22,450 --> 00:18:25,230 ktorý je kus softvéru, ktorý beží na procesore, 417 00:18:25,230 --> 00:18:26,050 aby som tak povedal. 418 00:18:26,050 --> 00:18:29,850 Spoločne tieto dva kusy vedieť, ako spustiť programy, ktoré 419 00:18:29,850 --> 00:18:31,070 my ľudia písať. 420 00:18:31,070 --> 00:18:34,040 >> Takže keď idem do CS50 Appliance tu, musím otvoriť 421 00:18:34,040 --> 00:18:35,660 up textového editora a môžem prístup k tejto 422 00:18:35,660 --> 00:18:36,560 v niekoľkých ohľadoch. 423 00:18:36,560 --> 00:18:39,060 Môžem buď ísť do menu, programovanie, 424 00:18:39,060 --> 00:18:40,230 a potom som si vybrať - 425 00:18:40,230 --> 00:18:40,810 Nie, nie je to menu. 426 00:18:40,810 --> 00:18:43,860 Môžem ísť k Príslušenstvo / gedit tu pre otvorenie 427 00:18:43,860 --> 00:18:45,090 môj malý textový editor. 428 00:18:45,090 --> 00:18:48,030 Alebo presnejšie povedané, môžem na túto malú ikonu v spodnej časti 429 00:18:48,030 --> 00:18:48,970 ľavom rohu. 430 00:18:48,970 --> 00:18:50,430 A teraz som si toto prostredie tu. 431 00:18:50,430 --> 00:18:52,590 Je to celkom pripomína jednoduchý textový editor, len s 432 00:18:52,590 --> 00:18:53,820 jeden alebo dva rozdiely. 433 00:18:53,820 --> 00:18:56,420 V hornej časti, kde je kurzor blikajúci teraz, to je miesto, kde 434 00:18:56,420 --> 00:18:57,900 Môžem začať písať svoj kód. 435 00:18:57,900 --> 00:19:00,415 V spodnej časti je to, čo nazýva okno terminálu. 436 00:19:00,415 --> 00:19:03,400 A aké veci môžem robiť v tejto 437 00:19:03,400 --> 00:19:04,960 tzv okno terminálu? 438 00:19:04,960 --> 00:19:06,680 [Nepočuteľné] 439 00:19:06,680 --> 00:19:07,890 >> Dobre, tak budem spúšťať príkazy. 440 00:19:07,890 --> 00:19:10,300 A niektoré z týchto príkazov sa bežal v pondelok bolo trochu 441 00:19:10,300 --> 00:19:15,070 mystické na prvý, ale ls pre zoznam, cd pre zmenu adresára, 442 00:19:15,070 --> 00:19:16,540 rm, pre odstránenie. 443 00:19:16,540 --> 00:19:19,680 Takže je to niečo ako old-school spôsob navigácie vašej 444 00:19:19,680 --> 00:19:22,310 počítač, iba pomocou klávesnice a textové príkazy, 445 00:19:22,310 --> 00:19:24,130 a nie, všeobecne, použitie myši. 446 00:19:24,130 --> 00:19:25,960 Ale uvidíme, netrvalo dlho, to vlastne nám dáva 447 00:19:25,960 --> 00:19:28,520 trochu viac sily a trochu viac presnosti, s ktorými sa 448 00:19:28,520 --> 00:19:29,600 vyjadriť sa. 449 00:19:29,600 --> 00:19:31,330 A potom tu na ľavej, sme len tak vidieť, 450 00:19:31,330 --> 00:19:34,360 ako sme začať písať softvér, trochu zhrnutie 451 00:19:34,360 --> 00:19:36,350 program, ktorý sme napísal vľavo hore. 452 00:19:36,350 --> 00:19:38,360 Ale uvidíme, že zase onedlho. 453 00:19:38,360 --> 00:19:40,050 >> Takže poďme niečo urobiť pomerne jednoduchý tu. 454 00:19:40,050 --> 00:19:43,440 Dovoľte mi, aby som najprv ísť dopredu a ísť do súboru, uložiť, a ja som len 455 00:19:43,440 --> 00:19:45,970 bude kliknite na jharvard tu, cez vľavo, a 456 00:19:45,970 --> 00:19:48,930 jharvard je opäť meno pre moje domovskej zložke, my 457 00:19:48,930 --> 00:19:52,110 osobné súbory, mi, že sú teraz John Harvard, ako všetci z vás 458 00:19:52,110 --> 00:19:54,230 čoskoro bude John Harvard v tomto prostredí. 459 00:19:54,230 --> 00:19:57,360 Má tento domovský adresár, My Documents a tak ďalej, 460 00:19:57,360 --> 00:19:58,900 že chcem zachrániť, teraz, tento súbor palcov 461 00:19:58,900 --> 00:20:01,520 Takže budem hovoriť hello.c. Potom som ísť 462 00:20:01,520 --> 00:20:05,770 dopredu a kliknite na tlačidlo Uložiť, a teraz, čo mám tu, je karta 463 00:20:05,770 --> 00:20:09,440 volal hello.c, tak ako iný typ editora. 464 00:20:09,440 --> 00:20:11,760 >> Takže teraz mi dovoľte pokračovať a začať písať program. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 A potom som minule, printf, pre tlač 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 Takmer kompletné. 470 00:20:25,630 --> 00:20:27,130 Ale ja som chýba pár detailov. 471 00:20:27,130 --> 00:20:30,210 Čo chýba z tohto programu, ktorý som naozaj potrebujú pre 472 00:20:30,210 --> 00:20:31,890 to vlastne kompiláciu? 473 00:20:31,890 --> 00:20:32,130 Jo. 474 00:20:32,130 --> 00:20:33,980 [Nepočuteľné]? 475 00:20:33,980 --> 00:20:35,770 >> DAVID J. Malan: Jo, tak musím zahrnúť štandard 476 00:20:35,770 --> 00:20:36,700 I / O knižnice. 477 00:20:36,700 --> 00:20:39,470 Takže to musí ísť nad hlavnou, tak som len tak 478 00:20:39,470 --> 00:20:40,790 aby určitý priestor pre to tam. 479 00:20:40,790 --> 00:20:44,420 A ja budem robiť # include . 480 00:20:44,420 --> 00:20:46,570 A všimnite si lomené zátvorky tam. 481 00:20:46,570 --> 00:20:49,410 A ako stranou, gedit je trochu užívateľsky prívetivý, ak 482 00:20:49,410 --> 00:20:52,420 niekedy trochu mätúci, v tom, že sa snaží pomáhať vašej 483 00:20:52,420 --> 00:20:54,770 Oči upozornenie, čo vedenie s tým, čo. 484 00:20:54,770 --> 00:20:57,760 Takže skutočnosť, že môj kurzor je hneď vedľa tohto uhlová 485 00:20:57,760 --> 00:21:00,600 držiak, všimnite si, ako je to zdôraznenie druhej uhlová 486 00:21:00,600 --> 00:21:01,920 Držiak a toto. 487 00:21:01,920 --> 00:21:03,770 A to je len na to moju pozornosť na skutočnosť, že som 488 00:21:03,770 --> 00:21:04,460 majú symetriu. 489 00:21:04,460 --> 00:21:07,010 A symetria v programovaní je všeobecne dobrá vec. 490 00:21:07,010 --> 00:21:10,270 Podobne, keď som pohnúť kurzorom na koniec, všimnite si, ako 491 00:21:10,270 --> 00:21:13,630 Zložené zátvorky line up ukázať, že áno, mám otvorený 492 00:21:13,630 --> 00:21:15,160 a uzavretý jeden, aby som tak povedal. 493 00:21:15,160 --> 00:21:16,640 >> Dobre, a čo môžem urobiť jednu vec. 494 00:21:16,640 --> 00:21:20,090 Nie je to nevyhnutne nutné, ale dobré praxe, tj 495 00:21:20,090 --> 00:21:21,250 návrat 0. 496 00:21:21,250 --> 00:21:24,140 A return 0 čo robí pre nás? 497 00:21:24,140 --> 00:21:25,584 Alebo znamená čo? 498 00:21:25,584 --> 00:21:27,480 [Nepočuteľné] 499 00:21:27,480 --> 00:21:28,300 DAVID J. Malan: Ale nič sa nedeje. 500 00:21:28,300 --> 00:21:30,280 A úprimne povedané, že je to ťažké pre mnoho pokaziť v 501 00:21:30,280 --> 00:21:31,250 naprogramovať tento krátky. 502 00:21:31,250 --> 00:21:33,930 Takže som len výborný jasné, že je všetko v poriadku. 503 00:21:33,930 --> 00:21:36,740 Ja, človek, keď som spustiť tento program, bude pravdepodobne nikdy 504 00:21:36,740 --> 00:21:38,150 vidieť, že 0. 505 00:21:38,150 --> 00:21:41,070 Všeobecne platí, že sú tieto čísla, aby sa vrátil z hlavnej 506 00:21:41,070 --> 00:21:43,540 iba vychovávať svoje hlavy k ľuďom, keď 507 00:21:43,540 --> 00:21:44,360 sa niečo pokazí. 508 00:21:44,360 --> 00:21:46,640 A ty sa trochu pop-up hovorí systémová chyba, jeden, 509 00:21:46,640 --> 00:21:48,760 dva, tri, alebo bez ohľadu na počet bol, že 510 00:21:48,760 --> 00:21:50,100 bol vlastne vrátil. 511 00:21:50,100 --> 00:21:52,870 Takže niečo v poriadku s tým? 512 00:21:52,870 --> 00:21:55,300 [Nepočuteľné] 513 00:21:55,300 --> 00:21:58,100 >> DAVID J. Malan: Takže to nie je 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 by som mal dať do znakom nového riadku tam 516 00:22:02,340 --> 00:22:05,240 koniec tohto reťazca, takže sme vlastne presuňte kurzor na 517 00:22:05,240 --> 00:22:08,340 ďalší riadok, a program, ktorý vyzerá trochu krajší. 518 00:22:08,340 --> 00:22:10,340 >> Takže teraz ma nechaj ísť dole do môjho okna terminálu 519 00:22:10,340 --> 00:22:11,490 a zoom späť dovnútra 520 00:22:11,490 --> 00:22:13,390 A táto vec tu, je to len výzva. 521 00:22:13,390 --> 00:22:16,760 Je to proste mi to pripomenul, kto som, jharvard @ prístroj tam, kde je 522 00:22:16,760 --> 00:22:18,850 Spotrebič je názov počítača som na. 523 00:22:18,850 --> 00:22:22,380 V zátvorkách sú to vlnovky, klikiháky symbol, ktorý 524 00:22:22,380 --> 00:22:24,160 predstavuje to, čo? 525 00:22:24,160 --> 00:22:25,590 Divákov: Home adresár. 526 00:22:25,590 --> 00:22:26,350 DAVID J. Malan: Home adresár. 527 00:22:26,350 --> 00:22:29,350 Takže to je len skrátený zápis pre ostatné ste v 528 00:22:29,350 --> 00:22:32,780 Vaše osobné zložku, kde všetky vaše súbory ísť v predvolenom nastavení. 529 00:22:32,780 --> 00:22:36,080 Takže teraz, tu, môžem zadať ls pre zoznam. 530 00:22:36,080 --> 00:22:40,020 A jediné, čo som vidieť tu v tejto chvíli je hello.c. 531 00:22:40,020 --> 00:22:41,770 A to je dobre, pretože som práve napísal. 532 00:22:41,770 --> 00:22:44,380 >> Tak nechaj ma ísť dopredu a to, aby ahoj. 533 00:22:44,380 --> 00:22:46,830 A všimnite si, nebudem písať, aby hello.c. 534 00:22:46,830 --> 00:22:50,300 Namiesto toho, ja som len písať základné názov súboru, ahoj. 535 00:22:50,300 --> 00:22:53,690 A aby, ako sme videli v pondelok, bude len usudzovať, že chcem 536 00:22:53,690 --> 00:22:54,920 . C súboru. 537 00:22:54,920 --> 00:22:56,820 Takže teraz som napísal, aby ahoj. 538 00:22:56,820 --> 00:22:59,280 Teraz vidím túto pomerne dlhú príkaz a bude pokračovať 539 00:22:59,280 --> 00:23:00,480 vidieť to znova a znova. 540 00:23:00,480 --> 00:23:03,620 Ale aby bolo jasno, rinčať, slovo, ktoré práve objavil, 541 00:23:03,620 --> 00:23:05,340 že je to skutočný kompilátor. 542 00:23:05,340 --> 00:23:08,200 Urobte je len nástroj zostavenie. 543 00:23:08,200 --> 00:23:11,900 Je to len ďalší užívateľsky prívetivý program, ktorý šetrí mi, že v 544 00:23:11,900 --> 00:23:15,310 dlhodobo, od nutnosti písať z neuveriteľne únavné dlhé 545 00:23:15,310 --> 00:23:17,020 Príkazy páči. 546 00:23:17,020 --> 00:23:18,950 Takže by ste mohli spustiť rinčať ručne. 547 00:23:18,950 --> 00:23:20,530 Dalo by sa napísať všetko ručne. 548 00:23:20,530 --> 00:23:21,580 Proste dostane veľmi únavné. 549 00:23:21,580 --> 00:23:24,720 A tak, aby je len program, ktorý zjednodušuje naše životy a 550 00:23:24,720 --> 00:23:27,120 beží zložitejšie príkazy pre nás. 551 00:23:27,120 --> 00:23:29,410 >> Dobre, tak čo teraz súboru by som mal mať 552 00:23:29,410 --> 00:23:31,540 v mojom aktuálnom adresári? 553 00:23:31,540 --> 00:23:36,310 Nielen hello.c, ale tiež ahoj. 554 00:23:36,310 --> 00:23:39,710 Takže keď chcem spustiť ahoj, pripomínam, že hovorím dot lomítko, 555 00:23:39,710 --> 00:23:42,220 kde bodka znamená ísť do aktuálnej zložky, nech ste kdekoľvek 556 00:23:42,220 --> 00:23:46,060 sú, a potom spustiť program s názvom ahoj, a naozaj, teraz, 557 00:23:46,060 --> 00:23:48,080 Mám Hello World. 558 00:23:48,080 --> 00:23:51,640 Dobre, nejaké otázky na pracovnom postupe alebo syntaxe 559 00:23:51,640 --> 00:23:52,890 čo sme práve urobili? 560 00:23:55,380 --> 00:23:57,040 >> Dobre, takže sa poďme veci do zárezu znovu. 561 00:23:57,040 --> 00:24:00,430 Tak toto bol nezaujatý len napísať program, ktorý iba 562 00:24:00,430 --> 00:24:01,790 niekedy hovorí ahoj, svet. 563 00:24:01,790 --> 00:24:03,920 Takže sme zmenili to, v pondelok, hovoriť, ahoj, David. 564 00:24:03,920 --> 00:24:06,560 Je to trochu osobné, ale rovnako pevne dané ako 565 00:24:06,560 --> 00:24:07,410 prvá verzia. 566 00:24:07,410 --> 00:24:08,780 Takže nie je všetko, že presvedčivé. 567 00:24:08,780 --> 00:24:13,120 Ale existuje, v C, funkcia iste okrem 568 00:24:13,120 --> 00:24:15,700 tlač, funkcie, ktoré vám umožnia získať vstup od užívateľa. 569 00:24:15,700 --> 00:24:17,990 A ako sme to urobili, druhý deň, a to takto. 570 00:24:17,990 --> 00:24:21,440 Než som skutočne vytlačiť niečo, som sa prvýkrát dostal 571 00:24:21,440 --> 00:24:22,410 niečo od užívateľa. 572 00:24:22,410 --> 00:24:23,370 Tak ma nechaj robiť to znova. 573 00:24:23,370 --> 00:24:26,580 >> String s, kde s je len ľubovoľný názov, tu, pre 574 00:24:26,580 --> 00:24:30,600 string, rovná GetString. 575 00:24:30,600 --> 00:24:32,070 Takže to, čo bolo GetString? 576 00:24:32,070 --> 00:24:34,630 Je to samozrejme dostane reťazec, na základe jeho meno. 577 00:24:34,630 --> 00:24:37,560 Ale čo to je, viac technicky? 578 00:24:37,560 --> 00:24:38,440 Je to funkcia. 579 00:24:38,440 --> 00:24:41,790 Takže je to funkcia, ktorá nepríde s C na sebe. 580 00:24:41,790 --> 00:24:43,660 CS50 personál napísal. 581 00:24:43,660 --> 00:24:46,940 A tak na použitie, môžete nielen patrí stdio.h, 582 00:24:46,940 --> 00:24:49,630 Tiež je potrebné zahrnúť čo? 583 00:24:49,630 --> 00:24:50,060 Jo. 584 00:24:50,060 --> 00:24:54,210 Takže cs50.h, ktorá je len súbor sme písali pred niekoľkými rokmi. 585 00:24:54,210 --> 00:24:57,130 Inštalovali sme ho na spotrebiče pre vás spolu 586 00:24:57,130 --> 00:24:58,490 všetky štandardné súborov. 587 00:24:58,490 --> 00:25:00,500 A tak v týchto prvých niekoľkých týždňov po triede, budeme používať 588 00:25:00,500 --> 00:25:02,820 to len zjednodušiť proces robí veľmi základné 589 00:25:02,820 --> 00:25:04,600 veci, ako dostať vstup od užívateľa. 590 00:25:04,600 --> 00:25:07,370 Vzhľadom k tomu, ako uvidíme za pár týždňov, ako sa užívateľ vstup do 591 00:25:07,370 --> 00:25:10,180 jazyk C je v skutočnosti prekvapivo zložitý, 592 00:25:10,180 --> 00:25:14,360 najmä preto, že neviete vopred, zvyčajne, ako 593 00:25:14,360 --> 00:25:17,030 veľa vecí je užívateľ bude písať dovnútra 594 00:25:17,030 --> 00:25:20,340 A keď neviete, koľko dát sa očakávať, nemusíte 595 00:25:20,340 --> 00:25:22,380 vedieť, koľko pamäte prideliť. 596 00:25:22,380 --> 00:25:25,480 A ak ste skutočne máte kontradiktórne užívateľa, ktorý sa snaží 597 00:25:25,480 --> 00:25:28,180 nabúrať sa do vášho systému, zrútenie počítača, dobre, 598 00:25:28,180 --> 00:25:31,600 zvyčajne prvá metóda útoku je, rovnako ako ja na 599 00:25:31,600 --> 00:25:34,950 Pondelok, zadajte celý dlhý sled náhodných znakov, 600 00:25:34,950 --> 00:25:37,020 Enter, a uvidíme, čo sa zlomí. 601 00:25:37,020 --> 00:25:40,800 Pretože všeobecne, ak sa program prestávok, ktoré naráža na 602 00:25:40,800 --> 00:25:42,650 bezpečnostné chyba, potenciálne. 603 00:25:42,650 --> 00:25:45,250 To iste naznačuje na vás, programátor, ktorý urobil 604 00:25:45,250 --> 00:25:49,050 chyba, ale nebezpečne, možno ste urobili 605 00:25:49,050 --> 00:25:52,430 súvisiace s bezpečnosťou chyba, a všeobecne budeme vidieť, že 606 00:25:52,430 --> 00:25:54,840 to je, ako sa stroje ohrozená k tomuto dňu, a to ako 607 00:25:54,840 --> 00:25:56,620 vo svete webu a programov na 608 00:25:56,620 --> 00:25:58,070 príkazového riadku, ako 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étnejšie teraz, čo na trati: 6 robiť? 612 00:26:03,380 --> 00:26:05,640 Takže funkcia na pravej strane dostane reťazec, 613 00:26:05,640 --> 00:26:06,890 berie koľko argumenty? 614 00:26:09,458 --> 00:26:09,900 Dobre. 615 00:26:09,900 --> 00:26:10,400 Preto nikto. 616 00:26:10,400 --> 00:26:11,360 Trochu zdravý rozum skontrolovať. 617 00:26:11,360 --> 00:26:15,380 Argument, opäť, je len vstup do funkcie zmeniť 618 00:26:15,380 --> 00:26:17,250 jeho predvolené správanie nejakým spôsobom. 619 00:26:17,250 --> 00:26:19,540 Ale v tomto prípade, nechcem meniť 620 00:26:19,540 --> 00:26:20,650 správanie GetString. 621 00:26:20,650 --> 00:26:22,430 Len som sa chcel dostať reťazec. 622 00:26:22,430 --> 00:26:25,190 Tak som dal nič v zátvorkách, a potom som dal 623 00:26:25,190 --> 00:26:27,550 bodkočiarka demarking koniec riadku kódu. 624 00:26:27,550 --> 00:26:29,840 Teraz, rovná neznamená rovné, samo o sebe. 625 00:26:29,840 --> 00:26:32,690 To znamená, že priradenie, čo znamená, že bez ohľadu na dal dostane 626 00:26:32,690 --> 00:26:36,060 výstup na pravej vnútornej čo je na ľavej strane. 627 00:26:36,060 --> 00:26:39,400 >> Takže na ľavej strane, môžeme povedať, že sme deklarovali 628 00:26:39,400 --> 00:26:41,630 string volal s 629 00:26:41,630 --> 00:26:44,240 A konkrétne, sme pridelené pamäte vnútri 630 00:26:44,240 --> 00:26:46,340 ktoré dáme na kúsky, ktoré predstavuje postupnosť 631 00:26:46,340 --> 00:26:46,850 znakov. 632 00:26:46,850 --> 00:26:49,400 Ale pre dnešok, sme pridelené 633 00:26:49,400 --> 00:26:51,450 alebo vyhlásené za reťazec. 634 00:26:51,450 --> 00:26:51,790 Dobrá. 635 00:26:51,790 --> 00:26:54,760 Takže teraz po tom, čo som to urobil, chcem pripojiť v hodnote 636 00:26:54,760 --> 00:26:56,535 s, nie je hodnota David. 637 00:26:56,535 --> 00:27:00,200 Tak to je v poriadku, prečo? 638 00:27:03,060 --> 00:27:04,870 Takže je to len doslova pevne s 639 00:27:04,870 --> 00:27:06,870 Je to povedať "ahoj, s", čo nie je to, čo chcem. 640 00:27:06,870 --> 00:27:07,790 Tak som to urobiť. 641 00:27:07,790 --> 00:27:10,330 Znak percenta je zástupný symbol, ale teraz musím 642 00:27:10,330 --> 00:27:12,520 odovzdať do tlače aj druhý argument. 643 00:27:12,520 --> 00:27:15,160 Pripomenúť, že argumenty funkcie sú od seba oddelené 644 00:27:15,160 --> 00:27:20,300 čiarky, takže ďalšie čiarka tu som si po tomto liste s 645 00:27:20,300 --> 00:27:23,740 A v tejto súvislosti teraz, s je premenná, a printf, 646 00:27:23,740 --> 00:27:25,550 po obdržaní týchto dvoch vstupov - 647 00:27:25,550 --> 00:27:29,440 reťazec na ľavej strane a názvy premenných sa na P - 648 00:27:29,440 --> 00:27:32,750 bude zapojte posledne do bývalej pre nás, a 649 00:27:32,750 --> 00:27:34,600 len vytlačiť pekný krásny reťazec obsahujúci 650 00:27:34,600 --> 00:27:36,770 čo to je, že sme zadali dovnútra 651 00:27:36,770 --> 00:27:37,560 >> Tak poďme to skúsiť. 652 00:27:37,560 --> 00:27:38,860 Chystáte sa do toho pustite a oddialiť, späť 653 00:27:38,860 --> 00:27:40,250 k môjmu terminálovom okne. 654 00:27:40,250 --> 00:27:41,840 Zväčšenie na dne tu. 655 00:27:41,840 --> 00:27:44,070 Opíšte, aby ahoj. 656 00:27:44,070 --> 00:27:45,870 Rinčanie sa zdá k boli znovu spustite. 657 00:27:45,870 --> 00:27:49,280 Idem písať. / Hello, Enter. 658 00:27:49,280 --> 00:27:52,145 Nič sa nedeje ešte, ale je to na túto výzvu 659 00:27:52,145 --> 00:27:55,700 že môžem písať niečo ako Nate, Enter, a teraz máme 660 00:27:55,700 --> 00:27:56,380 Dobrý deň, Nate. 661 00:27:56,380 --> 00:27:59,600 A ja si to znovu s Robom, a tak ďalej. 662 00:27:59,600 --> 00:28:03,410 Takže dúfajme, že teraz tento program sa chová, ako som v úmysle. 663 00:28:03,410 --> 00:28:05,720 >> Teraz, nie všetky, že užívateľsky prívetivý. 664 00:28:05,720 --> 00:28:07,930 Nemám tušenie, čo sa sa odo mňa očakáva. 665 00:28:07,930 --> 00:28:09,620 Takže môžeme určite vyčistiť to až trochu. 666 00:28:09,620 --> 00:28:13,270 Nechaj ma ísť späť sem, a nie len potápanie v a 667 00:28:13,270 --> 00:28:16,480 žiada užívateľa o reťazec, dovoľte mi, aby som explicitne povedať, na 668 00:28:16,480 --> 00:28:17,750 užívateľ, čo som očakával. 669 00:28:17,750 --> 00:28:21,610 Takže printf ("Zadajte reťazec:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Takže žiadne premenné tu. 672 00:28:25,510 --> 00:28:26,750 Žiadne percent znaky. 673 00:28:26,750 --> 00:28:28,550 Len jednoduchý anglický výraz. 674 00:28:28,550 --> 00:28:34,030 Dovoľte mi teraz ísť ku dnu tu a znovu môj program. 675 00:28:34,030 --> 00:28:35,380 Ale nič sa zrejme zmenila. 676 00:28:35,380 --> 00:28:37,350 Prečo? 677 00:28:37,350 --> 00:28:38,380 Musím prekompilovať ho. 678 00:28:38,380 --> 00:28:39,570 Tak chybička sa ľahko vlúdi. 679 00:28:39,570 --> 00:28:41,700 Ale musíte nielen uložiť súbor, ale 680 00:28:41,700 --> 00:28:43,260 prekompilovať program. 681 00:28:43,260 --> 00:28:46,640 A tak keď som znovu spustiť, aby ahoj, teraz zvonenie beží. 682 00:28:46,640 --> 00:28:51,800 Teraz už môže bežať. / Hello. A teraz vidím, "Zadajte reťazec:". 683 00:28:51,800 --> 00:28:52,050 Dobre. 684 00:28:52,050 --> 00:28:53,440 Teraz je to trochu viac užívateľsky príjemný. 685 00:28:53,440 --> 00:28:55,850 Nate, Enter, ahoj, Nate. 686 00:28:55,850 --> 00:28:57,310 >> No, skúsme to znova a začať premýšľať 687 00:28:57,310 --> 00:28:58,080 o rohových prípadoch. 688 00:28:58,080 --> 00:29:00,520 Takže rovnako ako v Scratch, budete podporovať alebo sú 689 00:29:00,520 --> 00:29:03,180 podporovať v špec druh premýšľať o tom, čo by sa mohlo ísť 690 00:29:03,180 --> 00:29:06,610 zle, keď nemáte predvídať všetko užívateľ mohol urobiť. 691 00:29:06,610 --> 00:29:08,050 Chyby, a preto môže nasledovať. 692 00:29:08,050 --> 00:29:09,710 Takže zadajte reťazec - 693 00:29:09,710 --> 00:29:11,130 Čo je rohová prípad? 694 00:29:11,130 --> 00:29:13,320 Čo je to scenár, ktorý som, programátor, nemusí mať 695 00:29:13,320 --> 00:29:16,070 Predpokladá sa? 696 00:29:16,070 --> 00:29:17,600 Jo. 697 00:29:17,600 --> 00:29:17,920 Dobre. 698 00:29:17,920 --> 00:29:22,060 Takže, čo keď som písať v rade, ako je tento? 699 00:29:22,060 --> 00:29:22,500 Dobrá. 700 00:29:22,500 --> 00:29:24,490 Takže to ešte funguje. 701 00:29:24,490 --> 00:29:25,880 Gramaticky nedáva zmysel. 702 00:29:25,880 --> 00:29:27,180 Ale aspoň program funguje. 703 00:29:27,180 --> 00:29:28,650 >> Čo je ďalší roh prípad? 704 00:29:28,650 --> 00:29:29,610 Niečo, čo som nečakala. 705 00:29:29,610 --> 00:29:31,590 Jo? 706 00:29:31,590 --> 00:29:31,940 Dobre. 707 00:29:31,940 --> 00:29:34,950 Takže by sme mohli urobiť niečo ako naozaj, ale naozaj veľké číslo. 708 00:29:34,950 --> 00:29:37,270 Takže ideme na to tu. 709 00:29:37,270 --> 00:29:40,880 Dovoľte mi, aby som vzdialite na sekundu, dovoľte mi, aby som spomenul. 710 00:29:40,880 --> 00:29:42,250 Nemožno kopírovať a vložiť sem. 711 00:29:42,250 --> 00:29:42,470 Dobrá. 712 00:29:42,470 --> 00:29:44,440 Takže nemôžem kopírovať a vložiť do tejto terminálovom okne, takže budeme 713 00:29:44,440 --> 00:29:46,950 tiež len simulovať. 714 00:29:46,950 --> 00:29:51,340 Dovoľte mi, aby som oddialiť, bude zabaliť. 715 00:29:51,340 --> 00:29:52,700 Nebudem robiť to príliš dlho, pretože to nebude 716 00:29:52,700 --> 00:29:54,440 skutočne rozbiť v tomto programe. 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 sa nestalo. 720 00:29:56,580 --> 00:29:57,050 Dobrá. 721 00:29:57,050 --> 00:29:58,440 Ale je to skutočný roh prípad. 722 00:29:58,440 --> 00:30:01,610 A jediný dôvod, prečo sa správal správne, tak 723 00:30:01,610 --> 00:30:05,820 hovoriť, je preto, že CS50 funkcie GetString je vlastne 724 00:30:05,820 --> 00:30:08,040 navrhnutá pod pokrievku, ako uvidíme za pár týždňov, 725 00:30:08,040 --> 00:30:11,570 automaticky prideliť viac a viac pamäte RAM, stále viac a viac 726 00:30:11,570 --> 00:30:14,330 pamäť od operačného systému, keď si uvedomí,, wow, 727 00:30:14,330 --> 00:30:16,670 ste naozaj zadali v niečo celkom dlho. 728 00:30:16,670 --> 00:30:18,500 Teraz, to je trochu lož. 729 00:30:18,500 --> 00:30:22,020 Ak by sme skutočne zastavil na nejakú dobu a som písať v 730 00:30:22,020 --> 00:30:24,640 niečo ako 5000000000 znakov na klávesnici 731 00:30:24,640 --> 00:30:28,060 tu, alebo naozaj hit copy-paste celkom dosť, sme dosť možno 732 00:30:28,060 --> 00:30:29,730 môže spôsobiť, že program na zrútenie. 733 00:30:29,730 --> 00:30:32,130 Len trochu ťažšie simulovať, že s konečnou 734 00:30:32,130 --> 00:30:33,740 množstvo času. 735 00:30:33,740 --> 00:30:37,320 >> Čo je ďalší roh prípad, že by sme mohli skúsiť? 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 prečo nie my odpovedáme nič? 739 00:30:40,360 --> 00:30:43,130 Takže v skutočnosti máme na nejakú akciu, pretože inak 740 00:30:43,130 --> 00:30:45,060 Program sa bude sedieť tam bliká celý deň. 741 00:30:45,060 --> 00:30:46,860 Ale keď som jednoducho stlačiť Enter - 742 00:30:46,860 --> 00:30:48,780 OK, teraz, stále vyzerá zle. 743 00:30:48,780 --> 00:30:51,670 Vari pád, ale možno je teraz príležitosť 744 00:30:51,670 --> 00:30:54,190 začať vykonávať viac prísny program 745 00:30:54,190 --> 00:30:55,290 že v skutočnosti kontroluje. 746 00:30:55,290 --> 00:30:57,640 A ak reťazec, veta, slovo, ktoré som 747 00:30:57,640 --> 00:31:00,890 zadali má dĺžku 0, dobre, možno by som mal kričať Na 748 00:31:00,890 --> 00:31:03,770 užívateľ, alebo mu povedať, alebo ju zadať reťazec znovu tak, aby 749 00:31:03,770 --> 00:31:06,560 sme vlastne dostať to, čo vyzerá ako správne správanie a nie 750 00:31:06,560 --> 00:31:08,570 Iba kompletné dohľad z mojej strany. 751 00:31:08,570 --> 00:31:11,130 >> Otázka v chrbte? 752 00:31:11,130 --> 00:31:11,970 Desatinné číslo. 753 00:31:11,970 --> 00:31:13,120 Takže sme si mohli vyskúšať, že taky. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Zdá sa, že takto to bude len práca skutočne v poriadku. 756 00:31:19,470 --> 00:31:21,160 A skutočne sa očakáva. 757 00:31:21,160 --> 00:31:24,550 Aj keď sme možno ste zadali, že číslo neexistuje, alebo 758 00:31:24,550 --> 00:31:28,200 väčšie množstvo skôr, si uvedomiť, že keď sme písanie užívateľa 759 00:31:28,200 --> 00:31:31,070 vstupné a my sme pomocou GetString funkcie, nie je 760 00:31:31,070 --> 00:31:34,380 ohľadu na to, či to, čo píšem vyzerá ako číslo. 761 00:31:34,380 --> 00:31:36,720 Pripomeňme si, že podľa ASCII, všetko na svojom 762 00:31:36,720 --> 00:31:39,920 Klávesnica má číselnú hodnotu, ktorá môže byť mapovaná 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 prípade, aj keď sa môže zadať číslo, 765 00:31:44,490 --> 00:31:48,190 počítač bude myslieť na to, aby som tak povedal, ako reťazec - 766 00:31:48,190 --> 00:31:49,870 niečo, čo vyzerá ako číslo, ale je 767 00:31:49,870 --> 00:31:51,090 nie vlastne číslo. 768 00:31:51,090 --> 00:31:53,450 Ale to je vlastne dokonalý SEGUE, pretože teraz môžeme 769 00:31:53,450 --> 00:31:55,450 vlastne prechod na písanie programov, ktoré 770 00:31:55,450 --> 00:31:56,730 používať iné dátové typy. 771 00:31:56,730 --> 00:32:01,840 >> Takže okrem používanie znaku, alebo skôr, vedľa používanie reťazcov, 772 00:32:01,840 --> 00:32:04,510 uvedomiť, že máme iné dátové typy v C, rovnako ako v 773 00:32:04,510 --> 00:32:05,230 other jazykov. 774 00:32:05,230 --> 00:32:08,480 Char, ako už názov napovedá, je len jeden znak. 775 00:32:08,480 --> 00:32:12,150 Plavák je plávajúca bodová hodnota, a to je len fantázia 776 00:32:12,150 --> 00:32:14,470 spôsob, ako hovoriť reálne číslo - niečo, čo má desatinnú čiarku 777 00:32:14,470 --> 00:32:17,410 bod v ňom s niektorými číslami na ľavej a / alebo pravej. 778 00:32:17,410 --> 00:32:21,370 Int je celé číslo, ktoré je rovnako ako číslo 123. 779 00:32:21,370 --> 00:32:24,170 A teraz zaujímavejšie, sú veci ako dvojníka. 780 00:32:24,170 --> 00:32:28,540 Čo povieme double bol 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 vzhľadom k tomu, typicky float je 32-bit - 783 00:32:33,560 --> 00:32:37,340 takže je to tak dlho v pamäti, používa 32 núl a jedničiek na 784 00:32:37,340 --> 00:32:40,530 predstavujú hodnoty - double je doslova dvakrát, čo 785 00:32:40,530 --> 00:32:43,810 Znamená to, že môžete buď predstavovať väčšie čísla, alebo 786 00:32:43,810 --> 00:32:45,810 môžete predstavujú viac presné čísla. 787 00:32:45,810 --> 00:32:48,690 Takže môžete mať viac čísel za desatinnou čiarkou, ale 788 00:32:48,690 --> 00:32:51,520 ako kolega povedal vo videu, dokonca aj niečo jednoduchého, 789 00:32:51,520 --> 00:32:55,360 koncepčne ako tretina nemôže byť reprezentovaný presne podľa 790 00:32:55,360 --> 00:32:58,330 počítač, pretože nakoniec vám dôjdu bitov, a 791 00:32:58,330 --> 00:33:02,510 Preto môžete robiť len .33333333 toľkokrát, na 792 00:33:02,510 --> 00:33:05,050 ktorý bod stačí povedať, že som z reprezentácie 793 00:33:05,050 --> 00:33:08,120 priestor, musím len nazývať to deň a zastupovať ju 794 00:33:08,120 --> 00:33:10,200 trochu nepresne páči. 795 00:33:10,200 --> 00:33:11,110 A long long - 796 00:33:11,110 --> 00:33:13,880 hlúpy názov, ale je to preto, že je dátový typ známy ako 797 00:33:13,880 --> 00:33:19,350 dlho v C, ktorý zhodou okolností je často 32 bitov, rovnako ako 798 00:33:19,350 --> 00:33:21,670 int je 32 bitov, ale dlho dlho 799 00:33:21,670 --> 00:33:23,560 všeobecne 64 bitov. 800 00:33:23,560 --> 00:33:25,740 Tak to jednoducho znamená, že môže predstavovať väčšie 801 00:33:25,740 --> 00:33:26,990 čísla ako toto. 802 00:33:26,990 --> 00:33:27,410 >> Dobrá. 803 00:33:27,410 --> 00:33:29,390 Takže ak chceme skutočne začať reprezentovať veci, my 804 00:33:29,390 --> 00:33:31,030 môže byť potreba viac sofistikované typy, a 805 00:33:31,030 --> 00:33:32,340 to je dôvod, prečo máme reťazec. 806 00:33:32,340 --> 00:33:36,450 Takže v CS50 knižnici, že súbor s názvom cs50.h, máme 807 00:33:36,450 --> 00:33:41,110 vlastne deklaroval, dátový typ, aby som tak povedal, tzv string, 808 00:33:41,110 --> 00:33:42,710 ale reťazec v skutočnosti neexistuje. 809 00:33:42,710 --> 00:33:44,780 To je opäť jeden z týchto vrstiev sa budeme šupkou 810 00:33:44,780 --> 00:33:47,490 späť na týždeň alebo dva a vyhoďte ho, a vlastne 811 00:33:47,490 --> 00:33:49,640 pozerajú pod pokrievku, čo reťazec vlastne je, a 812 00:33:49,640 --> 00:33:50,840 ako sa zastúpená. 813 00:33:50,840 --> 00:33:53,520 Sme tiež sa pozrieme na logické hodnoty. 814 00:33:53,520 --> 00:33:56,040 >> Takže, čo bolo bool v kontexte Scratch? 815 00:33:59,154 --> 00:34:00,300 Je to pravda, alebo nie. 816 00:34:00,300 --> 00:34:03,900 Takže je to len hodnota, ktorá je true alebo false, zapnúť alebo vypnúť, 1 alebo 817 00:34:03,900 --> 00:34:06,140 0, ale ak chcete zobraziť svet. 818 00:34:06,140 --> 00:34:09,739 Takže v C, a to vďaka CS50 knižnice, čo 819 00:34:09,739 --> 00:34:12,179 obsahuje iné knižnice pod kapotou, máme 820 00:34:12,179 --> 00:34:14,909 prístup k dátovým typom, ktorý je volal bool, ktorá bude 821 00:34:14,909 --> 00:34:18,730 doslova nám umožní priradiť hodnoty true alebo false na 822 00:34:18,730 --> 00:34:20,219 veci v programe. 823 00:34:20,219 --> 00:34:23,880 >> Tak poďme do toho sem a napísať malý program, ktorý 824 00:34:23,880 --> 00:34:26,330 robí niečo zahŕňajúce čísla miesto. 825 00:34:26,330 --> 00:34:29,840 Tak nechaj ma ísť späť do CS50 Appliance, nechajte ma ísť napred a 826 00:34:29,840 --> 00:34:32,770 vytvorte nový súbor s názvom tu - 827 00:34:32,770 --> 00:34:35,460 povedzme niečo jednoduchého, ako math.c. 828 00:34:38,270 --> 00:34:38,710 Dobrá. 829 00:34:38,710 --> 00:34:41,600 A teraz ísť až na vrchol svojho programu, som 830 00:34:41,600 --> 00:34:42,510 robiť obvyklé - 831 00:34:42,510 --> 00:34:44,780 # Include , takže môžem použiť 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 vrátime do, prípadne, čo int znamená 834 00:34:49,270 --> 00:34:52,389 tu, čo void znamená tú, ale teraz, len viem, že 835 00:34:52,389 --> 00:34:54,270 budete musieť spúšťať programy, ako je tento. 836 00:34:54,270 --> 00:34:56,280 Teraz budem pokračovať a poviem niečo málo 837 00:34:56,280 --> 00:35:02,110 rôzne - printf ("Daj mi číslo:" 838 00:35:02,110 --> 00:35:03,570 );. 839 00:35:03,570 --> 00:35:09,220 Potom budem robiť int n = GetInt, pretože 840 00:35:09,220 --> 00:35:12,770 Ukázalo sa, že GetInt je ďalšie funkcie v CS50 knižnici 841 00:35:12,770 --> 00:35:14,060 okrem GetString. 842 00:35:14,060 --> 00:35:17,340 A teraz idem robiť niečo hlúpeho, ako "vďaka 843 00:35:17,340 --> 00:35:25,760 pre% d, "pre desatinné číslo, a potom sa čiarka n, a 844 00:35:25,760 --> 00:35:26,620 potom sa vrátiť 0. 845 00:35:26,620 --> 00:35:28,940 Takže znova, vráti 0 nemá nič spoločného s číslom som 846 00:35:28,940 --> 00:35:30,080 žiada užívateľa o 847 00:35:30,080 --> 00:35:33,620 Len znamená na konci, že všetky, pravdepodobne, je dobre. 848 00:35:33,620 --> 00:35:36,290 >> Tak nechaj ma ísť k mojej terminálovom okne tu. 849 00:35:36,290 --> 00:35:39,590 Dovoľte mi, aby som zadajte robiť matematiku, zadajte. 850 00:35:39,590 --> 00:35:41,360 A je niečo zle. 851 00:35:41,360 --> 00:35:44,620 Urobte matematika nefunguje. 852 00:35:44,620 --> 00:35:46,170 Tu je prvý z našich chybových správ. 853 00:35:46,170 --> 00:35:46,570 Prečo? 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 znova, a to najmä na začiatku, budete písať vaše prvé 858 00:35:53,900 --> 00:35:56,590 program pre PSet 1 v sekciách, v úradných hodinách, a 859 00:35:56,590 --> 00:35:59,050 úprimne povedané, bude to ohromujúci niekedy to, čo tieto veci 860 00:35:59,050 --> 00:36:00,000 sú vlastne hovorí. 861 00:36:00,000 --> 00:36:01,890 Ale budete realizovať veľmi rýchlo začnú klesať 862 00:36:01,890 --> 00:36:06,120 do vedier pričom táto znamená, že ste odišiel sa od jedného 863 00:36:06,120 --> 00:36:08,290 z # obsahuje v hornej časti súboru. 864 00:36:08,290 --> 00:36:10,960 A zvonenie, kompilátor, je informovať vás o toto tým, že 865 00:36:10,960 --> 00:36:14,090 hovorí, skôr fancifully, implicitné vyhlásenie 866 00:36:14,090 --> 00:36:15,990 funkcia GetInt je neplatný. 867 00:36:15,990 --> 00:36:16,310 >> Dobrá. 868 00:36:16,310 --> 00:36:17,520 Takže čo to znamená? 869 00:36:17,520 --> 00:36:22,080 To len znamená, že ste implicitne vyhlásil GetInt v 870 00:36:22,080 --> 00:36:24,850 pocit, že ste výslovne vyhlásil to. 871 00:36:24,850 --> 00:36:27,300 Ak chcete explicitne deklarovať int, budete musieť naučiť 872 00:36:27,300 --> 00:36:28,740 Rinčať, že to existuje. 873 00:36:28,740 --> 00:36:32,020 A veľmi jednoduché riešenie pre ktoré je učiť ho 874 00:36:32,020 --> 00:36:34,780 vrátane tohto iného súboru, cs50.h, na 875 00:36:34,780 --> 00:36:35,850 hornej časti súboru. 876 00:36:35,850 --> 00:36:40,380 Vzhľadom k tomu, doslova, čo # include robí, je to povie rinčať 877 00:36:40,380 --> 00:36:44,030 skoro ísť nájsť súbor s názvom cs50.h, kopírovanie, 878 00:36:44,030 --> 00:36:48,150 vložte ho automaticky do hornej časti môjho programu pre mňa, 879 00:36:48,150 --> 00:36:50,850 a potom previesť zdrojový kód núl a jedničiek. 880 00:36:50,850 --> 00:36:52,850 Ale to by samozrejme bolo veľmi únavné, ak sa my ľudia mali 881 00:36:52,850 --> 00:36:55,370 ísť kopírovanie a vkladanie týchto veľkých súborov po celú dobu, 882 00:36:55,370 --> 00:36:58,540 takže # include len robí všetko automaticky, bez nutnosti 883 00:36:58,540 --> 00:37:01,550 kalí môj kód niekoho iného knižnice. 884 00:37:01,550 --> 00:37:06,370 A knižnica je len ďalší súbor, ktorý obsahuje funkcie a 885 00:37:06,370 --> 00:37:08,340 iné veci, ktoré niekto iný napísal, že sme 886 00:37:08,340 --> 00:37:10,270 využitie pre naše vlastné dobro. 887 00:37:10,270 --> 00:37:10,580 >> Dobrá. 888 00:37:10,580 --> 00:37:11,200 Skúsime to znova. 889 00:37:11,200 --> 00:37:12,250 Urobte 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 sa zdá, že som pracoval. 893 00:37:14,880 --> 00:37:18,330 Tak nech mi teraz beží matematiku;. / Math. 894 00:37:18,330 --> 00:37:21,100 Zadajte dáva mi číslo, 123. 895 00:37:21,100 --> 00:37:22,620 Vďaka za 123. 896 00:37:22,620 --> 00:37:24,490 Teraz sa poďme skúsiť iný rohový prípad. 897 00:37:24,490 --> 00:37:26,530 Reťazec je celkom štedrý, pretože 898 00:37:26,530 --> 00:37:27,620 reťazec môže byť čokoľvek. 899 00:37:27,620 --> 00:37:28,910 Môže vyzerať ako čísla, vyzerať 900 00:37:28,910 --> 00:37:30,600 postavy, vyzerajú ako slová. 901 00:37:30,600 --> 00:37:31,900 Ale int je int. 902 00:37:31,900 --> 00:37:34,370 Takže teraz keď som ťažký užívateľa, a to hovorí: "Daj mi 903 00:37:34,370 --> 00:37:38,730 číslo, "čo keď sa snažím urobiť niečo ako 0,1? 904 00:37:38,730 --> 00:37:41,510 No, to je číslo, a to v súlade s 905 00:37:41,510 --> 00:37:44,180 gramatika Aj tu používa, ale pod kapotou, som z 906 00:37:44,180 --> 00:37:45,610 Predmet pomocou funkcie GetInt. 907 00:37:45,610 --> 00:37:46,610 >> Tak uvidíme, čo sa stane. 908 00:37:46,610 --> 00:37:48,250 Zadajte, skúste to znova. 909 00:37:48,250 --> 00:37:48,560 Dobrá. 910 00:37:48,560 --> 00:37:50,570 Nechaj ma byť ťažké a jednoducho stlačiť Enter znova. 911 00:37:50,570 --> 00:37:51,700 Zadajte, Enter. 912 00:37:51,700 --> 00:37:53,890 Takže teraz sa zdá, že GetInt je trochu viac 913 00:37:53,890 --> 00:37:55,240 silnejšie ako GetString. 914 00:37:55,240 --> 00:37:58,540 My, zamestnanci, ktoré sa vykonáva tak, že ak sa všimnúť 915 00:37:58,540 --> 00:38:02,100 ste nám nedal int - a int je desatinné číslo 916 00:38:02,100 --> 00:38:04,785 obsahujúce nuly, tie, dvojky, trojky, štvorky, päťky, šestky, 917 00:38:04,785 --> 00:38:05,540 sedmičky, osmičky, alebo deviatky. 918 00:38:05,540 --> 00:38:06,310 A to je všetko. 919 00:38:06,310 --> 00:38:08,810 Žiadne desatinné miesta, žiadne znaky, bez interpunkčných znamienok. 920 00:38:08,810 --> 00:38:10,390 Zdá sa, že musíme spolupracovať. 921 00:38:10,390 --> 00:38:13,680 Tak skúsim štyri, päť, šesť, a to dostáva ma. 922 00:38:13,680 --> 00:38:16,760 Takže naozaj, byť análny tu, mal by som asi povedať "Daj mi 923 00:38:16,760 --> 00:38:20,310 číslo ", aby sa dopravujú k užívateľovi 924 00:38:20,310 --> 00:38:22,620 presne to, čo mám v úmysle. 925 00:38:22,620 --> 00:38:24,090 >> Teraz sa poďme zamyslieť pod kapotou. 926 00:38:24,090 --> 00:38:27,930 Nebudeme sa pozerať na to, ako je cs50.h vykonaná dnes, 927 00:38:27,930 --> 00:38:29,080 že knižnica. 928 00:38:29,080 --> 00:38:33,600 Ale či to stále hovorí opakovanie, opakovanie, opakovanie, aký programovací 929 00:38:33,600 --> 00:38:36,970 konštruovať som pravdepodobne pomocou pod pokrievku na 930 00:38:36,970 --> 00:38:39,000 implementovať, že? 931 00:38:39,000 --> 00:38:39,980 Takže len slučka, nie? 932 00:38:39,980 --> 00:38:41,930 Jedným z najjednoduchších nápadov, ktoré sme videli na Scratch. 933 00:38:41,930 --> 00:38:45,050 Forever konštrukcia, Repeat konštrukcie. 934 00:38:45,050 --> 00:38:47,320 Možno predpokladať, že v tomto programe, pod kapotou, a to aj 935 00:38:47,320 --> 00:38:49,470 keď je to napísané v C, a nie poškriabaniu, to robí 936 00:38:49,470 --> 00:38:54,300 niečo ako ekvivalent večne, ak užívateľ nemá 937 00:38:54,300 --> 00:38:58,710 napísané v celé číslo, povedzme opakovanie, opakovanie, opakovanie, opakovanie, takže 938 00:38:58,710 --> 00:39:01,220 nakoniec, keď to dostaneme celé číslo, potom 939 00:39:01,220 --> 00:39:02,970 vymaniť z tohto cyklu. 940 00:39:02,970 --> 00:39:05,610 >> Takže aké ďalšie funkcie môžeme používať tu v knižnici CS50 je? 941 00:39:05,610 --> 00:39:07,880 No,, druh zrejmých tie aspoň na základe 942 00:39:07,880 --> 00:39:09,570 dátové typy, ktoré my teraz vieme existujú. 943 00:39:09,570 --> 00:39:12,900 Zaviedli sme GetString, GetInt, ale v celej 944 00:39:12,900 --> 00:39:15,680 Prvé týždne v termíne, môžete tiež použiť GetFloat a 945 00:39:15,680 --> 00:39:18,870 GetDouble a GetLongLong aby sa presne 946 00:39:18,870 --> 00:39:20,030 dátové typy, ktoré chcete. 947 00:39:20,030 --> 00:39:24,030 Vzhľadom k tomu, kľúč detail je, že na rozdiel od niektorých jazykoch, 948 00:39:24,030 --> 00:39:26,630 ako je Python a Ruby, kde nemusíte nutne musieť 949 00:39:26,630 --> 00:39:29,730 vyhlásil dátový typ premennej - 950 00:39:29,730 --> 00:39:32,390 nemusíte hovoriť počítač, aký druh vecí 951 00:39:32,390 --> 00:39:34,000 budete dať do premennej - 952 00:39:34,000 --> 00:39:36,640 v C, musíte byť vždy tak presné. 953 00:39:36,640 --> 00:39:40,060 Takže ak chcete premennú s názvom n, kus skladovanie 954 00:39:40,060 --> 00:39:42,900 že v tomto prípade sa stane, že 32 bitov podľa konvencie, môžete 955 00:39:42,900 --> 00:39:45,660 musím povedať počítač, že tieto kúsky sú 956 00:39:45,660 --> 00:39:47,840 bude pre uloženie čísla - 957 00:39:47,840 --> 00:39:50,630 nie je postava, nie reťazec, nie float. 958 00:39:50,630 --> 00:39:52,620 A to rieši problém sme efektívne 959 00:39:52,620 --> 00:39:53,760 bežal do minulého týždňa. 960 00:39:53,760 --> 00:39:57,050 Ak sme pomocou núl a jedničiek čísla predstavujú nielen 961 00:39:57,050 --> 00:40:00,770 čísla, ale AS a BS a Cs, ako vo svete, je 962 00:40:00,770 --> 00:40:03,460 Počítač bude vedieť, že tento vzor bitov v skutočnosti má 963 00:40:03,460 --> 00:40:07,650 predstavuje číslo 65, na rozdiel od reprezentovať 964 00:40:07,650 --> 00:40:09,860 písmeno, ktoré náhodne, podľa 965 00:40:09,860 --> 00:40:13,440 ASCII, spomínam, bol ekvivalentný k 65? 966 00:40:13,440 --> 00:40:16,550 >> Takže tieto dátové typy poskytovať kontext k počítaču, takže 967 00:40:16,550 --> 00:40:18,810 že nevie, či sa tieto bity sa má vykladať v tom 968 00:40:18,810 --> 00:40:23,660 int alebo ako reťazec. 969 00:40:23,660 --> 00:40:26,500 Akékoľvek otázky, potom 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 Ak vezmeme z stdio.h, uložíme súbor - 973 00:40:39,140 --> 00:40:44,360 dovoľte mi, aby som šiel do okna terminálu a spustite make matematiky, zoom 974 00:40:44,360 --> 00:40:45,530 a zadať - 975 00:40:45,530 --> 00:40:47,700 teraz som si rôzne chyby, pretože som implicitne 976 00:40:47,700 --> 00:40:49,650 prehlasuje, akú funkciu teraz? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Takže teraz som vytvoril nový problém, ktorého riešenie je 979 00:40:52,970 --> 00:40:53,890 v podstate rovnaké. 980 00:40:53,890 --> 00:40:55,365 Musím to dať späť. 981 00:40:55,365 --> 00:40:56,615 PUBLIKUM: [Nepočuteľné] 982 00:41:03,534 --> 00:41:04,030 DAVID J. Malan: Oh. 983 00:41:04,030 --> 00:41:04,850 Takže keď to vezmem z - 984 00:41:04,850 --> 00:41:05,360 Dobre, jo. 985 00:41:05,360 --> 00:41:08,960 Takže keď som odstrániť štandardné I / O knižnice začlenenie do 986 00:41:08,960 --> 00:41:12,020 tu, a potom hovoríš, že keď som sa zbaviť printf, sa 987 00:41:12,020 --> 00:41:13,450 zbaviť printf? 988 00:41:13,450 --> 00:41:13,810 Áno. 989 00:41:13,810 --> 00:41:18,450 To by malo fungovať, pretože som už s použitím ktoréhokoľvek - POZOR. 990 00:41:18,450 --> 00:41:20,110 Už som len tak ležať? 991 00:41:20,110 --> 00:41:21,650 Oh, dobre. 992 00:41:21,650 --> 00:41:25,640 To nebude fungovať, pretože o novom chybe, ktorú práve zavádza. 993 00:41:25,640 --> 00:41:28,390 A toto je trochu viac intuitívne. 994 00:41:28,390 --> 00:41:29,440 >> V čom 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 táto chyba je výsledkom nášho prevedenie konfigurácie 997 00:41:34,040 --> 00:41:36,640 Prístroj byť obzvlášť pedantská, naozaj zakričať 998 00:41:36,640 --> 00:41:39,060 si pre každú možnú chybu, aj keď je to trochu 999 00:41:39,060 --> 00:41:41,950 non-fatálna chyba takhle - je to naozaj tak veľký 1000 00:41:41,950 --> 00:41:44,820 zaoberať, že som pridelil int, dať číslo v nej, a potom 1001 00:41:44,820 --> 00:41:46,030 len robil nič s tým? 1002 00:41:46,030 --> 00:41:47,020 Takže funkčne, no. 1003 00:41:47,020 --> 00:41:50,410 To nie je rozbije program. 1004 00:41:50,410 --> 00:41:51,490 Je to len trochu hlúpe, nie? 1005 00:41:51,490 --> 00:41:54,220 Žiadne hodnoty na ktoré požiadali o zmenu tejto číslo, uložené 1006 00:41:54,220 --> 00:41:56,370 to v premennej, ak ste nikdy robiť nič 1007 00:41:56,370 --> 00:41:58,000 s tým, nech ju vytlačiť alebo uložiť. 1008 00:41:58,000 --> 00:42:00,270 Takže v tomto prípade, zvonenie pripúšťania toľko, a 1009 00:42:00,270 --> 00:42:02,010 to hovorí nepoužívané premennej n 1010 00:42:02,010 --> 00:42:05,380 >> Tak sme to spravit, ak skutočne chceme. 1011 00:42:05,380 --> 00:42:07,250 Ale znovu, to nie je dobré programovacie teraz. 1012 00:42:07,250 --> 00:42:09,310 Takže som mohol len urobiť - 1013 00:42:09,310 --> 00:42:12,060 ísť sem, dovoľte mi, aby som ich vymazať obrazovku, aby matematiku. 1014 00:42:12,060 --> 00:42:13,090 To funguje. 1015 00:42:13,090 --> 00:42:18,110 Teraz som si spustiť môj matematický program, vezme vstup - 1016 00:42:18,110 --> 00:42:18,700 dobre, to bolo zlé. 1017 00:42:18,700 --> 00:42:23,450 Berie vstup, a že je všetko robí, v tomto prípade. 1018 00:42:23,450 --> 00:42:25,220 >> Takže vlastne, poďme skúsiť ešte jeden rohový prípad, že by sme 1019 00:42:25,220 --> 00:42:26,300 nemyslel skôr. 1020 00:42:26,300 --> 00:42:28,220 V tomto prípade - tu, poďme späť k tej, ktorá je 1021 00:42:28,220 --> 00:42:29,500 trochu viac užívateľsky príjemný. 1022 00:42:29,500 --> 00:42:32,580 Nechaj ma ísť sem a spustite make matematiku znova. 1023 00:42:32,580 --> 00:42:34,190 Jejda, čo som urobil zle? 1024 00:42:34,190 --> 00:42:35,400 Musím vrátiť späť ďalšie. 1025 00:42:35,400 --> 00:42:36,390 Dobre. 1026 00:42:36,390 --> 00:42:38,490 Teraz sme späť v pôvodnom stave, kde všetci 1027 00:42:38,490 --> 00:42:39,990 je snáď dobre. 1028 00:42:39,990 --> 00:42:43,360 A teraz, keď spustím matematiku, 123 Zdá sa, že funguje. 1029 00:42:43,360 --> 00:42:46,010 Ale to nie je naozaj efektívny dôkaz, len povedať 1030 00:42:46,010 --> 00:42:47,930 v poriadku, že funguje. 1031 00:42:47,930 --> 00:42:49,120 789, ktorá funguje. 1032 00:42:49,120 --> 00:42:50,100 Lehota na podanie. 1033 00:42:50,100 --> 00:42:51,870 Pretože tam je ďalší roh prípady tu. 1034 00:42:51,870 --> 00:42:55,040 Reťazec sa naozaj nám veľa problémy zadaním 1035 00:42:55,040 --> 00:42:56,510 množstvo postáv. 1036 00:42:56,510 --> 00:42:59,580 Ale čo keď píšem v tomto? 1037 00:42:59,580 --> 00:43:04,850 Biť číslo 1 oveľa, oveľa tu - 1038 00:43:04,850 --> 00:43:06,300 v poriadku, je to stále trochu nudné, tak budem 1039 00:43:06,300 --> 00:43:10,040 zastaviť tu, a budem stlačte Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Čo sa to sakra stalo? 1041 00:43:14,110 --> 00:43:17,680 Takže to môže byť v skutočnosti vysvetliť. 1042 00:43:17,680 --> 00:43:18,920 Tak sa to brať ako binárny? 1043 00:43:18,920 --> 00:43:21,130 Dobrá myšlienka, ale nie, to nie je fakt, že to vzal 1044 00:43:21,130 --> 00:43:22,815 ako binárny, pretože to naozaj, to bolo tak nejako 1045 00:43:22,815 --> 00:43:23,080 náhoda. 1046 00:43:23,080 --> 00:43:23,930 Môžeme to urobiť znova. 1047 00:43:23,930 --> 00:43:26,530 Takže tam je č 2 v binárnom systéme, ktorý je 1048 00:43:26,530 --> 00:43:27,420 asi dosť rovnako. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Takže to nebol problém. 1051 00:43:30,140 --> 00:43:31,390 Čo ešte? 1052 00:43:34,650 --> 00:43:35,400 Exactly. 1053 00:43:35,400 --> 00:43:37,830 >> Takže myslíte, že späť na to, čo int vlastne je. 1054 00:43:37,830 --> 00:43:40,970 Je to 32 bitov, ktoré dohromady sú interpretované 1055 00:43:40,970 --> 00:43:42,090 ako číslo. 1056 00:43:42,090 --> 00:43:44,730 Ak sa majú 32 bitov, to znamená, že každý z kúskov môže byť 1057 00:43:44,730 --> 00:43:46,690 0 alebo 1, 0 alebo 1. 1058 00:43:46,690 --> 00:43:49,090 Takže to znamená, že sú dve možnosti pre tento kúsok, 1059 00:43:49,090 --> 00:43:51,140 dve možnosti pre to, dve možnosti pre 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 sily je celkový počet 1062 00:43:55,480 --> 00:43:58,960 permutácie núl a jedničiek, ak máte 32 1063 00:43:58,960 --> 00:44:01,400 Zástupné symboly, nuly alebo jednotky, pred vami. 1064 00:44:01,400 --> 00:44:04,250 Takže ak som 2 na 32, matematicky, to je to čo? 1065 00:44:07,080 --> 00:44:07,840 Takže je to veľa. 1066 00:44:07,840 --> 00:44:09,910 Je to 4 miliardy eur, dávať alebo brať. 1067 00:44:09,910 --> 00:44:13,510 A 4000000000 nezdá byť tým, čím bola vytlačená tu. 1068 00:44:13,510 --> 00:44:16,290 V skutočnosti, to vyzerá bližšie k 2000000000. 1069 00:44:16,290 --> 00:44:17,970 Ale to nie je náhoda. 1070 00:44:17,970 --> 00:44:21,590 Skutočnosť, že je počítač nesprávne vyložila moje obrovské množstvo, 1071 00:44:21,590 --> 00:44:24,260 môj obrovský postupnosť jedničiek a potom môj obrovský sled dvojky, 1072 00:44:24,260 --> 00:44:26,880 ako približne 2 miliardy USD, je vysvetlené, ako? 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 určite maximálna hodnota, ktorú možno reprezentovať. 1075 00:44:34,970 --> 00:44:36,370 Ale je to zvyčajne 4 mld Sk, nie? 1076 00:44:36,370 --> 00:44:39,100 Ak 2 na 32 je zhruba 4 miliardy, ktoré sa javí ako 1077 00:44:39,100 --> 00:44:40,350 že je to najväčší počet. 1078 00:44:42,420 --> 00:44:45,240 Takže nie je zvyšok, ale dobrá myšlienka. 1079 00:44:45,240 --> 00:44:46,340 Záporné čísla. 1080 00:44:46,340 --> 00:44:49,570 Takže ak máte 4 miliardy možných vecí, ktoré môžete 1081 00:44:49,570 --> 00:44:52,970 predstavujú s týmito rôznych obmenách po 32 0s a 1082 00:44:52,970 --> 00:44:55,600 1s, dobre, to dá rozum, že my ľudia by mohli chcieť 1083 00:44:55,600 --> 00:44:57,110 predstavujú nielen pozitívne 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 skutočne, že je predpoklad, že C je. 1086 00:45:00,410 --> 00:45:03,550 Takže s 32 bitmi, môžete reprezentujú približne negatívne 2 1087 00:45:03,550 --> 00:45:06,630 miliárd celú cestu až k pozitívnemu 2000000000. 1088 00:45:06,630 --> 00:45:08,750 A tak v tomto prípade to, čo sme naozaj svedkami, je len 1089 00:45:08,750 --> 00:45:13,600 Fringe kapacity našej integer, a my máme, tak 1090 00:45:13,600 --> 00:45:15,860 hovoriť, vyliala celé číslo. 1091 00:45:15,860 --> 00:45:19,180 Snažili sme sa napchať viac bitov do neho, než vojde. 1092 00:45:19,180 --> 00:45:22,960 Takže konečný výsledok je, že sme v podstate majú všetky bity 1. 1093 00:45:22,960 --> 00:45:25,280 Sme prevrátil všetky naše bitov na, sme sa snažili reprezentovať 1094 00:45:25,280 --> 00:45:27,630 najväčšie možné množstvo, ale to zjavne nie je zďaleka 1095 00:45:27,630 --> 00:45:30,960 dostatočne veľké, aby reprezentovať dve veci, ktoré som práve zadanej a 1096 00:45:30,960 --> 00:45:31,730 Jo? 1097 00:45:31,730 --> 00:45:32,980 PUBLIKUM: [Nepočuteľné] 1098 00:45:37,230 --> 00:45:37,830 >> DAVID J. Malan: Dobrá otázka. 1099 00:45:37,830 --> 00:45:40,080 Prečo jednoducho nemôžeme predstavovať, že negatívne 1100 00:45:40,080 --> 00:45:41,500 prihlásiť len ako znak? 1101 00:45:41,500 --> 00:45:44,200 Tak sme absolútne mohli, a tak by sme mohli uložiť 1102 00:45:44,200 --> 00:45:45,470 ďalšie bit. 1103 00:45:45,470 --> 00:45:49,100 Ale ste stále bude musieť zastupovať túto pomlčku, a 1104 00:45:49,100 --> 00:45:50,700 že to bude stáť aspoň niečo, 1105 00:45:50,700 --> 00:45:52,220 pravdepodobne trochu. 1106 00:45:52,220 --> 00:45:55,610 Takže áno, mohli by sme mať 32 bitov použitých pre naše číslo, ale teraz 1107 00:45:55,610 --> 00:45:57,610 potrebujeme ďalšie trochu používané pre našu pomlčkou 1108 00:45:57,610 --> 00:45:58,810 symbol, znamienko mínus. 1109 00:45:58,810 --> 00:46:01,470 Takže teraz máme 33-bitové hodnoty, ktoré by sme mohli robiť, ale je to 1110 00:46:01,470 --> 00:46:02,570 len nie tak, ako to urobil. 1111 00:46:02,570 --> 00:46:05,140 Urobili sme rozhodnutie volanie rokmi, 32 bitov je trochu 1112 00:46:05,140 --> 00:46:06,170 merná jednotka tu. 1113 00:46:06,170 --> 00:46:08,120 Takže budeme používať jeden z týchto bitov účinne 1114 00:46:08,120 --> 00:46:12,950 predstavujú negativitu, a 31 bitov na reprezentáciu čísla. 1115 00:46:12,950 --> 00:46:15,550 Ďalšie otázky? 1116 00:46:15,550 --> 00:46:15,670 Dobrá. 1117 00:46:15,670 --> 00:46:16,030 To je veľa. 1118 00:46:16,030 --> 00:46:17,930 Prečo nejdeme dopredu a vziať naše päťminútovú prestávku tu? 1119 00:46:23,580 --> 00:46:24,270 >> Dobrá. 1120 00:46:24,270 --> 00:46:31,250 Takže znova, nie preceňovať matematické aplikácie 1121 00:46:31,250 --> 00:46:33,840 programovanie, poďme len utrhnúť z tohto jeden príklad 1122 00:46:33,840 --> 00:46:36,590 predtým, než sme sa presťahovať do iných konštruktov, práve preto, že 1123 00:46:36,590 --> 00:46:39,430 bude ilustrovať niekoľko spoločných potkýnal bodov na niektoré z 1124 00:46:39,430 --> 00:46:41,520 základy, pokiaľ ide o písanie programov. 1125 00:46:41,520 --> 00:46:44,360 V tomto prípade, robí aritmetické výrazy, ktoré majú niektoré 1126 00:46:44,360 --> 00:46:48,010 zaujímavé význam pre syntax. 1127 00:46:48,010 --> 00:46:50,430 >> Takže je to len formula, s ktorými sa môžeme previesť 1128 00:46:50,430 --> 00:46:52,690 teploty zo stupňov Fahrenheita na stupne Celzia. 1129 00:46:52,690 --> 00:46:54,600 Ak nechcete spomenúť, je to len vzorec. 1130 00:46:54,600 --> 00:46:58,870 Takže ak sa pripojiť Celzia hodnote 32 stupňov, čo je 1131 00:46:58,870 --> 00:47:02,850 zmrazenie, že to bude 32 mínus 32 je 0, a naozaj, 1132 00:47:02,850 --> 00:47:05,130 0 v stupňoch Celzia je tiež zmrazenie. 1133 00:47:05,130 --> 00:47:08,210 Tak rýchle sanity check tam - to je známa rovnica. 1134 00:47:08,210 --> 00:47:10,880 Nechaj ma ísť sa k zariadeniu, aj keď, a začať 1135 00:47:10,880 --> 00:47:13,920 písanie s názvom programu, rovnako ako, 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 tu, idem začať s # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, a ja budem robiť int main (void), a 1139 00:47:22,190 --> 00:47:24,680 znova, budeme vracať aj v budúcnosti, aby to, čo int znamená 1140 00:47:24,680 --> 00:47:26,820 tam a čo void znamená, že. 1141 00:47:26,820 --> 00:47:28,770 A teraz mi dovoľte pokračovať a realizovať program, ktorý 1142 00:47:28,770 --> 00:47:31,170 v podstate robí tento prevod pre nás. 1143 00:47:31,170 --> 00:47:36,830 >> Takže printf, povedzme, teplota v stupňoch Fahrenheita. 1144 00:47:36,830 --> 00:47:40,140 A potom ma nechaj ísť dopredu a získať hodnotu od užívateľa. 1145 00:47:40,140 --> 00:47:43,120 Aké hodnoty by som mal dostať od užívateľa, ak chcem 1146 00:47:43,120 --> 00:47:45,620 je, aby mi teplotu v stupňoch Fahrenheita? 1147 00:47:45,620 --> 00:47:48,090 Jo? 1148 00:47:48,090 --> 00:47:50,090 Čo by ste navrhoval? 1149 00:47:50,090 --> 00:47:50,410 Jo. 1150 00:47:50,410 --> 00:47:51,960 Takže float cíti celkom rozumné. 1151 00:47:51,960 --> 00:47:53,950 Máme opäť len málo možností, že 1152 00:47:53,950 --> 00:47:55,310 sme videli doteraz. 1153 00:47:55,310 --> 00:48:00,100 Máme veci, ako 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íti celkom rozumné. 1156 00:48:03,510 --> 00:48:06,340 Môžeme použiť dvojaký, právo, pretože ak skutočne chceme, aby 1157 00:48:06,340 --> 00:48:07,580 predstavujú ľudskú teplotu - 1158 00:48:07,580 --> 00:48:10,730 98.60000 - 1159 00:48:10,730 --> 00:48:12,990 môžeme použiť 64 bitov na to, že, ale to vyzerá 1160 00:48:12,990 --> 00:48:14,200 prezbrojenie na teplote. 1161 00:48:14,200 --> 00:48:16,380 Tak poďme s plavákom. 1162 00:48:16,380 --> 00:48:18,100 Teraz potrebujem premennú. 1163 00:48:18,100 --> 00:48:20,500 Len, aby to jednoduché, budem hovoriť, že f, ale ja 1164 00:48:20,500 --> 00:48:23,370 mohol len ako správne nazývať to teplota, 1165 00:48:23,370 --> 00:48:24,600 ale buď je v poriadku. 1166 00:48:24,600 --> 00:48:27,610 Takže float f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Akonáhle som sa teraz sa rozhodli používať GetFloat, keď som 1168 00:48:30,220 --> 00:48:33,340 treba urobiť 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 , inak kompilátor 1171 00:48:37,460 --> 00:48:39,000 bude kričať na nás. 1172 00:48:39,000 --> 00:48:41,720 Teraz, keď mám float, nechajte ma ísť dopredu a robiť 1173 00:48:41,720 --> 00:48:42,460 konverzie. 1174 00:48:42,460 --> 00:48:44,980 >> Takže prvé, dovoľte mi, aby som tiež dostať do zvyk tu o 1175 00:48:44,980 --> 00:48:46,310 komentovať môj kód. 1176 00:48:46,310 --> 00:48:49,820 Takže znova, komentár je len zápis na človeka, ktorý je 1177 00:48:49,820 --> 00:48:52,600 nie je súčasťou programu na sebe, ale to jeden, pomáha 1178 00:48:52,600 --> 00:48:55,010 pochopiť, čo si urobil ráno, alebo ďalšie 1179 00:48:55,010 --> 00:48:57,570 mesiac, pomáha vaše vyučovanie človek pochopiť, čo si urobil 1180 00:48:57,570 --> 00:48:59,230 alebo čo ste chceli robiť, tak je to 1181 00:48:59,230 --> 00:49:00,950 všeobecne veľmi dobrá prax. 1182 00:49:00,950 --> 00:49:02,940 Každých pár riadkov kódu, napísať komentár k 1183 00:49:02,940 --> 00:49:04,490 sami, alebo váš kolega. 1184 00:49:04,490 --> 00:49:08,460 Tak tu, budem hovoriť, "Opýtajte sa užívateľa na teplotu." 1185 00:49:08,460 --> 00:49:10,890 Nemusí to byť kompletná veta, len krátka fráza. 1186 00:49:10,890 --> 00:49:14,270 Ale myšlienka komentovanie v C je, že každý z vašich 1187 00:49:14,270 --> 00:49:17,980 komentáre by mali posilniť vás - alebo, povedzme, TF alebo kolegu - 1188 00:49:17,980 --> 00:49:21,290 zbierať svoj program a presne vedieť, čo to robí, tým, že 1189 00:49:21,290 --> 00:49:24,650 toľko čítanie kódu, ale čítanie pripomienky, ktoré 1190 00:49:24,650 --> 00:49:26,220 by mali byť stručné a jasné. 1191 00:49:26,220 --> 00:49:29,030 Dobre, takže teraz ma nechaj ísť ďalej a povedať, "Previesť 1192 00:49:29,030 --> 00:49:32,660 Fahrenheit na stupne Celzia. "Takže budem pokračovať, a to, 1193 00:49:32,660 --> 00:49:34,340 povedzme, float c 1194 00:49:34,340 --> 00:49:36,610 Budeme Celzia ako hodnota s plávajúcou čiarkou. 1195 00:49:36,610 --> 00:49:37,630 >> A dovoľte mi, aby som sa bodnúť sa na toto. 1196 00:49:37,630 --> 00:49:40,350 Vzorec je opäť tu. 1197 00:49:40,350 --> 00:49:45,510 Ako 5/9 krát F mínus 32. 1198 00:49:45,510 --> 00:49:46,360 Takže ideme na to. 1199 00:49:46,360 --> 00:49:50,450 Takže 5 delené 9, mínus - 1200 00:49:50,450 --> 00:49:52,330 jejda, som 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 mínus 32. 1203 00:49:56,550 --> 00:49:59,650 Takže F mínus 32, bodkočiarku. 1204 00:49:59,650 --> 00:50:02,000 A teraz, tu dole, budem pokračovať 1205 00:50:02,000 --> 00:50:03,220 a hovoria, vytlačte výsledok. 1206 00:50:03,220 --> 00:50:05,160 A táto časť je ľahká. Printf. 1207 00:50:05,160 --> 00:50:07,980 Ako mám ísť o tlači to? 1208 00:50:07,980 --> 00:50:16,890 No, mohol by som povedať "Toto číslo v stupňoch Celzia je% f \ n", 1209 00:50:16,890 --> 00:50:18,060 len pre niektoré estetiku. 1210 00:50:18,060 --> 00:50:20,450 A potom to, čo hodnota sa chcem pripojiť tu printf je 1211 00:50:20,450 --> 00:50:21,360 Druhý argument? 1212 00:50:21,360 --> 00:50:21,650 Dobre. 1213 00:50:21,650 --> 00:50:22,540 Takže len c 1214 00:50:22,540 --> 00:50:24,760 Takže začneme s tým a potom už len vrátiť 0. 1215 00:50:24,760 --> 00:50:25,960 Opäť, to nemá nič spoločné s matematikou. 1216 00:50:25,960 --> 00:50:27,610 To len znamená, že je všetko v poriadku. 1217 00:50:27,610 --> 00:50:31,210 >> Teraz, je to správne, tento program? 1218 00:50:31,210 --> 00:50:31,520 Dobrá. 1219 00:50:31,520 --> 00:50:33,630 Tak som urobil nejaké chyby. 1220 00:50:33,630 --> 00:50:35,980 Aj keď nemáte tušenie, čo programovací ich môžete triediť 1221 00:50:35,980 --> 00:50:37,120 chrbta toho vyvodzujú na základnej škole, čo 1222 00:50:37,120 --> 00:50:38,740 chyby tu môže byť. 1223 00:50:38,740 --> 00:50:40,050 Čo je to jeden z prvých? 1224 00:50:40,050 --> 00:50:41,256 PUBLIKUM: [Nepočuteľné] 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 chýba zátvorky. 1227 00:50:42,940 --> 00:50:45,420 Bolo to zámerné, že som zátvorky v keynote 1228 00:50:45,420 --> 00:50:48,130 posuňte tu, pretože je to vlastne tento pojem objednávky 1229 00:50:48,130 --> 00:50:51,590 operácií, alebo priorita, pričom niektoré operácie - 1230 00:50:51,590 --> 00:50:52,890 násobenie - 1231 00:50:52,890 --> 00:50:56,000 majú vyššiu záväzné, majú vyššiu prioritu, ako veci 1232 00:50:56,000 --> 00:50:58,050 ako sčítanie alebo odčítanie. 1233 00:50:58,050 --> 00:51:00,550 Takže sme urobili to pre rokov len aby bolo jasné, presne 1234 00:51:00,550 --> 00:51:02,840 čo matematická operácia by mala byť vykonaná ako prvý. 1235 00:51:02,840 --> 00:51:05,010 Tak som mal asi napodobňovať presne to. 1236 00:51:05,010 --> 00:51:08,990 V opačnom prípade, je počítač pravdepodobne bude snažiť robiť 1237 00:51:08,990 --> 00:51:13,090 niečo ako predel 5 od 9, potom násobiť F, potom odčítajte 1238 00:51:13,090 --> 00:51:14,850 32 z celej veci. 1239 00:51:14,850 --> 00:51:16,480 Čo nie je, v skutočnosti to, čo chceme robiť. 1240 00:51:16,480 --> 00:51:17,340 Tak poďme parenthesize. 1241 00:51:17,340 --> 00:51:20,860 Poďme pridať svoje zátvorky tu, zátvorky tu. 1242 00:51:20,860 --> 00:51:22,670 Poďme si tohle sem. 1243 00:51:22,670 --> 00:51:25,130 Tu, som si všimol ďalšie chybu som urobil po ceste. 1244 00:51:25,130 --> 00:51:25,680 Jo? 1245 00:51:25,680 --> 00:51:26,930 PUBLIKUM: [Nepočuteľné] 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 sme vlastne mať rovnakú celé číslo 1249 00:51:32,400 --> 00:51:34,020 Divízie vydanie z pred. 1250 00:51:34,020 --> 00:51:35,800 Aj opraviť, že sa pozrieme, čo sa tento príznak. 1251 00:51:35,800 --> 00:51:36,990 Ale budeme musieť správnemu 1252 00:51:36,990 --> 00:51:37,680 ďalšie chyba tu. 1253 00:51:37,680 --> 00:51:38,015 Jo? 1254 00:51:38,015 --> 00:51:39,540 PUBLIKUM: [Nepočuteľné] 1255 00:51:39,540 --> 00:51:40,070 DAVID J. Malan: Áno. 1256 00:51:40,070 --> 00:51:43,130 Takže, hlúpa chyba som, ale nesmierne dôležité. 1257 00:51:43,130 --> 00:51:45,870 Počítač nebude len prižmúriť oči a nechajte 1258 00:51:45,870 --> 00:51:48,770 mi použiť kapitálu F, keď som vlastne deklaroval premennú 1259 00:51:48,770 --> 00:51:51,360 ako malá f tu, v súlade 8. 1260 00:51:51,360 --> 00:51:54,470 Tak som potrebné opraviť v riadku 11 mi kapitalizácie, ktorá 1261 00:51:54,470 --> 00:51:56,820 Pred chvíľou bol kapitál F omylom. 1262 00:51:56,820 --> 00:51:57,610 Čo tu? 1263 00:51:57,610 --> 00:51:59,980 Malo by to byť malými písmenami, ako dobre? 1264 00:51:59,980 --> 00:52:02,260 Malo by byť, ale to je náhoda. 1265 00:52:02,260 --> 00:52:05,070 To% f nemá nič spoločného s premennou. 1266 00:52:05,070 --> 00:52:07,980 Takže len pre super clear tu, nechajte ma ísť napred a 1267 00:52:07,980 --> 00:52:10,710 premenovať, krátko, "teplotu." Dovoľte mi, aby som premenovať 1268 00:52:10,710 --> 00:52:15,050 Tento "teploty." Dovoľte mi, aby som to premenujete. 1269 00:52:15,050 --> 00:52:18,180 Pretože, znovu,% f globálne znamená, "plávajúce bodovú hodnotu." 1270 00:52:18,180 --> 00:52:19,950 Nemá nič spoločné s mojím premenné. 1271 00:52:19,950 --> 00:52:23,080 Ale "teploty" všade možne je len trochu rozvláčny, 1272 00:52:23,080 --> 00:52:25,370 takže som ísť späť do môjho malého "f" s 1273 00:52:25,370 --> 00:52:27,890 >> Teraz mi dovoľte, aby som do toho do môjho okna tu. 1274 00:52:27,890 --> 00:52:29,190 Značka f2c - 1275 00:52:29,190 --> 00:52:31,200 ktorý bol opäť, ľubovoľný názov I 1276 00:52:31,200 --> 00:52:32,590 dal k tomuto súboru. 1277 00:52:32,590 --> 00:52:33,690 Zdá sa, že zostavujú. 1278 00:52:33,690 --> 00:52:35,080 Dovoľte mi, aby som bežať f2c. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Teplota v stupňoch Fahrenheita - poďme urobiť jednoduchý jeden. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, opraviť. 1283 00:52:40,910 --> 00:52:45,910 Ale, keď som teraz urobiť 212 na varenie - 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, jasne nie je správne, ak vaše TF pokúsi 1287 00:52:50,780 --> 00:52:51,800 najmenej dve hodnoty. 1288 00:52:51,800 --> 00:52:53,340 Tak v čom je problém tu? 1289 00:52:53,340 --> 00:52:55,970 No, už si prstom na to, čo je problém. 1290 00:52:55,970 --> 00:52:57,600 Ale prečo je to, že v prípade,? 1291 00:52:57,600 --> 00:53:00,630 Až tu, keď robím matematiku 5 deleno 9. 1292 00:53:00,630 --> 00:53:02,190 Takže koncepčne, je to úplne správny. 1293 00:53:02,190 --> 00:53:03,690 Úplne v súlade so vzorcom. 1294 00:53:03,690 --> 00:53:05,940 Ale iba počítačov robiť presne to, čo ste 1295 00:53:05,940 --> 00:53:06,760 povedz im robiť. 1296 00:53:06,760 --> 00:53:08,940 A to, čo sme skutočne hovoriť počítač je tu 1297 00:53:08,940 --> 00:53:12,320 rozdeliť celé číslo 5 v celej číslo 9 1298 00:53:12,320 --> 00:53:13,670 a daj mi výsledok. 1299 00:53:13,670 --> 00:53:16,230 Problém ale je, keď nemáte divízie použitím údajov 1300 00:53:16,230 --> 00:53:20,220 Typy, výstup je rovnaký typ dát ako vstupy. 1301 00:53:20,220 --> 00:53:23,670 A tak ak dva vstupy sú obaja ints, výstup bude 1302 00:53:23,670 --> 00:53:25,110 byť int. 1303 00:53:25,110 --> 00:53:28,770 A tak 5 deleno 9 je bod niečo. 1304 00:53:28,770 --> 00:53:32,320 Ale čo je najbližšie celé číslo na niečo? 1305 00:53:32,320 --> 00:53:33,630 Takže, je to vlastne 0. 1306 00:53:33,630 --> 00:53:36,620 Tak ako sme sa bavili v pondelok, všetko, čo po desatinné 1307 00:53:36,620 --> 00:53:37,940 bod dostane skrátené. 1308 00:53:37,940 --> 00:53:39,495 Je to jednoducho dostane vyhodiť. 1309 00:53:39,495 --> 00:53:42,760 Tak to je úplný omyl, pretože som mohol rovnako dobre 1310 00:53:42,760 --> 00:53:44,700 vynásobte všetko 0 tu. 1311 00:53:44,700 --> 00:53:46,550 >> Teraz, to môžem opraviť v niekoľkými spôsobmi. 1312 00:53:46,550 --> 00:53:48,080 Mohol by som to urobiť. 1313 00:53:48,080 --> 00:53:50,490 5,0 delené 9.0. 1314 00:53:50,490 --> 00:53:52,110 Technicky, som ani nemusíte robiť. 1315 00:53:52,110 --> 00:53:55,780 To sa stačí len, aby jedno z čísel float - 1316 00:53:55,780 --> 00:53:58,290 alebo dvojité - tým, že desatinnú čiarku tu. 1317 00:53:58,290 --> 00:54:01,740 Vzhľadom k tomu, čo sa teraz stane, je pri delení celé číslo od 1318 00:54:01,740 --> 00:54:04,670 float, alebo double, počítač to bude realizovať 1319 00:54:04,670 --> 00:54:06,830 oh, jedným z nich je presnejšie. 1320 00:54:06,830 --> 00:54:09,420 Dovoľte mi, aby som chybovať na strane dáva vám väčšiu presnosť ako 1321 00:54:09,420 --> 00:54:10,310 ste zamýšľali. 1322 00:54:10,310 --> 00:54:12,700 Tak to bude previesť výsledok - 1323 00:54:12,700 --> 00:54:16,240 vráti výsledok ako desatinné hodnoty, ako. 1324 00:54:16,240 --> 00:54:17,330 Tak to bude fungovať. 1325 00:54:17,330 --> 00:54:18,060 To bude fungovať. 1326 00:54:18,060 --> 00:54:20,010 A je tu ešte jedna mechanizmus, ktorý uvidíme v 1327 00:54:20,010 --> 00:54:21,390 väčší detail budúci týždeň. 1328 00:54:21,390 --> 00:54:24,690 Môžete si skutočne, ako programátor, povedzte počítač 1329 00:54:24,690 --> 00:54:27,930 skutočne liečiť jeden dátový typ ako 1330 00:54:27,930 --> 00:54:29,260 by to bolo iné. 1331 00:54:29,260 --> 00:54:30,990 >> Takže som mohol skutočne urobiť. 1332 00:54:30,990 --> 00:54:35,280 V zátvorke, môžem povedať niečo podobné (float), otvorený 1333 00:54:35,280 --> 00:54:36,350 parenie, úzkym párenie. 1334 00:54:36,350 --> 00:54:39,050 A to je to, čo sa nazýva "liatie". Opäť, viac 1335 00:54:39,050 --> 00:54:39,940 na tomto budúci týždeň. 1336 00:54:39,940 --> 00:54:42,280 Ale to je len programový spôsob rozprávania 1337 00:54:42,280 --> 00:54:45,910 počítač, jo ja viem, 9 je celé číslo alebo dlhé. 1338 00:54:45,910 --> 00:54:47,700 Ja viem, že to nie je hodnota s plávajúcou čiarkou. 1339 00:54:47,700 --> 00:54:49,420 Ale zoberte to ako taký rovnako. 1340 00:54:49,420 --> 00:54:52,000 Takže na obsadenie dátový typ znamená previesť 1341 00:54:52,000 --> 00:54:53,310 od jedného k druhému. 1342 00:54:53,310 --> 00:54:55,790 Úprimne povedané, je to len trochu škaredý, takže navrhujem, ideme 1343 00:54:55,790 --> 00:54:58,830 späť na pôvodný návrh len konverzie 1344 00:54:58,830 --> 00:55:00,770 aby sa tieto veci plávajúcou desatinnou čiarkou hodnoty ručne. 1345 00:55:00,770 --> 00:55:02,890 Pretože teraz je to proste super jasné, čo sa deje, a 1346 00:55:02,890 --> 00:55:04,280 to nie je všetko, že rušivo. 1347 00:55:04,280 --> 00:55:06,710 >> Takže poďme sa teraz vrátiť do svojho terminálovom okne. 1348 00:55:06,710 --> 00:55:07,990 Urobte F2C. 1349 00:55:07,990 --> 00:55:09,430 Nechaj ma ísť napred a spustiť tento. 1350 00:55:09,430 --> 00:55:12,340 A ako stranou, vás nudiť písania týchto príkazov 1351 00:55:12,340 --> 00:55:14,910 znovu a znovu, si uvedomiť, že počítače, ako je Linux tu, 1352 00:55:14,910 --> 00:55:16,010 majú tendenciu byť dosť chytrý. 1353 00:55:16,010 --> 00:55:18,890 A ak som narazila Up, môžeme ísť cez môj celej histórii 1354 00:55:18,890 --> 00:55:20,380 príkazy, hore a dole. 1355 00:55:20,380 --> 00:55:23,840 Takže v tomto prípade tu, môžem len ísť až spustite make F2C. 1356 00:55:23,840 --> 00:55:25,830 Ja sa kričal na, pretože som to urobil, že pred sekundou. 1357 00:55:25,830 --> 00:55:27,030 Je to už aktuálne. 1358 00:55:27,030 --> 00:55:30,720 Takže teraz môžem bežať f2c znovu. 1359 00:55:30,720 --> 00:55:33,260 Skúsme 32 Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Teraz sa poďme skúsiť 212 Fahrenheit. 1361 00:55:36,720 --> 00:55:37,250 >> Uf. 1362 00:55:37,250 --> 00:55:38,250 Zdá sa, že sa do práce. 1363 00:55:38,250 --> 00:55:41,760 Teraz, je to dobre, ale je to trochu ľubovoľný že 1364 00:55:41,760 --> 00:55:44,890 Som ukazuje šesť čísel po desatinných miest. 1365 00:55:44,890 --> 00:55:45,070 Je to tak? 1366 00:55:45,070 --> 00:55:47,830 Ak ste osoba počasia v televízii, že ste trochu doofus 1367 00:55:47,830 --> 00:55:49,150 ak čítate teplotu na 1368 00:55:49,150 --> 00:55:50,070 tento stupeň presnosti. 1369 00:55:50,070 --> 00:55:51,270 Tak poďme zjednodušiť tým. 1370 00:55:51,270 --> 00:55:53,880 Takže poďme skutočne ísť sem, k môjmu printf. 1371 00:55:53,880 --> 00:55:55,490 A jo, ja chcem plávať. 1372 00:55:55,490 --> 00:55:57,570 Ale ja chcem, aby teraz určiť presnosť. 1373 00:55:57,570 --> 00:55:59,070 A ja budem trochu stručné. 1374 00:55:59,070 --> 00:56:03,090 Ja poviem, daj mi jeden bod po desatinné miesto. 1375 00:56:03,090 --> 00:56:07,590 Takže skôr než hovoriť% f, budem hovoriť% .1 f 1376 00:56:07,590 --> 00:56:09,760 A to len znamená, daj mi jednu pozíciu 1377 00:56:09,760 --> 00:56:11,410 za desatinnou čiarkou. 1378 00:56:11,410 --> 00:56:11,700 Dobrá. 1379 00:56:11,700 --> 00:56:12,570 Skúsme to znovu. 1380 00:56:12,570 --> 00:56:15,590 Dovoľte mi, aby som znovu spustiť po kompilácii. 1381 00:56:15,590 --> 00:56:18,160 A teraz píšem v 32, a ja sa vrátim 1382 00:56:18,160 --> 00:56:19,310 stručnejší hodnotu. 1383 00:56:19,310 --> 00:56:22,480 A môžem písať, teraz, 212, a získať späť viac stručné 1384 00:56:22,480 --> 00:56:23,260 hodnota rovnako. 1385 00:56:23,260 --> 00:56:25,190 A je tu ďalšie veci, ktoré môžete robiť s printf. 1386 00:56:25,190 --> 00:56:27,950 Môžete si skutočne určiť, ako široký je číslo by malo byť. 1387 00:56:27,950 --> 00:56:30,900 Ak chcete mať výplň na to, takže môžete zarovnať alebo 1388 00:56:30,900 --> 00:56:32,360 vľavo zarovnať všetky vaše čísla alebo 1389 00:56:32,360 --> 00:56:33,400 skúste centrá veci. 1390 00:56:33,400 --> 00:56:35,340 Takže uvedomila, že existujú malé triky, ktoré môžete urobiť tu. 1391 00:56:35,340 --> 00:56:38,420 Ale oni jednoducho sa redukuje na formáte kódov, 1392 00:56:38,420 --> 00:56:39,600 to, že máme tú. 1393 00:56:39,600 --> 00:56:41,090 >> Takže pokiaľ ide o tejto otázke priorít. 1394 00:56:41,090 --> 00:56:43,820 To je veľmi nudné tabuľky prejsť metodicky. 1395 00:56:43,820 --> 00:56:46,780 Ale uvedomte si, že autori C prišli s 1396 00:56:46,780 --> 00:56:50,190 Pravidlá, ktoré špecifikujú, ktoré prevádzkovatelia majú vyššiu 1397 00:56:50,190 --> 00:56:53,680 prednosť, viac záväzný výkon, než ostatní. 1398 00:56:53,680 --> 00:56:55,890 Takže vzhľadom na to, na základnej škole, sme sa všeobecne vedeli, že je to 1399 00:56:55,890 --> 00:56:58,930 násobenie a delenie, potom sčítanie a odčítanie, 1400 00:56:58,930 --> 00:56:59,950 potom niektoré ďalšie veci. 1401 00:56:59,950 --> 00:57:01,720 Vo svete programovania, je tu oveľa 1402 00:57:01,720 --> 00:57:03,360 dlhší zoznam vecí. 1403 00:57:03,360 --> 00:57:05,150 A to nie je niečo, čo stojí za zapamätanie teraz. 1404 00:57:05,150 --> 00:57:07,310 Dostanete aklimatizovať na to onedlho. 1405 00:57:07,310 --> 00:57:10,690 Ale rovnako ako v základnej škole, zátvorky všeobecne riešiť 1406 00:57:10,690 --> 00:57:12,990 otázky priority, tým, že super clear pre 1407 00:57:12,990 --> 00:57:15,620 počítač a ľudský podobný čo je určený. 1408 00:57:15,620 --> 00:57:17,770 Takže zvážte to len trochu ťahák tam. 1409 00:57:17,770 --> 00:57:21,690 Ale väčšina z týchto údajov nebudeme mať na nejakú dobu. 1410 00:57:21,690 --> 00:57:21,900 >> Dobrá. 1411 00:57:21,900 --> 00:57:24,120 Teraz, poďme vybudovať a odklon od týchto hlúpa 1412 00:57:24,120 --> 00:57:25,460 matematické príklady. 1413 00:57:25,460 --> 00:57:27,500 Stále používajú rovnaké základy, ale kto 1414 00:57:27,500 --> 00:57:29,960 vyjadrovania trochu viac ako Scratch. 1415 00:57:29,960 --> 00:57:31,660 Takže v Scratch, mali sme booleovské výrazy. 1416 00:57:31,660 --> 00:57:34,890 A v angličtine, Boolovský výraz, čo? 1417 00:57:34,890 --> 00:57:35,580 True alebo false. 1418 00:57:35,580 --> 00:57:38,300 Je to niečo, čo vyhodnotí na true alebo false. 1419 00:57:38,300 --> 00:57:39,060 1 alebo 0. 1420 00:57:39,060 --> 00:57:39,870 Zapnúť alebo vypnúť. 1421 00:57:39,870 --> 00:57:41,000 Či už chcete nazývať. 1422 00:57:41,000 --> 00:57:43,210 Teraz v Scratch, jednotlivé diely skladačky vyzeral takto. 1423 00:57:43,210 --> 00:57:45,850 A to je kombinácia, na dne, z troch 1424 00:57:45,850 --> 00:57:47,980 dieliky. 1425 00:57:47,980 --> 00:57:48,980 Jedna spojka - 1426 00:57:48,980 --> 00:57:51,710 niečo, čo má prázdne a prázdne. 1427 00:57:51,710 --> 00:57:53,970 A potom dva logické výrazy vnútri nej. 1428 00:57:53,970 --> 00:57:56,460 Takže môžete vnárať Booleovské výrazy získať viac 1429 00:57:56,460 --> 00:57:59,360 zložité booleovských výrazov. 1430 00:57:59,360 --> 00:58:03,930 Napríklad, ak je sobota, a to je pekné 1431 00:58:03,930 --> 00:58:06,180 počasie, potom ísť von. 1432 00:58:06,180 --> 00:58:07,500 Alebo tak niečo svojvoľné takého. 1433 00:58:07,500 --> 00:58:10,090 Takže sa môžete pripojiť logické výrazy prísť s 1434 00:58:10,090 --> 00:58:12,780 väčšia pravdivostná hodnota, ktorej odpoveď je založená 1435 00:58:12,780 --> 00:58:13,800 na tých menších. 1436 00:58:13,800 --> 00:58:15,770 >> Teraz, v C, našťastie, to je mapovanie 1437 00:58:15,770 --> 00:58:16,720 vlastne celkom jednoduché. 1438 00:58:16,720 --> 00:58:18,820 Zátvorky pomôcť tomu, aby sa situácia nevyjasní tu. 1439 00:58:18,820 --> 00:58:21,700 && Je to, čo znamená "a". Tak to je, ako 1440 00:58:21,700 --> 00:58:24,700 budeme previesť tieto bloky od nuly do C. 1441 00:58:24,700 --> 00:58:27,590 A podmienky, sme videli v Scratch, na ľavej strane 1442 00:58:27,590 --> 00:58:31,150 strana tam, môžem vyskladať podobne v C. Ak je x menšie 1443 00:58:31,150 --> 00:58:32,970 ako y, potom to urobiť. 1444 00:58:32,970 --> 00:58:35,100 Alebo ak x je väčšie ako y, potom to. 1445 00:58:35,100 --> 00:58:38,030 Else logicky musí byť rovnaká, tak povedať, 1446 00:58:38,030 --> 00:58:39,140 , Že sú rovnaké. 1447 00:58:39,140 --> 00:58:41,210 Takže teraz môžeme začať budovať tieto veci. 1448 00:58:41,210 --> 00:58:42,170 >> Takže poďme urobiť príklad. 1449 00:58:42,170 --> 00:58:45,550 Dovoľte mi, aby som otvoriť súbor, ktorý je na ihrisku internetových stránkach tohto 1450 00:58:45,550 --> 00:58:47,270 Som napísal v predstihu. 1451 00:58:47,270 --> 00:58:50,540 To sa nazýva nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 A uvidíme, prečo za chvíľu. 1453 00:58:52,270 --> 00:58:54,770 Takže v tomto súbore - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 najprv uvedomiť, že je tu celá partia 1455 00:58:56,830 --> 00:58:58,460 pripomienky na vrchole. 1456 00:58:58,460 --> 00:59:00,110 To je len vysvetlenie názvu súboru, čo to 1457 00:59:00,110 --> 00:59:01,260 robí, a tak ďalej. 1458 00:59:01,260 --> 00:59:04,390 A to zrejme ukazuje použitie Boolean A-ing - 1459 00:59:04,390 --> 00:59:06,220 konjunkcii dvoch výrazov. 1460 00:59:06,220 --> 00:59:07,670 >> Takže poďme sa pozrieť, ako tento program funguje. 1461 00:59:07,670 --> 00:59:10,840 Môžem zahrnúť svoje dva súbory, cs50.h a stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Keby som posunúť dole, teraz, na programe, je to trochu dlhšie 1463 00:59:13,180 --> 00:59:15,730 ako sme napísal predtým, ale celkom čitateľné. 1464 00:59:15,730 --> 00:59:18,360 Tak som najprv vytlačiť pre užívateľa, na riadku 18, 1465 00:59:18,360 --> 00:59:20,460 "Daj mi číslo medzi 1 a 10." Tak 1466 00:59:20,460 --> 00:59:21,530 že je to tu. 1467 00:59:21,530 --> 00:59:23,410 Teraz som si na celé číslo. 1468 00:59:23,410 --> 00:59:25,380 Ale uvedomte si, že GetInt - veľmi jednoduchý. 1469 00:59:25,380 --> 00:59:26,510 Je to jednoducho dostane int. 1470 00:59:26,510 --> 00:59:28,830 Bude to, aby to dostať int a nie 1471 00:59:28,830 --> 00:59:30,060 reťazec alebo float. 1472 00:59:30,060 --> 00:59:32,390 Ale to nebude robiť akékoľvek hranice kontroly. 1473 00:59:32,390 --> 00:59:34,750 To nebude filtrovať čísla, aby sa medzi 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 implementovať, že sami. 1476 00:59:37,730 --> 00:59:40,680 Takže rovnako ako v Scratch, kde by som mohol urobiť konjunkcii 1477 00:59:40,680 --> 00:59:43,560 dva výrazy, môžem to urobiť v C takto. 1478 00:59:43,560 --> 00:59:48,660 Ak je n vyššia ako alebo rovná 1, a n je menšie ako a 1479 00:59:48,660 --> 00:59:52,220 alebo rovný 3, budem veľmi ľubovoľne vyhlášky, ktorou sa 1480 00:59:52,220 --> 00:59:53,830 číslo byť malé množstvo. 1481 00:59:53,830 --> 00:59:56,730 Len kvôli vyhlásenie. 1482 00:59:56,730 --> 01:00:00,210 Else if n je medzi 4 a 6, print "Vybrali ste si médium 1483 01:00:00,210 --> 01:00:03,440 číslo. "Else, ak n je medzi 7 a 10, print" Vybrali ste si 1484 01:00:03,440 --> 01:00:06,390 veľké číslo. "Else tlače" Vy si vyberiete neplatný počet. " 1485 01:00:06,390 --> 01:00:07,900 Pretože logicky, že takto, ak máme 1486 01:00:07,900 --> 01:00:09,230 vyčerpania náš sortiment. 1487 01:00:09,230 --> 01:00:12,400 >> Takže uvedomiť to nie je úplne ako zapísať väčšie než alebo 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 Tie zvyčajne nakresliť to takto, s linkou pod ním. 1491 01:00:17,430 --> 01:00:19,250 Ale nie je tam žiadny taký kľúč na mojej klávesnice. 1492 01:00:19,250 --> 01:00:22,390 Takže symbol C pre vyjadrenie väčší alebo 1493 01:00:22,390 --> 01:00:25,770 rovná sa dva znaky, a symbol po dobu kratšiu ako 1494 01:00:25,770 --> 01:00:29,100 alebo rovná sa dva znaky, rovnako. 1495 01:00:29,100 --> 01:00:29,330 Dobrá. 1496 01:00:29,330 --> 01:00:31,910 Takže keď som spustiť tento program, budete pravdepodobne uhádnuť, čo to je 1497 01:00:31,910 --> 01:00:32,650 robiť. 1498 01:00:32,650 --> 01:00:36,180 Ak by som do toho a urobiť nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 A potom spustite nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Dajte mi číslo medzi 1 a 10. 1501 01:00:39,530 --> 01:00:40,870 Chystám sa dať mu 11. 1502 01:00:40,870 --> 01:00:42,280 Vybral som neplatné číslo. 1503 01:00:42,280 --> 01:00:44,090 Skúsim číslo 3. 1504 01:00:44,090 --> 01:00:45,990 Vybral som si malý počet. 1505 01:00:45,990 --> 01:00:48,360 Takže pomerne priamočiara tam. 1506 01:00:48,360 --> 01:00:52,230 >> Čo keď chcem zmeniť správanie tohto programu a 1507 01:00:52,230 --> 01:00:54,250 niečo trochu iného miesto? 1508 01:00:54,250 --> 01:00:57,620 Nechaj ma ísť ďalej a povedať. 1509 01:00:57,620 --> 01:00:59,480 Dovoľte mi, aby som sa zbaviť toho všetkého. 1510 01:00:59,480 --> 01:01:03,780 A dovoľte mi povedať, či (n == 42). 1511 01:01:03,780 --> 01:01:08,730 A potom budem pokračovať a povedať tlač "Vybrali ste si 1512 01:01:08,730 --> 01:01:16,340 Správna odpoveď. "Else budeme pokračovať a povedať, 1513 01:01:16,340 --> 01:01:18,460 printf ("Vybrali ste si 1514 01:01:18,460 --> 01:01:21,170 zlá odpoveď ");. Dobre. 1515 01:01:21,170 --> 01:01:22,040 Len preto, že. 1516 01:01:22,040 --> 01:01:23,890 >> Teraz, o niekoľko bodov môžeme tu. 1517 01:01:23,890 --> 01:01:26,570 Raz som nemal zadajte symbol, ktorý by si myslel, je 1518 01:01:26,570 --> 01:01:27,390 najrozumnejším. 1519 01:01:27,390 --> 01:01:30,110 Keď chcem skontrolovať rovnosť, ukázalo sa, že nepoužívate 1520 01:01:30,110 --> 01:01:30,910 znamienko rovná sa. 1521 01:01:30,910 --> 01:01:34,000 Namiesto toho použiť rovná znamienko rovnosti. 1522 01:01:34,000 --> 01:01:36,440 A prečo by to malo byť, len intuitívne? 1523 01:01:36,440 --> 01:01:37,030 Jo. 1524 01:01:37,030 --> 01:01:39,330 PUBLIKUM: [Nepočuteľné] 1525 01:01:39,330 --> 01:01:39,615 DAVID J. Malan: Správne. 1526 01:01:39,615 --> 01:01:41,630 Znamienko rovná sa už používa pre priradenie. 1527 01:01:41,630 --> 01:01:43,020 Niekto sa naozaj si to premyslieť. 1528 01:01:43,020 --> 01:01:45,820 A tak teraz, keď ide o rovnosť testovanie, musíme 1529 01:01:45,820 --> 01:01:48,850 byť viac explicitný, a povedz rovná rovná. 1530 01:01:48,850 --> 01:01:52,110 Veľmi častou chybou je urobiť to. 1531 01:01:52,110 --> 01:01:54,800 A ak v úradných hodinách, alebo niekedy budúci týždeň, alebo v 1532 01:01:54,800 --> 01:01:58,340 Ďalšie dva týždne si niečo také a potom 1533 01:01:58,340 --> 01:02:00,920 bojovať s ním 10, 20 minút sa snaží prísť na to, 1534 01:02:00,920 --> 01:02:03,330 čo sakra chyba je, si uvedomiť, že ste jedným z tých, 1535 01:02:03,330 --> 01:02:04,470 ľudia, ktorí z tejto chyby. 1536 01:02:04,470 --> 01:02:06,030 Takže, Super ľahké. 1537 01:02:06,030 --> 01:02:08,240 Ale cieľom je teraz odraziť túto chybu. 1538 01:02:08,240 --> 01:02:11,840 To by mohlo hodnotiť, pretože to, čo je to vlastne hovorí? 1539 01:02:11,840 --> 01:02:15,010 Ak je n dostane 42. 1540 01:02:15,010 --> 01:02:18,250 Takže sloveso ľudia používajú, ústne, vyjadriť 1541 01:02:18,250 --> 01:02:21,800 Pojem práca je "dostane." Takže ak n dostane 42. 1542 01:02:21,800 --> 01:02:24,060 Takže to znamená, priradiť 42 až n 1543 01:02:24,060 --> 01:02:26,250 Teraz mám logický výraz v zátvorke, 1544 01:02:26,250 --> 01:02:30,230 vnútri tohto stavu, ktorého hodnota je 42. 1545 01:02:30,230 --> 01:02:30,390 Je to tak? 1546 01:02:30,390 --> 01:02:32,690 Pretože ak budete hodnotiť zvnútra von, celkom 1547 01:02:32,690 --> 01:02:34,100 Odpoveď, teraz je 42. 1548 01:02:34,100 --> 01:02:37,360 >> Takže ak som sa vás na otázku, "či (42)," to, čo je 1549 01:02:37,360 --> 01:02:38,410 že vlastne hovorí? 1550 01:02:38,410 --> 01:02:40,990 No, logické výrazy iba true alebo false. 1551 01:02:40,990 --> 01:02:42,010 1 alebo 0. 1552 01:02:42,010 --> 01:02:43,010 Zapnúť alebo vypnúť. 1553 01:02:43,010 --> 01:02:45,240 Takže sa zdá, že majú rohovú prípad tu, keď všetci 1554 01:02:45,240 --> 01:02:50,060 náhle, hovorím "ak (42)". To nie je logická hodnota. 1555 01:02:50,060 --> 01:02:54,500 Takže to, čo počítače robiť, keď je to v podstate zodpovedá 1556 01:02:54,500 --> 01:02:58,620 niečo, čo to nie je 0 je interpretovaná byť 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šetci sú funkčne ekvivalentný. 1560 01:03:01,510 --> 01:03:05,070 Iba hodnota 0, alebo kľúčové slovo false, as stretneme 1561 01:03:05,070 --> 01:03:07,860 nakoniec vidieť, je v skutočnosti falošný. 1562 01:03:07,860 --> 01:03:15,040 Takže ", ak (42)" skutočne pravda, pretože to je nenulové. 1563 01:03:15,040 --> 01:03:18,620 Takže presnejšie tu, Boolean hodnota naozaj nie je tak 1564 01:03:18,620 --> 01:03:20,680 Koľko true alebo false, ale pre tento 1565 01:03:20,680 --> 01:03:24,650 prípade, ak je 0 alebo nenulová. 1566 01:03:24,650 --> 01:03:26,330 Takže false false, alebo nie. 1567 01:03:26,330 --> 01:03:28,640 A to nám umožňuje zahrnúť všetky viac 1568 01:03:28,640 --> 01:03:30,980 možnosti v zátvorkách výrazu. 1569 01:03:30,980 --> 01:03:33,840 Takže musíme, niekedy tak starostlivo, hovoria, že toto - 1570 01:03:33,840 --> 01:03:35,620 if (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Jednoducho preto, že musíme určiť test rovnosti, 1572 01:03:39,100 --> 01:03:40,930 nie je priradenie hodnoty. 1573 01:03:40,930 --> 01:03:42,830 >> Čo iného stojí za zmienku tu? 1574 01:03:42,830 --> 01:03:46,030 Tieto zložené zátvorky sú skutočne nie je nutné. 1575 01:03:46,030 --> 01:03:48,650 Robil som ich len preto, aby sa niť-vyberavý tu. 1576 01:03:48,650 --> 01:03:51,350 Ale keď máte podmienku, ktorá má iba jeden riadok 1577 01:03:51,350 --> 01:03:55,100 kód, ako pohodlie, programátori nemusia používať 1578 01:03:55,100 --> 01:03:56,030 zložené zátvorky. 1579 01:03:56,030 --> 01:03:59,370 Postačí len zarážky, z estetických dôvodov, a 1580 01:03:59,370 --> 01:04:01,050 Potom napíšte riadok kódu. 1581 01:04:01,050 --> 01:04:04,160 Iba vtedy, keď chcete napísať dva riadky kódu - pre 1582 01:04:04,160 --> 01:04:08,230 inštancie, inak printf ("Ahoj!"). Ak chcete urobiť 1583 01:04:08,230 --> 01:04:09,540 to, že je chybný. 1584 01:04:09,540 --> 01:04:11,700 Môžete zarážka všetko, čo chceš, ale skutočnosť, že máte 1585 01:04:11,700 --> 01:04:14,600 napísal dva riadky kódu bez použitia zloženej zátvorky 1586 01:04:14,600 --> 01:04:16,860 znamená, že tento program nebude fungovať správne alebo mohlo 1587 01:04:16,860 --> 01:04:18,530 Ani zostaviť správne. 1588 01:04:18,530 --> 01:04:21,040 Takže teraz, aby som bol úprimný, myslím, že najlepšie zvyk je len 1589 01:04:21,040 --> 01:04:24,460 používať zložené zátvorky, a zistíte, že oni robia 1590 01:04:24,460 --> 01:04:25,750 Super jasné, čo sa deje. 1591 01:04:25,750 --> 01:04:29,410 >> Tiež, ako stranou - najmä ak ste medzi tými, ktorí používajú 1592 01:04:29,410 --> 01:04:31,700 odporúčané knihy alebo zdroje on-line - 1593 01:04:31,700 --> 01:04:33,480 si uvedomiť, že tam je to pojem štýlu 1594 01:04:33,480 --> 01:04:34,130 programovanie. 1595 01:04:34,130 --> 01:04:37,280 A niektorí ľudia skutočne radšej dať zložená zátvorka 1596 01:04:37,280 --> 01:04:38,720 sem na riadku. 1597 01:04:38,720 --> 01:04:41,520 Niektorí ľudia radšej robiť smiešne veci, 1598 01:04:41,520 --> 01:04:43,830 Páči dať ich sem. 1599 01:04:43,830 --> 01:04:45,140 Nie je zlá odpoveď, ak ide o 1600 01:04:45,140 --> 01:04:46,710 štýl, ale to je v poriadku. 1601 01:04:46,710 --> 01:04:47,700 Ale niektorí ľudia to. 1602 01:04:47,700 --> 01:04:49,160 [Smiech] 1603 01:04:49,160 --> 01:04:51,760 DAVID J. Malan: Tak som spomenul teraz, jednoducho preto, že ako 1604 01:04:51,760 --> 01:04:54,400 môžete prečítať na veci v knihách alebo on-line, budete si 1605 01:04:54,400 --> 01:04:55,990 rôzne správy z rôznych učiteľov a 1606 01:04:55,990 --> 01:04:56,730 rôzni autori. 1607 01:04:56,730 --> 01:04:58,640 A len uvedomiť, že, funkčne, sú 1608 01:04:58,640 --> 01:05:00,740 všeobecne ekvivalent, ale byť konzistentné. 1609 01:05:00,740 --> 01:05:02,850 Takže v tomto prípade, budeme štandardizovať na kučeravý 1610 01:05:02,850 --> 01:05:04,650 traky zoraďovať tu naľavo. 1611 01:05:04,650 --> 01:05:04,910 >> Dobrá. 1612 01:05:04,910 --> 01:05:07,040 Tak poďme do toho hneď a spustiť to, a uvidíme, čo sa stane 1613 01:05:07,040 --> 01:05:07,780 s týmto programom. 1614 01:05:07,780 --> 01:05:09,970 Urobte nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Potom spustite nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Daj mi celé číslo medzi 0 a - takže to nie je relevantné 1617 01:05:13,900 --> 01:05:16,480 už, ale ja som jednoducho ísť na ľubovoľne povedať 42. 1618 01:05:16,480 --> 01:05:17,850 A ja som si vybral správnu odpoveď. 1619 01:05:17,850 --> 01:05:20,430 No, poďme si to vlastne v inom smere. 1620 01:05:20,430 --> 01:05:22,070 Ukazuje sa, že je to nejaký iný syntax sme 1621 01:05:22,070 --> 01:05:23,480 možno použiť v programe. 1622 01:05:23,480 --> 01:05:27,310 Tu je nový kus syntaxe, ktorý je funkčne rovnaký, 1623 01:05:27,310 --> 01:05:30,680 ale len predstavuje ďalší spôsob vyjadrovania. 1624 01:05:30,680 --> 01:05:32,830 Tak toto je to, čo sa nazýva "switch". A 1625 01:05:32,830 --> 01:05:34,820 switch funguje nasledovne. 1626 01:05:34,820 --> 01:05:37,580 To trvá, v zátvorke, hodnotu, ktorú chcete 1627 01:05:37,580 --> 01:05:38,860 "Switch" na. 1628 01:05:38,860 --> 01:05:41,490 Ak chcete chovať rôzne v závislosti na jeho hodnote. 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 čo to znamená? 1631 01:05:45,480 --> 01:05:50,530 No, ak n je 1 alebo 2 alebo 3, choďte do toho a vytlačiť "You 1632 01:05:50,530 --> 01:05:52,680 vybral veľké množstvo "a potom sa lámu. 1633 01:05:52,680 --> 01:05:55,720 Dôvodom pre prerušenie je, že spôsob C funguje je 1634 01:05:55,720 --> 01:05:59,790 Akonáhle nájde prípad, ktorý zodpovedá, začne vykonávanie 1635 01:05:59,790 --> 01:06:01,610 všetky kód pod ním. 1636 01:06:01,610 --> 01:06:04,580 Takže ak mám jeden riadok kódu, ako ja tu na linke 27, je 1637 01:06:04,580 --> 01:06:05,360 sa vykoná. 1638 01:06:05,360 --> 01:06:07,520 Ak môžem pridať ďalší riadok sem, dostane vykonaný. 1639 01:06:07,520 --> 01:06:09,350 Ďalšie linka tu, dostane vykonaný. 1640 01:06:09,350 --> 01:06:12,460 Program iba zastaví realizáciu toho, čo je pod 1641 01:06:12,460 --> 01:06:14,680 použiteľné case, kedy som sa explicitne 1642 01:06:14,680 --> 01:06:17,210 hovoria "zlomiť." Tak zle. 1643 01:06:17,210 --> 01:06:19,220 Práve v tomto prípade, rovnako ako výsledok. 1644 01:06:19,220 --> 01:06:22,130 Prípad 4 alebo 5 alebo 6, podobne, sa deje 1645 01:06:22,130 --> 01:06:23,160 vytlačiť správu. 1646 01:06:23,160 --> 01:06:24,410 V tomto prípade, stredné číslo. 1647 01:06:24,410 --> 01:06:25,200 Prestávka. 1648 01:06:25,200 --> 01:06:28,160 Prípad 7, 8, 9, 10, bude to vytlačiť "Vybrali ste veľký 1649 01:06:28,160 --> 01:06:28,950 číslo. "Break. 1650 01:06:28,950 --> 01:06:31,290 A potom je tu doslova kľúčové slovo názvom "default" 1651 01:06:31,290 --> 01:06:34,090 to skutočne ako "iný" konštrukcia. 1652 01:06:34,090 --> 01:06:36,010 Takže nová syntax, ale intelektuálne, 1653 01:06:36,010 --> 01:06:37,060 vôbec nič nové. 1654 01:06:37,060 --> 01:06:38,280 Je to rovnako ako Scratch. 1655 01:06:38,280 --> 01:06:41,040 If, else if, else, ak druh bloku. 1656 01:06:41,040 --> 01:06:44,560 >> Tak to je zapnutý verzia tohto programu. 1657 01:06:44,560 --> 01:06:46,280 Všimnime si ale, že sme to urobili s číslami tu. 1658 01:06:46,280 --> 01:06:49,040 Dovoľte mi, aby som otvoriť druhú verziu, len aby ukázal, 1659 01:06:49,040 --> 01:06:50,670 niečo trochu konkrétnejší. 1660 01:06:50,670 --> 01:06:52,840 Takže tu máme stupňov miesto. 1661 01:06:52,840 --> 01:06:55,540 Ukázalo sa, že môžete použiť prepínače nielen s číslami, ale na 1662 01:06:55,540 --> 01:06:56,340 znakov. 1663 01:06:56,340 --> 01:06:58,930 Nie vo všetkých dátových typov, ale aspoň na charakteroch. 1664 01:06:58,930 --> 01:07:02,670 Takže tu, mohli by sme urobiť niečo, ako keby hodnota C, ktorá 1665 01:07:02,670 --> 01:07:06,230 Užívateľ napísal v, v súlade 19, pomocou funkcie GetChar, 1666 01:07:06,230 --> 01:07:09,410 je kapitál alebo malé písmená, poďme interpretovať ako triedy, 1667 01:07:09,410 --> 01:07:11,340 a tvrdí, že si vybral vynikajúci stupeň. 1668 01:07:11,340 --> 01:07:14,690 A dole pozdĺž switch, máme iné 1669 01:07:14,690 --> 01:07:17,950 púzdra na "B" s a "C" s, a tak ďalej. 1670 01:07:17,950 --> 01:07:19,780 Ale poďme sa teraz završujú jednu vec. 1671 01:07:19,780 --> 01:07:21,130 A opäť, druh letí 1672 01:07:21,130 --> 01:07:22,200 niektoré z týchto príkladov. 1673 01:07:22,200 --> 01:07:26,990 Ale je to naozaj tak, že sme mohli aplikovať, teraz - 1674 01:07:26,990 --> 01:07:28,880 alebo naozaj, len preložiť je teraz - 1675 01:07:28,880 --> 01:07:32,220 na C. 1676 01:07:32,220 --> 01:07:33,310 >> Tak nechaj ma ísť ďalej a robiť to. 1677 01:07:33,310 --> 01:07:34,830 Idem otvoriť nový súbor. 1678 01:07:34,830 --> 01:07:39,430 A ja budem robiť include . 1679 01:07:39,430 --> 01:07:42,770 A potom budem robiť, int main (void). 1680 01:07:42,770 --> 01:07:46,390 Dovoľte mi, aby som tento súbor uložiť ako loop.c. 1681 01:07:46,390 --> 01:07:48,280 Len ako príklad. 1682 01:07:48,280 --> 01:07:49,910 A ja idem ďalej a vykonajte nasledujúce. 1683 01:07:49,910 --> 01:07:54,180 Chcem písať veľmi nudné programu. 1684 01:07:54,180 --> 01:07:56,170 Tak 10. 1685 01:07:56,170 --> 01:07:58,862 Poď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 Akonáhle začnete robiť to v programovaní, ty si 1689 01:08:02,120 --> 01:08:03,490 pravdepodobne robí niečo zlé. 1690 01:08:03,490 --> 01:08:04,950 Ale začneme tam rovnako. 1691 01:08:04,950 --> 01:08:05,430 Chybička sa vlúdila. 1692 01:08:05,430 --> 01:08:06,950 To je vlastne v poriadku. 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 Nič sa nestane, keď sa 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 Dobre. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Odstrániť. 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 zrejme bude robiť to, čo veľmi 1707 01:08:22,010 --> 01:08:23,310 zdĺhavo hovorí, že to bude robiť. 1708 01:08:23,310 --> 01:08:24,060 Bude to pre tlač všetkých tých 1709 01:08:24,060 --> 01:08:25,290 hodnoty, od zhora nadol. 1710 01:08:25,290 --> 01:08:27,140 Dovoľte mi teda urobiť, aby slučku. 1711 01:08:27,140 --> 01:08:28,640 A potom - POZOR. 1712 01:08:28,640 --> 01:08:29,700 Urobte slučku. 1713 01:08:29,700 --> 01:08:31,479 Bol som v zlom adresári. 1714 01:08:31,479 --> 01:08:33,300 A teraz mi dovoľte bežať slučku. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Hej. 1717 01:08:34,620 --> 01:08:35,270 Very nice. 1718 01:08:35,270 --> 01:08:36,279 Pekný, dlhý program. 1719 01:08:36,279 --> 01:08:38,109 >> Dobre, ale teraz sa na to lepšie. 1720 01:08:38,109 --> 01:08:40,810 Rovnako ako v roku Scratch, keď ste začal používať opakovanie 1721 01:08:40,810 --> 01:08:43,149 konštrukcie, namiesto toho len kopírovanie a vkladanie všetky 1722 01:08:43,149 --> 01:08:45,580 skladačky, dovoľte mi predstaviť túto vec. 1723 01:08:45,580 --> 01:08:48,609 Takže v C, existujú rôzne smyčkování konštrukty, 1724 01:08:48,609 --> 01:08:50,540 z ktorých jedna vyzerá nasledovne. 1725 01:08:50,540 --> 01:08:55,069 "Pre" loop má tri veci, oddelené dvoma bodkočiarkami. 1726 01:08:55,069 --> 01:08:57,770 A potom, vo vnútri tela slučky, takže hovoriť - 1727 01:08:57,770 --> 01:08:59,390 veci vnútri zložených zátvoriek - 1728 01:08:59,390 --> 01:09:01,010 môžeme niečo urobiť znovu a znovu. 1729 01:09:01,010 --> 01:09:02,310 Takže to, čo som tu na obrazovke, to je 1730 01:09:02,310 --> 01:09:03,300 doslova komentár. 1731 01:09:03,300 --> 01:09:05,380 / / Tu znamená prichádza komentár. 1732 01:09:05,380 --> 01:09:06,180 To nie je kód. 1733 01:09:06,180 --> 01:09:08,890 To je len anglický popis, pre mňa, človeka. 1734 01:09:08,890 --> 01:09:11,300 >> Takže inicializácia, podmienky a aktualizácie. 1735 01:09:11,300 --> 01:09:12,770 No, uvidíme, ako to funguje. 1736 01:09:12,770 --> 01:09:15,520 To mi umožňuje prepísať tento program takto. 1737 01:09:15,520 --> 01:09:16,399 Pre - 1738 01:09:16,399 --> 01:09:18,029 takže tu je môj slučka - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 tu je premenná s názvom "i" - 1741 01:09:21,330 --> 01:09:23,140 dostane inicializované na 10. 1742 01:09:23,140 --> 01:09:25,260 Takže tam je moja inicializácia. 1743 01:09:25,260 --> 01:09:29,450 Chcem urobiť slučku tak dlho, ako "i" je väčší alebo 1744 01:09:29,450 --> 01:09:30,899 rovné 0. 1745 01:09:30,899 --> 01:09:32,880 A pri každom opakovaní tohto cyklu, chcem 1746 01:09:32,880 --> 01:09:34,979 robiť aj -. 1747 01:09:34,979 --> 01:09:36,310 Takže sme videli + + v pondelok. 1748 01:09:36,310 --> 01:09:37,660 - Je opakom. 1749 01:09:37,660 --> 01:09:39,410 Že znižuje hodnotu 1. 1750 01:09:39,410 --> 01:09:43,319 Vnútri tejto slučky, chcem skutočne niečo urobiť. 1751 01:09:43,319 --> 01:09:46,390 Tak som chcel povedať niečo ako printf. 1752 01:09:46,390 --> 01:09:48,939 Nechcem hovoriť 10 teraz, pretože to je samozrejme len 1753 01:09:48,939 --> 01:09:50,000 bude tlačiť rovnakú hodnotu. 1754 01:09:50,000 --> 01:09:52,246 Čo chcem tlačiť miesto, pravdepodobne? 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 budem ukradnúť jeden z tých nápadov od predtým - 1758 01:09:57,340 --> 01:09:59,640 to náhrada za formát kódov - 1759 01:09:59,640 --> 01:10:01,620 a potom sem, v dolnej časti, vrátim 0, len 1760 01:10:01,620 --> 01:10:02,710 pre správnu mieru. 1761 01:10:02,710 --> 01:10:04,740 Ale teraz, mám viac stručný program. 1762 01:10:04,740 --> 01:10:07,490 Je to len pár riadkov, a nie asi 10 alebo 11 riadkov. 1763 01:10:07,490 --> 01:10:09,440 Nechajte ma ísť na môj dotaz tu. 1764 01:10:09,440 --> 01:10:10,630 Remake slučky. 1765 01:10:10,630 --> 01:10:12,140 Znovu slučku. 1766 01:10:12,140 --> 01:10:13,570 A zdá sa, že je rovnaký. 1767 01:10:13,570 --> 01:10:15,550 Teraz je program nie je zaujímavejšie. 1768 01:10:15,550 --> 01:10:17,180 Ale teraz môžem napísať niečo také. 1769 01:10:17,180 --> 01:10:18,970 Môžem zmeniť to 100. 1770 01:10:18,970 --> 01:10:21,400 Potom môžem prekompilovať môj program. 1771 01:10:21,400 --> 01:10:23,360 A potom som si znova spustiť môj program. 1772 01:10:23,360 --> 01:10:26,390 A teraz to ide super-rýchlo na dnešných počítačoch. 1773 01:10:26,390 --> 01:10:27,820 Ale tam som sa - 1774 01:10:27,820 --> 01:10:29,620 a skutočne, môj scrollback vyrovnávacej nie je 1775 01:10:29,620 --> 01:10:30,890 dokonca ísť tak ďaleko. 1776 01:10:30,890 --> 01:10:31,680 Tam ideme. 1777 01:10:31,680 --> 01:10:34,090 Tak tu to máme všade 100. 1778 01:10:34,090 --> 01:10:35,880 Ale je to ľahké urobiť chybu tu. 1779 01:10:35,880 --> 01:10:37,920 Čo sa bude očakávané správanie, keď 1780 01:10:37,920 --> 01:10:41,150 náhodne urobiť? 1781 01:10:41,150 --> 01:10:42,550 Tak to cítia ako nekonečné. 1782 01:10:42,550 --> 01:10:44,670 Tak uvidíme, či počítač chová. 1783 01:10:44,670 --> 01:10:47,020 >> Tak nechaj ma ísť napred a urobiť slučku. 1784 01:10:47,020 --> 01:10:48,355 A dovoľte mi spustiť slučku. 1785 01:10:53,590 --> 01:10:55,210 Tak poďme vrátiť k tomu za chvíľu. 1786 01:10:55,210 --> 01:10:56,720 Necháme to plynúť. 1787 01:10:56,720 --> 01:10:59,520 Vzhľadom k tomu, čo by sme mali počítať až, minimálne? 1788 01:10:59,520 --> 01:11:02,200 Pravdepodobne najmenej 2 miliardy, keď máme toľko bitov, a 1789 01:11:02,200 --> 01:11:03,660 sme s využitím pozitívnych hodnôt. 1790 01:11:03,660 --> 01:11:04,890 Takže poďme skočiť späť. 1791 01:11:04,890 --> 01:11:07,810 Okrem týchto druhov slučiek, máme to, čo sa nazýva, zatiaľ čo 1792 01:11:07,810 --> 01:11:09,430 slučky. Takže, rovnako ako v Scratch, ste mali Forever 1793 01:11:09,430 --> 01:11:11,240 bloky, a vy ste mali Opakovať bloky. 1794 01:11:11,240 --> 01:11:13,270 Podobne, v C, stačí mať iné spôsoby, ako 1795 01:11:13,270 --> 01:11:14,260 vyjadriť sa. 1796 01:11:14,260 --> 01:11:17,110 Takže budete mať tento pojem cyklu while, ktorý umožňuje 1797 01:11:17,110 --> 01:11:18,860 Vyjadrite sa trochu inak. 1798 01:11:18,860 --> 01:11:21,490 A potom máte niečo, čo sa nazýva do-while, 1799 01:11:21,490 --> 01:11:24,200 ktorý funguje trochu odlišne rovnako. 1800 01:11:24,200 --> 01:11:25,320 A budeme dráždiť tie od seba v priebehu času. 1801 01:11:25,320 --> 01:11:28,630 >> Ale poďme sa pozrieť na túto poslednú tu. 1802 01:11:28,630 --> 01:11:30,160 Ak pôjdeme do - 1803 01:11:30,160 --> 01:11:31,466 stále beží. 1804 01:11:31,466 --> 01:11:32,770 Je to celkom nekonečný. 1805 01:11:32,770 --> 01:11:36,870 Tak ma nechaj ísť do pozitívny, a ukázať, ako môžeme skutočne 1806 01:11:36,870 --> 01:11:39,410 upravujú vstup užívateľa trochu efektívnejšie. 1807 01:11:39,410 --> 01:11:40,910 Je to celkom krátky program. 1808 01:11:40,910 --> 01:11:43,730 A máme tu, v hlavnej, int n vyhlásenie. 1809 01:11:43,730 --> 01:11:46,570 Tak mi premennú s názvom n Teraz, som doslova povedal 1810 01:11:46,570 --> 01:11:48,340 "Robiť." A potom mám otvorenú kučeravé 1811 01:11:48,340 --> 01:11:49,630 rovnátka, úzkym zložená zátvorka. 1812 01:11:49,630 --> 01:11:52,000 A potom zistíte, hneď po to, že sa hovorí, zatiaľ čo n 1813 01:11:52,000 --> 01:11:53,790 je menší ako 1. 1814 01:11:53,790 --> 01:11:55,300 Takže si všimnúť, že tieto riadky - 1815 01:11:55,300 --> 01:11:56,740 19 - 24 - 1816 01:11:56,740 --> 01:11:59,450 skladať kolektívne a do-while. 1817 01:11:59,450 --> 01:12:01,280 A opäť, nová syntaxe, nie je nová myšlienka. 1818 01:12:01,280 --> 01:12:03,740 Je to len ďalší spôsob, ako slučky, syntakticky. 1819 01:12:03,740 --> 01:12:04,890 Takže čo to robí? 1820 01:12:04,890 --> 01:12:08,000 Do nasledujúcej kým n je menšia ako 1,. 1821 01:12:08,000 --> 01:12:09,080 Tak čo chcem robiť? 1822 01:12:09,080 --> 01:12:11,390 Žiadam, aby ste mi celé kladné číslo. 1823 01:12:11,390 --> 01:12:14,110 Potom som sa skutočne snaží získať celé číslo od užívateľa. 1824 01:12:14,110 --> 01:12:16,740 Ale pokiaľ ide o poradie operácií tu, pretože 1825 01:12:16,740 --> 01:12:21,850 kým podmienka je tu, ja potom ísť skontrolovať, je n 1826 01:12:21,850 --> 01:12:23,100 menej ako 1? 1827 01:12:23,100 --> 01:12:24,600 Takže predpokladám, že užívateľ - 1828 01:12:24,600 --> 01:12:26,450 po požadovanej týmto spôsobom - 1829 01:12:26,450 --> 01:12:29,190 Typy v hodnotovom 0. 1830 01:12:29,190 --> 01:12:34,510 Táto podmienka bude true alebo false? 1831 01:12:34,510 --> 01:12:35,820 No, je to vlastne bude pravda. 1832 01:12:35,820 --> 01:12:38,700 Vzhľadom k tomu, n je 0, a 0 je menšia ako 1. 1833 01:12:38,700 --> 01:12:40,140 Takže čo to znamená? 1834 01:12:40,140 --> 01:12:41,160 Urob to znova. 1835 01:12:41,160 --> 01:12:41,990 Urob to znova. 1836 01:12:41,990 --> 01:12:42,640 Urob to znova. 1837 01:12:42,640 --> 01:12:46,080 Len raz, že podmienka vyhodnotená ako false. 1838 01:12:46,080 --> 01:12:47,510 Ak som písať 42. 1839 01:12:47,510 --> 01:12:49,690 No nie, 42 je menší ako 1. 1840 01:12:49,690 --> 01:12:52,320 Preto je tento slučka sa vykonáva spustením. 1841 01:12:52,320 --> 01:12:54,650 A tak v tomto bode, bude program povedať, vďaka za 1842 01:12:54,650 --> 01:12:57,530 42, v tomto prípade. 1843 01:12:57,530 --> 01:13:00,320 Teraz, keď máte tento spôsob vyjadrenia seba samého - 1844 01:13:00,320 --> 01:13:02,360 Nemali by sme čakať na to až do konca. 1845 01:13:02,360 --> 01:13:03,620 Bude to nejaký čas trvať. 1846 01:13:03,620 --> 01:13:04,990 Ak sa chcete pokračovať nabudúce, snáď. 1847 01:13:04,990 --> 01:13:08,050 >> Ale teraz, máte možnosť na snáď rozumieť 1848 01:13:08,050 --> 01:13:09,060 trochu pouťového cirkusanti humor. 1849 01:13:09,060 --> 01:13:11,560 Ospravedlňujem sa. 1850 01:13:11,560 --> 01:13:13,620 To nie je reprezentatívna humoru v informatike 1851 01:13:13,620 --> 01:13:14,870 svet, ale je to roztomilý. 1852 01:13:21,020 --> 01:13:23,890 [Smeje sa] Poďme koniec tohto záznamu. 1853 01:13:23,890 --> 01:13:25,750 A uvidíme sa v pondelok. 1854 01:13:25,750 --> 01:13:31,629 [APPLAUSE]