Fachkonzept - Unterprogramm
Eigenständige Programmeinheiten
Oft ist es günstig, wenn man für Teilaufgaben eigenstäbdige Programmeinheiten konzipiert. Das hilft, ein Programm überschaubarer und damit verstehbarer zu gestalten.
Ein Unterprogramm ist eine eigenständige Programmeinheit zur Lösung eines Teilproblems.
Ein Unterprogramm fasst die Anweisungen zur Lösung des Teilproblems zu einer neuen Einheit zusammen.
Diese Einheit wird dabei auch mit einem Namen versehen. Das folgende Beispiel zeigt dies
für das Problem Kleeblattreihe bis zum nächsten Baum legen
(siehe vorangehender Abschnitt).
# vorher: # Kara sieht (in einiger Entfernung) vor sich einen Baum. # nachher: # Kara hat den gesamten Weg bis zum Baum mit Kleeblättern ausgelegt. def kleeblattreiheBisBaumLegen(): while not kara.treeFront(): kara.putLeaf() kara.move() kara.putLeaf()
Eine solche Festlegung nennt man Unterprogrammdeklaration.
Den für das Unterprogramm eingeführten Namen kann man jetzt als neue
Anweisung benutzen.
Man nennt eine solche Anweisung dann Unterprogrammaufruf.
Bei der Ausführung einer solchen neuen
Anweisung werden die Anweisungen ausgeführt,
die in der Deklaration festgelegt sind.
So führt der Unterprogrammaufruf kleeblattreiheBisBaumLegen()
dazu, dass Kara die in der Deklaration oben
angegebenen Anweisungen ausführt.
Vorteile von Unterprogrammen
Unterprogramme tragen dazu bei, Programme übersichtlich zu gestalten:
Jeder, der schon einmal versucht hat, ein langes und kompliziertes Programm zu verstehen, weiß, wie schwierig das ist - insbesondere, wenn man das Programm nicht selbst geschrieben hat. Viel leichter wird es, wenn das Programm gut strukturiert ist. Dazu gehört insbesondere, Lösungen von Teilproblemen in Unterprogramme auszulagern.
Unterprogramme dienen dazu, Code-Duplizierungen zu vermeiden:
Es kommt öfters vor, dass ein Teilproblem mehrfach auftritt. Im Beispiel
ein Fußballfeld mit Kleeblättern auslegen
kommt mehrfach das Teilproblem
um einen Pfosten laufen
vor. Ohne Unterprogramme müsste man ein und dasselbe
Teilprogramm wiederholt in das Programm schreiben. Mit Hilfe von Unterprogrammen kann dieses Teilproblem einmal
gelöst werden. Danach kann man mit einem Unterprogrammaufruf immer die entsprechende Teillösung aufrufen.
Bezeichner und Kommentare
Bei der Einführung von Namen für Unterprogramme sollte man immer sprechende Bezeichner
benutzen. Niemand kann sich etwas unter
einem Unterprogrammnamen wie z. B. p
vorstellen. Benutzt man aber einen Namen, der bereits das
gewünschte Verhalten verrät, wie z. B. umPfostenLaufen()
, so trägt dies wesentlich zum Verständnis bei.
Kommentare können wichtige Zusatzinformationen liefern, um das Verhalten einzelner Programmteile transparent zu machen. Oft ist es günstig, bei Unterprogrammen das gewünschte Verhalten in einem Kommentar genau zu beschreiben. Kommentare können aber auch wichtige Stellen in einem Programm etwas näher erläutern.