Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Klassen Laby und Zelle ====== ===== Klassen ===== Klassen sind Teil eines verbreiteten und sehr nützlichen Programmierkonzepts. Für unsere Zwecke sind Klassen eine Zusammenfassung von Daten (Variablen, genannt Attribute) und Funktionen (gennant Methoden), die mit diesen Attributen interagieren. Diese Einheit erlaubt es sicherzustellen, dass die Daten immer konsistent sind. Z.B. im Falle unseres Labyrinths stellen die Klassen sicher, dass wenn die Mauer von einer Zelle zur anderen geöffnet wird, dass das auch automatisch in umgekehrter Richtung geschieht. ===== Einrichten ===== Legen Sie einen neuen Ordner an und speichern Sie die beiden folgenden Dateien im neuen Ordner (**Rechtslick -> Ziel speichern unter** oder so ähnlich): {{lehrkraefte:blc:informatik:glf25:labyrinthe:laby.py}} {{lehrkraefte:blc:informatik:glf25:labyrinthe:zelle.py}} ===== Hello Laby ===== Öffnen Sie den neuen Ordner, der die beiden Dateien ''laby.py'' und ''zelle.py'' enthält und legen Sie dort eine neue Datei ''hello.py'' an. <code python hello.py> from laby import Laby from zelle import Zelle l = Laby(5,3) print(l) </code> ==== Zellen markieren ==== <code python> l[2,1].mark = 'Z' print(l) print(f"Zelle (2,1) ist mit {l[2,1].mark} markiert") </code> ==== Mauern öffnen/schliessen ==== Der erste Parameter gibt die Richtung an, in welche die Mauer geöffnet werden soll (0 rechts, 1 unten, 2 links, 3 oben). <code python> l[1,1].oeffneMauer(0) l[2,1].oeffneMauer(1) </code> Ist der zweite, optionale Parameter ''False'', wird die Mauer geschlossen: <code python> l[2,1].oeffneMauer(1, False) </code> ===== Aufgaben ===== Die Aufgaben (ohne Zusatzaufgaben) sollten von allen gelöst werden. Die Zusatzaufgaben sind dazu da, damit sich jene mit mehr Übung nicht langweilen ;-) ==== Kreuz ==== Programmieren Sie in Labyrinth das wie folgt aussieht: <code txt> +---+---+---+---+---+ | | | | | | +---+---+ +---+---+ | | | | | | +---+---+ +---+---+ | | +---+---+ +---+---+ | | | | | | +---+---+ +---+---+ | | | | | | +---+---+---+---+---+ </code> **Zusatzaufgabe**: Schreiben Sie ein Programm so, dass es für alle Labyrinthgrössen funktioniert. Hinweise: <code python> breite = l.breite # Anzahl Zellen horizontal hoehe = l.hoehe # Anzahl Zellen vertikal print(7//2) # Ganzzahldivision, wird immer abgerundet, ergibt also 3 (und nicht 3.5) </code> ==== Heizkörper ==== Produzieren Sie folgendes Labyrinth: <code txt> +---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+ + | | + +---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+ + | | + +---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+ </code> **Hinweis**: * Überprüfen ob eine Zahl ''y'' gerade ist: ''if y%2 == 0:'' **Zusatzaufgabe**: Programm funktioniert für beliebige Labyrinthgrössen. ==== Text ==== Programmieren Sie folgende Ausgabe: <code text> +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | | | | P | r | o | g | r | a | m | m | i | e | r | e | n | | | | | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | | | | | | | | m | a | c | h | t | | | | | | | | | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | | | | | | | | S | p | a | s | s | | | | | | | | | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ </code> **Hinweis**: mit ''for buchstabe in "blabla":'' kann etwas für jeden Buchstaben wiederholt werden. **Zusatzaufgabe**: Das Programm funktioniert mit beliebigen Texten als einzige Vorgabe <code python> # Vorgegebener Text text = "Das geht auch voll automatisiert" # Der Rest ist automatisch woerter = text.split(" ") # Text nach Leerschlägen aufteilen und als Liste speichern. anzahlWoerter = len(woerter) # Anzahl Wörter lmax = max([len(w) for w in woerter]) # Anzahl Buchstaben im längsten Wort # ... for index, wort in enumerate(woerter): # Wiederhole für jedes Wort, inkl. index pass # Tu erst mal nix </code> lehrkraefte/blc/informatik/glf25/labyrinthe/lib.txt Last modified: 2026/02/06 10:28by Ivo Blöchliger