>> [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]