Tip:
Highlight text to annotate it
X
[Powered by Google Translate] TOMMY MACWILLIAM: Låt oss tala om slingor, en i den gemensamma
programmering konstruerar vi får se hela CS50.
Vi kommer att använda loopar när vi vill utföra en
uppgift mer än en gång.
Till exempel kan vi vill skriva ut "hej" 100 gånger eller skriva ut
ut alla bokstäver i alfabetet.
I båda dessa fall har vi en sak vi vill göra
flera gånger, skriva något.
Men vad vi skriver ut varje gång kan variera.
Så vi kan göra något lite annorlunda på varje
iteration, eller köra igenom, av slingan.
Vi får se tre olika typer av slingor i C, medan
slingor, loopar och göra medan slingor.
Även om dessa tre typer av slingor har en annan syntax,
idéerna bakom dem är desamma.
Vi kommer definiera vissa kodblock inom klammerparenteser,
kallas kroppen av slingan, att vi vill att exekveras
visst antal gånger.
Genom att ändra värdena för variabler som används i kroppen, vi
kan göra vår slinga göra något annorlunda varje gång det körs.
Med någon slinga vi skriver, vi måste också bestämma när
slinga slutar köra.
Om vi inte gör det, då vår trogna dator kommer att fortsätta
att köra den slinga tills vi dödar programmet.
I Scratch kan vi använda upprepa n gånger
blockera att skapa en slinga.
Alla bitar inuti ett block som sagt upprepar 10
skulle köras 10 gånger.
Och då skulle vi gå vidare till bitarna efter det slingan.
Så vår stoppvillkor var helt enkelt har detta block har
kör 10 gånger.
Så låt oss återskapa denna i C. För Scratch att säkerställa
att bitarna inom upprepa blocket exekveras
exakt 10 gånger måste Scratch att hålla reda på varje
genomförandet av upprepade blocket.
För att hålla reda på hur många gånger vi slingan har
utförs, låt oss skapa en variabel som heter jag.
Vi börjar jag av vid noll, eftersom vår slinga
har inte körts ännu.
OK
Nu ska vi använda tiden nyckelordet att börja vår slinga.
Nu ska vi måste ta reda på när vår slinga stannar, men
låt oss lämna detta för nu och sedan komma tillbaka till det.
Okej.
Inuti vår slinga, låt oss bara skriva ut ett budskap, som
"Hej." Vi kan använda printf funktionen för detta.
Okej.
Så nu ska vi spela att en iteration av slingan har
utförts.
Vi kan göra det genom att lägga till 1 till eller uppräkning, vår disk
variabel,. i.
För att göra det, kan vi säga jag är lika med I plus 1, eller mer
enkelt, jag plus plus.
Jättebra.
Så nu kan vi se att varje gång vi slinga körs, vår
räknevariabeln går upp med ett.
Så vi vet exakt hur många iterationer vi har kört hittills.
Efter en iteration av slingan, vårt värde
av jag kommer att vara 1.
Efter två iterationer, jag kommer att vara 2.
Och efter 10 iterationer, jag kommer att vara 10.
Så, om vi vill köra denna slinga exakt 10 gånger, sedan
detta är när vi vill stoppa.
Så vi vill köra denna slinga medan jag är mindre än 10, och
det är precis vad vi ska skriva, medan jag
är mindre än 10.
Detta tillstånd ser ut precis som de villkor som vi använt i om
annars block.
Efter kropp vår slinga har utförts, vårt program
hoppar tillbaka till öglorna villkoret.
Om villkoret är sant, då kroppen av
slinga ska köras igen.
Om tillståndet inte längre är sant, då vår slinga inte kommer att
kör längre och kommer att gå vidare till nästa kodrad
under vår slinga.
Okej.
Så låt oss ta en *** på en annan typ av
slinga, for-slingan.
Bredvid tag sökord, inom parentes, hade vi en sak,
villkoret som krävs för att vara sant för
slingan ska köras.
Det innebär att vi var tvungna att skapa vår disk variabel utanför
av slingan och kom ihåg att öka det någon gång
insidan av slingan.
Huvudet för våra för slinga, å andra sidan, har tre
delar, som var och en kommer att separeras med ett semikolon.
I vår första tredjedelen kan vi förklara någon disk eller hjälpare
variabler som vi vill använda i vår slinga.
I praktiken kan detta vara riktigt bra.
Vi behöver verkligen inte den variabeln, jag efter vår samtidigt
slinga har kört, så vi borde verkligen inte behöva förklara den
utanför slingan.
Den andra tredjedelen är villkoret som måste vara sant
för kroppen att utföras igen, precis som
i vår while-slinga.
I vår sista tredjedelen kan vi köra ett uttalande som kommer att vara
utförs efter varje iteration av slingan, så att vi inte har
att bygga in det i slingan.
Så låt oss skriva en for-slinga som räknar ner från 5 till 1.
Vi börjar med den för sökord.
Vi kan skapa en räknare variabel först, som vi ska
satt till 5 denna gång eftersom vi räknar ner,
följt av ett semikolon.
Nästa är vårt tillstånd, som vi ska återkomma till.
Tredje vill vi dekrementera vår disk variabel efter
varje iteration av slingan.
Så istället för att säga jag plus plus, vi säga att jag minus minus.
Okej.
Så vi vill att slingan ska köras medan jag fortfarande är
större än 0.
I kroppen av slingan, låt oss skriva ut värdet av jag.
För att göra det använder vi den printf-funktionen med hjälp av% d
platshållare.
Kom ihåg att denna platshållaren ersätts med
värdet av i.
Slutligen, låt oss lägga ett uttalande efter vår för slinga.
När vi kör denna slinga kommer jag börja på 5,
så 5 kommer att skrivas ut.
När jag kommer till 0, fortsatta tillståndet är i
större än 0, inte längre håller.
Så vår slinga slutar köra, och vi kommer att se
uttalande efter slingan.
Så låt oss köra denna kod.
Först ska vi sammanställa en
countdown.c med make nedräkning.
Nu kan vi köra kod med. / Nedräkning.
I båda medan slingor och slingor, vår fortsatta
tillstånd kommer att kontrolleras innan kroppen
av slingan exekveras.
Det betyder att om vårt tillstånd är inte inledningsvis
sant, då kroppen av vår slinga aldrig kommer att köras.
Så det är ibland bra att kontrollera tillståndet efter
kropp av slingan snarare än innan den.
Så låt oss skriva en slinga för att uppmana användaren för ett antal
tills ett positivt tal tillförs.
Om användaren matar ett negativt tal, vi vill be dem
för ett annat nummer.
Så vi kommer att vilja detta uppmaning att vara inne i
kropp av slingan.
Emellertid, när slingan körs för första gången, måste användaren
har inte gett oss numret ännu.
Så det inte vettigt att kontrollera om det är positivt.
Istället kommer vi att vilja kolla numret efter kroppen
slingan körs.
Vi kan göra detta med en gör while-slinga.
Först skapar vi en variabel, n, som kommer att hålla
användarens inmatning.
Nu ska vi använda göra sökord, följt av klammerparenteser som
kommer att börja kropp vår slinga.
I kroppen, kan vi fråga användaren för ett antal med
GetInt funktion.
Nu ska vi ha kroppen av denna slinga att köra igen om
användaren skrivit ett negativt tal, så vi ska säga när N
är mindre än 0.
Lägg märke till semikolon här efter while.
Så låt oss köra denna kod.
Först ska vi sammanställa detta med att positiva.
Nu kan vi köra programmet med. / Positivt.
Om vi ger det här programmet ett negativt tal, liksom negativ
4, då vi blir ombedd igen för ett antal sedan
villkoret för vår göra medan slinga var sant.
När vi ger ett positivt tal, liksom 8, sedan
villkoret för vår göra medan slinga kommer inte längre att vara sant.
Så slingan kommer inte att genomföras på nytt.
Och det är det för de tre typerna av loopar vi använder i C.
Mitt namn är Tommy, och detta är CS50.