Euforia - Il ciclo fino all'istruzione

UN loop...until loop è simile a un ciclo while, tranne per il fatto che un ciclo ... until loop è garantito per essere eseguito almeno una volta.

Sintassi

La sintassi di un ciclo ... until è la seguente:

loop do
   -- Statements to be executed.
until expression

Si noti che l'espressione appare alla fine del ciclo, quindi le istruzioni nel ciclo vengono eseguite una volta prima che il valore dell'espressione venga testato.

Se l'espressione restituisce true, il flusso di controllo torna indietro e le istruzioni nel ciclo vengono eseguite di nuovo. Questo processo si ripete finché l'espressione non è falsa.

Esempio

#!/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

Questo produce il seguente risultato:

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

Il ciclo .... con l' istruzione di entrata

Spesso accade che la prima iterazione di un ciclo sia in qualche modo speciale. Alcune cose devono essere fatte prima che il ciclo inizi. Vengono eseguiti prima dell'istruzione che avvia il ciclo.

Il with entryl'affermazione serve molto bene allo scopo. Devi usare questa istruzione con loop ... until e aggiungi semplicemente il fileentry parola chiave nel punto in cui desideri che inizi la prima iterazione.

Sintassi

La sintassi di un loop ... until loop con entry è la seguente:

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

Prima di eseguire l' espressione, esegue le istruzioni di inizializzazione e quindi inizia come un normale ciclo. Successivamente, queste istruzioni di inizializzazione diventano parte del corpo del ciclo.

Esempio

#!/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

Questo produce il seguente risultato:

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

L' istruzione loop .... label

UN loop...until loop può avere un file label clausola appena prima della prima doparola chiave. Puoi mantenere la clausola dell'etichetta prima o dopoenter clausola.

Questa etichetta viene utilizzata solo per denominare il blocco del ciclo ei nomi delle etichette devono essere stringhe costanti tra virgolette doppie con parole singole o multiple. La parola chiave label distingue tra maiuscole e minuscole e deve essere scritta comelabel.

Sintassi

La sintassi di un ciclo ... fino a quando la clausola with label è la seguente:

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

Le etichette sono molto utili quando si utilizzano cicli nidificati. Puoi usarecontinue o exit istruzioni di controllo del ciclo con nomi di etichette per controllare il flusso dei cicli.

Esempio

#!/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

Questo produce il seguente risultato:

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'esempio sopra dovrebbe funzionare come spiegato, ma sembra che l'interprete di Euphoria abbia qualche problema e funzioni come previsto, potrebbe essere corretto nelle versioni future di Euphoria.