[[algorithmen:algolektion05|Das Sieb des Eratosthenes]]
====== Vordefinierte Funktionen ======
PHP kennt zahlreiche vordefinierte **Funktionen**:
* sqrt(4) -> gibt 2 zurück
* is_numeric(4) -> gibt TRUE zurück
* is_numeric("frank") -> gibt false zurück
Eine Funktion zeichnet sich meist dadurch aus, dass Sie ein oder mehrere Argumente entgegennimmt und einen Rückgabewert besitzt.
Damit man Abläufe, die man in einem Programm häufig benötigt nicht mehrmals in einem Programm einbauen muss, kann man eigene Funktionen definieren.
====== Eigene Funktionen ======
Eine **Funktion** besteht aus einem **Funktionskopf** und einem **Funktionsrumpf**. Der Funktionskopf seinerseits besteht aus dem Schlüsselwort ''function'', welches dem Interpreter sagt, dass eine Funtionsdefinition beginnt.
Dann folgt der frei wählbare **Name der Funktion**. Gültige Funktionsnamen müssen mit einem Unterstrich "_" (underscore) oder einem Buchstaben beginnen, danach können weitere Buchstaben, Ziffern oder der Unterstrich in beliebiger Reihenfolge kommen.
Nach dem Namen folgt zwischen einem runden Klammernpaar eine mittels Kommata separierte **Parameterliste**, d.h. die Werte und Variablen, die an den Funktionsrumpf übergeben werden.
=== Beispiel ===
function fakultaet($zahl) {
$fak = 1;
for($i=1; $i<=$zahl; $i++) {
$fak = $fak * $i;
}
return $fak;
}
Dieses Beispiel definiert eine Funktion mit dem Namen ''fakultaet'', die beim Aufruf einen Parameter (''$zahl'') erwartet. Dieser wird im Funktionsrumpf verwendet, um die Fakultät der an die Funktion übergebenen Zahl zu berechnen.
Der Funktionskopf bestimmt, wie die Funktion aufgerufen wird, nämlich ähnlich wie in der Funktionsdefinition aber ohne das Schlüsselwort ''function''.
Im Beispiel also
$ergebnis = fakultaet(5);
Im Funktionsrumpf befindet sich der Code, der beim Aufruf der Funktion ausgeführt wird - und nur dann. Man kann also alle Funktionen am Beginn des PHP-Skripts definieren und unter den Funktionsdefinitionen das eigentliche Programm beginnen - der Programmcode in den Funktionskörpern wird erst ausgeführt, wenn die betreffende Funktion aufgerufen wird.
Eine Funktion kann (und sollte) einen Wert zurückgeben. Dies geschieht durch den ''return'' Befehl: Durch die Anweisung
return $argument;
wird die Ausführung der Funktion an dieser Stelle beendet und das Program springt zurück zu der Stelle, von der die Funktion aufgerufen wurde. Der Wert von ''$argument'' wird dabei an die aufrufende Stelle übergeben und kann dort gespeichert, ausgegeben oder weiterverarbeitet werden.
===== Übung 1 =====
{{:htmlcss:work_64.png |}} Schreibe ein php-Programm, das in einem Formular eine Zahl **X** entgegennimmt und für alle natürlichen Zahlen kleiner als **X** jeweils die Fakultät berechnet und ausgibt. Verwende zur Berechnung der Fakultät eine Funktion wie die obige.
===== Arrays als Argument =====
Man kann als Argument auch ein Array an eine Funktion übergeben, also z.B. so:
$liste = array(10,21,13,19,1,23,2,4);
$sortiert = myselectionsort($liste);
Hier wird ein Array an die Funktion ''myselectionsort'' übergeben, als Ergebnis sollte ein sortiertes Array zurückgegeben werden.
===== Übung 2 =====
{{:htmlcss:work_64.png |}} 1. Kopiere dein Selection-Sort Programm und schreibe es so um, dass der Sortiervorgang in einer Funktion ausgelagert ist.
2. Ergänze deine Funktion um einen zweiten Parameter, mit dem du beim Aufruf der Funktion bestimmen kannst, ob das Array aufsteigend oder absteigend sortiert werden soll.
function myselectionsort($unsortiert, $richtung) {
[...]
}
[...]
$aufsteigend_sortiert = myselectionsort($unsortiert, "ASC");
$absteigend_sortiert = myselectionsort($unsortiert, "DESC");
[...]
[[algorithmen:funktionen01|Vordefinierte Funktionen]]