Differenze tra le versioni di "DO - LOOP"

Da Gambas-it.org - Wikipedia.
 
(10 versioni intermedie di uno stesso utente non sono mostrate)
Riga 3: Riga 3:
 
  ......
 
  ......
 
  Loop
 
  Loop
genera un ciclo infinito.
+
genera un ciclo <SPAN Style="text-decoration:underline">infinito</span>.
  
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.
+
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
 +
 +
  <FONT Color=red><B>Do</b></font>
 +
    Print i
 +
    If i == 10 Then <FONT Color=red>Break</font>  <FONT Color=gray>' ''Se "i" è uguale a 10, allora si esce dal ciclo''</font>
 +
    Inc i
 +
  <FONT Color=red><B>Loop</b></font>
 +
 
 +
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 - come già detto - solo 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 <FONT Color=red>Until</font> ''condizione''
 +
il comportamento del ciclo è equivalente a quello della struttura "''[[REPEAT_-_UNTIL|Repeat...Until]]'' ", il ciclo si ripete sino a quando la condizione prevista <SPAN Style="text-decoration:underline">diventa</span> vera, ossia quando la condizione diventa vera si esce dal ciclo.
  
 
Mostriamo un esempio:
 
Mostriamo un esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
Dim i As Integer
+
  Dim i As Integer
 
   
 
   
   <FONT Color=#B22222>Do</font>
+
   <FONT Color=redDo</font>
 
     Print i
 
     Print i
    If i = 10 Then <FONT Color=#B22222>Break</font>  <FONT Color=gray>' ''Se "i" è uguale a 10, allora si esce dal ciclo''</font>
 
 
     Inc i
 
     Inc i
   <FONT Color=#B22222>Loop</font>
+
   <FONT Color=red>Loop <B>Until</b></font> i == 10  <FONT Color=gray>' ''Soltanto quando "i" diventerà uguale a 10, si esce dal ciclo''</font>
 
    
 
    
  Print i
+
  End
 
+
 
  '''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 "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''====
+
===Ciclo con ''Do While...Loop''===
Il ciclo composto dalle parole-chiave ''Do...Loop'' può prevedere la presenza anche della parola ''While'' accanto a ''Do'' secondo la seguente sintassi:
+
Se la parola-chiave "''While'' " è posta dopo la parola-chiave "''Do'' ":
  Do <FONT Color=#B22222>While</font> ''condizione''
+
  Do <FONT Color=red>While</font> ''condizione''
 
  ......
 
  ......
 
  Loop
 
  Loop
In tal caso il comportamente del ciclo è equivalente a quello della struttura ''While...Wend'', ossia finché la condizione è vera il ciclo viene compiuto.
+
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
 +
 +
  <FONT Color=red>Do <B>While</b></font> i < 10  <FONT Color=gray>' ''Se "i" è minore di 10, allora si effettua il ciclo''</font>
 +
    Print i
 +
    Inc i
 +
  <FONT Color=red>Loop</font>
 +
 
 +
End
 +
 +
===Ciclo con ''Do...Loop While''===
 +
Se la parola-chiave ''While'' è posta dopo la parola-chiave ''Loop'':
 +
Do
 +
......
 +
Loop <FONT Color=red>While</font> ''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:
 
Mostriamo un esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
Dim i As Integer
+
  Dim i As Integer
 
   
 
   
   <FONT Color=#B22222>Do While</font> i < 10  <FONT Color=gray>' ''Se "i" è minore di 10, allora si effettua il ciclo''</font>
+
   <FONT Color=red>Do</font>
 
     Print i
 
     Print i
 
     Inc i
 
     Inc i
   <FONT Color=#B22222>Loop</font>
+
   <FONT Color=red>Loop <B>While</b></font> i < 10  <FONT Color=gray>' ''Se "i" è minore di 10, allora si effettua il ciclo''</font>
 
    
 
    
  Print i
+
End
 
+
 
'''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 <SPAN Style="text-decoration:underline">è</span> 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 <SPAN Style="text-decoration:underline">diventa</span> vera, ossia quando la condizione diventa vera si esce dal ciclo.
 +
I due tipi di cicli sono in sostanza opposti.

Versione attuale delle 12:59, 5 lug 2024

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 - come già detto - solo 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

 <FONT Color=redDo</font>
   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.