SPEAKER 1: Lad os tale om vand.
I dette problem, beder vi brugeren til at fortælle os, hvor længe i minuttet deres bruser var
og så beregner vi den tilsvarende antal flasker vand
at deres bruser anvendes.
>> Så hvad er vores to-do 's til dette problem?
Først vil vi ønsker til omgående og derefter validere
input, som brugeren giver os.
Når vi sikre, at vi har gyldig bruger input,
vi kommer til at beregne tilsvarende antal flasker vand
at brugeren havde under deres bruser, og så er vi
vil fortælle dem ved udprintning af dette nummer.
>> Så lad os tage fat vores første opgave, hvilket fik og validering
brugerinput.
Til dette har vi skrevet en funktion for du kaldte
get_int placeret i CS50 Library.
get_int sikrer, at brugeren indgange et helt tal, så eventuelle positive tal,
negative tal, eller nul accepteres.
Men hvis brugeren indlæser noget andet, så en kombination af bogstaver eller tal
eller decimaltal, så Brugeren bliver bedt om at prøve igen
og funktionen vil ikke acceptere noget indtil brugeren giver dem et heltal.
>> Så hvordan bruger vi get_int?
Hvis du åbner dit arbejdsområde og oprette en fil med navnet integer.c lad os
skrive følgende.
Hashtag omfatter cs50.h.
Dette er nødvendigt, fordi get_int er en CS50 bibliotek funktion,
så vi må hashtag indeholde sin erklæring for
at anvende funktionen.
Og så i min vigtigste fungere jeg bare
til blot at kalde funktionen get_int.
>> Så lad os køre dette og se, hvordan det fungerer.
Jeg har allerede kompileret det, så lad os bare gå videre og køre dette program,
./integer.
Her har jeg en hurtig og her er, hvor jeg input værdien.
Sig Jeg sætter i blot nogle heltal, 50, programmet excepts og kvit
og det er det.
>> Men siger jeg køre det igen og Jeg input noget andet.
Måske, hej verden.
Det er ikke et heltal så Programmet vil bede mig om at prøve igen.
Lad os prøve igen med måske en decimal denne gang.
0,5, igen, ikke er et heltal, så programmet vil ikke acceptere det
og det vil fortælle mig at prøve igen.
Så lad os give det et andet nummer.
Programmet accepterer det, afsluttes, og vi er færdige.
>> Så nu har vi en funktion der giver os og sikrer
at brugeren indlæser en heltal, men hvordan kan vi
faktisk holde styr på heltal indlæst af brugeren?
Nå, alt vi vil gøre, er butik denne værdi i en variabel, siger n.
Så hvis jeg erklærer et heltal n, og jeg indstille denne værdi til get_int,
derefter n vil derefter gemme hvad værdsætter brugeren indtastet.
>> Okay, så nu har vi sikret, at brugeren vil give os et heltal
og vi ved, hvordan man holder styr af heltal, men husk,
heltal er både positive og negative.
Så det giver ikke rigtig mening i forbindelse med dette problem
at brugeren tager et brusebad af sige negative 12 minutter.
Så vi skal sørge for, at brugeren faktisk giver os et positivt heltal.
Nu har vi ikke bare en enkelt funktion for det,
så vi bliver nødt til at skabe den selv.
>> Så vi ønsker til stadighed bede brugeren
indtil de giver os et positivt heltal.
Hvis jeg laver noget hele tiden derefter det er beslægtet med en løkke, en gentagelse.
Så en af ​​de konstruktioner, som vi bruger i c for at implementere gentagelser og sløjfer
er et while-løkke.
Så en while-løkke, som vist her, vil udføre
uanset er i selve sløjfen som længe de givne tilstand evaluerer
til sand.
Så snart denne betingelse evalueres til falsk, så
programmet vil fortsætte til hvad kommer efter kroppen af ​​løkken.
>> Så mens løkker vil være virkelig nyttige i CS50.
Men i dette særlige tilfælde ved vi, at vi er
kommer til at bede brugeren mindst gang og derefter kun løkke om nødvendigt.
Så her kommer vi til en særlige konstruktion, og det er
meget lig den, mens loop kaldes en gør-while-løkke.
>> Så en gør-while-løkke eksekverer organ af løkken mindst én gang
og så er det kontrollerer, om det skal udføre,
i modsætning til en while-løkke, som vil kontrollere tilstanden
og derefter udføre kroppen.
Så i en gør-while-løkke, hvad vi kunne gøre, er at bede brugeren om et heltal,
og derefter kontrollere, om det er ugyldige eller ikke.
Hvis det er ugyldigt, så vil vi gentage processen spørger brugeren
at give os en anden heltal, og derefter Kun når denne heltal er gyldig,
Vi vil fortsætte med at hvad der kommer bagefter.
>> Nu skal du lægge mærke til, at den erklæring af heltal n
er lidt anderledes end det, vi gjorde før i det foregående eksempel
og dette er på grund af anvendelsesområdet.
Hvis vi havde erklæret heltal n inde af kroppen af ​​gør-while-løkke,
så ville vi ikke kunne få adgang til at værdien af ​​n ud over disse krøllede
seler hvilket organ af løkken.
Men vi faktisk ønsker at få adgang til Værdien af ​​n senere i vores program.
>> OK, så lad os nu snakke om hvad denne betingelse skal være.
Vi ønsker at kun reprompt den bruger, så længe n er ugyldig.
Så tænk på dig selv, hvad en ugyldig heltalsværdi ville se ud
og derefter oprette en boolesk udtryk for at udtrykke det.
>> Vi er næsten færdige med vores delopgave af at spørge og validering brugerinput.
Så lad os gøre det lidt lidt mere brugervenlig
og give brugeren en lille lidt mere information
af, hvad vi beder dem om.
Så lad os bede brugeren, pr spec, med snor minutter.
Så ved hjælp af dine printf udsagn, gør sikker på, at du matche dette nøjagtigt.
>> Okay.
Så nu har vi en gyldig bruger input, et positivt heltal
værdi for hvor mange minutter de tilbragte i bruseren.
Så hvad bliver det næste er at beregne det tilsvarende antal flasker.
Hvad vi vil gøre her kunne være meget indlysende for dig i første omgang,
og det er OK.
Det, vi ønsker, er at vi ønsker at begynde at øve
tanken om at afsløre mønstre og udvikle formler for problemet.
>> Så vi får at vide pr spec at et minut i brusebadet
svarer til ca. 12 flasker vand.
Så to minutter ville svare til 24,
og fem minutter ville svare til 60.
Så nu, hvis du tror du har fået det, så lad os
se om du kan komme op med et mønster eller formel
at udtrykke hvis vi har sige, n minutter, hvor mange flasker vand
ville det blive udtrykt i n?
>> Igen, selv om dette kan være simpelt i starten,
senere, når vi kommer til mere komplicerede problemer
vi kommer til at ønsker at komme ind praksis med at identificere
mønstre og udvikle formler at regne disse ting ud.
>> I c har du adgang til standard aritmetiske operationer,
addition, subtraktion, multiplikation og division.
Så jeg vil overlade det til du nu at finde ud af
hvordan man kan udtrykke det tilsvarende antal flasker
at brugeren forbrugt under deres bruser.
>> Okay, vi er næsten færdig.
Vi har bedt brugeren om deres input, Vi har sikret, at det er gyldigt input,
og så har vi regnet ud, hvordan til beregning
antal flasker, de forbruges.
Så den sidste ting at gøre, er at output det tilsvarende antal flasker
og forhåbentlig tilskynde dem at bevare noget vand.
>> Udlæsning værdien vil være en printf erklæring.
Hvis jeg ønskede at fortælle dig, at jeg har tre dyr, for eksempel,
Jeg kan bruge en printf erklæring der ser noget som dette.
Jeg har tre kæledyr, og en ny linje for nice formatering.
>> Nu ønsker vi ikke at simpelthen hårdt kode ting.
Sig antallet af min kæledyr ændrer sig over tid.
Så jeg har tænkt mig at gøre brug af pladsholdere i mit printf erklæring.
Så her mit nummer er et heltal.
Så jeg har tænkt mig at lave en pladsholder for et helt tal under anvendelse% i.
Jeg har tænkt mig at skrive strengen, og derefter efter strengen
Jeg skriver et komma og derefter variabel, jeg ønsker at udskrive.
Således at værdien vil blive udskrevet i stedet for at pladsholder,% i.
>> Du kan bruge pladsholdere, som godt, for flydende materiel med en% f.
Du kan også få flere pladsholdere i en streng.
For eksempel, hvis jeg har nogle tal af hunde og nogle antal katte,
Jeg sætter to pladsholdere her og derefter mine to variabler i respektive rækkefølge.
>> Så nu, at vi ved, hvordan du udskriver værdierne lagret i variable,
den allersidste ting at gøre, er at sikre, at vi
udskrive værdien i præcis format angivet i specifikationen.
Med det har vi fået bruger og valideret deres input.
Vi har derefter beregnet tilsvarende antal flasker vand
at de forbruger i løbet af deres bruser, og vi har udlæses, at værdi for dem.
Og så har vi afsluttet vand.
>> Mit navn er [? Zamila,?] og dette er CS50.