GOSUB: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
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


Riga 14: Riga 14:


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 3
   For b = 1 To 3
     <Font Color= #B22222>GoSub</font> etichetta1   ''<Font Color= #006400>' 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
   
   
      Return  ''<Font Color= #006400>' 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>
   
   
  etichetta1:
   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'''
  End
 
In console avremo:
In console avremo:


Riga 48: Riga 46:
<BR>Prova 3 2
<BR>Prova 3 2
<BR>Prova 3 3
<BR>Prova 3 3




Riga 58: Riga 55:
Esempio:
Esempio:


  '''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=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."
   
   
  etichetta1:
  <FONT color=darkgreen>etichetta1:</font>
    
    
  Print "1° controllo"
  Print "1° controllo"
   
   
  Return
  <Font Color=#B22222>Return</font>
   
   
  Print "2° controllo"  ''<Font Color= #006400>' Questa riga sarà del tutto saltata''</font>
  Print "2° controllo"  <Font Color=gray>' ''Questa riga sarà del tutto saltata''</font>
   
   
  '''End'''
  '''End'''

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