Repetition Konstanten

In dieser Aktivität werden Sie die grundlegende Begriffe rund ums Programmieren mit PyTamaro und insbesondere das Konzept der Konstanten nochmals repetieren.

Rekapitulation

Stellen Sie sich folgendes Szenario vor: Im Fach bildnerisches Gestalten hatten Sie den Auftrag erhalten, einen Flyer zu gestalten, auf dem Sie Ihre Lieblingssüssigkeit präsentieren. Da Sie vor kurzem gelernt haben zu programmieren, hat eine Ihrer Mitschülerinnen den folgenden Flyer aus lauter Konstanten erstellt:

alt text

Sie möchten selbst gerne eine solche Stängelglace für den Text "love" programmieren, doch wie war das schon wieder mit dem Programmieren in PyTamaro? Machen wir einen kleinen Exkurs, bevor wir wieder zur Glace zurückkehren.

Primitive Grafiken und API

Als Grundbausteine stehen uns folgedene primitven Grafiken aus der PyTamaro-Bibliothek zur Verfügung: rectangle, circular_sector, triangle, ellipse, und text.

Tipp: Wenn Sie mit dem Cursor auf die einzelnen primitiven Grafiken klicken, erscheint Ihnen die Kurzansicht der API (application programming interface), anhand welcher Sie wissen, wie Sie die jeweiligen primitiven Grafiken korrekt implementieren müssen und was deren grafischer Output ist:

alt text

Damit Sie aber überhaupt Zugriff auf die Grafiken, Kombinatoren etc. haben, müssen Sie in der ersten Zeile stets den import-Befehl korrekt schreiben.

from pytamaro import* #für den Import der ganzen PyTamaro-Bibliothek
from pytamaro import rectangle, above, show_grafic #für den spezifischen Import der verwendeten Komponenten

Für ein bewussteres Programmieren (wo kommen die Attribute überhaupt her?) und für eine grössere Auswahl bei der eigenen Namensgebung (evt. ist ein gewünschter Name nämlich bereits für etwas in der Bibliothek vergeben), empfiehlt es sich, nicht die ganze Bibliothek, sondern nur die für das Programm notwendigen Attribute zu importieren.

Loading...
Lösung
#um die Imports so einzurücken, müssen diese zwischen Klammern stehen
from pytamaro import (above, rotate, compose, pin, top_right, top_center,
                      center_left, bottom_left, bottom_right, rectangle,   
                      triangle, ellipse, black, red, white, yellow, show_graphic)

Wie oft im Unterricht gesehen und bereits oben erwähnt, kann man auch mit einem einzigen import-Befehl die ganze Bibliothek importieren.

Loading...
Lösung
from pytamaro import*

Eigenschaften von Konstanten

Wie im Unterricht thematisiert, verwenden wir Konstanten, wenn eine Grafik oder ein Attribut (wie z.B. die Farbe blue) nur einmalig verwendet wird oder diese zwar öfter gebraucht wird, sie sich aber z.B. in Form und/oder Farbe nicht verändert. In Bezug auf die Konstanten haben wir die Metapher mit den magischen Kisten angeschaut: Bei der Erstellung einer Konstanten (z.B. blume) können wir uns eine Kiste vorstellen, welche mit dem Namen der entsprechenden Konstanten beschriftet ist und aus der wir unendlich oft eine Grafik der exakt gleichen Blume herausholen können:

alt text

Im Unterricht haben wir diesbezüglich auch das Synonym Variablen eingeführt. Dies weil die oben aufgeführte Erklärung von Konstanten nicht ganz abschliessend ist. Denn wir haben gesehen, dass wir im Programmieren die Möglichkeit haben Konstanten im Laufe des Programms zu verändern, indem wir entweder direkt den entsprechenden Code verändern oder die Konstante, wie im folgenden Beispiel, überschreiben (gleicher Name, aber ein neuer Code wird darin gespeichert):

blume = beside(
            circular_sector(20, 360, magenta), 
            circular_sector(20, 360, magenta)
        )       

blume = overlay(
            blume, 
            rotate(90, blume)
        )
        
blume = overlay(
            circular_sector(15, 360, yellow), 
            blume   
        )

alt text

Somit liegen zu Beginn in der Kiste blume nur die Blütenblätter und am Schluss die fertige Blume. Die vorherigen Inhalte werden nicht mehr gebraucht und können mit dem Namen blume nicht mehr aufgerufen werden.
Nun kann man zwar erneut unendlich oft eine dieser definierten Blumen aus der Kiste herausnehmen, jedoch sind sie wieder alle identisch, also konstant.

alt text

Loading...
Lösung
from pytamaro import (beside, above, rotate, 
                      circular_sector, rectangle, 
                      rgb_color, show_graphic)

SCHOKOLADEN_BRAUN = rgb_color(150,75,0)
STAENGEL_BRAUN = rgb_color(255, 192, 128)
ERDBEER_ROT = rgb_color(255, 128,128)

sichtbare_glace= beside(
                    rotate(180, circular_sector(20, 90, ERDBEER_ROT)),
                    beside(
                        rectangle(60, 20, ERDBEER_ROT), 
                        rotate(-90, circular_sector(20, 90, ERDBEER_ROT))
                        )
                    )

schokoladen_ueberzug = above(
                            above(                             
                                circular_sector(60 , 180, SCHOKOLADEN_BRAUN), 
                                rectangle(120, 180, SCHOKOLADEN_BRAUN)
                                ),
                            sichtbare_glace
                            )

staengel = above(
                rectangle(20, 60, STAENGEL_BRAUN), 
                rotate(180,circular_sector(10, 180, STAENGEL_BRAUN))
                )

staengelglace_komplett = above(
                            schokoladen_ueberzug,
                            staengel
                            )

Wunderbar, Sie haben erfolgreiche eine Erdbeer-Stängelglace programmiert!

alt text

Von dieser Stängelglace existieren jedoch noch viele weitere Geschmackssorten (z.B. Schokolade, Vanille, Caramel, etc.), welche wir in einem späteren Schritt gerne möglichst ressourcensparend programmieren möchten.
Doch hierfür ist es wichtig, zuvor noch bei den Konstanten zu bleiben und die Codeduplikation als Phänomen von Konstanten zu betrachten.

Copy Paste

Anzeige Codeunterschiede Labellos (zum Anzeigen, auf den Pfeil drücken)

alt text

Codeduplikation

Im obigen Beispiel haben wir gesehen, dass die beiden Codefragmente für zwei der Labellos bis auf die Farbe des Labellos sowie dessen Schriftzug identisch sind.
Solche Codeduplikation soll wenn möglich vermieden werden, weil wir einerseits unnötige Speicherkapazität brauchen, aber hauptsächlich weil die Übersichtlichkeit des Programms leidet, da wir viel gleichen Code haben. Um dies zu umgehen, haben wir gelernt, solche Konstanten als Funktionen zu schreiben, was in der nächsten Aktivität ausführlicher angeschaut wird.

Was haben Sie in dieser Aktivität gelernt

Sie haben in dieser Aktivität...

  • ...die primitiven Grafiken von Pytamaro repetiert.
  • ...die unterschiedlichen Importbefehle anhand von zwei spezifischen Beispielen angewendet.
  • ...die Eigenschaften von Konstanten repetiert.
  • ...die Syntax von Konstanten anhand des Beispiels blume gesehen und anschliessend eigene Konstanten geschrieben.
  • ...anhand des Labellos ein Beispiel für Codeduplikation gesehen und Sie haben sich über bessere Lösungsansätze Gedanken gemacht.

This activity has been created by Schnider and is licensed under CC BY-SA 4.0.

Repetition Konstanten

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version a71e35c (Mon, 25 Aug 2025 18:25:55 GMT)