Differenze tra le versioni di "GOSUB"
(18 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 | + | 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() | |
− | |||
− | |||
− | |||
− | Dim | + | Dim b, j As Byte |
− | |||
− | For | + | For b = 1 To 3 |
− | <Font Color= | + | <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=gray>' ''Il programma esce fuori dalla routine, poiché questo è un normale Return non connesso al Gosub''</font> | |
+ | |||
+ | <FONT color=darkgreen>etichetta1:</font> | ||
− | |||
For j = 1 To 3 | For j = 1 To 3 | ||
− | Print "Prova"; | + | Print "Prova "; b;; j |
Next | Next | ||
− | + | <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: | In console avremo: | ||
Riga 44: | Riga 46: | ||
<BR>Prova 3 2 | <BR>Prova 3 2 | ||
<BR>Prova 3 3 | <BR>Prova 3 3 | ||
− | < | + | |
− | < | + | |
− | < | + | ---- |
− | < | + | |
− | <BR> | + | |
− | <BR> | + | 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''' | ||
+ | |||
+ | In console avremo infatti questo risultato: | ||
+ | |||
+ | 1° controllo | ||
+ | <BR>Il GOSUB farà saltare questa riga, ma poi il Return al suo primo passaggio farà tornare il programma proprio qui. | ||
+ | <BR>1° controllo |
Versione attuale delle 16: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