zurückInhaltvorwärts Perl Einführung: Die while Schleife

6.3 Die while Schleife

Die einfachste Form der Schleife ist die while Schleife.

while (Bedingung) {
	Anweisung1;
	Anweisung2;
}

Die Schleife wird solange ausgeführt wie die Bedingung wahr ist. Das folgende Beispiel zählt eine Variable $i solange hoch bis der Wert 100 erreicht ist und bricht dann ab:

$i = 0;                 # Variable $i wird mit null initialisiert
while ($i<=99) {        # Schleifenkopf mit Bedingung: hier steht 99, da mit 0 angefangen wird zu zählen
   $i++;                # Schleifenrumpf mit Anweisungen
   print "$i\n";
}

Nach soviel Praxisnähe hier ein etwas interessanteres Beispiel. Das Skript fordert den User auf solange ein Paßwort einzugeben. Die Abfrage wird solange wiederholt bis das richtige Paßwort, JOSHUA, eingegeben worden ist.

print "Gib Dein Paßwort ein:";  
$passwort = <STDIN>;                   # Skript wartet auf Eingabe des Paßwortes
chomp($passwort);                      # Entferne newline 
while ($passwort ne "JOSHUA")  {       # Solange die Eingabe ungleich JOSHUA ist ...         
    print "Leider das falsche Paßwort. Versuche es bitte noch einmal ... ";      # ... frage nach Paßwort        
    $passwort = <STDIN>;                                                         # ... erneute Paßwort Eingabe  
    chomp($passwort);                                                            # ... entferne newline
}

Eine Variante der while Schleife ist die sogenannte do/while Schleife. Bei der while Schleife kann es vorkommen, daß die Schleifenbedingung sofort zu Anfang nicht erfüllt ist und der Schleifenrumpf kein einziges mal durchlaufen wird. Bei der do/while Schleife dagegen wird der Schleifenrumpf mindestens einmal durchlaufen. Die do/while Schleife hat folgende allgemeine Form:

do { 
   Anweisung1;
   Anweisung2;
   Anweisung3;
} while (Bedingung);

Es folgt ein Beispiel, daß solange nach Höhe und Länge der Grundseite eines Dreiecks fragt und den Flächeninhalt berechnet, bis der User die Frage nach einer erneuten Flächenberechnung mit nein beantwortet:

do {
  print "Bitte gib die Höhe des Dreiecks ein:";        # Frage nach Höhe des Dreiecks
  $hoehe = <STDIN>;                                    # Eingabe der Höhe
  chomp($hoehe);                                       # Trenne newline ab

  print "\nBitte gib die Länge der Grundseite des Dreiecks ein: ";  
  $grundseite = <STDIN>;                                            
  chomp($grundseite);

  $flaeche = 0.5 * $hoehe * $grundseite;                    # Flächenberechnung des Dreiecks
  print "\nDie Fläche des Dreiecks beträgt $flaeche.\n";    # Ausgabe der Dreiecksfläche
  
  print "Willst Du eine neue Dreiecksfläche berechnen? (j/n)"; 
  $antwort = <STDIN>;
  chomp ($antwort);
} while ($antwort ne "n");    # Hier wird die Schleifenbedingung überprüft. Die Schleife wird mindestens einmal durchlaufen,
                              # da die Bedingung am Ende überprüft wird.
Perl Einführung: Die while Schleife zurückInhaltvorwärts