Seite 1 von 1

Linked List - Ausnahmen in der Syntax? (gelöst)

Verfasst: 19.05.2006 20:13
von PureBaser
Hi @all!

Folgender Code funktioniert:

Code: Alles auswählen

ResetList(Namenliste())
NextElement(Namenliste())
Repeat
  PrintN(Namenliste()) ;gibt immer das nächste Element an
Until NextElement(Namenliste()) = 0
Normalerweise dürfte NextElement() nicht automatisch erfolgen, da es in der Schleife nicht aufgerufen wird. Ich hätte hier eher eine Endlos-Schleife erwartet.

Gegenbeispiel:

Code: Alles auswählen

ResetList(Namenliste())
NextElement(Namenliste())
  PrintN(Namenliste())
  PrintN(Namenliste())
  PrintN(Namenliste())
  PrintN(Namenliste())
Hier bleibt das Element hingegen wie erwartet beständig bleibt.

Ist das jetzt ein Ausnahmefall oder gibts ne logische Erklärung?

Verfasst: 19.05.2006 20:52
von Exabot
Hilfe hat geschrieben: Beispiel:

a=0
Repeat
a=a+1
Until a>100

Diese Schleife wird solange ausgeführt, bis "a" einen Wert > 100 ergibt. (Die Schleife wird 101 mal durchlaufen).
Warum sollte NextElement also nicht ausgeführt werden?

Gruß
Spider

Verfasst: 19.05.2006 21:01
von PureBaser
Ganz einfach:

Weil NextElement() außerhalb der Schleife steht. Die Bedingung sollte eigentlich daher nie erfüllt werden.

Verfasst: 19.05.2006 21:06
von ts-soft
NextElement befindet sich nicht ausserhalb der Schleife, sondern befindet sich im Fuß als Bedingung.
While NextElement()
wäre aber sinnvoller in diesem Fall, die Bedingung im Kopf zu testen

Code: Alles auswählen

ResetList(Namenliste())
While NextElement(Namenliste())
  PrintN(Namenliste()) ;gibt immer das nächste Element an
Wend

Verfasst: 19.05.2006 21:12
von Exabot
Wenn Du recht haben würdest, dann würde in dem Beispiel der Hilfe
a>100 niemals getestet, ergo würde eine Repeat .. Until Schleife niemals enden, es wäre also absolut sinnlos eine Endebedingung anzugeben.

In Deinem Beispiel wird "NextElement() = 0" als Endebdingung verwendet,
da NextElement eine Function ist muss diese Ausgeführt werden um einen Rückgabewert zu erhalten, der gegen 0 geprüft werden kann.

mfg

Spider

Verfasst: 19.05.2006 21:47
von PureBaser
Ahja, Erklärung ist Top! Nice weekend!