>> [MUSIC PLAYING]
>> ZAMYLA Chan: Inkább kap 10000000 $ most vagy fogadni
fillérekért minden nap a hónap, amikor minden további nap, akkor kap
kétszer annyi fillérekért meg megkapta a nap előtt?
A fillérekért, fogunk bizonyítani, hogy miért kellene
biztosan venni a fillérekért.
Az Ön feladata az, hogy írni-pennies.c -
olyan program, amely először megkérdezi a felhasználót, hogy hány nap van a hónapban, és
majd megkérdezi, hány fillérekért a felhasználó kap az első napon.
A program ezután kiszámítja a összeget, amelyet a felhasználó nem
végén felhalmozódott a hónap megjeleníteni.
>> Mi lehet megtörni ezt a programot fel egy pár feladatokat.
Majd meg kell kérni többszörös adatbevitelre -
napok, hónapok, és fillérekért az első napon.
Meg kell nyomon követni, hogy mennyi pénzt a felhasználó és frissíti, hogy minden
nap, megnövelve a fillérekért kapnak.
És végül, a nyomtatás utolsó teljes, dollárban.
>> Nézzük tackle felhasználói először.
Fogok nyitni apples.c, rövid program foglalkozik
A be-és kimenetek.
A legfelső itt, én is néhány A könyvtárak, amire szükségem van -
CS50 a könyvtár és a szabványos I / O könyvtár.
Nyomtatni gyors a printf függvényt a
standard I / O könyvtár.
De a tényleges megkérdezése a felhasználó történik, a következő sorban ezzel
GetInt funkciót a CS50 könyvtárban.
>> GetInt szerzi be a felhasználó, és biztosítja, hogy a bemenet egy egész szám.
Szóval tárolja a felhasználó bevitt egész i, 1 kivonása i, majd
nyomtassa ki az új értéket, ha i.
Összeállítása után apples.c a parancsot ", hogy az alma," van egy
futtatható fájl alma.
Fut,, én bemenet 1.
A program azt mondja, hogy Van 0. alma maradt.
És így, hogy dolgozott, mint várták.
>> Szóval futni még egyszer és a bemeneti negatív 1.
Most, miután a negatív mennyiségű alma nem igazán van értelme, de
a program elfogadja, mert negatív 1., nos, ez egy egész szám.
És most a program vagy a szörnyeteg belül a program eszik negatív
alma, és most már negatív 2 alma.
Hm, szóval ez egy lecke -
bár a funkció és getInt kapcsolódó funkciók, mint például GetFlow vagy
GetString hogy a megfelelő adatok típusát, kell arról, hogy a bemeneti ami
értelme a program.
>> A fillérekért, akkor nem csak a gyors az egész, akkor kell, hogy
arról, hogy a felhasználó bemenet egy egész , hogy van értelme az adott kontextusban.
Hónap akkor csak 28, 29., 30, vagy 31 nap.
Azt akarjuk, hogy folyamatos igény érvényes egész.
Ha be egy egész nem a mi elfogadott határokat, akkor sugallják,
újra és újra, amíg meg nem nekünk egy érvényes egész.
>> Emlékezzünk az "ismétlés, amíg a" blokkolni Scratch?
Tudod, hogy egy hasonló konstrukció C-ben egy "while" ciklus
vagy a "do-while" ciklust.
A while ciklus struktúra feltétele hogy meg kell felelni a
a hurok teste végrehajtani.
>> Ez meg egy kicsit hasonló, mert az állapot, mint a
Scratch blokkokat a szögek és megy a zárójelben
A "while" ciklus.
Tehát ez a feltétel ellenőrzi, hogy az egész belül
a megfelelő határokat.
Lehet kérni az egész a getInt majd végrehajtani a "while"
hurok, megismételve a gyors és nyomtatás utasításokat, míg a bemeneti
nem érvényes.
>> Egy másik módja annak, hogy a helyes felhasználói segítségével egy "do-while" ciklus,
ami nagyon hasonlít egy hurok közben.
A "do-while" ciklus végrehajtja a kódot a testben is, és ellenőrzi,
hogy a feltétel teljesül-e vagy sem.
Ez hasznos lehet a megszerzésére felhasználói bemenet, mert tudja, hogy szüksége van
kérje őket legalább egyszer.
Ha a feltétel nem teljesül, akkor a program végrehajtja a vonal után
a "do-while" ciklust.
Ha a feltétel teljesül, bár, a hurok megismétli
>> A "do-while" ciklus érvényesítésére felhasználó bemenet kinézni.
Kijelentem, változó n getInt és majd ismételje meg, amíg n érvényes.
És ez a folyamat, azt magyarázta, a Az egész-adattípus, amely
akkor használja a napokon.
De tudjuk, hogy a számos fillérekért majd gyorsan felhalmozódik, ezért annak érdekében, hogy
tárolására nagyobb számban használja az adattípus Longlong, de ne feledje, az azonos
elve érvényesítés vonatkozik.
>> Félelmetes, így ha van két érvényes bemenet a felhasználó -
nap a hónapban, és a fillérekért az első napon -
akkor mozog-ra a következő része a programnak.
Az első nap, a felhasználó kezdődik azonban sok fillérekért tudták pontosan
és az összeget a fillérekért, hogy megkapja a következő napon megduplázódik.
Így van értelme, hogy nyomon követhesse A két összeg -
mennyi pénzt a felhasználó, és hogyan sok fillérekért fognak adni.
>> Most, hogy valami 28 31 napig ismétlődő, úgyhogy egy "a"
hurok hatunk végig nap a hónapban frissíti a teljes és a Penny
összeget minden alkalommal.
"A" loop szintaxis tartalmazza a következő -
az inicializálás állapot, és a frissítés.
Az "a" hurok inicializálni változó, ha
belép a hurok.
Ha a feltétel teljesül, a test a hurok végrehajtja.
Ezután a frissítést hajt végre.
Ha a feltétel is teljesül, a loop végrehajtja és frissíti, és
ismételje meg, amíg a feltétel értéke igaz.
>> Itt egy "a" hurok, amely megosztja a p egész szám, 2, összesen 10 alkalommal.
Figyeld meg, hogy én nyilvánította az egész p külső én "a" hurok, úgy, hogy a
integer lehet elérhető kívül "a" hurok.
Miután a hónap telt el, itt az ideje, jelezni a felhasználónak, hogy mennyi pénzt
hogy már ütött.
Per a spec, meg kell mondani a felhasználónak hány dollárt, nem hány
fillérekért, amijük van.
De eddig, akkor már folyamatosan követheti a teljes és a fillérekért a LongLongs,
melyek egész számok.
>> Van egy 100 fillérekért a $ 1, így ha számát egy fillérekért
több 100, akkor be kell képviselnek tizedes.
A megduplázódott Autotype lehetővé te ezt.
Szóval hogyan lehet átalakítani a képviselő fillérekért dollárt?
>> Vessünk egy pillantást pi.c.
Ez a program veszi a Longlong big_pi és osztja azt 100,000, és kiírja
Az eredményt öt tizedes.
Ha akartuk megjeleníteni négy tizedes helyen, akkor csak cserélni a
számát.
Szóval menteni, fordítani pi és aztán majd meglátjuk, az eredmény, amit
elvárják, hogy 3,1415 -
Az első öt számjegy a pi.
>> Ez nem mégis.
És miért?
Nos, azért, mert big_pi egy Longlong, amely egy egész szám, amely nem
nyomon követheti a tizedes.
A módosítás azt kell hogy az, a szétválás.
Meg kell, hogy leadott egy dupla itt korábban választóvonal, mert a páros nem tud lépést tartani
nyomon tizedes.
És fogok egy új sort Itt a jobb formázást.
>> És itt van, hogy -
3,1416.
Talán észrevetted, hogy a nyomtatás 3,1416 ahelyett, 3,1415, mint várták.
Azért, mert ez fordulók során a Division folyamat, szemben a csak
csonkolása az értéket.
Most már képesnek kell lennie arra, hogy nyomtassa ki a végső összege helyesen, ami befejezi
a programot.
>> Gratulálok.
A nevem Zamyla.
És ez volt fillérekért.
>> [MUSIC PLAYING]