Hur fungerar-medan loopar arbetar med datorprogrammering
När du lär dig att programmera Hur man läser programmering utan all stress Hur man lär sig programmering utan all stress. Du kanske har bestämt dig för att fortsätta programmera, oavsett om du är en karriär eller bara som en hobby. Bra! Men kanske börjar du känna dig överväldigad. Inte så bra. Här är hjälp för att underlätta din resa. Läs mer, förstå de grundläggande byggstenarna är nyckeln till tidig framgång. Du tar upp de svåra ämnena senare, men om du inte förstår variabla typer, loopar och funktioner är det svårt att få långt.
De flesta nya programmerare lär sig om om-annat uttalanden, medan slingor, och för slingor inom kort. Men en av de slingtyper du kanske inte förstår är do-while loop. Låt oss diskutera hur den här slingan fungerar, när du vill använda den och titta på några exempel.
Det grundläggande
En genomgångslinga utför ett block av kod åtminstone en gång, kontrollerar om ett tillstånd är sant och fortsätter sedan att köra koden inuti beroende på tillståndet. Låt oss ta en titt på ett enkelt pseudokodsexempel (eftersom de hjälper dig att lära dig!) 10 Grundläggande Python-exempel som hjälper dig att lära dig snabbt 10 Grundläggande Python-exempel som hjälper dig att lära dig snabbt Denna artikel av grundläggande python-exempel är för dem som redan har programmering erfarenhet och vill helt enkelt övergå till Python så fort som möjligt. Läs mer):
gör output "Variabeln x är lika med" + x; x ++; medan (x < 5); output "The loop has ended.";
I denna bit av kod, linjerna inuti do parenteser kör alltid minst en gång. Detta innebär att x kan vara något värde vid början av slingan.
Om x motsvarar 1 när slingan börjar, kommer den att upprepas tills x uppfyller inte villkoret bredvid medan. Således skulle det springa totalt 5 gånger. När x är inte mindre än 5, slutar slingan och fortsätter på koden efter den. Denna produktion skulle se ut som följer:
Variabeln x är lika med 1 Variabeln x är lika med 2 Variabeln x är lika med 3 Variabeln x är lika med 4 Variabeln x är lika med 5 Slingan är avslutad.
Omvänt, om x var lika med 20 när denna loop började, skulle den bara springa en gång. Så du skulle se en utgåva, x steg till 21 och slingan skulle sluta eftersom 21 inte är mindre än 5. Dess utmatning skulle vara:
Variabeln x är lika med 20 Slingan är slut.
Kontrast med medan och för slingor
Hur gör en göra medan slingan skiljer sig från andra slingor? Den viktigaste skillnaden är att medan loopar testar ett tillstånd efter exekvera ett kodblock, medan andra loopar kontrollerar ett tillstånd innan köra koden inuti.
Tänk på denna grundläggande pseudokod medan slinga för jämförelse:
x = 10; medan (x < 5) output "The loop has run!"; x++;
Här, x är inställd på 10 och medan loop kontrollerar det x är mindre än 5 innan den körs. På grund av detta körs koden inuti aldrig. Att tillämpa samma logik på en stundslinga ger oss något så här:
x = 10; gör output "Slingan har kört!"; x ++; medan (x < 5)
Denna slinga matar ut texten en gång, inkrement x, fortsätt sedan vidare.
Observera att du kan återskapa funktionaliteten under en gång med ett extra uttalande framför a medan slinga, som så:
produktionen "Hej!"; x ++; medan (x < 5) output "Hello!"; x++;
Men det här är clunky och det finns ingen anledning att göra när när-medan slingor existerar.
För slingor
Gör-medan loopar har en liknande distinktion med för loopar. en för loop definierar en variabel, anger hur lång slingan ska köras och anger ett beteende för slutet av varje iteration.
Här är en enkel för slinga för jämförelse:
för (int i = 0; i < 5; i++) output "The loop has run " + i + " times.";
Detta belyser en bra kontrast mellan göra medan och för loopar - du vet exakt hur många gånger a för slingan kommer att springa eftersom du ställer in villkoren i början. Om du ändrar ovanstående kod till en gör-loop så här:
gör output "Slingan har kört" + i + "gånger."; i ++; medan jag < 5);
Du kan sluta med ett problem när slingan löper. Om du inte initierade jag någon annanstans vet du inte vad dess värde kommer att vara när do del körningar - och det kommer att springa minst en gång. Om jag var 500 när den här slingan sprang, skulle utsignalen här vara felaktig.
Sammanfattningsvis:
- en do-while loop är användbart när du vill utföra ett kommando minst en gång och kontinuerligt tills ett villkor är felaktigt.
- en medan slingan låter dig upprepa ett block av kod så länge som ett villkor är sant och sluta så snart villkoret inte längre är sant.
- en för loop kan du ange exakt hur många gånger slingan ska köras genom att ställa in egna parametrar.
Lämna en Do-While Loop
Självklart måste du ha ett utgångsläge för gör-medan loopar precis som alla andra. Om inte, kan du hamna i en oändlig slinga. Tänk på följande kod:
x = 5; gör output "Detta slutar aldrig!"; medan (x < 10);
Om du inte ökar x någon annanstans i koden, då kommer denna loop att gå för alltid. Nu är ibland oändliga loopar användbara eftersom programmeraren sätter upp kod för att bryta ut ur slingan någon annanstans. Men oftare än inte, börjar nybörjare coders oändliga loopar av misstag De 10 sämsta Programmeringsfel i Historien De 10 Sämsta Programmeringsfel i Historia I sitt förflutna förflutna, kodande smidda förstörelse också. Inställningar av lite dålig kod orsakade katastrof på en stor nivå. Följande är 10 av de värsta programmeringsfel i historien. Läs mer .
Här är ett exempel på en lämplig oändlig slinga. Låt oss säga att du designar ett spel 5 Gratis spelutvecklingsprogramverktyg för att skapa dina egna spel 5 Gratis spelutvecklingsprogramverktyg för att göra dina egna spel Här är den bästa gratis spelutvecklingsprogramvaran och verktyg du kan använda för att börja göra ditt drömspel idag . Läs mer där användaren rullar en dö och måste få en 6 för att lämna hemmabasen. Du vill fortsätta rulla dynan tills den landar på 6, och du måste självklart rulla minst en gång. Således kan du använda den här koden:
gör int roll = slumpmässig (1, 2, 3, 4, 5, 6); om (rulla == 6) bryta medan (sant);
De medan (sant) villkor betyder att denna slinga kommer att springa för alltid, vilket vi vill ha eftersom användaren måste rulla tills han får en 6. Utan ha sönder uttalande, det skulle fastna. Men när användaren rullar en 6, om uttalandet blir sant, och sekvensen bryter ut ur slingan och rör sig på vad som är efter.
Du behöver inte använda ett pausmeddelande om du inte vill. I själva verket är det nog bättre att undvika break statements om du kan. De gör din kod svårare att behålla, och slutar på ett villkor är lättare att hålla reda på. Således uppnår den modifierade koden samma syfte:
gör int roll = slumpmässig (1, 2, 3, 4, 5, 6); medan (roll! = 6);
En dålig oändlig loop
En oändlig loop som du har en plan för att exitera är bra. Men ibland kommer du av misstag att skapa en oändlig slinga, som i exemplet nedan:
int x = 7; gör x = 1; x = x + 2; utgången "x är lika med" + x; medan (x < 10);
Det kan se ut som inkrementer x med 2 varje slinga och upprepas tills x är inte mindre än 10, men titta närmare. Eftersom slingan sätter x lika med 1 varje gång det går, är det en oändlig loop. Lägg märke till att x = 1 och x = x + 2 betyder att x är alltid 3 i slutet av blocket oavsett hur många gånger det här körs, vilket betyder x är aldrig mindre än 10.
Titta på uttalanden i din loop som oavsiktligt byter en variabel varje gång det går för att undvika situationer som detta.
Real-World Exempel
Vi har diskuterat några hypotetiska exempel ovan, men låt oss ta en snabb titt på några praktiska verkliga exempel på do-while-loopar.
Om du skapade en slinga för att läsa data från en fil tills den hamnar i slutet, skulle du använda en gör-while-slinga. Självklart måste du ta åtminstone ett tecken om du planerar att läsa från en fil, så att du kan använda en gör-loop så här (tack vare Stack Exchange-användaren Steven Burnap för detta exempel):
gör result = readData (buffert); medan (resultat! = EOF);
Utan en stund måste du använda en lite fulare lösning:
medan (sant) resultat = readData (buffert); om (resultat == EOF) brytning
Ett annat exempel handlar om att fånga ingång från en användare. Låt oss säga att du skriver ett program som ber användaren att ange ett positivt nummer. Med hjälp av en stund kan du se till att deras inmatning är lämplig:
gör output "Vänligen ange ett positivt tal:"; int input = getInput (); medan (inmatning < 0);
Med denna slinga ser användaren prompten att ange ett tal och anger ett värde en gång. Om de matar in ett negativt tal körs slingan igen och de uppmanas att ange ett positivt tal tills de uppfyller. Andra slingor gör helt enkelt ingen mening för den här typen av åtgärder.
Klar att använda gör-medan slingor?
Vi har tagit en undersökning av gör-medan loopar, inklusive deras grundläggande principer, hur man bäst använder dem och hur de jämför med andra loopar. Om du inte kommer ihåg något annat från den här artikeln, vet du att det gör-medan slingor är för när du behöver köra något minst en gång, men vet inte hur många gånger du behöver det innan du initierar slingan.
Tänk på situationer som detta i dina program, och du hittar lätt platser där-medan loopar passar. Nästan alla de bästa nybörjarnas språk 6 Lättaste programmeringsspråk att lära sig för nybörjare 6 Lättaste programmeringsspråk för att lära sig för nybörjare Lär dig att programmera handlar om att hitta rätt språk lika mycket som det handlar om uppbyggnadsprocessen. Här är de sex bästa enklaste programmeringsspråk för nybörjare. Läs mer stöd för att göra-medan slingor, så du borde inte ha några problem med att implementera dem.
Om du läser grunderna, se till att du granskar våra bästa tricks för att behärska ett nytt programmeringsspråk. 7 Användbara tricks för att behärska ett nytt programmeringsspråk. 7 Användbara tricks för att behärska ett nytt programmeringsspråk Det är okej att vara överväldigad när du lär dig att koda . Du kommer noga att glömma saker så fort du lär dig dem. Dessa tips kan hjälpa dig att bättre behålla all den nya informationen. Läs mer .
Vilka andra situationer kan du tänka på var en stund är meningsfull? Diskutera och meddela om du använder gör-medan loopar i dina program i kommentarsektionen!
Bildkrediter: Aaban via Shutterstock.com
Utforska mer om: Programmering.