Tutorial 1_9

Die while-Schleife

______________________________________________________________________
//1_9 Die while-Schleife

/* Mit "// neu" gekennzeichnete Zeilen wurden in Bezug auf Programm 1_8
ergšnzt, mit "// gešndert" gekennzeichnete Zeilen wurden in Bezug auf Programm
1_8 gešndert.
*/

#include <stdio.h>
char optionsnummer;
float wert1, wert2;
int wert1a, wert2a;

void main(void)
{
    while(optionsnummer != 6) // neu
    { // neu
        printf("Welche Rechenart wollen sie anwenden?\n"
            "1 Addition\n"
            "2 Subtraktion\n"
            "3 Multiplikation\n"
            "4 genaue Division\n"
            "5 Division mit Rest\n"
            "6 PROGRAMM BEENDEN\n" // neu
            "Geben sie die entsprechende Nummer ein\n");
        scanf("%d", &optionsnummer);
        if(optionsnummer < 5) // gešndert
        {
            printf("Geben sie 2 Dezimalbrueche ein\n");
            scanf("%f %f", &wert1, &wert2);
        }
        if(optionsnummer == 5) // gešndert
        {
            printf("Geben sie 2 ganze Zahlen ein\n");
            scanf("%d %d", &wert1a, &wert2a);
        }
        switch(optionsnummer)
        {
        case 1:
            printf("Die Summe der beiden Werte %f und %f ist %f\n",
                wert1, wert2, wert1+wert2);
            break;
        case 2:
            printf("Die Differenz der beiden Werte %f und %f ist %f\n",
                wert1, wert2, wert1-wert2);
            break;
        case 3:
            printf("Das Produkt der beiden Werte %f und %f ist %f\n",
                wert1, wert2, wert1*wert2);
            break;
        case 4:
            printf("Der Quotient der beiden Werte %f und %f ist %f\n",
                wert1, wert2, wert1/wert2);
            break;
        case 5:
            printf("Der Quotient der beiden Werte %d und %d ist %d,\n"
                "der Rest betraegt %d\n",
                wert1a, wert2a, wert1a/wert2a, wert1a%wert2a);
            break;
        case 6: // neu
            printf("PROGRAMM WURDE BEENDET\n"); //neu
            break; // neu
        default:
            printf("Falsche Eingabe\n");
            break;
        }
        printf("\n\n\n\n\n"); // neu
    } // Ende der While-Schleife //neu
}
______________________________________________________________________
Der im letzten Beispiel entwickelte Taschenrechner hat bis jetzt noch einen schwer wiegenden Nachteil: Das Programm führt eine einzige Rechnung aus und wird dann beendet. Nun ist es aber sinnvoll, dass das Programm, wenn es die Rechnung ausgeführt hat, auf die Eingaben für die nächste Rechnung wartet und solange neue Rechnungen ausgeführt werden sollen, bis man das Programm beendet. Dies wird mit sogenannten Schleifen umgesetzt, die ein sehr wichtiges Element gerade auch bei der Spieleprogrammierung sind. Mit der while()-Schleife werden wir jetzt das Programm aus dem letzten Beispiel so erweitern, dass der Taschenrechner solange Aufgaben rechnet, bis er beendet wird. Die erste Änderung ist gleich in der ersten Zeile der main()-Funktion zu sehen: while(optionsnummer != 6) heißt auf deutsch solange optionsnummer nicht den Wert 6 hat. Solange diese Bedingung zutrifft, wird alles das ausgeführt, was in der sich direkt nach dem while()-Befehl öffnenden geschweiften Klammer steht, die in diesem Fall erst direkt vor der main()-Funktion geschlossen wird. Ist das Programm am Ende der while()-Schleife angekommen, so kehrt es wieder an den Anfang zurück und überprüft die Bedingung erneut. Dies wiederholt sich solange, bis die Bedingung nicht mehr zutrifft. Hierbei sollten sie also darauf achten, dass innerhalb der while()-Schleife irgendwo der in der Bedingung abgefragte Wert geändert wird und so die Bedingung irgendwann nicht mehr war ist z.B. wenn der Nutzer eingibt, dass er das Programm beenden will, da das Programm sonst endlos läuft. Wir geben dem Anwender also bei der Auswahl der Rechenarten nun auch die Möglichkeit BEENDEN, die wir natürlich in unserer if-Abfrage und unserer switch-Abfrage berücksichtigen müssen (bei Beenden sollte der Nutzer natürlich keine Werte mehr eingeben müssen, ausserdem ist ein Test "PROGRAMM WURDE BEENDET" mit Sicherheit auch nicht verkehrt. Am Ende jeder Rechnung schaffen wir mit ein paar Zeilenumbrüchen noch einen Absatz zur nächsten Rechnung. So das wars auch schon. Der Taschenrechner hat seine entscheidene Verbesserung intus!
Zurück