Strukturierung
Zielsetzung
Das Ziel dieser Seite ist es, die wichtigsten Aspekte von Unterprogrammen zu beleuchten und zu sichern.
Wissensspeicher
Du kannst dein gelerntes Wissen im folgenden Wissensspeicher festhalten:
Strukturierung: Unterprogramme verwenden
Du hast bereits in der Erkundung gelernt, dass ein Unterprogramm als eigenständige Programmeinheit definiert wird. Im eigentlichen Programm kann dann diese Einheit (ggf. mehrfach) aufgerufen werden. An einer Stelle im Quelltext wird also das Unterprogramm definiert; das nennt man die Unterprogrammdefinition. An (ggf. mehreren) anderen Stellen des Programms wird es verwendet; das nennt man den Unterprogrammaufruf.
Dieses Konzept – Bausteine zur Lösung einer Aufgabe zu erstellen – nennt man Modularisierung; klicke auf das Symbol rechts, um mehr darüber zu lernen.
Aufgabe 1: Fachbegriffe verwenden
-
Hier siehst du Teile des Programms aus der Erkundung. Ordne die beiden gerade gelernten Fachbegriffe passend zu.
def lueckenBisAsteroidFuellen(): linksFuellenFallsNoetig() move() while not rockFront(): linksFuellenFallsNoetig() rechtsFuellenFallsNoetig() move() linksFuellenFallsNoetig() turnRight()Fachbegriff:
lueckenBisAsteroidFuellen() lueckenBisAsteroidFuellen()Fachbegriff:
- Der Begriff "Definition" ist in der Umgangssprache nicht sonderlich gängig. Denke darüber nach, ob du ihn schon einmal gehört hast. Wie sieht es mit dem englischen declaration aus? Recherchiere die Bedeutung und mache dir klar, dass das ein passender Fachbegriff ist.
- Die Unterprogrammdefinition kommt in einem Programm immer nur einmal vor; der Unterprogrammaufruf ggf. mehrfach. Erkläre, warum das so ist.
- Woran erkennt man im Programm eindeutig, dass man gerade eine Definition und keinen Aufruf betrachtet?
Aufgabe 2: Sprechende Namen
Für die Funktionalität des Programms ist es egal, welchen Bezeichner man einem Unterprogramm gibt. Das Unterprogramm lueckenBisAsteroidFuellen() könnte genauso gut auch bisAsteroid() oder unterprogramm() oder qwerty() heißen.
-
Erkläre, warum der Name
lueckenBisAsteroidFuellen()besonders geeignet ist. Hilft das eher den Nutzern des Programms oder den Entwicklern? - Man nennt solche guten Bezeichner auch „sprechende Namen“. Erkläre, was das bedeutet.
- Optional: Die Art, wie hier ein Bezeichner aus mehreren Wörtern gebildet wird, nennt man „CamelCase“ (im Deutschen langweiliger: „Binnenmajuskel“). Recherchiere, was man unter diesem Begriff versteht und wo CamelCase-Notation verwendet wird.
Aufgabe 3: Ein Rollenspiel
Spielt ein Programm mit Unterprogramm einmal nach – ohne Computer. Die Argo fliegt einen kurzen Korridor entlang, und das Hauptprogramm ruft dabei dreimal das Unterprogramm linksFuellenFallsNoetig() aus der Erkundung auf. Dabei schlüpfen zwei Personen in unterschiedliche Rollen:
- Pilotin: Sitzt am Spielplan und bewegt die Argo. Nur sie sieht das Spielfeld und beantwortet die Sensorfragen.
- Steuermann: Hat das Programm vor sich. Die Unterprogrammdefinition liegt als eigene Karte daneben. Bei jedem Unterprogrammaufruf markiert er mit einem Lesezeichen, wo es im Hauptprogramm weitergeht, und arbeitet dann die Unterprogramm-Karte ab.
Ihr braucht den Spielplan (ausgedruckt, dazu Spielfiguren für Argo und PowerUps – zur Not Münzen oder Radiergummis) und die Rollenkarten. Die erste Karte erklärt Aufbau und Ablauf, danach folgen die beiden Rollen, das Programm, die Unterprogramm-Karte, ein Protokoll für den Steuermann und eine Reflexionskarte für den Schluss. Auf der Unterprogramm-Karte findet ihr auch das Lesezeichen zum Ausschneiden – ersatzweise tut es ein Stift oder eine Büroklammer.
Aufgabe 4: Die Konzeptkarte erweitern
Nimm deine Konzeptkarte aus den vorigen Kapiteln wieder zur Hand. Falls du noch keine hast, lade das Blatt herunter und trage zuerst die Begriffe der früheren Kapitel ein.
- Ergänze die neuen Begriffe dieses Kapitels: Unterprogrammdefinition, Unterprogrammaufruf und Bezeichner.
- Verbinde sie mit Pfeilen – auch mit Begriffen, die schon auf deiner Karte stehen – und beschrifte jeden Pfeil.
- Welcher der beiden neuen Unterprogramm-Begriffe hängt mit Anweisungssequenz zusammen, welcher mit Anweisung?
Das Blatt für deine Konzeptkarte: Konzeptkarte herunterladen