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.
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.
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.
while(Ausdruck) //Schleifeneintrittsbedingung Anweisung; while(Ausdruck){ //Schleifeneintrittsbedingung Anweisung1; Anweisung2; ...; }
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. 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.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; }
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.
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; }