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:22] – [Java] 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 ===== | + | |
| - | ===== Perl ===== | + | === Kompilieren und ausführen === |
| - | ===== PHP ===== | + | Die Datei Factorial.java mit obigen Inhalt erstellen und so zum Laufen bringen: |
| - | ===== Python ===== | + | <code bash> |
| + | javac Factorial.java | ||
| + | java Factorial | ||
| + | </ | ||
| + | |||
| + | ==== JavaScript ==== | ||
| + | === Code === | ||
| + | <code javascript> | ||
| + | < | ||
| + | <!-- HTML Grundstruktur --> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | // Variable anlegen | ||
| + | var factorial_iterative | ||
| + | result = 1; | ||
| + | |||
| + | while (n > 1) { | ||
| + | result *= n; | ||
| + | n--; | ||
| + | } | ||
| + | |||
| + | return result; | ||
| + | } | ||
| + | var factorial_recursive = function(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_iterative(num); | ||
| + | |||
| + | alert(" | ||
| + | alert(" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === Ausführen === | ||
| + | Den obigen Code in die Datei factorial.html kopieren und im Browser öffnen | ||
| + | |||
| + | ==== Perl ==== | ||
| + | === Code === | ||
| + | <code perl> | ||
| + | # | ||
| + | |||
| + | sub Factorial_Iterative { | ||
| + | my $n = shift; | ||
| + | |||
| + | $result = 1; | ||
| + | |||
| + | while ($n > 1) { | ||
| + | $result *= $n; | ||
| + | $n = $n - 1; | ||
| + | } | ||
| + | |||
| + | return $result; | ||
| + | } | ||
| + | |||
| + | sub Factorial_Recursive { | ||
| + | my $n = shift; | ||
| + | |||
| + | if ($n < 2) { | ||
| + | return 1; | ||
| + | } elsif ($n == 2) { | ||
| + | return $n; | ||
| + | } else { | ||
| + | return $n * Factorial_Recursive($n - 1); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | my $num = 5; | ||
| + | |||
| + | my $res1 = Factorial_Iterative($num); | ||
| + | my $res2 = Factorial_Recursive($num); | ||
| + | |||
| + | print "Die Fakultät von $num ist $res1\n"; | ||
| + | print "Die Fakultät von $num ist $res2\n"; | ||
| + | </ | ||
| + | |||
| + | === 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.1498641733.txt.gz · Last modified: 2017/06/28 11:22 by gg
