Lehrzeit

Schule & Informatik

Informatikaufgabe 45

Vor kurzem stellte ich meinen Elfklässlern folgende

Aufgabe

Ergänze den folgenden Quellcode so, dass die Klasse fehlerfrei kompiliert wird und fehlerfrei funktioniert. Dabei darf kein Attribut ergänzt werden.

public class MeinStapel {
    private String[] stapel;

    public MeinStapel(int stackHoehe) {

    }

    public String pop() {
        //das Element [0] wird zurückgeliefert

    }

    public boolean push(String neuerText) {
        boolean hatGeklappt = false;

    }
}

Leider hat das nicht so geklappt, wie ich es mir gewünscht habe. Hier mal ein paar typische Fehler, wobei ich immer mal versuche die Fehlvorstellung bei den Schülern darzustellen.

Fehler 1

public MeinStapel(int stackHoehe) {
    stackHoehe = 2; 
}

Bedeutung eines Parameters nicht verstanden; Unterschied global und lokale Variable nicht klar; Aufgabe eines Konstruktors nicht verstanden.

Andere Variante war

public MeinStapel(int stackHoehe) {
    this.stackHoehe = stackHoehe; 
}

Fehler 2

public String pop() {         
    //das Element [0] wird zurückgeliefert
    stapel.setOberster(neuerText);
    stackHoehe = stackHoehe + 1;
}

Bedeutung der Methode pop() nicht klar; Unterschied lokale/globale Variable und Attribut nicht verstanden.

Fehler 3

public String pop() {         
    if (int i =! null, i < stackHoehe) {
        return i;
        break;
    } else {
        i++;
    }
    i=null;
}

Unterschied in der Syntax und in der Bedeutung zwischen for-Wiederholung und if-Ausdruck nicht verstanden; kein abschließendes Return; Gültigkeitsbereich von Variablen nicht verstanden; allgemeine Verständnis-Probleme.

Und das eigentliche Problem für mich besteht nun darin, mir zu überlegen, wie ich mit meinen Schülern weitermachen soll. Ich werde ihnen wohl Wochenaufgaben zu bearbeiten geben und einsammeln. Vielleicht lasse ich auch Referate über die Java-Grundlagen halten.

6 Kommentare

  1. Möglicherweise solltest du überlegen, ob du die Java-Einführung nicht mit BlueJ o.ä. machst. Danach klappen die Punkte, die du ansprichst, eigentlich ziemlich gut.
    Grüße,
    stephan@spamschlucker.org

  2. Danke, dass du ein paar typische Fehler aufgezeigt hast.

    Vielleicht kann man eine andere Datenstruktur verwenden. Letztlich strickst du um ein Array einen Stapel herum. In einer reinen OO-Form, würde ich mehrere Klassen nehmen: Stapel und Stapelelement.

    Ferner ist unklar, ob die Schüler wussten, was ein Stapel ist und welche typischen Operationen es gibt. Das kann man eigentlich ganz gut mit Papierstapeln am konkreten Modell durchführen.

    • Selbstverständlich habe ich mit den Schülern die Standardoperationen besprochen: Ein Stack mit push(newEL), pop() und eine Queue mit enqueue(newEl) und dequeue(). Sie habe auch schon im Unterricht, als benotetes Projekt, mindestens einen Stack und eine Queue mit Hilfe einer einfach verketteten Liste implementieren müssen. Da war die Herausforderung an der Aufgabe, eigentlich weniger die Operationen sondern das Arbeiten mit einem Feld. Das müssten sie aber seit dem letzten Jahr kennen – und zudem hatte ich so angefangen.

      Ablauf zur Einführung des Kompositum-Musters mit Hilfe von Zügen:

      1.) Feste Referenzen, also jedes Zug-Objekt hat ein einzelnes Attribut für jeden Wagen.

      2.) Verbesserung 1: Die Wagen werde mit einem Feld verwaltetet

      3.) Die Wagen werden mit einer Liste verwaltet
      a) Kleider/CD-Stapel implementieren
      b) Wartezimmer oder Essensausgabe implementieren

      4.) Wagenaufsatz und reines Fahrgestell werden getrennt behandelt

      5.) Einführung des Abschluss-Objekts und damit der rekursiven Datenstruktur Kompositum.

      Die Aufgabe war also durchaus machbar.

      Und wegen der Datenstruktur: Normalerweise würde man in Java ein ganz anderen Datentyp nehmen. Z.B. ArrayList oder Stack oder …. Aber sie sollen ja das Kompositum-Muster kennenlernen. Daher mache ich auch immer noch ein besseres/anderes Beispiel: Möbel-Einrichtungsprogramm, wobei sich Möbel gruppieren lassen. Oder das Sonnensystem: Mond dreht sich um Erde, Erde/Mond dreht sich um Sonne, Sonnensystem dreht sich um Milchstraßenmitte.

  3. Heute an der Uni habe ich diese Seite mit den typischen Fehlern als Papier ausgeteilt, zur Diskussion. Stellt sich heraus: Einer der lehramtsstudierenden Teilnehmer hat bei dir Abi gemacht, Jahrgang 2012.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

*

© 2017 Lehrzeit

Theme von Anders NorénHoch ↑