Euphoria - La boucle jusqu'à la déclaration

UNE loop...until loop est similaire à une boucle while, sauf qu'une boucle ... until est garantie de s'exécuter au moins une fois.

Syntaxe

La syntaxe d'une boucle ... jusqu'à est la suivante -

loop do
   -- Statements to be executed.
until expression

Notez que l'expression apparaît à la fin de la boucle, donc les instructions de la boucle s'exécutent une fois avant que la valeur de l'expression ne soit testée.

Si l'expression retourne true, le flux de contrôle revient à faire et les instructions de la boucle s'exécutent à nouveau. Ce processus se répète jusqu'à ce que l'expression soit fausse.

Exemple

#!/home/euphoria-4.0b2/bin/eui

integer a = 10

loop do
   printf(1, "value of a : %d\n", a)
   a = a + 1
until a < 20

Cela produit le résultat suivant -

value of a : 10
value of a : 11
value of a : 12
value of a : 13
value of a : 14
value of a : 15
value of a : 16
value of a : 17
value of a : 18
value of a : 19

La boucle ... avec instruction d' entrée

Il arrive souvent que la première itération d'une boucle soit en quelque sorte spéciale. Certaines choses doivent être faites avant le début de la boucle. Ils sont effectués avant l'instruction commençant la boucle.

le with entryla déclaration sert très bien le but. Vous devez utiliser cette instruction avec loop ... until et ajouter simplement leentry mot-clé au point où vous souhaitez que la première itération commence.

Syntaxe

La syntaxe d'une boucle ... jusqu'à boucle avec entrée est la suivante -

loop with entry do
   -- Statements to be executed.
entry
   -- Initialisation statements.
until expression

Avant d'exécuter l' expression, il exécute des instructions d'initialisation, puis il démarre comme une boucle normale. Plus tard, ces instructions d'initialisation font partie du corps de la boucle.

Exemple

#!/home/euphoria-4.0b2/bin/eui

integer a = 10

loop with entry do
   printf(1, "value of a : %d\n", a)
   a = a + 1
entry
   a = a + 2
until a > 20

Cela produit le résultat suivant -

value of a : 12
value of a : 15
value of a : 18

La boucle .... déclaration d' étiquette

UNE loop...until la boucle peut avoir un label clause juste avant la première domot-clé. Vous pouvez conserver la clause d'étiquette avant ou aprèsenter clause.

Cette étiquette est utilisée uniquement pour nommer le bloc de boucle et les noms d'étiquette doivent être des chaînes constantes entre guillemets doubles comportant un ou plusieurs mots. Le mot-clé label est sensible à la casse et doit être écrit commelabel.

Syntaxe

La syntaxe d'une boucle ... jusqu'à ce que la clause label soit la suivante -

loop label "Label Name" do
   -- Statements to be executed.
until expression

Les étiquettes sont très utiles lorsque vous utilisez des boucles imbriquées. Vous pouvez utilisercontinue ou exit instructions de contrôle de boucle avec des noms d'étiquettes pour contrôler le flux des boucles.

Exemple

#!/home/euphoria-4.0b2/bin/eui

integer a = 10
integer b = 20

loop label "OUTER" do
   printf(1, "value of a : %d\n", a)
   a = a + 1
   
   loop label "INNER" do
      printf(1, "value of b : %d\n", b)
      b = b + 1
      
      if b > 25 then
         continue "OUTER"  -- go to start of OUTER loop
      end if
   until b > 30
until a > 20

Cela produit le résultat suivant -

value of a : 10
value of b : 20
value of b : 21
value of b : 22
value of b : 23
value of b : 24
value of b : 25
value of a : 11
value of b : 26
value of a : 12
value of b : 27
value of a : 13
value of b : 28
value of a : 14
value of b : 29
value of a : 15
value of a : 16
value of a : 17
value of a : 18
value of a : 19

NOTE - L'exemple ci-dessus devrait fonctionner comme expliqué, mais il semble que l'interpréteur Euphoria a un problème et qu'il fonctionne comme prévu, peut-être serait-il corrigé dans les futures versions d'Euphoria.