ALTAVEU 1: Anem a parlar d'aigua.
En aquest problema, es demanarà a l'usuari que digui Ens quant de temps en minuts la dutxa era
i després es calcula l'equivalent nombre d'ampolles d'aigua
que el seu dutxa utilitza.
>> Quines són les nostres coses per fer per a aquest problema?
En primer lloc, anem a voler per demanar i després validar
l'entrada que l'usuari ens dóna.
Una vegada que ens assegurem que ens té entrada d'usuari vàlid,
calcularem el nombre equivalent d'ampolles d'aigua
que l'usuari va tenir durant la seva dutxa, i llavors estem
dirà per imprimir aquest nombre.
>> Així que abordarem el nostre primer tasca, el que va provocar i validar
l'entrada de l'usuari.
Per això hem escrit una funció per a la qual va cridar
get_int situat a la Biblioteca CS50.
get_int assegura que les entrades de l'usuari un enter, de manera que els números positius,
els números negatius, o S'accepten zero.
No obstant això, si l'usuari introdueix qualsevol altra cosa, pel que qualsevol combinació de lletres o números
o nombres decimals, llavors el usuari se li demanarà que torni a intentar
i la funció no acceptarà res fins que l'usuari els dóna un nombre enter.
>> Llavors, com fem servir get_int?
Si obre el seu espai de treball i crear un arxiu anomenat integer.c anem
escrigui el següent.
Hashtag inclou cs50.h.
Això és necessari perquè get_int és una funció de biblioteca CS50,
per la qual cosa hem d'incloure hashtag la seva declaració per tal
per utilitzar la funció.
I després, en el meu principal funciono només vaig
simplement cridar a la funció get_int.
>> Així que anem a executar això i veure com funciona.
Ja he compilat, així que anem a només seguir endavant i executar aquest programa,
./enter.
Aquí tinc una ràpida i aquí és on l'entrada I el valor.
Diguem que poso en tan sols algun sencer, 50, els s'exceptua del programa i es tanca
i això és tot.
>> Però dic el funciono de nou i Jo d'entrada una mica més.
Potser, hola món.
Això no és un nombre enter de manera que la programa em torni a intentar-.
Anem a intentar-ho de nou amb potser un decimal aquest moment.
0,5, de nou, no un nombre enter pel el programa no ho acceptarà
i em diu que torni a intentar.
Així que anem a donar-li un altre número.
El programa accepta, es tanca i ja hem acabat.
>> Així que ara tenim una funció que ens permet i garanteix
que l'usuari introdueix una sencer, però com podem
de fet un seguiment de la nombre enter introduïda per l'usuari?
Bé, tot el que farem és botiga aquest valor en una variable, diguem n.
Així que si em declaro un enter n, i em vaig posar aquest valor a get_int,
llavors n després emmagatzemar el valorar l'usuari introduït.
>> Molt bé, així que ara ens hem assegurat que l'usuari ens donarà un nombre enter
i sabem com fer un seguiment del nombre sencer, però recorda,
són nombres enters positius i negatius.
Pel que no té molt sentit en el context d'aquest problema
que l'usuari pren una dutxa de, diguem, 12 minuts negatives.
Pel que necessitem per assegurar-se que l'usuari en realitat ens dóna un nombre enter positiu.
Ara no tenim només una funció única perquè,
així que tindrem per crear aquest nosaltres mateixos.
>> Pel que volem contínuament demanar a l'usuari
fins que ens donin un nombre enter positiu.
Si estic fent alguna cosa contínuament a continuació, que és similar a un bucle, una repetició.
Així que una de les construccions que fem servir ac per posar en pràctica la repetició i bucles
és un bucle while.
Pel que un bucle while, com es mostra aquí, s'executarà
el que està en el cos del bucle com sempre que la condició s'avalua donats
true.
Tan aviat com aquesta condició avalua a false,
el programa de procedir al ve després que el cos del bucle.
>> Així, mentre que els bucles es van a ser realment útil en CS50.
Però en aquest particular, cas, sabem que estem
va a demanar a l'usuari com a mínim una vegada i només bucle si cal.
Així que aquí arribem a una construcció especial i això és
molt similar al mentre llaç diu un bucle do-while.
>> Per tant un bucle do-while executa la cos del bucle almenys un cop
i després es comprova si s'ha d'executar,
a diferència d'un bucle while, que comprovarà la condició
i després executar el cos.
Així que en un bucle do-while el que podríem fer és demanar a l'usuari un nombre sencer,
a continuació, comprovar si és vàlid o no.
Si és vàlid, llavors anem a repetir el procés preguntant a l'usuari
per donar-nos un altre sencer, i després només quan aquest sencer és vàlida,
seguirem el que ve després.
>> Ara es donarà compte que la declaració del nombre enter n
és lleugerament diferent al que ho va fer abans en l'exemple anterior
i això és perquè d'abast.
Si haguéssim declarat el sencer n a l'interior del cos del bucle do-while,
llavors no seria capaç d'accedir que el valor de n fora dels arrissada
tirants que indica el cos del bucle.
Però nosaltres volem, de fet, per accedir a la valor de n més endavant en el nostre programa.
>> OK, així que ara anem a parlar de el que aquesta condició ha de ser.
Volem Nova sol·licitud només el usuari, sempre i quan n no és vàlid.
Així pensa a si mateix el que un invàlid valor sencer es veuria
i després crear un booleà expressió per expressar això.
>> Ja gairebé hem acabat amb la nostra subtasca de preguntar i validar l'entrada de l'usuari.
Així que anem a fer això una mica mica més fàcil d'usar
i donar a l'usuari una mica mica més d'informació
del que els estem sol·licitant-.
Així que demanarem a l'usuari, per la especificació, amb els minuts de cadena.
Així, utilitzant els seus estats d'printf, fer Assegureu-vos que coincideixi exactament això.
>> Tot bé.
Així que ara tenim un usuari vàlid d'entrada, un nombre enter positiu
valor pel nombre de minuts que van passar a la dutxa.
Llavors, què és el proper és calcular el nombre equivalent d'ampolles.
El que farem aquí podríem ser molt obvi per a vostè al principi,
i això està bé.
El que volem fer és que volen començar a practicar
la idea de la detecció de patrons i el desenvolupament de fórmules per al problema.
>> Així se'ns diu per l'especificació que en un minut a la dutxa
és equivalent a al voltant de 12 ampolles d'aigua.
De manera que ho faria dos minuts equivalent a 24,
i cinc minuts et equivalent a 60.
Així que ara si vostè pensa vostè ho té, llavors anem a
veure si es pot arribar amb un patró o fórmula
per expressar si hem dir, n minuts, quantes ampolles d'aigua
caldria ser expressada en termes de n?
>> Un cop més, tot i que aquest podria ser simple al principi,
més endavant, quan s'arriba a problemes més complicats
anem a voler entrar en la pràctica d'identificar
patrons i les fórmules en desenvolupament per entendre aquestes coses.
>> Al c es té accés a operacions aritmètiques estàndard,
suma, resta, multiplicació i divisió.
Així que ho deixo a ara a esbrinar
la manera d'expressar la nombre equivalent d'ampolles
que l'usuari consumeix durant la seva dutxa.
>> Molt bé, estem gairebé fet.
Hem demana a l'usuari per a la seva entrada, ens hem assegurat que es tracta d'una entrada vàlida,
i després hem descobert com per calcular l'equivalent
nombre d'ampolles que es consumeixen.
Així que l'últim que cal fer és la sortida el nombre equivalent d'ampolles
i és d'esperar encoratjar a conservar una mica d'aigua.
>> La sortida serà el valor ser una sentència printf.
Si volia dir que em tenir tres animals domèstics, per exemple,
Jo podria utilitzar una instrucció printf que es veu alguna cosa com això.
Tinc tres animals domèstics, i un nou línia per al format agradable.
>> Ara no volem coses simples de codi dur.
Dir el nombre de la meva mascotes canvia amb el temps.
A continuació, vaig a fer ús de marcadors de posició en la meva declaració printf.
Així que aquí el meu número és un nombre sencer.
Així que vaig a fer un marcador de posició per a un sencer utilitzant% i.
Vaig a escriure la cadena, i després després de la cadena
Escric una coma i després el variable que vull imprimir.
Així serà imprès aquest valor en lloc d'aquest marcador de posició,% i.
>> Podeu utilitzar marcadors de posició, com es així, per als flotadors amb un% f.
Vostè també pot tenir múltiples marcadors de posició en una cadena.
Per exemple, si tinc algun nombre dels gossos i alguns nombre de gats,
Poso dos marcadors de posició aquí i després meus dos variables en ordre respectiu.
>> Així que ara que sabem com imprimir els valors emmagatzemats en les variables,
l'última cosa que fer és assegurar-se que ens
imprimir el valor en el format exacte s'indica en l'especificació.
Amb això, hem impulsat la usuari i es valida la seva entrada.
a continuació, hem calculat l'equivalent nombre d'ampolles d'aigua
que consumeixen durant la seva dutxa, i hem emet aquest valor per a ells.
I així, hem completat l'aigua.
>> El meu nom és [? Zamila ,?] i això és CS50.