Differenze tra le versioni di "WHILE...WEND"
(2 versioni intermedie di 2 utenti non mostrate) | |||
Riga 3: | Riga 3: | ||
'''WEND''' | '''WEND''' | ||
− | ''' Ripete un ciclo fino a quando ''condizione'' risulta vero.''' Se però ''condizione'' risulta falso fin dall'inizio, il ciclo non viene mai eseguito. Questo comportamento è differente da quello di [[REPEAT...UNTIL]]. | + | ''' Ripete un ciclo fino a quando ''condizione'' risulta vero.''' Se però ''condizione'' risulta falso fin dall'inizio, il ciclo non viene mai eseguito. Questo comportamento è differente da quello di [[REPEAT_-_UNTIL|REPEAT...UNTIL]]. |
---- | ---- | ||
Riga 14: | Riga 14: | ||
Message.Info("Numero: " & Str$(variabile)) | Message.Info("Numero: " & Str$(variabile)) | ||
variabile += 1 | variabile += 1 | ||
− | ''' | + | '''WEND''' |
''Spiegazione'' | ''Spiegazione'' | ||
Riga 52: | Riga 52: | ||
i = 0 | i = 0 | ||
WHILE i < 10 | WHILE i < 10 | ||
− | IF i = 5 BREAK | + | IF i = 5 THEN BREAK |
i += 1 | i += 1 | ||
WEND | WEND | ||
Riga 59: | Riga 59: | ||
Apparentemente, questo è un ciclo che si ripete fino a quando la variabile i raggiunge il valore 10. In pratica però, ad ogni ciclo il programma si chiede se il valore è uguale a 5; quando questo valore viene raggiunto, esce dal ciclo. | Apparentemente, questo è un ciclo che si ripete fino a quando la variabile i raggiunge il valore 10. In pratica però, ad ogni ciclo il programma si chiede se il valore è uguale a 5; quando questo valore viene raggiunto, esce dal ciclo. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ''Esempio 4'' - '''TRUE come condizione''' | ||
+ | |||
+ | DIM i AS Integer | ||
+ | i = 0 | ||
+ | WHILE TRUE | ||
+ | IF i = 10 THEN BREAK | ||
+ | i += 1 | ||
+ | WEND | ||
+ | |||
+ | ''Spiegazione'' | ||
+ | |||
+ | Nell'esempio ''condizione'' risulta ovviamente sempre vera, generando virtualmente un ciclo infinito. E' la IF a far uscire il programma dal ciclo quando i risulta uguale a 10. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ''Esempio 5'' - '''FALSE come condizione''' | ||
+ | |||
+ | DIM i AS Integer | ||
+ | DIM j AS Integer | ||
+ | i = 0 | ||
+ | WHILE FALSE | ||
+ | i += 1 | ||
+ | j = i | ||
+ | WEND | ||
+ | |||
+ | ''Spiegazione'' | ||
+ | |||
+ | Nell'esempio ''condizione'' risulta ovviamente sempre falsa, di conseguenza il ciclo non verrà mai eseguito. Tale accorgimento si utilizza a volte per scopi di debug, per osservare cosa accade se una determinata porzione di codice non viene eseguita. In altri contesti non ha alcun senso. |
Versione attuale delle 14:57, 10 gen 2022
WHILE condizione <<vostro codice>> WEND
Ripete un ciclo fino a quando condizione risulta vero. Se però condizione risulta falso fin dall'inizio, il ciclo non viene mai eseguito. Questo comportamento è differente da quello di REPEAT...UNTIL.
Esempio 1 - Ciclo semplice
DIM variabile AS Integer variabile = 1 WHILE variabile < 10 Message.Info("Numero: " & Str$(variabile)) variabile += 1 WEND
Spiegazione
Per ogni valore da 0 a 9 che può assumere variabile, mostra il messaggio "Numero" ed il valore di variabile. In questo caso saranno mostrati tutti i messaggi con i seguenti numeri: 0-1-2-3-4-5-6-7-8-9.
Esempio 2 - Cicli nidificati
DIM variabile1 AS Integer DIM variabile2 AS Integer DIM variabile3 AS Integer variabile1 = 0 variabile2 = 0 variabile3 = 0 WHILE variabile1 < 10 WHILE variabile2 < 10 WHILE variabile3 < 10 Message.Info("Variabile1: " & Str$(variabile1) & "Variabile2: " & Str$(variabile2) & "Variabile3: " & Str$(variabile3)) variabile3 += 1 WEND variabile2 += 1 WEND variabile1 += 1 WEND
Spiegazione
All'inizio tutte le variabili vengono impostate a 0. Su ognuna di esse si esegue un ciclo, nel quale attraversa tutti i valori dallo 0 al 9, quando raggiunge il 10 il ciclo termina. La prima ad attraversare un ciclo completo è la variabile3, che è protagonista del ciclo più interno. Quando il ciclo termina, variabile2 viene incrementata a 1 e variabile3 ricomincia il ciclo. E così via finchè variabile2 supera il valore 9 e variabile1 viene incrementata a 1. E tutto ricomincia. Questi 3 cicli annidati generano 100 combinazioni di valori.
Esempio 3 - Uscita anticipata
DIM i AS Integer i = 0 WHILE i < 10 IF i = 5 THEN BREAK i += 1 WEND
Spiegazione
Apparentemente, questo è un ciclo che si ripete fino a quando la variabile i raggiunge il valore 10. In pratica però, ad ogni ciclo il programma si chiede se il valore è uguale a 5; quando questo valore viene raggiunto, esce dal ciclo.
Esempio 4 - TRUE come condizione
DIM i AS Integer i = 0 WHILE TRUE IF i = 10 THEN BREAK i += 1 WEND
Spiegazione
Nell'esempio condizione risulta ovviamente sempre vera, generando virtualmente un ciclo infinito. E' la IF a far uscire il programma dal ciclo quando i risulta uguale a 10.
Esempio 5 - FALSE come condizione
DIM i AS Integer DIM j AS Integer i = 0 WHILE FALSE i += 1 j = i WEND
Spiegazione
Nell'esempio condizione risulta ovviamente sempre falsa, di conseguenza il ciclo non verrà mai eseguito. Tale accorgimento si utilizza a volte per scopi di debug, per osservare cosa accade se una determinata porzione di codice non viene eseguita. In altri contesti non ha alcun senso.