GOSUB: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 16: Riga 16:
  '''Public''' Sub Button1_Click()
  '''Public''' Sub Button1_Click()
    
    
   Dim i As Integer
   Dim b, j As Byte
  Dim j As Integer
   
   
  For i = 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= #B22222>GoSub</font> <FONT color=darkgreen>etichetta1</font> <Font Color=gray>' ''Il programma salta alla riga dove è presente l'etichetta "etichetta1"''</font>
  Next
  Next
   
   
      Return  <Font Color=gray>' ''Il programma esce fuori dalla routine, poiché questo è un normale Return non connesso al Gosub''</font>
  Return  <Font Color=gray>' ''Il programma esce fuori dalla routine, poiché questo è un normale Return non connesso al Gosub''</font>
   
   
  <FONT color=darkgreen>etichetta1:</font>
  <FONT color=darkgreen>etichetta1:</font>
  For j = 1 To 3
    Print "Prova";; i;; j
  For j = 1 To 3
  Next
    Print "Prova "; b;; j
  Next
    
    
  ''<Font Color=gray>' Questo "Return" è connesso e dipendente dal "Gosub", in quanto posto dopo l'etichetta''
  <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>
' ''Pertanto il programma torna su: alla riga immediatamente successiva al "Gosub":''</font>
  <Font Color= #B22222>Return</font>
  <Font Color= #B22222>Return</font>
   
   
  '''End'''
  '''End'''
Riga 47: Riga 46:
<BR>Prova 3 2
<BR>Prova 3 2
<BR>Prova 3 3
<BR>Prova 3 3




Riga 59: Riga 57:
  '''Public''' Sub Button1_Click()
  '''Public''' Sub Button1_Click()
    
    
   Dim i As Integer
   Dim b, j As Byte
  Dim j As Integer
   
   
  GoSub etichetta1
  <Font Color= #B22222>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."
   
   
  etichetta1:
  <FONT color=darkgreen>etichetta1:</font>
    
    
  Print "1° controllo"
  Print "1° controllo"
   
   
  Return
  Return
   
   
  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>
   
   
  '''End'''
  '''End'''

Versione delle 19:24, 22 mag 2023

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