1 00:00:00,000 --> 00:00:00,493 2 00:00:00,493 --> 00:00:09,860 >> [MUSIC PLAYING] 3 00:00:09,860 --> 00:00:13,520 >> ZAMYLA Chan: Inkább kap 10000000 $ most vagy fogadni 4 00:00:13,520 --> 00:00:17,460 fillérekért minden nap a hónap, amikor minden további nap, akkor kap 5 00:00:17,460 --> 00:00:21,280 kétszer annyi fillérekért meg megkapta a nap előtt? 6 00:00:21,280 --> 00:00:24,010 A fillérekért, fogunk bizonyítani, hogy miért kellene 7 00:00:24,010 --> 00:00:27,000 biztosan venni a fillérekért. 8 00:00:27,000 --> 00:00:29,130 Az Ön feladata az, hogy írni-pennies.c - 9 00:00:29,130 --> 00:00:33,330 olyan program, amely először megkérdezi a felhasználót, hogy hány nap van a hónapban, és 10 00:00:33,330 --> 00:00:38,780 majd megkérdezi, hány fillérekért a felhasználó kap az első napon. 11 00:00:38,780 --> 00:00:41,780 A program ezután kiszámítja a összeget, amelyet a felhasználó nem 12 00:00:41,780 --> 00:00:46,530 végén felhalmozódott a hónap megjeleníteni. 13 00:00:46,530 --> 00:00:49,670 >> Mi lehet megtörni ezt a programot fel egy pár feladatokat. 14 00:00:49,670 --> 00:00:52,830 Majd meg kell kérni többszörös adatbevitelre - 15 00:00:52,830 --> 00:00:55,510 napok, hónapok, és fillérekért az első napon. 16 00:00:55,510 --> 00:00:59,390 Meg kell nyomon követni, hogy mennyi pénzt a felhasználó és frissíti, hogy minden 17 00:00:59,390 --> 00:01:03,060 nap, megnövelve a fillérekért kapnak. 18 00:01:03,060 --> 00:01:06,710 És végül, a nyomtatás utolsó teljes, dollárban. 19 00:01:06,710 --> 00:01:08,570 >> Nézzük tackle felhasználói először. 20 00:01:08,570 --> 00:01:11,560 Fogok nyitni apples.c, rövid program foglalkozik 21 00:01:11,560 --> 00:01:13,840 A be-és kimenetek. 22 00:01:13,840 --> 00:01:17,310 A legfelső itt, én is néhány A könyvtárak, amire szükségem van - 23 00:01:17,310 --> 00:01:20,450 CS50 a könyvtár és a szabványos I / O könyvtár. 24 00:01:20,450 --> 00:01:24,310 Nyomtatni gyors a printf függvényt a 25 00:01:24,310 --> 00:01:25,660 standard I / O könyvtár. 26 00:01:25,660 --> 00:01:29,740 De a tényleges megkérdezése a felhasználó történik, a következő sorban ezzel 27 00:01:29,740 --> 00:01:33,650 GetInt funkciót a CS50 könyvtárban. 28 00:01:33,650 --> 00:01:38,300 >> GetInt szerzi be a felhasználó, és biztosítja, hogy a bemenet egy egész szám. 29 00:01:38,300 --> 00:01:45,160 Szóval tárolja a felhasználó bevitt egész i, 1 kivonása i, majd 30 00:01:45,160 --> 00:01:47,610 nyomtassa ki az új értéket, ha i. 31 00:01:47,610 --> 00:01:53,050 Összeállítása után apples.c a parancsot ", hogy az alma," van egy 32 00:01:53,050 --> 00:01:55,770 futtatható fájl alma. 33 00:01:55,770 --> 00:01:58,760 Fut,, én bemenet 1. 34 00:01:58,760 --> 00:02:02,600 A program azt mondja, hogy Van 0. alma maradt. 35 00:02:02,600 --> 00:02:05,480 És így, hogy dolgozott, mint várták. 36 00:02:05,480 --> 00:02:09,740 >> Szóval futni még egyszer és a bemeneti negatív 1. 37 00:02:09,740 --> 00:02:13,950 Most, miután a negatív mennyiségű alma nem igazán van értelme, de 38 00:02:13,950 --> 00:02:18,370 a program elfogadja, mert negatív 1., nos, ez egy egész szám. 39 00:02:18,370 --> 00:02:22,740 És most a program vagy a szörnyeteg belül a program eszik negatív 40 00:02:22,740 --> 00:02:26,250 alma, és most már negatív 2 alma. 41 00:02:26,250 --> 00:02:28,610 Hm, szóval ez egy lecke - 42 00:02:28,610 --> 00:02:32,965 bár a funkció és getInt kapcsolódó funkciók, mint például GetFlow vagy 43 00:02:32,965 --> 00:02:38,100 GetString hogy a megfelelő adatok típusát, kell arról, hogy a bemeneti ami 44 00:02:38,100 --> 00:02:41,430 értelme a program. 45 00:02:41,430 --> 00:02:45,500 >> A fillérekért, akkor nem csak a gyors az egész, akkor kell, hogy 46 00:02:45,500 --> 00:02:49,550 arról, hogy a felhasználó bemenet egy egész , hogy van értelme az adott kontextusban. 47 00:02:49,550 --> 00:02:55,690 Hónap akkor csak 28, 29., 30, vagy 31 nap. 48 00:02:55,690 --> 00:02:59,160 Azt akarjuk, hogy folyamatos igény érvényes egész. 49 00:02:59,160 --> 00:03:03,240 Ha be egy egész nem a mi elfogadott határokat, akkor sugallják, 50 00:03:03,240 --> 00:03:07,190 újra és újra, amíg meg nem nekünk egy érvényes egész. 51 00:03:07,190 --> 00:03:10,070 >> Emlékezzünk az "ismétlés, amíg a" blokkolni Scratch? 52 00:03:10,070 --> 00:03:13,070 Tudod, hogy egy hasonló konstrukció C-ben egy "while" ciklus 53 00:03:13,070 --> 00:03:14,830 vagy a "do-while" ciklust. 54 00:03:14,830 --> 00:03:18,280 A while ciklus struktúra feltétele hogy meg kell felelni a 55 00:03:18,280 --> 00:03:20,160 a hurok teste végrehajtani. 56 00:03:20,160 --> 00:03:23,080 >> Ez meg egy kicsit hasonló, mert az állapot, mint a 57 00:03:23,080 --> 00:03:25,970 Scratch blokkokat a szögek és megy a zárójelben 58 00:03:25,970 --> 00:03:27,950 A "while" ciklus. 59 00:03:27,950 --> 00:03:30,600 Tehát ez a feltétel ellenőrzi, hogy az egész belül 60 00:03:30,600 --> 00:03:32,680 a megfelelő határokat. 61 00:03:32,680 --> 00:03:36,620 Lehet kérni az egész a getInt majd végrehajtani a "while" 62 00:03:36,620 --> 00:03:41,030 hurok, megismételve a gyors és nyomtatás utasításokat, míg a bemeneti 63 00:03:41,030 --> 00:03:43,470 nem érvényes. 64 00:03:43,470 --> 00:03:47,610 >> Egy másik módja annak, hogy a helyes felhasználói segítségével egy "do-while" ciklus, 65 00:03:47,610 --> 00:03:50,400 ami nagyon hasonlít egy hurok közben. 66 00:03:50,400 --> 00:03:54,950 A "do-while" ciklus végrehajtja a kódot a testben is, és ellenőrzi, 67 00:03:54,950 --> 00:03:57,150 hogy a feltétel teljesül-e vagy sem. 68 00:03:57,150 --> 00:04:00,590 Ez hasznos lehet a megszerzésére felhasználói bemenet, mert tudja, hogy szüksége van 69 00:04:00,590 --> 00:04:02,980 kérje őket legalább egyszer. 70 00:04:02,980 --> 00:04:07,200 Ha a feltétel nem teljesül, akkor a program végrehajtja a vonal után 71 00:04:07,200 --> 00:04:08,530 a "do-while" ciklust. 72 00:04:08,530 --> 00:04:13,230 Ha a feltétel teljesül, bár, a hurok megismétli 73 00:04:13,230 --> 00:04:17,490 >> A "do-while" ciklus érvényesítésére felhasználó bemenet kinézni. 74 00:04:17,490 --> 00:04:24,530 Kijelentem, változó n getInt és majd ismételje meg, amíg n érvényes. 75 00:04:24,530 --> 00:04:28,040 És ez a folyamat, azt magyarázta, a Az egész-adattípus, amely 76 00:04:28,040 --> 00:04:29,820 akkor használja a napokon. 77 00:04:29,820 --> 00:04:33,560 De tudjuk, hogy a számos fillérekért majd gyorsan felhalmozódik, ezért annak érdekében, hogy 78 00:04:33,560 --> 00:04:39,160 tárolására nagyobb számban használja az adattípus Longlong, de ne feledje, az azonos 79 00:04:39,160 --> 00:04:42,590 elve érvényesítés vonatkozik. 80 00:04:42,590 --> 00:04:47,070 >> Félelmetes, így ha van két érvényes bemenet a felhasználó - 81 00:04:47,070 --> 00:04:49,530 nap a hónapban, és a fillérekért az első napon - 82 00:04:49,530 --> 00:04:52,870 akkor mozog-ra a következő része a programnak. 83 00:04:52,870 --> 00:04:56,680 Az első nap, a felhasználó kezdődik azonban sok fillérekért tudták pontosan 84 00:04:56,680 --> 00:05:00,370 és az összeget a fillérekért, hogy megkapja a következő napon megduplázódik. 85 00:05:00,370 --> 00:05:03,130 Így van értelme, hogy nyomon követhesse A két összeg - 86 00:05:03,130 --> 00:05:08,890 mennyi pénzt a felhasználó, és hogyan sok fillérekért fognak adni. 87 00:05:08,890 --> 00:05:13,760 >> Most, hogy valami 28 31 napig ismétlődő, úgyhogy egy "a" 88 00:05:13,760 --> 00:05:18,220 hurok hatunk végig nap a hónapban frissíti a teljes és a Penny 89 00:05:18,220 --> 00:05:21,010 összeget minden alkalommal. 90 00:05:21,010 --> 00:05:23,550 "A" loop szintaxis tartalmazza a következő - 91 00:05:23,550 --> 00:05:27,510 az inicializálás állapot, és a frissítés. 92 00:05:27,510 --> 00:05:29,590 Az "a" hurok inicializálni változó, ha 93 00:05:29,590 --> 00:05:31,380 belép a hurok. 94 00:05:31,380 --> 00:05:34,860 Ha a feltétel teljesül, a test a hurok végrehajtja. 95 00:05:34,860 --> 00:05:36,860 Ezután a frissítést hajt végre. 96 00:05:36,860 --> 00:05:40,900 Ha a feltétel is teljesül, a loop végrehajtja és frissíti, és 97 00:05:40,900 --> 00:05:45,820 ismételje meg, amíg a feltétel értéke igaz. 98 00:05:45,820 --> 00:05:51,080 >> Itt egy "a" hurok, amely megosztja a p egész szám, 2, összesen 10 alkalommal. 99 00:05:51,080 --> 00:05:55,380 Figyeld meg, hogy én nyilvánította az egész p külső én "a" hurok, úgy, hogy a 100 00:05:55,380 --> 00:05:59,850 integer lehet elérhető kívül "a" hurok. 101 00:05:59,850 --> 00:06:03,620 Miután a hónap telt el, itt az ideje, jelezni a felhasználónak, hogy mennyi pénzt 102 00:06:03,620 --> 00:06:04,790 hogy már ütött. 103 00:06:04,790 --> 00:06:08,740 Per a spec, meg kell mondani a felhasználónak hány dollárt, nem hány 104 00:06:08,740 --> 00:06:10,780 fillérekért, amijük van. 105 00:06:10,780 --> 00:06:14,620 De eddig, akkor már folyamatosan követheti a teljes és a fillérekért a LongLongs, 106 00:06:14,620 --> 00:06:16,640 melyek egész számok. 107 00:06:16,640 --> 00:06:20,560 >> Van egy 100 fillérekért a $ 1, így ha számát egy fillérekért 108 00:06:20,560 --> 00:06:24,860 több 100, akkor be kell képviselnek tizedes. 109 00:06:24,860 --> 00:06:28,060 A megduplázódott Autotype lehetővé te ezt. 110 00:06:28,060 --> 00:06:32,790 Szóval hogyan lehet átalakítani a képviselő fillérekért dollárt? 111 00:06:32,790 --> 00:06:35,330 >> Vessünk egy pillantást pi.c. 112 00:06:35,330 --> 00:06:41,690 Ez a program veszi a Longlong big_pi és osztja azt 100,000, és kiírja 113 00:06:41,690 --> 00:06:44,270 Az eredményt öt tizedes. 114 00:06:44,270 --> 00:06:48,560 Ha akartuk megjeleníteni négy tizedes helyen, akkor csak cserélni a 115 00:06:48,560 --> 00:06:49,760 számát. 116 00:06:49,760 --> 00:06:58,370 Szóval menteni, fordítani pi és aztán majd meglátjuk, az eredmény, amit 117 00:06:58,370 --> 00:07:02,240 elvárják, hogy 3,1415 - 118 00:07:02,240 --> 00:07:04,540 Az első öt számjegy a pi. 119 00:07:04,540 --> 00:07:06,300 >> Ez nem mégis. 120 00:07:06,300 --> 00:07:07,390 És miért? 121 00:07:07,390 --> 00:07:11,920 Nos, azért, mert big_pi egy Longlong, amely egy egész szám, amely nem 122 00:07:11,920 --> 00:07:13,740 nyomon követheti a tizedes. 123 00:07:13,740 --> 00:07:16,850 A módosítás azt kell hogy az, a szétválás. 124 00:07:16,850 --> 00:07:23,300 Meg kell, hogy leadott egy dupla itt korábban választóvonal, mert a páros nem tud lépést tartani 125 00:07:23,300 --> 00:07:25,260 nyomon tizedes. 126 00:07:25,260 --> 00:07:28,080 És fogok egy új sort Itt a jobb formázást. 127 00:07:28,080 --> 00:07:33,090 128 00:07:33,090 --> 00:07:34,230 >> És itt van, hogy - 129 00:07:34,230 --> 00:07:37,660 3,1416. 130 00:07:37,660 --> 00:07:43,520 Talán észrevetted, hogy a nyomtatás 3,1416 ahelyett, 3,1415, mint várták. 131 00:07:43,520 --> 00:07:47,550 Azért, mert ez fordulók során a Division folyamat, szemben a csak 132 00:07:47,550 --> 00:07:50,490 csonkolása az értéket. 133 00:07:50,490 --> 00:07:53,710 Most már képesnek kell lennie arra, hogy nyomtassa ki a végső összege helyesen, ami befejezi 134 00:07:53,710 --> 00:07:54,870 a programot. 135 00:07:54,870 --> 00:07:55,930 >> Gratulálok. 136 00:07:55,930 --> 00:07:57,340 A nevem Zamyla. 137 00:07:57,340 --> 00:07:58,720 És ez volt fillérekért. 138 00:07:58,720 --> 00:08:05,589 >> [MUSIC PLAYING]