Sie sind auf Seite 1von 29

Physikalisch technische Grundlagen

- Kontrollstrukturen 1 -

Kai Mrkor, Prof. Thomas Schrader

Technische Hochschule Brandenburg · University of Applied Sciences 1


Unsere heutigen Ziele

 Rückschau auf bisherige Erfolge

 Kleine Programme zu Beginn…

 Einfache Kontrollstrukturen
− Verzweigungen, Vergleichsoperatoren

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 2
Wiederholung: Programmiersprache

„Eine Programmiersprache ist eine formale Sprache zur


Formulierung von Rechenvorschriften, die von einem
Computer ausgeführt werden können. Sie setzen sich aus
Anweisungen nach einem vorgegebenen Muster zusammen,
der sogenannten Syntax.

Um ein in einer bestimmten Programmiersprache erstelltes


Programm ausführen zu können, muss dessen Quellcode von
einem Compiler in eine äquivalente Folge von Maschinen-
befehlen übersetzt werden.“

[https://de.wikipedia.org/wiki/Programmiersprache]

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 3
Syntax: Vorgaben in „Arduino-C“

void setup() {
Anweisungen; // Kommentar
}

void loop() {
Anweisungen; // Noch ein Kommentar
}

 Jede Anweisung wird mit einem Semikolon abgeschlossen


 Leerzeichen werden „ignoriert“
 Anweisungsblöcke werden mit geschweiften Klammern
umschlossen
 Einfache Kommentare werden mit // eingeleitet
 Case-Sensitive
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 4
Wiederholung

Wichtige Sprachkonstrukte in C:

- Abschluss einer Anweisung  ;


- Block  { }
- Kommentar  //
/* */

- Verzweigungen  if … then
switch … case

- Schleifen  for()
while()

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 5
Was sind eigentlich Variablen?

• Stellen im Arbeitsspeicher zur Aufnahme von Informationen

• Mehrere Typen: Datentyp Bit Wertebereich


boolean 8 true, false
char 8 -128 …127
byte 8 0 …255
int 16 -32768 … 32767
unsigned int 16 0 …65535
long 32 -2,147,483,648 … 2,147,483,647
unsigned long 32 0 …4,294,967,295
float 32 -3.4028235E38 … 3.4028235E38

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 6
Was sind eigentlich Variablen?

// Deklaration
int a;
byte b = 25;

// Wertzuweisung
a = 5;

// Anwendung von Operatoren


a = 5 + b;
a = 5 + b * 2;
a = (5 + b) * 2;
b++;
a = --b;
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 7
Zum warm werden: Was wird ausgegeben?

byte i=1;

void setup() {
Serial.begin(115200);
}

void loop()
{
Serial.print(“Ausgabe ”);
Serial.println(i++);
delay(1000);
}

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 8
Zum warm werden

Schreiben Sie ein Arduino-Programm, welches im


Sekundentakt zwei LEDs alternierend blinken lässt.

Schließen Sie dazu eine rote LED an D13 und eine


grüne LED an D12 an.

t
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 9
Zum warm werden

- Rote LED an D13


- Grüne LED an D12

- Jeweils ein Vorwiderstand


- Gemeinsame Masse

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 10
Blink – Ein erstes Programm

void setup() {
pinMode(13, OUTPUT); // rote LED
pinMode(12, OUTPUT); // grüne LED
}

void loop() {
digitalWrite(13, HIGH); // rote LED an
digitalWrite(12, LOW); // grüne LED aus
delay(500);

digitalWrite(13, LOW); // rote LED aus


digitalWrite(12, HIGH); // grüne LED an
delay(500);
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 11
Blink – Ein erstes Programm  Lesbarer!!!

const int ROT = 13;


const int GRUEN = 12;

void setup() {
pinMode(ROT, OUTPUT); // rote LED
pinMode(GRUEN, OUTPUT); // grüne LED
}

void loop() {
digitalWrite(ROT, HIGH); // rote LED an
digitalWrite(GRUEN, LOW); // grüne LED aus
delay(500);

digitalWrite(ROT, LOW); // rote LED aus


digitalWrite(GRUEN, HIGH); // grüne LED an
delay(500);
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 12
Einfache Kontrollstrukturen: Wenn-Dann / if-then

Start
• Prüft ob eine Bedingung erfüllt ist.
• Wenn ja, wird die nachfolgende
Anweisung ausgeführt. nein
?
ja
Boole‘scher
Ausdruck !!! Bedingte
Beispiel in C:
Anweisung

if (Temperatur < 20)


{
HeizungEinschalten();
} Ende

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 13
Einfache Kontrollstrukturen: Vergleichsoperatoren

Operator Operation Start


== Gleichheit
!= Ungleichheit
> Größer nein
?
< Kleiner
>= Größer gleich ja

<= Kleiner gleich


Bedingte
! Logisches Nicht Anweisung

Beispiel in C:

if (Temperatur < 20) {


Ende
HeizungEinschalten();
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 14
Einfache Kontrollstrukturen: if-then-else

• Prüft ob eine Bedingung erfüllt ist.


• Wenn ja, wird die nachfolgende
Anweisung ausgeführt.
• Zusätzlicher else-Zweig.

Beispiel in C:
if (Temperatur < 20) {
HeizungEinschalten();
}
else {
HeizungAusschalten();
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 15
Einfache Kontrollstrukturen: if-then-else

Wenn i ungleich 3 ist, soll fkt_A()


aufgerufen werden:
Start

Ist i ungleich Nein


3?

Ja

if (i != 3)
fkt_a
{
fkt_A();
}
Ende

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 16
Einfache Kontrollstrukturen: if-then-else

Wenn i ungleich 3 ist, soll fkt_a() Start


aufgerufen werden, sonst fkt_b():

if (i != 3)
Ist i ungleich
{
Nein
3?
fkt_b()
fkt_a();
}
Ja

else fkt_a
{
fkt_b();
}
Ende
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 17
Anwendung von if-then: Aufgabe

Schreiben Sie ein Arduino-Programm, welches jede zehntel


Sekunden eine byte-Variable i hochzählt und deren Inhalt
auf der seriellen Schnittstelle ausgibt.

Abhängig vom Inhalt von i soll zusätzlich eine rote bzw.


grüne LED als Status leuchten:

gruen = { i ∈ ℕ | 0 ≤ i ≤ 127} i < 128


rot = { i ∈ ℕ | 128 ≤ i ≤ 255} i >= 128

Schließen Sie die rote LED am Pin D13 und die grüne LED
am Pin D12 an.

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 18
Start

Der PAP für loop().


i := i +1
Ausgabe von i

Ist i kleiner Nein Grüne LED aus.


Formalisierung der als 128? Rote LED an.
Aufgabenstellung: Ja

Grüne LED an.


grün = (i < 128) Rote LED aus.

rot = (i >= 128)

Warten

Physikalisch technische Grundlagen


Technische Hochschule Brandenburg · University of Applied Sciences
Ende Wintersemester
2020/2021
19
Anwendung von if-then: Initialisierung

const int ROT = 13;


const int GRUEN = 12;

int i = 0;

void setup()
{
pinMode(ROT, OUTPUT); // rote LED
pinMode(GRUEN, OUTPUT); // grüne LED

Serial.begin(115200);
}

Physikalisch technische Grundlagen Wintersemester 2020/2021


Technische Hochschule Brandenburg · University of Applied Sciences 20
Anwendung von if-then: Ausführung

void loop() {
Serial.print("Ausgabe ");
Serial.println(++i); // i++ separat wäre besser

if (i < 128) {
digitalWrite(ROT, LOW); // rote LED aus
digitalWrite(GRUEN, HIGH); // grüne LED an
}
else {
digitalWrite(ROT, HIGH); // rote LED an
digitalWrite(GRUEN, LOW); // grüne LED aus
}

delay(100);
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 21
Anwendung von if-then: Erweiterung der Aufgabe

Verändern Sie Ihr Programm so, dass die LEDs in Abhängigkeit


der „Teilbarkeit durch zwei“ leuchten.

Ist der aktuelle Wert von i gerade, dann soll die rote LED
leuchten, hingegen die grüne LED bei ungeraden Werten
leuchten soll:

Hinweis: Die Rechenregeln für Paritäten folgen den Gesetzen


des Restklassenkörpers mit den zwei Elementen Null
und Eins. Diese stehen dabei für die entsprechenden
Reste modulo 2 und damit für gerade oder ungerade.

Ändern Sie (zur besseren Lesbarkeit) das Intervall auf eine


Sekunde.
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 22
Start
Gerade/Ungerade
i := i +1
Ausgabe von i
Vergleich zur
Bestimmung, ob
eine Zahl gerade
Grüne LED an.
ist:
Nein
Ist i gerade?
Rote LED aus.
(i % 2) == 0 Ja

Grüne LED aus.


Rote LED an.
gerade: True
(Bsp.: 8%2 = 0  True)
ungerade: False Warten
(Bsp.: 5 % 2 = 1  False)
Physikalisch technische Grundlagen
Technische Hochschule Brandenburg · University of Applied Sciences
Ende Wintersemester 2020/2021
23
Anwendung von if-then: Ausführung

void loop() {
i++;
Serial.print("Ausgabe ");
Serial.println(i);

if ((i % 2) == 0) {
digitalWrite(ROT, HIGH); // rote LED an
digitalWrite(GRUEN, LOW); // grüne LED aus
}
else {
digitalWrite(ROT, LOW); // rote LED aus
digitalWrite(GRUEN, HIGH); // grüne LED an
}

delay(100);
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 24
Wiederholung: if-then-else

• Prüft ob eine Bedingung erfüllt ist.


• Wenn ja, wird die nachfolgende
Anweisung ausgeführt.
• Optionaler else-Zweig.

Beispiel in C:
if (Temperatur < 20) {
HeizungEinschalten();
}
else {
HeizungAusschalten();
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 25
Suchbild: Haben sich Fehler versteckt?

void loop()
{
i++;

if (i ≤ 127) if (i <= 127)


{
digitalWrite(ROT, HIGH);
}
else
{
digitalWrite(ROT, LOW);
}

delay(100);
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 26
Suchbild: Haben sich Fehler versteckt?

void loop()
{
i++;

if (i >= 128)
{
digitalWrite(ROT, HIGH);
}
else (i < 128)
{
digitalWrite(ROT, LOW);
}

delay(100);
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 27
Suchbild: Haben sich Fehler versteckt?

void loop()
{
i++;
Semantischer Fehler!
if (i >= 128);
{
digitalWrite(ROT, HIGH);
} Syntaktischer Fehler, da keine direkte
else Verbindung zu einer if-Anweisung!
{
digitalWrite(ROT, LOW);
}

delay(100);
}
Physikalisch technische Grundlagen Wintersemester 2020/2021
Technische Hochschule Brandenburg · University of Applied Sciences 28
Vielen Dank für Ihre Aufmerksamkeit

Kai Mrkor, Thomas Schrader

Technische Hochschule Brandenburg · University of Applied Sciences 29

Das könnte Ihnen auch gefallen