Lektion 2 von 8

Sequenz, Verzweigung und Operatoren

Die zwei einfachsten Bausteine tragen fast jedes Struktogramm: Anweisungen der Reihe nach und eine Frage, die den Weg teilt. Dazu die Operatoren, mit denen du Bedingungen formulierst, und die Fehler, die dabei am häufigsten passieren.

  • Etwa 30 Minuten
  • 2 Leseaufgaben, 2 Zeichenaufgaben, 4 Quizfragen
  • Papier und Stift genügen

Sequenz: eine Anweisung nach der anderen

Eine Sequenz ist die einfachste Struktur: Anweisungen, die von oben nach unten genau einmal ausgeführt werden. Jede Anweisung bekommt ein eigenes Rechteck. Drei Arten von Anweisungen kommen immer wieder vor:

  • Eingabe: Ein Wert kommt von außen (Benutzer, Datei) und landet in einer Variablen: Eingabe preis.
  • Zuweisung: Rechts wird gerechnet, links wird das Ergebnis gespeichert: gesamt = preis * menge. Der alte Wert der Variablen links ist danach weg.
  • Ausgabe: Ein Wert oder ein Text wird angezeigt: Ausgabe gesamt.

Struktogramm

Gesamtpreis
Eingabe preis
Eingabe menge
gesamt = preis * menge
Ausgabe gesamt

Pseudocode

EINGABE preis
EINGABE menge
gesamt = preis * menge
AUSGABE gesamt

Die Reihenfolge zählt. Stünde gesamt = preis * menge vor den beiden Eingaben, würde mit Werten gerechnet, die es noch gar nicht gibt. Das klingt banal, ist aber die häufigste Fehlerquelle beim Lesen: Man sieht eine Zeile und vergisst, dass die Variable zu diesem Zeitpunkt noch einen anderen Wert hatte. Schau dir dieses kleine Beispiel an:

Überschreiben
a = 5
b = 7
a = b
b = a
Ausgabe a, b
Zwei Variablen, zwei Zuweisungen. Was wird ausgegeben?
SchrittabAusgabe
a = 55··
b = 757·
a = b77·
b = a77·
Ausgabe a, b777, 7
Schreibtischtest (Wertetabelle): Die 5 ist nach der dritten Zeile verloren, und die vierte Zeile kopiert nur noch eine 7 in eine andere 7.

Wer hier „5, 7“ oder „7, 5“ erwartet, hat die Zuweisung als Tausch gelesen. Eine Zuweisung kopiert aber nur in eine Richtung und überschreibt, was links stand. Um zwei Werte wirklich zu tauschen, braucht man eine dritte Variable als Zwischenspeicher; das ist ein eigenes Grundmuster, das in Lektion 6 drankommt.

Operatoren und Datentypen

Bedingungen und Rechnungen bestehen aus Operatoren. Diese Liste solltest du auswendig können, weil sie in Struktogrammen, Pseudocode und in den Lösungshinweisen gleich aussieht.

VergleichBedeutungBeispiel (wahr)
==ist gleich7 == 7
!=ist ungleich7 != 8
<, <=kleiner, kleiner oder gleich3 < 4, 4 <= 4
>, >=größer, größer oder gleich9 > 2, 2 >= 2

Ein Vergleich liefert immer einen Wahrheitswert: wahr oder falsch. Mehrere Vergleiche verknüpfst du mit UND, ODER und NICHT. UND ist nur wahr, wenn beide Seiten wahr sind; ODER ist schon wahr, wenn eine Seite wahr ist; NICHT dreht den Wert um.

ABA UND BA ODER BNICHT A
wahrwahrwahrwahrfalsch
wahrfalschfalschwahrfalsch
falschwahrfalschwahrwahr
falschfalschfalschfalschwahr

Beispiel: Für alter = 20 ist alter >= 18 UND alter < 65 wahr, weil beide Teile stimmen. alter < 18 ODER alter >= 65 ist falsch, weil keiner der beiden Teile stimmt. Und NICHT (alter < 18) ist wahr. Bei gemischten Ausdrücken setzt du Klammern, dann muss niemand über die Reihenfolge rätseln.

DIV und MOD

Zwei Operatoren, die in Prüfungsaufgaben häufig vorkommen. DIV ist die ganzzahlige Division: Es wird geteilt und der Rest weggelassen. MOD liefert genau diesen Rest.

AusdruckErgebnisRechnung
17 DIV 535 passt dreimal in 17 (3 · 5 = 15)
17 MOD 5217 − 15 = 2 bleibt übrig
20 DIV 5, 20 MOD 54, 0geht auf, kein Rest
17 / 53,4normale Division mit Nachkommastellen

Die wichtigste Anwendung: Teilbarkeit. Eine Zahl ist durch 5 teilbar, wenn zahl MOD 5 == 0. Sie ist gerade, wenn zahl MOD 2 == 0, und ungerade, wenn zahl MOD 2 == 1. Auch das Schaltjahr, ein Klassiker in Aufgaben, ist nur eine Kombination aus MOD und Logik: Ein Jahr ist Schaltjahr, wenn jahr MOD 4 == 0 UND (jahr MOD 100 != 0 ODER jahr MOD 400 == 0). Für 2024 ist das wahr, für 1900 falsch, für 2000 wieder wahr. Rechne es einmal nach, dann hast du DIV, MOD und die Logik in einem Rutsch geübt.

Datentypen

Jede Variable hat einen Typ, und der entscheidet, was Operatoren mit ihr machen. In Struktogrammen wird der Typ selten hingeschrieben, aber die Aufgabe nennt ihn meist im Text. Vier reichen für diesen Kurs:

  • Ganzzahl (Integer): 0, 17, −3. Hier gibt es DIV und MOD; bei „/“ hängt die Bedeutung vom Datentyp ab, den die Aufgabe nennt; im Zweifel DIV bzw. / ausdrücklich schreiben. Lies genau.
  • Kommazahl (Gleitkommazahl, Double): 3,4 oder 19,99. Division liefert Nachkommastellen.
  • Zeichenkette (String): Text in geraden Anführungszeichen, "DE". Vergleiche mit == prüfen, ob der Text genau gleich ist.
  • Wahrheitswert (Boolean): wahr oder falsch. Ergebnis jedes Vergleichs; als Variable oft ein Merker wie gefunden.

Einseitige Verzweigung

Eine Verzweigung stellt eine Frage und führt je nach Antwort andere Anweisungen aus. Im Struktogramm steht die Bedingung im Dreieck, darunter links der Ja-Zweig und rechts der Nein-Zweig. Bei der einseitigen Verzweigung passiert nur im Ja-Fall etwas; der Nein-Zweig bleibt leer und wird mit dem Zeichen ∅ markiert, damit klar ist, dass dort nichts vergessen wurde.

Struktogramm

Jugendtarif
Eingabe alter
alter < 18janein
Ausgabe "Jugendtarif"
Ausgabe "Vielen Dank"

Pseudocode

EINGABE alter
WENN alter < 18 DANN
    AUSGABE "Jugendtarif"
ENDE WENN
AUSGABE "Vielen Dank"

Im Pseudocode fehlt einfach das SONST. Wichtig ist, was nach der Verzweigung steht: „Vielen Dank“ liegt unterhalb des Verzweigungskastens und wird deshalb in beiden Fällen ausgegeben. Alles, was beide Zweige gemeinsam tun sollen, gehört unter die Verzweigung, nicht doppelt in beide Zweige.

Zweiseitige Verzweigung

Bei der zweiseitigen Verzweigung haben beide Zweige Inhalt. Beispiel: Ab einem Bestellwert von 100 gibt es 10 % Rabatt, sonst keinen.

Struktogramm

Rabatt
Eingabe bestellwert
bestellwert >= 100janein
rabatt = 10
rabatt = 0
Ausgabe rabatt

Pseudocode

EINGABE bestellwert
WENN bestellwert >= 100 DANN
    rabatt = 10
SONST
    rabatt = 0
ENDE WENN
AUSGABE rabatt

Genau einer der beiden Zweige läuft, nie beide und nie keiner. Für bestellwert = 100 ist „100 >= 100“ wahr, also 10; für 99 ist es falsch, also 0. Achte auf die Grenze: „ab 100“ heißt >=, „über 100“ hieße >.

Dieselbe Logik lässt sich auch einseitig schreiben, wenn du den Normalfall vorher als Startwert setzt:

Rabatt, einseitig
Eingabe bestellwert
rabatt = 0
bestellwert >= 100janein
rabatt = 10
Ausgabe rabatt
Erst rabatt = 0 als Startwert, dann nur im Ja-Fall überschreiben. Beide Fassungen sind richtig und werden gleich bewertet.

Bedingungen dürfen zusammengesetzt sein. Versandkostenfrei soll es nur geben, wenn der Bestellwert mindestens 50 beträgt und nach Deutschland geliefert wird:

Struktogramm

Versandkosten
Eingabe bestellwert
Eingabe land
bestellwert >= 50 UND land == "DE"janein
versand = 0
versand = 5
Ausgabe versand

Pseudocode

EINGABE bestellwert
EINGABE land
WENN bestellwert >= 50 UND land == "DE" DANN
    versand = 0
SONST
    versand = 5
ENDE WENN
AUSGABE versand

Prüfe solche Bedingungen mit Beispielwerten in alle Richtungen: 60 und „DE“ ergibt versandfrei; 60 und „AT“ kostet 5, weil das UND beide Teile verlangt; 40 und „DE“ kostet ebenfalls 5. Erst wenn alle drei Fälle stimmen, ist die Bedingung richtig.

Verschachtelung und typische Fehler

In jedem Zweig darf wieder eine Verzweigung stehen. So entstehen Ketten wie „bis 20 g: 95 Cent, sonst: bis 50 g: 110 Cent, sonst: 160 Cent“. Wie du solche Ketten sauber zeichnest und wann die Mehrfachauswahl die bessere Wahl ist, zeigt Lektion 4. In Übung 2.3 probierst du es schon einmal aus. Vorher die vier Fehler, die bei Verzweigungen am häufigsten Punkte kosten:

  • Bedingung falsch herum. „Ab 100 Rabatt“ als bestellwert < 100 geschrieben. Test: Setze einen Wert ein, der laut Aufgabe in den Ja-Zweig gehört, und prüfe, ob die Bedingung dafür wirklich wahr ist.
  • Zweige vertauscht. Bedingung richtig, aber „rabatt = 10“ steht im Nein-Zweig. Im Struktogramm ist der Ja-Zweig immer links, sofern die Beschriftung nichts anderes sagt.
  • Gleichheit mit = statt ==. WENN land = "DE" sieht aus wie eine Zuweisung. Im Kurs und in vielen Lösungshinweisen steht für den Vergleich ==. Wenn du = für den Vergleich nutzt, dann durchgehend und mit := oder ← für die Zuweisung.
  • Fehlende Initialisierung. Der gefährlichste Fehler, weil er im Struktogramm unauffällig ist:
Rabatt, fehlerhaft
Eingabe bestellwert
bestellwert >= 100janein
rabatt = 10
Ausgabe rabatt
Für bestellwert = 80 läuft der leere Nein-Zweig, rabatt bekommt nie einen Wert, und die Ausgabe zeigt etwas Undefiniertes. Es fehlt rabatt = 0 vor der Verzweigung (oder ein Nein-Zweig mit rabatt = 0).

Übungen

Leseaufgabe 2.1

Führen Sie einen Schreibtischtest durch: Welche Werte werden am Ende dieser Sequenz ausgegeben? Notiere nach jeder Zeile die Werte von x und y, bevor du die Lösung aufklappst.

Sequenz
x = 4
y = 9
x = x + y
y = x - y
x = y
Ausgabe x, y
Musterlösung anzeigen
SchrittxyAusgabe
x = 44··
y = 949·
x = x + y139·
y = x - y134·
x = y44·
Ausgabe x, y444, 4

Ausgabe: 4, 4. In der Zeile y = x - y wird mit dem neuen x gerechnet (13 − 9 = 4), nicht mit dem alten. Danach überschreibt x = y die 13, und die ist verloren. Wer „13, 4“ ausgibt, hat die letzte Zuweisung übersehen; wer „−5, −5“ ausgibt, hat in der vierten Zeile mit dem alten x gerechnet (4 − 9 = −5). Wer „9, 4“ erwartet, hat den Tauschtrick im Kopf, dessen letzte Zeile x = x - y lautet (Lektion 6).

Leseaufgabe 2.2

Ermitteln Sie die Ausgabe des Struktogramms für die folgenden Eingaben. Die Variable mitglied ist ein Wahrheitswert.

  1. alter = 16, mitglied = falsch
  2. alter = 70, mitglied = falsch
  3. alter = 70, mitglied = wahr
Eintrittspreis
Eingabe alter
Eingabe mitglied
alter < 18 ODER (alter >= 65 UND mitglied == wahr)janein
Ausgabe "ermäßigt"
Ausgabe "normal"
Musterlösung anzeigen
  1. 16 < 18 ist wahr. Bei ODER reicht eine wahre Seite, der Rest muss nicht mehr geprüft werden: „ermäßigt“.
  2. 70 < 18 ist falsch. Die Klammer: 70 >= 65 ist wahr, mitglied == wahr ist falsch, UND daraus ist falsch. Falsch ODER falsch ist falsch: „normal“.
  3. 70 < 18 ist falsch. Die Klammer: wahr UND wahr ist wahr. Falsch ODER wahr ist wahr: „ermäßigt“.

Der typische Fehler ist Fall 2: Wer das UND wie ein ODER liest, gibt auch dort „ermäßigt“ aus. Ohne Klammer hängt die Lesart von der Vorrangregel ab (UND bindet stärker als ODER); die Klammer macht sie eindeutig.

Zeichenaufgabe 2.3

Entwerfen Sie das Struktogramm: Das Porto eines Briefs hängt vom Gewicht in Gramm ab. Bis 20 g kostet er 95 Cent, bis 50 g 110 Cent, darüber 160 Cent. Das Gewicht wird eingelesen, das Porto in Cent ausgegeben. Prüfe deine Lösung mit 20, 21 und 50.

Musterlösung anzeigen
Porto
Eingabe gewicht
gewicht <= 20janein
porto = 95
gewicht <= 50janein
porto = 110
porto = 160
Ausgabe porto

Drei Bereiche brauchen zwei Fragen. Die erste Verzweigung trennt „bis 20 g“ ab, im Nein-Zweig steht eine zweite Verzweigung für „bis 50 g“, deren Nein-Zweig den Rest abdeckt. Die zweite Bedingung darf einfach gewicht <= 50 lauten, denn dass das Gewicht über 20 liegt, steht an dieser Stelle schon fest. Die Ausgabe gehört einmal unter die ganze Verzweigung und nicht dreimal in die Zweige. Ebenfalls richtig: drei einseitige Verzweigungen nacheinander mit vollständigen Bedingungen (gewicht > 20 UND gewicht <= 50), oder die umgekehrte Reihenfolge (erst gewicht > 50 prüfen).

So wird typischerweise bewertet

  • Eingabe oben, Ausgabe einmal nach der Verzweigung
  • Bedingungen mit den richtigen Grenzen (<= 20, <= 50; „bis“ schließt den Wert ein)
  • Alle drei Bereiche erreichbar, keiner doppelt (verschachtelt oder mit vollständigen Bedingungen nacheinander)
  • Form: Dreieck mit Bedingung, Ja-Zweig links, innere Verzweigung sauber im Zweig
Zeichenaufgabe 2.4

Entwerfen Sie das Struktogramm: Eine Ganzzahl wird eingelesen. Ist sie gerade und zugleich durch 3 teilbar, wird „ja“ ausgegeben, sonst „nein“. Prüfe deine Lösung mit 12, 9 und 8.

Musterlösung anzeigen
Gerade und durch 3 teilbar
Eingabe zahl
zahl MOD 2 == 0 UND zahl MOD 3 == 0janein
Ausgabe "ja"
Ausgabe "nein"

Beide Eigenschaften werden mit MOD geprüft und müssen gleichzeitig gelten, also UND. Für 12 sind beide Reste 0, Ausgabe „ja“; für 9 ist 9 MOD 2 == 1, Ausgabe „nein“; für 8 ist 8 MOD 3 == 2, ebenfalls „nein“. Gleichwertig und kürzer: zahl MOD 6 == 0, denn durch 2 und durch 3 teilbar heißt durch 6 teilbar. Auch zwei verschachtelte Verzweigungen sind richtig, solange „nein“ in beiden Nein-Zweigen ausgegeben wird.

So wird typischerweise bewertet

  • Teilbarkeit mit MOD geprüft (Rest gleich 0), nicht mit DIV oder /
  • Beide Bedingungen mit UND verknüpft (oder gleichwertig MOD 6, oder verschachtelt)
  • Beide Ausgaben vorhanden und den richtigen Zweigen zugeordnet
  • Form: Eingabe, Verzweigung mit Dreieck, Ja-Zweig links

Jetzt selbst testen

Vier Fragen zu Sequenz, Operatoren und Verzweigung.

1 / 4

Was ergibt 23 MOD 4?

2 / 4

Welche Bedingung ist genau dann wahr, wenn zahl ungerade ist?

3 / 4

a = 3, b = 5. Was ergibt (a < b) UND NICHT (b == 5)?

4 / 4

Eine einseitige Verzweigung setzt rabatt = 10, wenn bestellwert >= 100. Danach wird rabatt ausgegeben. Was ist das Problem?