Schleifen

Die »if«-Bedingungen habe ich im letzten Artikel der Serie Einblicke in die Software Entwicklung vorgestellt. Schleifen sind mindestens genauso alltäglich. Und genau die sind heute Thema, im zweiten Teil zu Kontrollstrukturen. 

Schleifen in der Programmlogik

Codeabschnitte mehrfach zu durchlaufen ist ein großartiges Hilfsmittel. Schleifen machen genau das, sie ermöglichen es den starren Programmfluss »auf Wiederholung zu stellen«. Prominenter Anwendungfall ist die Verarbeitung von Arrays. Da muss eine flexible Lösung her. Man weiß zum Zeitpunkt der Entwicklung nicht, wie viele Elemente zur Laufzeit enthalten sind. Und selbst wenn, wird die gleiche Logik gemäß dem DRY-Prinzip nicht wiederholt implementiert. Das kann man über Funktionen abfangen. Diese x-fach manuell aufrufen, ist aber genauso unschön.

Typsische Eigenschaften

Es gibt unterschiedliche Schleifen. Wesentliche Eigenschaften haben sie alle gemeinsam. Charakteristisch ist ohne Frage die Grundidee, die wiederholte Ausführung von Programmlogik. Es gibt aber noch mehr.

Schleifenkopf

Im Schleifenkopf wird die Bedingung definiert. Ein Großteil der Schleifen arbeitet nach diesem Schema. Die Bedingung wird dem auszuführenden Code vorangestellt. Beispiele sind z.B. die while- oder for-Schleife. Diese Art bezeichnet man als kopfgesteuerte Schleifen. Das Gegenteil sind fußgesteuerte Schleifen. Dort wird die Bedingung nach dem Code definiert. Die Details variieren aber je nach Programmiersprache.

Bedingungen zur Ausführung

Die Wiederholung muss über eine Bedingung kontrolliert werden. Je nach Schleifentyp wird diese vor oder nach einem Durchlauf ausgewertet. Das Ergebnis der Kontrolle kann verschiedene Folgen haben. Dafür gibt es unterschiedliche Strategien.

Eine sogenannte Laufbedingung ist die erste Option. Sie sorgt für die Ausführung, solange die Bedingung nach einem Durchlauf »wahr« ist. Eine Abbruchbedingung ist das Gegenteil. Die Schleife wird beendet, wenn die Bedingung »wahr« ist.

Schleifenkörper

Der Quellcode, der pro Durchlauf ausgeführt wird, steht im sogenannten Schleifenrumpf oder Schleifenkörper. Der steht entweder nach dem Schleifenkopf oder vor dem Schleifenfuß, je nach Schleifenart. Im Rumpf wird der auszuführende Code hinterlegt.

Schleifenarten

Es gibt unterschiedliche Schleifen. Welche zur Verfügung stehen definiert die Programmiersprache. Die stellt die Funktionalität bereit. Zwei der Grundarten sind die while- und die for-Schleife. Die meisten Sprachen unterstützen sie.

for-Schleifen

Das Schlüsselwort in der Syntax für die Schleife ist »for«. Daher stammt der Name. Im Schleifenkopf wird eine Bedingung definiert. Zusätzlich wird ein sogenannter Schleifenzähler definiert. Der wird genutzt, um die Durchläufe zu nummerieren. Die Technik wird bspw. bei der Array-Verarbeitung genutzt. So kann man Schritt für Schritt jedes Array-Element ansprechen. Ein allgemeines Beispiel:

Der Schleifenkopf einer »for«-Schleife besteht aus drei Segmenten. Die werden durch ein Semikolon getrennt:

for (… ; … ; …)

Das erste Segment wird nur beim ersten Durchlauf evaluiert. Es erzeugt die Variable »i« und weist den Wert »1« zu.

Das zweite Segment enthält die Schleifenbedingung, bei einer Schleife vom Typ »for« handelt es sich um eine Laufbedingung. Wenn die Bedingung wahr ist, wird ein Durchlauf ausgeführt. Im Beispiel wird die Frage gestellt, ist der Wert von »i« kleiner oder gleich 5? Die Antwort ist bei der ersten Prüfung natürlich »wahr«: 1 ≤ 5 ist wahr. Dann folgt der erste Schleifendurchlauf. Ausgegeben wird der Inhalt von »i«, die Zahlen eins.

Nach dem Durchlauf wird dann das dritte Segment ausgeführt. Dies modifiziert den Schleifenzähler. Im Beispiel wird die Variable »i« Inkrement, der Wert also um »1« erhöht. Die zweite Prüfung ist nun die Frage, ist 2 ≤ 5? Es erfolgt also ein zweiter Durchlauf usw.

Der letzte Durchlauf ist der Fünfte. Die Bedingung wird bei 5 ≤ 5 das letzte Mal erfüllt. Einen sechsten Durchlauf gibt es nicht, da 6 ≤ 5 als »falsch« ausgewertet wird.

while-Schleifen

Eine »while«-Schleife ist der »for«-Schleife ähnlich. Beide Schleifen sind kopfgesteuert und es gibt eine Laufbedingung. Unterschiedlich ist der Kopf. Es gibt nur ein Segment, die Bedingung:

Ein Schleifenzähler muss vorab erstellt und innerhalb der Schleife modifiziert werden. Das ist nicht falsch und auch kein Nachteil. Jedes Szenario braucht andere Lösungen.

Fazit

Schleifen sind in der Entwicklung nicht zu ersetzen. Es gibt ganz verschiedene Lösungen. Welche zur Verfügung stehen, hängt von der eingesetzten Sprache ab. Die beiden Grundarten, »for«- und »while«-Schleifen, werden jedoch meist unterstützt. Im nächsten Artikel schauen wir uns Funktionen genauer an.

Schreib einen Kommentar

Your email address will not be published.