Funzioni |
In Proteus esistono essenzialmente due tipi di funzioni: le funzioni di libreria e le funzioni definite dall'utente (UDF).
In questo manuale le funzioni di libreria sono classificate in
categorie sulla base del loro impiego; esse costituiscono i
'mattoni' con cui l'utente può creare nuove funzioni e, in
quanto tali, sono molto più veloci di qualunque funzione
realizzata in Proteus per svolgere lo stesso compito.
Le UDF, d'altro canto, permettono di strutturare il codice e di riutilizzare le stesse funzioni in più programmi Proteus, realizzando delle proprie librerie.
Per quanto riguarda l'invocazione di funzioni, è indispensabile far seguire l'inizio di parentesi al nome della funzione, senza separare le due componenti con spazi, in questo modo:
; Corretto STRDUP("string") ; Errato STRDUP ("string")
I parametri in Proteus possono essere passati in tre modi diversi: per valore, per riferimento implicito e per riferimento esplicito.
Il passaggio per valore è il più comune e non richiede particolari accorgimenti da parte dell'utente, essendo il metodo di passaggio predefinito.
Il passaggio per riferimento implicito si ottiene premettendo il carattere '@' ad ogni nome di variabile nella dichiarazione della UDF:
FUNCTION MyFunc(@var1, var2, @var3)
var1 e var3 sono passate per riferimento; var2 è passata per valore. Nel caso di passaggio per riferimento implicito, la funzione viene invocata come al solito, senza particolari accorgimenti; al termine dell'esecuzione della UDF, il valore dell'identificatore locale viene assegnato al rispettivo parametro, purché esso corrisponda ad un nome di variabile.
Il passaggio per riferimento esplicito, viceversa, non richiede particolari accorgimenti nella definizione della UDF, bensì richiede di premettere il carattere '@' ad ogni parametro che si vuole passare per riferimento nell'invocazione della funzione, ad esempio in questo modo:
CONSOLELN MyFunc(@var1, var2, @var3)
Il passaggio per riferimento implicito è consigliabile se i parametri con cui si invoca la UDF devono essere passati sempre per riferimento e quindi, per evitare di premettere molte volte il carattere '@', lo si indica una volta per tutte nella definizione della funzione; il passaggio per riferimento esplicito è utile se solo qualche volta i parametri sono passati per riferimento, ad esempio nel caso di funzioni di libreria.
Passaggio per valore, per riferimento implicito ed esplicito possono essere mescolati senza problemi nella definizione ed invocazione di una funzione.
Nel seguito di questo manuale, se una funzione di libreria
ammette il passaggio per riferimento esplicito su alcuni
parametri ciò sarà indicato premettendo al loro nome la
sequenza di caratteri [@]; nessuna funzione di
libreria presenta il passaggio per riferimento implicito. Nei
parametri passati per riferimento all'interno delle funzioni di
libreria viene sempre memorizzato il risultato della funzione,
salvo diversamente indicato; se più di un parametro presenta il
prefisso '@', il risultato viene memorizzato in ciascun parametro
passato per riferimento.
Possono essere passati per riferimento solo gli identificatori ed il risultato
della funzione PUB
(cioè, ad esempio, INC(@PUB(N))
è corretta e comporta la memorizzazione nell'identificatore
pubblico N del risultato della funzione); non
possono essere passate per riferimento tutte le altre funzioni,
le costanti stringa e numeriche.
Anche se non si utilizza il passaggio per riferimento, è possibile modificare il valore di una variabile esterna ad una UDF mediante l'impiego del metodo PSET (sebbene ciò sia considerato un side-effect e come tale non consigliato).
Alcune funzioni di libreria presentano un numero variabile di parametri; nella definizione sintattica i parametri opzionali sono racchiusi tra parentesi [quadre] e seguiti da due puntini di sospensione ("..").
Inizio pagina | Prossimo argomento | Argomento precedente | Indice per argomenti | Indice analitico |