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
for (my $i = 0; $i < $anzahl - 1; $i++){
}
folgendermaßen mit einer while-schleife darstellen
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?