Arexx RP6 V2 Build your own robot kit RP6 V2 User Manual

Product codes
RP6 V2
Page of 141
RP6 ROBOT SYSTEM -  4. Programmierung des RP6
4.4.6. Switch-Case
Oft muss man eine Variable auf viele verschiedene Zahlenwerte überprüfen und ab-
hängig davon Programmcode ausführen. Das kann man natürlich wie oben beschrie-
ben mit vielen if-then-else Bedingungen machen, aber es geht auch eleganter mit ei-
ner switch-Verzweigung.
Ein Beispiel:
1  
2  
3
4
5
6
7
8
9
10
11
12
13
14
15     
uint8_t 
= 
3
;
switch
(x)
{
case
 
1
: writeString(
"x=1\n"
); 
break
;
case
 
2
: writeString(
"x=2\n"
); 
break
;
case
 
3
: writeString(
"x=3\n"
);   
// Hier fehlt das "break", also fährt 
case
 
4
: writeString(
"Hallo\n"
); 
// das Programm direkt mit dem 
case
 
5
: writeString(
"du\n"
);   
// nächsten und dem nächsten Fall fort,
case
 
6
: writeString(
"da!\n"
); 
break
; 
// und stoppt erst hier!
case
 
44
: writeString(
"x=44\n"
); 
break
;
// Hier gelangt das Programm hin, wenn keiner der obigen
// Fälle gepasst hat:
default
 : writeString(
"x ist was anderes!\n"
); 
break
;
}
Das ist vom Resultat her ähnlich zu dem Beispiel auf der vorherigen Seite mit „if-else-
if-else-if-else...“, nur eine andere Schreibweise.
Die Ausgabe wäre in diesem Fall (mit x = 3):
x=3
Hallo
du
da!
Wenn man x = 1 setzen würde, wäre die Ausgabe „x=1\n“ und mit x=5 wäre die 
Ausgabe:
du
da!
Hier sieht man, dass das „break“ die Switch-Verzweigung beendet. Lässt man es weg, 
läuft das Programm einfach solange durch alle anderen Fälle durch bis entweder das 
Ende der switch-Verzweigung erreicht ist oder ein anderes „break“ ausgeführt wird. 
Dabei ist es egal ob die nachfolgenden Bedingungen erfüllt werden oder nicht!
Wenn x = 7 gesetzt wird, würde keiner der Fälle diesen Wert abdecken, das Pro-
gramm im default Teil landen und die Ausgabe wäre: „x ist was anderes!\n“.
Diese ganzen Textausgaben sind natürlich nur Beispiele – man könnte in realen Pro-
grammen für den Roboter damit z.B. verschiedene Bewegungsmuster auslösen. In ei-
nigen Anwendungsbeispielen werden switch-case Konstrukte z.B. für endliche Auto-
maten verwendet um verschiedene Verhalten des Roboters zu implementieren. 
- 71 -