GOSUB: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(20 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
L'istruzione '''GOSUB''' consente di saltare all'etichetta dichiarata all'interno della medesima routine. Se poi il programma incontra l'istruzione RETURN, esso torna sopra e precisamente alla linea di codice successiva all'istruzione GOSUB.
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 <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> ...↓...
<Font Color= #0000FF>↑</font> ...↓...
<Font Color= #0000FF>↑</font>    ↓
<Font Color= #0000FF>⬑</font>Return
 
 


Esempio:
Esempio:
 
  Public Sub Button1_Click()
  ''<Font Color= #006400>' Gambas class file''</font>
   
'''Public''' Sub Button1_Click()
    
    
   Dim i As Integer
   Dim b, j As Byte
  Dim j As Integer
   
   
   For i = 1 To 10
   For b = 1 To 3
     <Font Color= #B22222>GoSub</font> label1  ''<Font Color= #006400>' Il programma salta alla riga dove è presente l'etichetta "label1"''</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
   
   
      Return  ''<Font Color= #006400>' Il programma esce fuori dalla routine, poiché questo è un normale Return''</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>
   
   
  label1:
   For j = 1 To 3
   For j = 1 To 3
     Print "Prova";; i;; j
     Print "Prova "; b;; j
   Next
   Next
    
    
    <Font Color= #B22222>Return</font>  ''<Font Color= #006400>' Questo Return è connesso e dipendente dal Gosub. Pertanto il programma torna su: alla riga 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>
End
In console avremo:
 
Prova 1 1
<BR>Prova 1 2
<BR>Prova 1 3
<BR>Prova 2 1
<BR>Prova 2 2
<BR>Prova 2 3
<BR>Prova 3 1
<BR>Prova 3 2
<BR>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
  <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."
  <FONT color=darkgreen>etichetta1:</font>
 
  Print "1° controllo"
  <Font Color=#B22222>Return</font>
  Print "2° controllo"  <Font Color=gray>' ''Questa riga sarà del tutto saltata''</font>
   
   
  '''End'''
  '''End'''


In console avremo:
In console avremo infatti questo risultato:


Prova 1 1
1° controllo
Prova 1 2
<BR>Il GOSUB farà saltare questa riga, ma poi il Return al suo primo passaggio farà tornare il programma proprio qui.
Prova 1 3
<BR>1° controllo
Prova 2 1
Prova 2 2
Prova 2 3
Prova 3 1
Prova 3 2
Prova 3 3
Prova 4 1
Prova 4 2
Prova 4 3
Prova 5 1
Prova 5 2
Prova 5 3
Prova 6 1
Prova 6 2
Prova 6 3
Prova 7 1
Prova 7 2
Prova 7 3
Prova 8 1
Prova 8 2
Prova 8 3
Prova 9 1
Prova 9 2
Prova 9 3
Prova 10 1
Prova 10 2
Prova 10 3

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