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.