====== Einführung strukturiertes Programmieren====== Struktogramme helfen dem Programmierer sich bereits im Vorfeld einen Plan zu erstellen. Im Folgenden werden wir das [[http://de.wikipedia.org/wiki/Nassi-Shneiderman-Diagramm|Nassi-Schneidermann-Diagramm]] betrachten. ---- ===== 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|}} ---- ==== Beispiel: ==== Schaltjahr Bestimmung {{:laumanns:struktogramm_schaltjahr.png?700|}} Programmiere ein lauffähiges Programm welches bei der Eingabe einer Jahreszahl entscheidet ob es sich um ein Schaltjahr handelt. Nehme hierfür als Grundlage die Datei schaltjahr.php und erweitere diese um die Funktionalität. ---- ==== Aufgabe: ==== Du hast folgendes Struktogramm gegeben: {{:laumanns:struktogramm_zur_sortierung_von_3_zahlen_2.png|}} Wird der Button "Tu was!" gedrückt, so soll das Programm mystery.php ausgeführt werden welches durch das Struktogramm beschrieben wird. Erstelle hierfür aus dem Struktogramm ein lauffähiges Programm. Nimm als Vorlage aus dem Tauschordner mystery.php . | {{:laumanns:mystery.png|}} | Erkläre danach welche Funktionalität das Programm besitzt. ---- ==== Aufgabe: ==== Erstelle zu folgendem Zahlenrätsel zunächst ein Struktogramm und programmiere dieses anschließend. Zahlenrätsel: - Denke dir eine Zahl zwischen 1 und 7 aus - Multipliziere diese mit 2 - Addiere anschließend diese Zahl mit 5 - Multipliziere mit 50 - Hattest du dieses Jahr bereits Geburtstag, dann addiere 1763 sonst addiere 1762 - Ziehe von dieser Zahl dein Geburtsjahr ab. Du erhältst eine 3-stellige Zahl bei welcher deine erste Ziffer der gedachten Zahl entspricht und die letzten beiden Ziffern deinem Alter. ---- ==== Aufgabe==== Folgendes Struktogramm gibt die Funktionalität zur Bestimmung aller Primzahlen bis zu einer Zahl n an. {{:laumanns:primzahlen_ausgeben2.png|}} Schreib dazu ein lauffähiges Programm. ---- ==== Aufgabe ==== Schreibe ein Programm welches zu einer Zahl die Primfaktorzerlegung ausgibt. Erstelle dafür zunächst ein Struktogramm und programmiere dieses anschließend. ---- ==== Aufgabe ==== Als Primzahlzwillinge bezeichnet man 2 Primzahlen die sich um genau 2 unterscheiden. Bsp.: 3 und 5 oder 11 und 13 oder .... Schreibe ein Programm welches alle Primzahlzwillinge bis zu einer bestimmten Zahl ausgibt. Erstelle dafür zunächst ein Struktogramm und programmiere dieses anschließend. ---- **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 ==== Vor Europa- und Weltmeisterschaften im Fußball werden von Panini Sammelalben gedruckt. Dieses Struktogramm gibt aus, wie viele Bilder im Durschnitt gekauft werden müssen. {{:laumanns:panini.png|}} ---- ==== Aufgabe ==== Schreiben Sie ein Programm zinsen.php, bei dem der Benutzer den Zinssatz und den aktuellen Kontostand eingeben kann. Das Programm soll dann darstellen, wie sich der Kontostand entwickelt. Wenn sich das Kapital verdoppelt hat, soll die Berechnung stoppen. | {{:laumanns:zinsen.png|}} |