[Musiikki soi] ZAMYLA Chan: Olisitko mieluummin saada 10.000.000 dollaria juuri nyt tai vastaanottaa penniä joka päivä, jos kunkin seuraavan päivän, saat kaksinkertainen määrä penniä sinua sai päivää ennen? Penniä, aiomme todistaa, miksi sinun pitäisi ehdottomasti ottaa penniä. Sinun tehtäväsi on kirjoittaa pennies.c-- ohjelma, joka ensin kysyy käyttäjältä miten monta päivää on tässä kuussa ja kysyy kuinka monta penniä käyttäjä saavat ensimmäisenä päivänä. Ohjelmassa olisi sen jälkeen laskea määrää, että käyttäjän on kertynyt lopussa kuukausi ja näyttää sen. Voimme ratkaista ohjelmaa pariin tehtäviä. Tarvitsemme pyytämään usean käyttäjän tuloa - päivinä ja kuukausina, ja penniä ensimmäisenä päivänä. Meidän täytyy pitää kirjaa siitä, kuinka paljon rahaa käyttäjä on ja päivittää sitä joka päivä, kaksinkertaistaa määrä penniä, että he saavat. Ja lopuksi, me painamme heidän lopullinen määrä, dollareissa. Katsotaanpa puuttua käyttäjä syöttää ensin. Aion avata apples.c, lyhyt ohjelma, joka käsittelee tulot ja lähdöt. Ylimpänä täällä, olen myös joitakin Kirjastojen että tarvitsen - CS50 kirjasto ja standardi I / O-kirjasto. Olen tulostaa nopeasti käyttämällä printf toiminto vakio I / O-kirjasto. Mutta todellinen kuiskauksen käyttäjän tapahtuu seuraava rivi tämän GetInt toiminto CS50 kirjastossa. GetInt saa käyttäjän syötettä ja varmistaa, että tulo on kokonaisluku. Olen siis tallentaa käyttäjän syöttää kokonaisluvun i, vähennä 1 alkaen i, ja sitten tulostaa uuden arvon, jos olen. Jälkeen kootaan apples.c käyttäen komento "make omenat," minulla on exe-tiedoston omenat. Juoksu, että minä tulo 1. Ohjelma kertoo minulle, että Minulla on 0 omenoita jäljellä. Ja niin, että toimi odotetusti. Joten suorita tämä taas ja tulo negatiivinen 1. Nyt, joiden negatiivinen määrä omenoita ei oikeastaan ​​mitään järkeä, mutta Ohjelman hyväksyy sen, koska negatiivinen 1, no, se on kokonaisluku. Ja nyt ohjelman tai hirviö ohjelman sisällä syö negatiivinen omena, ja nyt minulla on negatiivinen 2 omenaa. Hm, joten se on yksi oppitunti - vaikka GetInt toiminto ja liittyviä toimintoja, kuten GetFlow tai GetString saat oikean tietotyypin, voit täytyy varmistaa, että tulo tekee järkevää oman ohjelman. Penniä, se ei tee vain nopeasti varten kokonaisluku, sinun täytyy tehdä Varmista, että käyttäjä syöttää kokonaisluvun järkeviä annetaan yhteydessä. Kuukausi voi olla vain 28, 29, 30 tai 31 päivää. Haluamme jatkuvasti vaatia kelvollinen kokonaisluku. Jos he syöttää kokonaisluvun ulkopuolella meidän hyväksyttyjä rajoja, me ryhtyisivät uudelleen ja uudelleen, kunnes antaa meille kelvollinen kokonaisluku. Recall "toista, kunnes" estää Scratch? Voit tehdä samanlainen rakennelma C käyttäen "taas" silmukka tai "tee-taas" silmukka. While-silmukka rakenne on kunnossa että on täytyttävä elin silmukan suorittaa. Tämä näyttää hieman samanlainen, koska tilanne on aivan Scratch lohkojen kulmat ja menee suluissa ja "kun" silmukka. Niin, että ehto tarkistaa, onko kokonaisluku on sisällä asianmukaisia ​​rajoja. Voit pyytää kokonaisluku skaalataan GetInt ja sitten toteuttaa oman "taas" silmukka, toistaen nopeasti ja tulostus ohjeita, kun taas panos ei ole voimassa. Toinen tapa varmistaa oikea käyttäjä syöttää on käyttää "tee-taas" silmukka, joka on hyvin samankaltainen kuin Vaikka silmukka. "Tee-taas" silmukka suorittaa koodia kehossa niitä ja tarkastaa sitten onko ehto täyttyy tai ei. Tämä on hyödyllistä saada käyttäjä syöttää, koska tiedät, että tarvitset kysymään ne vähintään kerran. Jos ehto ei täyty, ohjelman tulee suorittaa rivin jälkeen teidän "tee-taas" silmukka. Jos ehto täyttyy, vaikka, silmukka toistaa "Tee-taas" silmukka validointi käyttäjä tulo näyttää jotain tällaista. Vakuutan muuttujan n, GetInt ja toista kunnes n on voimassa. Ja tämä prosessi, selitin, käytti kokonaisluku-tietotyyppi, joka voit käyttää kuukauden päivät. Mutta me tiedämme, että määrä penniä kasaantuvat nopeasti, joten jotta tallentaa suurempi määrä, käytä tietotyypin Longlong, mutta muista samaan periaatteen vahvistaminen koskee. Mahtavaa, joten kun meillä on kaksi voimassa tuotantopanokset käyttäjä - päivää kuukaudessa ja penniä ensimmäisenä päivänä - voimme siirtyy seuraavaan osa ohjelmaa. Ensimmäinen päivä, käyttäjä alkaa Kuitenkin monet penniä täsmentäneet ja määrä penniä, että ne vastaanottamaan seuraavana päivänä on kaksinkertaistunut. Joten on järkevää seurata Näiden kahden määrän - kuinka paljon rahaa käyttäjällä on ja miten monet penniä he annetaan. Nyt tekemään jotain 28-31 päivää on toistuvaa, joten katsotaanpa käyttää "puolesta" silmukka toistaa yli päivää kuukaudessa, päivitys yhteensä ja penniäkään määrä joka kerta. "Sillä" loop syntaksin sisältää seuraavat - Alustuksen kunnossa, ja päivitys. Sinun "for" silmukka alustaa muuttuja, kun se saapuu ensimmäisen silmukan. Jos ehto täyttyy, kehon ja silmukka suorittaa. Jälkeenpäin päivitys tulee suorittaa. Jos ehto edelleen täyttyvät, silmukka suorittaa ja päivittää, ja toista, niin kauan kuin ehto tosi. Tässä "puolesta" silmukka, joka jakaa kokonaisluku p 2 yhteensä 10 kertaa. Huomaa, miten julistin kokonaisluku p ulkopuolella minun "puolesta" silmukka, jotta kokonaisluku voidaan helposti ulkopuolella "puolesta" silmukka. Kun kuukausi on kulunut, on aika kertoa käyttäjälle, kuinka paljon rahaa ne pilalle. Per spec, sinun täytyy kertoa käyttäjälle kuinka monta dollaria, ei kuinka monta penniä, heillä on. Mutta toistaiseksi, olet pidetty kirjaa yhteensä ja penniä käyttäen LongLongs, jotka ovat kokonaislukuja. On 100 penniä $ 1, joten jos määrä penniä on useita 100, sinun täytyy edustavat desimaalin tarkkuudella. Kaksinkertaistui AUTOTYPE avulla voit tehdä tämän. Miten siis muuntaa edustavat penniä dollaria? Katsotaanpa katsomaan pi.c. Tämä ohjelma vie Longlong big_pi ja jakamalla se 100000 ja tulostaa tulos viisi desimaalin tarkkuudella. Jos halusimme näyttää neljän desimaalin paikkoja, voimme vain korvata tätä numero täällä. Joten säästää, koota pi, ja sitten nähdä lopputulos, jota käsittelemme odottavat 3,1415 - viisi ensimmäistä numeroa pi. Se ei ole kuitenkaan. Ja miksi? No, koska big_pi on Longlong, joka on kokonaisluku, joka ei seurata desimaalien. Muutos minun täytyy tehdä on jako. Minun täytyy heittää kaksinkertainen täällä ennen jakamalla, koska nelinpelin voi pitää Seuraa desimaalin tarkkuudella. Ja aion lisätä uuden rivin täällä parempaa muotoilua. Ja tässä meillä on - 3.1416. Saatat huomata, että se tulostaa 3,1416 sen sijaan, että 3,1415 odotetusti. Tämä johtuu siitä kierrosta jako prosessi, eikä vain katkaisua arvo. Nyt pitäisi pystyä tulostamaan lopullinen määrä oikein, joka päättyy ohjelma. Onneksi olkoon. Nimeni on Zamyla. Ja tämä oli penniä. [Musiikki soi]