Schleifen

Schön das Sie zum siebten Teil unserer Reihe „Swift lernen“ über Schleifen angekommen sind.

In dieser Lektion lernen wir was Schleifen sind. Schleifen bieten uns die Möglichkeit Dinge zu wiederholen und dies wenn nötig an bestimme Bedingungen zu knüpfen. Sozusagen eine if-Kontrollstruktur mit Wiederholungen bis der Vergleich wahr ist.

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

for-Schleife

for-declarationDie forSchleife ist die wohl bekannteste Schleife und wohl diejenige die am häufigsten im Gebrauch sein wird. Swift bietet zwei Formen des for-loops. Ein konditionelle for-condition-increment Schleife oder die for-in loops um über Objekte mit Iteratoren zu iterieren.

for-condition-increment loop

Der for-condition-increment loop bietet uns die Möglichkeit eine Variable zu definieren, welche einen Index beinhaltet. Diesen Index benutzt man normalerweise um eine Kondition zu definieren. Diese könnte z.B. „Starte mit dem Index 0 und wiederhole dich solange bis du den Wert 10 erreichst.“ sein. Der Index selbst muss nach jedem Schleifendurchlauf erhöht oder verringert werden. Das Verhalten können wir je nachdem was wir bei dem increment Parameter angeben festlegen.

Wir schreiben das Schlüsselwort for  direkt gefolgt von einer Variablendeklaration und Initialisierung. Wir nennen unsere index-Variable schlichtweg „index“.

Wir trennen die Initialisierung dann mit einem Semikolon (;) von der Konditionsbeschreibung und schreiben unsere Bedingung, welche dafür sorgt das die Schleife so lange läuft bis der Vergleich wahr ist. Bei unserem Beispiel soll die Schleife solange laufen wie „index“ kleiner als „3″ ist. Erneut müssen wir ein Semikolon machen und nach diesem fügen wir unser increment ein. Das Inkrement bezieht sich im Normalfall auf die index-Variable. Diese soll in unserem Beispiel um eins erhöht werden. Dies erreichen wir durch den „++“-Operator welcher den aktuellen Wert der Variable um eins erhöht. Man könnte statt ++index  auch index = index + 1  schreiben. Wir lernen das post-increment und pre-increment in einem späteren Kapitel noch kennen.

Als letztes Schreiben wir dann noch unseren Code-Block der solange wiederholt wird bis die Schleifenbedingung erfüllt ist. Die Ausgabe des Beispiels gibt jeweils den Text „index ist bei: “ aus und dann den aktuellen Wert, der index-Variable. Schauen Sie sich die Konsolenausgabe doch einmal in der Debug Konsole an.

break

Es ist möglich Schleifen vorzeitig zu beenden. Dies erreichen wir mit dem Schlüsselwort break . Nehmen wir das Beispiel von oben und erweitern dieses ein wenig. Wir überprüfen ob die Variable „index“ gleich „2″ ist. Sollte dies der Fall sein beenden wir die Schleife mit dem Schlüsselwort break . Die Schleife wird unterbrochen und der nachfolgende Code wird ausgeführt.

continue

Mit dem Schlüsselwort   continue  können wir die Schleife dazu Anweisen den Code nicht weiter auszuführen und die Schleife von vorne zu beginnen. Dabei wird das Inkrement entsprechend unserer Regel erhöht. Man kann auch sagen das wir einen Durchlauf überspringen. Wir erweitern unser aktuelles Beispiel mit einer if-Kontrollstruktur und überprüfen ob die „index“-Variable den Wert „1“ hat. Sollte dies der Fall sein überspringen wir den aktuellen Durchlauf. Die Funktion print()  wird nicht ausgeführt und die Schleife startet ihren nächsten Durchlauf.

Das Schlüsselwort break  und continue  funktioniert in allen Schleifen die wir kennenlernen werden.

for-in loop

Dieser for-Loop sieht auf den ersten Blick deutlich kompakter aus als in dem oberen Beispiel. Wir haben das Schlüsselwort for  gefolgt von einem Variablennamen „nummer“ der nur in der Schleife verfügbar ist. Es folgt das Schlüsselwort in  an dem wir ein Objekt übergeben welches einen sogenannten Iterator hat. Was dieser Iterator ist werden wir später noch erfahren.

Für uns relevant ist momentan nur das 0..<5  ein sogenanntes Array von Zahlen erstellt. Sozusagen einen Container der Zahlen enthält. Die erste Zahl definiert wo der Zahlenbereich startet. Die zweite Zahl ist der Zahlenwert minus eins wo dieser endet. In Wahrheit endet der Zahlenbereich nicht bei 5 sondern bei 4. Es wird also 0, 1, 2, 3, 4 in den Container gespeichert. Das ist am Anfang noch ein wenig verwirrend, aber den dreh hat man schnell raus!

Was genau Arrays sind werden wir im Kapitel über Objektorientierung kennenlernen.

Nachdem wir die Schleife definiert haben schreiben wir nun unseren Code-Block, der bei jedem Durchlauf ausgeführt werden soll. Wir nehmen den aktuellen Wert der Variable „nummer“ und geben diesen mit der print()  Funktion aus. Wann aber endet die Schleife? Diese endet sobald das Ende unseres Containers erreicht wird. Also bei der Zahl Vier oder dem Fünften Element in unserem definierten Zahlenbereich.

Es gibt noch eine Schreibeweise die statt zwei Punkten und dem kleiner Zeichen drei Punkte hat. Wenn wir als 0...5  schreiben wird der Zahlenbereich komplett so wie wir Ihn geschrieben haben erstellt. Es werden also die Werte 0,1,2,3,4,5 in dem Container eingefügt. Die Schleife endet dann mit dem sechsten Element.

while loop

Im Gegensatz zu der for-Schleife hat die while-Schleife nur eine Bedingung als Parameter. Man schreibt das Keyword while  gefolgt von einer Bedingung. In unserem Fall haben wir eine Variable mit dem Namen „whileIndex“ initialisiert mit dem Wert „0″.

Als Bedingung geben wir an, dass die Schleife solange ausgeführt werden soll solange „whileIndex“ kleiner als „3″ ist. Wenn die Schleife ausgeführt wird geben wir den aktuellen Wert des Indexes aus und inkrementieren den „whileIndex“ um „1″. Nach drei Durchläufen ist die Bedingung erfüllt und die while-Schleife wird beendet.

repeat-while loop

Die repeat-while-Schleife ist vom Aufbau ähnlich der while-Schleife. Der Vorteil dieser Schleife ist das der Code-Block mindestens einmal ausgeführt wird, bevor die Bedingung überhaupt geprüft wird. Bevor die Schleife den zweiten Durchlauf macht wird die Bedingung, die hinter dem Schlüsselwort „while“ steht geprüft. Ein Schleife die sehr praktisch sein kann, aber nur sehr selten benutzen werden wird.

 


 

Aus unserer Erfahrung bei der Entwicklung mit dem Vorläufer von Swift – Objective-C – können wir  guten Gewissens schreiben, dass Sie im Laufe der Entwicklung fast ausschließlich mit for-Schleifen arbeiten werden. Diese ist in den meisten Fällen absolut ausreichend. Sie sollten sich primär den for-Syntax aneignen und wenn möglich praktizieren.

Für den Moment haben wir die für uns wichtigsten Schleifen kennen gelernt. In den praktischeren Teilen unserer Reihe werden wir regelmäßig gebrauch von Schleifen machen. Sie werden sehen das es viele nützliche Einsatzgebiete gibt in denen sie sich das doppelt und dreifach Tippen mit nur einer Schleife ersparen können.

Wie geht es weiter?

Wir sind am Ende unseres ersten Kapitels angekommen. In dem folgenden Kapitel schauen wir ein wenig genauer auf Operatoren und Schlüsselwörter die wir vor der Objektorientierung wissen oder kennen sollten. Sobald unser nächstes Kapitel über Operatoren und Funktionen fertig ist, werden wir dieses in diesem Artikel neu verlinken.

Über Feedback für den ersten Teil der Serie würden wir uns freuen!

Vielen Dank für das Durchhaltevermögen und weiterhin viel Spaß beim lernen von Swift!

Previous post

Swift lernen: Kontrollstrukturen

Next post

Erste Swift Tutorials online

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.

19 Comments

  1. rockyHacker
    10. Juni 2014 at 17:43 — Antworten

    Super!!
    Macht weiter!
    Gut finde ich, dass alles in Deutsch ist!!

    • 10. Juni 2014 at 20:19 — Antworten

      Hallo und vielen Dank für dein Feedback!

      Das mit der deutschen Sprache wird sich auch nicht ändern.
      Auf Englisch gibt es so viel Material und aus eigener Erfahrung können wir sagen, dass es uns auch deutlich leichter fällt diese Ding auf Deutsch zu lernen.

      Es ist manchmal ein wenig schwierig das technische zu Übersetzen, wir schrecken aber nicht davor zurück.

  2. Peter
    2. August 2014 at 18:48 — Antworten

    Einfach nur Super! Perfekt zum üben!
    Macht bitte weiter so wie ihr es aktuell macht!

    MfG

    Peter

  3. Philipp
    22. Oktober 2014 at 0:23 — Antworten

    Ich wollte für meine Ausbildung Swift lernen und bin auf eure Seite gestoßen. Respekt dafür das Ihr das alles auf deutsch macht. Lernt sich auf jedenfall etwas leichter als 🙂 weiß nicht wie objective-c aussieht aber das erinnert mich stark an c# oder php 🙂 macht weiter so 🙂

  4. Marco
    22. Oktober 2014 at 8:36 — Antworten

    Super, endlich mal in Deutsch (obwohl ich beim Durchlesen des Apple-Buches zu swift – gratis über Appstore geholt – halbwegs mitgekommen bin).

    Wie ist das in Swift mit den Buttons und Steppers und Sliders. Ist dies ähnlich wie bisher in objective-C? Braucht es eine Controller-Datei oder kann dies einfach in der Hauptdatei ähnlich wie bei objective-C eingegeben werden?

  5. alex
    22. Oktober 2014 at 17:11 — Antworten

    Hallo erstmal,

    vielen Dank für diesen super Kurs. Macht einem den Wiedereinstieg ins Programmieren doch deutlich leichter.
    Beim Ausprobieren eueres For-In-Loops kam ich allerdings ins schleudern.
    Er ging nicht. Alles Überprüft, kein Tipp-Fehler.

    Habe dann in Apples Entwicklerhandbuch gesucht. Da hat es einige Änderungen bei den Arrays gegeben.
    Das oben beschriebene Verhalten erreicht man nun über den Aufruf
    for nummer in 0..<5 { println(nummer)}

    mit dem Aufruf
    for nummer in 0…5 { println(nummer)}
    ist es nun möglich sich eine Zahlenreihe anzeigen zu lassen, welche mit der ersten Zahl, hier die 0 anfängt und mit der letzt genannten, also der 5 aufhört.

    hoffe ich kann mit dieser Erklärung einigen Helfen die vor dem selben Problem stehen.

    MfG
    Alex

    • 5. November 2014 at 20:17 — Antworten

      Hallo Alex

      Danke für diesen Hinweis!

      Grüße

      – Ralf

    • Christian Koch
      21. Januar 2016 at 14:23 — Antworten

      Hallo,

      Stand 2016: Bei mir funktioniert es.

  6. Stephan
    17. November 2014 at 3:58 — Antworten

    Schöne Swift Welt. Bisher konnte mir keiner nahe bringen wie ich Eingaben von der Tastatur einlese. Bei C war das der scanf Befehl.
    Ich habe schon soviele Tutorials gesehen. In keinem wird diese Thema behandelt. Das sind die Grundlagen einer Programmiersprache. Was nützt mir Swift wenn interaktive Eingaben nicht möglich sind.

    • Julian
      26. November 2014 at 10:52 — Antworten

      Hallo Stephan,

      Das kommt ein bisschen darauf an, was du genau vor hast. Wenn du die Eingabe in ein Textfeld verarbeiten möchtest, suchst du nach dem UITextFieldDelegate Protocol. Darüber bekommst du mit, wann der Benutzer seine Eingabe in ein Textfeld beendet hat bzw. etwas editiert wird usw. Über ein entsprechendes Outlet vom UITextField auf der GUI in den Quelltext kannst du dann den eingegebenen Text über eine Property lesen.

  7. Matthias
    17. Januar 2015 at 13:05 — Antworten

    Danke für Tutorials .
    Sehr gut zum Üben geeignet.

  8. Neuling
    9. April 2015 at 1:16 — Antworten

    Absolut Top!! Bitte mehr davon

  9. Janis
    20. Mai 2015 at 9:02 — Antworten

    Danke für die deutsche Schnelleinführung.
    Ich habe in den letzten Wochen viele Englische Tutorials gelesen, die mir die Grundlagen schon gut beigebracht haben. Aber das ganze dann auf Deutsch zu lesen erleichtert die Sache ungemein.

    Ich hoffe es kommt noch mehr von euch 🙂

    • 29. Mai 2015 at 10:58 — Antworten

      Danke! Es kommt noch mehr 🙂

      Ich muss gerade noch den Swift Blog zurückstellen, aber in ein paar Wochen geht es weiter. Leider bin ich Momentan das Problemkind warum es stockt.

  10. Robin
    20. August 2015 at 18:05 — Antworten

    Echt cool, nur bei der For-In-Schleife hat sich mittlerweile was geändert:
    Es sieht nicht mehr so

    for nummer in 0..5 {
    println(nummer)
    }

    sondern so

    for nummer in 0..<5 {
    println(nummer)
    }

    aus. MGF Robin

    • 21. August 2015 at 9:43 — Antworten

      Hi Robin,

      vielen Dank für deinen Hinweis. Wir sind stets bemüht alle Artikel und Videos auf dem aktuellen Stand zu halten.
      Derzeit arbeiten wir daran das Buch auf eben diesen Stand zu bringen. Der Blog wird unmittelbar danach folgen.

      Vielen Dank und beste Grüße
      – Ralf

  11. Maik
    29. Oktober 2015 at 17:11 — Antworten

    für mich ist es das erste Mal, dass ich mich ganz intensiv darum bemühe, eine Programmiersprache zu lernen. Bis hierhin bin ich gut zurecht gekommen. Auch ohne die Videos. Wenn man etwas älter ist, fällt einem das Lernen eben nicht so leicht. Aber ich hab so das Gefühl, dass ich es mit den Anleitungen hier gut schaffen könnte. Danke für Eure Mühe.

  12. Dustin
    3. November 2015 at 21:28 — Antworten

    Wirkliche sehr ausführlich und gut erklärt, fast etwas zu ausführlich;)

    Bitte weiter so machen!

  13. Tony
    29. Februar 2016 at 20:10 — Antworten

    Hi zusammen, super Blog. Bin Nicht-Programmierer aber gut eingestiegen. Gibt es bald mehr?

Leave a reply

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.