C Verzweigungen

if/else

Vergleichsoperatoren

für Vergleich zwischen zwei Werten

das Ergebnis ist entweder wahr (true, 1) oder falsch (false, 0)

jeder Wert ungleich 0 ist wahr

==  ist gleich  
!=  nicht gleich  
<   kleiner  
>   größer  
<=  kleiner gleich  
>=  größer gleich  
int x = 3;  
int y = 6;  

printf("x == y ist %d\n", (x == y) );  
printf("x != y ist %d\n", (x != y) );  
printf("x < y  ist %d\n", (x < y) );  
printf("x > y  ist %d\n", (x > y) );  
printf("x <= y ist %d\n", (x <= y) );  
printf("x >= y ist %d\n", (x >= y) );  

Logische Operatoren

für Kombination von zwei oder mehren Bedingungen oder Bedingung zu negieren

das Ergebnis ist entweder wahr (true, 1) oder falsch (false, 0)

!   Negation (Verneinung)  
&&  UND Verknüpfung  
||  ODER Verknüpfung  
int a = 3;  
int b = 5;  

if(a > 0 && b < 10) printf("%d>0 UND  %d<10 => wahr (beide muessen wahr sein)\n", a, b);  

if(a > 0 || b <  3) printf("%d>0 ODER %d< 3 => wahr (ein wahr reicht schon!)\n", a, b);  

if(!0) printf("aus falsch wird wahr: 0 => 1\n");  

if(!a) printf("aus wahr wird falsch: %d => %d\n", a, !a);  

if / elseif / else

Möglichkeit unterschiedlichen Code auszuführen, basierend darauf, ob eine Bedingung wahr oder falsch ist.

#include <stdio.h>  

int main() {  

    int alter = 20;  

    if (alter >= 18) {  
        printf("volljaehrig\n");  
    } else {  
        printf("minderjaehrig\n");  
    }  

    int temperatur = 25;  

    if (temperatur > 30) {  
        printf("es ist seeehr warm!\n");  
    } else if (temperatur >= 20) { // weitere bedingung pruefen  
        printf("angenehme temperatur.\n");  
    } else {  
        printf("brrr ... es ist kalt.\n");  
    }  

    return 0;  
}  

short if / else

Ternärer Operator / Bedingungs Operator

Kurzschreibweise für if/else Anweisung

(vergleich) ? wahr : falsch  
int a=3, b=5, max;  

max = (a > b) ? a : b;  

printf("Maximum: %d\n", max);  

ist äquivalent zu:

int a=3, b=5, max;  

if(a > b) {  
    max = a;  
}else {  
    max = b;  
}  

printf("Maximum: %d\n", max);  

switch / case

ermöglicht, basierend auf den Wert eines Ausdrucks, einen von vielen Codeblöcken auszuführen

der Ausdruck muss ein Integer-Typ (z.B. int, char) oder ein Aufzählungstyp (enum) sein

break beendet den switch-Block

ohne break wird der Code im nächsten case-Block weiter ausgeführt ("fall-through"), bis ein break erreicht oder der switch-Block beendet wird!

default-Fall ist optional und wird ausgeführt, wenn keiner der case-Werte mit dem Ausdruck übereinstimmt.

int a = 2;  

switch(a) { // a ... ausdruck  
    case 1:   
        printf("a ist eins\n");   
        break;  
    case 2:   
        printf("a ist zwei\n");  
        break;  
    case 3:   
        printf("a ist drei\n");   
        break;  
    default:   
        printf("a ist irgendwas\n");   
        break; // optional (aber gute praxis)  
}  

optional case-Block mit Klammern {}

int nummer = 123;  
switch (nummer) {  
    case 123: {   
        printf("nummer ist 123\n");  
        break;  
    }  
    // ...  
    default: {  
        printf("default: keine passende nummer gefunden\n");  
        // z.b. fehlerbehebung ...  
        break;  
    }  
}  

Übungen:

📋 Lichtschalter

Schreibe ein Programm bei dem der Benutzer durch eine Eingabe einen Schalter betätigen kann, um das Licht ein- (1) oder auszuschalten (0).

Immer wichtig! Fange fehlerhafte Eingaben ab.

Beispielausgabe:

Licht einschalten (1) oder ausschalten (0) ?  
0  
Licht ist bereits ausgeschaltet!  


📋 Intervalle

Schreibe für die folgenden Intervalle die passende if Anweisung, die bestimmt, ob ein Wert i in einem der Intervalle liegt oder nicht.

Intervalle

📋 Getränke-Automat-Simulation

Es stehen drei verschiedenen Getränke zur Auswahl:
Wasser (für 0,50 €), Saft (1€) und Energy-Drink (2€)

📋 Tage im Monat / Schaltjahr

Schreibe ein Programm bei dem der Benutzer zwei Zahlen eingeben kann, eine für ein Monat und eine für ein Jahr. Anhand der Eingabe wird die Anzahl der Tage vom angegebenen Monat und des angegebenen Jahr berechnet und ausgegeben.

Berücksichtige für den Monat Februar eventuelle Schaltjahre!

Alles, was durch 4 teilbar ist, ist ein Schaltjahr.  
Es sei denn, das Jahr ist durch 100 teilbar, dann ist es keins.  
Aber wenn es durch 400 teilbar ist, ist es doch wieder eins.  

Beispiele für Schaltjahre:

1996: durch 4 teilbar, nicht durch 100 → Schaltjahr  
2004: durch 4 teilbar, nicht durch 100 → Schaltjahr  
2000: durch 400 teilbar → Schaltjahr  
1900: durch 4 und durch 100, aber nicht durch 400 → kein Schaltjahr  
2100: durch 4 und durch 100, aber nicht durch 400 → kein Schaltjahr  
2024: durch 4 teilbar, nicht durch 100 → Schaltjahr  
2025: nicht durch 4 → kein Schaltjahr  


📋 Koordinatensystem: Distanz zweier Punkte

Wir betrachten ein Koordinatensystem, mit dem Ursprung oben links

Berechne die Distanz zweier vom Benutzer eingegebener Punkte (x,y).

Beispiel: A(1,5) und B(4,1)  
Distanz

vordefinierte Wurzel-Funktion sqrt() in Bibliothek <math.h>

📋 Koordinatensystem: Punkt innerhalb Kreis ?

Überprüfe ob ein eingegebener Punkt (x,y) innerhalb eines Kreises liegt oder nicht.

Der Kreis wird über zwei Koordinaten und dem Radius definiert.

Beispiel: P(4,4), K(2.5,3) und r=2