Programmiertechnik


Struktogramme

Eine heute gebräuchliche Form zur grafischen Darstellung von Programmstrukturen sind die Nassi-Shneidermann-Diagramme oder kurz auch Struktogramme. Mit ihnen kann man unabhängig von einer konkreten Programmiersprache die Struktur eines Programms deutlich machen.

Sequenz

Die einfachste Form eines Struktogrammes ist die Darstellung einer Sequenz, d.h. einer Abfolge von Programmbefehlen: Die einfachste Form der Programmstruktur ist die Sequenz. Mehrere Anweisungen werden nacheinander ausgeführt.


Beispiel: Umsetzung in Pascal, mehrere Anweisungen werden nacheinander durchgeführt.
writeln('Programmiertechnik ist ein tolles Fach.'); {Aktion1}
writeln('Ich verstehe immer alles.'); {Aktion2}
writeln('Und ich freue mich auf die interessanten Aufgaben.'); {Aktion3}

Auswahl (if Anweisung)

Oft müssen Anweisungen nur unter ganz bestimmten Bedingungen ausgeführt werden. Dafür benötigt man eine bedingte Anweisung oder auch Auswahl (Selektion). Die Bedingung wird zunächst ausgewertet. Ist sie wahr, so wird die "true"-Anweisung ausgefüht. Ist die Bedingung falsch, so wird die "false"-Anweisung ausgeführt. Falls man den "false"-Teil nicht benötigt, kann dieser auch weggelassen werden. In diesem Fall spricht man statt von einer zweiseitigen von einer einseitigen Auswahl.




Beispiel:Umsetzung in Pascal, eine Auswahl wird abhängig von einer Bedingung getroffen .
if Note = 1 then {Aktion1}
  writeln('Ich verstehe alles.');
else {Aktion2}
  writeln('Ich könnte mich noch mehr mit dem Unterrichtsstoff beschäftigen.');

WIDERHOLUNGS-BLOCK (Repeat/for/while)

Es gibt noch einen, sog. WIDERHOLUNGS-BLOCK. Er dient dazu die gleiche Operation unter einer bestimmten Bedingung mehrmals durchzufuehren. Man kann so einen Widerholungs-Block("Schleife") benutzen um z.B. die Zahlen von 1 bis 100 zu addieren.

Es gibt 3 Möglichkeiten:


Die Abbruchbedingung "solange i<=100" kann vor oder nach der Schleife stehen (im 1. und 2. Bild). Wenn Sie vor der Schleife steht ('while' Schleife in Pascal) wird zuerst ueberprueft ob die Bedingung wahr ist, und dann wird die Schleife ein Mal durchgelaufen, alle Anweisungen in der Schleife werden 1 Mal ausgefuehrt. Danach wird wieder ueberprueft ob die Bedingung wahr ist und wenn es so ist werden die Anweisungen nochmall Ausgefuehrt. Das geht so weiter bis die Bedingung falsch wird. Das "i" wird z.B. nach dem letzten Durchlauf 101 und das ist nicht <= 100. Die Wiederholung bricht ab. (Diesen Schleifentypus haben wir noch nicht durchgenommen.)

Man kann die Abbruchbedingung auch nach der Schleife definieren ('Repeat' Schleife in Pascal). In diesem Fall werden die Anweisungen erst ausgefuehrt und dann wird ueberprueft ob sie ein weiteres Mal ausgefuehrt werden sollen, d.h. ob die Schleifenbedingung noch wahr ist.

Man kann auch von Anfang an bestimmen wie oft die Schleife durchgelaufen werden soll(im 3. Bild). In dieser sogenannten Zählschleife ('for' Schleife in Pascal) ist die Zahl der Wiederholungen vor Eintritt in die Schleife be-kannt und wird meist von einer Zählvariablen kontrolliert. Die Zählvariable ist oft vom Typ int und wird in der Schleife schrittweise verändert. (Tatsächlich können Zählschleifen bedeutend komplizierter aufgebaut sein!)


Aufgabe 1:

Mache ein Struktogramm von dem Programm, das entscheidet welche von zwei eingegebenen Zahlen größer ist, und diese dann ausgibt.

Aufgabe 2:

Mache ein Struktogramm von einem Programm, das die Zahlen von 100 an in Zweierschritten runterzählt (also 100,98, 96, ...). Die Zahl 50 soll dabei ausgelassen werden.
Bei Null soll das Programm beendet werden. (Nach einer Tasteneingabe)

Aufgabe 3:

Welcher Algorithmus verbirgt sich hinter diesem Struktogramm?












Aktualisiert am 1.10.2003

Mail an Programmiertechnik