Noob Fragen (3)



  • Euer Noob hat mal wieder eine Frage. Nun habe ich mich mit der while-Schleife und der for-Schleife "auseinandergesetzt" . Ich habe sowohl mit dem while-loop als auch mit dem for-loop das selbe Problem gelöst.

    Für den for-loop:

    #include <iostream>
    using namespace std;
    int main ()
    {
    	int sum = 0;
    	for (int val = 50;val <=100; ++val)
    		sum +=val;
    	cout << " The sum of 50 to 100 inclusive is " << sum << endl;
    	return 0;	
    }
    

    Für den while-loop:

    #include <iostream>
    using namespace std;
    int main ()
    {
    	int sum =0;
    	int val =50;
    	while (val <=100)
    	{
    		sum += val;
    		++val;
    	}	
    	cout << "The sum of 50 to 100 inclusive is " << sum << endl;
    	return 0;
    }
    

    Nun wenn man mit beiden loops dasselbe Problem lösen kann warum gibt es dann 2 verschiedene? 😕



  • Bitte demnächst aussagekräftigere Titel verwenden wie
    "Noob Fragen (3): wann for, wann while?"

    In bevorzuge for, wenn ich vorher schon weiß, wie lange die Schleife geht.

    also for bei val<=100
    und while bei sum<=1000


  • Mod

    Nun wenn man mit beiden loops dasselbe Problem lösen kann warum gibt es dann 2 verschiedene?

    Merkst du keinen Unterschied zwischen den Code-Schnipseln in deinem Post?

    Der mit der for -Schleife ist kürzer und (laut allgemeiner Meinung) lesbarer. Das wars auch schon - Lesbarkeit. Es geht darum drei Dinge, die sehr oft in der gleichen Form vorkommen (Initialisierung, Abbruchbedingung, Inkrement) zusammenzufassen, damit der Code nicht durch solche für das Leserauge unnötigen Zeilen vollgemüllt wird.



  • Zählschleifen werden gewöhnlich für Iterationen über Daten genutzt, denn dort weisst du ja von vornerein, dass du den Schleifenrumpf n-mal ausführen willst.

    Bei While-Schleifen wartest du quasi dadrauf, dass deine Bedingung irgendwann mal erfüllt wird.

    Und wenn wir uns mal die Theoretiker Brille anziehen, dann ist es so, dass die For-Schleife immer terminiert (zu einem Ende kommt), was bei einer While-Schleife nicht der Fall sein muss (Stichwort: Berechenbarkeit mit LOOP- und WHILE-Programmen).



  • Spiele beispielsweise verwenden meist

    // Pseudocode
    game = true; 
    while(game) { 
      /* updateWorld(), ... */ 
      if(userHitsEscape())
        game = false;
    }
    

    um ein Spiel unabhängig vom Userinput laufen zu lassen. Mit For-Schleife würde das ziemlich eigenartig aussehen 🙂



  • Das war jetzt ein Beispiel für eine do-while-Schleife. 😉



  • DirkB schrieb:

    Das war jetzt ein Beispiel für eine do-while-Schleife. 😉

    Und die künstliche Variable game könnte weg.



  • Skym0sh0 schrieb:

    Und wenn wir uns mal die Theoretiker Brille anziehen, dann ist es so, dass die For-Schleife immer terminiert (zu einem Ende kommt)

    och, es gibt durchaus Möglichkeiten, eine for-Schleife unendlich lange laufen zu lassen 😉



  • Upps, stimmt. Ist noch früh :>...



  • daddy_felix schrieb:

    Skym0sh0 schrieb:

    Und wenn wir uns mal die Theoretiker Brille anziehen, dann ist es so, dass die For-Schleife immer terminiert (zu einem Ende kommt)

    och, es gibt durchaus Möglichkeiten, eine for-Schleife unendlich lange laufen zu lassen 😉

    Ja? Gibt es die ?
    Dann zeig mir mal ein LOOP-Berechenbares Programm, welches nicht terminiert...
    Wenn dus schaffst kriegsten Turing-Award, und das nicht von mir.



  • Skym0sh0 schrieb:

    daddy_felix schrieb:

    Skym0sh0 schrieb:

    Und wenn wir uns mal die Theoretiker Brille anziehen, dann ist es so, dass die For-Schleife immer terminiert (zu einem Ende kommt)

    och, es gibt durchaus Möglichkeiten, eine for-Schleife unendlich lange laufen zu lassen 😉

    Ja? Gibt es die ?
    Dann zeig mir mal ein For-Berechenbares Programm, welches nicht terminiert...

    for(;;)
    {
      cout << "Loop";
    }
    


  • Ok, du weist nicht wovon ich spreche.

    hier

    Ich muss mich selbst verbessern, ich hab LOOP-Programme als For-Programme bezeichnet. -.-



  • Skym0sh0 schrieb:

    Ich muss mich selbst verbessern, ich hab LOOP-Programme als For-Programme bezeichnet. -.-

    genau genommen hast du die Dinger als for-Schleifen bezeichnet... Bei der Bezeichnung "For-berechenbares Programm" dachte ich mir schon, dass wir da aneinander vorbeireden 😉



  • Ja -.-
    Shit, mein Fehler. Sorry, Kollege...


Anmelden zum Antworten