Modulare Programmierung


Warum modular Programmieren?

Oftmals kommen in einem Programm bestimmte Anweisungen z.B. zur Eingabe, Ausgabe, Speichern, Drucken etc. mehrfach vor. Dann empfiehlt es sich, schon wegen der besseren Übersichtlichkeit, diese in eigenständige Teilprogramme (Module) auszulagern. Solche Module können dann auch unabhängig vom Programm immer wieder verwendet werden (Baukastenprinzip).

Auch für das Programmieren im Team bietet sich das Aufteilen eines Programms in Module an. Einzelne Bausteine können dann von verschiedenen Entwicklern separat gepflegt und weiterentwickelt werden. Im Anschluss werden sie dann wieder im Hauptprogramm zusammengefasst. Dieses Vorgehen erleichtert auch die Wartung einzelner Funktionen einer Software.

Module sind eigenständige kleine in sich abgeschlossene Programmteile innerhalb eines Hauptprogramms. Man spricht auch von Unterprogrammen (Prozeduren, Funktionen). Jedes Modul besitzt einen Namen, über den es von anderen Programmteilen bzw. vom Hauptprogramm aus aufgerufen werden kann.

Erklärvideo - modulare Programmierung
Ein Beispiel

Die Turtle soll einen kleinen "Wald" bestehend aus drei Bäumen zeichnen. Dazu könnte man folgendermaßen vorgehen: Man programmiert das Zeichnen des ersten Baums, dann geht die Turtle etwas weiter, man programmiert den zweiten Baum etc.

Ist diese Form des Programmierens effektiv? Sicherlich nicht, denn viele Anweisungen treten mehrfach auf. Die Idee des modularen Programmierens ist es, immer wieder auftretende Folgen von Anweisungen in ein separates Modul oder Unterprogramm auszulagern (z.B. baum()) und diese dann mehrfach aufzurufen.

Die Turtle lernt neue Befehle / Funktionen

Wie organisiert man nun das Auslagern von Programmteilen in eigenständige Module? Bei Python heißen diese Module Funktionen. Die Turtle muss also zusätzlich zu den schon vordefinierten Befehlen / Funktionen wie z.B. forward() neue benutzerdefinierte Befehle / Funktionen hinzulernen.

Für die Turtle können neue Befehle / Funktionen vereinbart werden. Dazu müssen der Bezeichner (Name) der neuen Funktion und die Anweisungen der aufzurufenden Befehle festgelegt werden.

def Bezeichner():
Anweisungen

Auf diese Art und Weise vereinbarte Befehle / Funktionen können dann auch in anderen Teilen des Programms durch die Nennung des Bezeichners aufgerufen werden. Noch drei wichtige Hinweise:

Übung 1: Zeichnen eines Baumes
Zunächst wollen wir nur einen Baum zeichnen. Schauen Sie sich dazu den nebenstehenden Quelltext an und beschreiben Sie mit eigenen Worten, wie die Turtle beim Zeichnen des Baumes vorgeht. Erstellen und testen Sie dann das Programm.
Übung 2: Modulares Zeichnen von mehreren Bäumen

Im nächsten Schritt wollen wir das Zeichnen eines Baumes (siehe Übung 1) in ein Modul auslagern, das wir dann dreimal aufrufen wollen. Dazu definieren wir zunächst mit def baum(): die neue Funktion für das Zeichnen eines Baumes. Anschließend heben wir den Stift auf, laufen 100 Schritte, setzen den Stift wieder ab und zeichnen den zweiten Baum. Analog zeichnen wir den dritten Baum. Erstellen Sie das Programm Baeume.py und testen Sie anschließend das Programm.

Übung 3: Modulares Zeichnen mehrerer Sechsecke
Definieren Sie eine Funktion sechseck(), mit der Sie ein Sechseck zeichnen können. Die Seitenlänge soll 100 betragen. Verwenden Sie hierfür als Grundlage das Programm aus Übung 4 zur Thematik Sequenzen. Wenden Sie die Funktion mehrmals an, um die nebenstehende Figur zu zeichnen. Vergessen Sie nicht, dass sich die Turtle zwischendurch drehen muss (z.B. um 30° nach rechts).
Hinweis: Mit der Funktion turtle.speed() kann die Geschwindigkeit verändert werden, mit der die Turtle zeichnet. Das verkürzt die Zeit des Wartens auf die fertige Grafik. Nähere Hinweise zur Verwendung der Funktion speed() finden Sie z.B. hier: https://www.geeksforgeeks.org/turtle-speed-function-in-python/.
Ein Vorausblick: Natürlich ist das mehrmalige Ausführen der immer gleichen Anweisungen nicht sehr elegant. Dafür werden wir später die algorithmische Grundstruktur der Wiederholungsanweisung verwenden. Dadurch lässt sich der Quelltext erheblich verkürzen.
Übung 4: Modulares Zeichnen mehrerer Quadrate

Hier handelt es sich um eine Aufgabe mit erhöhtem Schwierigkeitsgrad.

Definieren Sie eine Funktion für ein Quadrat, das auf der Spitze steht und zeichnen Sie damit die nebenstehende Figur.

zuletzt geändert am:
Eine Seite von Mirko Hans