Tip:
Highlight text to annotate it
X
[Powered by Google Translate] TOMMY MACWILLIAM: La oss snakke om looper, en av de vanligste
programmering konstruerer vi får se hele CS50.
Vi vil bruke løkker når vi ønsker å utføre en
oppgave mer enn én gang.
For eksempel kan vi ønsker å skrive ut "hei" 100 ganger eller skrive ut
ut alle bokstavene i alfabetet.
I begge disse tilfellene har vi en ting vi ønsker å gjøre
flere ganger, skrive noe ut.
Men hva vi skrive ut hver gang kan variere.
Så vi kan gjøre noe litt annerledes på hver
gjentakelse eller kjøre gjennom, av løkken.
Vi får se tre forskjellige typer sløyfer i C, mens
looper, for looper, og gjøre mens sløyfer.
Om disse tre typer sløyfer har en annen syntaks,
ideene bak dem er den samme.
Vi vil definere noen blokk med kode innen klammeparentes,
kalt kroppen av loopen, at vi ønsker å bli utført
et antall ganger.
Ved å endre verdiene av variablene i kroppen, vi
kan gjøre våre sløyfe gjøre noe annerledes hver gang det kjøres.
Med noen loop vi skriver, vil vi også må bestemme når
sløyfe skal slutte.
Hvis vi ikke gjør det, så våre tillitsverdig datamaskinen vil fortsette
å kjøre som sløyfe før vi dreper programmet.
I Scratch, kunne vi bruke gjenta n ganger
blokkere å opprette en løkke.
Alle brikkene innenfor en blokk som sa gjenta 10
ville bli kjørt 10 ganger.
Og så vil vi gå videre til brikkene etter at loop.
Så vår stopp tilstanden var rett og slett har denne blokken vært
kjøre 10 ganger.
Så la oss gjenskape dette i C. For Scratch å sikre
at bitene innenfor gjenta blokken utføres
nøyaktig 10 ganger, må Scratch å holde styr på hver
utførelsen av gjenta blokken.
For å holde styr på hvor mange ganger vår sløyfe kroppen har vært
henrettet, la oss lage en variabel kalt jeg.
Vi begynner jeg av på null, siden loop
har ikke blitt kjørt enda.
OK
Nå skal vi bruke mens nøkkelord for å starte av vår loop.
Nå trenger vi å finne ut når vår løkke vil stoppe, men
la oss la dette for nå og deretter komme tilbake til det.
OK.
Innsiden av loop, la oss bare ut en melding ut, som
"Hei". Vi kan bruke printf funksjonen for dette.
OK.
Så nå skal vi registrere at en gjentakelse av loopen kroppen har
blitt henrettet.
Vi kan gjøre det ved å legge til en til, eller økes, vår teller
variabel,. jeg
Å gjøre det, kan vi si at jeg er lik i pluss 1 eller mer
enkelt, jeg pluss pluss.
Flott.
Så nå kan vi se at hver gang vår sløyfe er kjørt, vår
tellervariabelen går opp med en.
Så vi vet nøyaktig hvor mange iterasjoner vi har kjørt så langt.
Etter en iterasjon av sløyfen, vår verdi
av jeg vil være en.
Etter to iterasjoner, vil jeg være to.
Og etter 10 gjentakelser, vil jeg være 10 år.
Så hvis vi ønsker å kjøre denne sløyfen nøyaktig 10 ganger, deretter
dette er når vi ønsker å stoppe.
Så vi ønsker å kjøre denne sløyfen mens jeg er mindre enn 10, og
det er akkurat hva vi skal skrive, mens jeg
er mindre enn 10 år.
Denne tilstanden ser ut akkurat som de forholdene vi brukte i om
else blokker.
Etter at kroppen av loop er blitt henrettet, vårt program
vil hoppe tilbake til løkker tilstand.
Hvis betingelsen er sann, så kroppen av
Løkken vil bli kjørt på nytt.
Hvis tilstanden er ikke lenger sant, så vår løkken ikke vil være
kjøre lenger og vil gå videre til neste linje med kode
under loop.
OK.
Så la oss ta en *** på en annen type
loop, for loop.
Ved siden av mens søkeordet, i parentes, hadde vi en ting,
den tilstanden som måtte være til stede på
løkke kroppen som skal kjøres.
Det betyr at vi måtte lage våre tellervariabelen utenfor
av loopen og husk å øke det på et tidspunkt
innsiden av løkken.
Toppteksten for våre for loop, på den annen side, har tre
deler, som hver vil skilles med semikolon.
I vår første tredjedel, kan vi erklære noen counter eller hjelper
variabler vi ønsker å bruke i loop.
I praksis kan dette være veldig nyttig.
Vi trenger ikke den variabelen, i, etter mens vår
løkke har kjørt, så vi egentlig ikke bør ha for å erklære det
utenfor sløyfen.
Den andre tredje vil være den tilstand som må være sant
for kroppen å bli henrettet igjen, akkurat som
i vår mens loop.
I vår siste tredjedel, kan vi kjøre en uttalelse som vil bli
utføres etter hver iterasjon av loopen, så vi har ikke
å bygge den inn i løkken kroppen.
Så la oss skrive en for løkke som teller ned fra 5 til 1.
Vi begynner med den for søkeordet.
Vi kan lage en tellervariabelen først, som vi vil
satt til 5 denne gangen siden vi teller ned,
etterfulgt av et semikolon.
Neste er vår tilstand, som vi vil komme tilbake til.
Tredje, vil vi gjerne minske vår tellervariabelen etter
hver iterasjon av sløyfen.
Så i stedet for å si jeg pluss pluss, vil vi si jeg minus minus.
OK.
Så vi vil at loopen kroppen til å kjøre mens jeg fortsatt er
større enn 0.
I kroppen av loopen, la oss skrive ut verdien av i.
For å gjøre dette, vil vi bruke printf funksjonen, bruker% d
plassholder.
Husk at det plassholderen bli erstattet med
Verdien av jeg.
Til slutt, la oss legge til en uttalelse etter vår for loop.
Når vi kjører denne sløyfen, vil jeg starte på 5,
så 5 vil bli skrevet ut.
Når jeg kommer til 0, fortsettelsen tilstand, er jeg
større enn 0, vil ikke lenger holde.
Så vår løkke vil stanse henrettelsene, og vi vil se
setningen etter løkken.
Så la oss kjøre denne koden.
Først vil vi sette sammen en
countdown.c med lag nedtelling.
Nå kan vi kjøre denne koden med. / Nedtelling.
I begge mens looper og for looper, vår videreføring
tilstand vil bli sjekket før kroppen
av løkke kjøres.
Det betyr at hvis vår tilstand er i utgangspunktet ikke
sant, så kroppen av loop aldri vil bli kjørt.
Så det er noen ganger nyttig å sjekke tilstanden etter
legeme av loopen snarere enn før den.
Så la oss skrive en loop for å be brukeren for en rekke
inntil et positivt tall er levert.
Hvis brukeren innganger et negativt tall, vil vi ønsker å spørre dem
for et annet nummer.
Så vi vil ha denne meldingen å være inne i
organ av løkken.
Imidlertid, når sløyfen kjøres for første gang, brukeren
har ikke gitt oss nummeret ennå.
Slik at det ikke fornuftig å sjekke om det er positivt.
I stedet vil vi ønsker å sjekke nummeret etter kroppen
løkken er kjørt.
Vi kan gjøre dette med en do mens loop.
Først vil vi lage en variabel, n, som vil holde
brukerens input.
Nå skal vi bruke do søkeord, etterfulgt av klammeparentes som
vil starte kroppen av loop.
I kroppen, kan vi be brukeren om et tall med
GetInt funksjon.
Nå vil vi ønsker kroppen av denne sløyfen for å utføre igjen hvis
brukeren har skrevet et negativt tall, så vi vil si mens n
er mindre enn 0.
Legg merke til semikolon her etter mens uttalelse.
Så la oss kjøre denne koden.
Først vil vi kompilere dette med at positive.
Nå kan vi kjøre programmet med. / Positiv.
Hvis vi gir dette programmet et negativt tall, som negativ
4, så vi vil bli spurt igjen for en rekke siden
tilstanden gjør våre mens loop var sant.
Når vi gi et positivt tall, som 8, deretter
tilstanden gjør våre mens loop vil ikke lenger være sant.
Så løkken ikke vil bli utført på nytt.
Og det er det for de tre typer sløyfer vi skal bruke i C.
Mitt navn er Tommy, og dette er CS50.