[Tónlist spila] ZAMYLA CHAN: Vilt þú fá frekar $ 10.000.000 núna eða fá smáaurarnir alla daga mánaðarins, þar hverja degi, færðu tvöfalt magn af smáaurarnir þú fékk daginn áður? Í smáaurarnir, við erum að fara að sanna hvers vegna þú ættir ákveðið að taka smáaurarnir. Starf þitt er að skrifa pennies.c-- forrit sem fyrst spyr notandann hvernig margir dagar eru í mánuðinum og þá spyr hversu margir smáaurarnir notanda fá á fyrsta degi. Áætlunin skal síðan reikna upphæð sem notandinn mun hafa safnast í lok sem mánuði og sýna það. Við getum brjóta þetta forrit upp í nokkra verkefnum. Við munum þurfa að hvetja til mörgum aðföngum notandi - daga og mánuði, og smáaurarnir á fyrsta degi. Við þurfum að halda utan um hversu mikið fé sem notandinn hefur og uppfæra það á hverjum dag, tvöföldun á magn af smáaurarnir sem þeir fá. Og að lokum, prenta við þeirra Endanleg alls, í dollurum. Skulum takast notandi inntak fyrst. Ég ætla að opna apples.c, stutt forrit sem fjallar með inntak og framleiðsla. Efst hér, hef ég tekið nokkrar af bókasöfnum sem ég þarf - CS50 er bókasafn og staðall I / O bókasafn. Ég prenta hvetja með því að nota printf virka frá staðall I / O bókasafn. En í raun vekur á notanda gerist í næstu línu með þetta GetInt virka í CS50 bókasafn. GetInt fær inntak frá notanda og tryggir að inntak er heiltala. Svo ég geyma inntak notandans inn heiltölu i, draga 1 úr i, og þá prenta út nýtt gildi ef ég. Eftir samantekt apples.c nota stjórn "að gera epli," Ég er með executable skrá eplum. Running það, ég inntak 1. The program segir mér að Ég hef 0 epli vinstri. Og svo að starfaði sem búist var við. Svo skulum hlaupa þetta aftur og inntak neikvæð 1. Nú, að hafa neikvæð magn af eplum er í raun ekki skynsamleg, en the program tekur það, því neikvæð 1, og er það heiltala. Og nú the program eða skrímsli inni the program étur neikvæð epli, og nú hef ég neikvæð 2 epli. Hm, svo það er ein kennslustund - jafnvel þótt GetInt virka og tengdar aðgerðir, eins GetFlow eða GetString fá rétt gögn tegund, þú að ganga úr skugga um að inntak gerir vit fyrir áætlun þína. Í smáaurarnir, mun það ekki gera bara hvetja fyrir heiltala, þú þarft að gera úr skugga um að notandi inntak heiltala að skynsamleg miðað við samhengi. Mánuður getur aðeins haft 28, 29, 30, eða 31 daga. Við viljum stöðugt eftirspurn gild heiltala. Ef þeir inntak heiltala utan okkar samþykkt mörk, munum við hvetja þau aftur og aftur, þar til þú gefa okkur gilt heiltölu. Muna að "endurtaka þar" loka í grunni? Þú getur gert svipaða reisa í C nota "á meðan" lykkju eða "gera-en" lykkja. The lykkja meðan uppbygging hefur ástand sem þarf að uppfylla til að meginmál lykkju til að framkvæma. Þetta ætti að líta svolítið svipað, vegna þess að ástand er bara eins og Scratch blokkir með hornanna og fer í sviga að "á meðan" lykkju. Svo að ástand mun athuga hvort talan er innan viðeigandi mörk. Þú getur hvetja heiltala með GetInt og þá framkvæma "á meðan" þinn lykkja, endurtaka að hvetja og prentun leiðbeiningar, en inntak er ekki gild. Önnur leið til að tryggja rétta notandi inntak er með því að nota "gera-en" lykkju, sem er mjög líkur til a while lykkju. Að "gera-en" lykkja keyrir kóðann inni í líkamanum sjálfur og þá stöðva hvort skilyrði er uppfyllt eða ekki. Þetta er gagnlegt til að fá notandi inntak, því þú veist að þú þarft að hvetja þá að minnsta kosti einu sinni. Ef skilyrði er ekki uppfyllt, the program mun framkvæma línu eftir þinn "gera-en" lykkja. Ef skilyrði er uppfyllt þó, lykkja mun endurtaka A "gera-en" lykkja til að staðfesta notanda inntak mun líta eitthvað eins og this. Ég lýsi breytilega N, GetInt, og þá endurtekið þar til n er í gildi. Og þetta ferli, ég útskýrði, var að nota talan-gögn gerð, sem þú munt nota fyrir daga mánaðarins. En við vitum að fjöldi smáaurarnir mun stafli upp fljótt, svo í því skyni að geyma stærri tölur, nota gögn tegund LongLong, en man það sama Meginreglan um fullgildingu gildir. Awesome, svo þegar við höfum tvær gild inntak frá the notandi - daga í mánuði og smáaurarnir á fyrsta degi - getum við flutt inn á næsta hluti af the program. Fyrsta daginn, sem notandinn byrjar með þó margir smáaurarnir þeir greinast og fjárhæð smáaurarnir sem þeir fá næsta dag er tvöfaldast. Svo gerir það vit í að halda utan þessara tveggja magni - hversu mikið fé sem notandinn hefur og hvernig margir smáaurarnir þeir gefa. Nú, gera eitthvað fyrir 28-31 daga er endurtekin, þannig að við skulum nota "fyrir" lykkja til iterate yfir dagana í mánuði, að uppfæra alls og eyri á hverjum tíma. "Fyrir" lykkja setningafræði inniheldur eftirfarandi - sem frumstilling, ástand, og uppfærslu. Þinn "fyrir" lykkja mun frumstilla breytu, þegar það Fyrsta fer í lykkju. Ef skilyrði eru uppfyllt, líkaminn úr lykkja mun framkvæma. Síðan, að endurnýja vilja framkvæma. Ef ástand er enn fullnægt, lykkja mun framkvæma og uppfæra og endurtaka, svo lengi sem ástand þitt metur að sanna. Hér er "fyrir" lykkja sem skiptir að heiltala p af 2 samtals 10 sinnum. Athugaðu hvernig ég lýsti heiltölu p utan mitt "fyrir" lykkju þannig að heiltala er hægt að nálgast utan "fyrir" lykkju. Eftir mánuð er liðinn, það er kominn tími að segja að notandinn hversu mikið fé þeir 'gotten. Og á sérstakur, þú þarft að segja að notandinn hversu margir dollara, ekki hversu margir smáaurarnir, hafa þeir. En svo langt, hefur þú haldið utan um algjör og smáaurarnir með LongLongs, sem eru náttúrlegar tölur. Það eru 100 smáaurarnir til $ 1, svo nema fjöldi smáaurarnir er margfeldi af 100, munt þú þurfa að tákna aukastafi. The tvöfaldast autotype gerir þér að gera þetta. Svo hvernig gera við breytt frá hönd smáaurarnir á dollara? Skulum kíkja pi.c. Þetta forrit tekur LongLong big_pi og skiptir það með 100.000, og prentar niðurstaðan að fimm aukastöfum. Ef við vildum að sýna fjórar aukastaf stöðum, þá getum við bara skipta um þetta tala hér. Svo skulum spara, safna saman PI, og þá sjá niðurstöðuna sem við búast við að vera 3,1415 - fyrstu fimm stafirnir pí. Það er ekki þó. Og hvers vegna? Jæja, vegna þess big_pi er LongLong, sem er heil tala sem mun ekki halda utan um aukastöfum. Breyting sem ég þarf að gera er í skiptingu. Ég þarf að greiða til tvöfalt hér áður deila, því tvöfaldar getur ekki haldið fylgjast aukastafa. Og ég ætla að bæta við nýjum línu hér fyrir betri forsníða. Og hér höfum við það - 3,1416. Þú gætir tekið eftir því að það prentar 3,1416 stað 3,1415 sem skyldi. Það er vegna þess að það umferðir á að deild ferli, öfugt við bara truncating gildi. Nú þú ættir að vera fær um að prenta á Endanleg alls rétt, sem lýkur the program. Til hamingju. Nafn mitt er Zamyla. Og þetta var smáaurarnir. [Tónlist spila]