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