Programmieren in C

while-Schleifen in C

Inhaltsübersicht

Du möchtest mehr über die while-Schleife in C erfahren? Hier erklären wir dir, wann und wie du die while-Schleife verwenden kannst.

 

while-Schleife C: Wann werden while-Schleifen verwendet?

In C gibt es neben den for-Schleifen auch noch while-Schleifen. In dieser Programmiersprache sind sie die meistverwendeten Schleifen. Also pass gut auf, denn du wirst sie oft benötigen. Sie besitzen wie die for-Schleifen einen Schleifenrumpf und einen Kopf. Während der Rumpf aber bei beiden Arten exakt gleich funktioniert, sind ihre Köpfe unterschiedlich.

while-Schleife C
Unterscheidung while- und for-Schleife

Im Gegensatz zur for-Schleife befindet sich im Schleifenkopf unserer while-Schleife nur eine Bedingung, keine weitere Anweisung oder gar Wertzuweisung. Jedoch entscheidet auch hier die gegebene Bedingung, ob unsere Schleife ausgeführt wird oder nicht. Dadurch, dass unsere Zählvariable fehlt, werden unsere Durchläufe allerdings nicht mitgezählt.

Syntax while-Schleife C

Nach der Ausführung oder Nicht-Ausführung der Schleife wird unser Programmcode darunter ausgeführt. Dazu schauen wir uns jetzt ein Beispiel an. Wir haben hier eine ganz simple Supermarktkasse. Statt Strichcodes geben wir der Einfachheit halber allerdings die Preise unserer Waren von Hand ein.

Damit eine while-Schleife korrekt funktionieren kann, musst du drei Schritte befolgen. Als erstes müssen wir unsere Variablen außerhalb der Schleife initialisieren. Das heißt, wir deklarieren unsere Variablen nicht nur, sondern weisen ihnen auch Standardwerte zu.

Also erstellen wir hier zwei Variablen vom Typ float, da es sich bei Preisen meist um Dezimalbrüche handelt. Die erste wird später unsere Input-Variable, mit der wir Werte einlesen. Die zweite verwenden wir, um die Gesamtsumme des Einkaufs zu berechnen.

while-Schleife C
Syntax

Danach kommen wir auch schon zum zweiten Schritt: Der Bedingung. Wann wollen wir unsere Schleife beenden? Wir haben uns hier für den Wert 0 entschieden, denn was kostet schon nichts? Dabei ist es – vor allem bei dieser Art der Anwendung – wichtig, den Nutzer darauf hinzuweisen, wie er die Schleife beenden kann und natürlich wie er einen Wert wählen kann, der nicht als normale Eingabe in Frage käme. Außerdem solltest du darauf achten, dass die Bedingung überhaupt erfüllt werden kann. Andernfalls kommt es nie zur Ausführung deines Anweisungsblockes innerhalb der Schleife.

Der dritte und letzte Schritt ist der Grundstein für die Terminierung der Schleife. Damit sie nicht endlos weiterläuft, musst du noch Anweisungen einfügen. Diese verändern die Werte der Variablen, die Teil der Bedingung sind. In unserem Fall erledigen wir das mittels der scanf-Funktion. Jetzt müssen wir unser Ergebnis nur noch ausgeben und fertig ist unsere Kasse!

do-while C

Es gibt aber nicht nur eine Version der while-Schleife. Viele Applikationen benötigen mindestens eine Eingabe. Dann bleibt einem nur die Wahl, eine Bedingung zu suchen, die beim ersten Mal auf jeden Fall erfüllt ist oder eine do-while-Schleife zu verwenden. Konkret sieht eine solche Funktion so aus:

do-while-Schleife C
Syntax

Bei diesem Beispiel handelt es sich um einen Geschwindigkeitsrechner, der aus gelaufener Distanz und Zeit die Durchschnittsgeschwindigkeit errechnet. Dabei nutzen wir unsere do-while-Schleife, um einzelne Rundenzeiten einzulesen und zu kumulieren. Wir verwenden hier eine do-while-Schleife und keine while-Schleife, weil unser Läufer bestimmt mindestens eine Runde schaffen wird.

Diese bauen wir folgendermaßen auf: Zuerst schreiben wir ganz einfach ein do an den Anfang. Direkt darauf folgt auch schon unser Anweisungsblock und als letztes die Bedingung. Wichtig ist hier, dass, im Gegensatz zu „normalen“ while-Schleife, nach dem Ende der Bedingung ein Semikolon gesetzt werden muss. Wie du siehst, besteht zwischen den beiden Schleifen kein so großer Unterschied, jedoch sollte man durchaus wissen, wie man beide verwendet.

 

Beenden der Schleife

Nun gibt es aber, zusätzlich zu den eben gezeigten, passiv terminierten Schleifen, auch noch die Möglichkeit, diese aktiv zu beenden. Wir können sie ganz einfach abbrechen oder sogar in ihnen springen. Das ist sehr praktisch, da es uns ermöglicht, sogenannte Endlosschleifen einzusetzen, ohne wirklich für immer in einer Schleife gefangen zu sein.

while-Schleife C
Schleifen abbrechen

Nehmen wir doch einfach unser Beispiel mit der Supermarktkasse von vorhin und bauen es um. Nun sieht man, dass die Bedingung unserer while-Schleife nun einfach eins ist. Wie wir bereits wissen, ist eins in C immer wahr, weshalb unsere Schleife endlos wiederholt werden würde. Deswegen haben wir in den Anweisungsblock der Schleife selbst eine if-Anweisung eingefügt, die nun die Aufgabe unserer Bedingungskontrolle erfüllt. Dieses Abbrechen erscheint dir jetzt vielleicht etwas umständlich. Es kann aber auch sehr hilfreich sein. Das ist der Fall, wenn einige Anweisungen der Schleife für den ersten ungültigen Wert trotzdem ausgeführt werden sollen oder der ungültige Wert erst während des Ausführens des Anweisungsblockes zustande kommt.

In Schleifen springen

Aber wir hatten ja auch etwas von Springen gesagt. Dazu kommen wir jetzt. Statt einfach nur herunterzuzählen, wollen wir, dass es nur jede zweite, und zwar nur jede gerade Zahl ausgibt.

while-Schleife C
in Schleifen springen

Dazu fügen wir in unsere Zählschleife eine if-Bedingung ein, die, überprüft, ob die aktuelle Zahl durch zwei teilbar ist. Sollte sie das nicht sein, so benutzt sie den continue-Befehl. Dieser bewirkt, dass alle restlichen Anweisungen des Schleifenrumpfes übersprungen werden und direkt mit dem Schleifenkopf fortgefahren wird. Das bedeutet, wir lassen bei jeder ungeraden Zahl unsere printf-Funktion aus. Das ist bei einer for-Schleife überhaupt kein Problem. Bei einer while- oder do-while-Schleife musst du allerdings aufpassen, dass du dich nicht aus Versehen wieder in einer Endlosschleife verfängst. Das kann dir nämlich passieren, wenn du die Werte ändernden Anweisungen übersprungen hast.

Hallo, leider nutzt du einen AdBlocker.

Auf Studyflix bieten wir dir kostenlos hochwertige Bildung an. Dies können wir nur durch die Unterstützung unserer Werbepartner tun.

Schalte bitte deinen Adblocker für Studyflix aus oder füge uns zu deinen Ausnahmen hinzu. Das tut dir nicht weh und hilft uns weiter.

Danke!
Dein Studyflix-Team

Wenn du nicht weißt, wie du deinen Adblocker deaktivierst oder Studyflix zu den Ausnahmen hinzufügst, findest du hier eine kurze Anleitung. Bitte lade anschließend die Seite neu.