3. Kontrollstrukturen
Eine Kontrollstruktur überprüft immer eine Bedingung und handelt stets nach dieser. Um Dir das Prinzip von Kontrollstrukturen zu zeigen, schreiben wir ein kleines Programm, bei dem ein Wert, einer Variable, zwingend über null sein muss. Ansonsten wird uns ausgegeben, dass der Wert über null sein soll. Eine Kontrollstruktur hat immer einen „if“ und einen „else“ Teil. Der „if“ Teil wird immer dann ausgeführt, wenn die Bedingung stimmt. Falls diese nicht zutreffen sollte, wird automatisch der „else“ Teil ausgeführt. Dabei ist der „else“ Teil immer die logische Konsequenz, die als letzte Möglichkeit gilt.
var zahl = 10 if zahl > 0{ print("Vielen Dank")
} else{ print("Zahl muss über null sein") }
Wie du siehst, habe ich eine Variable gebildet, deren Wert 10 ist. Mit „if“ habe ich die Bedingung gestellt, dass der Wert der Variable zahl grösser als 0 sein muss. Hier ist wichtig zu wissen, dass wir den Wert 0 nicht mehr im Zahlenbereich sehen und somit der tiefst mögliche Wert 1 sein kann. Falls wir den Wert 0 ebenfalls im Zahlenbereich möchten, schreiben wir:
if zahl >= 0
Damit sagen wir, dass „zahl“ grösser oder gleich 0 sein muss.
Nach der Bedingung kommt die Folge, die in geschweifte Klammern geschrieben wird. In unserem Fall, ist das die Konsolenausgabe „Zahl muss über null sein“. Nun kommt der, schon erwähnte, „else“ Teil, den wir genauso in geschweifte Klammern schreiben. In diesen habe ich die einzig mögliche logische Konsequenz gepackt. Nämlich, die Konsolenausgabe „Zahl muss über null sein“.
Eine Kontrollstruktur muss nicht immer
nur aus einer einzigen Bedingung bestehen. Wollen wir z.B. untersuchen, ob zwei
Zahlen grösser, kleiner oder gleich die andere ist, brauchen wir zwei
Bedingungen. Dafür können wir „else if“ verwenden. Damit sagen wir, dass die
folgende Bedingung überprüft werden soll, falls die erste nicht zugetroffen
hat.
var zahl1 = 30 var zahl2 = 30 if zahl1 > zahl2{ print("Zahl1 ist grösser") } else if zahl1 < zahl2{ print("Zahl2 ist grösser")
} else if zahl1 == zahl2{ print("Zahlen sind gleich gross") }
Du siehst schon, bei Kontrollstrukturen
dreht sich alles um Bedingungen. In der Programmierung gibt es verschiedenste
Möglichkeiten, Tatbestände zu prüfen. Es gibt allerdings immer wieder
Situationen, in denen man für eine Folge, mehrere Bedingungen erfüllen muss.
Ein konkretes Beispiel dafür, ist, dass eine Zahl in einem Bestimmten
Zahlenbereich sein muss z.B zwischen 1 und 10. Du wirst schnell merken, dass du
dafür mehrere Bedingungen brauchst. Im folgenden Beispiel siehst du eine
Kontrollstruktur, die zwei Bedingungen beinhaltet. Diese wurden mittels
„&&“ miteinander verknüpft. Die Konsolenausgabe, „die Zahl ist im
Zahlenbereich“ wird nur ausgeführt, wenn beide Bedingungen erfüllt sind. Das
heißt, die Zahl muss grösser als 0, aber gleichzeitig auch kleiner als 11 sein.
if zahl > 0 && zahl < 11{ print("Ist im Zahlenbereich") } else{ print("Muss im Zahlenbereich sein") }
Jetzt gehen wir eine Stufe weiter. Wir möchten eine Kontrollstruktur, die zusätzlich zu unserer bestehenden, aus dem letzten Beispiel, einen zweiten Zahlenbereich akzeptiert. Sie soll sowohl
1-10 als auch 100-110 annehmen. Allerdings sollen nicht beide erfüllt werden, das wäre ohnehin nicht möglich. Die Zahl darf sich also entweder im einen, oder anderen Zahlenbereich befinden. Das blau markierte Wort „oder“ ist für das Verständnis dieser Variante sehr wichtig, denn genau wie in der deutschen Sprache, verhält sich auch das Zeichen „||“ (alt + /), wie dieses.
var zahl = 10 if zahl > 0 && zahl < 11 || zahl > 99 && zahl < 111{ print("Ist im Zahlenbereich") } else{ print("Muss im Zahlenbereich sein") }
3.2 switch-case
Eine Kontrollstruktur muss nicht zwingend aus
einem if und einem else Teil bestehen. Unter Umständen kann es nützlich sein,
die sogenannte switch-case Kontrollstruktur zu verwenden. Sie ist besonders
dann hilfreich, wenn wir eine bestimmte Anzahl an Ausgängen bereits kennen und
eine dieser garantiert eintreffen sollte. Im folgenden Beispiel untersuchen wir
eine Person nach ihrer Funktion in einer Unternehmung. Switch-case ist so
aufgebaut, dass wir zunächst die zu untersuchenden Werte definieren. In unserem
Fall die Variabel name. Anschließend definieren wir die möglichen
Ausgangsfälle, oder auch cases. In unserer Unternehmung arbeiten vier Personen,
zwei davon als Berater. Dementsprechenden benötigen wir drei cases, wobei ein
case gleich bei zwei Mitarbeitern zutrifft. Bei zwei oder mehreren Fällen die
bei einem case zutreffen, trennt man diese mit einem Komma ab. Um die Folge zu
definieren, setzen wir ein Doppelpunkt hinter das case. Eine Besonderheit beim
switch-case ist der default. Er ist quasi wie ein Auffangbecken für alles was
nicht zutrifft. Anders als bei der if-else Kontrollstruktur, ist diese keine
logische Konsequenz aus einem Ausschlussverfahren, sondern für all das
zuständig was uns nicht weiter interessiert. In unserem Beispiel fängt der
default alle Personen auf, die nicht in unserer Unternehmung arbeiten.
var name = "Jonas"
switch name{
case "Ralf":
print("Kassierer")
case "Tom",
"Jonas":
print("Berater")
case "Andrea":
print("Logistiker")
default:
print("Die Person ist kein Mitarbeiter")
}