--- id: P4 titel: Pseudocode, Struktogramm und Schreibtischtest block: programmierung woche: 16 worum: In der Prüfung schreibt man keinen lauffähigen Code, sondern beschreibt den Ablauf so, dass ihn jeder umsetzen kann. Drei Bausteine genügen – Folge, Verzweigung, Schleife. rahmenplan: [A10, A4] lernfeld: LF5 merksatz: Erst den Ablauf in Worten, dann in Pseudocode. Jede Schleife braucht ein Ende. Mit einem Schreibtischtest prüfen, bevor man abgibt. karten: - frage: Was unterscheidet eine kopfgesteuerte von einer fußgesteuerten Schleife? antwort: Die kopfgesteuerte Schleife (SOLANGE … ENDE SOLANGE) prüft die Bedingung vor jedem Durchlauf und läuft unter Umständen gar nicht. Die fußgesteuerte (WIEDERHOLE … BIS) prüft erst danach und läuft deshalb mindestens einmal. - frage: Was ist ein Schreibtischtest? antwort: Man spielt einen Algorithmus von Hand mit Beispielwerten durch und notiert in einer Tabelle nach jedem Schritt die Werte aller Variablen. So findet man Fehler, ohne den Code auszuführen. - frage: Was liefert dieser Ablauf für die Liste 72, 91, 85, 60 – zaehler ← 0; FÜR jeden wert IN liste – WENN wert > 80 DANN zaehler ← zaehler + 1? antwort: 2, denn nur 91 und 85 sind größer als 80. --- ## Das Wesentliche - **Drei Bausteine** reichen für jeden Ablauf: **Folge** (Schritt für Schritt), **Verzweigung** (WENN … DANN … SONST), **Schleife** (wiederholen, bis etwas erreicht ist). - **Pseudocode** ist strukturierte Umgangssprache mit festen Schlüsselwörtern. In der Prüfung gibt es keine verbindliche Schreibweise; wichtig ist, dass Einrückung und Schlüsselwörter eindeutig zeigen, was wozu gehört. - **Zuweisung:** `summe ← 0` – die Variable bekommt einen Wert. Vergleich: `summe = 0`. - **Schleifen:** - `FÜR i ← 1 BIS n` – Anzahl der Durchläufe steht vorher fest - `SOLANGE bedingung` – kopfgesteuert, prüft vorher, läuft eventuell nie - `WIEDERHOLE … BIS bedingung` – fußgesteuert, läuft mindestens einmal - **Struktogramm (Nassi-Shneiderman):** Der Ablauf als Kasten; eine Verzweigung teilt den Kasten mit einem Dreieck in Ja und Nein, eine Schleife umschließt die zu wiederholenden Schritte. Sprünge gibt es nicht. - **Programmablaufplan (PAP):** Ablauf mit Symbolen nach DIN 66001 – Oval für Start und Ende, Rechteck für Tätigkeiten, Raute für Entscheidungen, Parallelogramm für Ein- und Ausgabe. - **Schreibtischtest:** Beispielwerte wählen, Schritt für Schritt durchgehen und die Werte aller Variablen in einer Tabelle festhalten. Grenzfälle mitnehmen: leere Liste, ein Element, genau der Grenzwert. ## Übersicht Gesucht: Wie viele Server haben mehr als 80 % Plattenbelegung, und wie hoch ist die höchste? ``` anzahlKritisch ← 0 maximum ← belegung[0] FÜR i ← 0 BIS laenge(belegung) − 1 WENN belegung[i] > 80 DANN anzahlKritisch ← anzahlKritisch + 1 ENDE WENN WENN belegung[i] > maximum DANN maximum ← belegung[i] ENDE WENN ENDE FÜR AUSGABE anzahlKritisch, maximum ``` Schreibtischtest mit `belegung = [72, 91, 85, 60]` – „Wert" ist `belegung[i]`, „Anzahl" ist `anzahlKritisch`, „Max." ist `maximum`: | i | Wert | > 80? | Anzahl | Max. | |---|---|---|---|---| | – | – | – | 0 | 72 | | 0 | 72 | nein | 0 | 72 | | 1 | 91 | ja | 1 | 91 | | 2 | 85 | ja | 2 | 91 | | 3 | 60 | nein | 2 | 91 | Ausgabe: 2 und 91. ## Prüfungsfrage **Frage:** Ein Prüfprogramm erhält eine Liste von Messwerten. Ein Wert ist in Ordnung, wenn er zwischen 9,8 und 10,2 liegt (Grenzen eingeschlossen). Schreiben Sie einen Pseudocode, der ausgibt, wie viele Werte außerhalb der Toleranz liegen, und ob mehr als 5 % der Werte betroffen sind. **Antwort:** ``` ausserhalb ← 0 FÜR jeden wert IN messwerte WENN wert < 9,8 ODER wert > 10,2 DANN ausserhalb ← ausserhalb + 1 ENDE WENN ENDE FÜR AUSGABE ausserhalb WENN laenge(messwerte) > 0 UND ausserhalb / laenge(messwerte) > 0,05 DANN AUSGABE "Mehr als 5 % außerhalb der Toleranz" ENDE WENN ``` Die Bedingung prüft beide Grenzen mit ODER, weil ein Wert entweder zu klein oder zu groß sein kann. Die Grenzwerte selbst gelten als in Ordnung, deshalb `<` und `>` statt `≤` und `≥`. Die Prüfung auf eine leere Liste verhindert eine Division durch null.