[GI-FG] Zentralabitur 2007 -- Vorbereitung -- alle Aufgaben in
Python implementiert _und_ ...
Dr. L. Humbert
humbert at semsek2.ham.nw.schule.de
Son Aug 21 21:15:52 CEST 2005
Liebe Kollegin, lieber Kollege,
nunmehr befinden sich alle in Python implementierten Aufgabenlösungen in
einem Zustand, der zu _ablauffähigen_Programmen_ führt. Dennoch wurden
nicht immer alle Methoden implementiert.
Die Implementierung war vor allem zum Test für die Netzwerkaufgabe und für
den Modellrechner nötig. Die in den Lösungshinweisen angegebenen
Codefragmente sind so, wie sie dort angegeben sind
a) nicht ablauffähig
und
b) fehlerhaft
Für die Netzwerkaufgabe habe ich den Autoren (auf Nachfrage) bereits
detaillierte Hinweise zukommen lassen.
In der Aufgabe Modellrechner befindet sich in der Aufgabenstellung (Teil f)
ein m.E. kapitaler Fehler (vgl. den dokumentierten Quellcode mit
Ergebnisprotokoll). Nach Meinung der Autoren soll 2^2 + 2^4 =20
bestimmt werden. Dies ist aber nicht der Fall. Der komplette von mir
erstellte und dokumentierte Quellcode ist über die »Buchseite« zugänglich:
http://humbert.in.hagen.de/ddi/
Ich bitte auf diesem Weg um weitere Rückmeldungen.
Die Quartettaufgabe (Aufgabe 1) verwendet, wie in der zweiten Mail zu den
Aufgabenvorschlägen
http://www.die.informatik.uni-siegen.de/pipermail/gi-fg-informatische-bildung-nrw/2005-August/000088.html
erwähnt, die Datenstruktur
»List«
Es ist mir unklar, warum dort eine Vielfalt von Methoden zum Einsatz kommt,
die diese Datenstruktur völlig undurchsichtig macht.
Allein der Unterschied zwischen
"before" und "behind"
führt zu einem nicht zu rechtfertigenden Aufwand für eine geeignete
Implementierung, da unglaublich viele Sonderfälle berücksichtigt werden
müssen.
Ist das für Ihre Schülerinnen durchschaubar?
Um im Sinne einer vernünftigen didaktischen Gestaltung zu argumentieren:
Es sollte genau _eine_ Sicht auf diese Datenstruktur realisiert werden und
nicht dieser permanente Wechsel, ob ich mich denn nun vor oder hinter einem
Element (wenn es vorhanden ist, ...) befinde.
Ich habe jedenfalls für die Implementierung auf eine minimale Realisierung
gesetzt, die gerade so die Aufgabenstellung erfüllt.
Den Aufgabenentwicklerinnen sei ins Stammbuch geschrieben, dass die
Datenstruktur nicht durch Summation bekannter Methoden besser oder
durchschaubarer wird -- in den Vorschlägen gibt es 14 Methoden!
Weil mir diese »List« so seltsam anmutete, habe ich eines der einschlägigen
Fachbücher zur Informatik konsultiert: Balzert schlägt im Lehrbuch:
Grundlagen der Informatik (1999) auf S. 601ff in Anlehnung an Ottmann,
Widmayer (aber m.E. auch schon bei Wirth und Sedgewick diskutiert) vor:
______________________________
| Liste:
+------------------------------------
| Anfang
| Ende
| VorgängerAktuellerZeiger
+-----------------------------------
| naechstesElement
| setzeAktuellerZeigerZurueck
| einfuegenElement
| entfernenElement
| anfuegenElement
| suchenElement
|____________________________
Einfügen findet _vor_ der aktuellen Zeigerposition statt
Anfügen findet am Ende der Liste statt
Entfernen: das aktuelle Element wird entfernt
Suchen liefert den Zeiger auf das erste Auftreten des gesuchten Elements
naechstesElement liefert das aktuelle Element; setzt den Zeiger eins weiter
setzeAktuellerZeigerZurueck -- auf den Anfang der Liste
Es wird als Attribut nicht ein Zeiger auf das aktuelle Element, sondern ein
Zeiger auf das vorherige Element gespeichert (macht das Um"legen" von
Elementen erheblich effizienter). ...
viele Grüße
Ludger Humbert
--
Dr. L. Humbert <humbert at seminar.ham.nw.schule.de>
Die Zeitung fuer die Ausbildung im Fachseminar Informatik
http://humbert.in.hagen.de/iffase/
ISSN 1861-0498
Didaktik der Informatik - Lehrbuch
http://humbert.in.hagen.de/ddi/
ISBN 3-8351-0038-6