Warum beide: do while/until

Mir ist die Funktionsweise beider Arten bekannt (kopfgesteuert, kann keinmal bzw. fußgesteuert, mind. einmal).

Aber kann mir jemand sagen, warum es beide Formen gibt?

Gruß
Ulli (fragt nach dem Sinn mancher Befehle)

Weil du unabhängig vom Fall zu Fall die nehmen musst die besser passt. Du kannst bei der Fußgesteuerten Schleife auch alternativ eine If-Abfrage drum packen - was die Kopfgesteuerte erledigen kann.

Beispiel:
Wenn du eine Datei auslesen willst und Zeile für Zeile durchlesen willst prüfst du auf EOF im Kopf der Schleife, weil er erst gar nicht in die Schleife rein soll, wenn die Datei leer ist.

Weiteres Beispiel:
Du willst z.B. eine Berechnung 10 Durchläufe erledigen lassen dann zählst du von 10 immer eins runter und steigst aus, wenn du bei 0 angelangt bist, da reicht eine Fußgesteuerte Schleife, weil du davon ausgehen kannst dass du da auf jeden Fall rein musst, selbst vor dem ersten durchlaufen.

Generell gibt es in der Programmierung immer viele Wege die zum Ziel führen, die Kunst beim Programmieren ist ja, für jedes Problem die beste Lösung zu finden. :wink:

Viele Grüße
Frank

Hi,

eigentlich kann man Fußgesteuerte Schleifen immer auch mit Kopfgesteuerten Schleifen ersetzen und umgekehrt.
Für beides gibt es Problemstellungen bei denen der Eine Schleifentyp sich eleganter in den Ablauf integriert.

Gruß,
Thomas

Hallo Ulli,

übersetz dir mal die beiden Worte und du hast die Lösung
while - während
until - bis

Diese Beispiele sind kurz, aber erklärend:
http://msdn.microsoft.com/de-de/library/21daexkw(v=v…

Aber kann mir jemand sagen, warum es beide Formen gibt?

Ist so ähnlich wie mit der Krümmung einer Banane. Für mehr Antworten hilft vielleicht Wikipedia http://de.wikipedia.org/wiki/Schleife_(Programmierun…

Gruß
Ulli (fragt nach dem Sinn mancher Befehle)

Honeyhead (fragt nach dem Sinn hinter manchen Fragen)

Hallo Frank,
erstmal vielen Dank für Deine Antwort!

Beispiel 1: klarer Fall für While.
Beispiel 2: hätte ich mit For…to gelöst

Viele Wege führen nach Rom - klar :wink:
Aber gibt es ein Beispiel, wo Until notwendig ist, welches mit While nicht (zumindest ohne großen Aufwand) möglich ist?
D.h. braucht man Until?

Gruß
Ulli

Hallo Thomas,
sehe ich ähnlich.
Nur: Ich glaube eher auf Until verzichten zu können. Null mal durchlaufen läßt sich besser abfangen als min. einmal (wie bei Until)

Gruß
Ulli

Hallo Marco,
wie schon in der Frage geschrieben, die Funtionsweisen sind mir bekannt.

Aber warum beide Formen? Was kann Until, was While nicht kann?

Gruß
Ulli

Hallo Honigkopf,
siehe Kommentar zu Marcos Antwort.

Honeyhead (fragt nach dem Sinn hinter manchen Fragen)

Der Sinn diese Frage: Ist die Until-Form notwendig? Oder Relikt aus irgendeiner Vorgängersprache.

Hallo Ulli,

Hallo Honigkopf,
siehe Kommentar zu Marcos Antwort.

man sieht die Antworten der anderen Experten leider nur als Frager…

Honeyhead (fragt nach dem Sinn hinter manchen Fragen)

Der Sinn diese Frage: Ist die Until-Form notwendig? Oder
Relikt aus irgendeiner Vorgängersprache.

Ok, dann frag doch auch das…

Zugegeben benutze ich die Fußgesteuerten Schleifen sehr sehr selten. Und mir fällt jetzt auch kein Beispiel ein, wo man eine Fußgesteuerte Schleife unbedingt brauchen würde.

Vielleicht bei irgendwelchen Berechnungen, die öfters durchlaufen werden müssen, bis halt eine Bedingung erfüllt ist und man nicht im Voraus sagen kann wie oft sie durch läuft werden muss, nur dass sie mindestens einmal durchlaufen werden muss.

Du kannst natürlich den Code doppelt eintragen (vor der Schleife) um dann mit der Kopfgesteuerten Schleife überhaupt erst zu prüfen ob die Schleifen durchlaufen werden, dann hätte man den Code aber an 2 Stellen und müsste bei Veränderungen beide Stellen berücksichtigen.

Das auch eher eine Frage des Stiels, also wie man Programmiert. :wink: Solch ein Problem könnte man z.B. auch mit einer Rekursiven Funktion erschlagen.

Gruß Frank

Hallo,

hier wird das gut erklärt.
http://de.wikibooks.org/wiki/VBA_in_Excel_-_Grundlag…

Hallo Peter,
wie schon in der Frage geschrieben, die Funktionsweisen sind mir bekannt. Doch wofür braucht man beide Formen?
Was kann Until, was While nicht kann?

Hallo,

hier wird das gut erklärt.
http://de.wikibooks.org/wiki/VBA_in_Excel_-_Grundlag…

Hallo Ulli,

damit die Aufgaben, wo mindestens ein Durchlauf gebraucht wird, gelöst werden können.

Gruß

Heiko

Hallo Ulli,

warum kann ich dir nicht beantworten, aber siehe hier einen Artikel von Microsoft…
Do -> http://msdn.microsoft.com/de-de/library/eked04a7(v=v…
While -> http://msdn.microsoft.com/de-de/library/zh1f56zs(v=v…

Vielleicht hilft das dir weiter eine Lösung zu finden…

Andreas

Hallo Ulli!

Du schreibst „kopfgesteuert, kann keinmal bzw. fußgesteuert, mind. einmal“. Genau darum geht es!
Wenn die Entscheidung, ob die Schleife durchlaufen wird, bereits VOR dem ersten Durchlauf erfolgen MUSS, dann nimmst Du eine kopfgesteuertte Schleife.
Ist es dagegen erforderlich, die Schleife MINDESTENS EINMAL zu durchlaufen und dann zu entscheiden, nimmst Du eine fußgesteuerte.

Gruß Klaus