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
Pseudocode
EINGABE preis
EINGABE menge
gesamt = preis * menge
AUSGABE gesamtDie 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:
| Schritt | a | b | Ausgabe |
|---|---|---|---|
| a = 5 | 5 | · | · |
| b = 7 | 5 | 7 | · |
| a = b | 7 | 7 | · |
| b = a | 7 | 7 | · |
| Ausgabe a, b | 7 | 7 | 7, 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.
| Vergleich | Bedeutung | Beispiel (wahr) |
|---|---|---|
== | ist gleich | 7 == 7 |
!= | ist ungleich | 7 != 8 |
<, <= | kleiner, kleiner oder gleich | 3 < 4, 4 <= 4 |
>, >= | größer, größer oder gleich | 9 > 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.
| A | B | A UND B | A ODER B | NICHT A |
|---|---|---|---|---|
| wahr | wahr | wahr | wahr | falsch |
| wahr | falsch | falsch | wahr | falsch |
| falsch | wahr | falsch | wahr | wahr |
| falsch | falsch | falsch | falsch | wahr |
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.
| Ausdruck | Ergebnis | Rechnung |
|---|---|---|
17 DIV 5 | 3 | 5 passt dreimal in 17 (3 · 5 = 15) |
17 MOD 5 | 2 | 17 − 15 = 2 bleibt übrig |
20 DIV 5, 20 MOD 5 | 4, 0 | geht auf, kein Rest |
17 / 5 | 3,4 | normale 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
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
Pseudocode
EINGABE bestellwert
WENN bestellwert >= 100 DANN
rabatt = 10
SONST
rabatt = 0
ENDE WENN
AUSGABE rabattGenau 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:
Bedingungen dürfen zusammengesetzt sein. Versandkostenfrei soll es nur geben, wenn der Bestellwert mindestens 50 beträgt und nach Deutschland geliefert wird:
Struktogramm
Pseudocode
EINGABE bestellwert
EINGABE land
WENN bestellwert >= 50 UND land == "DE" DANN
versand = 0
SONST
versand = 5
ENDE WENN
AUSGABE versandPrü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 < 100geschrieben. 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:
Übungen
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.
Musterlösung anzeigen
| Schritt | x | y | Ausgabe |
|---|---|---|---|
| x = 4 | 4 | · | · |
| y = 9 | 4 | 9 | · |
| x = x + y | 13 | 9 | · |
| y = x - y | 13 | 4 | · |
| x = y | 4 | 4 | · |
| Ausgabe x, y | 4 | 4 | 4, 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).
Ermitteln Sie die Ausgabe des Struktogramms für die folgenden Eingaben. Die Variable mitglied ist ein Wahrheitswert.
- alter = 16, mitglied = falsch
- alter = 70, mitglied = falsch
- alter = 70, mitglied = wahr
Musterlösung anzeigen
16 < 18ist wahr. Bei ODER reicht eine wahre Seite, der Rest muss nicht mehr geprüft werden: „ermäßigt“.70 < 18ist falsch. Die Klammer:70 >= 65ist wahr,mitglied == wahrist falsch, UND daraus ist falsch. Falsch ODER falsch ist falsch: „normal“.70 < 18ist 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.
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
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
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
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.
Was ergibt 23 MOD 4?
Welche Bedingung ist genau dann wahr, wenn zahl ungerade ist?
a = 3, b = 5. Was ergibt (a < b) UND NICHT (b == 5)?
Eine einseitige Verzweigung setzt rabatt = 10, wenn bestellwert >= 100. Danach wird rabatt ausgegeben. Was ist das Problem?