REPEAT - UNTIL

Da Gambas-it.org - Wikipedia.

Il ciclo Repeat...Until, la cui sintassi è:

Repeat
  ......
Until condizione

viene ripetuto fintanto che condizione risulta falsa: se condizione è falsa, allora il ciclo viene ripetuto.

Poiché condizione è posta in fondo al ciclo, la sua prima verifica avviene soltanto al compimento del primo ciclo. Ciò determina che il ciclo viene compiuto almeno una volta a prescindere dal risultato di condizione.


Mostriamo un esempio pratico:

Public Sub Main()
 
 Dim i As Integer
 
  Repeat
    Print i
    Inc i
  Until i = 10   ' Se "i" è uguale a 10, allora si esce dal ciclo; altrimenti il ciclo è ripetuto
  
  Print i
  
End

In sostanza, considerando il precedente esempio, la logica di questo ciclo è: ripete il ciclo fino a che il valore della variabile "i" è diverso da 10. Quando quel valore diventa uguale a 10, si esce dal ciclo.


Equivalenza tra il ciclo Repeat...Unitil ed il ciclo Do...Loop Until

Al posto del ciclo Repeat...Until è possibile utilizzare il ciclo Do...Loop Until, il quale si comporta esattamente come il ciclo Repeat...Until.


Mostriamo un esempio pratico:

Public Sub Main()
 
 Dim i As Integer
 
  Do
    Print i
    Inc i
  Loop Until i = 10   ' Se "i" è uguale a 10, allora si esce dal ciclo; altrimenti il ciclo è ripetuto
  
  Print i
  
End

Pertanto il ciclo composto dalle parole-chiave Repeat...Unitil è equivalente al ciclo composto dalle parole-chiave Do...Loop Until.


Uscire da un ciclo Repeat...Until quando una funzione restituisce un valore identico a quello precedentemente restituito

Se si deve prescrivere che la condizione del ciclo "Repeat...Until " si verifichi soltanto quando una funzione restituisce un valore identico a quello precedentemente da essa restituito, bisognerà servirsi di una idonea variabile di appoggio.
Esempio astratto:

Repeat

valore = funzione( )  ' Valore restituito dalla funzione
 
  Wait 0.01
  
' Il valore, precedentemente restituito, viene confrontato con quello restituito attualmente dalla medesima funzione:
Until valore == funzione( )