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