lehrkraefte:blc:informatik:ffprg2-2020:esp32-functions

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.

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

Lesen Sie eine Zahl vom seriellen Port ein und geben Sie die Teiler dieser Zahl aus, bzw. deren Primfaktorenzerlegung.

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.

  • lehrkraefte/blc/informatik/ffprg2-2020/esp32-functions.txt
  • Last modified: 2020/08/21 09:47
  • by Ivo Blöchliger