Differenze tra le versioni di "GOSUB"

Da Gambas-it.org - Wikipedia.
Riga 2: Riga 2:
  
 
  GOSUB etichetta <Font Color= #FF0000>↴</font>
 
  GOSUB etichetta <Font Color= #FF0000>↴</font>
  <Font Color= #0000FF>↱</font> ......       <Font Color= #FF0000>↓</font>
+
  <Font Color= #0000FF>↱</font> .......      <Font Color= #FF0000>↓</font>
  <Font Color= #0000FF>↑</font> ......       <Font Color= #FF0000>↓</font>
+
  <Font Color= #0000FF>↑</font> .......      <Font Color= #FF0000>↓</font>
 
  <Font Color= #0000FF>↑</font>              <Font Color= #FF0000>↓</font>
 
  <Font Color= #0000FF>↑</font>              <Font Color= #FF0000>↓</font>
 
  <Font Color= #0000FF>↑</font> etichetta:  <Font Color= #FF0000>⤶</font>
 
  <Font Color= #0000FF>↑</font> etichetta:  <Font Color= #FF0000>⤶</font>
  <Font Color= #0000FF>↑</font> ......
+
  <Font Color= #0000FF>↑</font> ......
  <Font Color= #0000FF>↑</font> ......
+
  <Font Color= #0000FF>↑</font> ......
  <Font Color= #0000FF>↑</font>      
+
  <Font Color= #0000FF>↑</font>  
 
  <Font Color= #0000FF>⬑</font>Return
 
  <Font Color= #0000FF>⬑</font>Return
  

Versione delle 05:46, 23 mag 2014

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 i As Integer
 Dim j As Integer

  For i = 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";; i;; 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 i As Integer
 Dim j As Integer

  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