Sonntag, 16. August 2015

Abfragen in C++

In diesem Post geht es die verschiedenen Abfragen in C++(if, if...else, switch). Mittels einer Abfrage kann man überprüfen, ob Bedingungen zutreffen, und falls dem so ist speziellen Programmcode ausführen. Dadurch kann man etwa individuell auf Usereingaben reagieren.


if Abfrage

Die if Abfrage ist eine sehr einfache Abfrage, da sie aus nur zwei Teilen besteht: Der Bedingung und dem eventuell auszuführenden Programmcode. Dabei beginnt die if Abfrage mit if, dann steht in den runden Klammern die Bedingung, und falls diese zutrifft, wird der Code in den geschweiften Klammern ausgeführt.

if(Bedingung) {Programmcode}

In der Arduino IDE sähe das so aus:

Ein bei Anfängern "beliebter" Fehler ist, eine if Abfrage in die loop Schleife zu setzen. Sobald dann die Bedingung einmal wahr ist, wird der Programmcode, etwa das Anschalten einer LED, ausgeführt. Sobald die Bedingung dann wieder falsch ist, bleibt die LED trotzdem an, da es keine Befehle für den Fall gibt, dass die Bedingung falsch ist. Das führt uns auch schon zur Nächsten Abfrageart.

if... else Abfrage

Bei einer if else Abfrage wird, wie bei der if Abfrage, geprüft, ob eine Bedingung wahr ist und ein Programmcode eventuell ausgeführt. Sollte die Bedingung nicht wahr sein wird immer der andere Programmteil ausgeführt. Das bedeutet also, dass immer einer der beiden Codeabschnitte ausgeführt wird. Der Aufbau ist ähnlich, wie bei der if Abfrage:

if(Bedingung) {Programmteil1} else {Programmteil2}

In der Arduino IDE sehen if else Abfragen/Anweisungen so aus:

switch case

Bei switch case Konstrukten handelt es sich um zusammengebaute if Abfragen. Dabei gibt es eine Variable und verschiedene cases. Wenn die Variable 0 ist, mach dies, wenn die Variable 1 ist, mach das und wenn die Variable 2 ist, mach jenes. 

switch (var) {
case WertderVariable:
Programmteil1
break;

case WertderVariable2:
Programmteil2
break;

case Wert der Variable3:
Programmteil3
break;

Das break am Ende einer Switch Anweisung dient dazu, die Switch Anweisung zu verlassen, da sobald dieser eine Fall(case) eingetroffen ist, die Anderen normalerweise automatisch dementsprechend falsch sind.
Sollte es die Möglichkeit geben, dass keine der angegebenen Bedingungen zutrifft, kann man am Ende der Switch Anweisung ein default anfügen. Das ist das "else" der Switch Anweisung und wird immer dann ausgeführt, wenn keine der vorherigen Bedingungen wahr ist.

Die verschiedenen Operatoren 

Ein Operator ist ein "Ding", das entweder wahr oder falsch, also einen Wahrheitswert, zurückgibt. Ein Beispiel ist das ">" Zeichen. Operatoren verwendet man, um eine Bedingung für eine Abfrage, oder eine Schleife, zu erzeugen. Es gibt verschiedene Operatoren. Hier die wichtigsten:
Es ist wichtig, dass du, falls zwei Dinge gleich sein sollen ein doppeltes = machst, also ==, denn ein einfaches = ordnet den Wert der ersten Variable einfach der zweiten Variable zu. Dadurch ist die Bedingung dann immer wahr.

Bedingungen verknüpfen

Natürlich ist es auch möglich, dass eine if Abfrage mehrere Bedingungen hat. Dazu gibt es in der Arduino IDE zwei Möglichkeiten:

Das doppelte Und-Zeichen verknüpft einfach die beiden Bedingungen. Wenn also beide Bedingungen zutreffen wird der Code ausgeführt. Im Programm muss man dann die beiden Bedingungen in die normalen Klammern schreiben: while((Bedingung1) && (Bedingung2)) { Code }.  Nach dem selben Prinzip funktioniert ||. Das steht für oder.

Erwähnenswert ist noch, dass man eine Bedingung über ! "umdrehen" kann. Falsch ergibt demnach wahr und wahr falsch. Beispiel: if(!(Bedingung)) { Code }.

Keine Kommentare:

Kommentar veröffentlichen