Karol lernt neue Methoden


Modulares Programmieren

Oftmals kommen in einem Programm bestimmte Anweisungen z.B. zur Eingabe, Ausgabe, Speichern, Drucken etc. öfter 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 demnach also eigenständige kleine in sich abgeschlossene Programmteile innerhalb eines Hauptprogramms. Man spricht deshalb auch von Unterprogrammen. Jedes Modul besitzt einen Namen, über den es von anderen Programmteilen bzw. vom Hauptprogramm aus aufgerufen werden kann.

Ein Beispiel
Karol soll eine Doppelreihe, bestehend aus jeweils 5 Ziegeln legen (siehe Abbildung). Schreiben und testen Sie das Programm. Was fällt Ihnen auf? DoppelReiheLegen

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. EineReiheLegen) und diese dann mehrfach aufzurufen.


Karol lernt neue Methoden

Wie organisiert man nun das Auslagern von Programmteilen in eigenständige Module? Im Sinne der objektorientierten Programmierung heißen diese Module Methoden. Karol muss also zusätzlich zu den schon vordefinierten Methoden neue benutzerdefinierte Methoden hinzulernen.

Für die Klasse Roboter können neue Methoden vereinbart werden. Dazu müssen der Bezeichner (Name) der neuen Methode und die Sequenz der aufzurufenden Methoden festgelegt werden.

Anweisung Bezeichner
Sequenz
*Anweisung

Auf diese Art und Weise vereinbarte Methoden können dann auch in anderen Methoden durch die Nennung des Bezeichners aufgerufen werden.

Übung 1

Wir wollen unser Programm zum Legen einer Doppelreihe nun entsprechend modular programmieren. Überlegen Sie sich eine neue Methode EineReiheLegen zum Legen einer Reihe von 5 Ziegeln. Diese neue Methode muss dann im Hauptprogramm zweimal aufgerufen werden. Dazwischen muss sich Karol natürlich noch umdrehen und einen Schritt machen. Sehen Sie die Auswirkung des modularen Aufbaus des Programms? Unser Programmtext ist jetzt viel kürzer geworden.

Achtung! Beachten Sie, dass der Interpreter ein Programm immer von oben nach unten abarbeitet. Soll ein Unterprogramm im Hauptprogramm aufgerufen und abgearbeitet werden, muss es demzufolge vorher vereinbart worden sein.

Starten Sie das Programm auch einmal im Einzelschrittmodus und verfolgen Sie, wie der Roboter das Programm abarbeitet.


Aufgaben zum modularen Programmieren

Übung 2: Treppe bauen
  1. Lassen Sie Karol eine Treppe wie in nebenstehender Abbildung "türmchenweise" (oder Schicht für Schicht) bauen.
  2. Vereinbaren Sie je eine neue Methode für jede der vier Stufen und schreiben Sie anschließend das Programm neu.
Treppe bauen
Übung 3: Nützliche Methoden

Die beiden folgenden Methoden lassen sich in vielen Situationen nutzbringend verwenden.

  1. Entwerfen Sie eine Methode Umdrehen, bei der sich Karol umdreht.
  2. Entwerfen Sie eine Methode SchrittZurueck, die Karol einen Schritt zurück gehen lässt. Er muss danach wieder in die gleiche Richtung wie am Anfang schauen.
    Hinweis: Hier können Sie die Methode Umdrehen verwenden.
Übung 4: Was passiert hier?
  1. Überlegen Sie, was die Methode Geheim bewirkt.
  2. Überprüfen Sie Ihre Überlegung, indem Sie Karol die Methoden Geheim und DreierReiheLegen beibringen und testen.
  3. Was passiert, wenn Sie die Methode Geheim mehrfach hintereinander aufrufen, ohne Karol zwischen den Aufrufen zu bewegen? Probieren Sie es aus.
Methode Geheim

Theoretischer Exkurs: Die Strategie "Teile und Herrsche" (Divide et impera)

Beim modularen Programmieren geht es auch um die Vereinfachung der Lösung eines komplizierten Problems durch die Aufteilung des komplexen Problems auf kleinere, leichter zu lösende Probleme. Für diese Strategie verwendet man in der Informatik den Namen "Teile und Herrsche".

Aufgabe: Erarbeiten Sie sich mithilfe von Wikipedia (https://de.wikipedia.org/wiki/Teile-und-herrsche-Verfahren; Kapitel Grundprinzip und Anwendung jenseits der Informatik) das allgemeine Grundprinzip dieser Strategie und ihre konkrete Anwendung in der Informatik.

Übung 5: Die Strategie "Teile und Herrsche" mit Robot Karol

Robot Karol soll einen Ziegelhaufen bestehend aus drei Ziegeln Schritt für Schritt um drei Felder rückwärts ziehen.


Übung 6: Einbinden von Programmbibliotheken

Viele Anweisungen werden in verschiedenen Programmen benötigt. Um sie nicht immer wieder neu schreiben zu müssen, kann man sie in so genannten Bibliotheken speichern. Man schreibt die gewünschten Anweisungen in eine separate Datei, die man wie eine normale Programmdatei speichert. Will man die Anweisungen in einem Programm verwenden, muss man zu Beginn des Programmtextes die Bibliotheksdatei importieren:

Einfügen
Pfad und Dateiname der Bibliothek
*Einfügen

Liegen die benötigten Bibliotheksdateien im gleichen Verzeichnis wie die eigentliche Programmdatei, muss kein Pfad angegeben werden. Dann genügt einfach der Aufruf des Dateinamens der Bibliotheksdatei.

Aufgabe: Schreiben Sie wiederum ein Programm zur Lösung der Aufgabe aus Übung 5. Lagern Sie diesmal jedoch die einzelnen Methoden (HaufenAbbauen, Umdrehen, SchrittZurueck, HaufenAufbauen) in einzelne Bibliotheksdateien aus, die Sie dann im Programm aufrufen.


zuletzt geändert am:
Eine Seite von Mirko Hans