
Brian Curtis
0
4172
1043
Når du lærer at programmere Sådan lærer du programmering uden al stress Sådan lærer du programmering uden al den stress Måske har du besluttet at fortsætte programmering, hvad enten det drejer sig om en karriere eller bare som en hobby. Store! Men måske begynder du at blive overvældet. Ikke så stor. Her er hjælp til at lette din rejse. , forståelse af de grundlæggende byggesten er nøglen til tidlig succes. Du henter de vanskelige emner senere, men hvis du ikke forstår variabeltyper, sløjfer og funktioner, er det svært at komme langt.
De fleste nye programmerere lærer om hvis-andet udsagn, mens løkker, og til løkker inden længe. Men en af de sløjfetyper, du muligvis ikke forstår, er gør-mens-løkke. Lad os diskutere, hvordan denne løkke fungerer, når du vil bruge den, og se på et par eksempler.
Det grundlæggende
En do-while-loop udfører en kodeblok mindst en gang, kontrollerer, om en betingelse er sand, og fortsætter derefter med at køre koden inde afhængigt af betingelsen. Lad os se på et simpelt pseudokodeeksempel (da de hjælper dig med at lære! 10 grundlæggende Python-eksempler, der vil hjælpe dig med at lære hurtigt 10 grundlæggende Python-eksempler, der vil hjælpe dig med at lære hurtigt Denne artikel med grundlæggende pythoneksempler er til dem, der allerede har en vis programmering opleve og blot ønsker at skifte til Python så hurtigt som muligt.):
do output "Variablen x er lig med" + x; x ++; mens (x < 5); output "The loop has ended.";
I denne kodekode er linjerne inde i gøre konsoller kører altid mindst én gang. Det betyder at x kan være en hvilken som helst værdi i starten af loopen.
Hvis x svarer til 1, når loopen starter, den gentages indtil x opfylder ikke betingelsen ved siden af mens. Således ville det køre i alt 5 gange. Hvornår x er ikke mindre end 5, slutter løkken og fortsætter på koden efter den. Denne output ser ud som følger:
Variablen x er lig med 1 Variablen x er lig med 2 Variablen x er lig med 3 Variablen x er lig med 4 Variablen x er lig med 5 Løkken er afsluttet.
Omvendt, hvis x var lig med 20, da denne loop startede, den ville kun køre en gang. Så du vil se en udsagnsangivelse, x trin til 21, og løkken slutter, fordi 21 ikke er mindre end 5. Dets output ville være:
Variablen x er lig med 20 Løkken er afsluttet.
Kontrast med mens og for sløjfer
Hvordan fungerer en gøre imens loop adskiller sig fra andre loops? Den vigtigste sondring er, at do-while-løkker tester en tilstand efter udførelse af en kodeblok, mens andre loops kontrollerer en tilstand Før kører koden inde.
Overvej denne grundlæggende pseudokode mens loop til sammenligning:
x = 10; mens (x < 5) output "The loop has run!"; x++;
Her, x er indstillet til 10 og mens loop kontrollerer det x er mindre end 5, før den kører. På grund af dette kører koden inde aldrig. At anvende den samme logik på en do-while-loop giver os noget lignende:
x = 10; do output "Løkken er kørt!"; x ++; mens (x < 5)
Denne løkke udsætter teksten en gang, forøgelse x, fortsæt derefter.
Bemærk, at du kan genoprette do-while-funktionaliteten med en ekstra erklæring foran en mens løkke, som:
output "Hej!"; x ++; mens (x < 5) output "Hello!"; x++;
Dette er dog uhyggeligt, og der er ingen grund til at gøre det, når der findes lo-mens-løkker.
For sløjfer
Lo-mens-loops har en lignende sondring med til loops. EN til loop definerer en variabel, specificerer hvor længe løkken skal køres og indstiller en adfærd til slutningen af hver iteration.
Her er en enkel til loop til sammenligning:
for (int i = 0; i < 5; i++) output "The loop has run " + i + " times.";
Dette fremhæver en god kontrast mellem gøre imens og til løkker - du ved nøjagtigt hvor mange gange a til loop løber, fordi du konfigurerer betingelserne i starten. Hvis du ændrer ovenstående kode til en do-while-løkke som denne:
do output "Løkken har kørt" + i + "gange."; i ++; mens jeg < 5);
Du kan ende med et problem, når loopen kører. Hvis du ikke initialiserede jeg et andet sted, ved du ikke, hvad dets værdi vil være, når gøre del kører - og det kører mindst én gang. Hvis jeg var 500 da denne loop løb, output her ville være unøjagtigt.
Sammenfattende:
- EN gør-mens-løkke er nyttigt, når du vil udføre en kommando mindst en gang og konstant, indtil en betingelse er falsk.
- EN mens løkke lader dig gentage en blok af kode, så længe en betingelse er sand, og stoppe, så snart betingelsen ikke længere er sand.
- EN til løkke lader dig specificere nøjagtigt, hvor mange gange loopen skal køre ved at indstille dine egne parametre.
Efterlader en gør-mens-loop
Selvfølgelig skal du have en udgangsbetingelse for do-while-sløjfer ligesom enhver anden. Hvis ikke, kan du ende med en uendelig sløjfe. Overvej følgende uddrag:
x = 5; do output "Dette slutter aldrig!"; mens (x < 10);
Hvis du ikke øger x et andet sted i koden, kører denne loop for evigt. Nu er nogle gange uendelige sløjfer nyttige, fordi programmereren indstiller kode til at bryde ud af løkken andetsteds. Men oftere end ikke løber nybegynderkodere uendelige sløjfer ved et uheld De 10 værste programmering af fejl i historien De 10 værste programmering af fejl i historien I sin fortorkede fortid kodede også fortøjning til ødelæggelse. Forekomster af en smule dårlig kode forårsagede katastrofe på et større niveau. Følgende er 10 af de værste programmeringsfejl i historien. .
Her er et eksempel på en passende uendelig løkke. Lad os sige, at du designer et spil 5 Gratis spiludviklingssoftwareværktøjer til at lave dine egne spil 5 Gratis spiludviklingssoftwareværktøjer til at lave dine egne spil Gratis spiludviklingssoftware er en fantastisk måde at starte videospilfremstilling. Vi har samlet den bedste spilsoftware på markedet. hvor brugeren ruller en matrice og skal få en 6 for at forlade hjemmebasen. Du ønsker at fortsætte med at rulle matrisen, indtil den lander på 6, og du er selvfølgelig nødt til at rulle mindst en gang. Således kan du bruge denne kode:
gør int roll = tilfældig (1, 2, 3, 4, 5, 6); hvis (rulle == 6) brud; mens (sandt);
Det mens (sandt) betingelse betyder, at denne løkke kører for evigt, hvilket vi ønsker, fordi brugeren skal rulle, indtil han får en 6. Uden pause erklæring, det ville sidde fast. Men når brugeren ruller en 6, vil hvis udsagn bliver sandt, og sekvensen bryder ud af løkken og bevæger sig på hvad der er efter.
Du behøver ikke at bruge en pauseerklæring, hvis du ikke vil. Faktisk er det sandsynligvis bedre at undgå pauserangivelser, hvis du kan. De gør din kode sværere at vedligeholde, og det er lettere at holde styr på at slutte med en betingelse. Således opnår den ændrede kode nedenfor det samme formål:
gør int roll = tilfældig (1, 2, 3, 4, 5, 6); mens (rull! = 6);
En dårlig uendelig sløjfe
En uendelig sløjfe, som du har en plan for at forlade, er fint. Men nogle gange opretter du ved et uheld en uendelig løkke, som i eksemplet herunder:
int x = 7; gør x = 1; x = x + 2; output "x er lig" + x; mens (x < 10);
Dette kan se ud som om det er steget x med 2 hver løkke og gentages, indtil x ikke er mindre end 10, men kig nærmere. Fordi løkken sætter sig x svarende til 1 hver gang det kører, er dette en uendelig løkke. Læg mærke til det x = 1 og x = x + 2 betyder at x er altid 3 i slutningen af blokken, uanset hvor mange gange dette kører, hvilket betyder x er aldrig mindre end 10.
Se efter udsagn i din løkke, som utilsigtet ændrer en variabel, hver gang den kører for at undgå situationer som denne.
Eksempler i den virkelige verden
Vi har diskuteret nogle hypotetiske eksempler ovenfor, men lad os se hurtigt på et par nyttige eksempler på virkelige verden på do-mens-loops.
Hvis du opretter en løkke til at læse data fra en fil, indtil den ramte slutningen, ville du bruge en do-while-loop. Det er klart, at du er nødt til at få fat i mindst et tegn, hvis du planlægger at læse fra en fil, så du kan bruge en do-while-løkke som denne (takket være Stack Exchange-bruger Steven Burnap for dette eksempel):
gør result = readData (buffer); while (resultat! = EOF);
Uden at gøre det, skal du bruge en lidt grimme løsning:
mens (sandt) result = readData (buffer); hvis (resultat == EOF) brud;
Et andet eksempel involverer at gribe input fra en bruger. Lad os sige, at du skriver et program, der beder brugeren om at indtaste et positivt tal. Ved hjælp af et do-while kan du sikre dig, at deres input er passende:
do output "Indtast et positivt tal:"; int input = getInput (); mens (input) < 0);
Med denne løkke ser brugeren spørgsmålet om at indtaste et tal og indtaster en værdi én gang. Hvis de indtaster et negativt tal, kører loopen igen, og de bliver bedt om at indtaste et positivt tal, indtil de overholder dem. Andre sløjfer giver simpelthen ikke mening for denne type handling.
Klar til brug Do-While-sløjfer?
Vi har foretaget en undersøgelse af do-while-loops, inklusive deres grundlæggende principper, hvordan man bedst kan bruge dem, og hvordan de kan sammenlignes med andre loops. Hvis du ikke kan huske noget andet fra denne artikel, skal du vide, at gør-mens-sløjfer er til når du har brug for at køre noget mindst en gang, men ved ikke, hvor mange gange du har brug for det, inden du starter løkken.
Tænk på situationer som dette i dine programmer, og du kan let finde steder, hvor do-mens loops passer. Næsten alle de bedste begyndelsessprog 6 Nemmeste programmeringssprog at lære for begyndere 6 Nemmeste programmeringssprog at lære for begyndere At lære at programmere handler om at finde det rigtige sprog lige så meget som det handler om opbygningsprocessen. Her er de seks mest nemmeste programmeringssprog for begyndere. support do-while-loops, så du skulle ikke have problemer med at implementere dem.
Hvis du lærer det grundlæggende, skal du sørge for at gennemgå vores toptricks til at mestre et nyt programmeringssprog 7 Nyttige tricks til at mestre et nyt programmeringssprog 7 Nyttige tricks til at mestre et nyt programmeringssprog Det er okay at blive overvældet, når du lærer at kode . Du vil sandsynligvis glemme tingene så hurtigt, som du lærer dem. Disse tip kan hjælpe dig med at bevare alle de nye oplysninger bedre. .
Hvilke andre situationer kan du tænke på, hvor et do-mens giver mening? Diskutér og fortæl os, hvis du bruger do-while-loops i dine programmer i kommentarsektionen!
Billedkredit: Aaban via Shutterstock.com