i

Modellierung für die Funktionale Programmierung

Modellieren in der funktionalen Programmierung?

Hier gehen wir der Frage nach, was eine Funktion ist und wie wir diese modellhaft einfach darstellen können. Je nach Vorerfahrung kann es sein, dass dir dieses Kapitel bekannt und ganz einfach vorkommt. Um so besser! Wenn dir die Funktionsmodellierung leichtfällt, dann hast du bereits eine gute Voraussetzungen für die funktionale Programmierung.

Du wirst sehen, dass wir mit sehr einfachen Modellierungstools, bereits sehr viele Informationen erarbeiten können, die uns die Programmierung stark vereinfachen.

Was ist eine Funktion?

Der zentrale Baustein eines funktionalen Programmes ist, wie der Name schon sagt, die Funktion. Ein funktionales Programm besteht am Ende aus beliebig vielen, geschickt miteinander kombinierten, Funktionen, weswegen wir beim Modellieren des Programmes auch in Funktionen denken müssen. Bevor wir das können müssen wir uns also ersteinmal die Frage stellen: "Was ist eigentlich eine Funktion?"

Funktionen kennst du zum einen bereits aus der Mathematik:
z.B. eine Funktion die den Flächeninhalt eines Quaders berechnet:
$f(x\ y) = x * y$
Oder eine Funktion die den Abstand zweier Punkte berechnet:
$f((x_1|y_1), (x_2|y_2)) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}$

Wahrscheinlich kennst du aber auch schon Funktionen aus anderen Programmiersprachen wie Python oder Java:

#Funktion zur Flaeacheninhaltsberechnung in Python
def flaecheninhalt(laenge, breite):
    flaecheninhalt = laenge*breite
    return flaecheninhalt
    
//Funktion zur Flaeacheninhaltsberechnung in Java
public float flaecheninhalt(float laenge, float breite){
    float flaecheninhalt = laenge*breite;
    return flaecheninhalt;
}        
Funktionen tauchen aber auch in anderen Kontexten auf. So haben beispielsweise Organe eine Funktion im Körper, oder Arbeiter übernehmen eine Funktion in der Firma. Hierbei liegt der Fokus auf dem erreichten Ergebnis.
Mathematisch versteht man eine Funktion als eine Zuordnung zwischen zwei Mengen, die Elementen einer Menge ein Element aus einer Zielmenge zuordnet.
Auch in der Informatik beschäftigen wir uns hier nicht nur mit der Frage was erzielt werden soll, sondern auch was wir davor haben. Wir orientieren uns daher also eher an der mathematischen Definition der Mengen.

Eine Funktion ordnet Eingabedaten Ausgabedaten zu.

Evtl. sind dir auch BlackBox-Diagramme ein Begriff, die uns genau diese Informationen liefern, nämlich die Information darüber welche Ein- und Ausgaben Funktionen haben. Testbild

Mit BlackBox-Diagrammen lassen sich daher wunderbar Funktionen modellieren.

Ein- und Ausgabedaten von Funktionen (Übungsaufgabe)

Entwerfe ein BlackBox-Diagramm zu folgenden Punkten.

  1. Die Addition zweier Zahlen
  2. Die Addition dreier Zahlen
  3. Die mathematische Funktion: $f(x) = x^2$
  4. Sind zwei Zahlen gleich?
  5. Erhalte einen Namen und geben "Hallo <Name>" zurück.
  6. Eine Funktion die ein Wort 4-Mal aneinanderreiht
  7. Die Berechnung des Noten-Mittelwerts einer Klassenarbeit
  8. Erhalte die Platzierung eines Teams in der Fußballbundesliga.
  9. Eine Funktion die ein Wort x-mal aneinanderreiht, wobei x der aktuellen Platzierung des Vfb Stuttgarts in der Fußballbundesliga entspricht.
Wir werden noch sehen, dass uns die Analyse der Ein- und Ausgabedaten bereits sehr sehr viel über den Aufbau und damit auch die Programmierung einer Funktion verrät.

Datentypen

Du wirst sicher festgestellt haben, dass sich verschiedene Blackbox-Diagramme für die gleiche Funktion anfertigen lassen. Zum Beispiel für die Addition. Testbild

Hier kommt Abstraktion ins Spiel. (Zur Einführung eignet sich hier die mathematischen Mengen)

Problem: Die zu verwendende / daher zu modellierende Datentypen -> sind programmiersprachen-abhängig. Evtl. müssten hier also schon die genannten Datentypen auftauchen. -> Hier Unterscheidung von Vorwissen (typisiert ja/nein) Macht es also Sinn hier Float z.B. zu nennen? (Nein machen wir in RacketKapitel) -> Verwendete Racket-Version ist nicht typisiert. Gibt nur Signaturverletzungen.

Entwerfe für die Aufgaben je ein BlackBox-Diagramm und verwende zu Beschreibung der Ein- und Ausgaben die eingeführten Datentypen.

  1. Die Addition zweier Zahlen
  2. Eine Funktion die ein Wort x-Mal aneinanderreiht

Unterschied der Berechnung Notendurchschnitt und Notenpunktedurchschnitt

Einige der Diagramme enthalten bereits weitere Informationen. Nämlich tatsächliche Ein- und Ausgaben, die in dieser Form in der Funktion vorkommen könnten. Testbild

Wir überlegen uns zur Modellierung einer Funktion also mindestens zwei Diagramme. Eines mit den entsprechenden Datentypen und eines mit einer beispielhaften Ein- und Ausgabe. Also z.B.: Testbild

Suche

v
100.137.1.1
https://inf-schule.de/entwuerfe/racket/einfuehrung/modellierung_funktional
https://inf-schule.de/100.137.1.1
https://inf-schule.de/@/page/DgqXqyPWSMIsP9Sp

Rückmeldung geben