Funktionale Programmierung mit Java 3

Inzwischen bin ich zum normalen Rechnen und weg von den Strings gegangen. Nur so machen die bereits bekannten Datenflussdiagramme, die die Schüler bereits in Excel umgesetzt haben Sinn.

Aber wie weit treibe ich das Spiel? Wiederholungen lasse ich weg, Variablen. Aber was ist mit der if-Abfrage bzw. der Wenn-Funktion in Excel. Wie kann ich im Unterricht umsetzen?

Ein erster Ansatz sähe beispielsweise so aus:

class Rechner {
    public void main() {
        System.out.println(summe(2.0,3.5));
    }

    public double wenn(boolean bedingung, double zahl1, double zahl2) {
        return bedingung ? zahl1 : zahl2;
    }

    public double summe(double zahl1, double zahl2) {
        return zahl1 + zahl2;
    }
    //------------------------------------------
    //Umsetzen der Grundrechenarten durch Schüler
    //------------------------------------------
    public double differenz(double zahl1, double zahl2) {
        return zahl1 - zahl2;
    }

    public double quotient(double zahl1, double zahl2) {
        return zahl1/wenn(zahl2==0,1,zahl2);
    }

    public double produkt(double zahl1, double zahl2) {
        return zahl1*zahl2;
    }
}

Problematisch finde ich die Wenn-Funktion. Diese sehr spezielle Umsetzung mit (Bedingung) ? Dann : Sonst mutet doch für einen Anfänger sehr merkwürdig an. Vielleicht unterschätze ich ich die Schüler aber auch und gerade die Schreibweise mit ? kommt ihnen entgegen.

 

Beteilige dich an der Unterhaltung

3 Kommentare

  1. Ich würde ja die Funktionen für die Grundrechenarten, die Wenn-Funktion und Funktionen für logische Operatoren vorgeben – in einer Oberklasse zu der von den Schülern programmierten Klasse, deren Code ich vor ihnen verberge oder nicht. Dann gibt es kein * und kein /, sondern nur mult(a,b) und div(a,b), und wenn(a>b,a,b) – hm, sehe schon, für größer, kleiner, gleich müsste ich die Funktionen auch noch angeben.
    Vielleicht doch zu umständlich.

  2. Die Umsetzung von quotient() scheint mir problematisch.

    quotient(1/0) = 1, wenn ich es richtig verstehe.

    Ich finde das Beispiel zudem etwas “schulisch”. Ich würde etwas nehmen, woran die Vorteile funktionaler Programmierung besser erkennen kann. Vielleicht ein rekursives Problem.

    1. Stimmt! Das Beispiel ist sehr schulisch und wirkt ein wenig konstruiert. Allerdings ist der gesamte Themenkreis sehr verschult und künstlich. Die meisten Probleme sind in der Form: “Erstelle ein Datenflussdiagramm mit dem das Volumen einer Betontreppe mit n Stufen, der Tritttiefe t, der Stufenhöhe h, …. berechnet werden kann.” Warum sollte man das mühsam als Datenflussdiagramm zeichnen, wenn es mit ein paar Klicks auch geht? So die Frage der Schüler.

      Meiner Erfahrung nach ist die einzige sinnvolle Anwendung der funktionalen Programmierung in der Schule die Tatsache, dass die Schüler verstehen, wie die Ergebnisse von Funktionen direkt in andere Funktionen weitergeleitet werde ohne die Ergebnisse zwischen zu speichern. Ansonsten habe ich nicht einen wirklichen Lernvorteil für die Schüler kennengelernt. Wegen mir, könnte man das Thema auch weglassen und gleich mit Java oder einer anderen Hochsprache anfangen.

      Dann noch zum Quotienten quotient(1/0) = 1. Natürlich ist das falsch, aber man muss mit den Schülern über die Problematik reden. Dann verstehen sie sie auch eher.

Schreibe einen Kommentar

Schreibe einen Kommentar zu Marco Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

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