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.

 

Man muss nur arbeiten

So lässt sich grob zusammenfassen, was der ehemalige Berliner Schüler David Weinstock in seinem Buch “Schluss mit ungenügend!” anderen Schülern zur Verbesserung der schulischen Noten rät.

IMG_4549

Das ist jetzt nicht wirklich etwas Neues, aber ich finde es schön, das von einem Schüler bestätigt zu bekommen.

Aber das ist nicht der einzige Grund, warum ich das Buch jedem Elftklässler nur empfehlen kann. Der Autor geht sehr detailliert auf die einzelnen Elemente der Unterrichts- und Klausurvorbereitung ein, schildert Taktiken für das richtige Melden (womit er auch recht hat) oder erklärt geschicktes Verhalten gegenüber seinen Mitschülern.

Insgesamt kann man also sagen, dass man durch normales Lernen vielleicht im Schnitt auf eine 3 kommt, mit optimierten Vorbereiten auf eine 2 und durch geschicktes Unterrichtsverhalten dann auch auf eine 1. Und gerade wegen dem letzten Punkt empfehle ich dieses Buch all meinen Oberstufenschülern. Denn diese Übersehen oftmals die Bedeutung der mündlichen Note in der 11. und 12. Klasse.

Durch die weitere Nutzung der Seite (Scrollen, Navigieren) stimmen Sie der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen