Thread Problem bei Programmverständnis (21 answers)
Opened by Gast at 2009-01-06 17:08

esskar
 2009-01-06 22:26
#117644 #117644
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Gast+2009-01-06 18:09:06--
ok hat mir schon mal geholfen :).
aber noch eine frage: du schreibst bei Zeile 18 weitermachen. Des heißt, dass ich die if Bedingung abarbeite mir $i=0, $i=1 usw.. bis sie nicht mehr greift und dann erst wieder in die dor schleife spring um $i um 1 zu erhöhen oder?

nein.

while bezeichnet wie for einen schleifenkontrollstrucktur.
du kannst z.B. eine for-schleife ala
Code (perl): (dl )
1
2
3
for (my $i = 0; $i < $anzahl - 1; $i++){
   # ...
}

folgendermaßen mit einer while-schleife darstellen
Code (perl): (dl )
1
2
3
4
5
6
my $i = 0;
while($i < $anzahl)
{
   # ...
   $i++;
}

heißt also, die die anweisungen einer while-schleife werden solange wiederholt wie die bedingung (im obigen fall $i < $anzahl) einen wahren-wert liefert.

in deinem beispiel wird $aktion vor der while-schleife auf einen wahren-wert gesetzt, nämlich $aktion = 1 und dann direkt als erste anweisung innerhalb der while-schleife auf einen unwahren-wert (nämlich 0 (vgl. zeile 8)) gesetzt.
das bedeutet erstmal, dass die while-schleife eigentlich nicht nochmal durchlaufen wird.
gesetz den fall, $anzahl ist 0 oder es gibt kein $i für das gilt, dass $zeilen[$i] ge $zeilen[$i + 1], gibt es keine widerholung in while mehr, d.h. das programm beendet sich.
es heißt dann aber auch, wenn die if-bedienung in zeile 13 greift, $zeilen[$i] ge $zeilen[$i + 1] also einen wahren-wert liefert, dann wird $aktion = 1 gesetzt (zeile 19) und die while-schleife wird einen weiteren durchgang anstreben.

ist das soweit klar?

View full thread Problem bei Programmverständnis