SPEAKER 1: La oss snakke om vann.
I denne oppgaven, ber vi brukeren om å fortelle oss hvor lang tid i minutter deres dusj var
og da vi beregne tilsvar antall flasker med vann
at deres dusj brukt.
>> Så hva er våre to-do 's for dette problemet?
Først skal vi ha til å spørre og deretter validere
inngangs at brukeren gir oss.
Når vi sikre at vi ha gyldig brukerundersøkelser,
vi kommer til å beregne tilsvarende antall flasker med vann
at brukeren hadde under deres dusj, og da er vi
kommer til å fortelle dem ved skrive ut dette nummeret.
>> Så la oss takle vår første oppgave, spørre og validere
brukerundersøkelser.
For dette har vi skrevet en funksjon for deg som heter
get_int ligger i CS50 biblioteket.
get_int sikrer at brukeren innganger et heltall, slik at eventuelle positive tall,
negative tall, eller null er alle akseptert.
Men hvis brukeren innganger noe annet, så hvilken som helst kombinasjon av bokstaver eller tall
eller desimaltall, så Brukeren vil bli bedt om å prøve på nytt
og funksjonen vil ikke akseptere noe inntil brukeren gir dem et helt tall.
>> Så hvordan skal vi bruke get_int?
Hvis du åpner din arbeidsplass og opprette en fil som heter integer.c la oss
skriver du inn følgende.
Hashtag inkluderer cs50.h.
Dette er nødvendig fordi get_int er en CS50 bibliotek funksjon,
så vi må hashtag inkludere sin erklæring for
å bruke funksjonen.
Og så i min viktigste fungere Jeg skal bare
å bare kalle funksjonen get_int.
>> Så la oss kjøre dette og se hvordan det fungerer.
Jeg har allerede utarbeidet den, så la oss bare gå videre og kjøre dette programmet,
./integer.
Her har jeg en rask og her er der jeg inn verdien.
Si at jeg satt i bare noen heltall, 50, program unntar og avsluttes
og det er det.
>> Men sier jeg kjøre den på nytt, og Jeg innspill noe annet.
Kanskje, hallo verden.
Det er ikke et heltall slik at Programmet vil be meg om å prøve på nytt.
La oss prøve på nytt med kanskje en desimal denne gangen.
0,5, igjen, ikke er et heltall, så programmet vil ikke akseptere det
og det vil fortelle meg å prøve på nytt.
Så la oss gi den et annet nummer.
Programmet godtar det, avsluttes, og vi er ferdige.
>> Så nå har vi en funksjon som tillater oss og sikrer
at brukeren innganger en heltall, men hvordan kan vi
faktisk holde styr på heltall lagt inn av brukeren?
Vel, alt vi vil gjøre butikken denne verdien i en variabel, sier n.
Så hvis jeg erklære et heltall n, og jeg setter denne verdien til get_int,
deretter n vil da lagre hva verds brukeren lagt inn.
>> Greit, så nå har vi sørget for at brukeren vil gi oss et heltall
og vi vet hvordan å holde styr av heltall, men husk,
heltallene er både positiv og negativ.
Så det ikke virkelig fornuftig i forbindelse med dette problem
at brukeren tar en dusj av si negative 12 minutter.
Så vi må sørge for at brukeren faktisk gir oss et positivt heltall.
Nå har vi ikke bare har et enkelt funksjon for det,
så vi kommer til å ha for å skape den selv.
>> Så vi ønsker å stadig be brukeren
før de gir oss et positivt heltall.
Hvis jeg gjør noe hele tiden da som er beslektet med en sløyfe, en repetisjon.
Så en av de konstruksjoner som vi bruker ic å gjennomføre repetisjon og sløyfer
er en stund loop.
Så en stund loop, som vist her, vil utføre
det som er i legemet av løkken så lenge den gitte tilstanden evaluerer
til sann.
Så snart den betingelse behandles som usann, så
programmet vil fortsette til det følger etter hoveddelen av løkken.
>> Så mens løkker skal være veldig nyttig i CS50.
Men i dette spesielle tilfellet, vet vi at vi er
kommer til å be brukeren minst en gang og deretter bare løkke hvis det er nødvendig.
Så her kommer vi til en spesiell konstruksjon, og det er
meget lik den mens sløyfe kalles en do-while-loop.
>> Så en do-while-loop utfører legeme av sløyfen minst en gang
og da er det sjekker for å se om den skal utføre,
i motsetning til en stund sløyfe, som vil sjekke tilstanden
og deretter kjøre kroppen.
Så i en do-while-loop hva vi kan gjøre er å be brukeren om et heltall,
og deretter sjekke om det er ugyldig eller ikke.
Hvis det er ugyldig, så vi vil gjenta prosessen ber brukeren
å gi oss et annet heltall, og deretter bare når det heltall er gyldig,
vi vil fortsette å det som kommer etterpå.
>> Nå vil du legge merke til at erklæring om heltallet n
er litt annerledes enn hva vi gjorde før i forrige eksempel
og dette er på grunn av omfang.
Hvis vi hadde erklært heltallet n inne av kroppen av do-while loop,
da vi ikke ville være i stand til å få tilgang at verdien av n utenfor de krøllete
seler som angir hoveddelen av løkken.
Men vi gjør faktisk ønsker å få tilgang til verdien av n senere i vårt program.
>> OK, så nå la oss snakke om hva denne tilstanden skal være.
Vi ønsker å bare reprompt den brukeren så lenge n er ugyldig.
Så tenk deg selv hva en ugyldig heltallsverdi ville se ut
og deretter opprette en boolsk uttrykk for å uttrykke det.
>> Vi er nesten ferdig med vår deloppgave av å spørre og validere brukerundersøkelser.
Så la oss gjøre dette litt litt mer brukervennlig
og gi brukeren en liten litt mer informasjon
av det vi ber dem om.
Så la oss be brukeren, per spec, med streng minutter.
Så ved hjelp av printf uttalelser, foreta sikker på at du matche dette nøyaktig.
>> Greit.
Så nå har vi et gyldig brukernavn input, et positivt heltall
verdi for hvor mange minutter de tilbrakte i dusjen.
Så hva blir det neste er å beregne den tilsvarende antall flasker.
Hva vi skal gjøre her kan være veldig tydelig for deg i starten,
og det er OK.
Det vi ønsker å gjøre er vi ønsker å begynne å trene
ideen om å detektere mønstre og utvikle formler for problemet.
>> Så vi får beskjed per spec at ett minutt i dusjen
tilsvarer om 12 flasker med vann.
Så da to minutter ville være ekvivalent til 24,
og fem minutter ville tilsvare 60.
Så nå hvis du tror du har det, så la oss
se om du kan komme opp med et mønster eller formelen
å uttrykke om vi har si, n minutter, hvor mange flasker med vann
ville det komme til uttrykk i form av n?
>> Igjen, selv om denne kan være enkelt i starten,
senere når vi kommer til mer kompliserte problemer
vi kommer til å ønske å komme inn praksisen med å identifisere
mønstre og utviklings formler å finne ut disse tingene.
>> I c har du tilgang til standard aritmetiske operasjoner,
addisjon, subtraksjon, multiplikasjon og divisjon.
Så jeg skal la det til du nå å finne ut
hvordan å uttrykke tilsvarende antall flasker
at brukeren forbrukes under dusjen.
>> Greit, vi nesten ferdig.
Vi har bedt om at brukeren for deres innspill, Vi har sørget for at det er gyldig input,
og da har vi funnet ut hvordan å beregne den ekvivalente
antall flasker som de forbrukes.
Så den siste tingen å gjøre er å sende ut den tilsvarende antall flasker
og forhåpentligvis oppmuntre dem for å spare noe vann.
>> Mate ut verdien vil være en printf uttalelse.
Hvis jeg ønsket å fortelle deg at jeg har tre dyr, for eksempel,
Jeg kan bruke en printf uttalelse som ser omtrent slik ut.
Jeg har tre dyr, og en ny linje for hyggelig formatering.
>> Nå ønsker vi ikke å bare vanskelig kode ting.
Si antall min kjæledyr endrer seg over tid.
Så jeg kommer til å gjøre bruk av plassholdere i min printf uttalelse.
Så her nummeret mitt er et heltall.
Så jeg kommer til å gjøre en plassholder for et heltall bruker% i.
Jeg kommer til å skrive strengen, og deretter etter strengen
Jeg skriver et komma og deretter variabel som jeg ønsker å skrive ut.
Slik at verdien vil bli skrevet ut i stedet for at plassholder,% i.
>> Du kan bruke plassholdere, som vel, for flyter med en% f.
Du kan også ha flere plassholdere i en streng.
For eksempel, hvis jeg har noen tall av hunder og noen antall katter,
Jeg satte to plassholdere her og deretter mine to variabler i respektive rekkefølge.
>> Så nå som vi vet hvordan du skriver ut verdiene som er lagret i variabler,
den aller siste tingen å gjøre er å sikre at vi
skrive ut verdien på den eksakte format er angitt i beskrivelsen.
Med det har vi bedt om bruker og validert deres innspill.
Vi har da beregnet tilsvar antall flasker med vann
at de bruker under dusj, og vi har sendt ut som verdi for dem.
Og så har vi fullført vann.
>> Mitt navn er [? Zamila,?] og dette er CS50.