[Prehrávanie hudby] ZAMYLA CHAN: Chceli by ste radšej prijímať 10000000 dolárov teraz alebo prijímať peniažky každý deň v mesiaci, kde každý ďalší deň dostanete dvojnásobok haliere vám dostal deň pred? V haliere, budeme dokázať, prečo by ste mali Rozhodne sa haliere. Vašou úlohou je napísať pennies.c-- program, ktorý najprv spýta užívateľa na to, mnoho dní Existujú v mesiaci a potom sa spýta, koľko mincí užívateľa dostane prvý deň. Program by mal teda počítať Suma, ktorá bude mať užívateľ nahromadené na konci mesiac a zobrazí ho. Môžeme rozdeliť tento program do na niekoľko úloh. Budeme potrebovať vyzve na zadanie viac užívateľských vstupov - dni a mesiace, a penny v prvý deň. Musíme sledovať, koľko peňazí používateľ a aktualizovať každých deň, zdvojnásobuje peniažky, ktoré dostávajú. A konečne, tlačíme ich konečná výška, v dolároch. Poďme riešiť vstup užívateľa ako prvý. Idem otvoriť apples.c, krátky program, ktorý sa zaoberá so vstupmi a výstupmi. Na vrchole tu, som zahŕňal niektoré z knižnice, že musím - CS50 knižnica a štandardné I / O knižnice. Vytlačím riadku pomocou printf funkcie z Štandardné I / O knižnice. Ale skutočná nabádanie užívateľa sa deje v súlade s týmto ďalším GetInt funkcie v knižnici CS50. GetInt dostane vstup od užívateľa a zaisťuje, že hodnota je celé číslo. Tak som uložiť vstup užívateľa do celé číslo i, odpočítajte 1 z i, a potom vytlačiť novú hodnotu, keby som. Po kompilácii apples.c použití Príkaz "make jablká," mám jablká spustiteľných súborov. Beh, budem vstup 1. Program mi hovorí, že Mám 0 nechalo jablká. A tak, aby pracoval podľa očakávania. Takže poďme sa tento príkaz znova a vstup záporné 1. Teraz bude mať negatívny množstvo jabĺk nie je naozaj zmysel, ale Program akceptuje, pretože negatívne 1, no, to je celé. A teraz program alebo netvor v programe jej negatívny jablko, a teraz mám negatívna 2 jablká. Hm, tak to je jedna lekcia - aj keď GetInt funkcie a súvisiace funkcie, ako GetFlow alebo GetString ten správny typ dát, môžete sa uistiť, že vstup je Zmysel pre váš program. V haliere, nebude to robiť len výzva na celé číslo, budete musieť vykonať Uistite sa, že používateľ zadá celočíselnú to zmysel vzhľadom na kontext. Mesiac môže mať iba 28, 29, 30, alebo 31 dní. Chceme neustále požadovať platné celé číslo. Ak sa vstupná celočíselnú mimo našu prijaté hranice, budeme viesť k tomu znova a znova, až kým sa nám platné číslo. Spomeňte si na "Opakujte, kým" zablokovať v Scratch? Môžete si podobnú konštrukciu v C pomocou "zatiaľ čo" slučky alebo "do-while" slučka. Kým slučka štruktúra je v stave , Že musia byť splnené telo slučky vykonať. To by malo vyzerať trochu podobný, pretože podmienkou je, rovnako ako Stieracie bloky s uhlami a ide do hranatých zátvoriek o ", zatiaľ čo" slučky. Tak, že podmienka bude kontrolovať, či celé číslo je v rámci príslušnej medze. Môžete vyzvať celé číslo pomocou GetInt a potom spustiť svoj ", zatiaľ čo" slučka, opakovanie riadku a tlač inštrukcie, zatiaľ čo vstup nie je platná. Ďalším spôsobom, aby sa zabezpečilo správne vstup užívateľa je pomocou "do-while" slučky, ktorý je veľmi podobný cyklu while. "Do-while" slučka spustí kód vnútri tela ty a skontroluje či je podmienka splnená alebo nie. To je užitočné pre získanie vstupu používateľa, pretože viete, že budete potrebovať vyzvať aspoň raz. Ak podmienka nie je splnená, program spustí linku po Vaša "do-while" slučka. Keď je podmienka splnená, aj keď, slučka bude opakovať "Do-while" slučka pre overovanie užívateľa Vstup bude vyzerať nejako takto. Prehlasujem, premenné n, GetInt a opakujte dokiaľ n je platný. A tento proces, vysvetlil som bol s použitím celé číslo dátový typ, ktorý budete používať pre dni v mesiaci. Ale my vieme, že počet haliere sa hromadí rýchlo, tak, aby bolo možné uložiť väčšie množstvo, použitie dátového typu LONGLONG, ale pamätajte si, rovnako Princíp validácia platí. Super, takže akonáhle budeme mať dve platné vstupy od užívateľa - dni v mesiaci a penny prvý deň - môžeme prejsť na ďalšiu časť programu. Prvý deň sa užívateľ začína však mnoho mincí, ktoré uvedené a množstvo haliere, že obdržať druhý deň sa zdvojnásobí. Tak to dáva zmysel sledovať z týchto dvoch súm - koľko peňazí a ako užívateľ veľa haliere budú mať. Teraz, robiť niečo pre 28 až 31 deň sa opakujú, takže sa poďme použiť "pre" slučky pre iteráciu dni v mesiac, aktualizácie a celkový cent činiť zakaždým. "Pre" slučka syntaxe obsahuje nasledovné - inicializácia, podmienka, a aktualizácie. Vaša "pre" slučky inicializuje premenná, keď prvýkrát vstupuje do slučky. Ak je podmienka splnená, telo zo slučky budú vykonané. Potom bude aktualizácia vykonávať. Ak je podmienka splnená ešte, slučka bude vykonávať a aktualizovať, a Opakujem, ak Váš zdravotný stav vyhodnotený ako true. Tu je "pre" slučky, ktorá rozdeľuje číslo p o 2 celkom 10 krát. Všimnite si, ako som deklaroval celé číslo p mimo svojej "pre" slučky, takže číslo môže byť prístupný mimo "pre" slučky. Potom, čo uplynul mesiac, je čas povedať užívateľovi, koľko peňazí Dostali. Per spec, musíte oznámiť užívateľovi koľko dolárov, a to, ako veľa haliere, majú. Ale tak ďaleko, že ste sledovali celkom a haliere pomocou LongLongs, ktoré sú celé čísla. Existuje 100 haliere na $ 1, takže ak Množstvo pennies je násobok 100, budete musieť predstavujú desatinné miesta. Zdvojnásobil AUTOTYP umožňuje aby si to urobil. Tak ako sme sa previesť z zastupovania haliere na doláre? Poďme sa pozrieť pi.c. Tento program trvá LONGLONG big_pi a rozdelí ju 100.000 a vytlačí výsledok na päť desatinných miest. Ak by sme chceli zobraziť štyri desatinné miesta, potom môžeme len nahradiť tento číslo tu. Takže poďme uložiť, skompilovať PI a potom vidieť výsledok, ktorý sme očakávať, že bude 3,1415 - prvých päť číslic Pi. Nie je to však. A prečo? No, pretože je big_pi LONGLONG, čo je celé číslo, ktoré nie je Majte prehľad o desatinných miest. Úprava musím aby sa v divízii. Musím pretypovať na double ešte pred delenie, pretože štvorhra nemôže držať sledovať desatinných miest. A ja idem pridať nový riadok Tu pre lepšie formátovanie. A tu ho máme - 3,1416. Môžete si všimnúť, že sa tlačí 3,1416 namiesto toho, 3,1415, ako sa očakávalo. To preto, že v priebehu kola delenie proces, pretože na rozdiel od práve orezávanie hodnotu. Teraz by ste mali byť schopní vytlačiť konečná výška správne, ktorý skončí program. Blahoželáme. Volám sa Zamyla. A to bol haliere. [Prehrávanie hudby]