C++ do...while loop met voorbeelden

Wat is een do-while-lus?

De do-while-lus herhaalt een sectie van het C++-programma verschillende keren. In de do-while-lus wordt testexpressie onderaan de lus toegevoegd. De lusbody komt vóór de testexpressie. Daarom moet de lusbody een keer worden uitgevoerd, zelfs als de testexpressie bij de eerste test als false wordt geëvalueerd.

Wanneer gebruik je een do-while-lus?

De do-while-lus moet worden gebruikt als het aantal iteraties niet vastligt en de lus minstens één keer moet worden uitgevoerd. De C++-compiler voert eerst de lusbody uit voordat de voorwaarde wordt geëvalueerd. Dat betekent dat de lus een resultaat moet retourneren. Dit is zelfs het geval als de testvoorwaarde bij de eerste evaluatie onwaar wordt. Omdat de hoofdtekst van de lus al is uitgevoerd, moet deze het resultaat retourneren.

Syntaxis

De basissyntaxis van C++ do while-lus is als volgt:

do{    
//code 
}while(condition);  

De voorwaarde is testexpressie. Het moet waar zijn om de lus uit te voeren. De { en } markeren de hoofdtekst van de do while-lus. Het komt vóór de voorwaarde. Daarom wordt het vóór de voorwaarde uitgevoerd.

Hoe werkt de do-while-lus?

Doe-terwijl-lus
C++ Do while-stroomschema

Stroomdiagram Uitleg:

  1. Begin van de do while-lus.
  2. Het hoofdgedeelte van de do while-lus.
  3. De testexpressie of -voorwaarde die moet worden geëvalueerd.
  4. Als de testexpressie waar is, voert de C++-compiler de hoofdtekst van de do while-lus uit.
  5. Als de testexpressie onwaar is, voert de C++-compiler de instructies uit na de lusbody.
  6. Verklaringen die na de lusbody komen.

Voorbeeld 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:

Doe-terwijl-lus

Hier is een screenshot van de code:

Doe-terwijl-lus

Code Verklaring:

  1. Inclusief het iostream headerbestand in onze code. Hiermee kunnen we lezen van en schrijven naar de console.
  2. Inclusief de std-naamruimte om de klassen en functies ervan te gebruiken zonder deze aan te roepen.
  3. Het aanroepen van de functie main() waarbinnen de logica van het programma moet worden toegevoegd. De { markeert het begin van de hoofdtekst van de functie main().
  4. Een reactie. De C++-compiler slaat dit over.
  5. Een integer-variabele x declareren en hieraan de waarde 1 toekennen.
  6. Een do-while-lus creëren. De { markeert het begin van de lusbody.
  7. Om de waarde van variabele x af te drukken naast andere tekst op de console. De endl is een C++-sleutelwoord dat eindregel betekent.
  8. Waarde van x met 1 verhogen na elke iteratie.
  9. Einde van het luslichaam. Testexpressie is toegevoegd aan het einde van de lusbody. Er wordt getest of de waarde van x kleiner is dan 5.
  10. De functie main() zou een waarde moeten retourneren als het programma goed werkt.
  11. Einde van de hoofdtekst van de functie main().

Voorbeeld 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:

Doe-terwijl-lus

Hier is een screenshot van de code:

Doe-terwijl-lus

Code Verklaring:

  1. Inclusief het iostream headerbestand in onze code. Hiermee kunnen we lezen van en schrijven naar de console.
  2. Inclusief de std-naamruimte om de klassen en functies ervan te gebruiken zonder deze aan te roepen.
  3. Het aanroepen van de functie main() waarbinnen de logica van het programma moet worden toegevoegd.
  4. De { markeert het begin van de hoofdtekst van de functie main().
  5. Het declareren van twee gehele variabelen, num en sum. De variabele som is geïnitialiseerd op 0.
  6. Een do-while-lus creëren. De { markeert het begin van de lusbody.
  7. Afdrukken van de tekst “Voer een getal in:” op de console.
  8. Gebruikersinvoer van de console lezen en de waarde opslaan in variabele num. De cin (console-invoer) is een functie die gebruikersinvoer leest.
  9. Het optellen van de waarde van num bij de waarde van som en het opslaan resulteert in een variabele som.
  10. De } markeert het einde van de lusbody. De testexpressie is toegevoegd aan het einde van de lusbody. Er wordt getest of de door de gebruiker ingevoerde waarde niet 0 is. De != is niet gelijk aan de operator. Als de gebruiker een 0 invoert, moet de lus eindigen.
  11. Afdrukwaarde van variabel bedrag op de console naast andere tekst.
  12. De functie main() zou een waarde moeten retourneren als het programma goed werkt.
  13. Einde van de hoofdtekst van de functie main().

Geneste Do While-lus

In C++ is het voor ons mogelijk om één do-while-lus binnen een andere do-whole-lus te maken. Dit resulteert in een geneste do-while-lus.

Syntaxis

do{
statement(s)
do{
statement(s)
}while(condition);
statement(s)
}while(condition);

De eerste do-instructie geeft het do-gedeelte van de buitenste do-while-lus aan.

De tweede do-instructie geeft het do-gedeelte van de binnenste do-while-lus aan.

De eerste while-instructie geeft de testvoorwaarde voor de binnenste lus aan.

De tweede while-instructie geeft de testvoorwaarde voor de buitenste lus aan.

Hoe genest terwijl de lus werkt

Geneste do while-lus werkt als volgt:

Stap 1: De initialisatie wordt eerst en één keer uitgevoerd.

Stap 2: De instructies (de do) worden één keer uitgevoerd.

Stap 3: Testexpressie is evaluatie door stroomregeling.

Stap 4: Indien waar, wordt de binnenste lus uitgevoerd.

Stap 5: Updateverklaring(en) zijn bijgewerkt.

Stap 6: Het proces wordt herhaaldelijk uitgevoerd totdat de testexpressie onwaar wordt.

Stap 7: Wanneer de testexpressie onwaar wordt, wordt de binnenlus verlaten en springt de besturing naar de buitenlus.

Stap 8: De testconditie wordt opnieuw geëvalueerd.

Stap 9: Indien waar, worden verklaring(en) uitgevoerd om false terug te geven.

Stap 10: Uitvoering van lusstops en besturingssprongen naar instructies na lus.

Voorbeeld

#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:

Geneste Do While-lus

Hier is een screenshot van de code:

Geneste Do While-lus

Code Verklaring:

  1. Inclusief het iostream headerbestand in onze code. Hiermee kunnen we lezen van en schrijven naar de console.
  2. Inclusief de std-naamruimte om de klassen en functies ervan te gebruiken zonder deze aan te roepen.
  3. Het aanroepen van de functie main() waarbinnen de logica van het programma moet worden toegevoegd. De { markeert het begin van de hoofdtekst van de functie main().
  4. Een integer-variabele a declareren en hieraan de waarde 1 toekennen.
  5. Het creëren van de buitenste do-while-lus. De { markeert het begin van het buitenste luslichaam.
  6. Een integer-variabele b declareren en hieraan de waarde 1 toekennen.
  7. Het creëren van de binnenste do-while-lus. De { markeert het begin van het binnenste luslichaam.
  8. Om de waarde van variabele a op de console af te drukken. De “\n” is een nieuw regelteken dat de muiscursor naar de volgende regel verplaatst.
  9. Waarde van b met 1 verhogen na elke iteratie.
  10. Einde van het binnenste luslichaam. Testexpressie is toegevoegd aan het einde van de lusbody. Er wordt getest of de waarde van b kleiner dan of gelijk is aan 5.
  11. Toenemende waarde van a met 1 na elke iteratie.
  12. Einde van het buitenste luslichaam. Testexpressie is toegevoegd aan het einde van de lusbody. Het test of de waarde van a kleiner dan of gelijk is aan 3.
  13. Einde van de hoofdtekst van de functie main().

Samengevat

  • De do-while-lus voert een codegedeelte meerdere keren uit.
  • Het moet worden gebruikt als het aantal iteraties niet vastligt.
  • In de do-while-lus komt de lusbody vóór de testexpressie.
  • De lusbody wordt minstens één keer uitgevoerd, zelfs als de testexpressie onwaar wordt.
  • Deze lus moet worden gebruikt als het aantal iteraties niet vastligt.
  • De Do while-lus kan een willekeurig aantal keren worden uitgevoerd, op voorwaarde dat de voorwaarde waar is.
  • De voorwaarde wordt na elke iteratie één keer geëvalueerd.
  • De uitkomst van de evaluatie van de aandoening bepaalt welke actie moet worden ondernomen.
  • Als de voorwaarde waar is, voert de lus de body uit.
  • De uitvoering van de lus stopt onmiddellijk als de voorwaarde wordt geëvalueerd als onwaar.
  • Omdat de do while-lus al is uitgevoerd, moet deze het resultaat retourneren.