Differenze tra le versioni di "GOSUB"

Da Gambas-it.org - Wikipedia.
Riga 18: Riga 18:
 
   Dim j As Integer
 
   Dim j As Integer
 
   
 
   
   For i = 1 To 5
+
   For i = 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= #B22222>GoSub</font> etichetta1  ''<Font Color= #006400>' Il programma salta alla riga dove è presente l'etichetta "etichetta1"''</font>
 
   Next
 
   Next
Riga 44: Riga 44:
 
<BR>Prova 3 2
 
<BR>Prova 3 2
 
<BR>Prova 3 3
 
<BR>Prova 3 3
<BR>Prova 4 1
+
 
<BR>Prova 4 2
+
 
<BR>Prova 4 3
+
Bisogna tenere conto che l'istruzione Return, una volta "utilizzata", e qualora non immediatamente chiamata ''nuovamente'' dal proprio comando GOSUB, si "trasforma" in un normale Return, determinando, così, l'uscita del processo dalla routine.
<BR>Prova 5 1
+
 
<BR>Prova 5 2
+
Esempio:
<BR>Prova 5 3
+
 
 +
'''Public''' Sub Button1_Click()
 +
 
 +
  Dim i As Integer
 +
  Dim j As Integer
 +
 +
  GoSub label1
 +
 +
  Print "Il GOSUB farà saltare questa riga, ma poi il Return farà tornare il programma proprio qui."
 +
 +
  label1:
 +
 
 +
  Print "1° controllo"
 +
 +
  Return
 +
 +
  Print "2° controllo"  ''<Font Color= #006400>' Questa riga sarà del tutto saltata''</font>
 +
 +
'''End'''
 +
 
 +
In console avremo infatti questo risultato:
 +
 
 +
1° controllo
 +
<BR>Il GOSUB farà saltare questa riga, ma poi il Return farà tornare il programma proprio qui.
 +
<BR>1° controllo

Versione delle 18:41, 4 mar 2012

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.

GOSUB etichetta

......
etichetta: ......
Return


Esempio:

 ' Gambas class file

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
 
   Return   ' Questo Return è connesso e dipendente dal Gosub. Pertanto il programma torna su: alla riga successiva al Gosub

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 nuovamente 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 label1

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

  label1:
 
  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 farà tornare il programma proprio qui.
1° controllo