VORBITOR 1: Să vorbim despre apă.
În această problemă, vom cere utilizatorului să spună ne cât de mult timp în câteva minute de duș lor a fost
și apoi vom calcula echivalentul Numărul de sticle de apă
dușul lor utilizate.
>> Deci, ce sunt noastre de a-Do pentru această problemă?
În primul rând, vom dori să solicite și apoi să validați
de intrare pe care utilizatorul ne dă.
Odată ce ne asigurăm că au intrare de utilizator valid,
vom merge pentru a calcula număr echivalent de sticle de apă
că utilizatorul a avut în timpul duș lor, și apoi suntem
O să le spun de imprimarea acel număr.
>> Așa că haideți să abordeze primul nostru sarcină, fapt care ia determinat și validarea
introduse de utilizator.
Pentru aceasta ne-am scris o Funcția pentru tine numit
get_int situat în Biblioteca CS50.
get_int asigură faptul că intrările de utilizator un număr întreg, astfel încât orice numere pozitive,
numere negative, sau zero, toate sunt acceptate.
Dar, în cazul în care utilizatorul introduce orice altceva, astfel încât orice combinație de litere sau cifre
sau numere zecimale, atunci utilizator se va cere să încerce din nou
iar funcția nu va accepta nimic până când utilizatorul le dă un întreg.
>> Deci, cum folosim get_int?
Dacă deschideți spațiul de lucru și a crea un fișier numit integer.c să
tastați următoarele.
Hashtag includ cs50.h.
Acest lucru este necesar deoarece get_int este o funcție de bibliotecă CS50,
așa că trebuie să includă hashtagul declarația în ordine
pentru a utiliza funcția.
Și apoi, în principal mea funcționa Mă duc
pentru a apela pur și simplu get_int funcția.
>> Deci să fugim acest lucru și a vedea cum funcționează.
Am compilat deja, așa că hai doar du-te mai departe și a alerga acest program,
./întreg.
Aici am un prompt și aici e în cazul în care valoarea de intrare am.
Spun că am pus în doar câteva întreg, 50 de ani, excepts program și quit
și cu asta.
>> Dar, spun am alerga din nou și Am introdus ceva.
Poate că, Bună ziua lume.
Asta nu este un număr întreg așa Programul mă va cere să încerce din nou.
Să încercăm din nou, cu probabil, o zecimală de această dată.
0.5, din nou, nu este un număr întreg, astfel programul nu va accepta
și să-mi spună să încerci din nou.
Deci, să-i dăm un alt număr.
Programul acceptă, se închide, și am terminat.
>> Deci, acum avem o funcție care ne permite și asigură
că utilizatorul introduce un întreg, dar cum putem
fapt păstrează o evidență a număr întreg de către utilizator introdus?
Ei bine, tot ce vom face este magazin această valoare într-o variabilă, să zicem n.
Așa că, dacă declar un număr întreg n, și am stabilit că valoarea la get_int,
atunci n va stoca atunci orice valoarea utilizatorului introdus.
>> Bine, așa că acum ne-am asigurat că utilizatorul ne va da un număr întreg
și știm cum să urmăriți din întreg, dar amintiți-vă,
întregi sunt atât pozitive, cât și negative.
Așa că nu prea are sens în contextul acestei probleme
că utilizatorul ia un duș a spune negativ de 12 minute.
Deci, avem nevoie să ne asigurăm că utilizatorul de fapt, ne dă un număr întreg pozitiv.
Acum nu avem doar un Funcția unică pentru că,
așa că vom avea pentru a crea noi înșine că.
>> Așa că vrem să continuu solicita utilizatorului
până când ne dau un număr întreg pozitiv.
În cazul în care fac ceva în mod continuu, atunci care este înrudită cu o buclă, o repetiție.
Deci, una dintre construcțiile pe care le folosim în c pentru a pune în aplicare repetarea și bucle
este o buclă în timp.
Deci, o buclă în timp ce, după cum prezentat aici, se va executa
tot ceea ce este în corpul buclei ca atâta timp cât dat condiție evaluează
true.
De îndată ce această condiție evaluează la fals, atunci
programul va proceda la orice vine după ce corpul buclei.
>> Așa că în timp ce buclele vor să fie într-adevăr util în CS50.
Dar, în această special caz, știm că suntem
va solicita utilizatorului cel puțin o dată și apoi numai în buclă, dacă este necesar.
Așa că aici am ajuns la o construct special și asta
foarte similar cu timp buclă numită o buclă do-în timp ce.
>> Deci, o bucla do-în timp ce execută corpul buclei cel puțin o dată
și apoi se verifică pentru a vedea dacă ar trebui să execute,
spre deosebire de o buclă în timp, care va verifica starea
și apoi executați din organism.
Deci, într-o buclă în timp ce do-am putea faceți este prompt utilizator pentru un număr întreg,
și apoi verificați dacă este nevalid sau nu.
Dacă este nevalid, atunci vom repeta procesul cere utilizatorului
pentru a ne da un alt număr întreg, și apoi numai atunci când acest număr întreg este valabil,
vom continua să orice vine după aceea.
>> Acum vei observați că declararea n întreg
este puțin diferită față de ceea ce noi făcut înainte în exemplul anterior
iar acest lucru este din cauza domeniului de aplicare.
Dacă am fi declarat n interiorul întreg a corpului buclei do-în timp ce,
atunci nu s-ar putea accesa că valoarea lui n afara celor creț
bretele care indică corpul buclei.
Dar noi, de fapt, vor să acceseze Valoarea lui n mai târziu în programul nostru.
>> OK, deci acum hai să vorbim despre ceea ce ar trebui să fie această condiție.
Dorim să reprompt numai utilizator, atâta timp cât n este nevalid.
Deci, gândiți-vă la ce invalid valoare întreagă ar arata ca
și apoi a crea un boolean expresie pentru a exprima acest lucru.
>> Aproape am terminat cu subactivitate nostru de fapt care ia determinat și validarea introduse de utilizator.
Așa că hai să facem acest lucru un pic bit mai ușor de utilizat
și să dea utilizatorului un pic biți mai multe informații
din ceea ce le-a determinat pentru ce.
Așa că hai cere utilizatorului, conform spec, cu minutele șir.
Deci, folosind declarațiile dumneavoastră printf, face sigur că acest lucru se potrivesc exact.
>> In regula.
Așa că acum avem un utilizator valid de intrare, un număr întreg pozitiv
valoare pentru cât de multe minute au petrecut în duș.
Ce urmează este de a calcula numărul echivalent de sticle.
Ceea ce vom face aici s-ar putea să fie foarte evident pentru tine la început,
și asta e în regulă.
Ceea ce vrem să facem este noi doresc să înceapă practicarea
ideea de detectare a modelelor și elaborarea de formule pentru problema.
>> Așa că ne-a spus pe spec că un minut la duș
este echivalent cu aproximativ 12 sticle de apă.
Așa că atunci două minute ar să fie echivalentă cu 24,
și cinci minute ar să fie echivalentă cu 60.
Deci, acum, dacă crezi le-ați luat-o, atunci hai
vezi dacă poți veni cu un model sau formula
să-și exprime dacă am spune, n minute, cât de multe sticle de apă
care va fi exprimată în termeni de n?
>> Din nou, chiar dacă acest lucru ar putea fi simplu la început,
mai târziu, când vom ajunge la probleme mai complicate
vom dori să intre în practica de identificare
modele și formule de dezvoltare pentru a descoperi aceste lucruri.
>> În c aveți acces la operații aritmetice standard,
adunare, scădere, înmulțirea și împărțirea.
Așa că am să-l las vă acum să dau seama
cum să-și exprime număr echivalent de sticle
că utilizatorul consumat în timpul lor de duș.
>> Bine, suntem aproape gata.
Ne-am determinat utilizatorul pentru introducerea lor, ne-am asigurat că este o intrare validă,
și apoi ne-am dat seama cum pentru a calcula echivalentul
numărul de sticle pe care au consumat.
Așadar, ultimul lucru de făcut este să ieșire numărul echivalent de sticle
și, sperăm, să încurajeze le pentru a economisi niște apă.
>> Valoarea va scoate să fie o declarație printf.
Dacă aș fi vrut să-ți spun că am au trei animale de companie sunt, de exemplu,
S-ar putea folosi o declarație printf care arată ceva de genul asta.
Am trei animale de casă, și un nou line pentru formatare frumos.
>> Acum, noi nu vrem să cod simplu, greu de lucruri.
Spun numărul meu animale de companie sunt se schimbă în timp.
Apoi am de gând să facă uz de Substituenți în declarația mea printf.
Deci, aici numărul meu este un număr întreg.
Așa că am de gând să fac un înlocuitor pentru un număr întreg, utilizând% i.
Am de gând să scrie șirul, și apoi, după șirul
Am scrie o virgulă și apoi variabilă pe care vreau să le imprimați.
Astfel ca valoarea va fi imprimată în locul acelui substituent,% i.
>> Aveți posibilitatea să utilizați Substituenți, ca bine, pentru flotoarele cu un% f.
Puteți avea, de asemenea, mai multe Substituenți într-un șir de caractere.
De exemplu, dacă am ceva număr de câini și unele număr de pisici,
Am pus două Substituenți aici și apoi mele cele două variabile, în ordinea respectivă.
>> Deci, acum că știm cum să imprimați valorile stocate în variabile,
ultimul lucru la face este de a se asigura că
imprima valoarea în formatul exact indicate în caietul de sarcini.
Cu aceasta, ne-am determinat utilizator și validate de intrare a acestora.
Apoi ne-am calculat echivalentul Numărul de sticle de apă
pe care le consuma in timpul lor de duș, și ne-am acea valoare scoasă lor.
Și așa, am terminat cu apă.
>> Numele meu este [? Zamila,?] iar acest lucru este CS50.