Autor Beitrag
Jogeth
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 15.02.21 17:21 
Hey Leute :)

Bezüglich der Schleifen fehlt mir irgendwie eine Information. Ich lernte jetzt (die?) 4 Schleifentypen While; Do_While; For und Foreach kennen. Alles kein Problem soweit.
Jedoch:

Mir erschließt sich nicht so ganz der Grund, warum es diese 4 Schleifentypen überhaupt gibt.

  1. Wurden diese Schleifentypen nacheinander in C# eingeführt?
  2. Ist möglicherweise der While-Typ der älteste der Schleifentypen?


Wann sollte man lieber eine While-Schleife verwenden? Gerade dieer Schleifentyp kommt mir am nutzlosesten vor.
Kurzum: Mir fehlt ein wenig, wann oder für was welcher Schleifentyp gedacht ist.

Ich hoffe, ihr könnt mir da etwas Licht ins Dunkel bringen :)

Liebe Grüße!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 15.02.21 18:18 
Die meisten dieser Schleifentypen gibt es auch in anderen Sprachen (C, C++, Java, ...).
Die beiden Schleifentypen for und foreach nimmt man für Aufzählungen, while und do...while sind allgemeingültiger und werden benutzt, um eine bestimmte Bedingung abzufragen (z.B. eine bestimmte Taste gedrückt, ein Flag gesetzt, etc.).

Technisch gesehen kann jede Zählschleife auch als while-Schleife geschrieben werden (d.h. der Compiler übersetzt quasi beide Formen in ähnlichen IL-Code).

Für diesen Beitrag haben gedankt: Jogeth
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 15.02.21 20:08 
Diese Schleifentypen sind älter als C# und erfüllten ursprünglich unterschiedliche Dinge. Foreach ist ein relativ neuzeitliches Ding.
Der genaue Syntax ist mit der Zeit mächtiger geworden (auch allgemein unabhängig von C#) so das man bei einigen Schleifentypen der Meinung sein kann das sie überflüssig sind weil man das gleiche auch mit einem anderen Schleifentyp ausdrücken kann.
Jeder halbwegs erfahrene Entwickler würde in einer c-artigen Sprache aber was vermissen wenn es diese Schleifentypen nicht gäbe.
Das es alle gibt ist möglicherweise auch ein Ausdruck das es schwer ist Dinge aus Sprachen wieder zu entfernen die einmal drin waren (alter Code der nicht mehr kompilieren würde)

Ich würde die so unterscheiden (anhand ihrer ursprünglichen Bedeutung) und es auch erstmal so interpretieren wenn ich die Schleifen im Sourcecode finde.

while => Berechnete Abruchbediengung zwischen 0 und N Ausführungen
do while => Berechnete Abruchbediengung zwischen 1 und N Ausführungen
For => N eigentlich schon vorher bekannte Anzahl von Auführungen (mit einem möglicherweise hilfreichen Indexer)
Foreach => mach was für alle Elemente einer Aufzählung

Ja ich kann auch in einer For Schleife wie beim While eine komplexe Abbruchbedienung definieren und denn Indexer ignorieren nur das würde niemand (mit ein wenig Erfahrung) tun weil die Wahl der Schleife eben auch eine Intention ausdrückt und wenn jemand anderes den Code warten muss seine arbeit erschweren.

Übrigens ein Lob das du den "IF" nicht mitgezählt hast :wink: Generationen von Programmieranfängern haben schon von IF-Schleifen erzählt.

Für diesen Beitrag haben gedankt: Jogeth
Jogeth Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 15.02.21 21:10 
Ah super! Danke für die coolen Antworten, die mir sehr weiterhelfen :D

Hatte es mir schon beinahe gedacht, dass die Schleifen aus 'verschiedenen Ecken' gekommen sind und jetzt auf Neulinge wie mich einen unter Umständen irritierenden Eindruck machen 8)

Top Antworten, ein großes Dankeschön an euch beide! :wave:

PS: Ja, da lob ich mal die Bücher, die ich mir besorgt habe. Das "Kleine Anfängerbuch" (so nenne ich es hier mal), hat gleich klargestellt, dass die If Anweisung eine Verzweigung ist. :mrgreen: