while Schleifen



  • Vielen Dank für eure hilfreichen Hinweise! 🙂


  • Mod

    DirkB schrieb:

    Wenn ich aber die Werte von der Schleifenvariablen/-zähler haben will und diese nicht bei 0 anfangen, kann man auch die obere Grenze einschließen.
    Dann sieht man gleich, ohne Rechnung, die Endwerte.

    Dann hast du aber gerade die beiden genannten Vorteile nicht mehr. Sei U die untere und O die obere Grenze:
    -Anzahl der Durchläufe ist nun O-U+1. Unintuitiv.
    -Damit Anzahl der Durchläufe 0 ist, muss O<U sein. Unintuitiv. Oder gar unmöglich, wenn man unsigned ab 0 hochzählen möchte.

    Im Fall, dass man ab 0 zählt, ist der Punkt

    -Man kann die Menge der Zahlen im Intervall direkt als (obere Grenze - untere Grenze) ablesen.

    halt noch doppelt vorteilhaft. Gilt aber trotzdem noch, auch wenn man ab 1 zählt.

    Ganz schlecht wäre hingegen eine Mischung der beiden Stile, wenn du nun einwenden solltest, dass man, wenn U > 0, die obere Grenze einschließen könnt und bei U = 0 eben nicht. Dann hinge die Lesbarkeit des Codes nämlich von Details des Vergleichsoperators ab und man müsste jedes Mal ganz genau hingucken.



  • In komplizierteren Fällen könnte sich mit while eine Endlosschleife im Kopf und ein Abbruch im Rumpf lohnen. Etwa so:

    int i = 0;
    int max = 20;
    while (1 < 2)
    {
       if(i > max) break;
       ......
       i++;
    }
    

    So mache ich in der Testphase das Prüfen einer Iteration, wenn das Abbruchkriterium mir noch nicht ganz sicher ist.



  • SeppJ schrieb:

    ... und man müsste jedes Mal ganz genau hingucken.

    Das muss man sowieso. 😉



  • Bei while (1 < 2) muss man doch überlegen.
    Ein while (1) ist gleich als Endlosschleife erkennbar.



  • Mich verunsichert, dass ich euch noch nicht lückenlos folgen kann... Muss ich mir Sorgen machen und Teile wiederholen? 😕


  • Mod

    cStart schrieb:

    Mich verunsichert, dass ich euch noch nicht lückenlos folgen kann... Muss ich mir Sorgen machen und Teile wiederholen? 😕

    Nein, dies sind eher Feinheiten von fortgeschrittenen Stilfragen. Wir missbrauchen hier schamlos deinen Thread für die Diskussion, weil das Thema in die Richtung schwenkte. Deine eigentliche Frage sollte beantwortet sein, oder?



  • Ja, das ist sie! Danke!
    So tobt euch weiter aus! 🙂

    Abschließend noch eine Frage, die auch gar nichts hiermit zu tun hat:
    Ich kann über die Uni kostenfrei MS Visual Studio 2012 Ultimate bekommen. Kann ich damit auch in C programmieren. Ich habe versucht diesbezüglich Informationen zu erhalten. Leider waren die nicht eindeutig. Danke!


  • Mod

    Der Standardcompiler vom VS kann auch C, aber nur C89. Die IDE kann man leider wohl nicht auf C umstellen, die ist immer im C++-Modus. Insgesamt mag Microsoft C wohl nicht sehr gerne 😉 .
    Ob das für dich genügend Gründe gegen VS sind musst du selber wissen. VS gilt ansonsten als eine exzellente Entwicklungsumgebung.

    Weiterhin: Die Ultimateversion von VS ist etwas, das wirst du niemals ausnutzen. Die Expressversion, die für reines Hobbyprogrammieren mehr als ausreichend ist, ist ohnehin kostenlos. Ultimate ist die Version für das allerprofessionellste Umfeld; für Unternehmen mit Hunderten oder Tausenden Programmierern, die gleichzeitig an einem Millionen-Dollar Projekt arbeiten.



  • Also dass ich den Umfang der Software niemals ausnutzen werde, stelle ich keineswegs in Frage! 🙂 Ich wollte die Möglichkeit jedoch nicht verschenken und mich deswegen mal schlau machen. Fazit: Finger weg und weiter mit VS 2010 Express üben und arbeiten. Danke.


  • Mod

    VS2010 ist bezüglich C ziemlich das gleiche wie VS2012. Die C-Unterstützung wurde nie wirklich gepflegt.



  • Microsoft bringt ca. alle drei Jahre ein neues VS raus. Überleg dir selber, wann du die Möglichkeiten von VS 2012 Ultimate nutzen kannst und wie veraltet es dann ist. 😉



  • SeppJ schrieb:

    VS2010 ist bezüglich C ziemlich das gleiche wie VS2012. Die C-Unterstützung wurde nie wirklich gepflegt.

    Mit VS2013 soll es aber eine erweiterte C99 (Library) Unterstützung geben:
    http://blogs.msdn.com/b/vcblog/archive/2013/07/19/c99-library-support-in-visual-studio-2013.aspx
    http://blogs.msdn.com/b/vcblog/archive/2013/06/27/what-s-new-for-visual-c-developers-in-vs2013-preview.aspx
    d.h. aber die C99 Sprach-Features bleiben wohl weg.

    Die Sutter-Leute sind halt faul, wie schon damals, als sie C++98/03 TR1 ankündigten und dann doch wieder im Kleingedruckten schrieben, dass sie die in TR1 geforderte C99-Library Unterstützung NICHT realisiert haben.
    `Q: How complete is your TR1 implementation?

    A: Our implementation contains everything in TR1 except sections 5.2 and 8 (http://open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf ). That is, we are shipping the Boost-derived components and the unordered containers.`
    http://blogs.msdn.com/b/vcblog/archive/2008/01/08/q-a-on-our-tr1-implementation.aspx?Redirected=true

    Je mehr ich mir die Aussagen des o.g. Herrn durchlese, je mehr hege ich Zweifel an seinem Geisteszustand.
    Sein Grundtenor zum Thema lautet ja: "Sie wollen C99 mit VStudio programmieren? Nehmen sie C++."


Anmelden zum Antworten