Differenze tra le versioni di "WHILE...WEND"

Da Gambas-it.org - Wikipedia.
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 delle 18:53, 11 ott 2008

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
NEXT 

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.