Funktionale Programmierung < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Aufgabe | Geben Sie Beispiele für die funktionale Teilmenge einer imperativen Sprache. Welche Vor- und Nachteile hat diese Methode? |
Hallo,
das ist eine Hausaufgabe aus der Schule. Ich habe erstens keine Ahnung wie ich in einer imperativen Programmiersprache funktional programmieren kann und finde zweitens dazu überhaupt nichts im Internet oder sonst wo....Könnte mir da jemand helfen diese Frage zu beantworten? Ich weiß was imperative Programmierung ist und was funktionale Programmierung ist, wobei ich allerdings noch nie funktional programmiert habe.
Danke im voraus!
Grüße
|
|
|
|
Hi!
Leider kann ich Dir auch keine wirklich passende Antwort geben, da die Frage etwas komisch formuliert ist.
Aber vielleicht bringt dich folgendes auf die richtige Idee: (Ihr müsst ja irgendwas in der Richtung im Unterricht dazu gemacht haben)
Der große Vorteil von funktionalen Sprachen ist ja gerade der, dass diese Seiteneffekte ausschließen.Imperative Programmiersprachen sind gerade sehr gut dazu geeignet, Seiteneffekte hervorzurufen.
Beispiel:
(Ich hoffe Du kennst Klassen, ich versuche es mal in einer Java ähnliche Syntaxt):
pulic class Foo {
public int zahl;
public Foo(int pZahl) { zahl = pZahl; }
//soll "pZahl" um 1 erhöhen
public int inc(int pZahl) {
zahl = pZahl + 1;
return zahl;
}
}
//Aufruf:
Foo f = new Foo(10);
System.out.println("f.zahl = " + f.zahl); //Hier wird 10 ausgegeben
System.out.println("15+1= " f.inc(15));
System.out.println("f.zahl = " + f.zahl); // Hier wird 16 ausgegeben
Die letzt Ausgabe ist dabei unerwünscht, da man vorher in zahl ja gerade 10 gespeichert hatte! Also tritt als Seiteneffekt von inc() das Ändern von zahl auf. In funktionalen Programmiersprachen wird das von vornherein ausgeschlossen und das ist halt der große Vorteil.
Typischerweise gibt es in funktionalen Sprachen keine Schleifen wie for/while, sondern man muss vollständig mit Rekursion auskommen. Diese Teile findest Du auch in imperativen Sprachen.
Ich würde damit z.B. anfangen:
Rekursion kommt z.B. immer ohne einen Schleifenzähler aus und gehört somit bedingt zu den imperativen und den funktionalen Sprachen.
Dazu zählen häufig auch rekursive Datenstrukturen wie Listen oder Bäume - halt alles was sich gut rekursiv programmieren lässt.
Vielleicht findet sich da noch mehr, oder ich habe die Frage falsch verstanden, aber das fiel mir nun spontan dazu ein ;)
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:32 Mi 01.02.2012 | Autor: | rainerS |
> Geben Sie Beispiele für die funktionale Teilmenge einer
> imperativen Sprache. Welche Vor- und Nachteile hat diese
> Methode?
> Hallo,
>
> das ist eine Hausaufgabe aus der Schule. Ich habe erstens
> keine Ahnung wie ich in einer imperativen
> Programmiersprache funktional programmieren kann und finde
> zweitens dazu überhaupt nichts im Internet oder sonst
> wo....Könnte mir da jemand helfen diese Frage zu
> beantworten? Ich weiß was imperative Programmierung ist
> und was funktionale Programmierung ist, wobei ich
> allerdings noch nie funktional programmiert habe.
Du hast doch in den meisten imperativen Programmiersprachen Funktionen ohne Seiteneffekte, zum Beispiel
sqrt(x)
um die Wurzel des Wertes in der Variablen x zu berechnen. Solche Funktionsaufrufe und Kombinationen davon sind rein funktionale Konstrukte: es wird ein Wert an die Funktion sqrt übergeben, und ein Wert kommt zurück, ohne Seiteneffekte (solange der Wert vbon x nicht kleiner 0 ist).
Allgemein sind viele arithmetische Ausdrücke solche funktionalen Konstrukte, z.B.
1 / sqrt(2*pi) * exp (- x^2 )
Diese arithmetischen Ausdrücke bilden also eine solche gesuchte funktionale Teilmenge.
Die Frage nach den Vor- und Nachteilen dieser METHODE verstehe ich nicht recht, weil mir nicht klar ist, was hier mit der Methode gemeint ist.
Aber vielleicht hilft dir dies: mit den oben genannten funktionalen Ausdrücken kannst du zwar Werte berechnen, aber nichts mit ihnen anfangen. Um einen Wert zu verwenden, musst du ihn einer Variablen zuweisen oder ihn ausgeben; beides sind Dinge, die nicht in der funktionalen Teilmenge enthalten sind.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:37 Mi 01.02.2012 | Autor: | judithlein |
Danke Danke! Das hat mir schon viel geholfen!
|
|
|
|