Ablaufsteuerung

vor 5 years 3 days
if Die If-Abfrage testet ob eine bestimmte Bedingung wahr ist oder nicht. Bei einem analogen Wert kann dies das Erreichen eines bestimmten Levels sein. Ist dies der Fall, so werden Anweisungen innerhalb der geschweiften Klammer ausgeführt. Ist diese Bedingung nicht erfüllt werden die Anweisungen innerhalb der Klammer übersprungen. Das Format für eine If-Abfrage ist folgende:
if (someVariable ?? value) { doSomething; }
Das oben vorgestellte Beispiel vergleicht 'someVariable' mit einem anderen Wert 'value', der entweder eine Variable oder Konstante sein kann. Wenn der Vergleich oder die Bedingung wahr ist werden die Anweisungen innerhalb der Klammern ausgeführt, in diesem Beispiel 'doSomething'. Wenn nicht, wird der Teil übersprungen und es geht nach den Klammern weiter in der Ausführung des Programmcodes. Bemerkung: Vorsicht vor dem versehendlichen Benutzten von '=', wie in if(x=10). Technisch gesehen wird hier die Variable x mit dem Wert 10 belegt, was immer wahr ist. Anstatt dessen nutze '==', wie in if(x==10). Herbei wird nur geprüft ob x den Wert 10 hat oder nicht. Am einfachsten merkt man sich das mit '=' als 'gleich' im Gegensatz zu '==' als 'ist gleich mit'. if... else 'if... else' erlaubt das Treffen einer 'entweder ... oder' Entscheidung. Zum Beispiel möchten Sie einen digitalen Eingang prüfen und im Falle von 'HIGH' andere Anweisungen ausführen als im Falle von 'LOW'. Dies kann man so im Programmcode abbilden:
if (inputPin == HIGH) { doThingA; } else { doThingB; }
'else' kann auch noch weitere 'if' Abfragen enthalten, so dass mehrfache Test zur selben Zeit stattfinden können. Es ist sogar möglich eine unbegrenzte Anzahl von diesen 'else' Abzweigungen zu nutzen. Allerdings wird je nach den Bedingungen nur ein Set von Anweisungen ausgeführt:
if (inputPin < 500) { doThingA; } else if (inputPin >= 1000) { doThingB; } else { doThingC; }
Bemerkung: Eine If-Abfrage testet ob eine Bedingung innerhalb der Klammer wahr oder falsch ist. Diese Bedingung kann jedes gültige C Statement sein, wie in unserem ersten Beispiel if (inputPin == HIGH). In diesem Beispiel prüft die if Abfrage nur ob der definierte Eingang den Logic level HIGH hat (+5 Volt). for Die 'for' Schleife wird verwendet um einen Block von Anweisungen in geschweiften Klammern eine festgelegt Anzahl von Wiederholungen durchlaufen zu lassen. Ein Erhöhungzähler wird oft verwendet um die Schleife zu ansteigen zu lassen und zu beenden. Es gibt im Header der 'for' Schleife drei Elemente, getrennt durch Semikolon ';'.
for (Initialisierung; Bedingung; Ausdruck) { doSomething; }
Die Initialisierung einer lokalen Variablen, einem ansteigenden Zähler, passiert als erstes und nur einmalig. Bei jedem Durchlaufen der Schleife wird die Bedingung an der zweiten Stelle getestet. Wenn die Bedingung wahr ist läuft die Schleife weiter und die folgenden Ausdrücke und Anweisungen werden ausgeführt und die Bedingung wird erneut überprüft. Ist die Bedingung nicht mehr wahr so endet die Schleife. Das folgende Beispiel startet mit einem Integer Wert 'i' bei 0, die Bedingung testet ob der Wert noch kleiner als 20 ist und wenn dies wahr ist so wird 'i' um einen Wert erhöht und die Anweisungen inenrhalb der geschweiften Klammern werden ausgeführt:
for (int i=0; i<20; i++) // deklariert 'i', teste ob weniger { // als 20, Erhoehung um 1 digitalWrite(13, HIGH); // schaltet Pin 13 ein delay(250); // Pause fuer 1/4 Sekunde digitalWrite(13, LOW); // schaltet Pin 13 aus delay(250); // Pause fuer 1/4 Sekunde }
Bemerkung: Die for-Schleife in der Programmiersprache C (Arduinos Sprache) ist viel flexibler als in einigen anderen Programmiersprachen, inklusive Basic. Jede oder alle der drei Header Elemente können weggelassen werden, jedoch sind die Semikolons notwendig. Zusätzlich können die Statements für Initialisierung, Bedingung und Ausdruck durch jedes gültige C Statement mit Variablen ohne Bezug zur Schleife ersetzt werden. Diese Methode kann Lösungen für seltene Probleme beim Programmieren bieten. while 'while' Schleifen werden unbegrenzt wiederholt und laufen unendlich bis eine bestimmte Bedingung innerhalb der Klammer falsch ist. Etwas muss die zu testende Variable ändern oder die Schleife endet nie. Dies kann im Code passieren, wie eine ansteigende Variable oder von externen Werten, wie einem Sensor Test erfolgen.
while (someVariable ?? value) { doSomething; }
Das folgende Beispiel testet ob 'someVariable' weniger als 200 ist. Die Anweisungen innerhalb der Schleife werden ausgeführt, solange bis 'someVariable' nicht mehr weniger als 200 ist.
while (someVariable < 200) // testet ob weniger als 200 { doSomething; // führt Anweisungen aus someVariable++; // erhöht Variable um 1 }
do... while Die 'do...while' Schleife ist eine endgesteuerte Schleife die ähnlich funktioniert wie die 'while' Schleife. Der Unterschied ist der Test der Bedingung am Ende der Schleife. Somit läuft die Schleife immer mindestens einmal.
do { doSomething; } while (someVariable ?? value);
Das folgende Beispiel ordnet readSensors() der Variablen 'x' zu, macht eine Pause für 50ms, um dann unbegrenzt weiter zu laufen bis 'x' nicht mehr weniger als 100 ist.
do { x = readSensors(); // ordnet den Wert von // readSensors() 'x' zu delay (50); // Pause für 50ms } while (x < 100); // Schleife laeuft weiter bis 'x' weniger als 100 ist

0 Antworten auf “Ablaufsteuerung”