Funktionen in C++
Der Syntax ist wie folgt:
typenbezeichnung namederfunktion(typ1 varname1, typ2 varname2, ...) { // Code return Wert; }
Soll die Funktion keinen Wert zurückgeben, ist der Typ der Funktion void
. Ein solche Funktion kann durch ein einfaches return;
beendet werden.
Es kann mehrere Funktionen mit gleichem Namen geben, wenn sich die Art und/oder Reihenfolge der Typen der Argumente unterscheiden. Z.B.
int quadrat(int x) { return x*x; } float quadrat(float x) { return x*x; } int b = quadrat(42); // Aufruf der ersten Funktion, weil 42 ist ein int. float c = quadrat(42.0); // Aufruf der zweiten Funktion, weil 42.0 ist ein float.
Lesen vom Seriellen Port
Siehe https://www.arduino.cc/reference/en/language/functions/communication/serial/ für eine komplette Dokumentation.
void loop() { Serial.println("Bitte eine Zahl eingeben:"); long eingabe = Serial.parseInt(); Serial.printf("Es wurde %l eingelesen.\n", eingabe); // tu was mit eingabe... }
Aufgaben
Teiler oder Primfaktorenzerlegung ausgeben
Lesen Sie eine Zahl vom seriellen Port ein und geben Sie die Teiler dieser Zahl aus, bzw. deren Primfaktorenzerlegung.
Mandelbrotmenge als ASCII-Art
Erzeugen Sie ein Bild der Mandelbrotmenge als ASCII-Art. Kann wie folgt berechnet werden:
Sei $f: \mathbb{C} \mapsto \mathbb{C}$ mit $f(x) = x^2+c$ wobei $c$ dem Punkte (d.h. komplexer Zahl) entspricht, deren “Farbe” berechnet werden möchte.
Sei die Folge $x_1 = c$, $x_{n} = f(x_{n-1})$. Die Farbe ist die Anzahl $n$ an Iterationen, die nötig ist, bis $|x|>2$ (dann ist die Divergenz garantiert). Wenn bis zu einer vorher festgelegten Anzahl $N$ $|x_N|<2$ wird abgebrochen und die Farbe ist N.
Der spannende Bereich ist im Rechteck $(-2-1.5i)$ bis (1.5+1.5i).
Wir könnten damit später auch ein kleines Display ansteuern und die Mandelbrotmenge dort darstellen.