DO - LOOP

Da Gambas-it.org - Wikipedia.

Il ciclo Do...Loop, la cui sintassi è:

Do
......
Loop

genera un ciclo infinito.

Pertanto, per uscire dal ciclo, è necessario porre una istruzione decisionale di controllo, come ad esempio "IF", unitamente al comando "Break ". Al verificarsi di una data condizione, viene richiamata l'istruzione Break che consente così l'uscita in quella riga dal ciclo.


Mostriamo un esempio:

Public Sub Main()

Dim i As Integer

Do
  Print i
  If i == 10 Then Break   ' Se "i" è uguale a 10, allora si esce dal ciclo
  Inc i
Loop
 
End

E' ovvio che ai fini del funzionamento in sé del ciclo generato da Do...Loop non è necessaria la riga di controllo con If ed il comando Break, essendo utili questi solo - come già detto - qualora si intenda, al verificarsi di una determinata condizione, interrompere il ciclo uscendone.


Introduzione della parola-chiave "Until" nel ciclo Do...Loop

Il ciclo "Do...Loop " può contenere anche la presenza della parola-chiave "Until ", purché dopo la parola-chiave "Loop ":

Do
......
Loop Until condizione

il comportamento del ciclo è equivalente a quello della struttura "Repeat...Until ", il ciclo si ripete sino a quando la condizione prevista diventa vera, ossia quando la condizione diventa vera si esce dal ciclo.

Mostriamo un esempio:

Public Sub Main()

Dim i As Integer

Do
  Print i
  Inc i
Loop Until i == 10   ' Soltanto quando "i" diventerà uguale a 10, si esce dal ciclo
 
End


Introduzione della parola-chiave "While" nel ciclo Do...Loop

Il ciclo "Do...Loop " può contenere anche la presenza della parola-chiave "While ". La parola-chiave "While " è sempre seguita da una condizione che deve essere verificata ad ogni ripetizione del ciclo.

Ciclo con Do While...Loop

Se la parola-chiave "While " è posta dopo la parola-chiave "Do ":

Do While condizione
......
Loop

il comportamento del ciclo è equivalente a quello della struttura While...Wend, ossia finché la condizione è vera il ciclo viene compiuto.

Mostriamo un esempio:

Public Sub Main()

Dim i As Integer

Do While i < 10   ' Se "i" è minore di 10, allora si effettua il ciclo
  Print i
  Inc i
Loop
  
End

Ciclo con Do...Loop While

Se la parola-chiave "While " è posta dopo la parola-chiave Loop:

Do
......
Loop While condizione

questo ciclo è equivalente al ciclo "Do...While( ) " del linguaggio C, e anche in questo caso finché la condizione è vera il ciclo viene compiuto.

Mostriamo un esempio:

Public Sub Main()

Dim i As Integer

Do
  Print i
  Inc i
Loop While i < 10   ' Se "i" è minore di 10, allora si effettua il ciclo
 
End

Differenza fra il ciclo "Do...Loop While " e il ciclo "Repeat...Until "

Come si può notare la differenza fra il ciclo "Do...Loop While " e il ciclo "Repeat...Until " consiste nella circostanza che:

  • in "Do...Loop While " il ciclo si ripete fino a quando la condizione è vera, ossia fino a quando perdura quella condizione prevista, e pertanto quando la condizione non è più vera, si esce dal ciclo;
  • in "Repeat...Until " il ciclo si ripete sino a quando la condizione prevista diventa vera, ossia quando la condizione diventa vera si esce dal ciclo.

I due tipi di cicli sono in sostanza opposti.