Programmablauf#

A fool with a tool is still a fool.
— Grady Booch
Folien/PDF#
Die wichtigste Fähigkeit beim Programmieren ist es, ein Problem der echten Welt in einzelne Schritte zu übersetzen und zu kommunizieren. Ein Werkzeug zum Darstellen dieser Schritte sind “Programmablaufpläne” die allgemein auch als “Flussdiagramme” bezeichnet werden. Diese Pläne helfen dabei, die Struktur und Logik des Programms zu verstehen und zu optimieren.
Programmablaufpläne (Flussdiagramme)#
Ein Werkzeug zum Darstellen dieser Schritte sind “Programmablaufpläne” die allgemein auch als “Flussdiagramme” bezeichnet werden.
Sie bestehen aus einzelnen Elementen, die durch gerichtete Linien in der Ablauffolge verbunden werden. Die Form der Elemente definiert dabei ihre Bedeutung.
Sie beinhalten die grundlegenden Bausteine eines Programms. Diese Bausteine sind:
Anweisungen: Sie führen Aktionen aus, wie z.B. das Ausgeben von Text oder das Berechnen von Werten.
Variablen: Sie speichern Werte, die im Programm verwendet werden.
Operatoren: Sie führen Berechnungen oder Vergleiche durch.
Verzweigungen: Sie ermöglichen es, Entscheidungen zu treffen und den Programmfluss zu ändern.
Schleifen: Sie wiederholen bestimmte Anweisungen, solange eine Bedingung erfüllt ist.
Funktionen: Sie kapseln Code in wiederverwendbaren Blöcken.
Es gibt Start- und End-Elemente mit runden Ecken. Sie sind die einzigen mit genau einem Ausgang- bzw. genau einem Eingang. Sie werden z.T. weggelassen, wenn Start und Ende z.B. durch die Leserichtung klar erkennbar sind.
Anweisungen (Statements) werden mit eckigen Elementen dargestellt. Sie können mehrere Eingänge, aber nur einen Ausgang haben. Der Text in dem Element beschreibt die auszuführende Anweisung. Die Ein- und Ausgangsvariablen können an die Pfeile geschrieben werden.
Eingaben und Ausgaben werden durch Rhomben dargestellt. Hier die Eingabe Geld holen
.
if
-Anweisungen werden durch Drachenviereck dargestellt. Sie haben mindestens zwei Ausgänge. Die Bedingung wird in das Viereck geschrieben, die alternativen Werte der Bedingung (meist Ja/Nein) wird an die ausgehenden Pfeile geschrieben.
Unterprogramme, wie z.B. Funktionsaufrufe, werden durch eckige Elemente mit doppelter Linie dargestellt.
Funktionsablauf#
Programme können als Abfolge von durchnummerierten Statements betrachtet werden. Diese werden sequenziell (nacheinander) Statement nach Statement ausgeführt, in der Reihenfolge wie es im Programm definiert wurde. Werden Funktionen aufgerufen, so wird der in der Funktion definierte code an der Stelle des Aufrufs aufgeführt. Das folgende Beispiel soll dies verdeutlichen. Es definiert ein einfaches Skript was den Pythagoras zweier Variablen x
und y
mit Hilfe einer Funktion berechnet. Um den Programablauf zu verdeutlichen wurde jede Zeile (bis auf Zeile 4, da dies im Syntax der Funktionsdefinition nicht funktioniert) mit einem Printstatement der Zeile erweitert.
import math
x = 3; print("Zeile 1")
y = 4; print("Zeile 2")
def pythagoras(a, b):
res = math.sqrt((a*2)+(b*2)); print("Zeile 5")
return res; print("Zeile 6");
p_xy = pythagoras(x, y); print("Zeile 8")
print("Zeile 10")
Zeile 1
Zeile 2
Zeile 5
Zeile 8
Zeile 10
Nach Ausführung des Programms erkennen wir das die Zeilen 1 bis 3 in sequentieller Reihenfolge ausgeführt werden. Dann überspringt die Ausführung die Zeilen 5 und 6, weil diese die Funktion pythagoras
definiert, diese aber bisher noch nicht aufgerufen worden ist. Die Funktion wird erst am Anfang von Zeile 8 aufgerufen, weshalb als nächstes die Zeile 5 vor Zeile 8 ausgeführt wird. Es fehlt dann die Ausgabe der ‘Zeile 6’, weil die Funktion bereits mit dem return
beendet worden ist. Da die Funktion nochmals mit vertauschten Parametern in Zeile 9 aufgerufen wird, wird wieder Zeile 5 ausgegeben und dann erst Zeile 9 und 10.
Damit sehen wir sowohl, dass das Programm sequenziell von oben nach unten ausgeführt worden ist. Da die Funktionen allerdings wiederholbaren Statements kanzeln, werden diese bei Aufruf mehrmals ausgeführt.