Welche Schleife soll ich wann benutzen?



  • @DocShoe hmm okay danke dir 😆👍🏽



  • @DocShoe Achso okay verstehe danke dir 👍🏽😆



  • @DocShoe sagte in Welche Schleife soll ich wann benutzen?:

    Jo, stimmt. Wie gesagt, ich benutzte while() Schleifen so gut wie nie, da habe ich mir um so Optimierungen keine Gedanken gemacht.

    Es geht dabei ja um Lese-Optimierung. Die while-Schleife wie im Vorschlag von @DirkB ist besser lesbar als dasselbe in einer for-Schleife.

    Solche Einleseschleifen wie "solange wie du Daten korrekt einlesen kannst (und die Daten gültig sind), ..." würde ich eher als while-Loop machen. Wenn du das als for-Loop machst, hast du das Einlesen einmal bei der Initialisierung und einmal als 3. Argument des fors.

    Im Gegensatz zu dir versuche ich for-Schleifen mit 3 for-Argumenten zu vermeiden. Obigen Fall würde ich also mit while lösen. Wenn möglich, würde ich for nur in der Range-For-Form nutzen, also for (const auto var& : container) { ... }. Daher meine Daumenregel: je komplizierter die Abbruchbedingung, desto while 🙂



  • @wob

    Persönliche Präferenz, würde ich sagen. Ich habe mich an das Lesen von for-Schleifen gewöhnt.



  • Ich kann mir vorstellen, dass wir in Zukunft auch mehr sowas hier sehen werden:

    for (auto i : integer_range(0, 10))
    
    for (auto data : data_reader(data_source))
    

    ... damit kann ich mich durchaus anfreunden, da man so read_data und data_valid elegant in einem Iterator verpacken kann und den Anwender nicht mit diesen Details belästigt. Schliesslich ist der aller Wahrscheinlichkeit nach nur daran interessiert, die Dateneinträge zu durchlaufen und muss vielleicht nicht unbedingt wissen, wie man diese liest, konkret abschreitet oder wie sie terminiert sind.

    Dennoch: Als Anfänger natürlich erstmal intim mit do/while/for und Range-for für Standardcontainer vertraut werden. Die oben gennanten Beispiele sind für Fortgeschrittene - zumindest wenn man sowas selbst implementieren will.



  • Ist jetzt vielleicht nicht im engeren Sinne eine "Schleife", aber es gibt auch noch die Möglichkeit mit 'goto' zu arbeiten. Die Lösung bietet sich an, wenn du ganz wilde Konstrukte hast (z.B. mehrere optionale "Absprung-Punkte" und mehrere unterschiedliche "Einsprung-Punkte").

    🤪



  • @meiru wenn du regelmaessig mit goto rumwurschteln musst, um halbwegs durch deinen code zu kommen, hast du ein groesseres problem als die entscheidung zwischen for und (do) while



  • @meiru vielen Dank, aber wir dürfen an der Uni kein 'goto' benutzen 😅



  • @Cardiac ich spiele nicht mit 'goto' herum wir dürfen es nicht benutzen 😅



  • @adii950 sagte in Welche Schleife soll ich wann benutzen?:

    Gude
    In C++ gibt es ja verschiedene Schleifen.
    Jetzt würde ich gerne wissen, wann man am besten welche Schleife benutzen soll.

    For loops allow you to iterate over an array.
    The for loop should be used when n times should be executed.
    For reading files into variables, use a while loop.
    When asking for user input, use a while loop.
    A while loop should be used when the increment value is nonstandard.
    The do-while loop is mainly used in the case where we need to execute the loop at least once.


Anmelden zum Antworten