REPEAT - UNTIL

Da Gambas-it.org - Wikipedia.

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

Repeat
  ......
Until condizione

viene ripetuto fintanto che condizione risulta falsa.
Pertanto, se condizione è "falsa", allora il ciclo viene ripetuto; se invece condizione è "vera", allora il ciclo non viene più ripetuto.

Poiché condizione è posta in fondo al ciclo, la sua prima verifica avviene soltanto al compimento del primo ciclo. Ciò determina ovviamente 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.
Tale variabile all'interno del ciclo verrà valorizzata dalla funzione, poi nella verifica della condizione del ciclo il valore precedentemente assegnato alla variabile viene confrontato con il valore ritornato correntemente dalla funzione.
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( )