Rikola: Warum heißt in for-Schleifen der Zähler immer i

Hallo an alle!

Vor kurzem sind wir beim Arbeiten auf die Variable "i" bzw "$i" zu sprechen gekommen. Wir fragen uns warum der Zähler in for-Schleifen eigentlich immer "i" heißt.

Jeder machts, jeder hats so gelernt und in fast allen Büchern wird "i" verwendet. (Okay, teils auch x, aber das seh ich inzwischen nur noch vereinzelt) Aber warum "i"? Warum nicht z.b. "a"?

Gibts da irgendeinen historischen Grund dazu? Weiß jemand mehr?

Viele Grüße
Rikola

  1. [latex]Mae  govannen![/latex]

    Gibts da irgendeinen historischen Grund dazu? Weiß jemand mehr?

    Nee, keine Ahnung. Könnte mir aber vorstellen daß es etwas mit  "to increment" (hochzählen) zu tun hat

    Cü,

    Kai

    --
    A workaround for an avoidable problem often adds clutter and overhead to the program which
    could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
    Foren-Stylesheet Site Selfzeug JS-Lookup
    SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
    1. Gibts da irgendeinen historischen Grund dazu? Weiß jemand mehr?

      Nee, keine Ahnung. Könnte mir aber vorstellen daß es etwas mit  "to increment" (hochzählen) zu tun hat

      Genau.

      Struppi.

      1. (Hallo|Hi(ho)|Nabend) Struppi,

        Nee, keine Ahnung. Könnte mir aber vorstellen daß es etwas mit  "to increment" (hochzählen) zu tun hat

        Genau.

          
        for (i = 100; i > 0; --i) {  
        }  
        
        

        *SCNR*

        MffG
        EisFuX

        1. @@EisFuX:

          nuqneH

          for (i = 100; i > 0; --i) {
          }

          Flasch!!1elf Es muss heißen for (d = 100; d > 0; --d)

          SCNR²

          Qapla'

          PS: Der Vergleich ist wohl überflüssig und frisst nur sinnlos Rechenzeit. (d = 100; d; --d) oder gleich (d = 100; d--;) sollte genügen.

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
          1. Hi!

            Flasch!!1elf Es muss heißen for (d = 100; d > 0; --d)
            PS: Der Vergleich ist wohl überflüssig und frisst nur sinnlos Rechenzeit. (d = 100; d; --d) oder gleich (d = 100; d--;) sollte genügen.

            Nein, denn bei deinen ersten beiden Varianten geht der Wert der Laufvariable von 100 bis 1, bei der dritten von 99 bis 0. d wird nach dem Vergleich dekrementiert aber noch bevor der Schleifenkörper ausgeführt wird und geht damit mit eins weniger in die Runden. Wenn du Wert auf den Wert von d legst, musst du dir was anderes ausdenken.

            Im Allgemeinen tragen solche zwar funktionierenden aber "kryptischen" Abkürzungen wenig zur Laufzeiteinsparung bei, führen aber eher zur erschwerten Verständlichkeit des Codes. Wenn es also nicht aufgrund sehr hohen Rechenaufwandes auf jede eingesparte Anweisung ankommt, ist es nicht empfehlenswert solcherart Abkürzungen unbedingt einsetzen zu wollen. Ein Entwickler kostet in der Regel mehr als die nächstgrößere CPU.

            Lo!

  2. @@Rikola:

    nuqneH

    Wir fragen uns warum der Zähler in for-Schleifen eigentlich immer "i" heißt.

    In der Mathematik gibt es für Bezeichner ungeschriebene Gesetze:

    a, b, c – reelle Variablen, Parameter
    x, y, z – reelle unabhängige Variablen
    m, n    – natürliche Variablen
    i, j, k – Indizes, natürliche Laufvariablen

    Bspw. die binomische Formel:
    [latex]\left( a + b \right)^n = \sum_{i=1}^n \binom n i a^{n-i} b^i[/latex]
    a und b sind (feste) reelle Zahlen, n ist eine (feste) natürliche Zahl, i ist der Laufindex in der Summe.

    Vermutlich wurde das so in die Programmierung übertragen.

    Qapla'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
    1. In der Mathematik gibt es für Bezeichner ungeschriebene Gesetze:

      Ah, ja das hört sich logisch an. Tja, das Unwissen kommt davon, wenn man Mathe bloß bis zur Mittleren Reife gehabt hat, danach auf BWL umgeschwenkt hat und jetzt trotzdem meint, man müsse Scripte schreiben. ;-)

      Danke für die Aufklärung.

    2. @@Gunnar Bittersmann:

      nuqneH

      Bspw. die binomische Formel:
      [latex]\left( a + b \right)^n = \sum_{i=1}^n \binom n i a^{n-i} b^i[/latex]

      Argl, i muss natürlich bei 0 anfangen zu laufen.

      Qapla'

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      1. Argl, i muss natürlich bei 0 anfangen zu laufen.

        sing... tänzel... lalala ... Kalender zück ... seltenes Ereignis extra rot anstreich ... sing ... tänzel

        SCNR *grins*

        1. @@krischi:

          nuqneH

          sing... tänzel... lalala ... Kalender zück ... seltenes Ereignis extra rot anstreich ... sing ... tänzel

          Seltenes Ereignis?? Du weißt, unter welchem Namen Ingrid-Postings hier im Forum laufen?

          SCNR *grins*

          _Jetzt_ darst du lachen.

          Qapla'

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
  3. Vor kurzem sind wir beim Arbeiten auf die Variable "i" bzw "$i" zu sprechen gekommen. Wir fragen uns warum der Zähler in for-Schleifen eigentlich immer "i" heißt.

    Gilt nur für das  for(;;){}  Konstrukt

    Schleifenzähler haben in den vielen Sprachen einen beschränkten Scope.
    Von daher berechtigt sich ein kurzer Name.
    Schleifenzähler sind Integerwerte. Das kommt dem i wie Integer zugute.

    Nicht zuletzt ist diese Konventionen eine Verschwörung von Mnemotik und Faulheit.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Hi!

      Schleifenzähler sind Integerwerte.

      Mitnichten. Nicht nur, dass im Allgemeinen jeder beliebige Zahlentyp verwendet werden kann, der von der Programmiersprache unterstützt wird, es sind in einigen Sprachen und Anwendungsfällen auch ganz andere Konstrukte möglich.

      for ($x = 0.815; $x < 23.42; $x *= 3.14)
      for (; true; ) // Endlosschleife
      for ($row = fetch(); $row; $row = fetch()) // umständlichere Alternative zu: while ($row = fetch())
      ...

      Lo!

      1. @@dedlfix:

        nuqneH

        Schleifenzähler sind Integerwerte.

        Mitnichten.

        Doch.

        Nicht nur, dass im Allgemeinen jeder beliebige Zahlentyp verwendet werden kann, der von der Programmiersprache unterstützt wird, es sind in einigen Sprachen und Anwendungsfällen auch ganz andere Konstrukte möglich.

        Dann sind es aber keine Schleifenzähler.

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
        1. Hi!

          Schleifenzähler sind Integerwerte.
          Mitnichten.
          Doch.

          Gut, dann muss das umformuliert werden: Es ist zwar oftmals ein Zähler, aber das muss es nicht sein. Besser ist der Begriff Laufvariable. Die impliziert nicht, dass da was (im Abstand von 1) gezählt werden muss. Und - wie in den Beispielen schon angedeutet - ist nicht zwingend eine eine Laufvariable erforderlich, es können auch keine oder mehrere sein.

          Lo!

    2. hi,

      Nicht zuletzt ist diese Konventionen eine Verschwörung von Mnemotik und Faulheit.

      Endlich maln bischen Romantik in dieser Sache ;-)

      Wird Zeit, dass ich $i durch $ff ersetze => Fortsetzung Folgt.

      Viele Gr??e,
      Lokal Horst

      --
      # mehrzeilige Kommentare? Guck Dir den schei? Code an, da steht doch alles!
  4. Hallo,

    Wir fragen uns warum der Zähler in for-Schleifen eigentlich immer "i" heißt.

    ich hätte, ebenso wie Gunnar, auf diese Gewohnheiten aus der Mathematik spekuliert. Genausogut könnte man aber auch mit "i wie index" argumentieren, da mit for-Schleifen häufig über Arrays iteriert wird.

    Jeder machts, jeder hats so gelernt und in fast allen Büchern wird "i" verwendet. (Okay, teils auch x, aber das seh ich inzwischen nur noch vereinzelt) Aber warum "i"? Warum nicht z.b. "a"?

    Ich kann mich der Gewohnheit mit dem i zwar auch nicht ganz erwehren; allerdings verwende ich bevorzugt Variablennamen, die mit dem übrigen umgebenden Code logisch harmonieren ("sprechende" Namen).

    Ciao,
     Martin

    --
    F: Was ist schneller: Das Licht oder der Schall?
    A: Offensichtlich der Schall. Wenn man den Fernseher einschaltet, kommt immer erst der Ton, und dann erst das Bild.
  5. Hallo,
    Meine mich an folgendes zu erinnern:
    In einer Programmiersprache der Vergangenheit (Fortran, Algol oder sowas) konnte man Variablen nicht definieren...stattdessen waren verschiedene Buchstaben des Alphabets für bestimmte Datentypen reserviert.

    "i,j,k" waren dabei reserviert für Integer-Variablen. Dies hat widerrum seinen Ursprung in der Mathematik (vgl. Post von Gunnar).

    Deswegen war der erste Integer in einem Programm standardmässig immer ein "i".

    Diese Konvention übertrug sich später auch auf andere Programmiersprachen.

    Kann des leider nicht belegen...hab nur sowas im Hinterkopf. Aber vielleicht kann da mal jemand googlen? Mein Netz hier ist etwas eingeschrönkt :)

    1. Hallo,

      Bingo

      "So kannte Fortran die Konvention, dass Variablen, deren Namen mit Buchstaben zwischen I und N beginnen, vom Typ INTEGER sind und alle anderen vom Typ REAL, sofern nichts anderes festgelegt wird"

      1. Danke an alle!

        Grüße Rikola

  6. Hallo Rikola,

    in alten Fortranversionen gab es die sogenannte implizite Deklaration von Variablen: alles was mit i bis n anfing, war automatisch Integer und alles, was mit a bis h und o bis z anfing, war Real.

    Gruß, Jürgen

  7. nur der letzte post kratzt an der wirlichen bedeutung:
    das kleine i steht für "iterativ" http://de.wikipedia.org/wiki/Iteration

    bitteschön und gruß

  8. Hi,

    Wir fragen uns warum der Zähler in for-Schleifen eigentlich immer "i" heißt.

    Weil das zufällig in der allerersten jemals geschriebenen for-Schleife so war.

    Alle weiteren for-Schleifen sind dann durch Copy/Paste entstanden ;-)

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Wir fragen uns warum der Zähler in for-Schleifen eigentlich immer "i" heißt.

      Weil das zufällig in der allerersten jemals geschriebenen for-Schleife so war.

      Alle weiteren for-Schleifen sind dann durch Copy/Paste entstanden ;-)

      Natürlich durch
      for (1..infinity){}

      mfg Beat

      --
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische
  9. Hallo,

    Irgendwie dachte ich immer dass es deshalb ist, weil das die variable ist die den Iteratorzustand abbildet.

    Jeena

    1. Irgendwie dachte ich immer dass es deshalb ist, weil das die variable ist die den Iteratorzustand abbildet.

      https://forum.selfhtml.org/?t=193063&m=1288923

      Struppi.