functions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
functions [2017/06/28 11:40] – [Perl] gg | functions [2017/07/05 11:15] (current) – [Übungen] gg | ||
---|---|---|---|
Line 5: | Line 5: | ||
Funktionen sind ein wichtiger Bestandteil, | Funktionen sind ein wichtiger Bestandteil, | ||
- | Je nach Programmiersprache spricht man von Methode, | + | Je nach Programmiersprache spricht man von Funktion, |
Funktionen sollte man so kurz wie möglich halten, dafür mehr davon. Das steigert die Lesbarkeit eines Codes enorm. \\ | Funktionen sollte man so kurz wie möglich halten, dafür mehr davon. Das steigert die Lesbarkeit eines Codes enorm. \\ | ||
Line 11: | Line 11: | ||
Funktionen können **iterativ** oder **rekursiv** sein. Rekursionen sind recht elegant, für Anfänger aber oft schwer zu verstehen. Eine rekursive Funktion ruft sich selbst mit veränderten Parametern auf. \\ | Funktionen können **iterativ** oder **rekursiv** sein. Rekursionen sind recht elegant, für Anfänger aber oft schwer zu verstehen. Eine rekursive Funktion ruft sich selbst mit veränderten Parametern auf. \\ | ||
- | In den folgenden Beispielen wird die Fakultät einer Zahl berechen. Einmal iterativ und einmal rekursiv. | + | ===== Beispiele ===== |
- | ===== Bash ===== | + | In den **folgenden Beispielen** wird die **Fakultät** einer Zahl berechnet. Einmal iterativ und einmal rekursiv. Die Fakultät einer Zahl ist äusserst einfach erklärt. Die Fakultät von 1 ist 1, die Fakultät von 2 ist 2*1, die Fakultät von 3 ist 3*2*1 und so weiter. Die Fakultät wird in der Mathematik auch mit einem ! gekennzeichnet. 4! = 4*3*2*1. Einfach, oder? |
+ | ==== Bash ==== | ||
+ | === Code === | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Line 20: | Line 22: | ||
# Definieren der iterativen Funktion | # Definieren der iterativen Funktion | ||
function factorial_iterativ { | function factorial_iterativ { | ||
- | # parameter | + | # Parameter |
local n=$1 | local n=$1 | ||
- | # ergebnis variable | + | # Ergebnis Variable |
local result=1 | local result=1 | ||
- | # die iterative | + | # die iterative |
while [ $n -gt 1 ]; do | while [ $n -gt 1 ]; do | ||
result=$(($result * $n)) | result=$(($result * $n)) | ||
Line 31: | Line 33: | ||
done | done | ||
- | # das ergebnis | + | # das Ergebnis |
echo $result | echo $result | ||
} | } | ||
Line 37: | Line 39: | ||
# und das ist die rekursive Variante | # und das ist die rekursive Variante | ||
function factorial_recursive { | function factorial_recursive { | ||
- | # parameter | + | # Parameter |
local n=$1 | local n=$1 | ||
- | # nächsten | + | # nächsten |
local m=$(($n - 1)) | local m=$(($n - 1)) | ||
| | ||
Line 65: | Line 67: | ||
echo "Die Fakultät von $num ist $ret2" | echo "Die Fakultät von $num ist $ret2" | ||
</ | </ | ||
- | ===== C++ ===== | + | |
+ | === Ausführen === | ||
+ | <code bash> | ||
+ | chmod +x factorial.sh # als ausführbar markieren | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | ==== C++ ==== | ||
+ | === Code === | ||
<code cpp> | <code cpp> | ||
#include < | #include < | ||
Line 115: | Line 125: | ||
} | } | ||
</ | </ | ||
- | ===== C# ===== | + | |
- | < | + | === Kompilieren und Ausführen === |
+ | Die Datei factorial.cpp mit dem obigen Code erstellen | ||
+ | <code bash> | ||
+ | g++ -Wall -g -std=c++14 factorial.cpp -o factorial # kompilieren | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | ==== C# ==== | ||
+ | === Code === | ||
+ | < | ||
using System; | using System; | ||
Line 135: | Line 154: | ||
return 1; | return 1; | ||
} else if (n == 2) { | } else if (n == 2) { | ||
- | return | + | return |
} else { | } else { | ||
return n * Factorial_Recursive(n-1); | return n * Factorial_Recursive(n-1); | ||
Line 153: | Line 172: | ||
} | } | ||
</ | </ | ||
- | ===== golang ===== | ||
+ | ==== golang ==== | ||
+ | === Code === | ||
<code go> | <code go> | ||
package main | package main | ||
Line 175: | Line 195: | ||
return 1; | return 1; | ||
} else if (n == 2) { | } else if (n == 2) { | ||
- | return | + | return |
} else { | } else { | ||
return n * factorial_recursive(n-1) | return n * factorial_recursive(n-1) | ||
Line 189: | Line 209: | ||
} | } | ||
</ | </ | ||
- | ===== Java ===== | + | |
+ | === Kompilieren und Ausführen === | ||
+ | Die Datei factorial.go erstellen und so kompilieren und ausführen: | ||
+ | <code bash> | ||
+ | go build factorial.go # kompilieren | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | oder den [[https:// | ||
+ | |||
+ | ==== Java ==== | ||
+ | === Code === | ||
<code java> | <code java> | ||
public class Factorial { | public class Factorial { | ||
Line 207: | Line 238: | ||
return 1; | return 1; | ||
} else if (n == 2) { | } else if (n == 2) { | ||
- | return | + | return |
} else { | } else { | ||
return n * factorial_recursive(n-1); | return n * factorial_recursive(n-1); | ||
Line 225: | Line 256: | ||
} | } | ||
</ | </ | ||
- | ===== JavaScript ===== | ||
+ | === Kompilieren und ausführen === | ||
+ | Die Datei Factorial.java mit obigen Inhalt erstellen und so zum Laufen bringen: | ||
+ | <code bash> | ||
+ | javac Factorial.java | ||
+ | java Factorial | ||
+ | </ | ||
+ | |||
+ | ==== JavaScript ==== | ||
+ | === Code === | ||
<code javascript> | <code javascript> | ||
< | < | ||
Line 248: | Line 287: | ||
return 1; | return 1; | ||
} else if (n == 2) { | } else if (n == 2) { | ||
- | return | + | return |
} else { | } else { | ||
return n * factorial_recursive(n-1); | return n * factorial_recursive(n-1); | ||
Line 266: | Line 305: | ||
</ | </ | ||
- | ===== Perl ===== | + | === Ausführen |
+ | Den obigen Code in die Datei factorial.html kopieren und im Browser öffnen | ||
+ | ==== Perl ==== | ||
+ | === Code === | ||
<code perl> | <code perl> | ||
# | # | ||
Line 290: | Line 332: | ||
return 1; | return 1; | ||
} elsif ($n == 2) { | } elsif ($n == 2) { | ||
- | return | + | return |
} else { | } else { | ||
return $n * Factorial_Recursive($n - 1); | return $n * Factorial_Recursive($n - 1); | ||
Line 304: | Line 346: | ||
print "Die Fakultät von $num ist $res2\n"; | print "Die Fakultät von $num ist $res2\n"; | ||
</ | </ | ||
- | ===== PHP ===== | + | |
- | ===== Python ===== | + | === Ausführen === |
+ | Die Datei factorial.pl mit dem gezeigten Quelltext erstellen und wie folgt ausführen: | ||
+ | <code bash> | ||
+ | perl factorial.pl | ||
+ | </ | ||
+ | |||
+ | ==== PHP ==== | ||
+ | === Code === | ||
+ | <code php> | ||
+ | <?php | ||
+ | function factorial_iterative($n) { | ||
+ | $result | ||
+ | |||
+ | while($n > 1) { | ||
+ | $result *= $n; | ||
+ | $n--; | ||
+ | } | ||
+ | |||
+ | return $result; | ||
+ | } | ||
+ | function factorial_recursive($n) { | ||
+ | if($n < 2) { | ||
+ | return 1; | ||
+ | } else if ($n == 2) { | ||
+ | return $n; | ||
+ | } else { | ||
+ | return $n * factorial_recursive($n - 1); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | $num = 5; | ||
+ | |||
+ | $res1 = factorial_iterative($num); | ||
+ | $res2 = factorial_recursive($num); | ||
+ | |||
+ | echo "Die Fakultät von $num ist $res1\n"; | ||
+ | echo "Die Fakultät von $num ist $res2\n"; | ||
+ | </ | ||
+ | |||
+ | === Ausführen === | ||
+ | Die Datei factorial.php mit dem gezeigten Code füllen und auf folgende Weise ausführen | ||
+ | <code bash> | ||
+ | php factorial.php | ||
+ | </ | ||
+ | |||
+ | ==== Python ==== | ||
+ | === Code === | ||
+ | <code python> | ||
+ | # | ||
+ | |||
+ | def factorial_iterative(n): | ||
+ | result = 1 | ||
+ | |||
+ | while(n > 1): | ||
+ | result *= n | ||
+ | n = n - 1 | ||
+ | |||
+ | return result | ||
+ | |||
+ | def factorial_recursive(n): | ||
+ | if(n < 2): | ||
+ | return 1 | ||
+ | elif (n == 2): | ||
+ | return n | ||
+ | else: | ||
+ | return n * factorial_recursive(n-1) | ||
+ | |||
+ | num = 5 | ||
+ | |||
+ | res1 = factorial_iterative(num) | ||
+ | res2 = factorial_recursive(num) | ||
+ | |||
+ | print(" | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | === Ausführen === | ||
+ | Die Datei factorial.py mit dem gezeigten Inhalt erstellen und wie folgt ausführen: | ||
+ | <code bash> | ||
+ | python3 factorial.py | ||
+ | </ | ||
+ | |||
+ | ===== Übungen ===== | ||
+ | * Schreibe eine Funktion, die zwei Zahlen multipliziert und das Ergebnis zurück gibt | ||
+ | * Schreibe eine Funktion, die prüft, ob eine Zahl gerade oder ungerade ist. Das Ergebnis soll true oder false sein | ||
+ | * Schreibe eine Funktion, die prüft, ob eine Zahl ohne Rest durch drei dividierbar ist | ||
+ | * Schreibe eine Funktion, die prüft, ob ein Datum korrekt ist | ||
+ | * Schreibe eine Funktion, die eine Datei (Parameter ist der Pfad der Datei) ausliest und ausgibt |
functions.1498642805.txt.gz · Last modified: 2017/06/28 11:40 by gg