Grundlagen der Programmierung in C
Prof. Dr. Alexandra Mikityuk
HTW Berlin - Wintersemester 2025/26
if-Anweisung verstehen und anwendenif-else für alternative AusführungspfadeBisher wurden alle Anweisungen Zeile für Zeile ausgeführt. Ein Programm soll aber auch in der Lage sein, auf unterschiedliche Situationen zu reagieren.
💡 Verzweigung: Eine Verzweigung wird mithilfe einer Bedingung formuliert. Eine Bedingung hat einen Wahrheitswert: entweder wahr oder falsch.
Ausgabe: Ein billiger Artikel
Der erste Block wird NICHT ausgeführt, weil 0.85 nicht größer als 0.99 ist.
Beim Vergleich von Zahlen stehen Ihnen 6 verschiedene Vergleichsoperatoren zur Verfügung:
| Operator | Bedeutung | Beispiel |
|---|---|---|
| > | größer als | preis > 0.99 |
| < | kleiner als | preis < 1.0 |
| >= | größer oder gleich | preis >= 1.0 |
| <= | kleiner oder gleich | preis <= 0.99 |
| == | gleich | preis == 1.50 |
| != | ungleich | preis != 1.50 |
⚠️ WICHTIG: Unterschied zwischen = und ==
= ist eine Zuweisung: preis = 1.5== ist ein Vergleich: if (preis == 1.5)Ausgabe:
Sie können eine Verzweigung durch das Schlüsselwort else erweitern. Nach dem if folgt in runden Klammern eine Bedingung. Ist diese Bedingung wahr, wird die Anweisung oder der folgende Block von Anweisungen ausgeführt.
Ausgabe:
Der Ablauf innerhalb einer Verzweigung kann auch von mehreren Bedingungen abhängig sein, die miteinander verknüpft werden.
| Operator | Bedeutung | Beispiel |
|---|---|---|
| && | Logisches UND | a < 1.0 && b < 1.0 |
| || | Logisches ODER | a > 0.99 || b > 0.99 |
| ! | Logisches NICHT | !(preis > 0.99) |
Falls alle Bedingungen zutreffen sollen, verknüpfen Sie sie mithilfe des Operators &&. Er steht für das logische Und.
Reicht dagegen eine Bedingung aus, nutzen Sie den Operator ||. Er steht für das logische Oder.
Es gibt noch einen dritten logischen Operator: Das Zeichen ! steht für das logische Nicht. Mit diesem Operator wird der Wahrheitswert einer Bedingung umgedreht: Aus wahr wird falsch und umgekehrt.
Ausgabe:
⚠️ Vorrangregeln:
Die Vergleichsoperatoren haben Vorrang vor den logischen Operatoren. Das bedeutet, dass zunächst der Wahrheitswert der einzelnen Bedingungen ermittelt wird. Erst anschließend werden die Bedingungen verknüpft.
Schreiben Sie ein Programm in der Datei u_fall.c. Es soll die folgende Ausgabe ermöglichen (hier mit Eingaben des Benutzers):
💡 Tipp: Eine mögliche Lösung finden Sie in Abschnitt C.3 des Buchs.
Achten Sie darauf, nach dem else kein Semikolon zu notieren. Dies würde diesen Zweig der Verzweigung unmittelbar beenden. Der Compiler meldet diesen Fehler ebenfalls nicht. Die anschließende Anweisung wäre nicht mehr mit der Verzweigung verbunden und würde stets ausgeführt.
Der Compiler übersetzt auch die Anweisung if (preis = 1.5) ohne Fehlermeldung. Allerdings haben Sie damit nicht geprüft, ob der Preis 1,50 Euro beträgt, sondern den Preis mit 1,50 Euro festgelegt. Dies führt nicht zu den erwarteten Ergebnissen.
Ohne geschweifte Klammern gehört nur die erste Anweisung zur if-Bedingung!
>, <, >=, <=, ==, !=&& (UND), || (ODER), ! (NICHT)= ist Zuweisung, == ist Vergleichif oder else&& und || kombiniert werdenBevor Sie mit dem Programmieren beginnen, sollten Sie einen Plan haben!
💡 Wichtig: Nur Schritt 5 ist das eigentliche Programmieren! Die Schritte 1-4 sind das Denken - und das ist mindestens genauso wichtig!
Schreiben Sie ein Programm, das das Alter einer Person abfragt und prüft, ob sie einen Film ab 16 Jahren sehen darf. Wenn die Person 16 Jahre oder älter ist, soll "Zutritt erlaubt" ausgegeben werden. Andernfalls soll "Zutritt verboten" ausgegeben werden.
🎯 Tipp: Lesen Sie die Aufgabe mehrmals! Markieren Sie wichtige Wörter wie "wenn", "sonst", "prüfen", "berechnen".
| Eingabe | Beschreibung | Datentyp | Variable |
|---|---|---|---|
| Alter | Alter der Person | int |
alter |
| Ausgabe | Bedingung |
|---|---|
| "Zutritt erlaubt" | Wenn alter >= 16 |
| "Zutritt verboten" | Sonst (alter < 16) |
Ein Flussdiagramm visualisiert den Programmablauf:
| Symbol | Bedeutung | Verwendung |
|---|---|---|
|
Oval
|
Start / Ende | Programmstart und -ende |
|
Rechteck
|
Anweisung | Eingabe, Ausgabe, Berechnung |
|
Raute
|
Bedingung | if-Anweisungen, Verzweigungen |
| → | Pfeil | Programmfluss, Richtung |
💡 Tipp: Zeichnen Sie Flussdiagramme immer zuerst auf Papier! Das hilft Ihnen, die Logik zu verstehen, bevor Sie Code schreiben.
Wenn Sie die Schritte 1-4 gemacht haben, ist das Programmieren einfach:
✅ Sehen Sie? Mit guter Planung schreibt sich der Code fast von selbst!
Schreiben Sie ein Programm, das Punkte aus einer Klausur einliest (0-100) und eine Note ausgibt:
• 90-100 Punkte: Note 1 (Sehr gut)
• 80-89 Punkte: Note 2 (Gut)
• 70-79 Punkte: Note 3 (Befriedigend)
• 60-69 Punkte: Note 4 (Ausreichend)
• 0-59 Punkte: Note 5 (Nicht bestanden)
int punkte - Punktzahl (0-100)💡 Pseudocode: Eine Zwischenstufe zwischen menschlicher Sprache und Programmiersprache. Hilft beim Denken!
⚠️ Wichtig: Die Reihenfolge ist entscheidend! Wir prüfen von oben nach unten.
else am Ende ist optional (aber empfohlen!)⚠️ Achtung: else if ist NICHT dasselbe wie mehrere separate if-Anweisungen!
Ein Museum hat folgende Preise:
• Kinder (unter 6 Jahre): Eintritt frei
• Kinder/Jugendliche (6-17 Jahre): 5 Euro
• Erwachsene (18-64 Jahre): 12 Euro
• Senioren (65+ Jahre): 8 Euro
Schreiben Sie ein Programm, das das Alter einliest und den Ticketpreis ausgibt.
💡 Tipp: Denken Sie zuerst nach, dann programmieren! 5 Minuten Planung sparen 30 Minuten Debugging.
printf zum Debuggen| Testfall-Typ | Beschreibung | Beispiel (Alter >= 16) |
|---|---|---|
| Normalfall | Typische Eingaben | alter = 20, alter = 10 |
| Grenzwerte | Werte an den Grenzen | alter = 16, alter = 15 |
| Extremwerte | Sehr große/kleine Werte | alter = 0, alter = 120 |
| Ungültige Eingaben | Fehlerhafte Werte | alter = -5 (negativ) |
⚠️ Wichtig: Testen Sie IMMER die Grenzwerte! Die meisten Fehler passieren an den Grenzen (z.B. >= vs. >).
| # | Fehler | Richtig |
|---|---|---|
| 1 | if (alter = 16) |
if (alter == 16) |
| 2 | if (alter >= 16); |
if (alter >= 16) |
| 3 | Klammern um Bedingung vergessen | Immer if (Bedingung) |
| 4 | Geschweifte Klammern vergessen | Bei mehreren Zeilen: { ... } |
| 5 | if (10 < alter < 20) |
if (alter > 10 && alter < 20) |
| 6 | else; { ... } |
else { ... } |
| 7 | Falsche Operator-Priorität | Klammern verwenden: (a && b) || c |
| 8 | Grenzwerte nicht getestet | Immer Grenzwerte testen! |
| 9 | Bedingungen in falscher Reihenfolge | Bei else-if: Spezielle vor allgemeine |
| 10 | Keine Kommentare im Code | Kommentare für bessere Lesbarkeit |
if, else, else if für verschiedene Fälle>, <, >=, <=, ==, !=&&, ||, !
💡 Erst denken, dann programmieren!
Gute Planung = Weniger Bugs = Mehr Erfolg
💪 Übung macht den Meister!
Je mehr Programme Sie schreiben, desto leichter wird es!
Prof. Dr. Alexandra Mikityuk
🏢 Büro: Raum C308
📅 Sprechstunde: Mittwoch 15:30-16:30
💡 Denken Sie daran:
Programmieren ist wie eine Fremdsprache lernen.
Am Anfang schwer, aber mit Übung wird es zur zweiten Natur!