====== 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.
{{:inf:allgemeine_grundlagen_zur_programmierung:while-schleife.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 folgt 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 i=0,n,sum=0;
cout<< "Das folgende Programm summiert die Zahlen 1 - n auf. \n";
cout<<"Geben Sie eine Obergrenze ein: ";
cin>>n;
while (i
++++
==== Beispiel 2====
Schreibe ein Programm mit dem Namen „Noten“, das die erreichte Punkteanzahl bei der Mathematikschularbeit in eine Note umwandelt:
* 45 - 48 Punkte: Sehr gut
* 39 - 44 Punkte: Gut
* 30 - 38 Punkte: Befriedigend
* 24 - 29 Punkte: Genügend
* < 24 Punkte: Nicht genügend
Gibt der Benutzer eine falsche Punkteanzahl an (> 48) soll er auf seine Falscheingabe hingewiesen werden. \\
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 << "Nicht Genuegend";
} else if (eingabe >= 24 && eingabe <= 29) {
cout << "Genuegend";
} else if (eingabe >= 30 && eingabe <= 38) {
cout << "Befriedigend";
} else if (eingabe >= 39 && eingabe <= 44) {
cout << "Gut";
} else if (eingabe >= 45 && eingabe <= 48) {
cout << "Seht gut. Hast du toll gemacht!";
}
}
i++;
}
cout << "\n\n\n\n Druecke eine Taste um das Programm zu beenden";
getch();
return 0;
}
++++
==== Aufgaben ====
=== Aufgabe 1 ===
Schreibe ein Programm, dass den Quotienten bei ganzzahliger Division einer Zahl z durch eine Zahl d ermittelt. Dabei soll ein einer Schleife mitgezählt werden, wie oft sich d von z subtrahieren lässt.