Iteration in C++
Syntax der while-Schleife
.-----. .--. .----------. .--. .-----------.
--->( while )--->( ( )--->| Ausdruck |--->( ) )--->| Anweisung |--->
'-----' '--' '----------' '--' '-----------'
Nach ihrem einleitenden Schlüsselwort while wird die Anweisung zur bedingten Ausführung mit Wiederholung auch while-Anweisung genannt.
Die Anweisung hinter der runden Klammer zu »)« nennen wir auch die innere Anweisung der while-Anweisung.
Bedeutung
Wenn die 〈condition 〉 den Wert bool "true" ergibt, dann wird die Anweisung 〈statement 〉 ausgeführt und die Bedingung wird erneut geprüft und so weiter. Wenn die Bedingung einmal den Wert bool "false" ergibt wird nichts weiter gemacht. Abgesehen von der automatischen Wiederholung gleicht die Anweisung "while" also der Anweisung "if".
Zählschleife
Die C++-Anweisung "while" wird in folgendem Programmbeispiel verwendet.
zaehlschleife.cpp
#include <iostream>
#include <ostream>
#include <string>using namespace ::std::literals;
int main()
{ auto i { 10 }; /* C++ 17 */ /* Schleifenvorbereitung */while( /* Schleifenkopf */
i - 22 /* Schleifenpruefung */ /* Schleifenkopf */
) /* Schleifenkopf */{ ::std::cout << i << "\n"s; /* Schleifeninhalt/Schleifenrumpf */
i = i + 2; /* Schleifenschritt */ /* Schleifeninhalt/Schleifenrumpf */
} /* Schleifeninhalt/Schleifenrumpf */}
Übungsfrage Was gibt dieses Programm aus?
»i« „Schleifenvariable“, „kritische Variable“
Übungsaufgaben
Wiederholte Ausgabe eines Textes
Schreiben Sie ein Programm, in dem die Anweisung »::std::cout << "Dieses ist ein langer Satz.\n"s;« nur einmal vorkommt, und zwar in einer Schleife, von der sie insgesamt sieben Mal wiederholt wird. Das Programm soll auf diese Weise die Zeile »Dieses ist ein langer Satz.« sieben Mal hintereinander ausgeben.
Schleife
Schreiben Sie ein Programm, das mit Hilfe einer Schleife die Zahlen von 0 (einschließlich) bis 15 (ausschließlich) ausgibt.
Schleife
Schreiben Sie ein Programm, das mit Hilfe einer Schleife die Zahlen von 2 (einschließlich) bis 20 (einschließlich) ausgibt.
Schleife
Schreiben Sie ein Programm, das mit Hilfe einer Schleife die Zahlen von 0 (einschließlich) bis 20 (ausschließlich) ausgibt. Neben jeder Zahl soll die Zahl »1000« stehen.
Schleife
Schreiben Sie ein Programm, das mit Hilfe einer Schleife die Zahlen von 0 (einschließlich) bis 20 (ausschließlich) ausgibt. Neben jeder Zahl soll ihr Quadrat stehen.
Schleife
Schreiben Sie ein Programm, das mit Hilfe einer Schleife die Zahlen von 0 (einschließlich) bis 20 (ausschließlich) ausgibt. Neben jeder Zahl soll die Summe aller bisher am Zeilenanfang ausgegebenen Zahlen stehen.
Endlosschleifen *
Das folgende Beispiel zeigt eine Endlosschleife.
standardschleife.cpp
#include <iostream>
#include <ostream>
#include <string>
using namespace ::std::literals;
int main()
{ auto zahl { 0 }; /* C++17 */
while( zahl - 10 )
::std::cout << zahl << "\n"s;
zahl = zahl + 1; }
Übungsaufgabe Verändern Sie das Programm möglichst geringfügig so, daß es die Zahlen von 0 bis 9 ausgibt!
- Mehrfachwürfe
- Schreiben Sie eine Funktion "wuerfel", deren erster Parameter wie zuvor ist und deren zweiter Parameter angibt, wieviele Würfel gleichzeitig geworfen werden soll. Das Ergebnis dieser Funktion soll dann die Summe aller Würfe sein. So soll der Wert von "wuerfel( 6, 2 )" beispielsweise eine Zahl zwischen 2 (zweimal Wurf "1") und 12 (zweimal Wurf "6") sein.
Computergraphik *
main.cpp
#include <cmath>
#include <initializer_list>
#include <iostream>
#include <ostream>
#include <string>using namespace ::std::literals;
int main()
{ ::std::cout << "+"s;
auto zeile { 1 }; /* < C++ 17 */ while( zeile - 30 )
{ auto spalte { zeile - 1 ? 0 : 1 }; /* < C++ 17 */ while( spalte - 60 )
{ ::std::cout <<
( 60 - 2 * zeile - spalte ?
::std::floor( 14 / ::std::hypot( zeile - 15, spalte/2 - 15 )) ? "*"s : " "s :
"#"s );
spalte = spalte + 1; }
::std::cout <<( zeile - 29 ? " " : "+"s ) << "\n"s;
zeile = zeile + 1; }}transcript
+ ** #
********************** #
****************************** #
********************************** #
**************************************#
**************************************#***
**************************************#*******
**************************************#***********
************************************#*************
************************************#*****************
**********************************#*******************
********************************#*********************
******************************#***********************
****************************#*************************
****************************#*****************************
************************#*****************************
**********************#*******************************
********************#*********************************
******************#***********************************
****************#*************************************
************#*************************************
**********#***************************************
******#***************************************
**#***************************************
# **************************************
# **********************************
# ******************************
# **********************
# ** +
Bedeutung ⃗
Man kann die Bedeutung der Anweisung "while" auch folgendermaßen definieren.
while( 〈condition 〉 )〈statement 〉 =
if( 〈condition 〉 )
{ 〈statement 〉
if( 〈condition 〉 )
{ 〈statement 〉
if( 〈condition 〉 )
{ 〈statement 〉 … }}}