Bedingte Anweisungen

Nachdem wir jetzt fähig sind, Variable zu deklarieren und zu zuweisen, werden wir uns in diesem Beispiel damit beschäftigen, wie man den MC dazu bringt, auf diese Variablen entsprechend ihres Inhalts mit verschiedenen Programmabläufen zu reagieren. Gerade in der Steuerungstechnik ist es oftmals erforderlich auf Eingänge oder Inhalte von Variablen entsprechend zu reagieren. 


Die if– Anweisung

Der Anweisung if folgt eine Bedingung in runden Klammern.
Die in geschwungenen Klammern folgenden Anweisungen werden nur ausgeführt, wenn die Bedingung wahr („true“) ist. Sollte das Ergebnis des Ausdrucks in den runden Klammern falsch („false“) sein werden die Anweisungen in den geschwungenen Klammern übersprungen.


Boolean Operatoren
Boolsche Operatoren ermöglichen es mehrere Bedingungen logisch miteinander zu verbinden.

  • ! (not) invertiert den Ausdruck.
  • && (and) bedingt, dass beide Ausdrücke wahr sind.
  • || (or) bedingt, dass einer der beiden Ausdrücke wahr ist.

Mit runden Klammern kann man solche Verknüpfungen hierarchisch gestallten.

Die folgenden Anweisungen der oben gezeigten Bedingung werden demnach nur ausgeführt, wenn BedingungA wahr ist, oder BedingungB und BedingungC wahr sind.

Wir können im Bedarfsfall mehrere solcher „if“- Anweisungen nun hintereinander ausführen oder diese ineinander verschachteln. Was jedoch die Lesbarkeit des Codes sehr beeinträchtigen kann.


Die else if– Anweisung

Stehen mehrere if– Anweisungen hintereinander, so wird der Code jeder Anweisung ausgeführt, deren Bedingung erfüllt wurde. Manchmal wünschen wir jedoch, dass die folgenden if– Anweisungen ignoriert werden sollen, wenn eine der vorhergehenden Bedingungen bereiz erfüllt wurden. Dazu verwenden wir eine else if– Anweisung, die unmittelbar einer if– Anweisung folgen muss.

Wurde im oberen Beispiel BedingungA erfüllt, wird die „else if“- Anweisung mit der BedingungB ignoriert. Ungeachtet ob deren Ergebnis wahr oder falsch ist.


Die else– Anweisung
Wollen wir, dass der MC einen alternativen Code ausführt wenn keine unserer if– oder else if– Anweisungen erfüllt wurde, dann verwenden wir eine else– Anweisung. Diese ist Bedingungslos. Der enthaltene Code wird jedoch nur ausgeführt, wenn keine der vorangegangenen Bedingungen erfüllt wurde.

Der Code in den geschwungenen Klammern der else– Anweisung wird im oben stehenden Beispiel nur ausgeführt, wenn BedingungA und BedingungB nicht erfüllt wurden.


Vergleichsoperatoren
Um eine differenziertere Abfrage von Variablen und Schnittstellen zu ermöglichen, dienen Vergleichsoperatoren. Mit ihnen können wir, wie der Name schon erahnen lässt, Variable vergleichen. Vorweg mal eine Übersicht.

  • == (gleich)
    Das doppelte Gleichheitszeichen des Vergleichsoperator (gleich) unterscheidet sich demnach von klar vom Zuweisungsoperator „=“ (gleich).
  • != (not)
    Auch hier ist das (not) als Vergleichsoperator klar vom „!“ (not) als boolean Operator zu unterscheiden.
  • > (größer)
  • < (kleiner)
  • >= (größer, gleich)
  • <= (kleiner, gleich)

Vergleiche müssen natürlich einen Sinn ergeben. Es macht also keinen Sinn eine String- Variable mit einer int- Variablen zu vergleichen. Möglichkeiten, wie man so etwas dennoch benutzen kann gibt es. Doch das würde jetzt zu weit führen.

Sicherheitshinweis:
Bitte beachte, dass wir bei Veröffentlichung von Code- Beispielen, Passwörter immer überschreiben!


Übung
Beim heutigen Beispiel werden wir neben dem abfragen einer Bedingung einen Ausgang analog (mit einem Wert, innerhalb eines Bereichs) beschreiben. Wir werden uns mit der Technik dahinter zu gegebener Zeit noch sehr genau beschäftigen. Doch vorweg, können wir diese Anweisung einfach mit den Standardeinstellungen des ESP8266 nutzen.

  • analogWrite Anweisung einen analogen Parameter zu setzen.
    • D4 zu setzender Pin
      • LedBrightness Parameter als Variable.
        Der Bereich ist je nach verwendeten Board unterschiedlich. Der ESP8266 löst in der Standardeinstellung (Der Wert ist veränderbar) bis zu 10 Bit auf. Womit Werte von 0 bis 1023 möglich sind.

Zuweisungsoperatoren += und -=
Im Beispiel des vorigen Beitrags nutzten wir die Tatsache, dass der Zuweisungsoperator = den Inhalt einer Variablen im letzen Schritt zuweist. Demnach könnten wir
VariableA = VariableA * 2 + VariableB schreiben. Um einer Variablen das Ergebnis eines Ausdrucks hinzu zu zählen, oder ab zu ziehen, können wir auch Zuweisungsoperatoren verwenden, die dies vereinfachen.

  • += Ergebnis des Ausdrucks der Variablen hinzuzählen.
  • -= Ergebnis des Ausdrucks der Variablen abziehen.

Fazit
Bedingte Anweisungen stellen eine der elementarsten Funktionen bei der Programmierung dar. Im Grunde könnten wir damit praktisch alles programmieren. Doch der Code währe damit jedoch umständlich und zu unübersichtlich.
Das Beispiel der Übung kann nun von Dir auch verändert werden.
Versuche die Onboard- LED dazu zu bringen langsam auf zu blenden!
Überlege, wie Du die Geschwindigkeit beeinflussen könntest, oder die LED langsam auf- und wieder ab- zublenden! Da die „setup“- Funktion sich dabei nicht viel ändern wird, reicht es den Code der „loop“- Funktion deiner Lösung in der Google Community zu präsentieren.