Corso di AMOS
Torna all'elenco delle lezioni LEZIONE 6: Le Procedure

Amos offre la possibilita di dare un tocco di classe ai propri listati con l'utilizzo delle procedure, cioè, come già accennato nella lezione precedente, poter creare delle parti indipendenti dal programma main.
Esse accelerano il compito di debugging e danno un tocco di professionalita.


Procedure nome[variabili]
Tutto il listato compreso tra questo comando ed End Proc è considerato interno alla procedura. Le variabili interne sono autonome il loro valore è tale solo all'interno della procedura in cui sono state assegnate.
E` possibile però metterle in comune con tutto il listato (altre procedure comprese) col comando Global... all'inizio del main program, oppure si può far circolare una variabile tra l'esterno e questa procedura, mettendola tra parentesi quadre nel comando Procedure per dar modo ad essa di entrare e nel comando End Proc per darle modo di uscire e rendersi disponidile per l'esterno.


End Proc[parametro]
Chiude la procedura attuale e passa nel programma chiamante il parametro usato poi con Param[]


Global variabili
Mette in comune le variabili elencate dopo Global tra tutte le procedure e il listato esterno in modo da poterle modificare in ogni parte del listato.


Nome-procedura[parametri]
Richiama la suddetta procedura e trasferisce i parametri dal programma attuale nella peocedura nome-procedura, e i parametri possono avere nomi diversi ma devono essere dello stesso tipo (Stringa/stringa, numero intero/numero intero, numero reale/numero reale).


Param[]
Richiama nel programma chiamate il parametro specifico in End Proc.

Es.:

Procedure PRELEVANOME[MAX]
Print "IL NOME OTTIMIZZATO A"+Str$(MAX)+" LETTERE e"+Param$

Stampa il parametro stringa, ottimizzato al numero di lettere inpostato nella chiamata di procedura.


Pop Proc[]
Fa uscire immediatamente dalla procedura corrente, e anch'essa come End Proc, accetta un parametro di uscita.


Shared variabili
Deve essere la prima istruzione all'interno di una procedura e isolata su una riga.
Permette di condividere le variabili con l'esterno (main) e la procedura corrente.

-STRUTTURE CICLICHE E BLOCCHI DECISIONALI-

In Amos Basic non avrete più problemi nel creare cicli complessi, basta pensare che l'editor stesso pensa ad effettuare l'indentazione!!!
Dunque le nidificazioni più complesse diventeranno subito un gioco da ragazzi. Sono previsti anche comandi un pò particolari che ti semplificano il compito: si puo disattivare, ed attivare, in qualsiasi momento l'effetto dei tasti Ctrl+C per l'interruzione del programma in esecuzione.


Break On/Off
Attiva o disattiva la combinazione di tasti Ctrl+C che serve per interrompere un programma durante la sua esecuzione. Da usare con cautela perche se messo in Off e il vostro programma è dotato di un ciclo continuo, non ci sarà più via d'uscita dal programma e dovrete resettare, quindi se siete ancora nella fase di debug/testing del Vs programma, metteteci una Rem davanti e toglietela solo alla fine e soprattutto salvate il vostro lavoro.


Direct
Torna al modo diretto.


Do/.../Loop
Segue all'infinito il loop di istruzioni finchè non trova Exit o Exit If.
Consigliabile per la parte principale del programma.


Edit
Torna in ambiente editor.


End
Interrompe l'esecuzione di un programma.


Every n Gosub label
Salta ogni n cinquantesimi di secondo alla label specificata con gosub; deve essere seguita da Wait VBL e da Every ON.


Every n Proc name
Salta ogni n cinquantesimi di secondo alla label specificata con Proc deve essere seguita da Wait VBL e da Every ON.


Every On/Off
Attiva o disattiva il contatore automatico richiamato in un comando Every; deve essere ripetuta ad ogni ripetizione del ciclo.


Exit If...[,n]
Esce da n cicli, o dal corrente, se si verifica quella condizione.


Exit [n]
Esci subito da n struttore cicliche.


For i=f To l [Step inc]...Next i
Incrementa la variabile i che parte con valore f e termina con valore l. Questo comando rappresenta un ciclo, infatti ogni volta che si incontra con Next ritorna al For incrementando i, il tutto fino a che i non raggiunge il valore l. Step dà il passo di incremento o di decremento.


Gosub label/n ...Return
Istruzione simile al Goto; con il comando Return si torna all'istruzione che segue l'ultimo Gosub.


Goto label/n riga
Trasferisce il controllo del programma ad un'altra sezione (label o riga numerata); si possono utilizzare le operazioni delle stringhe.

Es.:

Goto "PR"+STR$(2)

salterà alla label PR2.


If../../Else If/../End If/End If
Se si verifica la prima condizione, esegue la prima lista di istruzioni, altrimenti esegue la seconda (si può usare anche con Else semplice); la condizione se è espressa da comandi che ritornano valori (per es, Upper$, Inkey$) deve essere racchiusa da tante parentesi quante ne bastano per rendere la condizione unica.

Es.:

If ((CONDIZIONE) Or (CONDIZIONE))

If espr. Then istr1 : Else istr2

Se si verifica la condizione espressa in espr allora esegue istr1, altrimenti esegue istr2.

If .../istr1... [/Else/istr2...] /End If

Se si verifica la condizione nel primo If allora esegue istr1 altrimenti esegue istr2.


On variabile Gosub label/n ,...
Salta ad una label (o una riga numerata) della lista a seconda del valore della variabile.


On variabile Goto label/n ,,...
Salta ad una label (o riga numerata) della lista a seconda del valore della variabile.


On variabile Proc proc1,...
Salta ad una procedura della lista a seconda del valore della variabile.


Pop
Cancella dallo stack l'ultimo indirizzo di ritorno del Gosub.


Repeat /istr.../Until condizione
Ripete la lista di istruzioni finche è verificata la condizione. (Esegue il loop almeno una volta.)


While condizione/istr...Wend
Finchè la condizione è vera esegue il loop di istruzioni. (Può non eseguire il loop nemmeno una volta.) Si è parlato di Label ma cosa sono in realta? Una label è semplicemente un punto nel programma da noi definito dove sistemare ad esempio una routine a noi utile. Si creano semplicemente mettendo, all'inizio di una certa linea di programma un nome seguito dai due punti. Per esempio se mi serve una routine di calcolo dove mandare ogni volta il programma, basta che all'inizio della routine vi definisco la mia label che potrei chiamare CALCOLO:. Per mandare in quel punto l'esecuzione del programma sarà sufficiente scrivere Goto CALCOLO. Le label sono definibili anche all'interno delle procedure, ma in questo caso, sono utilizzabili solo dalle stesse che le contengono, come pure, le linee Data.

-GLI ERRORI ED I POSSIBILI RIMEDI-

Se in altri linguaggi la gestione degli errori non era l'argomento più semplice, con Amos si può ben dire il contrario. Infatti il suo autore ha previsto numerosi comandi che semplificano la vita al novellino quanto all'abile programmatore.


=Errm
Ritorna il numero di errore che si è generato dal programma o dall'utente.


On Error Goto label
Ogni volta che sarà generato un errore il controllo del programma sarà trasferito alla label specificata.


On Error proc1,proc2...procn
Nel caso sia generato un errore, trasferisce il controllo del programma alla procedura specificata.


Resume
Dopo la generazione di un errore, ripristina l'esecuzione del programma dall'istruzione che ha generato quell'errore; naturalmente prima di richiamarla si deve eliminare la causa dell'errore.


Resume Label
Dopo la generazione dell'errore, questo comando fa riprendere l'esecuzione del programma dalla label specificata dal comando Resume Label nome.


Resume Label nome
Dopo la generazione di un errore, ripristina l'esecuzione del programma dalla label specificata non appena si incontrerà un comando Resume Label.
N.B.: Il comando Resume Label nome deve essere inserito subito dopo i comandi On Error Goto label o On Error Proc.

Bene! La sesta lezione è terminata. Qualcuno aveva richiesto di aggiungere qualche esempio pratico alle lezioni, abbiamo quindi realizzato un programmino che dovrebbe poter chiarire alcuni dubbi, il quale è allegato alla presente lezione. In ogni caso se ancora siete incerti su qualche argomento non esitate a chedere aiuto ai nostri indirizzi E-Mail.

Alla prossima lezione.


 Il corso di AMOS è scritto da:   Impaginazione by:
Barbieri Adriano
& Joseph Lombardo
Trombini Davide

[Index]    [5° Lezione]    [7° Lezione]


Copyright AMiWoRLD