SPEAKER 1: Räägime vett.
Selle probleemi palume kasutajal öelda meil kaua minutit oma dušš oli
ja siis me arvutada samaväärne arvu pudelit vett
et nende dušš kasutada.
>> Millised on meie Ülesanded Selle probleemi?
Esiteks, me ei kavatse taha kiire ja siis kinnitada
sisend, et kasutaja annab meile.
Kui me tagada, et me on kehtiv kasutaja sisend,
läheme arvutada vastav arv pudelit vett
et kasutaja jooksul olnud oma dušš ja siis me oleme
ütlen neile väljatrükk, et number.
>> Nii saab lahendada meie esimene ülesanne, mis sunnib ja heakskiitmine
kasutaja sisend.
Sel oleme kirjutanud funktsioon te helistasite
get_int asub CS50 raamatukogu.
get_int tagab, et kasutaja sisendite täisarv, nii et kõik positiivsed arvud,
negatiivsete numbrite või null on kõik heaks.
Aga kui kasutaja sisestab midagi muud, nii et kõik tähtedest või numbritest
või koma numbrid, siis kasutaja palutakse uuesti
ja funktsiooni ei võta midagi kuni kasutaja annab neile täisarv.
>> Niisiis, kuidas me kasutame get_int?
Kui avad oma tööruumi ja luua faili nimega integer.c olgem
kirjuta järgmine.
Teemav hulka cs50.h.
See on vajalik, sest get_int on CS50 raamatukogu funktsiooni,
nii et me peame räsimärgi hulka deklaratsioonis, et
kasutada funktsiooni.
Ja siis minu peamine toimida Ma lihtsalt
lihtsalt helistada funktsioon get_int.
>> Nii saab käivitada ja vaata, kuidas see toimib.
Olen juba koostatud, nii olgem lihtsalt minna ja käivitada see programm,
./integer.
Siin on mul kiire ja siin, kus ma sisend väärtus.
Ütle panin lihtsalt mingi täisarvu, 50, programm välja arvatud järgmised ja sulgub
ja ongi nii.
>> Aga öelda, et ma joosta see uuesti ja Ma sisend midagi muud.
Võib-olla, tere.
See ei ole täisarv nii Programm küsib mind uuesti proovida.
Proovime uuesti võibolla kohaga seekord.
0,5, jällegi mitte täisarv nii programm ei aktsepteeri seda
ja siis see mulle uuesti proovida.
Nii saab anda sellele teisele numbrile.
Programm aktsepteerib seda, sulgub ja ongi kõik.
>> Nüüd on meil funktsioon mis võimaldab meil ning tagab
et sisendab kasutaja täisarv, kuid kuidas me saame
tegelikult jälgida täisarv sisestatud kasutaja poolt?
Noh, kõik me teeme on poest See väärtus muutuja, ütlevad n.
Nii et kui ma kuulutada täisarv n, ja seadsin, et väärtus get_int,
siis n siis salvestada mida iganes Väärtustame kasutaja sisestatud.
>> Olgu, nii et nüüd oleme taganud kasutaja annab meile täisarv
ja me teame, kuidas jälgida täisarv, kuid pea meeles,
täisarvud on nii positiivseid kui ka negatiivseid.
Nii et see ei ole tegelikult mõtet kontekstis seda probleemi
et kasutaja võtab dušš kohta öelda negatiivsed 12 minutit.
Seega on meil vaja veenduda, et kasutaja tegelikult annab meile positiivne täisarv.
Nüüd ei ole meil lihtsalt ühe funktsiooni jaoks, et
nii et me lähed on luua, et end.
>> Nii et me tahame pidevalt palub kasutajal
kuni nad annavad meile positiivne täisarv.
Kui ma teen midagi pidevalt siis see on sarnane loop, kordus.
Nii üks konstruktsioone, mida me kasutame C rakendada kordamine ja silmad
on samas silmus.
Nii samas silmus, nagu Siin näidatakse, siis täidab
kõik, mis on keha loop Niikaua kui antud seisundi hindab
tõeseks.
Niipea, kui see tingimus hindab vale, siis
programm jätkab iganes tuleb pärast keha silmus.
>> Niisiis, kui silmad hakkavad tõesti kasulik CS50.
Aga selles konkreetses Juhul, me teame, et me oleme
läheb palub kasutajal vähemalt üks kord ja siis alles loop kui vaja.
Nii et siin jõuame erilist konstruktsiooni ja see on
väga sarnane samas loop nimetatakse do-samas silmus.
>> Nii do-samas silmus täidab keha silmus vähemalt kord
ja siis kontrollib, kas see peaks rahuldama,
vastandina samas silmus, mis seisundi kontrollimiseks
ja seejärel käivitada keha.
Nii do-samas silmus, mida me võiksime teha on kiire kasutaja jaoks täisarv,
ja siis vaadata, kas see on vale või mitte.
Kui see on vale, siis me korrake protsessi küsib kasutaja
annab meile teise täisarv, ja seejärel ainult siis, kui täisarv on kehtiv,
jätkame iganes on hiljem.
>> Nüüd näed, et deklaratsiooni täisarv n
on veidi teistsugune, mida me tegid enne eelmises näites
ja see on, sest ulatus.
Kui olime kuulutas täisarv n sees kere do-samas silmus,
siis me ei pääse et n väärtus väljaspool neid lokkis
traksid näitab keha silmus.
Aga me tegelikult tahame, et pääseda n väärtus hiljem ka meie programmi.
>> OK, nii et nüüd räägime mida see tingimus peaks olema.
Me tahame ainult reprompt kasutaja niikaua n on kehtetu.
Nii et mõtle ise, mida kehtetu täisarvuni näeks
ja seejärel luua loogilisi Väljend väljendada seda.
>> Me peaaegu valmis meie Alamülesande ergutada ja valideerida kasutaja sisend.
Nii saab teha seda veidi natuke kasutajasõbralikumaks
ja annab kasutajale vähe natuke rohkem infot
mida me sundides neid.
Nii saab kiire kasutaja, ühe spec, string minutit.
Nii kasutades oma printf avaldusi teha kindel, et sa mängu see täpselt.
>> Hästi.
Nüüd on meil kehtiv kasutaja sisend, positiivne täisarv
hinna ja mitu minutit Nad veetsid duši all.
Mis siis järgmiseks on arvutada samaväärne pudelite arv.
Mis me teeme siin võiks väga selge teile alguses,
ja see on OK.
Mida me tahame teha, on meil taha harjutama
idee eristusmustrit ja arendada valemid probleem.
>> Nii et me rääkinud ühe spec et üks minut duši all
vastab umbes 12 pudelit vett.
Nii siis kaks minutit oleks võrduma 24,
ja viie minuti oleks võrduma 60.
Nüüd, kui te arvate sul seda, siis olgem
vaadake, kas saate tulla muster või valem
väljendada, kui me oleme öelda, n minutit, kui palju pudelit vett
oleks, et väljendada n?
>> Jällegi, kuigi see võib olla lihtne esimesel,
hiljem, kui saame keerulisem probleeme
me ei kavatse taha sattuda tava kindlakstegemise
mustrid ja arendada valemid et need ise välja selgitama.
>> C teil on juurdepääs standard tehteid,
liitmine, lahutamine, korrutamine ja jagamine.
Nii et ma jätan sa nüüd aru saada,
kuidas väljendada samaväärne pudelite arv
et kasutaja tarbitakse ajal dušš.
>> Olgu, me peaaegu valmis.
Meil küsitakse kasutaja nende panuse eest, oleme taganud, et see kehtib sisend,
ja siis me oleme aru saanud, kuidas ekvivalendi arvestamiseks
pudelite arv, et nad tarbida.
Nii et viimane asi, mida teha on väljund samaväärne pudelite arv
ja loodetavasti neid säilitada vett.
>> Väljundis väärtus olla printf avalduse.
Kui ma tahtsin öelda, et ma kolm lemmikloomad, näiteks
Ma võiks kasutada printf avalduse mis näeb välja midagi sellist.
Mul on kolm lemmikloomad ja uus rida kena formaati.
>> Nüüd me ei taha lihtsalt kõva kood asju.
Ütle arv minu pets ajas muutuv.
Siis ma lähen ära kasutama kohatäitjaid minu printf avalduse.
Nii et siin minu number on täisarv.
Nii et ma lähen tegema kohatäide täisarvu kasutades% i.
Ma lähen kirjutada string, ja siis pärast string
Ma kirjutan koma ja siis muutuja, mis ma tahan printida.
Nii, et väärtus trükitakse asemel, et kohatäide,% i.
>> Te võite kasutada kohatäitjaid, kui noh, ujukid koos% f.
Võite olla mitu kohahoidjate string.
Näiteks, kui mul on mõned number koerte ja mõned kasside arv,
Panin kaks kohatäitjaid siin ja siis minu kaks muutujad vastavas järjekorras.
>> Nüüd, kui me teame, kuidas printida salvestatud väärtused muutujate
kõige viimane asi, mida teha, on tagada, et me
print väärtus täpselt formaadis tehnilises kirjelduses märgitud.
Seda oleme ajendas kasutaja ja valideeritud oma panuse.
Me oleme siis arvutatakse ekvivalentne arvu pudelit vett
et nad tarbivad ajal dušš, ja me oleme väljastada et väärtus neile.
Ja nii oleme valmis vett.
>> Minu nimi on [? Zamila,?] ja see on CS50.