[Powered by Google Translate] DAVID J. Malan: Dobře, to je CS50, a to je konec 1. týdne, takže studijní karty jsou v a celkový počet spolužáci, že máte tento rok je 745. A my jsme tak nadšeni, že tak mnoho z vás v průběhu tento semestr, ale i přesto je tento kurz je tak velký, uvědomit, že to tyto věci jako oběd pátek jako úřední hodiny, 15-person profily, a tak dále, aby jsou opravdu chtěl vytvořit tento více intimní prostředí. Takže i když můžeme shromažďovat jednou nebo dvakrát týdně, tady v Sanders, vím, že hodně z vašich zkušeností v tomto kurzu bude velmi se hands-on na boku vašich spolužáků a pedagogičtí pracovníci. Tak jdeme na to, Fall 2012. Takže připomenout, že naposledy jsme skončil na sdělení ze dne nepřesnost, mluví o reprezentaci čísel. A my jsme se na jednom z poruch, které se staly v reálný svět, když to přišlo k nedorozumění jak počítače fungují. No, dnes budeme znovu další z těch nápadů, jak a pokračovat v naší diskuzi o CS50 klienta a C a co to znamená opravdu programu. Ale nejdřív, jen pár oznámení vichru. Sekce začnou tuto neděli, a první týden je vždy trochu rychlým rozběhem, protože jsme zrovna v svého oddílu formuláře. Děláme totéž, nyní s výukových kolegy, nyní že znají své plány, takže jsme s cílem, by V sobotu ráno, aby se vám, s vaším sekci přiřazení a TF. Uvědomte si, že začnou příští den, v neděli nebo v pondělí nebo v úterý. A pak jsme se ubytovat v části změny, které nastanou v nadcházejících dnech. Úřední hodiny, zatím jsou, opět, dnes, dvacet hodin na 11, v Annenberg, stejně jako zítra večer. I když problém sady jsou obecně kvůli čtvrtek v poledne, že jste si až pět pozdní dní strávit, tedy dostupnost úředních hodin ve čtvrtek, pokud vy hotovosti v jedné z těchto pozdních dnů, a tím, předloží něco na pátek. Dovolte mi navrhnout, že Scratch je mezi více zábavy, mezi Více nejnižší Klíčovým problémem sady. A já bych viset na těchto pozdních dnů, strategicky, jen pro pozdější použití do semestru, kdy život začíná v cestě s midterms a jiných tříd. Problém Set 1, mezitím, bude zanecháno kurz je Webové stránky tento pátek, jak bude na hřišti chůze přes video, které bude natočen v 14:30 v pátek a poté odesláno on-line do druhého dne. Takže jsme skončili v pondělí. Chci - vlastně, poznamenat, zde. Protože třídy - protože Sanders není přesně zapůjčení sám k příležitostnému Q & A sem a tam moc dobře, že jsme Pokusím se něco málo nových letošním roce, kdy Pokud nejste spokojeni zvýšit svou ruku, nebo si jen by raději zvednout ruku v místnosti, jako je tato, budeme mít některé z výukových kolegy a CAS obsazení cs50.net/discuss během přednášky. Takže pokud máte nějakou otázku, protože jsem byl úplně jasné, o něčem, nebo jste zvědaví, některé téma, zkuste vysílání to tam. Označit ji štítku Přednáška, a my se budeme snažit dnes a příští týden - Dáme zkuste tohle - postavit ji buď v elektronické, on-line, nebo pokud je to jako bychom měli Opravdu se jí zabývaly en masse, jeden z výukových chlapíků, nebo CA zvýší jejich ruku a zeptat se anonymně vaším jménem. Takže dáme to zkuste a uvidíte, jak dobře to funguje. Ale v každém případě, i nadále zvyšovat ruce, jako byste chtěli. Takže naposledy jsme zjistili, že 10% nebo jednu desetinu není v Skutečnost, 0.1, jako byste se učili před mnoha lety. Je to ve skutečnosti, hodnota takto. Ale to není zcela pravda, ne? Musíme jen toto omezení v počítačích, kdy, pokud mají pouze omezené množství paměti, RAM, nebo více konkrétně bity, dobře, je to jen konečný počet věcí, které mohou představovat. Například, pokud budeme mít číslo nula, a chceme, aby představují v binární, pomocí osmi bitů, kde bit, znovu, je nula nebo jedna, můžeme představují jako 00000000. A to je trochu zbytečně upovídaný. Stejně jako v desítkové soustavě v reálném světě, obecně, pokud chcete napsat číslo 123, se lidé pravděpodobně nebudou psát 00000123, i když, funkčně, že je to přesně stejný počet. Jsme jen kapka úvodní nuly, abych tak řekl. V binární, můžeme totéž. Binární a nula, nula a binární je jen nula. Potřebujete pouze jeden bit. Ale znovu, nejčastěji měrná jednotka na světě výpočetní jsou bajty, osm bitů. Jen proto, že jeden bit, docela k ničemu. Osm bitů, není příliš užitečná, ale alespoň je to více užitečnější než jednu měrnou jednotku. Takže pomocí osmi bitů, budeme obvykle představují binární. Takže tu máme čísla nula, jedna, dva, a pak, jak Nate dělal v našem videu minulou středu, můžeme pokračovat počítání až sedm, osm. A pak pokud budeme používat více a více bitů, jsme může počítat do nekonečna. Ale pokud máte jen konečný počet těchto bitů, jako je případ jakéhokoli počítačového systému, nebo dokonce střela systém, dobře, opravdu máte jen konečné množství přesnosti. Takže pokud chcete, aby zastupoval číslo jako 0,1, dobře, Počítač musí vybírat. A pokud to má jen konečný počet čísel pro to, představují, může přiblížit 0,1 pro ty, ale to nemůže nutně vám přesně hodnotu, kterou chcete. A to je jen jeden z problémů počítačů, pod kapotou, naštěstí. Jak jsme se přestěhovat dál v semestru, tyto nižší úrovně Podrobnosti mnohem méně zajímavé, ale rozhodně aplikace těchto myšlenek může mít některé velmi reálný svět následky. Jedním z nich je trochu legrace. Jak mnozí z vás viděli úžasný film Office Space? Pokud nemáte, je to váš neoficiální domácí za týden. Ale v kancelářských prostor, se chlapi v tomto filmu se Výhodou právě tohoto nápadu, ale oni vlastně ukradli to z jiného filmu, který by se Vám mohl mít Viděl, dokonce i roky předchozí. Takže mi dovolte, abych vám několik sekund tohoto přívěsu od tento úžasný film a to je velmi akademicky relevantní. [Hraje filmů] Vlastně jsem byl povýšen. Mohu naprogramovat virus, který bude trhat, že místo off velký čas. No, jak to funguje? Pokaždé, když je bankovní transakce, kde úroky jsou vypočítaný, existují tisíce den, počítač skončí s těmito zlomky procenta. Ale já nebudu dělat nic nezákonného. Nelegální? Samir, tohle je Amerika. Musíte přísahám Bohu. Pokud nikdo neví o tom, ale nás, v pořádku? Žádní rodinní příslušníci, žádné přítelkyně, nikdo. [Neslyšitelné]. Nebojte se, člověče, já to nikomu neřeknu ani. [Film končí] Dobře, takže možná jsem našel tento film lepší než většina lidé tady, ale v žádném případě, virus, že byly snaží vytvořit - a ve filmech, kdykoliv se to nazval něco virus, to obecně není vlastně virus. Je to jen program, který někdo napsal něco udělat. A v tomto případě, že kluci se snažili napsat program které využily jejich společnost s názvem INNOTECH tyto výpočetní systém, v jehož rámci počítače, taky, i když to přijde na peníze, nemůže být nutně představují peníze přesně. Takže i když budete muset 0,10 dolarů na váš bankovní účet, 0,10, dobře, že počítač skutečně myslíte, že máte tento mnoho centů ve vašem bankovním účtu. A tak to, co tihle hoši byli aspirující na to - a oni ukradl nápad, to dopadá z Nadčlověk III, kde Richard Pryor udělal stejnou věc - oni byli nezbytně psaní programů, které aspirují, aby všechny koncové čísla, všechny z malých, drobných, malých frakcí pennies, a nasává ty z tak, aby se lidé jen myšlenka, oh, je to jen 0,10 dolarů tam, ale všichni ti, koncové čísla nakonec sčítají. Tak skvělý nápad a to selhalo vesele v tom, že zejména film. Ale v reálném světě, i tam jsou mnohem více o Důsledky těchto druhů věcí. A jedním z důvodů, proč se do toho ponořit do oblasti počítačové vědy je opět jeho použitelnost ne inženýrské vědy samotné, ale jen proto, aby jiných oblastech. Tak to je méně veselý pohled na to, co se může pokazit, ale je to také docela otevření očí, myslím, pokud jde o pochopení přesně tak, jak všudypřítomné technologie jako počítače a programování, nebo v těchto dnech, ve formě softwaru. Takže to další klip je jen asi šest minut, pokračuje kde jsme skončili minule, ale umožňuje nám nahlédnout trochu více do hloubky na jeden takový z těchto otázek. Dovolte mi, abych přeskočte na místo, kde jsme skončili, který byl tady. A máme druhou část dva, přibližně šest minut zde. [PLAY MOVIE] Soužený moderní raketové techniky. V roce 1991, se na začátku první Gulf válce, Patriot Střela zažil podobný typ číslo konverze problém. A jako výsledek, bylo zabito 20 lidí, 20 amerických vojáků, a asi 100 dalších zraněno, když Patriot, který měl na ochranu proti příchozí pluje, nepodařilo vystřelit raketu. Když Irák napadl Kuvajt a Spojené státy rozpoutaly Desert Storm počátkem roku 1991, Patriot raketové baterie byly nasazeny na ochranu Saudskou Arábii a Izrael z irácké Plout raketové útoky. Patriot je americký střední rozsah povrch-k-air systém, vyráběné společností Raytheon. Velikost Patriot interceptor samotné, ale o zhruba 20 metrů dlouhá a váží asi 2000 liber. A to s sebou nese bojovou hlavici asi - myslím, že to je zhruba 150 liber. A hlavice sám o sobě je vysoce výbušné, který má fragmenty kolem ní. Kryt hlavice je navržen tak, aby fungovat jako hrubé broky. Rakety jsou prováděny čtyři na obalu a jsou přepravována návěsu. Patriot protiraketový systém sahá přinejmenším do 20 let. To bylo původně navržené jako raketa protivzdušné obrany na sestřelit nepřátelské letouny, v první válce v Perském zálivu. Když ta válka přišel, armáda chtěla použít k fotografování stanoví pluje, ne letadel. Air Force Irácký nebyl tak velký problém, ale armáda strach o pluje. A tak se pokusili upgrade Patriot. Záchytný nepřítel střela jede MACH 5 se děje být dost náročné. Ale když byl Patriot spěchal do provozu, armáda si nebyl vědom iráckého úpravy, které udělali jejich Pluje téměř nemožné zasáhnout. Co se stalo je Pluje, které byly přichází v byly nestabilní. Byli viklání. Důvodem pro to bylo, že Iráčané, aby si 600 kilometrů mimo a 300 km doletu, se hmotnost z přední hlavice a z hlavice lehčí. Takže teď Patriot se snaží přijít na Scud, a většina čas, drtivá většina času, by se Jen podívejte se v Scud. Jakmile provozovatelé systém Patriot, si uvědomil, Patriot minul svůj cíl, že odpálil Patriot hlavici. Aby se předešlo možným obětem, bylo dovoleno k pádu na zem. To bylo to, co většina lidí viděla, jak velké ohnivé koule na obloze, a nepochopení, jak zachytí jaderných hlavic Scud. I když, na noční obloze, Patriots se zdá být Úspěšně zničené Pluje na Dhahran, mohlo by být chyba týkající se jeho výkonu. Tam, na vlastence radarový systém ztratil stopu příchozí Scud a nikdy zahájena z důvodu k softwaru chyby. To bylo Izraelci poprvé objeven, že čím delší systém byl na, větší časový nesoulad se stal, kvůli hodiny vložené do systému v počítači. Asi dva týdny před tragédií v Dhahran, že Izraelci hlášeny na ministerstvu obrany, že Systém byl ztrácíme čas. Po osmi hodinách provozu, všimli si, že Systém byl stále znatelně méně přesné. Ministerstvo obrany odpověděl tím, že řekne všechno The Patriot baterie nenechat systémy po dlouhou dobu. Nikdy neřekl to, co dlouho byl - 8 hodin, 10 hodin, 1000 hodin. Nikdo nevěděl. Patriot baterie umístěná v kasárnách v Dhahran a jeho nedostatky vnitřní hodiny byl na více než 100 hodin na noc února 25th. Je sledován čas s přesností na asi desetinu sekundy. Nyní desetina druhá je zajímavé číslo, protože nemůže být vyjádřen v binární, přesně, což znamená, že nemůže být vyjádřen přesně v jakékoli Moderní digitální počítač. Je těžké uvěřit. Ale používat to jako příklad. Pojďme se počet třetiny. Jedna třetina nemůže být vyjádřen v desetinné, přesně. Jedna třetina je 0,333 děje na nekonečno. Neexistuje žádný způsob, jak to udělat, aby s absolutní přesností v desítkové soustavě. To je přesně stejný druh problému, co se stalo v Patriot. Čím déle systém běžel, horší chybě v čase stal. Po 100 hodinách provozu, chyba v té době byl pouze asi jedna třetina sekundy. Ale pokud jde o cílení raketu cestování na MACH 5, to mělo za následek sledování chyb více než 600 metrů. Bylo by fatální chyba pro vojáky na Zahránu. Co se stalo, je spuštění Scud byl detekován včasného varování satelity a oni věděli, že Scud přichází v jejich Celkový směr. Oni nevěděli, kde to přichází. Bylo nyní na radaru složky Patriot systém, brání Dhahran, lokalizovat a sledovat příchozí nepřátelské rakety. Radar byl velmi chytrý. Ty by vlastně sledovat pozici Scud a pak předpovědět, kde to asi bude příště radar poslal puls ven. , Která byla nazývána rozsah brána. Poté, co Patriot rozhodne dost času uplynulo jít dozadu a zkontrolujte následující umístění tohoto zjištěného objekt, se vrátí zpět. Takže když se vrátil na špatné místo, pak nevidí námitky, a to rozhodne, že tam byl žádný objekt. Byl to falešný detekce a kapky na trať. Příchozí Scud zmizel z obrazovky radaru. A vteřin později, narazila do kasáren. Scud zabil 28 a byl poslední výpověď během první válka v Zálivu. Tragicky, aktualizovaný software dorazil Dhahran následující den. A software chyba byla stanovena, uzavření jedné kapitoly v ustaraný historie Patriot rakety. PATRIOT je vlastně zkratka pro "sfázovaných sledování Úsek TARGETu. " Dobře, tak mnohem víc smutný výsledek není zcela pochopení tohoto světa. A Takeaway, skutečně, z filmu je, že řešení tam byl restart systému protiraketové obrany každý jednou za čas. A tak znovu, je jedním z cílů tohoto kurzu, rozhodně na více skromného měřítku než tyto aplikace, je Opravdu přejdi na každého z nás oči do přesně tak, jak jste jít o Stroje na výrobu dělat to, co od nich chcete dělat a jak jdete o tom, že správně, zatímco na cestě dělá dobře, elegantně, a tak dále. A tak dnes, pojďme se ponořit do trochu více, ale tak, že se ne příliš rychle, a to zejména pro ty méně pohodlné, ale také tak, že se může zachovat zájem ty pohodlnější, pojďme rychle začít s trochou z rekapitulací některé z těchto myšlenek. A opět, ptej, jak osobně, nebo on-line, máte-li otázky tak můžeme udržet všechny na stejné stránce. Takže CS50 spotřebiče, rychlé krok zpět, je co, svými vlastními slovy? To je v pořádku, pokud máte tušení, co tato slova mohou být ještě. [Neslyšitelné] Dobře, tak univerzální rozhraní pro - že můžeme všichni sdílet. Absolutně. Takže jsme mohli, například, ti jít na některé webové stránky, stáhnout tento software pro Mac OS. Stáhněte si tento software pro Windows, konfigurovat tímto způsobem a že. Ale realita je pak narazíme na nespočet technických podporovat problémy. A také v těchto dnech, hodně z toho, co se děje na straně serveru, ve světě výpočetní techniky, a to zejména pokud jde o vývoj webových aplikací a webových aplikací, je ve skutečnosti často provádí na Unix nebo Linux počítačů, na rozdíl od Macs nebo Windows PC. Takže mezi upsides, pak použití tuhle věc nazývá CS50 Appliance je budeme všichni mít stejné prostředí. Takže všichni jsou na stejné stránce bez ohledu na to, jaký hardware přišel do areálu s, ale také bude fušovat do přesně ve stejném prostředí, které budete používat k Semestr Konec i pro vývoj webových, stejně jako v Budoucnost reálných aplikacích jejich. Takže konkrétněji, CS50 Appliance je zdarma kus software, který vám umožní spustit jiný operační systém, Linux, v tomto případě, na svém počítači, v okně. Nyní si můžete nejen stáhnout spotřebič. Potřebujete program, se kterým se hrát nebo spustit přístroj. A ten kus softwaru, je obecně známý jako hypervisor. Hypervizory přicházejí ve formě produktů, jako jsou VMware, Virtual Box, Parallels. Všechny druhy společností, aby software, a to jak zdarma a obchodní, podobný. Co uvidíte v problému Set 1 jsou instrukce o tom, jak získat zdarma software, s nimiž se spustit CS50 Appliance. A jakmile to uděláte, budete mít v okně na vašem počítači Mac nebo PC, desktop prostředí, které vypadá docela jako to, kde má v nabídce Start-jako věc levém dolním rohu. Má domovskou složku, nebo domovský adresář, v levém horním rohu tam, může odpadky, a tak dále. Takže budeme šprýmaři odděleně potřebné údaje, jak jsme jít. Ale teď pojďme začít se ponořit do C. Takže C je to programovací jazyk, podobný v duchu, aby Scratch, ale daleko méně grafické, ale ironicky, pokud mocnější, jakmile se dostanete důvtipný s ním. Takže v C, píšeme programy psaním zdrojového kódu, který je Tento anglický-jako syntax, podobně jako ponožky prokázání, že jsme minule, která vám umožní vyjádřit sám sebe docela přesně, pokud arcanely, k počítači. Takže jaký druh výrobku softwaru si budete skutečně potřebovat psát programy v jazyce jako C, zakládají na našich konverzace v pondělí? [Neslyšitelné] OK, stačí textový editor. Nepotřebujete žádný speciální software samo o sobě psát programy. Potřebujete k tomu jen textový editor, jako je Poznámkový blok, v systému Windows, TextEdit na Mac, nebo něco, co nazývá gedit, ve světě Linux, který budeme používat tu. A to je, psát programy. Ale psaní je jen polovina z rovnice. Potom je třeba spustit. Aby však bylo možné spouštět programy - Nelze spustit zdrojový kód. Ty místo toho dělat to, co k ní jako první? Jo. DAVID J. Malan: Musíte zkompilovat. A někdo jiný, sestavování zdrojového kódu znamená - [Neslyšitelné] DAVID J. Malan: Přesně tak. Překládat do nul a jedniček. Protože všechny z nás, v těchto dnech, mají počítače, které mají procesory, téměř všechny, které jsou vyrobeny společností s názvem Intel, a Intel Inside, znamená, že je to mozek uvnitř vaší počítač, známý jako CPU. A jedna z věcí, které ten mozek dělá, je, že ví, jak pochopit zákonitosti nul a jedniček. To ví, co vzor bitů představuje Kromě toho, co vzor představuje součty a rozdíly, co se vzor bity představují tisku, a vytváří slyšitelný zvuk. Takže ve zkratce, CPU, spolu s operačním systémem, který je kus softwaru, který běží na procesoru, abych tak řekl. Společně tyto dva kusy vědět, jak spustit programy, které my lidé psát. Takže když jdu do CS50 Appliance tady, musím otevřít up textového editoru a můžu přístup k této v několika ohledech. Můžu buď jít do menu, programování, a pak jsem si vybrat - Ne, není to menu. Mohu jít k Příslušenství / gedit zde pro otevření můj malý textový editor. Nebo přesněji řečeno, mohu na tuto malou ikonu ve spodní části levém rohu. A teď jsem si toto prostředí zde. Je to docela připomíná jednoduchý textový editor, jen s jeden nebo dva rozdíly. V horní části, kde je kurzor blikající nyní, to je místo, kde Mohu začít psát svůj kód. Ve spodní části je to, co nazývá okno terminálu. A jaké věci mohu dělat v této tzv. okno terminálu? [Neslyšitelné] Dobře, tak budu spouštět příkazy. A některé z těchto příkazů se běžel v pondělí bylo trochu mystické na první, ale ls pro seznam, cd pro změnu adresáře, rm, pro odstranění. Takže je to něco jako old-school způsob navigace vaší počítač, pouze pomocí klávesnice a textové příkazy, a ne, obecně, použití myši. Ale uvidíme, netrvalo dlouho, to vlastně nám dává trochu více síly a trochu více přesnosti, s nimiž se vyjádřit se. A pak tady na levé, jsme jen tak vidět, jak jsme začít psát software, trochu shrnutí program, který jsme napsal vlevo nahoře. Ale uvidíme, že zase zanedlouho. Takže pojďme něco udělat poměrně jednoduchý zde. Dovolte mi, abych nejprve jít dopředu a jít do souboru, Uložit, a já jsem jen bude klikněte na jharvard zde, přes vlevo, a jharvard je opět jméno pro mé domovské složce, my osobní soubory, mi, že jsou nyní John Harvard, jako všichni z vás brzy bude John Harvard v tomto prostředí. Má tento domovský adresář, My Documents a tak dále, že chci zachránit, teď, tento soubor palců Takže budu říkat hello.c. Pak jsem jít dopředu a klepněte na tlačítko Uložit, a teď, co mám tady, je karta volal hello.c, tak jako jiný typ editoru. Takže teď mi dovolte pokračovat a začít psát program. int main (void). A pak jsem minule, printf, pro tisk formátu, ("Hello, world!" );. Téměř kompletní. Ale já jsem chybí pár detailů. Co chybí z tohoto programu, který jsem opravdu potřebují pro to vlastně kompilaci? Jo. [Neslyšitelné]? DAVID J. Malan: Jo, tak musím zahrnout standard I / O knihovny. Takže to musí jít nad hlavní, tak jsem jen tak aby určitý prostor pro to tam. A já budu dělat # include . A všimněte si lomené závorky tam. A jak stranou, gedit je trochu uživatelsky přívětivý, pokud někdy trochu matoucí, v tom, že se snaží pomáhat vaší Oči upozornění, co vedení s tím, co. Takže skutečnost, že můj kurzor je hned vedle tohoto úhlová držák, všimněte si, jak je to zdůraznění druhé úhlová Držák a tohle. A to je jen k tomu mou pozornost na skutečnost, že jsem mají symetrii. A symetrie v programování je obecně dobrá věc. Podobně, když jsem pohnout kurzorem na konec, všimněte si, jak Složené závorky line up ukázat, že ano, mám otevřený a uzavřený jeden, abych tak řekl. Dobře, a co mohu udělat jednu věc. Není to nezbytně nutné, ale dobré praxe, tj. vrací 0.. A return 0 co dělá pro nás? Nebo znamená co? [Neslyšitelné] DAVID J. Malan: Ale nic se neděje. A upřímně řečeno, že je to těžké pro mnoho pokazit v naprogramovat tento krátký. Takže jsem jen výborný jasné, že je vše v pořádku. Já, člověk, když jsem spustit tento program, bude pravděpodobně nikdy vidět, že 0. Obecně platí, že jsou tato čísla, aby se vrátil z hlavní pouze vychovávat své hlavy k lidem, když se něco pokazí. A ty se trochu pop-up říká systémová chyba, jeden, dva, tři, nebo bez ohledu na počet byl, že byl vlastně vrátil. Takže něco v pořádku s tím? [Neslyšitelné] DAVID J. Malan: Takže to není tak funkční omyl ale estetický. Asi bych měl dát do znakem nového řádku tam konec tohoto řetězce, takže jsme vlastně přesuňte kurzor na další řádek, a program, který vypadá trochu hezčí. Takže teď mě nech jít dolů do mého okna terminálu a zoom zpět dovnitř A tahle věc tady, je to jen výzva. Je to prostě mi to připomněl, kdo jsem, jharvard @ spotřebič, kde Spotřebič je název počítače jsem na. V závorkách jsou to vlnovky, klikyháky symbol, který představuje to, co? Diváků: Home adresář. DAVID J. Malan: Domovský adresář. Takže to je jen zkrácený zápis pro ostatní jste v Vaše osobní složku, kde všechny vaše soubory jít ve výchozím nastavení. Takže teď, tady, můžu zadat ls pro seznam. A jediné, co jsem vidět zde v tuto chvíli je hello.c. A to je dobře, protože jsem právě napsal. Tak nech mě jít dopředu a to, aby ahoj. A všimněte si, nebudu psát, aby hello.c. Místo toho, já jsem jen psát základní název souboru, ahoj. A aby, jak jsme viděli v pondělí, bude jen usuzovat, že chci . c. souboru. Takže teď jsem napsal, aby ahoj. Teď vidím tuto poměrně dlouhou příkaz a bude pokračovat vidět to znovu a znovu. Ale aby bylo jasno, řinčet, slovo, které právě objevil, že je to skutečný kompilátor. Udělejte je jen nástroj sestavení. Je to jen další uživatelsky přívětivý program, který šetří mi, že v dlouhodobě, od nutnosti psát z neuvěřitelně únavné dlouhé Příkazy líbí. Takže byste mohli spustit řinčet ručně. Dalo by se napsat všechno ručně. Prostě dostane velmi únavné. A tak, aby je jen program, který zjednodušuje naše životy a běží složitější příkazy pro nás. Dobře, tak co teď souboru bych měl mít v mém aktuálním adresáři? Nejen hello.c, ale také ahoj. Takže když chci spustit ahoj, připomínám, že říkám dot lomítko, kde tečka znamená jít do aktuální složky, ať jste kdekoli jsou, a pak spustit program s názvem ahoj, a opravdu, teď, Mám Hello World. Dobře, nějaké otázky na pracovním postupu nebo syntaxe co jsme právě udělali? Dobře, takže se pojďme věci do zářezu znovu. Tak tohle byl nezaujatý jen napsat program, který pouze někdy říká ahoj, svět. Takže jsme změnili to, v pondělí, říkat, ahoj, David. Je to trochu osobní, ale stejně pevně dáno jako první verze. Takže není všechno, že přesvědčivé. Ale existuje, v C, funkce jistě kromě tisk, funkce, které vám umožní získat vstup od uživatele. A jak jsme to udělali, druhý den, a to takto. Než jsem skutečně vytisknout něco, jsem se poprvé dostal něco od uživatele. Tak mě nech dělat to znovu. String s, kde s je jen libovolný název, tady, pro string, rovná GetString. Takže to, co bylo GetString? Je to samozřejmě dostane řetězec, na základě jeho jméno. Ale co to je, více technicky? Je to funkce. Takže je to funkce, která nepřijde s C na sobě. CS50 personál napsal. A tak k použití, můžete nejen patří stdio.h, Také je potřeba zahrnout co? Jo. Takže cs50.h, která je jen soubor jsme psali před několika lety. Instalovali jsme jej na spotřebiče pro vás spolu všechny standardní souborů. A tak v těchto prvních několika týdnů po třídě, budeme používat to jen zjednodušit proces dělá velmi základní věci, jako dostat vstup od uživatele. Vzhledem k tomu, jak uvidíme za pár týdnů, jak se uživatel vstup do jazyk C je ve skutečnosti překvapivě složitý, zejména proto, že nevíte předem, obvykle, jak mnoho věcí je uživatel bude psát dovnitř A když nevíte, kolik dat se očekávat, nemusíte vědět, kolik paměti přidělit. A pokud jste skutečně máte kontradiktorní uživatele, který se snaží nabourat se do vašeho systému, zhroucení počítače, dobře, obvykle první metoda útoku je, stejně jako já na Pondělí, zadejte celý dlouhý sled náhodných znaků, Enter, a uvidíme, co se zlomí. Protože obecně, pokud se program přestávek, které naráží na bezpečnostní chyba, potenciálně. To jistě naznačuje na vás, programátor, který učinil chyba, ale nebezpečně, možná jste udělali související s bezpečností chyba, a obecně budeme vidět, že to je, jak se stroje ohrožena k tomuto dni, a to jak ve světě webu a programů na příkazového řádku, jako je tento. Dobrá. Takže string s rovná GetString. Takže konkrétněji teď, co na trati: 6 dělat? Takže funkce na pravé straně dostane řetězec, bere kolik argumenty? Dobře. Proto nikdo. Trochu zdravý rozum zkontrolovat. Argument, opět, je jen vstup do funkce změnit jeho výchozí chování nějakým způsobem. Ale v tomto případě, nechci měnit chování GetString. Jen jsem se chtěl dostat řetězec. Tak jsem dal nic v závorkách, a pak jsem dal středník demarking konec řádku kódu. Nyní, rovnítka neznamená rovné, samo o sobě. To znamená, že přiřazení, což znamená, že bez ohledu na dal dostane výstup na pravé vnitřní co je na levé straně. Takže na levé straně, můžeme říci, že jsme deklarovali string volal s. A konkrétně, jsme přidělené paměti uvnitř které dáme na kousky, které představuje posloupnost znaků. Ale pro dnešek, jsme přiděleny nebo prohlášeno za řetězec. Dobrá. Takže teď poté, co jsem to udělal, chci připojit v hodnotě s, není hodnota David. Tak to je v pořádku, proč? Takže je to jen doslova pevně s. Je to říct "ahoj, s", což není to, co chci. Tak jsem to udělat. Znak procenta je zástupný symbol, ale teď musím předat do tisku i druhý argument. Připomenout, že argumenty funkce jsou od sebe odděleny čárky, takže další čárka tady jsem si po tomto dopisu s. A v této souvislosti nyní, s je proměnná, a printf, po obdržení těchto dvou vstupů - řetězec na levé straně a názvy proměnných sa na P - bude zapojte posledně do bývalé pro nás, a jen vytisknout pěkný krásný řetězec obsahující co to je, že jsme zadali dovnitř Tak pojďme to zkusit. Chystáte se do toho pusťte a oddálit, zpět k mému terminálovém okně. Zvětšení na dně zde. Opište, aby ahoj. Řinčení se zdá k byli znovu spusťte. Jdu psát. / Hello, Enter. Nic se neděje ještě, ale je to na tuto výzvu že mohu psát něco jako Nate, Enter, a nyní máme Dobrý den, Nate. A já si to znovu s Robem, a tak dále. Takže doufejme, že teď tento program se chová, jak jsem v úmyslu. Teď, ne všechny, že uživatelsky přívětivý. Nemám tušení, co se se ode mě očekává. Takže můžeme určitě vyčistit to až trochu. Nech mě jít zpátky sem, a ne jen potápění v a žádá uživatele o řetězec, dovolte mi říci, výslovně uživatel, co jsem očekával. Takže printf ("Zadejte řetězec:" ); Takže žádné proměnné zde. Žádné procent znaky. Jen jednoduchý anglický výraz. Dovolte mi nyní jít ke dnu zde a znovu můj program. Ale nic se zřejmě změnila. Proč? Musím překompilovat ho. Tak chybka se snadno vloudí. Ale musíte nejen uložit soubor, ale překompilovat program. A tak když jsem znovu spustit, aby ahoj, nyní zvonění běží. Teď už může běžet. / Hello. A teď vidím, "Zadejte řetězec:". Dobře. Teď je to trochu více uživatelsky příjemný. Nate, Enter, ahoj, Nate. No, zkusme to znovu a začít přemýšlet o rohových případech. Takže stejně jako v Scratch, budete podporovat nebo jsou podporovat v spec na druh přemýšlet o tom, co by se mohlo jít špatně, když nemáte předvídat všechno uživatel mohl udělat. Chyby, a proto může následovat. Takže zadejte řetězec - Co je rohová případ? Co je to scénář, který jsem, programátor, nemusí mít Předpokládá se? Jo. Dobře. Takže, co když jsem psát v řadě, jako je tento? Dobrá. Takže to ještě funguje. Gramaticky nedává smysl. Ale aspoň program funguje. Co je další roh případ? Něco, co jsem nečekala. Jo? Dobře. Takže bychom mohli udělat něco jako opravdu, ale opravdu velké číslo. Takže jdeme na to tady. Dovolte mi, abych vzdálíte na vteřinu, dovolte mi, abych zmínil. Nelze kopírovat a vložit sem. Dobrá. Takže nemohu kopírovat a vložit do této terminálovém okně, takže budeme také jen simulovat. Dovolte mi, abych oddálit, bude zabalit. Nebudu dělat to příliš dlouho, protože to nebude skutečně rozbít v tomto programu. Ale to mohlo. Enter. Ale to se nestalo. Dobrá. Ale je to skutečný roh případ. A jediný důvod, proč se choval správně, tak mluvit, je proto, že CS50 funkce GetString je vlastně navržena pod pokličku, jak uvidíme za pár týdnů, automaticky přidělit více a více paměti RAM, stále více a více paměť od operačního systému, když si uvědomí,, wow, jste opravdu zadali v něco docela dlouho. Nyní, to je trochu lež. Pokud bychom skutečně zastavil na nějakou dobu a jsem psát v něco jako 5000000000 znaků na klávesnici zde, nebo opravdu hit copy-paste docela dost, jsme dost možná může způsobit, že program na zhroucení. Jen trochu těžší simulovat, že s konečnou množství času. Co je další roh případ, že bychom mohli zkusit? Jo? Jo. Tak proč ne my odpovídáme nic? Takže ve skutečnosti máme na nějakou akci, protože jinak Program se bude sedět tam bliká celý den. Ale když jsem jednoduše stisknout Enter - OK, teď, stále vypadá špatně. Copak pád, ale možná je teď příležitost začít provádět více přísný program že ve skutečnosti kontroluje. A pokud řetězec, věta, slovo, které jsem zadali má délku 0, dobře, možná bych měl křičet na uživatel, nebo mu říct, nebo ji zadat řetězec znovu tak, aby jsme vlastně dostat to, co vypadá jako správné chování a ne Jen kompletní dohled z mé strany. Otázka v zádech? Desetinné číslo. Takže jsme si mohli vyzkoušet, že taky. 1,10000005. Zdá se, že takhle to bude jen práce skutečně v pořádku. A skutečně se očekává. I když jsme možná jste zadali, že číslo neexistuje, nebo větší množství dříve, si uvědomit, že když jsme psaní uživatele vstupní a my jsme pomocí GetString funkce, není ohledu na to, jestli to, co píšu vypadá jako číslo. Připomeňme si, že podle ASCII, vše na svém Klávesnice má číselnou hodnotu, která může být mapována do znak, char. Takže v tomto případě, i když se může zadat číslo, počítač bude myslet na to, abych tak řekl, jako řetězec - něco, co vypadá jako číslo, ale je ne vlastně číslo. Ale to je vlastně dokonalý segue, protože teď můžeme vlastně přechod k psaní programů, které používat jiné datové typy. Takže kromě používání znaku, nebo spíše, vedle používání řetězců, uvědomit, že máme jiné datové typy v C, stejně jako v jiné jazyky. Char, jak již název napovídá, je jen jeden znak. Plovák je plovoucí bodová hodnota, a to je jen fantazie způsob, jak říkat reálné číslo - něco, co má desetinnou čárku bod v něm s některými čísly na levé a / nebo pravé. Int je celé číslo, které je stejně jako číslo 123. A teď zajímavější, jsou věci jako dvojníka. Co řekneme double byl naposledy? Je to 64, že jo. Takže vzhledem k tomu, typicky float je 32-bit - takže je to tak dlouho v paměti, používá 32 nul a jedniček na představují hodnoty - double je doslova dvakrát, což Znamená to, že můžete buď představovat větší čísla, nebo můžete představují více přesná čísla. Takže můžete mít více čísel za desetinnou čárkou, ale jako kolega řekl ve videu, i něco jednoduchého, koncepčně jako třetina nemůže být reprezentován přesně podle počítač, protože nakonec vám dojdou bitů, a Proto můžete dělat jen .33333333 tolikrát, na který bod stačí říct, že jsem z reprezentace prostor, musím jen nazývat to den a zastupovat ji poněkud nepřesně líbí. A long long - hloupý název, ale je to proto, že je datový typ známý jako dlouho v C, který shodou okolností je často 32 bitů, stejně jako int je 32 bitů, ale dlouho dlouho obecně 64 bitů. Tak to prostě znamená, že může představovat větší čísla než toto. Dobrá. Takže pokud chceme skutečně začít reprezentovat věci, my může být potřeba více sofistikované typy, a to je důvod, proč máme řetězec. Takže v CS50 knihovně, že soubor s názvem cs50.h, máme vlastně deklaroval, datový typ, abych tak řekl, tzv. string, ale řetězec ve skutečnosti neexistuje. To je opět jeden z těchto vrstev se budeme slupkou zpět na týden nebo dva a vyhoďte ho, a vlastně dívají pod pokličku, co řetězec vlastně je, a jak se zastoupena. Jsme také se podíváme na logické hodnoty. Takže, co bylo bool v kontextu Scratch? Je to pravda, nebo ne. Takže je to jen hodnota, která je true nebo false, zapnout nebo vypnout, 1 nebo 0, ale chcete-li zobrazit svět. Takže v C, a to díky CS50 knihovny, což obsahuje jiné knihovny pod kapotou, máme přístup k datovým typem, který je volal bool, která bude doslova nám umožní přiřadit hodnoty true nebo false na věci v programu. Tak pojďme do toho sem a napsat malý program, který dělá něco zahrnující čísla místo. Tak nech mě jít zpátky do CS50 Appliance, nechte mě jít napřed a vytvořte nový soubor s názvem zde - řekněme něco jednoduchého, jako math.c. Dobrá. A teď jít až na vrchol svého programu, jsem dělat obvyklé - # Include , takže mohu použít printf, int main (void) - vrátíme do, případně, co int znamená tady, co void znamená tu, ale teď, jen vím, že budete muset spouštět programy, jako je tento. Teď budu pokračovat a řeknu něco málo různé - printf ("Dej mi číslo:" );. Pak budu dělat int n = GetInt, protože Ukázalo se, že GetInt je další funkce v CS50 knihovně kromě GetString. A teď jdu dělat něco hloupého, jako "díky pro% d, "pro desetinné číslo, a pak se čárka n, a pak se vrátit 0. Takže znovu, vrátí 0 nemá nic společného s číslem jsem žádá uživatele o. Jen znamená na konci, že všechny, pravděpodobně, je dobře. Tak nech mě jít k mé terminálovém okně zde. Dovolte mi, abych zadejte dělat matematiku, zadejte. A je něco špatně. Udělejte matematika nefunguje. Zde je první z našich chybových zpráv. Proč? Trochu záhadné, ale - Jo. Tak cs50.h. Takže znovu, a to zejména na začátku, budete psát vaše první program pro PSet 1 v sekcích, v úředních hodinách, a upřímně řečeno, bude to ohromující někdy to, co tyto věci jsou vlastně říká. Ale budete realizovat velmi rychle začnou klesat do kbelíků přičemž tato znamená, že jste odešel se od jednoho z # obsahuje v horní části souboru. A zvonění, kompilátor, je informovat vás o toto tím, že říká, spíše fancifully, implicitní prohlášení funkce GetInt je neplatný. Dobrá. Takže co to znamená? To jen znamená, že jste implicitně prohlásil GetInt v pocit, že jste výslovně prohlásil to. Chcete-li explicitně deklarovat int, budete muset naučit Řinčet, že to existuje. A velmi jednoduché řešení pro které je učit jej včetně tohoto jiného souboru, cs50.h, na horní části souboru. Vzhledem k tomu, doslova to, co # include dělá, je to řekne řinčet skoro jít najít soubor s názvem cs50.h, kopírování, vložte jej automaticky do horní části mého programu pro mě, a pak převést zdrojový kód nul a jedniček. Ale to by samozřejmě bylo velmi únavné, pokud se my lidé měli jít kopírování a vkládání těchto velkých souborů po celou dobu, takže # include jen dělá vše automaticky, bez nutnosti muddying můj kód někoho jiného knihovny. A knihovna je jen další soubor, který obsahuje funkce a jiné věci, které někdo jiný napsal, že jsme využití pro naše vlastní dobro. Dobrá. Zkusíme to znovu. Udělejte matematiku. Enter. Dobré. Takže se zdá, že jsem pracoval. Tak ať mi teď běží matematiku;. / Math. Zadejte dává mi číslo, 123. Díky za 123. Nyní se pojďme zkusit jiný rohový případ. Řetězec je docela štědrý, protože řetězec může být cokoliv. Může vypadat jako čísla, vypadat postavy, vypadají jako slova. Ale int je int. Takže teď když jsem těžký uživatele, a to říká: "Dej mi číslo, "co když se snažím udělat něco jako 0,1? No, to je číslo, a to v souladu s gramatika I zde používá, ale pod kapotou, jsem z Předmět pomocí funkce GetInt. Tak uvidíme, co se stane. Zadejte, zkuste to znovu. Dobrá. Nech mě být obtížné a prostě zmáčknout Enter znovu. Zadejte, Enter. Takže teď se zdá, že GetInt je trochu více silnější než GetString. My, pracovníci, které se provádí tak, že pokud se všimnout jste nám nedal int - a int je desetinné číslo obsahující nuly, ty, dvojky, trojky, čtyřky, pětky, šestky, sedmičky, osmičky, nebo devítky. A to je vše. Žádné desetinná místa, žádné znaky, bez interpunkčních znamének. Zdá se, že musíme spolupracovat. Tak zkusím čtyři, pět, šest, a to dostává mě. Takže opravdu, být anální tady, měl bych asi říct "Dej mi číslo ", aby se dopravují k uživateli přesně to, co mám v úmyslu. Nyní se pojďme zamyslet pod kapotou. Nebudeme se dívat na to, jak je cs50.h provedena dnes, že knihovna. Ale jestli to pořád říká opakování, opakování, opakování, jaký programovací konstruovat jsem pravděpodobně pomocí pod pokličku na implementovat, že? Takže jen smyčka, ne? Jeden z nejjednodušších nápadů, které jsme viděli na Scratch. Forever konstrukce, Repeat konstrukce. Lze předpokládat, že v tomto programu, pod kapotou, a to i když je to napsané v C, a ne poškrábání, to dělá něco jako ekvivalent věčně, pokud uživatel nemá napsáno v celé číslo, řekněme opakování, opakování, opakování, opakování, takže nakonec, když to dostaneme celé číslo, pak vymanit z tohoto cyklu. Takže jaké další funkce můžeme používat zde v knihovně CS50 je? No,, druh zřejmých ty alespoň na základě datové typy, které my teď víme existují. Zavedli jsme GetString, GetInt, ale v celé První týdny v termínu, můžete také použít GetFloat a GetDouble a GetLongLong aby se přesně datové typy, které chcete. Vzhledem k tomu, klíč detail je, že na rozdíl od některých jazycích, jako je Python a Ruby, kde nemusíte nutně muset prohlásil datový typ proměnné - nemusíte říkat počítač, jaký druh věcí budete dát do proměnné - v C, musíte být vždy tak přesné. Takže pokud chcete proměnnou s názvem n, kus skladování že v tomto případě se stane, že 32 bitů podle konvence, můžete musím říct počítač, že tyto kousky jsou bude pro uložení čísla - není postava, ne řetězec, ne float. A to řeší problém se efektivně běžel do minulého týdne. Pokud jsme pomocí nul a jedniček čísla představují nejen čísla, ale AS a BS a Cs, jak ve světě, je Počítač bude vědět, že tento vzor bitů ve skutečnosti má představuje číslo 65, na rozdíl od zastupující písmeno, které náhodně, podle ASCII, vzpomínám, byl ekvivalentní k 65? Takže tyto datové typy poskytovat kontext k počítači, takže že neví, jestli se tyto bity musí být vykládán v tom int nebo jako řetězec. Jakékoliv dotazy, pak na to? Jo? DAVID J. Malan: Dobrá otázka. Vezmeme-li z stdio.h, uložíme soubor - dovolte mi, abych šel do okna terminálu a spusťte make matematiky, zoom a zadat - teď jsem si různé chyby, protože jsem implicitně prohlašuje, jakou funkci teď? Printf. Takže teď jsem vytvořil nový problém, jehož řešení je v podstatě stejné. Musím to dát zpátky. PUBLIKUM: [Neslyšitelné] DAVID J. Malan: Oh. Takže když to vezmu z - Dobře, jo. Takže když jsem odstranit standardní I / O knihovny začlenění do zde, a pak říkáš, že když jsem se zbavit printf, se zbavit printf? Ano. To by mělo fungovat, protože jsem už s použitím kteréhokoliv - POZOR. Už jsem jen tak ležet? Oh, dobře. To nebude fungovat, protože o novém chybě, kterou právě zavádí. A tohle je trochu více intuitivní. V čem je problém? Nepoužité variabilní n. Takže tato chyba je výsledkem našeho provedení konfigurace Přístroj být zvláště pedantský, opravdu zařvat si pro každou možnou chybu, i když je to trochu non-fatální chyba takhle - je to opravdu tak velký zabývat, že jsem přidělil int, dát číslo v ní, a potom jen dělal nic s tím? Takže funkčně, no. To není rozbije program. Je to jen trochu hloupé, ne? Žádné hodnoty na které požádaly o změnu této číslo, uložené to v proměnné, pokud jste nikdy dělat nic s tím, ať ji vytisknout nebo uložit. Takže v tomto případě, zvonění připouštění tolik, a to říká nepoužívané proměnné n. Tak jsme to spravit, pokud skutečně chceme. Ale znovu, to není dobré programovací teď. Takže jsem mohl jen udělat - jít sem, dovolte mi, abych je vymazat obrazovku, aby matematiku. To funguje. Teď jsem si spustit můj matematický program, vezme vstup - dobře, to bylo špatné. Bere vstup, a že je vše dělá, v tomto případě. Takže vlastně, pojďme zkusit ještě jeden rohový případ, že bychom nemyslel dříve. V tomto případě - tady, pojďme zpět k té, která je trochu více uživatelsky příjemný. Nech mě jít sem a spusťte make matematiku znovu. Jejda, co jsem udělal špatně? Musím vrátit zpět další. Dobře. Teď jsme zpátky v původním stavu, kde všichni je snad dobře. A teď, když spustím matematiku, 123 Zdá se, že funguje. Ale to není opravdu efektivní důkaz, jen říct v pořádku, že funguje. 789, která funguje. Lhůta pro podání. Protože tam je další roh případy zde. Řetězec se opravdu nám hodně potíže zadáním spousta postav. Ale co když píšu v tomto? Bít číslo 1 mnohem, mnohem zde - v pořádku, je to stále trochu nudné, tak budu zastavit zde, a budu stiskněte Enter. Co se to sakra stalo? Takže to může být ve skutečnosti vysvětlit. Tak se to brát jako binární? Dobrá myšlenka, ale ne, to není fakt, že to vzal jako binární, protože to opravdu, to bylo tak nějak náhoda. Můžeme to udělat znovu. Takže tam je č. 2 v binárním systému, který je asi dost stejně. Enter. Takže to nebyl problém. Co ještě? Přesně tak. Takže myslíte, že zpět na to, co int vlastně je. Je to 32 bitů, které dohromady jsou interpretovány jako číslo. Pokud se mají 32 bitů, to znamená, že každý z kousků může být 0 nebo 1, 0 nebo 1. Takže to znamená, že jsou dvě možnosti pro tento kousek, dvě možnosti pro to, dvě možnosti pro to bit - tak to je 2 krát 2 krát - tak, že je 2 až na 32 síly je celkový počet permutace nul a jedniček, pokud máte 32 Zástupné symboly, nuly nebo jedničky, před vámi. Takže pokud jsem 2 na 32, matematicky, to je to co? Takže je to hodně. Je to 4 miliardy eur, dávat nebo brát. A 4000000000 nezdá být tím, čím byla vytištěna tady. Ve skutečnosti, to vypadá blíže k 2000000000. Ale to není náhoda. Skutečnost, že počítač nesprávně vyložila moje obrovské množství, můj obrovský posloupnost jedniček a pak můj obrovský sled dvojky, jako zhruba 2 miliardy USD, je vysvětleno, jak? Tam je limit na int. Tam je jistě maximální hodnota, kterou lze reprezentovat. Ale je to obvykle 4 mld. Kč, ne? Pokud 2 na 32 je zhruba 4 miliardy, které se jeví jako že je to největší počet. Takže není zbytek, ale dobrá myšlenka. Záporná čísla. Takže pokud máte 4 miliardy možných věcí, které můžete představují s těmito různých obměnách po 32 0s a 1s, dobře, to dá rozum, že my lidé by mohli chtít představují nejen pozitivní celá čísla ale záporná celá čísla. A skutečně, že je předpoklad, že C je. Takže s 32 bity, můžete reprezentují zhruba negativní 2 miliard celou cestu až k pozitivnímu 2000000000. A tak v tomto případě to, co jsme opravdu svědky, je jen třásně kapacity naší celé číslo, a my jsme, tak mluvit, vylila celé číslo. Snažili jsme se nacpat více bitů do něj, než vejde. Takže konečný výsledek je, že jsme v podstatě mají všechny bity 1. Jsme převrátil všechny naše bitů na, jsme se snažili reprezentovat největší možné množství, ale to zjevně není zdaleka dostatečně velké, aby reprezentovat dvě věci, které jsem právě zadané a. Jo? PUBLIKUM: [Neslyšitelné] DAVID J. Malan: Dobrá otázka. Proč prostě nemůžeme představovat, že negativní přihlásit jen jako znak? Tak jsme absolutně mohli, a tak bychom mohli uložit další bit. Ale jste stále bude muset zastupovat tuto pomlčku, a že to bude stát alespoň něco, pravděpodobně trochu. Takže ano, mohli bychom mít 32 bitů použitých pro naše číslo, ale teď potřebujeme další trochu používané pro naši pomlčkou symbol, znaménko minus. Takže teď máme 33-bitové hodnoty, které bychom mohli dělat, ale je to jen ne tak, jak to udělal. Udělali jsme rozhodnutí volání lety, 32 bitů je trochu měrná jednotka zde. Takže budeme používat jeden z těchto bitů účinně představují negativitu, a 31 bitů k reprezentaci čísla. Další otázky? Dobrá. To je hodně. Proč nejdeme dopředu a vzít naše pětiminutovou přestávku tady? Dobrá. Takže znovu, ne přeceňovat matematické aplikace programování, pojďme jen utrhnout z tohoto jeden příklad předtím, než jsme se přestěhovat do jiných konstruktů, právě proto, že bude ilustrovat několik společných klopýtal bodů na některé z základy, pokud jde o psaní programů. V tomto případě, dělá aritmetické výrazy, které mají některé zajímavé význam pro syntaxi. Takže je to jen formule, se kterými se můžeme převést teploty ze stupňů Fahrenheita na stupně Celsia. Pokud nechcete vzpomenout, je to jen vzorec. Takže pokud se připojit Celsia hodnotě 32 stupňů, což je zmrazení, že to bude 32 minus 32 je 0, a opravdu, 0 ve stupních Celsia je také zmrazení. Tak rychlé sanity check tam - to je známá rovnice. Nech mě jít se k zařízení, i když, a začít psaní s názvem programu, stejně jako, f2c, "Fahrenheit Celsius dot c ". A až na vrchol tady, jdu začít s # include stdio.h, a já budu dělat int main (void), a znovu, budeme vracet v budoucnosti, co int znamená tam a co void znamená, že. A teď mi dovolte pokračovat a realizovat program, který v podstatě dělá tento převod pro nás. Takže printf, řekněme, teplota ve stupních Fahrenheita. A pak mě nech jít dopředu a získat hodnotu od uživatele. Jaké hodnoty bych měl dostat od uživatele, pokud chci je, aby mi teplotu ve stupních Fahrenheita? Jo? Co byste navrhli? Jo. Takže float cítí docela rozumné. Máme opět jen málo možností, že jsme viděli doposud. Máme věci, jako char, double, float, int, long long, bool, string. Takže z nich, float cítí docela rozumné. Můžeme použít dvojí, právo, protože pokud skutečně chceme, aby představují lidské teplotu - 98.60000 - můžeme použít 64 bitů k tomu, že, ale to vypadá přezbrojení na teplotě. Tak pojďme s plovákem. Teď potřebuji proměnnou. Jen, aby to jednoduché, budu říkat, že f, ale já mohl jen jak správně nazývat to teplota, ale buď je v pořádku. Takže float f = GetFloat. Jakmile jsem se teď se rozhodli používat GetFloat, když jsem je třeba udělat jednu opravu. Jo. Takže musíme # include , jinak kompilátor bude křičet na nás. Teď, když mám float, nechte mě jít dopředu a dělat konverze. Takže první, dovolte mi, abych také dostat do zvyk zde o komentovat můj kód. Takže znovu, komentář je jen zápis na člověka, který je není součástí programu na sobě, ale to jeden, pomáhá pochopit, co jsi udělal ráno, nebo další měsíc, pomáhá vaše vyučování člověk pochopit, co jsi udělal nebo co jste chtěli dělat, tak je to obecně velmi dobrá praxe. Každých pár řádků kódu, napsat komentář k sami, nebo váš kolega. Tak tady, budu říkat, "Zeptejte se uživatele na teplotu." Nemusí to být kompletní věta, jen krátká fráze. Ale myšlenka komentování v C je, že každý z vašich komentáře by měly posílit vás - nebo, řekněme, TF nebo kolegu - sbírat svůj program a přesně vědět, co to dělá, tím, že tolik čtení kódu, ale čtení připomínky, které by měly být stručné a jasné. Dobře, takže teď mě nech jít dál a říct, "Převést Fahrenheit Celsius. "Takže budu pokračovat, a to, řekněme, float c. Budeme Celsia jako hodnota s plovoucí čárkou. A dovolte mi, abych se bodnout se na tohle. Vzorec je opět tady. Jako 5/9 krát F minus 32. Takže jdeme na to. Takže 5 děleno 9, minus - jejda, jsem pokazil to už. Times. Takže 5/9 krát F minus 32. Takže F minus 32, středník. A teď, tady dole, budu pokračovat a říkají, vytiskněte výsledek. A tato část je snadná. Printf. Jak mám jít o tisku to? No, mohl bych říct "Toto číslo ve stupních Celsia je% f \ n", jen pro některé estetiku. A pak to, co hodnota se chci připojit zde printf je Druhý argument? Dobře. Takže jen c. Takže začneme s tím a pak už jen vrátit 0. Opět, to nemá nic společného s matematikou. To jen znamená, že je vše v pořádku. Nyní, je to správné, tento program? Dobrá. Tak jsem udělal nějaké chyby. I když nemáte tušení, co programovací je můžete třídit zad toho vyvozují na základní škole, co chyby zde může být. Co je to jeden z prvních? PUBLIKUM: [Neslyšitelné] DAVID J. Malan: Jo. Takže nám chybí závorky. Bylo to záměrné, že jsem závorky v keynote posuňte tady, protože je to vlastně tento pojem objednávky operací, nebo priorita, přičemž některé operace - násobení - mají vyšší závazné, mají vyšší prioritu, než věci jako sčítání nebo odčítání. Takže jsme udělali to pro let jen aby bylo jasné, přesně what matematická operace by měla být provedena jako první. Tak jsem měl asi napodobovat přesně to. V opačném případě, je počítač pravděpodobně bude snažit dělat něco jako předěl 5 od 9, pak násobit F, pak odečtěte 32 z celé věci. Což není, ve skutečnosti to, co chceme dělat. Tak pojďme parenthesize. Pojďme přidat své závorky zde, závorky zde. Pojďme si tohle sem. Tady, jsem si všiml další chybu jsem udělal po cestě. Jo? PUBLIKUM: [Neslyšitelné] DAVID J. Malan: Ah. Dobré. Takže jsme vlastně mít stejnou celé číslo Divize vydání z před. I opravit, že se podíváme, co se tento příznak. Ale budeme muset správnému další chyba zde. Jo? PUBLIKUM: [Neslyšitelné] DAVID J. Malan: Ano. Takže, hloupá chyba jsem, ale nesmírně důležité. Počítač nebude jen přimhouřit oči a nechte mi použít kapitálu F, když jsem vlastně deklaroval proměnnou jako malá f zde, v souladu 8. Tak jsem třeba opravit v řádku 11 mi kapitalizace, která Před chvílí byl kapitál F omylem. Co tady? Mělo by to být malými písmeny, jak dobře? Mělo by být, ale to je náhoda. To% f nemá nic společného s proměnnou. Takže jen pro super clear tady, nechte mě jít napřed a přejmenovat, krátce, "teplotu." Dovolte mi, abych přejmenovat Tento "teploty." Dovolte mi, abych to přejmenujete. Protože, znovu,% f globálně znamená, "plovoucí bodovou hodnotu." Nemá nic společného s mým proměnné. Ale "teploty" všude možně je jen trochu rozvláčný, takže jsem jít zpátky do mého malého "f" s. Nyní mi dovolte, abych do toho do mého okna zde. Značka f2c - který byl opět, libovolný název I dal k tomuto souboru. Zdá se, že sestavují. Dovolte mi, abych běžet f2c. Enter. Teplota ve stupních Fahrenheita - pojďme udělat jednoduchý jeden. 32. OK, opravit. Ale, když jsem teď udělat 212 na vaření - damn. Dobrá. Takže, jasně není správné, pokud vaše TF pokusí nejméně dvě hodnoty. Tak v čem je problém? No, už si prstem na to, co je problém. Ale proč je to, že v případě,? Až tady, když dělám matematiku 5 děleno 9. Takže koncepčně, je to naprosto správný. Zcela v souladu se vzorcem. Ale pouze počítačů dělat přesně to, co řekni jim dělat. A to, co jsme skutečně říkat počítač je zde rozdělit celé číslo 5 v celé číslo 9 a dej mi výsledek. Problém ale je, když nemáte divize použitím údajů Typy, výstup je stejný typ dat jako vstupy. A tak jestliže dva vstupy jsou oba ints, výstup bude být int. A tak 5 děleno 9 je bod něco. Ale co je nejbližší celé číslo na něco? Takže, je to vlastně 0. Tak jak jsme se bavili v pondělí, vše, co po desetinné bod dostane zkráceny. Je to prostě dostane vyhodit. Tak to je naprostý omyl, protože jsem mohl stejně dobře vynásobte všechno 0 zde. Nyní, to mohu opravit v několika způsoby. Mohl bych to udělat. 5,0 děleno 9.0. Technicky, jsem ani nemusíte dělat. To se stačí jen, aby jedno z čísel float - nebo dvojité - tím, že desetinnou čárku zde. Vzhledem k tomu, co se teď stane, je při dělení celé číslo od float, nebo double, počítač to bude realizovat oh, jedním z nich je přesnější. Dovolte mi, abych chybovat na straně dává vám větší přesnost než jste zamýšleli. Tak to bude převést výsledek - vrátí výsledek jako desetinné hodnoty, jakož. Tak to bude fungovat. To bude fungovat. A je tu ještě jedna mechanismus, který uvidíme v větší detail příští týden. Můžete si skutečně, jako programátor, řekněte počítač skutečně léčit jeden datový typ jako by to bylo jiné. Takže jsem mohl skutečně udělat. V závorce, mohu říci něco podobného (float), otevřený paren, úzkým paren. A to je to, co se nazývá "lití". Opět, více na tomto příští týden. Ale to je jen programový způsob vyprávění počítač, jo já vím, 9 je celé číslo nebo dlouhé. Já vím, že to není hodnota s plovoucí čárkou. Ale vemte to jako takový stejně. Takže na obsazení datový typ znamená převést od jednoho k druhému. Upřímně řečeno, je to jen trochu ošklivý, takže navrhuji, jdeme zpět na původní návrh jen konverze aby se tyto věci plovoucí desetinnou čárkou hodnoty ručně. Protože teď je to prostě super jasné, co se děje, a to není všechno, že rušivě. Takže pojďme se teď vrátit do svého terminálovém okně. Udělejte F2C. Nech mě jít napřed a spustit tento. A jak stranou, vás nudit psaní těchto příkazů znovu a znovu, si uvědomit, že počítače, jako je Linux tady, mají tendenci být dost chytrý. A pokud jsem narazila Up, můžeme jít přes můj celé historii příkazy, nahoru a dolů. Takže v tomto případě zde, mohu jen jít až spusťte make F2C. Já se křičel na, protože jsem to udělal, že před vteřinou. Je to již aktuální. Takže teď můžu běžet f2c znovu. Zkusme 32 Fahrenheita. Nyní se pojďme zkusit 212 Fahrenheita. Uf. Zdá se, že se do práce. Nyní, je to dobře, ale je to trochu libovolný že Jsem ukazuje šest čísel po desetinných míst. Je to tak? Pokud jste osoba počasí v televizi, že jste trochu doofus pokud čtete teplotu na tento stupeň přesnosti. Tak pojďme zjednodušit tím. Takže pojďme skutečně jít sem, k mému printf. A jo, já chci plout. Ale já chci, aby nyní určit přesnost. A já budu trochu stručné. Já řeknu, dej mi jeden bod po desetinné místo. Takže spíše než říkat% f, budu říkat% .1 f. A to jen znamená, dej mi jednu pozici za desetinnou čárkou. Dobrá. Zkusme to znovu. Dovolte mi, abych znovu spustit po kompilaci. A teď píšu v 32, a já se vrátím stručnější hodnotu. A můžu psát, teď, 212, a získat zpět více stručné hodnota stejně. A je tu další věci, které můžete dělat s printf. Můžete si skutečně určit, jak široký číslo by mělo být. Pokud chcete mít výplň na to, takže můžete zarovnat nebo vlevo zarovnat všechny vaše čísla nebo zkuste centra věci. Takže uvědomila, že existují malé triky, které můžete udělat zde. Ale oni prostě se redukuje na formátu kódů, to, že máme tu. Takže pokud jde o této otázce priorit. To je velmi nudné tabulky projít metodicky. Ale uvědomte si, že autoři C přišli s Pravidla, která specifikují, které provozovatelé mají vyšší přednost, více závazný výkon, než ostatní. Takže vzhledem k tomu, na základní škole, jsme se obecně věděli, že je to násobení a dělení, pak sčítání a odčítání, pak některé další věci. Ve světě programování, je tu mnohem delší seznam věcí. A to není něco, co stojí za zapamatování teď. Dostanete aklimatizovat na to zanedlouho. Ale stejně jako v základní škole, závorky obecně řešit otázky priority, tím, že Super jasné počítač a lidský podobný co je určen. Takže zvažte to jen trochu tahák tam. Ale většina z těchto údajů nebudeme mít na nějakou dobu. Dobrá. Nyní, pojďme vybudovat a odklon od těchto hloupá matematické příklady. Stále používají stejné základy, ale kdo vyjadřování trochu více jako Scratch. Takže v Scratch, měli jsme booleovské výrazy. A v angličtině, booleovský výraz je to, co? True nebo false. Je to něco, co vyhodnotí jako true nebo false. 1 nebo 0. Zapnout nebo vypnout. Ať už chcete nazývat. Nyní v Scratch, jednotlivé díly skládačky vypadal takhle. A to je kombinace, na dně, ze tří dílky. Jedna spojka - něco, co má prázdné a prázdné. A pak dva logické výrazy uvnitř ní. Takže můžete vnořovat Booleovské výrazy získat více složité booleovských výrazů. Například, pokud je sobota, a to je hezké počasí, pak jít ven. Nebo tak něco svévolné takového. Takže se můžete připojit logické výrazy přijít s větší pravdivostní hodnota, jejíž odpověď je založena na těch menších. Nyní, v C, naštěstí, to je mapování vlastně docela jednoduché. Závorky napomoci tomu, aby se situace nevyjasní zde. && Je to, co znamená "a". Tak to je, jak budeme převést tyto bloky od nuly do C. A podmínky, jsme viděli v Scratch, na levé straně strana tam, můžu vyskládat podobně v C. Je-li x menší než y, pak to udělat. Nebo jestliže x je větší než y, pak to. Else logicky musí být stejná, tak říci, , že jsou stejné. Takže nyní můžeme začít budovat tyto věci. Takže pojďme udělat příklad. Dovolte mi, abych otevřít soubor, který je na hřišti internetových stránkách tohoto Jsem napsal v předstihu. To se nazývá nonswitch.c. A uvidíme, proč za chvíli. Takže v tomto souboru - nonswitch.c-- nejprve uvědomit, že je tu celá parta připomínky na vrcholu. To je jen vysvětlení názvu souboru, co to dělá, a tak dále. A to zřejmě ukazuje použití Boolean A-ing - konjunkci dvou výrazů. Takže pojďme se podívat, jak tento program funguje. Můžu zahrnout své dva soubory, cs50.h a stdio.h. Kdybych posunout dolů, nyní, na programu, je to trochu déle než jsme napsal dříve, ale docela čitelné. Tak jsem nejprve vytisknout pro uživatele, na řádku 18, "Dej mi číslo mezi 1 a 10." Tak že je to tady. Teď jsem si na celé číslo. Ale uvědomte si, že GetInt - velmi jednoduchý. Je to prostě dostane int. Bude to, aby to dostat int a ne řetězec nebo float. Ale to nebude dělat jakékoliv hranice kontroly. To nebude filtrovat čísla, aby se mezi určitý sortiment. Takže musíme implementovat, že sami. Takže stejně jako v Scratch, kde bych mohl udělat konjunkci dva výrazy, mohu to udělat v C takto. Je-li n vyšší než nebo rovna 1, a n je menší než a nebo roven 3, budu velmi libovolně vyhlášky, kterou se číslo být malé množství. Jen kvůli prohlášení. Else if n je mezi 4 a 6, print "Vybrali jste si médium číslo. "Else, pokud n je mezi 7 a 10, print" Vybrali jste si velké číslo. "Else tisku" Vy si vyberete neplatný počet. " Protože logicky, že takto, pokud máme vyčerpání náš sortiment. Takže uvědomit to není úplně jak zapsat větší než nebo rovná v matiku. Je to tak? Ty obvykle nakreslit to takhle, s linkou pod ním. Ale není tam žádný takový klíč na mé klávesnice. Takže symbol C pro vyjádření větší než nebo rovná se dva znaky, a symbol po dobu kratší než nebo rovná se dva znaky, stejně. Dobrá. Takže když jsem spustit tento program, budete pravděpodobně uhodnout, co to je dělat. Pokud bych do toho a udělat nonswitch, Enter. A potom spusťte nonswitch. Dejte mi číslo mezi 1 a 10. Chystám se dát mu 11. Vybral jsem neplatné číslo. Zkusím číslo 3. Vybral jsem si malý počet. Takže poměrně přímočará tam. Co když chci změnit chování tohoto programu a něco trochu jiného místo? Nech mě jít dál a říct. Dovolte mi, abych se zbavit toho všeho. A dovolte mi říci, zda (n == 42). A pak budu pokračovat a říct tisk "Ty si vybral Správná odpověď. "Else budeme pokračovat a říct, printf ("Vybrali jste si špatná odpověď ");. Dobře. Jen proto, že. Nyní, o několik bodů můžeme zde. Jednou jsem neměl zadejte symbol, který by si myslel, je nejrozumnějším. Když chci zkontrolovat rovnost, ukázalo se, že nepoužíváte znaménko rovná se. Místo toho použít rovná rovnítko. A proč by to mělo být, jen intuitivně? Jo. PUBLIKUM: [Neslyšitelné] DAVID J. Malan: Správně. Znaménko rovná se již používá pro přiřazení. Někdo se opravdu si to promyslet. A tak teď, když přijde na rovnost testování, musíme být více explicitní, a řekni rovná rovná. Velmi častou chybou je udělat to. A pokud v úředních hodinách, nebo někdy příští týden, nebo v Další dva týdny si něco takového a pak bojovat s ním 10, 20 minut se snaží přijít na to, co sakra chyba je, si uvědomit, že jste jedním z těch, lidé, kteří z této chyby. Takže, Super snadné. Ale cílem je nyní odrazit tuto chybu. To by mohlo hodnotit, protože to, co je to vlastně říká? Je-li n dostane 42. Takže sloveso lidé používají, ústně, vyjádřit Pojem práce je "dostane." Takže pokud n dostane 42. Takže to znamená, přiřadit 42 až n. Teď mám logický výraz v závorce, uvnitř tohoto stavu, jehož hodnota je 42. Je to tak? Protože pokud budete hodnotit zevnitř ven, celkem Odpověď, nyní je 42. Takže pokud jsem se vás na otázku, "jestli (42)," to, co je že vlastně říká? No, logické výrazy pouze true nebo false. 1 nebo 0. Zapnout nebo vypnout. Takže se zdá, že mají rohovou případ tady, kdy všichni náhlé, říkám "pokud (42)". To není logická hodnota. Takže to, co počítače dělat, když je to v podstatě odpovídá něco, co to není 0 je interpretována být pravdivý. 1. On. Všichni jsou funkčně ekvivalentní. Pouze hodnota 0, nebo klíčové slovo false, as potkáme nakonec vidět, je ve skutečnosti falešný. Takže ", pokud (42)" skutečně pravda, protože to je nenulová. Takže přesněji tady, Boolean hodnota opravdu není tak Kolik true nebo false, ale pro tento případě, pokud je 0 nebo nenulová. Takže false false, nebo ne. A to nám umožňuje zahrnout všechny více možnosti v závorkách výrazu. Takže musíme, někdy tak pečlivě, říkají, že toto - if (n == 42). Jednoduše proto, že musíme určit test rovnosti, není přiřazení hodnoty. Co jiného stojí za zmínku tady? Tyto složené závorky jsou skutečně není nutné. Dělal jsem je jen proto, aby se NIT-vybíravý zde. Ale když máte podmínku, která má pouze jeden řádek kód, jako pohodlí, programátoři nemusí používat složené závorky. Postačí jen odrážky, z estetických důvodů, a Poté napište řádek kódu. Pouze tehdy, když chcete napsat dva řádky kódu - pro instance, jinak printf ("Ahoj!"). Pokud chcete udělat to, že je vadný. Můžete odrážka vše, co chceš, ale skutečnost, že máte napsal dva řádky kódu bez použití složené závorky znamená, že tento program nebude fungovat správně nebo mohlo Ani sestavit správně. Takže teď, abych byl upřímný, myslím, že nejlepší zvyk je jen používat složené závorky, a zjistíte, že oni dělají Super jasné, co se děje. Také, jako stranou - zvláště pokud jste mezi těmi, kteří používají doporučené knihy nebo zdroje on-line - si uvědomit, že tam je to pojem stylu programování. A někteří lidé skutečně raději dát složená závorka sem na řádku. Někteří lidé raději dělat směšné věci, Líbí dát je sem. Není špatná odpověď, pokud jde o styl, ale to je v pořádku. Ale někteří lidé to. [Smích] DAVID J. Malan: Tak jsem zmínil teď, jednoduše proto, že jako můžete přečíst na věci v knihách nebo on-line, budete si různé zprávy z různých učitelů a různí autoři. A jen uvědomit, že, funkčně, jsou obecně ekvivalent, ale být konzistentní. Takže v tomto případě, budeme standardizovat na kudrnatý šle seřazovat tady nalevo. Dobrá. Tak pojďme do toho hned a spustit to, a uvidíme, co se stane s tímto programem. Udělejte nonswitch. Pak spusťte nonswitch. Dej mi celé číslo mezi 0 a - takže to není relevantní už, ale já jsem prostě jít na libovolně říct 42. A já jsem si vybral správnou odpověď. No, pojďme si to vlastně v jiném směru. Ukazuje se, že je to nějaký jiný syntax jsme lze použít v programu. Zde je nový kus syntaxe, který je funkčně stejný, ale jen představuje další způsob vyjadřování. Tak tohle je to, co se nazývá "switch". A switch funguje následovně. To trvá, v závorce, hodnotu, kterou chcete "Switch" na. Chcete-li chovat různě v závislosti na jeho hodnotě. Takže to znamená, spínač na hodnotu n. A co to znamená? No, pokud n je 1 nebo 2 nebo 3, jděte do toho a vytisknout "You vybral velké množství "a pak se lámou. Důvodem pro přerušení je, že způsob C funguje je Jakmile najde případ, který odpovídá, začne provádění všechny kód pod ním. Takže pokud mám jeden řádek kódu, jako já tady na lince 27, je se provede. Pokud mohu přidat další řádek sem, dostane vykonán. Další linka zde, dostane vykonán. Program pouze zastaví provádění, co je pod použitelné case, kdy jsem se explicitně říkají "zlomit." Tak špatně. Právě v tomto případě, stejně jako výsledek. Případ 4 nebo 5 nebo 6, podobně, se děje vytisknout zprávu. V tomto případě, střední číslo. Přestávka. Případ 7, 8, 9, 10, bude to vytisknout "Vybrali jste velký číslo. "Break. A pak je tu doslova klíčové slovo názvem "default" to skutečně jako "jiný" konstrukce. Takže nová syntaxe, ale intelektuálně, vůbec nic nového. Je to stejně jako Scratch. If, else if, else, pokud druh bloku. Tak to je zapnutý verze tohoto programu. Povšimněme si ale, že jsme to udělali s čísly zde. Dovolte mi, abych otevřít druhou verzi, jen aby ukázal, něco trochu konkrétnější. Takže tu máme stupňů místo. Ukázalo se, že můžete použít přepínače nejen s čísly, ale na znaků. Ne ve všech datových typů, ale alespoň na charakterech. Takže tady, mohli bychom udělat něco, jako kdyby hodnota C, která Uživatel napsal v, v souladu 19, pomocí funkce GetChar, je kapitál nebo malá písmena, pojďme interpretovat jako třídy, a tvrdí, že si vybral vynikající stupeň. A dolů podél switch, máme jiné pouzdra na "B" s a "C" s, a tak dále. Ale pojďme se teď završují jednu věc. A opět, druh letí některé z těchto příkladů. Ale je to opravdu tak, že jsme mohli aplikovat, nyní - nebo opravdu, jen přeložit je nyní - na C. Tak nech mě jít dál a dělat to. Jdu otevřít nový soubor. A já budu dělat include . A pak budu dělat, int main (void). Dovolte mi, abych tento soubor uložit jako loop.c. Jen jako příklad. A já jdu dál a proveďte následující. Chci psát velmi nudné programu. Tak 10. Pojďme to. 9. Dobrá. Jakmile začnete dělat to v programování, ty jsi pravděpodobně dělá něco špatného. Ale začneme tam stejně. Chybička se vloudila. To je vlastně v pořádku. 7. 6. 5. 4. Nic se nestane, když se dostaneme do 0. 3. 2. 1. Dobře. 0. Odstranit. Dobrá. Takže návrat 0. Takže tento program je zřejmě bude dělat to, co velmi zdlouhavě říká, že to bude dělat. Bude to pro tisk všech těch hodnoty, od shora dolů. Dovolte mi tedy udělat, aby smyčku. A pak - POZOR. Udělejte smyčku. Byl jsem ve špatném adresáři. A teď mi dovolte běžet smyčku. Enter. Woohoo. Very nice. Pěkný, dlouhý program. Dobře, ale teď se na to lépe. Stejně jako v roce Scratch, když jste začal používat opakování konstrukce, místo toho jen kopírování a vkládání všechny skládačky, dovolte mi představit tuhle věc. Takže v C, existují různé smyčkování konstrukty, z nichž jedna vypadá následovně. "Pro" loop má tři věci, oddělené dvěma středníky. A pak, uvnitř těla smyčky, takže mluvit - věci uvnitř složených závorek - můžeme něco udělat znovu a znovu. Takže to, co jsem tady na obrazovce, to je doslova komentář. / / Zde znamená přichází komentář. To není kód. To je jen anglický popis, pro mě, člověka. Takže inicializace, podmínky a aktualizace. No, uvidíme, jak to funguje. To mi umožňuje přepsat tento program takto. Pro - takže tady je můj smyčka - int i - tady je proměnná s názvem "i" - dostane inicializovány na 10. Takže tam je moje inicializace. Chci to udělat smyčku tak dlouho, jak "i" je větší než nebo rovno 0. A při každém opakování tohoto cyklu, chci dělat i -. Takže jsme viděli + + v pondělí. - Je opakem. Že snižuje hodnotu 1. Uvnitř této smyčky, chci skutečně něco udělat. Tak jsem chtěl říct něco jako printf. Nechci říkat 10 teď, protože to je samozřejmě jen bude tisknout stejnou hodnotu. Co chci tisknout místo, pravděpodobně? Jo. Takže "i". Takže% d, i. Takže budu ukrást jeden z těch nápadů od dříve - to náhrada za formát kódů - a pak sem, v dolní části, vrátím 0, jen pro správnou míru. Ale teď, mám víc stručný program. Je to jen pár řádků, a ne asi 10 nebo 11 řádků. Nechte mě jít na můj dotaz tady. Remake smyčky. Znovu smyčku. A zdá se, že je stejný. Nyní je program není zajímavější. Ale teď můžu napsat něco takového. Mohu změnit to 100. Pak mohu překompilovat můj program. A pak jsem si znovu spustit můj program. A teď to jde super-rychle na dnešních počítačích. Ale tam jsem se - a skutečně, můj scrollback vyrovnávací není dokonce jít tak daleko. Tam jdeme. Tak tady to máme všude 100. Ale je to snadné udělat chybu zde. Co se bude očekávané chování, když náhodně udělat? Tak to cítí jako nekonečné. Tak uvidíme, jestli počítač chová. Tak nech mě jít napřed a udělat smyčku. A dovolte mi spustit smyčku. Tak pojďme vrátit k tomu za chvíli. Necháme to běžet. Vzhledem k tomu, co bychom měli počítat až, minimálně? Pravděpodobně nejméně 2 miliardy, když máme tolik bitů, a jsme s využitím pozitivních hodnot. Takže pojďme skočit zpátky. Kromě těchto druhů smyček, máme to, co se nazývá, zatímco smyčky. Takže, stejně jako v Scratch, jste měli Forever bloky, a vy jste měli Opakovat bloky. Podobně, v C, stačí mít jiné způsoby, jak vyjádřit se. Takže budete mít tento pojem cyklu while, který umožňuje Vyjádřete se trochu jinak. A pak máte něco, co se nazývá do-while, který funguje poněkud odlišně stejně. A budeme dráždit ty od sebe v průběhu času. Ale pojďme se podívat na tuto poslední zde. Pokud půjdeme do - stále běží. Je to docela nekonečný. Tak mě nech jít do pozitivní, a ukázat, jak můžeme skutečně upravují vstup uživatele trochu efektivněji. Je to docela krátký program. A máme tady, v hlavní, int n prohlášení. Tak mi proměnnou s názvem n. Teď, jsem doslova řekl "Dělat." A pak mám otevřenou kudrnaté rovnátka, úzkým složená závorka. A pak zjistíte, hned po to, že se říká, zatímco n je menší než 1. Takže si všimnout, že tyto řádky - 19 - 24 - skládat kolektivní a do-while. A opět, nová syntaxe, není nová myšlenka. Je to jen další způsob, jak smyčky, syntakticky. Takže co to dělá? Do následující zatímco n je menší než 1,. Tak co chci dělat? Žádám, abyste mi celé kladné číslo. Pak jsem se skutečně snaží získat celé číslo od uživatele. Ale pokud jde o pořadí operací zde, protože zatímco podmínka je tady, já pak jít zkontrolovat, je n méně než 1? Takže předpokládám, že uživatel - po požadované tímto způsobem - Typy v hodnotovém 0. Tato podmínka bude true nebo false? No, je to vlastně bude pravda. Vzhledem k tomu, n je 0, a 0 je menší než 1. Takže co to znamená? Udělej to znovu. Udělej to znovu. Udělej to znovu. Jen jednou, že podmínka vyhodnocena jako false. Pokud jsem psát 42. No ne, 42 je menší než 1. Proto je tento smyčka se provádí spuštěním. A tak v tomto bodě, bude program říct, díky za za 42, v tomto případě. Nyní, když máte tento způsob vyjádření sebe sama - Neměli bychom čekat na to až do konce. Bude to nějakou dobu trvat. Chcete-li se pokračovat příště, snad. Ale teď, máte možnost na snad rozumět trochu pouťového kejklíře humor. Omlouvám se. To není reprezentativní humoru v informatice svět, ale je to roztomilý. [Směje se] Pojďme konec tohoto záznamu. A uvidíme se v pondělí. [APPLAUSE]