~~NOTOC~~ [[algorithmen:algo_lektion001|=> Lektion 1: Grundlagen]] ====== Lektion 2 - Struktogramme ====== - oder Programmieren auf dem Papier Struktogramme sind halbgraphische Notationen für Algorithmen. Sie haben sich weitgehend durchgesetzt und stehen im Einklang mit dem Gedanken der strukturierten Programmierung. ===== Elemente ===== **1.** **Einfache Anweisungen** werden in rechteckige Kästen gesetzt. {{:algorithmen:sgeinfache_anweisungen.jpg|}} ---- **2.** Lineare Abfolgen werden durch lückenloses Untereinandersetzen von Struktogrammen ausgedrückt. Sie stellen eine **Sequenz** dar. Hier wird zuerst Struktogramm A, dann Struktogramm B durchlaufen. Beide Struktogramme können selbst wieder einfache Anweisungen oder auch beliebig kompliziert sein. {{:algorithmen:sgsequenz.jpg|}} ---- **3. Entscheidungen**. In einer //Bedingung// wird geregelt, welches der beiden untergeordneten Struktogramme ausgeführt wird. Das jeweils andere wird nicht durchlaufen. Üblicherweise steht der "Ja"-Fall auf der linken Seite. {{:algorithmen:sgentscheidungen.jpg|}} ---- **4.** Wie ihr bereits kennt, können **Wiederholungen** (Schleifen) kopf- bzw. fußgesteuert sein. Das nachfolgende Bild zeigt eine //kopfgesteuerte Schleife//: solange die angegebene Bedingung erfüllt ist, wird das eingebettete Unter-Struktogramm ausgeführt. {{:algorithmen:sgwdh1.jpg|}} Das nachfolgende Bild zeigt eine //fußgesteuerte Schleife//: das eingebettete Unter-Struktogramm wird ausgeführt, bis die angegebene Bedingung erfüllt ist. Die Schleife wird auf jeden Fall mindestens einmal durchlaufen. {{:algorithmen:sgwdh2.jpg|}} ===== Beispiel: Fakultät ===== Bei der Eingabe einer Zahl n soll die Fakultät dieser Zahl n berechnet werden und anschließend das Ergebnis in der Variablen e ausgegeben werden. {{:algorithmen:sgbspfak.jpg|}} ===== Übungen ===== {{:htmlcss:work_64.png|}} **[[algorithmen:algolektion0s|Struktogrammeditoren]] als Freeware wählbar:** ---- **1.** Der Führerscheintest: in Abhägigkeit von deinem Alter gibt das Programm aus: "Ja, du darfst den Führerschein machen." oder "Sorry, du bleibst in der Warteschleife!" Zeichne für dieses Problem ein Struktogramm. **2.** Erkläre folgendes Struktogramm? Was wird ein entsprechender Algorithmus ausgeben? {{:algorithmen:sguebung.jpg|}} **3.** Erstelle ein Struktogramm zum [[algorithmen:algo_lektion001|Euklidischen Algorithmus für den ggT]]. **4.** Erstelle auch Struktogramme für deine zwei bis drei weiteren Algorithmen, die du in Lektion 0 programmiert hast. ---- [[algorithmen:algolektion02|=> Lektion 3 - Übungen]]\\ [[algorithmen:start|=> Übersicht: Algorithmen]]