====== while-Schleife ======
Die meisten Algorithmen erfordern, dass gewisse Berechnungen wiederholt ausgeführt werden, bis eine bestimmte Bedingung eintritt. Man unterscheidet drei Arten von Schleifen. Die erste Art, die while-Schleife, wird in diesem Abschnitt behandelt.
==== Beispiel ====
Der Rechner soll von 10 rückwärts bis 0 zählen und dabei jedes Mal das Zeichen ''*'' ausgeben.
Die Variablennamen ''i, j, k'' werden gerne für Zähler eingesetzt.
{{:informatik:allgemeine_grundlagen_zur_programmierung:while_1.png?200}}
int main()
{
int i=10;
while(i>0){
i=i-1;
cout <<"*";
}
cout<<"\n Fertig";
getch();
return 0;
}
In der ''while-Schleife'' bestimmt die **Laufbedingung** - das ist der Ausdruck in der Klammer nach ''while'' - wielange die folgende Anweisung wiederholt wird. Der Wert des Ausdrucks wird vor der Abarbeitung der Anweisung überprüft. Daher kann es auch vorkommen, dass eine Schleife überhaupt nicht durchlaufen wird.
===== Syntax der while-Schleife =====
while(Ausdruck) //Schleifeneintrittsbedingung
Anweisung;
while(Ausdruck){ //Schleifeneintrittsbedingung
Anweisung1;
Anweisung2;
...;
}
* Das Schlüsselwort ''while'' leitet die ''while''-Anweisung ein. Es folt in Klammern ''('' '')'' ein Ausdurck, welcher einen Wert ''true'' oder ''false'' liefert. Ist der Wert ''true'', werden die Anweisungen im Schleifenkörper ausgeführt.
* Nach dem Ausdruck folgt die Anweisung oder der Anweisungsblock.
* Nachdem das Programm die Anweisungen im Schleifenkörper ausgeführt hat, wird der Ausdruck am Anfang der Schleife erneut geprüft. Fall dieser den Wert ''false'' zurückliefert, wird der Schleifenkörper übergangen und die erste Anweisung nach der Schleife durchgeführt. Bei Rückgabe von ''true'' wird der Schleifenkörper erneut ausgeführt.
==== Beispiel 1====
a) Schreibe ein Programm, welches die Zahlen von 1 bis zu einer Obergrenze n=30 aufsummiert, also die Summe sum = 1+2+3+4+...+30 berechnet.
b) Erweitere dein Programm so, dass der Benutzer selbst die Obergrenze n bestimmt.
**Lösung:**
int main()
{
int n;
int sum=0;
cout<< "Das folgende Programm summiert die Zahlen 1 - n auf. \n";
cout<<"Geben Sie eine Obergrenze ein: ";
cin>>n;
for (int i=1;i<=n ;i++) {
sum=sum+i;
}
cout<<"Ergebnis: " << sum;
getch();
return 0;
}
==== Beispiel 2====
Erweitere das anfangs geschriebene Programm "Noten" (Kap. ''Wiederholung schleifen''): Der Benutzer des Programms möchte nicht für jeden Schüler das Programm neu starten müssen. Überlege dir, wie du die Benutzerfreundlichkeit des Programms mit Hilfe von Schleifen erleichtern könntest.
=== Lösung ===
int main()
{
int eingabe;
int anzahl; //Höchstgrenze
int i=1; //Zähler
cout<<"Anzahl der Schularbeiten: ";
cin>>anzahl;
while(i<=anzahl)
{
cout << "Wie viele Punkte hast du erreicht? ";
cin >> eingabe;
if (eingabe > 48 || eingabe < 0) {
cout << "Falsche Eingabe!";
} else {
if (eingabe < 24) {
cout << "Schleeeeecht!\nHost an Fleck\nNicht Genuegend";
} else if (eingabe >= 24 && eingabe <= 29) {
cout << "Genuegend";
} else if (eingabe >= 30 && eingabe <= 38) {
cout << "Befriedigend!\nDu befriedigst den Leherer o_O";
} else if (eingabe >= 39 && eingabe <= 44) {
cout << "Gut!\nMach weiter so!";
} else if (eingabe >= 45 && eingabe <= 48) {
cout << "Hast du toll gemacht!";
}
}
i++;
}
cout << "\n\n\n\n(c) Sebastian Wagner\n\nDrueke eine Taste um das Proggi zu beenden";
getch();
return 0;
}