Kontrollstrukturen

Schön das Sie zum sechsten Teil unserer Reihe “Swift lernen” über Kontrollstrukturen angekommen sind.

In dieser Lektion lernen wir Dinge miteinander zu vergleichen. Vergleiche brauchen wir um Entscheidungen zu treffen. Dies kann z.B. eine Überprüfung sein ob ein Vorname einem bestimmen Wert entspricht oder ob A größer B ist.

Wir werden ständig Entscheidungen haben die unseren Programmablauf beeinflussen. Häufig z.B. die Überprüfung eines Passwortes. Hat der Benutzer das Passwort eingegeben, welches er auch bei der Registrierung genutzt hat? Wenn ja lassen wir ihn die App benutzen, sollte es aber falsch sein müssen wir dem Benutzer eine Fehlermeldung anzeigen.

In den folgenden Beispielen sehen wir uns verschiedene Möglichkeiten an um die ersten Vergleiche mit Kontrollstrukturen zu machen. Im Laufe unseres Tutorials werden wir weitere Bedingungen kennenlernen, die wichtigsten finden sie aber hier.

Für diesen Teil gibt es auch ein Video Tutorial hier auf YouTube.

Wahrheitswerte, Bool

Bei unseren Vergleichen erwarten wir einen Wahrheitswert. Dieser kann ja oder nein sein. Anders ausgerückt “true oder “false. Es handelt sich hierbei um Boolesche Variablen. Wenn wir unsere Bedingung schreiben ist das ganze wie in der Mathematik durch Operatoren beschreibbar. Einen genauen Blick auf Operatoren haben wir in einem späteren Kapitel.

In dieser Lektion werden wir uns den Größer-, Kleiner- und Gleich-Operator ansehen und verwenden.
Hierfür benutzen wir die mathematischen Zeichen “<“, “>” sowie “==” und “!=”.

IF-Kontrollstruktur

Eine Kontrollstruktur beginnt mit dem Keyword   if  gefolgt von einer Bedingung. Dies kann zum Beispiel   1 > 2  oder   2 == 2  sein. Danach öffnen wir eine Geschweifte Klammer “{” welche mit einer weiteren Geschweiften Klammer “}” geschossen werden muss. Eine Geschweifte Klammer können sie unter OS X mit gedrückter “Alt Taste + 8″ oder “Alt Taste + 9″ erstellen.

Die Geschweiften Klammern sind ein sogenannter “Code Block” der nur ausgeführt wird wenn die Bedingung erfüllt wird. Alle Variablen oder Funktionen die Sie innerhalb dieser Geschweiften Klammern erstellen sind nach Beendigung der Kontrollstruktur nicht mehr verfügbar. Alles was ausserhalb der Klammern ist steht ihnen aber zur Verfügung. Es handelt sich hierbei um den sogenannten “Scope”. Es gibt lokale und globale Scopes. Dieses Thema werden wir aber noch einmal separat in einer späteren Lektion behandeln.

Erster Vergleich

Wir definieren zwei Variablen mit dem Namen “a” und “b”. “a” hat den Wert “42” und “b” den Wert “40”. In unserem ersten Vergleichen möchten wir prüfen ob “a” größer “b” ist. Wenn dies wahr ist, also true – a > b – möchte ich den String anzeigen. Da der Vergleich in unserem Beispiel true ist sehen wir auf der rechten Seite auch unseren String “a > b”, den wir in den Geschweiften Klammern definiert haben.

Schauen wir uns hier das Gegenteil an. Was passiert wenn ich den Vergleich umdrehe? Ich frage also ab: a kleiner b beziehungsweise “a < b”. Wir werden feststellen das unser String dann rechts nicht mehr ausgeben wird, der Vergleich also unwahr is, also false.

Probieren Sie doch einmal aus die Variable “a” auf den Wert “39” zu setzen und schauen Sie was rechts passiert.

else

Wie oben bereits erwähnt kommt es vor das wir ein Passwort überprüfen und je nachdem den Login gewähren oder eine Fehlermeldung anzeigen möchten . In meinem Beispiel nehme ich hier aber wieder meine Zahlen, definiert durch die Variablen “a” und “b” zum einfacheren Verständnis. Wir nutzen für “a” wieder den Wert “42” und für “b” den Wert “40”.

Wenn eine Bedingung nicht zutrifft, “a” also kleiner “b” ist wird bei unserer Kontrollstruktur jetzt der “else” Teil ausgeführt. Dadurch das wir den “else” Teil jetzt programmiert haben, können wir auch auf beide Wahrheitsfälle reagieren, je nachdem ob etwas wahr oder unwahr ist.

else if

Mit “else if” haben wir die Möglichkeit mehrere Bedingungen und dazugehörige Code Blöcke zu definieren. Dies ist nicht immer sinnvoll und sollte aus unserer Sicht vermieden werden. Dennoch möchten wir es erwähnen. Schauen wir uns das folgende Beispiel an.

ifelseifelse

 

Wir definieren eine Variable “c” mit den Werten “0″, “1″ oder “2″. Sie können diese Werte zum Testen einfach verändern. Wir schreiben eine “if” Kontrollstruktur und als Bedingung prüfen wir ob “c” größer als “1″ ist. Mit “else if” prüfen wir eine zweite Bedingung falls die erste Bedingung nicht zugetroffen hat. Es wird geprüft ob “c” kleiner “1″ ist. Sollten beide Bedingungen nicht zutreffen können wir davon ausgehen das “c” gleich “1″ ist. In unserer Grafik sehen sie wie es sich auswirkt wenn wir die Zahl “c” verändern.

Strings vergleichen

Selbstverständlich können wir auch die Inhalte von Strings vergleichen. Um Strings zu vergleichen können wir ebenfalls den Vergleichsoperator “==” benutzen.

Wenn die Strings unterschiedlich sind kann auch ein “else” Teil definiert sein. Die Kontrollstruktur arbeitet also für Zahlen und Strings gleichermaßen.

Ungleich Operator

Ein weiterer Operator ist der Ungleich-Operator. Dieser definiert sich durch die Zeichen “!=“. Wenn ein String also nicht dem anderen entspricht wird der Code Block ausgeführt. Die Bedingung ist also wahr.

Im späteren Verlauf werden wir noch die switch-Anweisung kennenlernen. Diese Kontrollstruktur ist eine schöne alternative für Kontrollstrukturen mit vielen else-if vergleichen.

Wie geht es weiter?

Kontrollstrukturen sind ein wichtiger Schritt in den Grundlagen. Im nächsten Teil unserer Reihe “Swift lernen” werden wir Schleifen kennenlernen und das neu gewonnene Wissen mit einsetzen.

Previous post

Swift lernen: Ausgeben von Strings und Zahlen

Next post

Swift lernen: Schleifen

The Author

Stefan Mayer-Popp

Stefan Mayer-Popp

Stefan Mayer-Popp ist leidenschaftlicher Softwareentwickler, Fachbuchautor, Trainer und Berater aus dem Münchner Umland. Als passionierter IT- und Apple-Profi hat Mayer-Popp unzählige IT-Projekte in verschiedensten Branchen erfolgreich umsetzen und unterstützen können. Neben seiner Tätigkeit als Teamleiter bei CHECK24 teilt Mayer-Popp seine Erfahrungen auf IT-Veranstaltungen und propagiert Swift aktiv auf verschiedenen Meetups.

6 Comments

  1. Giuseppe Paternicola
    3. Juni 2015 at 12:59 — Antworten

    Guten Tag,

    Erstmal super Blog. Hab gerade das Buch Durchstarten mit Swift gekauft. Da ich neu in der Programmierung bin, bitte ich um Verständnis. Ich kenne den Unterschied zwischen if-else und switch nicht. Ist es schwer zu begreifen?

    Besten Dank für das Feedback.

    MfG
    Giuseppe

    • 3. Juni 2015 at 15:08 — Antworten

      Hallo Giuseppe,

      da musst du dir keine Sorgen machen. Der switch ist durchaus ein wenig komplexer in Swift, da im Gegensatz zu anderen Sprache, dieser mehr Möglichkeiten bietet.

      Am häufigsten wirst du in der Entwicklerwelt wahrscheinlich If/Else/Else-If antreffen.
      Wir wünschen dir viel Spaß mit dem Buch!

  2. Software Knife
    6. Oktober 2015 at 23:16 — Antworten

    Hallo Herr Popp,

    aus reiner Neugier scane ich Ihr Tutorials durch, um einiges über die Programmiersprache Swift zu erfahren. Dabei habe ich mir folgende Fragen gestellt, die Sie mir hoffentlich beantworten können:

    Ich habe bemerkt, dass die primitiven Datentypen Int, Double usw. groß geschrieben werden und als Sie in Ihren Videos eine Kommazahl geschrieben haben, tauchten nach dem Punkt Operator ‘.’ Vorschläge für Methodenaufrufe auf. Daher meine Frage: “sind alle Datentypen in Swift Klassen?”.

    In diesem Kapitel werden z.B. zwei Strings oder Integers mit dem Gleichheitsoperator == vergliechen. Daher meine Frage: “Werden Objekte in Swift auf dem Stack gespeichert oder werden Sie wie z.B. in Java auf dem Heap gespeichert und der Gleicheitsoperator wurde für Ints und Strings überladen?

    Beste Grüße

    • 25. Oktober 2015 at 15:28 — Antworten

      Hallo =)

      Das kommt ein wenig darauf an wie Intelligent ein Datentyp ein muss. Generell kann man aber sagen das alle Datentypen einer Enumeration, Struktur oder Klassen entspringen. Ein Aufteilung in Primitive Typen und Klassen/Strukturen wie in Obj-C/C++ haben wir glücklicherweise nicht.

      Grüße zurück =)

  3. 4. Februar 2016 at 23:18 — Antworten

    Hallo Guys von Swift Blog

    Als aller erstes: DANKE DANKE DANKE!! Bis jetzt läuft es Super, bin im Kapitel Kontrollstrukturen. Seit 3 Tagen immer wieder dran am probieren!
    Echt gute Beschreibungen- Hoffe ich kann bald mal selbstständig n Programm schreiben…

    Wieso ich aber diesen Text hier verfasse ist, weil ich einen kleinen Fehler entdeckt habe und zwar hier im Kapitel Kontrollstrukturen im Unterkapitel “ELSE”..
    Im Programm steht

    If a < b {
    (print "A ist grösser als B")
    }
    else …

    Ist zwar nur n kleiner Fehler, doch ich sehe wie professionel Sie arbeiten- deswegen die kurze Info 🙂

    Vielen Dank
    Ensar Basoglu

    • 18. Februar 2016 at 19:02 — Antworten

      Hallo Ensar,

      vielen Dank für dein Feedback und den Hinweis! In der zweiten Auflage ist dieser Fehler auch schon korrigiert. Trotzdem sind wie immer wieder Dankbar für aufmerksame Leser wie dich.

      Viel Erfolg noch und beste Grüße
      – Ralf

Leave a reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.