Brückenkurs Websites und Webapps/Funktionen
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Javascript</language>
Wir wollen die Trennung von Daten und Programmen noch ein wenig weiter vorantreiben. Dazu müssen wir die Verarbeitungsvorschrift, also das eigentliche Programm, noch mehr von den Daten abkapseln. Wir packen sie einfach in eine ''Funktion''. Eine Funktion ist eine in sich geschlossene Menge von Programmanweisungen. Im Folgenden wollen wir uns an dieses Muster halten:
'''Funktionsdeklaration:'''
function <Funktionsname>(<Parametername 1>, <Parametername 2>, ...){
var <Variablenname> = ''Berechnungsvorschrift zur Verarbeitung der Parameter'';
'''return''' <Variablenname>;
}
'''Funktionsaufruf:'''
<Funktionsname>(<Wert für Parameter 1>, <Wert für Parameter 2>, ...);
'''Vorteile von Funktionen:'''
* Einmal programmiert, können Funktionen an beliebigen Stellen beliebig oft mit verschiedenen Werten aufgerufen werden. Die Berechnungsvorschrift muss nicht jedes Mal neu definiert werden.
* Nach außen ist nur der Funktionsname sichtbar, während die Berechnungsvorschrift in der Funktion versteckt bleibt. Die Berechnungsvorschrift kann also nachträglich erweitert oder verbessert werden, ohne dass dies bei der Verwendung, d.h. beim Aufruf der Funktion bemerkt wird.
Beispiel:
<code id="58bc4ea0215ad">
function addiere(a, b){
var ergebnis = a + b;
return ergebnis;
}
</code>
<run id="58bc4ea02172c">addiere(5,7);</run>
Der Aufbau der Funktion weist einige Ähnlichkeiten zu unserer Vorgehensweise im Arbeitsblatt "Variablen" auf, denn bei der Berechnung des mathematischen Ausdrucks werden keine konkreten Zahlen, sondern Variablen eingesetzt. In unserem Fall heißen die Variablen ''Parameter'', da ihre Werte von außen (d.h. beim Funktionsaufruf) an die Funktion übergeben werden.
Mit der Anweisung '''return''' wird das berechnete Ergebnis an den Aufrufer der Funktion zurückgegeben. Eine Funktion gehorcht also dem Prinzip ''Eingabe, Verarbeitung und Ausgabe'', welches bei allen Programmen anzutreffen ist: In der Funktion "addiere" entspricht Zeile 1 der ''Eingabe'', Zeile 3 der ''Verarbeitung'' und Zeile 5 der ''Ausgabe''.
Die Namen der Funktion, der Parameter und der Ergebnisvariable können von uns beliebig gewählt werden.
'''Aufgaben'''
Entwickeln Sie eine Funktion zur Berechnung des Body-Mass-Index in der ersten Code-Box. Wandeln Sie die Variablen für Körpergewicht und Körpergröße in Eingabeparameter um. Rufen Sie die Funktion in der zweiten Code-Box mit beispielhaften Eingabedaten auf.
Körpergewicht in Kilogramm geteilt durch Körpergröße in Metern zum Quadrat
$\frac{Gewicht}{Größe^2}$
<code id="58bc4ea021638">
function bmi(gewicht, groesse){
var ergebnis = gewicht / (groesse*groesse);
return ergebnis;
}
</code>
<run id="58bc4ea02179c">
bmi(60,1.69)
</run>
Entwickeln Sie Funktionen für die restlichen Berechnungen aus dem Arbeitsblatt "Variablen" (Teil 2). Wandeln Sie die verwendeten Variablen in Eingabeparameter um. Rufen Sie die Funktionen jeweils in der zweiten Code-Box mit beispielhaften Eingabedaten auf.
Beispiel (Werte, für die Parameter benötigt werden, stehen in Klammern):
$7^5$ (7)
<code id="58bc4ea0216a6">
function calc1(v){
var result = Math.pow(v,5);
return result;
}
</code>
<run id="58bc4ea021805">
calc1(7);
</run>
$3+4$ (3)
<code id="58bc6d00b609c"></code>
<run id="58bc6d00b641f"></run>
$3+4$ (3, 4)
<code id="58bc6d00b6127"></code>
<run id="58bc6d00b64b1"></run>
$8-(5+7)^5$ (5, 7)
<code id="58bc6d00b61a7"></code>
<run id="58bc6d00b6530"></run>
$8-\sqrt{5+7}^5$ (8,5,7)
<code id="58bc6d00b6230"></code>
<run id="58bc6d00b65ae"></run>
$tan(10)$ (10)
<code id="58bc6d00b62a4"></code>
<run id="58bc6d00b6655"></run>
Das Maximum zwischen 50 und 100 (50, 100)
<code id="58bc6d00b6317"></code>
<run id="58bc6d00b66d1"></run>
Entwickeln Sie eine Funktion zur Berechnung des Kreisumfangs. Verwenden Sie den Radius $r$ als Parameter.
<code id="58bc6d00b6389"></code>
<run id="58bc6d00b6744"></run>
'''Zusatzaufgabe'''
Mit der ''Formel von Heron'' kann der Flächeninhalt $A$ eines Dreiecks berechnet werden, wenn die Seitenlängen $a$, $b$ und $c$ bekannt sind. Die Formel lautet $A=\sqrt{s*(s-a)*(s-b)*(s-c)}$, wobei gilt: $s=\frac{a+b+c}{2}$. Entwickeln Sie eine Funktion zur Berechnung des Flächeninhaltes nach dieser Formel. Die Funktion soll die drei Seitenlängen als Parameter entgegennehmen.
Berechnen Sie in der Funktion zunächst den Wert der Variable $s$!
<code id="58bc73cbe4913"></code>
<run id="58bc73cbe49d2"></run>
'''Zusatzaufgabe'''
Entwickeln Sie zwei Funktionen: eine, die Euro (EUR) in Zloty (PLN) umrechnet und eine, die umgekehrt arbeitet.
Wechselkurs: 1 EUR = 4,3066 PLN
<code id="58bc746c8fd1b"></code>
<code id="58bc746c8fdae"></code>
<run id="58bc746c8fe54"></run>