Lehrzeit

Schule & Informatik

Monat: Oktober 2015 (Seite 1 von 2)

Ergänzung Aufgabe 78

So, die erste Doppelstunde in Python ist rum und es lief ganz gut. Die Gruppe ist recht einheitlich und diszipliniert. Ich konnte zwar nicht alle Detailfragen beantworten, aber ich konnte Hilfe zur Selbsthilfe geben.

Bevor es ans Programmieren ging, habe ich einen Überblick über verschiedene Programmiersprachen gegeben. Mit dabei waren BrainF***, Shakespeare, aber auch Lua. Das mache ich immer ganz gerne, damit die Schüler mal ein wenig über den Horizont blicken und dabei merken, dass viele Sprachen sich dann doch in der Syntax grob ähneln.

Dann ließ ich meine Python-Installation auf den Schülercomputern durch die Schüler testen und erläuterte anschließend ein paar Grundlagen bzgl. Ein- und Ausgabe, Datenunabhängigkeit etc. Dazu verteilte ich das untenstehende Arbeitsblatt, so dass die Schüler nur ein paar meiner Erklärungen am unteren Ende der ersten Seite nach eigenem Ermessen ergänzen konnten. Die Aufgabe 1 und 2 haben wir noch zusammengemacht. Aufgaben 3-5 wurden dann selbstständig gelöst.

Die kommenden Unterrichtsstunden sehen thematisch dann wahrscheinlich so aus:

  1. Grundwissen und Variablen (habe ich schon)
  2. Verzweigung
  3. Zählwiederholung
  4. Bedingte Wiederholungen
  5. Programmieren mit der Turtle
  6. Komlexere Datentypen

pdf-Datei des Arbeitsblattes mit Lösungen: Python – 1 – Grundwissen

Programmieraufgabe 78

Eigentlich hätte ich gedacht, dass ich diese Aufgabe schon längst mal aufgenommen hatte, stimmte aber nicht. Dabei ist sie zu Beginn der Q11 super zum Glätten der Leistungsunterschiede bei den Schülern und um schon mal zu sehen, wer was kann und wie gut. Außerdem lässt sich prima die Warteschlange als einfach verkettete Liste motivieren, da die Aufgabe mit einem Array umgesetzt nicht sehr performant ist.

Aufgabe 78
Schreibe ein Programm zur Verwaltung der Taxiwarteschlange an einem beliebigen Bahnhof.
Benutze dabei ein Feld Taxi, wobei die Anzahl der Taxen vom jeweiligen Bahnhof abhängt.

Die Klasse Taxi muss mindestens das Attribut fahrerName besitzen.

Implementiere für die Klasse TaxiWarteschlange mindestens folgende Methoden:

1.) pop() entfernt das vorderste Taxi
2.) push(neuesTaxi) hängt ein Taxi hinten an.
3.) aufruecken() rückt alle Taxen um 1 nach vorne und wird nach der Ausführung von pop() benötigt.

Die Überleitung bzw. Motivierung zur einfach verketteten Liste geschieht dann durch folgendes Szenario: Ein Taxifahrer hat eventuell einen Dauerkunden, der immer zu einer bestimmten Uhrzeit abgeholt werden muss (z.B. eine Dialysepatient). Daher kann ein Taxi auch mal aus der Mitte der Warteschlange herausfahren. Daraufhin müssen entsprechend  alle Taxen aufrücken.

Die Lösung dieses Problems mag für einen erfahreren Programmierer einfach sein. Für viele Schüler ist es aber überhaupt nicht. Oft bekomme ich eine Lösung mit drei geschachtelten Schleifen, also O(n3), anstelle einer einfachen, linearen Lösung.

Während meine Schüler das im Moment mit Java umsetzen, versuche ich mich an Python. Was nicht ganz einfach ist, da die Syntax dann doch zunächst sehr anders ist. Hier ein kleiner Auszug vom Start:

class TaxiSchlange:
    def __init__(self):
        self.__schlange = []

    def push(self, neuesTaxi):
        self.__schlange.append(neuesTaxi)

    def p(self):
        for el in self.__schlange:
            el.p()

Als erstes gibt es kein private oder public, in Python geht das mit Unterstrichen. Es gibt statt Arrays, Tupel bzw. statt ArrayListen die Listen. Die habe ich oben bemüht. Wodurch aber manches anders wird. Auch das Attribute erst im Konstruktor, der hier __init__ heißt, definiert werden, fand ich ungewöhnlich. Aber mit der Zeit wird man sich wohl daran gewöhnen.

Wenn man mal wieder nicht schlafen kann,

dann herrscht Ruhe im Haus und man kann gemütlich an Dingen herumbasteln, für die man sich normalerweise vielleicht nicht soooo viel Zeit nehmen würde.

Ich für meinen Fall habe die letzten Stunden damit zugebracht, mich und meinen Computer fitter für mein W-Seminar „Python programmieren“ zu machen. Wobei ich die letzten Stunden in erster Linie damit zubrachte irgendeine Kombination aus Python (2.4, 2.5, 2.6, 2.7, 3.1, 3.5) mit einer Version von TKinter oder wxPython, welche für die Oberflächen angedacht sind, zu installieren. Da ich auf einem Mac mit OS 10.9 arbeiten, war das vor allem viiiiieeeeel Suchen und stöbern in Foren, runterladen von Software, installieren, ausprobieren, löschen, im Terminalfenster wüste Linuxbefehle eingegeben, Beispielquelltexte kopieren und die Ausführung testen; die aber meistens dann natürlich fehlschlug.

Schlussendlich habe ich jetzt im Moment PyCharm als Editor auserkoren, der zusammen mit Python 2.7 und Tkinter arbeitet. Jetzt muss ich „nur“ noch eine möglichst ähnliche Konfiguration auf den Win7 Computer in der Schule nachinstallieren.

Da ich aber Laptops in meinen Oberstufenklassen immer zulasse, werden bestimmt auch wieder welche kommen und andere Versionen von Python installiert haben und damit manche Beispielprogramme vielleicht gar nicht ausführen können oder andere IDEs benutzen wollen. Da darf ich dann auch noch aushelfen.

Ich hoffe doch sehr, dass nach diesen Anfangsproblemen das Programmieren deutlich eleganter und einfacher vonstattengeht. Vor allem im Vergleich zu Java. Worum es dann auch in der kommenden Programmieraufgabe gehen wird.

 

Ältere Beiträge

© 2017 Lehrzeit

Theme von Anders NorénHoch ↑