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?

Do-While Loop
C++ Gรธr mens Flowdiagram

Forklaring af rutediagram:

  1. Start af do while loop.
  2. Kroppen af โ€‹โ€‹do while loop.
  3. Testudtrykket eller betingelsen, der skal evalueres.
  4. Hvis testudtrykket er sandt, vil C++ compiler udfรธrte brรธdteksten af โ€‹โ€‹do while-lรธkken.
  5. Hvis testudtrykket er falsk, vil C++ compiler udfรธrer sรฆtningerne efter loop body.
  6. 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:

Do-While Loop

Her er et skรฆrmbillede af koden:

Do-While Loop

Code Forklaring:

  1. Inklusive iostream header-filen i vores kode. Det giver os mulighed for at lรฆse fra og skrive til konsollen.
  2. Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
  3. Kalder main()-funktionen, hvori programmets logik skal tilfรธjes. { markerer starten af โ€‹โ€‹brรธdteksten af โ€‹โ€‹main()-funktionen.
  4. En kommentar. De C++ compiler vil springe dette over.
  5. Erklรฆre en heltalsvariabel x og tildele den en vรฆrdi pรฅ 1.
  6. Oprettelse af en do-while loop. { markerer starten af โ€‹โ€‹lรธkketeksten.
  7. For at udskrive vรฆrdien af โ€‹โ€‹variabel x sammen med anden tekst pรฅ konsollen. Endl er en C++ sรธgeord betyder slutlinje.
  8. Forรธgelse af vรฆrdien af โ€‹โ€‹x med 1 efter hver iteration.
  9. 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.
  10. Main()-funktionen skal returnere en vรฆrdi, hvis programmet kรธrer fint.
  11. 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:

Do-While Loop

Her er et skรฆrmbillede af koden:

Do-While Loop

Code Forklaring:

  1. Inklusive iostream header-filen i vores kode. Det giver os mulighed for at lรฆse fra og skrive til konsollen.
  2. Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
  3. Kalder main()-funktionen, hvori programmets logik skal tilfรธjes.
  4. { markerer starten af โ€‹โ€‹brรธdteksten af โ€‹โ€‹funktionen main().
  5. Erklรฆrer to heltalsvariable, num og sum. Den variable sum er blevet initialiseret til 0.
  6. Oprettelse af en do-while loop. { markerer starten af โ€‹โ€‹lรธkketeksten.
  7. Udskrivning af teksten "Indtast et nummer:" pรฅ konsollen.
  8. Lรฆser brugerinput fra konsollen og gemmer vรฆrdien i variabelt antal. cin (konsolindgang) er en funktion, der lรฆser brugerinput.
  9. Tilfรธjelse af vรฆrdien af โ€‹โ€‹num til vรฆrdien af โ€‹โ€‹sum og lagring resulterer i variabel sum.
  10. } 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.
  11. Udskrivningsvรฆrdi af variabel sum pรฅ konsollen sammen med anden tekst.
  12. Main()-funktionen skal returnere en vรฆrdi, hvis programmet kรธrer fint.
  13. 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:

Nested Do While Loop

Her er et skรฆrmbillede af koden:

Nested Do While Loop

Code Forklaring:

  1. Inklusive iostream header-filen i vores kode. Det giver os mulighed for at lรฆse fra og skrive til konsollen.
  2. Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
  3. Kalder main()-funktionen, hvori programmets logik skal tilfรธjes. { markerer starten af โ€‹โ€‹brรธdteksten af โ€‹โ€‹main()-funktionen.
  4. Erklรฆre en heltalsvariabel a og tildele den en vรฆrdi pรฅ 1.
  5. Oprettelse af den ydre gรธr-mens-lรธkke. { markerer starten af โ€‹โ€‹den ydre lรธkkes krop.
  6. Erklรฆrer en heltalsvariabel b og tildeler den vรฆrdien 1.
  7. Oprettelse af den indre gรธr-mens-lรธkke. { markerer starten af โ€‹โ€‹indre lรธkkelegeme.
  8. For at udskrive vรฆrdien af โ€‹โ€‹variabel a pรฅ konsollen. "\n" er et nyt linjetegn, der flytter musemarkรธren til nรฆste linje.
  9. ร˜ger vรฆrdien af โ€‹โ€‹b med 1 efter hver iteration.
  10. 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.
  11. Stigende vรฆrdi af a med 1 efter hver iteration.
  12. 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.
  13. 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.

Opsummer dette indlรฆg med: