Parameter und Verzweigungen

Aus Informatik
Wechseln zu: Navigation, Suche

Im vorhergehenden Abschnitt wurde in einer Aufgabe ein Ampelschaltung gebaut und programmiert. Da der gesamte Zyklus relativ lang ist, wurde auch der zu programmierende Sketch ziemlich lang - dies lässt sich durch die Verwendung von Parametern und Verzweigungen vermeiden.

Variable (Parameter)

Mit Variablen haben wir in den bisher programmierten Sketches schon gearbeitet:

int led = 13;

Hier wurde eine Variable vereinbart ... sie erhält den Namen led und bekommt zu Beginn den Wert 13.

Für eine Variable wird ein Speicherplatz reserviert, auf den man mit deren Namen zugreifen kann. Dieser Speicherplatz kann nur einen Wert enthalten.

Variable können in Verlauf eines Programmes andere Werte zugewiesen bekommen, z. B.:

led = 12;       // Zuweisung eines anderen Wertes
led = led - 1;  // Zuweisung eines neuen (berechneten) Wertes = 12


Verzweigung

Im Ablauf eines Programmes kann eine bestimmte Aktion in Abhängigkeit eines Wertes einer Variable ausgeführt werden. Dafür verwendet man die Kontrollstruktur if:

if (Bedingung)
  Aktion
}

Hier wird die Aktion ausgeführt, wenn die Bedingung wahr ist. In einigen Fällen gibt es die Möglichkeit die Kontrollstruktur durch einen alternativen Zweig zu ergänzen:

if (Bedingung)
  Aktion
} else {
  andere Aktion
}

Wenn die Bedingung wahr ist, wird eine Aktion ausgeführt, ansonsten eine andere Aktion.

Wie wird eine Bedingung formuliert

Eine Bedingung für das Ausführen einer Aktion basiert immer auf einem Vergleich zweier Werte (bzw. der Werte zweier Variable), z. B. led == 13 oder a > 5.

Überprüft man eine Aussage, die durch eine Bedingung gegeben wird, kann das Ergebnis nur true oder false lauten.

Die wichtigsten Vergleichsoperatoren (für uns) sind:

a == b überprüft, ob der Wert der Variablen a dem Wert der Variablen b entspricht
a != b überprüft, ob der Wert der Variablen a ungleich dem Wert der Variablen b ist
a > b überprüft, ob der Wert der Variablen a größer als der Wert der Variablen b ist
a <= b überprüft, ob der Wert der Variablen a kleiner oder gleich dem Wert der Variablen b ist

Beispiel Lauflicht

Als Beispiel soll nun ein Lauflicht mit 5 LEDs gebaut werden.

Schaltung schaltung lauflicht5.png

Mit dem folgenden Sketch erhält man nun ein einfaches Lauflicht über diese 5 LED.

int led = 0;  // aktuelle LED
int led0 = 0; // LED Pin 0
int led1 = 1; // LED Pin 1
int led2 = 2; // LED Pin 2
int led3 = 3; // LED Pin 3
int led4 = 4; // LED Pin 4

void setup() {                
  // initialize the digital pin as an output.
  pinMode(led0, OUTPUT);     
  pinMode(led1, OUTPUT);     
  pinMode(led2, OUTPUT);     
  pinMode(led3, OUTPUT);     
  pinMode(led4, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  if (led == led0) {
    digitalWrite(led0, HIGH);
  } else {
    digitalWrite(led0, LOW);
  }
  if (led == led1) {
    digitalWrite(led1, HIGH);
  } else {
    digitalWrite(led1, LOW);
  }
  if (led == led2) {
    digitalWrite(led2, HIGH);
  } else {
    digitalWrite(led2, LOW);
  }
  if (led == led3) {
    digitalWrite(led3, HIGH);
  } else {
    digitalWrite(led3, LOW);
  }
  if (led == led4) {
    digitalWrite(led4, HIGH);
  } else {
    digitalWrite(led4, LOW);
  }
  
  delay(100);
  led = led + 1;
  
  if (led > 4) {
    led = 0;
  }
}

Aufgabe 1

Baue die Schaltung mit 5 LEDs und implementiere den dazugehörigen Sketch. Teste die Schaltung.

Aufgabe 2

Es gibt auch andere Möglichkeiten für Lauflichter. Programmiere dazu geeignete Sketche:

  • Licht läuft hin und zurück
  • alle LEDs leuchten - "schwarzer Punkt" läuft
  • zwei Lichter laufen von beiden Seiten aus
  • ...

Aufgabe 3

In einer früheren Aufgabe wurde eine Ampelschaltung gebaut und programmiert. Programmiere den Sketch so um, dass die einzelnen LEDs über Verzweigungen geschaltet werden.