Tutorial 1_7

Fallunterscheidung mit if

______________________________________________________________________
//1_7 Fallunterscheidung mit if
#include <stdio.h>
int a, b, c;

void main(void)
{
    printf("Geben sie durch ein Komma getrennt 2 Ganzzahlen ein\n");
    scanf("%d, %d", &a, &b);
    if(a == b)
        printf("a ist genauso gross wie b\n");

    printf("Geben sie durch ein Komma getrennt 2 Ganzzahlen ein\n");
    scanf("%d, %d", &a, &b);
    if(a == b)
        printf("a ist genauso gross wie b\n");
    else if(a > b)
        printf("a ist groesser als b\n");
    else
        printf("a ist kleiner als b\n");

    printf("Geben sie durch Kommas getrennt 3 Ganzzahlen ein\n");
    scanf("%d, %d, %d", &a, &b, &c);
    if(a > b && a > c)
        printf("a ist der groeste Wert\n");
    if((a < b && a < c) || a < -50000)
        printf("a ist sehr klein\n");

    printf("Geben sie durch Kommas getrennt 3 Ganzzahlen ein\n");
    scanf("%d, %d, %d", &a, &b, &c);
    if(a > b)
    {
        printf("a ist groesser als b\n");
        if(a > c)
        {
            printf("und auch groesser als c\n");
            if(a > 50000)
                printf("a ist besonders gross");
        }
        if(a < c)
            printf("aber kleiner als c\n");
        if(a == c)
            printf("und genauso gross wie c\n");
    }
    else if(a < b)
    {
        printf("a ist kleiner als b\n");
        if(a > c)
            printf("aber groesser als c\n");
        else if(a < c)
        {
            printf("und auch kleiner als c\n");
            if(a < -50000)
                printf("a ist besonders klein");
        }
        else
            printf("und genauso gross wie c\n");
    }
    else
    {
        printf("a ist genauso gross wie b\n");
        if(a > c)
            printf("aber groesser als c\n");
        if(a < c)
            printf("aber kleiner als c\n");
        if(a == c)
            printf("und genauso gross wie c\n");
    }
}
______________________________________________________________________
Vor der main()-Funktion passiert mal wieder nichts wirklich wichtiges(nur das Einbinden von stdio.h und die Deklaration von 3 globalen Variablen). Kommen wir also zur main()-Funktion: Zuerst wird der Benutzer des Programmes aufgefordert, 2 Ganzzahlen einzugeben, welche auf den globalen Variablen a und b gespeichert werden. Das if (a == b) prüft, ob die erste Zahl genau so groß ist, wie die zweite. Für den Vergleich müssen unbedingt 2 Gleichzeichen gesetzt werden, da ein einzelnes = ja schon für den Zuweisungsoperator benutzt wird. a würde also einfach den Wert von b bekommen und die Bedingung wäre immer wahr. Weil wir aber 2 = gesetz haben, ist die Bedingung tatsächlich nur wahr, wenn a wirklich so groß wie b ist. Wenn die Bedingung wahr ist, wird die darauffolgende Zeile ausgeführt, ansonsten wird sie übersprungen. Der Übersicht halber sollte man die Zeile nach dem if()-Befehl deshalb immer einrücken. Nach der eingerückten Zeile werden zwei neue Ganzzahlen vom Benutzer eingefordert. Anschliessend folgt eine neue if()-Abfrage. Diesmal ist sie als eine etwas komplexere if-else-Konstruktion aufgebaut. Wird die Bedingung in den Klammern von if() erfüllt, so wird der Inhalt der nächsten Zeile ausgefüllt und der Rest der Konstruktion übersprungen. Ist die Bedingung nicht wahr, so wird die nächste Zeile übersprungen und der else-Befehl kommt zum Einsatz. Folgt ihm, wie dem ersten else in diesem Programm, ein weiterse if, so wird dessen Bedingung überprüft. Wird sie erfüllt, so wird die darauffolgende Zeile ausgeführt und der Rest der Konstruktion überspringen. Ist die Bedingung hingegen nicht wahr, so springt das Programm zum nächsten else. Sobald ein else kommt, welchem kein if mehr folgt, so wird die darauf folgende Zeile auf jeden Fall ausgeführt, sofern vorher noch keine Bedingung dieser Konstruktion wahr war. Der ersten Bedingung einer solchen Konstruktion darf kein else voranstehen, jeder weiteren muss eines voranstehen. Dem letzten else darf kein if mehr folgen.
Zurück