Hvordan gjør-mens looper jobber i Computer Programmering
Når du lærer å programmere Slik lærer du programmering uten all stress Slik lærer du programmering uten all stress Kanskje du har bestemt deg for å forfølge programmering, enten for en karriere eller bare som en hobby. Flott! Men kanskje du begynner å føle deg overveldet. Ikke så bra. Her er hjelp til å lette reisen din. Les mer, forståelse av de grunnleggende byggeblokkene er nøkkelen til tidlig suksess. Du henter de vanskelige emnene senere, men hvis du ikke forstår variable typer, sløyfer og funksjoner, er det vanskelig å komme langt.
De fleste nye programmører lærer om if-else uttalelser, mens looper, og for sløyfer om ikke lenge. Men en av sløyfetyper du kanskje ikke forstår er do-while loop. La oss diskutere hvordan denne sløyfen fungerer, når du vil bruke den, og se på noen få eksempler.
Det grunnleggende
En runde-løkke utfører en blokk med kode minst en gang, kontrollerer om en tilstand er sant, og fortsetter å kjøre koden innvendig avhengig av tilstanden. La oss ta en titt på et enkelt pseudokodeeksempel (siden de hjelper deg med å lære! 10 Grunnleggende Python-eksempler som hjelper deg med å lære raskt 10 Grunnleggende Python-eksempler som vil hjelpe deg med å lære fort Denne artikkelen av grunnleggende python-eksempler er for de som allerede har programmering erfaring og vil bare overgå til Python så fort som mulig. Les mer):
gjør output "Variabelen x er lik" + x; x ++; mens (x < 5); output "The loop has ended.";
I denne delen av koden, linjene inne i gjøre Braketter kjører alltid minst én gang. Dette betyr at x kan være noen verdi ved starten av løkken.
Hvis x er lik 1 når sløyfen starter, vil den gjenta til x tilfredsstiller ikke tilstanden ved siden av samtidig som. Dermed ville det løpe totalt 5 ganger. Når x er ikke mindre enn 5, sløyfen slutter og fortsetter på koden etter den. Denne utgangen vil se ut som følger:
Variabelen x er lik 1 Variabelen x er lik 2 Varianten x er lik 3 Varianten x er lik 4 Varianten x er lik 5 Løkken er avsluttet.
Omvendt, hvis x var lik 20 da denne løkken startet, ville den bare løpe en gang. Så du vil se en utgangserklæring, x trinn til 21, og sløyfen vil ende fordi 21 ikke er mindre enn 5. Dens utgang ville være:
Variabelen x er lik 20 Sløyfen er avsluttet.
Kontrast med mens og for looper
Hvordan gjør en gjør mens sløyfen er forskjellig fra andre sløyfer? Det viktigste skillet er at gjør-mens sløyfene tester en tilstand etter utfører en kodeblokk mens andre sløyfer sjekker en tilstand før kjører koden inni.
Vurder denne grunnleggende pseudokoden samtidig som loop for sammenligning:
x = 10; mens (x < 5) output "The loop has run!"; x++;
Her, x er satt til 10 og samtidig som loop kontrollerer det x er mindre enn 5 før den går. På grunn av dette kjører koden inni aldri. Ved å bruke den samme logikken til en løpebånd gir oss noe slikt:
x = 10; gjør output "Loopen har kjørt!"; x ++; mens (x < 5)
Denne sløyfen vil sende teksten en gang, økning x, Fortsett deretter videre.
Vær oppmerksom på at du kan gjenskape funksjonen mens du er i gang med en ekstra setning foran en samtidig som loop slik som:
utdata "Hei!"; x ++; mens (x < 5) output "Hello!"; x++;
Men dette er clunky og det er ingen grunn til å gjøre det når gjør - mens looper eksisterer.
For Loops
Gjør-mens sløyfer har en lignende forskjell med til sløyfer. EN til loop definerer en variabel, angir hvor lenge løkken skal kjøres, og setter en oppførsel for slutten av hver iterasjon.
Her er en enkel til loop for sammenligning:
for (int i = 0; i < 5; i++) output "The loop has run " + i + " times.";
Dette fremhever en god kontrast mellom gjør mens og til sløyfer - du vet nøyaktig hvor mange ganger a til sløyfen vil løpe fordi du setter opp forholdene ved starten. Hvis du endrer den ovennevnte koden til en gjør-mens-sløyfe slik:
gjør output "Loopen har kjørt" + i + "ganger."; i ++; mens jeg < 5);
Du kan ende opp med et problem når løkken løper. Hvis du ikke initialiserte Jeg et annet sted, vet du ikke hva verdien vil være når gjøre del løper - og det vil løpe minst en gang. Hvis Jeg var 500 da denne løkken løp, ville utgangen her være unøyaktig.
Oppsummert:
- EN do-while loop er nyttig når du vil utføre en kommando minst en gang, og kontinuerlig til en tilstand er feil.
- EN mens løkken lar deg gjenta en blokk med kode så lenge en tilstand er sant, og stopp så snart tilstanden ikke lenger er sant.
- EN for sløyfe Lar deg angi nøyaktig hvor mange ganger sløyfen skal løpe ved å angi dine egne parametere.
Leaving a Do-While Loop
Selvfølgelig må du ha en utgangstilstand for gjør-mens sløyfer som alle andre. Hvis ikke, kan du ende opp med en uendelig sløyfe. Vurder følgende utdrag:
x = 5; gjør output "Dette slutter aldri!"; mens (x < 10);
Hvis du ikke øker x noe annet sted i koden, så vil denne løkken løpe for alltid. Nå er noen ganger uendelige sløyfer nyttige fordi programmereren setter opp kode for å bryte ut av sløyfen andre steder. Men oftere enn ikke, begynner nybegynnere i uendelige sløyfer ved et uhell. De 10 verste programmeringsfeilene i historien De 10 verste programmeringsfeilene i historien I sin store fortid, koding av ødelagt ødeleggelse også. Forekomster av en liten dårlig kode forårsaket katastrofe på et stort nivå. Følgende er 10 av de verste programmeringsfeilene i historien. Les mer .
Her er et eksempel på en passende uendelig sløyfe. La oss si at du designer et spill 5 Gratis spillutviklingsprogramvareverktøy for å lage dine egne spill 5 Gratis spillutviklingsprogramvareverktøy for å lage dine egne spill Her er den beste gratis spillutviklingsprogramvaren og verktøyene du kan bruke til å begynne å lage drømmespillet ditt i dag . Les mer der brukeren ruller en dør og må få en 6 til å forlate hjemmebasen. Du vil fortsette å rulle dysen til den lander på 6, og du må selvfølgelig rulle minst en gang. Dermed kan du bruke denne koden:
gjør int roll = tilfeldig (1, 2, 3, 4, 5, 6); hvis (rulle == 6) bryte; mens (sann);
De mens (sann) tilstand betyr at denne løkken vil løpe for alltid, som vi vil ha fordi brukeren må rulle til han får en 6. Uten gå i stykker uttalelse, det ville bli sittende fast. Men når brukeren ruller en 6, hvis setningen blir sant, og sekvensen bryter ut av løkken og beveger seg på det som er etter.
Du trenger ikke å bruke en pauseoppgave hvis du ikke vil. Faktisk er det sannsynligvis bedre å unngå break statements hvis du kan. De gjør koden vanskeligere å opprettholde, og slutt på en tilstand er lettere å holde styr på. Dermed oppnår den modifiserte koden under samme formål:
gjør int roll = tilfeldig (1, 2, 3, 4, 5, 6); mens (rulle! = 6);
En dårlig uendelig loop
En uendelig sløyfe som du har en plan for spennende er bra. Men noen ganger vil du ved et uhell lage en uendelig sløyfe, som i eksemplet nedenfor:
int x = 7; gjør x = 1; x = x + 2; utdata "x er lik" + x; mens (x < 10);
Dette kan se ut som inkrementer x med 2 hver løkke og gjentas til x er ikke mindre enn 10, men se nærmere. Fordi løkken settes x lik 1 hver gang det går, er dette en uendelig sløyfe. Legg merke til det x = 1 og x = x + 2 betyr at x er alltid 3 på slutten av blokken uansett hvor mange ganger dette løper, noe som betyr x er aldri mindre enn 10.
Se etter uttalelser inne i sløyfen din som utilsiktet bytter en variabel hver gang den går for å unngå situasjoner som dette.
Eksempler på ekte verden
Vi har diskutert noen hypotetiske eksempler over, men la oss ta en rask titt på noen nyttige virkelige eksempler på gjør-mens looper.
Hvis du opprettet en sløyfe for å lese data fra en fil til den treffer slutten, ville du bruke en gjør-mens-sløyfe. Åpenbart må du ta minst ett tegn hvis du planlegger å lese fra en fil, slik at du kan bruke en runde som denne (takket være Stack Exchange-brukeren Steven Burnap for dette eksempelet):
gjør resultat = readData (buffer); mens (resultat! = EOF);
Uten en stund, må du bruke en litt ugligere løsning:
mens (sann) resultat = readData (buffer); hvis (resultat == EOF) pause;
Et annet eksempel innebærer å gripe innspill fra en bruker. La oss si at du skriver et program som ber brukeren å skrive inn et positivt nummer. Ved hjelp av en stund kan du forsikre deg om at deres innspill er riktig:
gjør output "Vennligst skriv inn et positivt nummer:"; int input = getInput (); mens (input) < 0);
Med denne sløyfen ser brukeren spørringen om å skrive inn et tall og legger inn en verdi en gang. Hvis de skriver inn et negativt tall, løper løkken igjen, og de blir bedt om å taste inn et positivt tall før de overholdes. Andre sløyfer gir bare ikke mening for denne typen handling.
Klar til bruk gjør-mens looper?
Vi har tatt en undersøkelse av gjør-mens looper, inkludert deres grunnleggende prinsipper, hvordan de skal brukes best, og hvordan de sammenlignes med andre looper. Hvis du ikke husker noe annet fra denne artikkelen, vet du det som gjør - mens løkker er for når du trenger å kjøre noe minst en gang, men vet ikke hvor mange ganger du trenger det før du starter løkken.
Tenk på situasjoner som dette i programmene dine, og du vil lett finne steder der du gjør - mens looper passer. Nesten alle de beste nybegynnere språkene 6 Lettest programmeringssprog å lære for nybegynnere 6 Lettest programmeringssprog å lære for nybegynnere Lære å programmere handler om å finne det riktige språket like mye som det handler om oppbyggingsprosessen. Her er de seks beste programmeringsspråket for nybegynnere. Les mer støtte gjør-mens looper, så du burde ikke ha problemer med å implementere dem.
Hvis du lærer det grunnleggende, må du sørge for at du vurderer våre beste triks for å mestre et nytt programmeringsspråk. 7 Nyttige triks for å mestre et nytt programmeringsspråk. 7 Nyttige triks for å mestre et nytt programmeringsspråk. Det er greit å være overveldet når du lærer å kode . Du vil sikkert glemme ting så fort du lærer dem. Disse tipsene kan hjelpe deg å bedre beholde all den nye informasjonen. Les mer .
Hvilke andre situasjoner kan du tenke på hvor en stund er fornuftig? Diskuter og gi oss beskjed hvis du bruker gjør-mens looper i programmene dine i kommentarseksjonen!
Bildekreditt: Aaban via Shutterstock.com
Utforsk mer om: Programmering.