SPEAKER 1: Laten we praten over water.
In dit probleem, vragen we de gebruiker om te vertellen ons hoe lang in minuten hun douche was
en dan berekenen we het equivalent aantal flessen water
dat hun douche gebruikt.
>> Dus wat zijn onze to-do's voor dit probleem?
In de eerste plaats gaan we willen om onmiddellijke en vervolgens valideren
de input die de gebruiker geeft ons.
Zodra we ervoor zorgen dat we geldige input van de gebruiker,
we gaan naar het berekenen equivalent aantal flessen water
dat de gebruiker hadden tijdens hun douche, en dan zijn we
gaan ze vertellen door afdrukken van dat nummer.
>> Dus laten we pakken onze eerste taak, wordt gevraagd en valideren
de gebruikersinvoer.
Hiervoor hebben we geschreven -functie voor je geroepen
get_int gelegen in het CS50 Library.
get_int zorgt ervoor dat de gebruiker ingangen een integer, zodat positieve getallen,
negatieve getallen, of nul worden geaccepteerd.
Maar als de gebruiker voert iets anders, dus elke combinatie van letters of cijfers
of kommagetallen, dan de gebruiker wordt gevraagd om opnieuw te proberen
en de functie zal niets aanvaarden totdat de gebruiker geeft hen een integer.
>> Dus hoe kunnen we gebruiken get_int?
Als u uw werkruimte openen en maak een bestand met de naam integer.c laten
typt u het volgende.
Hashtag cs50.h.
Dit is nodig omdat get_int is een CS50 bibliotheekfunctie,
dus we moeten hashtag zijn verklaring in orde
de functie.
En dan in mijn belangrijkste functioneren Ik ga gewoon
om gewoon te bellen met de functie get_int.
>> Dus laten we lopen dit en zien hoe het werkt.
Ik heb het al gecompileerd, dus laten we gewoon doorgaan en lopen dit programma,
./geheel getal.
Hier heb ik een snelle en hier is waar ik het invoeren van de waarde.
Zeg ik in slechts enkele integer, 50, het programma excepts en wordt afgesloten
en dat is dat.
>> Maar zeggen dat ik het draaien weer en I ingang iets anders.
Misschien, hello wereld.
Dat is geen geheel getal is, zodat de programma zal me gevraagd om opnieuw te proberen.
Laten we proberen opnieuw met misschien een decimale deze tijd.
0,5 wederom geen geheel zo het programma zal het niet accepteren
en het zal me vertellen om opnieuw te proberen.
Dus laten we het een ander nummer.
Het programma aanvaardt, afgesloten en we zijn klaar.
>> Dus nu hebben we een functie die ons in staat stelt en garandeert
dat de gebruiker voert een integer, maar hoe kunnen we
eigenlijk bijhouden van de integer ingevoerd door de gebruiker?
Nou, alles wat we doen is op te slaan deze waarde in een variabele, zeg n.
Dus als ik verklaar een integer n, en ik die waarde te get_int,
dan n zal dan slaan wat waardeert de gebruiker ingevoerd.
>> Oké, dus nu hebben we ervoor gezorgd dat de gebruiker zal ons een integer te geven
en we weten hoe om bij te houden van de integer, maar vergeet niet,
integers zijn zowel positieve als negatieve.
Dus het maakt niet echt zinvol in het kader van deze problematiek
dat de gebruiker neemt een douche van zeg negatieve 12 minuten.
Dus moeten we ervoor zorgen dat de gebruiker eigenlijk geeft ons een positief geheel getal.
Nu hebben we niet alleen een enkele functie daarvoor,
dus we gaan om te hebben creëren dat zelf.
>> Dus we willen voortdurend vraagt ​​de gebruiker
totdat ze geven ons een positief geheel getal.
Als ik iets te doen dan continu dat verwant is aan een lus, een herhaling.
Dus een van de constructen die we gebruiken c in te voeren herhaling en loops
is een while lus.
Dus een tijdje loop, zoals hier getoond, wordt uitgevoerd
wat in het lichaam van de lus zolang de gegeven voorwaarde evalueert
op true.
Zodra deze voorwaarde onwaar, dan
het programma zal overgaan tot wat komt nadat het lichaam van de lus.
>> Dus terwijl loops gaan zijn echt nuttig in CS50.
Maar in dit geval, we weten dat we
naar de gebruiker minstens gevraagd een keer en dan alleen loop indien nodig.
Dus hier komen we tot een speciale constructie en dat is
vergelijkbaar met de while lus wel een do-while-lus.
>> Dus een do-while lus voert de orgaan van de lus ten minste eenmaal
en controleert dan om te zien of het moet worden uitgevoerd,
in tegenstelling tot een while lus, die zal de conditie controleren
en daarna het lichaam te voeren.
Dus in een do-while lus wat we zouden kunnen doen is vraagt ​​de gebruiker om een ​​integer,
en dan controleren of het ongeldig of niet.
Als het ongeldig is, dan zullen we herhaal het proces waarin de gebruiker
om ons nog een integer, en vervolgens Alleen wanneer deze integer geldig,
we blijven wat komt daarna.
>> Nu zult u merken dat de verklaring van de integer n
is iets anders dan wat we voorheen in het vorige voorbeeld
en dit is vanwege scope.
Als we het getal n binnenkant had verklaard van het lichaam van de do-while lus,
dan zouden we niet in staat zijn om toegang te krijgen deze waarde van n buiten deze curly
bretels met vermelding van het lichaam van de lus.
Maar we willen eigenlijk wilt toegang tot de waarde van n later in ons programma.
>> OK, dus nu laten we praten over Wat deze voorwaarde zou moeten zijn.
We willen alleen de reprompt gebruiker zolang n is ongeldig.
Dus denk je bij jezelf wat een ongeldige integer waarde zou uitzien
en maak vervolgens een Booleaanse uitdrukking aan te geven dat.
>> We zijn bijna klaar met onze deeltaak van gevraagd en valideren van input van de gebruiker.
Dus laten we dit een beetje bit gebruiksvriendelijker
en een beetje geven de gebruiker bit meer informatie
van wat wij hen nu gevraagd voor.
Dus laten we de gebruiker vragen, per de spec, met de string minuut.
Dus met behulp van uw printf verklaringen, maken ervoor dat u deze exact overeenkomen.
>> Okee.
Dus nu hebben we een geldige gebruikersnaam ingang een positief geheel getal
waarde voor hoeveel minuten brachten ze in de douche.
Dus wat is de volgende stap is om te berekenen het equivalent aantal flessen.
Wat we gaan doen hier misschien zeer duidelijk voor u op het eerste,
en dat is OK.
Wat we willen doen is dat we wilt beginnen met oefenen
het idee detecteren patronen en ontwikkelen formules voor het probleem.
>> Dus we vertelden per de spec dat één minuut in de douche
is gelijk aan ongeveer 12 flessen water.
Dus dan twee minuten zou gelijk aan 24,
en vijf minuten zou gelijk aan 60.
Dus nu als je denkt je hebt het, laten we dan
kijk of je kunt komen met een patroon of formule
uit te drukken als we zeggen, n minuten, hoeveel flessen water
dat zou worden uitgedrukt in termen van n?
>> Nogmaals, hoewel deze eenvoudig kan op het eerste,
Later als we in ingewikkelder problemen
we gaan willen krijgen in de praktijk van identificatie
patronen en ontwikkelen formules om deze dingen uit te zoeken.
>> In c heb je toegang tot standaard rekenkundige bewerkingen,
optellen, aftrekken, vermenigvuldigen en delen.
Dus ik laat het aan jullie nu om erachter te komen
hoe het te uiten equivalent aantal flessen
dat de gebruiker geconsumeerd tijdens hun douche.
>> Oké, we zijn bijna klaar.
We hebben de gebruiker voor hun inbreng wordt gevraagd, we hebben ervoor gezorgd dat het een geldige invoer,
en dan hebben we bedacht hoe De overeenkomstige berekening
aantal flessen die zij verbruikt.
Dus het laatste wat te doen is om de uitgang het equivalent aantal flessen
en hopelijk aan te moedigen hen om wat water te besparen.
>> Afgeven van de waarde zijn een printf statement.
Als ik wilde je vertellen dat ik drie huisdieren, bijvoorbeeld,
Ik heb misschien een printf statement gebruiken dat ziet er ongeveer als volgt uit.
Ik heb drie huisdieren, en een nieuwe lijn voor sfeervolle formatteren.
>> Nu willen we niet aan gewoon harde code dingen.
Zeggen dat het aantal van mijn huisdieren veranderingen in de tijd.
Dan ga ik om gebruik te maken placeholders in mijn printf statement.
Dus hier mijn nummer is een integer.
Dus ik ga een placeholder maken voor een integer gebruik% i.
Ik ga naar de string te schrijven, en dan na de string
Ik schrijf een komma en vervolgens de variabele die ik wil afdrukken.
Zodat waarde wordt afgedrukt in plaats van dat placeholder,% i.
>> U kunt tijdelijke aanduidingen gebruiken, zoals goed, voor wagens met een f%.
U kunt ook meerdere placeholders in een string.
Bijvoorbeeld, als ik een getal honden en katten bepaald aantal,
Ik zet twee placeholders hier en dan mijn twee variabelen in de respectievelijke volgorde.
>> Dus nu we weten hoe u kunt afdrukken de waarden opgeslagen in variabelen
het laatste ding om doen, is dat we ervoor zorgen
print de waarde in de juiste vorm aangegeven in de beschrijving.
Met dat, hebben we gevraagd of het gebruiker en gevalideerd hun inbreng.
We hebben dan berekend het equivalent aantal flessen water
dat ze verbruiken tijdens hun douche, en we hebben die waarde voor hen uitgevoerd.
En dus hebben we water voltooid.
>> Mijn naam is [? Zamila,?] en dit is CS50.