REPEAT - UNTIL
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( )