TALARE 1: Låt oss tala om vatten.
I detta problem, ber vi användaren att berätta oss hur länge i minuter deras dusch var
och sedan beräknar vi motsvarande antal flaskor med vatten
att deras dusch används.
>> Så vad är vår att göra- för det här problemet?
Först kommer vi att vilja att uppmana och sedan validera
den ingång som användaren ger oss.
När vi ser till att vi har giltiga indata från användaren,
vi kommer att beräkna motsvarande antal flaskor med vatten
att användaren hade under deras dusch, och då är vi
kommer att tala om för dem av att skriva ut det numret.
>> Så låt oss ta itu med vår första uppgift, vilket fick och validera
användardata.
För detta har vi skrivit en funktion för dig som kallas
get_int ligger i CS50 biblioteket.
get_int säkerställer att användaren matar ett heltal, så alla positiva tal
negativa tal, eller noll är alla accepteras.
Men om användaren matar något annat, så valfri kombination av bokstäver eller siffror
eller decimaltal, då Användaren uppmanas att försöka igen
och funktionen inte kommer att acceptera något tills användaren ger dem ett heltal.
>> Så hur använder vi get_int?
Om du öppnar din arbetsyta och skapa en fil med namnet integer.c låt oss
skriver du följande.
Hashtag inkluderar cs50.h.
Detta är nödvändigt eftersom get_int är en CS50 biblioteksfunktion,
så vi måste hashtag inkluderar sin förklaring i syfte
att använda funktionen.
Och sedan i min huvudsakliga fungera Jag ska bara
att helt enkelt anropa funktionen get_int.
>> Så låt oss köra och se hur det fungerar.
Jag har redan sammanställt det, så låt oss bara gå vidare och köra detta program,
./heltal.
Här har jag en snabb och här är där jag mata in värdet.
Säger jag sätta i bara några heltal, 50, program excepts och Avslutar
och det är det.
>> Men säger jag köra den igen och I ingångs något annat.
Kanske, hallå världen.
Det är inte ett heltal så Programmet kommer att fråga mig att försöka igen.
Låt oss försöka igen med kanske en decimal denna tid.
0,5, återigen, inte är ett heltal så Programmet kommer inte att acceptera det
och det kommer att tala om för mig att försöka igen.
Så låt oss ge det ett annat nummer.
Programmet accepterar det, avslutas, och vi är klara.
>> Så nu har vi en funktion som tillåter oss och säkerställer
att användaren inmatar en heltal, men hur kan vi
faktiskt hålla koll på heltal inmatade av användaren?
Tja, är allt vi gör butik detta värde i en variabel, säg n.
Så om jag förklara ett heltal n, och jag satt att värdet get_int,
då n kommer då att lagra vad värdera användaren inmatade.
>> Okej, så nu har vi säkerställt att användaren kommer att ge oss ett heltal
och vi vet hur man hålla koll av heltal, men kom ihåg,
heltal är både positiv och negativ.
Så det inte riktigt vettigt i samband med detta problem
att användaren tar en dusch av säg negativa 12 minuter.
Så vi måste se till att användaren faktiskt ger oss ett positivt heltal.
Nu har vi inte bara en enda funktion för detta,
så vi kommer att ha att skapa det själva.
>> Så vi vill att kontinuerligt uppmana användaren
tills de ger oss ett positivt heltal.
Om jag gör något kontinuerligt sedan det är besläktad med en slinga, en upprepning.
Så en av de konstruktioner som vi använder i c för att genomföra upprepning och loopar
är en while-slinga.
Så en while-slinga, som visas här, kommer att utföra
det som finns i kroppen i slingan, som länge de givna villkoret utvärderas
till true.
Så snart detta villkor utvärderas till false, då
Programmet kommer att fortsätta till vad kommer efter kroppen av slingan.
>> Så medan slingorna kommer att vara riktigt användbar i CS50.
Men i detta särskilda fall, vi vet att vi är
kommer att uppmana användaren åtminstone en gång och sedan bara slinga om nödvändigt.
Så här kommer vi till en speciell konstruktion och det är
mycket lik den samtidigt loop kallas en gör-while-slinga.
>> Så en gör-while-slinga utför kroppen av slingan åtminstone en gång
och sedan kontrollerar den för att se om den ska utföra,
i motsats till en while-slinga, som kommer att kontrollera tillståndet
och sedan köra kroppen.
Så i en gör-while-slinga vad vi kanske göra är att fråga användaren om ett heltal,
och sedan kontrollera om det är ogiltigt eller inte.
Om det är ogiltigt, då vi upprepa processen frågar användaren
att ge oss en annan heltal, och sedan endast när det heltal är giltigt,
Vi kommer att fortsätta att vad kommer efteråt.
>> Nu kommer du att märka att förklaring heltal n
är något annorlunda än vad vi gjorde tidigare i det föregående exemplet
och detta på grund av omfattningen.
Om vi ​​hade förklarat heltal n inuti av kroppen av do-while loopen,
då skulle vi inte kunna få tillgång till att värdet på n utanför de lockigt
hängslen indikerar kroppen av slingan.
Men vi i själva verket vill komma åt värdet på n senare i vårt program.
>> OK, så nu ska vi prata om vad detta villkor ska vara.
Vi vill endast Fråga igen den användaren, så länge som n är ogiltig.
Så tänk dig själv vad en ogiltig heltalsvärde skulle se ut
och sedan skapa en Boolean uttryck för att uttrycka det.
>> Vi är nästan färdiga med vår underaktivitet att förmå och validera användarinmatning.
Så låt oss göra det lite lite mer användarvänligt
och ge användaren en liten bit mer information
av vad vi meddelar dem.
Så låt oss uppmana användaren, per spec, med sträng minuter.
Så använder dina printf uttalanden, göra Se till att du matchar detta exakt.
>> Okej.
Så nu har vi ett giltigt användarnamn ingång, ett positivt heltal
värde för hur många minuter de tillbringade i duschen.
Så vad händer nu är att beräkna motsvarande antal flaskor.
Vad vi ska göra här är kanske vara mycket uppenbart för dig vid första,
och det är OK.
Vad vi vill göra är att vi vill börja träna
idén att upptäcka mönster och utveckla formler för problemet.
>> Så vi får höra per spec att en minut i duschen
är ekvivalent med omkring 12 flaskor med vatten.
Alltså två minuter skulle vara ekvivalent med 24,
och fem minuter skulle motsvara 60.
Så nu om du tror du har det, så låt oss
se om du kan komma med ett mönster eller formel
att uttrycka om vi har att säga, n minuter, hur många flaskor vatten
skulle det uttryckas i termer av n?
>> Återigen, även om detta kan vara enkla vid första,
senare när vi kommer till mer komplicerade problem
vi kommer att vilja komma in bruket att identifiera
mönster och utvecklings formler att räkna ut dessa saker.
>> I c har du tillgång till standard aritmetiska operationer,
addition, subtraktion, multiplikation och division.
Så jag lämnar det till du nu att räkna ut
hur man uttrycker det motsvarande antal flaskor
att användaren konsumeras under deras dusch.
>> Okej, vi nästan klar.
Vi har tillfrågas användaren om deras insatser, Vi har sett till att det är giltiga indata,
och sedan har vi räknat ut hur vid beräkning av motsvarande
antal flaskor att de konsumeras.
Så det sista att göra är att mata motsvarande antal flaskor
och förhoppningsvis uppmuntra dem att bevara en del vatten.
>> Utmatning av värdet vara en printf uttalande.
Om jag ville säga att jag ha tre husdjur, till exempel,
Jag kan använda en printf uttalande som ser ut ungefär så här.
Jag har tre husdjur, och en ny linje för trevlig formatering.
>> Nu vill vi inte att helt enkelt svårt kod saker.
Säg antalet min husdjur förändras över tiden.
Då kommer jag att använda platshållare i mitt printf uttalande.
Så här mitt nummer är ett heltal.
Så jag kommer att göra en platshållare för ett heltal med% i.
Jag kommer att skriva strängen, och sedan efter strängen
Jag skriver ett kommatecken och sedan variabel som jag vill skriva ut.
Så att värdet kommer att skrivas ut i stället för att platshållare,% i.
>> Du kan använda platshållare, som väl, för flottar med% f.
Du kan också ha flera platshållare i en sträng.
Till exempel, om jag har ett visst antal av hundar och visst antal katter,
Jag satte tvåplatshållare här och sedan mina två variabler i respektive ordning.
>> Så nu när vi vet hur man skriver ut de värden som lagras i variabler,
den allra sista sak att göra är att se till att vi
Skriv ut värdet i rätt format anges i specifikationen.
Därmed har vi meddelade användare och validerade deras insatser.
Vi har sedan beräknas den ekvivalenta antal flaskor med vatten
att de konsumerar under deras dusch, och vi har matas detta värde till dem.
Och så har vi avslutat vatten.
>> Mitt namn är [? Zamila,?] och detta är CS50.