Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:informatik:ffprg2017:l2:l2 [2017/08/24 16:21] Ivo Blöchliger |
lehrkraefte:blc:informatik:ffprg2017:l2:l2 [2017/09/01 07:52] (current) Ivo Blöchliger [LEDs] |
||
---|---|---|---|
Line 29: | Line 29: | ||
==== Schlechte Beispiele ==== | ==== Schlechte Beispiele ==== | ||
Schreiben Sie keinen solchen Code! Der ist nur dazu da, die Mechanik der For-Schlaufe in C++ besser zu verstehen. | Schreiben Sie keinen solchen Code! Der ist nur dazu da, die Mechanik der For-Schlaufe in C++ besser zu verstehen. | ||
- | <code c++ | + | <code c++> |
void setup() { | void setup() { | ||
Serial.begin(115200); | Serial.begin(115200); | ||
Line 35: | Line 35: | ||
void loop() { | void loop() { | ||
- | Serial.println(" | + | Serial.println(" |
for (int i=0; Serial.print(i), | for (int i=0; Serial.print(i), | ||
Serial.print(" | Serial.print(" | ||
Line 52: | Line 52: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ===== If-Schleife ===== | ||
+ | <code c++> | ||
+ | if (bedingung) { | ||
+ | // tu was | ||
+ | } | ||
+ | |||
+ | if (bedingung) { | ||
+ | // tu was | ||
+ | } else { | ||
+ | // anderes | ||
+ | } | ||
+ | |||
+ | if (bedingung) { | ||
+ | // tu was | ||
+ | } else if (andere bedingung) { | ||
+ | // tu was anderes | ||
+ | } else if (noch andere bedingung) { | ||
+ | // tu noch was anderes | ||
+ | } else { | ||
+ | // wenn alles nicht wahr war | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Logische Verknüpfungen ==== | ||
+ | | && | **und** (der zweite Ausdruck wird nur ausgewertet wenn der erste Ausdruck wahr ist) | | ||
+ | | < | ||
+ | |||
+ | ==== Wahrheitswerte: | ||
+ | Typ bool kann false oder true sein. | ||
+ | |||
+ | Andere Werte sind true, wenn diese nicht null sind. | ||
+ | |||
+ | true wird zu 1 konvertiert, | ||
+ | <code c++> | ||
+ | int i=true; | ||
+ | bool ok=42; | ||
+ | Serial.println(ok); | ||
+ | bool nk=0; // nk wird false; | ||
+ | if (42) { | ||
+ | // immer wahr | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Ternärer Operator ==== | ||
+ | Sehr kompakt, aber schwer zu lesen. Einsatz wie Gewürz. | ||
+ | <code c++> | ||
+ | int a = (bedingung) ? resultatWennWahr : resultatWennFalsch; | ||
+ | </ | ||
+ | |||
+ | ===== Modulo Operator ===== | ||
+ | <code c++> | ||
+ | int a=19, b=5; | ||
+ | int rest = a % b; // liefert 4, Rest der Division 19/5 | ||
+ | a=-19; | ||
+ | rest = a % b; // liefert -4. Erklärung: Integer-Division rundet immer zu Null hin!, D.h. (-19)/5 ergibt -3, Rest -4. | ||
+ | </ | ||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | * Erst obiges Studieren, Codes ausprobieren, | ||
+ | |||
+ | === Primzahlen === | ||
+ | Schreiben Sie einen Sketch, der Primzahlen ausgibt (ohne obere Grenze). | ||
+ | |||
+ | Studieren Sie dazu, falls nötig, die Arduino-Dokumentation zum for-loop, der if-Schleife und dem Modulo-Operator %. | ||
+ | |||
+ | <hidden Lösungsvorschlag> | ||
+ | <code c++> | ||
+ | void setup() { | ||
+ | Serial.begin(115200); | ||
+ | Serial.println(2); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | for (long i=1000001; ; i+=2) { | ||
+ | bool prime = true; | ||
+ | for (long t=3; t*t<=i; t+=2) { | ||
+ | if (i % t==0) { | ||
+ | prime = false; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | if (prime) { | ||
+ | Serial.print(i); | ||
+ | Serial.print("," | ||
+ | } else if (i%29 == 0) { | ||
+ | Serial.println(); | ||
+ | } | ||
+ | } | ||
+ | delay(20000); | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === Perfekte Zahlen === | ||
+ | Finden Sie Zahlen, die gleich der Summe ihrer Teiler sind (sich selbst natürlich ausgeschlossen). Beispiel: 6=1+2+3. Gegenbeispiel: | ||
+ | |||
+ |