Differenze tra le versioni di "GOSUB"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 14: Riga 14:
  
 
Esempio:
 
Esempio:
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
    
 
    
 
   Dim b, j As Byte
 
   Dim b, j As Byte
 
   
 
   
 
   For b = 1 To 3
 
   For b = 1 To 3
     <Font Color= #B22222>GoSub</font> <FONT color=darkgreen>etichetta1</font>  <Font Color=gray>' ''Il programma salta alla riga dove è presente l'etichetta "etichetta1"''</font>
+
     <Font Color=red>GoSub</font> <FONT color=darkgreen>etichetta1</font>  <Font Color=gray>' ''Il programma salta alla riga dove è presente l'etichetta "etichetta1"''</font>
 
   Next
 
   Next
 
   
 
   
Riga 30: Riga 30:
 
   Next
 
   Next
 
    
 
    
  <Font Color=gray>' ''Questo "Return" è connesso e dipendente dal "Gosub", in quanto posto dopo l'etichetta. Pertanto il programma torna su: alla riga immediatamente successiva al "Gosub":''</font>
+
  <Font Color=gray>' ''Questo "Return" è connesso e dipendente dal "Gosub", in quanto posto dopo l'etichetta.
 +
<BR>Pertanto il programma torna su: alla riga immediatamente successiva al "Gosub":''</font>
 
   <Font Color= #B22222>Return</font>
 
   <Font Color= #B22222>Return</font>
 
   
 
   
  '''End'''
+
  End
 
 
 
In console avremo:
 
In console avremo:
  
Riga 55: Riga 55:
 
Esempio:
 
Esempio:
  
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
    
 
    
 
   Dim b, j As Byte
 
   Dim b, j As Byte
 
   
 
   
   <Font Color= #B22222>GoSub</font> <FONT color=darkgreen>etichetta1</font>
+
   <Font Color=red>GoSub</font> <FONT color=darkgreen>etichetta1</font>
 
   
 
   
 
   Print "Il GOSUB farà saltare questa riga, ma poi il Return al suo primo passaggio farà tornare il programma proprio qui."
 
   Print "Il GOSUB farà saltare questa riga, ma poi il Return al suo primo passaggio farà tornare il programma proprio qui."
Riga 67: Riga 67:
 
   Print "1° controllo"
 
   Print "1° controllo"
 
   
 
   
   Return
+
   <Font Color=#B22222>Return</font>
 
   
 
   
 
   Print "2° controllo"  <Font Color=gray>' ''Questa riga sarà del tutto saltata''</font>
 
   Print "2° controllo"  <Font Color=gray>' ''Questa riga sarà del tutto saltata''</font>

Versione attuale delle 17:03, 6 lug 2024

L'istruzione GOSUB consente di saltare all'etichetta dichiarata all'interno della medesima routine, e continuare da lì l'esecuzione del codice. Se poi il programma incontra l'istruzione RETURN, esso torna sopra e precisamente alla linea di codice successiva all'istruzione GOSUB.

GOSUB etichetta 
 .......       
 .......       
               
 etichetta:   
 ...↓...
 ...↓...
Return


Esempio:

Public Sub Button1_Click()
 
 Dim b, j As Byte

 For b = 1 To 3
   GoSub etichetta1  ' Il programma salta alla riga dove è presente l'etichetta "etichetta1"
 Next

 Return   ' Il programma esce fuori dalla routine, poiché questo è un normale Return non connesso al Gosub

 etichetta1:

 For j = 1 To 3
   Print "Prova "; b;; j
 Next
 
' Questo "Return" è connesso e dipendente dal "Gosub", in quanto posto dopo l'etichetta.

Pertanto il programma torna su: alla riga immediatamente successiva al "Gosub":
Return End

In console avremo:

Prova 1 1
Prova 1 2
Prova 1 3
Prova 2 1
Prova 2 2
Prova 2 3
Prova 3 1
Prova 3 2
Prova 3 3




Bisogna tenere conto che l'istruzione Return, una volta "utilizzata", e qualora non immediatamente chiamata di nuovo dal proprio comando GOSUB, si "trasforma" in un normale Return, determinando, così, l'uscita del processo dalla routine.

Esempio:

Public Sub Button1_Click()
 
 Dim b, j As Byte

 GoSub etichetta1

 Print "Il GOSUB farà saltare questa riga, ma poi il Return al suo primo passaggio farà tornare il programma proprio qui."

 etichetta1:
 
 Print "1° controllo"

 Return

 Print "2° controllo"   ' Questa riga sarà del tutto saltata

End

In console avremo infatti questo risultato:

1° controllo
Il GOSUB farà saltare questa riga, ma poi il Return al suo primo passaggio farà tornare il programma proprio qui.
1° controllo