Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
schleife

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pullmoll
Gast





BeitragVerfasst am: 03. Aug 2004 17:28   Titel: schleife

hallo, laut dem thread was bringt php habe ich mich mal damit beschäftigt und auch direkt eine frage.
ich habe einen schleifenkörper (for) und verstehe nicht warum es so ist wie es ist. im php manual stehen 2 beispiele.
Code:
for ($i = 1; $i <= 10; $i++) {
    print $i; }
und das hier auch noch
Code:
for ($i = 1; $i <= 10; print $i, $i++) ;
wobei ich die zweite version verstehe und auch nachvollziehen kann. i kleiner oder gleich 10 dann print i und inkrementieren. dann ist i ja 11 und die bedingung somit falsch so das die schleife unterbrochen wird, logisch.
die erste version ist aber seltsam (für mich) aber sie scheint richtig zu sein.
meine erklärung.
i ist 1, ist i kleiner oder gleich 10 dann inkrementiere 10 und dann print i. ist i also 10 dann inkrement (ergibt also 11) und dann print.
es müßte also 1 - 11 und nicht wie bei mir 1 - 10 ausgegeben werden.
weil wenn i <= 10 ist ist die bedingung wahr und die schleife wird weiter durchlaufen und der print befehl wird ausgeführt. sehe ich das richtig oder hat print in dem fall nichts damit zu tun? das wäre eine erklärung aber sicher bin ich mir nicht. wird hier leider nicht erklärt.
 

elwood67



Anmeldungsdatum: 19.05.2004
Beiträge: 232
Wohnort: Nürnberg

BeitragVerfasst am: 03. Aug 2004 18:31   Titel: Re: schleife

pullmoll hat folgendes geschrieben::

Code:
for ($i = 1; $i <= 10; $i++) {
    print $i; }



$i = 1 stimmt.
Bei der ersten Schleife ist $i = 1 nicht 10.
dann geht er hoch bis auf $i = 10 (2,3,4...10)

Er inkrementiert nicht 10 sondern zählt immer $i + 1 ($i++)

$i=11 printed er nicht mehr.
_________________
Gruß Jürgen
_______________________
Rechner: P4 mit Suse 9.2
_______________________
Und versammeln unsere eigene Armee, um diese Massenvernichtungswaffe zu entschärfen, die wir heute noch unseren Präsidenten nennen...
 
Benutzer-Profile anzeigen Private Nachricht senden

chrisjumper



Anmeldungsdatum: 12.02.2004
Beiträge: 104
Wohnort: Jülich

BeitragVerfasst am: 03. Aug 2004 21:08   Titel: for schleifen...

Hallo Pullmoll,

also, eine "normale" For-Schleife ist so aufgebaut:
Code:

for (Initialisierung; Bedingung; Reinitialisierung)
        Anweisung;


Gewiss kann man die Anweisunge auch noch als Anweisungsblock mit den geschweiften klammern angeben.

Die erste erfüllt diese Schmea ja eindutig, schauen wir uns nochmal deine ZWEITE Schleife an:

Code:

for ($i = 1; $i <= 10; print $i, $i++) ;


Hier wird halt KEINE direkte Anweisung ausgeführt. Aber bei der Reinitialisierung der Schleife wird $i, durch Printf zuerst ausgegeben und dann mit "$i++" Inkrimentiert.

Daher geht das auch.
LG Chris
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

pullmoll
Gast





BeitragVerfasst am: 03. Aug 2004 21:10   Titel:

klar ist es nicht direkt 10. der zählt ja hoch, das weiß ich ja. meine eigentliche frage war nur so gemeint, nachdem die bedingung geprüft wurde wird der wert ja inkrementiert. bei einem wert von 10 ist es also dann 11. dann kommt die print anweisung im anweisungsblock. in dem tutorial wurde die reihenfolge der abarbeitung in der schleife aber nicht erklärt.
die ist wie ich mittlerweile (eben) in einem anderen tutorial gesehen habe wie folgt.
Code:
for (ausdr.1; ausdr.2; ausdr.3) { Anweisung}

1 wird nur am anfang ausgewertet dann nicht mehr.
2 wird dann immer beim nächsten schleifendurchgang ausgewertet.
dann kommt zuerst die Anweisung bevor 3 ausgwertet wird.
dann ist es ja klar warum ich kein 11 bekomme sondern nur 1 - 10.
also nicht 1-2-3 dann anweisung. woher soll man das auch wissen. jetzt weiß ich es.
 

pullmoll
Gast





BeitragVerfasst am: 03. Aug 2004 21:12   Titel:

da warst du schneller als ich @chris Smile
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy