6. Anweisungen
 
zurück
6.7 Exit-Anweisung


Mit der Exit-Anweisung (exit_statement <BNF>) können For-, While- und Endlosschleifen verlassen werden. Die Exit-Anweisung kann dabei auch mehrfach in einer Schleife vorhanden sein.

exit [Schleifenname] [when Bedingung];


Wird die Exit-Anweisung von Schleifennamen gefolgt, muß sie in der entsprechenden Schleife enthalten sein.
Mit der Bedingung kann man spezifizieren, unter welchen Umständen die Schleife zu verlassen ist. Ohne Bedingung wird die Schleife bei der Exit-Anweisung imer verlassen, ohne Namen wird die unmittelbar umgebende Schleife verlassen.

Die Verwendung von For- oder While-Schleifen ohne "exit" ist der Verwendung von Schleifen mit "exit" vorzuziehen, da besser sichtbar ist, wie oft und unter welchen Umständen die Schleife durchlaufen wird..


Beispiel 1:

In der folgenden Schleife wird der Benutzer aufgefordert, "J" (für "Ja") einzugeben, um die Loop-Anweisung zu beenden.

Die Schleife wird solange durchlaufen, bis als Antwort "J" eingegeben wird, mindestens aber einmal, um die Aufforderung am Bildschirm anzuzeigen.
(In PASCAL könnte man eine solche Schleife, die mindestens einmal durchlaufen werden muß, mit "repeat..until" spezifizieren).


loop
   PUT_LINE("GEBEN SIE 'J' EIN, UM DAS PROGRAMM FORTZUSETZEN!");
   GET(ANTWORT);
   exit when (ANTWORT = 'J');
   -- ...
end loop;

Beispiel 2:

Dem ersten "Exit" folgt kein Schleifenname und keine Bedingung, d. h. bei diesem "Exit" wird aus der unmittelbar umgebenden Schleife ("INNERE_SCHLEIFE") herausgesprungen. Als nächste Anweisung wird die erste Anweisung nach "end loop INNERE_SCHLEIFE" ausgeführt.

Wird hingegen das zweite "exit" ausgeführt, wird nicht nur aus der Schleife "INNERE_SCHLEIFE" gesprungen, sondern auch aus der umgebenden Schleife "AEUSSERE_SCHLEIFE". Als nächste Anweisung wird dann die erste Anweisung nach "end loop AEUSSERE_SCHLEIFE;" ausgeführt.

"exit when ANTWORT = 'J' " ist schließlich ein Beispiel für ein bedingtes "exit". Die unmittelbar um-gebende "AEUSSERE_SCHLEIFE" wird verlassen, wenn die Bedingung "ANTWORT = 'J'" erfüllt ist.

AEUSSERE_SCHLEIFE:
loop
   INNERE_SCHLEIFE:
   loop
      -- ...
      exit; -- 1. Exit, verlasse die innere Schleife
      -- ...
      exit AEUSSERE_SCHLEIFE; -- 2. Exit, verlasse die innere/äußere Schleife
   end loop INNERE_SCHLEIFE;
   ANTWORT:=' ';
   PUT("AEUSSERE SCHLEIFE ABBRECHEN? GEBEN SIE 'J' EIN!");
   GET(ANTWORT);
   NEW_LINE;
   exit when ANTWORT = 'J'; -- verlasse die äußere Schleife, wenn die Bedingung erfüllt ist
end loop AEUSSERE_SCHLEIFE;



 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.