C++ do...while loop med eksempler
Hvad er do-while loop?
Do-while-lรธkken gentager en sektion af C++ program flere gange. I do-while-lรธkken tilfรธjes testudtryk i bunden af โโlรธkken. Lรธkkelegemet kommer fรธr testudtrykket. Det er derfor, at loop-kroppen skal udfรธres for en gangs skyld, selv nรฅr testudtrykket evalueres til falsk i den fรธrste test.
Hvornรฅr skal man bruge en do-while loop?
Do-while-lรธkken skal bruges, nรฅr antallet af iterationer ikke er fast, og lรธkken skal kรธre mindst รฉn gang. Det C++ compiler udfรธrer lรธkketeksten fรธrst, fรธr betingelsen evalueres. Det betyder, at lรธkken skal returnere et resultat. Dette er tilfรฆldet, selv nรฅr testbetingelsen evalueres til en falsk ved den fรธrste evaluering. Da loop-legemet allerede er udfรธrt, skal det returnere resultatet.
Syntaks
Den grundlรฆggende syntaks af C++ gรธr mens loop er som fรธlger:
do{
//code
}while(condition);
Betingelsen er testekspression. Det skal vรฆre sandt for at lรธkken kan udfรธres. { og } markerer brรธdteksten i do while-lรธkken. Det kommer fรธr tilstanden. Derfor udfรธres det fรธr betingelsen.
Hvordan fungerer do-while loop?

Forklaring af rutediagram:
- Start af do while loop.
- Kroppen af โโdo while loop.
- Testudtrykket eller betingelsen, der skal evalueres.
- Hvis testudtrykket er sandt, vil C++ compiler udfรธrte brรธdteksten af โโdo while-lรธkken.
- Hvis testudtrykket er falsk, vil C++ compiler udfรธrer sรฆtningerne efter loop body.
- Udsagn, der kommer efter loop body.
Eksempel 1
#include <iostream>
using namespace std;
int main() {
// Local variable
int x = 1;
do {
cout << "X is: " << x << endl;
x = x + 1;
} while (x < 5);
return 0;
}
Output:
Her er et skรฆrmbillede af koden:
Code Forklaring:
- Inklusive iostream header-filen i vores kode. Det giver os mulighed for at lรฆse fra og skrive til konsollen.
- Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
- Kalder main()-funktionen, hvori programmets logik skal tilfรธjes. { markerer starten af โโbrรธdteksten af โโmain()-funktionen.
- En kommentar. De C++ compiler vil springe dette over.
- Erklรฆre en heltalsvariabel x og tildele den en vรฆrdi pรฅ 1.
- Oprettelse af en do-while loop. { markerer starten af โโlรธkketeksten.
- For at udskrive vรฆrdien af โโvariabel x sammen med anden tekst pรฅ konsollen. Endl er en C++ sรธgeord betyder slutlinje.
- Forรธgelse af vรฆrdien af โโx med 1 efter hver iteration.
- Enden af โโlรธkkens krop. Testudtryk er blevet tilfรธjet til slutningen af โโlรธkkelegemet. Den tester, om vรฆrdien af โโx er mindre end 5.
- Main()-funktionen skal returnere en vรฆrdi, hvis programmet kรธrer fint.
- Slutningen af โโhoveddelen af โโfunktionen main().
Eksempel 2
#include <iostream>
using namespace std;
int main()
{
int num, sum = 0;
do {
cout << "Enter a number: ";
cin >> num;
sum += num;
} while (num != 0);
cout << "Sum is " << sum;
return 0;
}
Output:
Her er et skรฆrmbillede af koden:
Code Forklaring:
- Inklusive iostream header-filen i vores kode. Det giver os mulighed for at lรฆse fra og skrive til konsollen.
- Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
- Kalder main()-funktionen, hvori programmets logik skal tilfรธjes.
- { markerer starten af โโbrรธdteksten af โโfunktionen main().
- Erklรฆrer to heltalsvariable, num og sum. Den variable sum er blevet initialiseret til 0.
- Oprettelse af en do-while loop. { markerer starten af โโlรธkketeksten.
- Udskrivning af teksten "Indtast et nummer:" pรฅ konsollen.
- Lรฆser brugerinput fra konsollen og gemmer vรฆrdien i variabelt antal. cin (konsolindgang) er en funktion, der lรฆser brugerinput.
- Tilfรธjelse af vรฆrdien af โโnum til vรฆrdien af โโsum og lagring resulterer i variabel sum.
- } markerer slutningen af โโlรธkkens krop. Testudtrykket er blevet tilfรธjet til slutningen af โโlรธkkelegemet. Den tester, om vรฆrdien indtastet af brugeren for at sikre, at den ikke er 0. != er ikke lig med operatoren. Hvis brugeren indtaster et 0, bรธr lรธkken afsluttes.
- Udskrivningsvรฆrdi af variabel sum pรฅ konsollen sammen med anden tekst.
- Main()-funktionen skal returnere en vรฆrdi, hvis programmet kรธrer fint.
- Slutningen af โโhoveddelen af โโfunktionen main().
Nested Do While Loop
In C++, er det muligt for os at oprette en gรธr-mens-lรธkke inde i en anden gรธr-hel-lรธkke. Dette resulterer i en indlejret do-while-lรธkke.
Syntaks
do{
statement(s)
do{
statement(s)
}while(condition);
statement(s)
}while(condition);
Den fรธrste do-sรฆtning angiver do-delen af โโden ydre do-while-lรธkke.
Den anden do-sรฆtning angiver do-delen af โโden indre do-while-lรธkke.
Den fรธrste while-sรฆtning angiver testbetingelsen for den indre slรธjfe.
Den anden while-sรฆtning angiver testbetingelsen for den ydre slรธjfe.
Hvordan indlejret gรธr, mens lรธkken fungerer
Nested do while loop fungerer som fรธlger:
Trin 1: Initialiseringen udfรธres fรธrst og รฉn gang.
Trin 2: Udsagn (the do) udfรธres รฉn gang.
Trin 3: Testudtryk er evaluering ved flowkontrol.
Trin 4: Hvis det er sandt, udfรธres den indre lรธkke.
Trin 5: Opdatering(er) er opdateret.
Trin 6: Processen kรธrer gentagne gange, indtil testudtrykket bliver falsk.
Trin 7: Nรฅr testudtrykket bliver falsk, forlades den indre slรธjfe, og kontrollen hopper til den ydre slรธjfe.
Trin 8: Testtilstanden evalueres igen.
Trin 9: Hvis det er sandt, udfรธres sรฆtning(er) for at returnere falsk.
Trin 10: Udfรธrelse af lรธkkestop og kontrolspring til sรฆtninger efter lรธkke.
Eksempel
#include <iostream>
using namespace std;
int main() {
int a = 1;
do {
int b = 1;
do {
cout << a << "\n";
b++;
} while (b <= 3);
a++;
} while (a <= 3);
}
Output:
Her er et skรฆrmbillede af koden:
Code Forklaring:
- Inklusive iostream header-filen i vores kode. Det giver os mulighed for at lรฆse fra og skrive til konsollen.
- Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
- Kalder main()-funktionen, hvori programmets logik skal tilfรธjes. { markerer starten af โโbrรธdteksten af โโmain()-funktionen.
- Erklรฆre en heltalsvariabel a og tildele den en vรฆrdi pรฅ 1.
- Oprettelse af den ydre gรธr-mens-lรธkke. { markerer starten af โโden ydre lรธkkes krop.
- Erklรฆrer en heltalsvariabel b og tildeler den vรฆrdien 1.
- Oprettelse af den indre gรธr-mens-lรธkke. { markerer starten af โโindre lรธkkelegeme.
- For at udskrive vรฆrdien af โโvariabel a pรฅ konsollen. "\n" er et nyt linjetegn, der flytter musemarkรธren til nรฆste linje.
- รger vรฆrdien af โโb med 1 efter hver iteration.
- Enden af โโden indre lรธkkelegeme. Testudtryk er blevet tilfรธjet til slutningen af โโlรธkkelegemet. Den tester, om vรฆrdien af โโb er mindre end eller lig med 5.
- Stigende vรฆrdi af a med 1 efter hver iteration.
- Enden af โโden ydre lรธkkelegeme. Testudtryk er blevet tilfรธjet til slutningen af โโlรธkkelegemet. Den tester, om vรฆrdien af โโa er mindre end eller lig med 3.
- Slutningen af โโhoveddelen af โโfunktionen main().
Resumรฉ
- Do-while-lรธkken kรธrer en sektion af kode flere gange.
- Den skal bruges, nรฅr antallet af iterationer ikke er fast.
- I do-while-lรธkken kommer loop-kroppen fรธr testudtryk.
- Lรธkketeksten udfรธres mindst รฉn gang, selvom testudtrykket bliver falsk.
- Denne lรธkke skal bruges, nรฅr antallet af iterationer ikke er fast.
- Do while loop kan kรธre et vilkรฅrligt antal gange, forudsat at betingelsen er sand.
- Tilstanden evalueres รฉn gang efter hver iteration.
- Resultatet af evalueringen af โโtilstanden bestemmer, hvilken handling der skal tages.
- Hvis betingelsen er sand, udfรธrte lรธkken kroppen.
- Udfรธrelse af slรธjfe stopper รธjeblikkeligt, tilstanden evalueres til en falsk.
- Da do while-lรธkketeksten allerede er blevet udfรธrt, skal den returnere resultatet.





