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:22] Ivo Blöchliger [Schlechte Beispiele] |
lehrkraefte:blc:informatik:ffprg2017:l2:l2 [2017/09/01 07:52] (current) Ivo Blöchliger [LEDs] |
||
---|---|---|---|
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: | ||
+ | |||
+ |