[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