Fachkonzept - Unterprogramm
Eigenständige Programmeinheiten
Die vergangenen Missionen waren Beispiele dafür, dass es vorteilhaft sein kann, Teilaufgaben einer Mission in Unterprogramme ausuzlagern. Komplexere Missionen (d.h. Programme) werden dadurch übersichtlicher und verständlicher.
Ebenso können die Unterprogramme an verschiedenen Stellen im Code erneut verwendet werden, ohne dass alle zum Unterprogramm gehörenden Anweisungen nochmals einzeln aufgeschrieben werden müssen. Denn auch die Vermeidung von Code - Duplizierungen trägt zur Lesbarkeit und Verständlichkeit von größeren Programmen bei. Zudem muss, wenn im Untergprogramm ein Fehler ist oder dieses ergänzt werden muss, der Code nur an einer Stelle angepasst werden.
Ein Unterprogramm, auch Funktion genannt, ist eine eigenständige Programmeinheit zur Lösung eines Teilproblems.
Eine Funktion fasst die Anweisungen zur Lösung des Teilproblems zu einer neuen Einheit (eine Art Mini-Programm im Programm) zusammen. Damit diese Einheit eindeutig zuordenbar ist, erhält sie einen Namen, über diesen die zur Funktion gehörigen Anweisungen einmalig oder mehrfach im weiteren Verlauf des Hauptprogramms (oder auch in anderen Funktionen) aufgerufen werden können. Ein solcher Aufruf wird Funktionsaufruf genannt.
Funktionsdeklarationen werden mit dem Schlüsselwort def
in Python eingeleitet und mit einem Doppelpunkt
nach dem Funktionsnamen versehen. Die Anweisungen die eingerückt unter der Funktionsdeklaration aufgeführt sind, werden
Funktionsdefinition genannt. In Python ist es üblich, dass Funktionen direkt nach der Funktionsdeklaration definiert werden.
Eine Funktion muss zuerst definiert werden, bevor sie aufgerufen werden kann.
Sowohl direkt nach dem Namen der Funktion bei deren Deklaration, z.B.: def asteroidAusweichen():
, als auch beim Funktionsaufruf selbst
z.B. findEnemy()
, muss ein Klammerpaar ()
direkt nach dem Funktionsnamen verwendet werden.
Bezeichner und Kommentare
Bei der Einführung von Namen für Unterprogramme sollte man immer sprechende Bezeichner
benutzen. Unterprogrammnamen wie z. B. p
sollten dabei nicht verwendet werden, da völlig unklar ist, welche Anweisungen sich hinter diesem
Funktionsnamen verbergen. Daher gibt der verwendete Namen immer auch Auskunft über das Verhalten der Funktion, z.b. asteroidAusweichen()
.
asteroidAusweichenPowerupAufsammelnZurückZurmStartFliegen()
ist ein gutes Beispiel für einen sprechenden Bezeichner,
zeigt aber gleichzeitig auch, dass zu viele Einzelaufgaben in dieser Funktion zusammengefasst worden sind. Um die Lesbarkeit und Verständlichkeit
des Codes zu erhöhen, sollten Funktionen aber (in der Regel) nur für eine Aufgabe verantwortlich sein.
Wenn sprechende Bezeichner alleine nicht aussagekräftig genug sind, können Kommentare wichtige Zusatzinformationen liefern, um das Verhalten einzelner Programmteile transparent zu machen.
Bisher wurde im Kapitel für die Elementaranweisungen von Spacebug und ebenfalls für die eigenen Funktionen die CamelCase
- Schreibweise benutzt.
Weitere Möglichkeiten zur Schreibweise von Funktionsnamen (insbesondere die bevorzugte Schreibweise für Python - Code) werden im Kapitel
Funktionen III nochmals thematisiert.