Schleifenvergleich

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Schleifenvergleich

Beitrag von bluejoke »

Hallo!

Mich würde mal interessieren, welchen Vorteil die For-Schleife gegenüber den beiden (sind doch 2, oder? Foreach zählt für mich nicht dazu) Alternativen hat, oder ob es außer der Schreibweise überhaupt Unterschiede gibt.
Ich hab mir nämlich früher angewöhnt, eine Repeat- oder eine While-Schleife zu nehmen, und in dieser Schleife eben eine Zählvariable hochzuzählen.

Ist die For-Schleife im Vergleich dazu besser, oder ist das nur übersichtlicher.

Vielen Dank,

Simon
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Hier werden alle Schleifenmöglichkeiten gut erklärt.

http://www.computerbase.de/lexikon/Schl ... ammierung)

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Also folgendes:

1.)Repeat ist eine sogenannte Fussgesteuerte Schleife, das heißt, es wird jeweils am Ende der Schleife die Bedingung überprüft. Somit wird sie mindestens 1 mal durchlaufen, bevor der Erste Test stattfindet.

2.)Die WhileSchleife ist eine Sogenannte Kopfgesteuerte Schleife, genau wie die Forschleife.

Eine Forschleife ist eigentlich ein

Code: Alles auswählen

a=1
ende=10
steps=1
While a<=ende
    debug a
    a=a+steps
Wend
Somit gibt es keinen Unterschied zwischen den beiden, ausser der Übersichtlichkeit. Und, man kann bei der WhileVariante variable steps nehmen, du kannst zum beispiel schreiben:

Code: Alles auswählen

a=1
ende=10
steps=1
While a<=ende
     debug a
     if a=5
          steps=2
     endif
    a=a+steps
Wend
aber nicht :

Code: Alles auswählen

steps=1
For a=1 to 10 step steps
     debug a
     if a=5
          steps=2
     endif
next 

http://www.robsite.de/php/pureboard-arc ... t=schleife
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Dankeschön,

interessiert hat mich vor allem obs Geschwindigkeitsunterschiede gibt.
War aber auch interessant dieses Verhalten bei den For-Schleifen zu erfahren, da hätte ich wohl gestutzt, wenn ich das ausprobiert hätte.

Was ich mich noch frage ist, ob es eine messbare Veränderung der Prozessorauslastung gibt, wenn ich verschiedene Schleifen benutze, oder wenn ich eine Schleife mal mit break abbreche.


EDIT: Mir gehts hier nicht unbedingt um die Praxis-Frage, weil der Unterschied, um in der Praxis irgendwas zu bedeuten, wohl viel zu gering ist, sondern nur um die theoretische Frage des Unterschieds zwischen den Schleifen.
Und auch nicht um den Unterschied beim Abarbeiten (kopf- oder fußgesteuert u.s.w.)
Antworten