L'istruzione gosub e' simile a quella goto, ma con una importante differenza. ![]() Come col goto anche in questo caso bisogna impostare un'etichetta. Si utilizza la seguente scrittura nome etichetta: Vediamo che questa volta manca il cancelletto dopo i due punti. Quindi nel punto in cui impostare il salto basta scrivere gosub nome etichetta Vediamo un esempio: vengono richiesti tre numeri e successivamente viene chiesto se sommarli o moltiplicarli. Notiamo subito le due subroutine indicate dalle etichette somma (riga 10) e moltiplicazione (riga 13). Queste subroutine terminano con i rispettivi return rispettivamente alla riga 12 e alla riga 15. ![]() - righe 1, 2, 3 - con l'istruzione input vengono memorizzati i tre nuemeri nelle variabili x, y, z - riga 4 - viene lasciata una riga vuota con l'istruzione print vuota - riga 5 - avviene la scelta, memorizzata nella variabile k, tra somma (s) e moltiplicazione (m) con l'istruzione input - riga 6 - se (if) la scelta e' s, avviene il salto (gosub) alla subroutine somma (riga 10); in caso contrario la riga viene ignorata - riga 7 - se (if) la scelta e' m, avviene il salto (gosub) alla subroutine moltiplicazione (riga 13); in caso contrario la riga viene ignorata - riga 8 - viene lasciata una riga vuota con l'istruzione print vuota - riga 9 - il risultato memorizzato nella variabile r, calcolato in una delle due subroutine in base alla scelta, viene visualizzato - riga 10 - inizio subroutine somma - riga 11 - calcolo della somma e memorizzazione del risultato nella variabile r - riga 12 - l'istruzione return termina la subroutine somma e provoca il ritorno del programma alla riga 7 (che verra' ignorata perche' se e' stata eseguita questa subroutine, significa che la scelta e' stata s) - riga 13 - inizio subroutine moltiplicazione - riga 14 - calcolo del prodotto e memorizzazione del risultato nella variabile r - riga 15 - l'istruzione return termina la subroutine moltiplicazione e provoca il ritorno del programma alla riga 8 Il programma termina alla riga 9. Le altre righe sono subroutine, che vengono eseguite solo se richiamate col gosub. ![]()
|