_antoniobernardo
Ominide
4 min. di lettura
Vota 4 / 5

Concetti Chiave

  • In Octave, le funzioni possono essere definite sia direttamente nel prompt di comando che in file esterni, semplificando programmi complessi.
  • Le funzioni seguono una sintassi specifica e possono restituire multipli valori di output, con le variabili nel corpo della funzione che sono locali.
  • I file di script contengono sequenze di comandi Octave e differiscono dai file delle funzioni poiché le variabili non sono locali.
  • I file di funzioni vengono salvati con estensione .m, mantenendo la compatibilità con Matlab, e devono essere specificati nel percorso di ricerca LOADPATH di Octave.
  • Comandi speciali possono essere chiamati come funzioni ordinarie o senza parentesi, ma non è possibile passarvi variabili come input a causa delle limitazioni di Octave.

Funzioni e script files

I programmi più complicati di octave possono spesso essere semplificati definendo funzioni.

Le funzioni possono essere definite direttamente sul prompt di comando o in files esterni e possono essere richiamate solo come funzioni già  impostate.

Definire funzioni

La forma più semplice è

Function name

Body

endfunction

Un nome di funzioni valido, come per la variabile, può essere una sequenza di lettere, numeri e underscores, ma non iniziare con un numero. Il body è la parte più importante perché dice cosa la funzione effettivamente fa. Normalmente ci stanno delle informazioni sulla funzione e la sintassi per passare i parametri alla funzione è:

function name(arg-list)

body

endfunction

dove arg-list è una lista di argomenti della funzione separati da virgola.

Lo scopo dell'inserimento della funzione è quello di ottenere informazioni di output della funzione definita. La sintassi, per esempio, di una funzione che ritorna un valore è:

function ret-var=nome(arg-list)

body

endfunction

ret-var è il nome della variabile che contiene il valore di output della funzione.

Le variabili usate nel corpo della funzione sono variabili locali.

Valori di output multipli

Al contrario di altri programmi Octave consente di definire funzioni che danno come output più valori. La sintassi è:

function[ret-list]=nome(arg-list)

body

endfunction

dove ret-list è una lista di nomi di variabili separate da una virgola che conterranno il valore di output della funzione. La lista dei valori di output (ret-list in tal caso) deve avere almeno un elemento.

Script files

E' un file che contiene ogni sequenza dei comandi octave.

Al contrario di un file function non deve iniziare con la parola function. Un'altra differenza sta nel fatto che le variabili richiamate in uno script non sono locali.

E' possibile definire più di una funzione in uno script files e caricarle (ma non eseguirle) tutte, una per volta.

Salvare file di fuzioni

I file vengono salvati con l'estensione .m, questo per mantenere una compatibilità  con la nomenclatura usata da Matlab.

I file possono essere memorizzati in una qualsiasi directory che poi deve essere specificata all'interno di octave. Octave quando incontra una funzione cerca il suo nome in quelle predefinite, nel caso non vengano trovate va a cercarla in file esterni (.m) specificata nella lista di directory all'interno della variabile d'ambiente LOADPATH.

Ad esempio LOADPATH=”?:/root/octave”? specifica che i file .m si troveranno nella directory “/root/octave”? . In caso di più directory queste vengono separate dai due punti (“:”?).

Comandi

Sono speciali classi di funzioni.

Un comando può essere chiamato come una funzione ordinaria, ma può anche essere richiamato senza parentesi. Esempio

my_command hello world

equivale a

my_command(“hello”?,”?world”?)

Una funzione può essere usata come comando se accetta stringhe come argomenti di input. Per far ciò, la funzione deve essere definita come un comando, che può essere fatto con il comando “mark_as_command”?. Esempio

mark_as_command name

dove name è la funzione che deve essere chiamata come un comando.

Una difficoltà  si ha quando le stringhe di argomenti di input sono memorizzate in una variabile.

Siccome octave non può dire la differenza tra il nome di una variabile e una stringa ordinaria, non è possibile passare una variabile come input al comando.

Domande da interrogazione

  1. Come si definisce una funzione in Octave?
  2. In Octave, una funzione si definisce con la sintassi "function name(arg-list) body endfunction", dove "name" è il nome della funzione, "arg-list" è la lista degli argomenti, e "body" è il codice che esegue la funzione.

  3. Qual è la differenza tra un file script e un file function in Octave?
  4. Un file script non inizia con la parola "function" e le variabili non sono locali, mentre un file function inizia con "function" e le variabili sono locali.

  5. Come si salvano i file di funzioni in Octave?
  6. I file di funzioni si salvano con l'estensione .m e devono essere memorizzati in una directory specificata all'interno di Octave, indicata nella variabile d'ambiente LOADPATH.

  7. Octave permette di avere funzioni con più valori di output?
  8. Sì, Octave consente di definire funzioni che restituiscono più valori di output usando la sintassi "function[ret-list]=nome(arg-list) body endfunction".

  9. Come si può usare una funzione come comando in Octave?
  10. Una funzione può essere usata come comando se accetta stringhe come argomenti di input e viene definita con il comando "mark_as_command".

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community