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 trennen. 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>(<Parameter 1>, <Parameter 2>, ...){
var <Variablenname> = ''mathematischer Ausdruck'';
'''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 Eingabedaten'' aufgerufen werden. Die Berechnungsvorschrift muss nicht jedes Mal neu definiert werden.
* Nach außen ist nur der Funktionsname sichtbar, während die Verarbeitungsvorschrift in der Funktion versteckt bleibt. Die Verarbeitungsvorschrift 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 summe = a + b;
return summe;
}
</code>
<run id="58bc4ea02172c">addiere(5,7);</run>
Erklärung:
# Eine Funktion kann beliebig viele ''Parameter'' besitzen. Die Funktion ''addiere'' besitzt z.B. die Parameter ''a'' und ''b''. Sie repräsentieren die ''Eingabedaten''.
# Bei der Verwendung, d.h. beim ''Aufruf'' der Funktion müssen für die Parameter konkrete Werte eingesetzt werden. Im oberen Beispiel wird für Parameter ''a'' der Wert ''5'' und für Parameter ''b'' der Wert ''7'' eingesetzt.
# In der Funktion wird mit den Werten eine Berechnung durchgeführt (z.B. 5+7). Das Ergebnis wird mit ''return'' an den Aufrufer der Funktion zurückgegeben.
Der Name der Funktion, die Namen der Parameter und die Namen der Variablen innerhalb der Funktion können frei gewählt werden.
Ergänzen Sie direkt unter dem Aufruf ''addiere(5,7)'' mindestens drei weitere Aufrufe mit anderen Werten für ''a'' und ''b''!
'''Aufgaben'''
Entwickeln Sie eine Funktion ''bmi'' zur Berechnung des Body-Mass-Index. Die Funktion soll die Parameter ''gewicht'' und ''groesse'' besitzen. Rufen Sie die Funktion mit beispielhaften Eingabedaten '''dreimal''' auf.
Körpergewicht in Kilogramm geteilt durch Körpergröße in Metern zum Quadrat
$\frac{gewicht}{groesse^2}$
<code id="58bc4ea021638">
function bmi(gewicht, groesse){
var bmi_wert = gewicht / (groesse*groesse);
return bmi_wert;
}
</code>
<run id="58bc4ea02179c">
bmi(60,1.69)
bmi(75,1.65)
bmi(90,1.72)
</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>