
Come fare una funzione su Octave
In questa lezione ti spiego come creare una funzione su Octave.
Cos'è una funzione? E' una parte del codice che può essere eseguita quando necessita. Il codice della funzione è separato dal programma principale. Può trovarsi nello stesso file o in un file diverso. Le funzioni sono molto importanti nella programmazione. Rendono il codice di un programma più sintetico, compatto e ordinato.
La sintassi generale di una funzione per definire una funzione è la seguente
function [y1, y2, ... ] = nomefunzione([x1,x2,...])
codice da eseguire
endfunction
- I termini x1,x2... sono le variabili (dati in ingresso) che la funzione riceve in input dalla chiamata.
- I termini y1,y2... sono le variabili (dati in uscita) che la funzione restituisce in output.
Dopo aver definito una funzione, puoi chiamare ed eseguire la funzione più volte e da diversi punti del programma.
Ti faccio un esempio pratico
Inizia a scrivere lo script con un'operazione di calcolo qualsiasi. Ad esempio con 1;
1;
Nota. Se inizi lo script digitando function... l'interprete di Octave pensa che si tratti di un file di funzioni anziché di uno script.
Poi crea una funzione con nome media() che riceve in ingresso due dati numerici x1 e x2 e restituisce in uscita la media aritmetica y
1;
function y = media(x1,x2)
y = (x1+x2)/2;
endfunction
A questo punto aggiungi nel codice del programma una chiamata alla funzione media() con due valori 2 e 4 in ingresso
1;
function y = media(x1,x2)
y = (x1+x2)/2;
endfunction
m=media(2,4);
disp(m);
La funzione riceve i due valori in ingresso x1=2 e x2=4, calcola la media y=(2+4)/2 e restituisce in uscita il risultato y=3
Pertanto, l'output del programma è 3
3
Ora aggiungi una seconda chiamata passando alla funzione due dati diversi.
Ad esempio, 4 e 6
1;
function y = media(x1,x2)
y = (x1+x2)/2;
endfunction
m=media(2,4);
disp(m);
m=media(4,6);
disp(m);
In questo caso il programma chiama la funzione media() due volte da due punti diversi.
- La prima volta passa i valori 2 e 4 ricevendo come risposta 3.
- La seconda volta passa i valori 4 e 6 ricevendo come risposta 5.
Pertanto, l'output del programma è
3
5
Una funzione può restituire anche più valori in uscita.
Ad esempio, la funzione [y1,y2] = potenza(x) riceve in ingresso un valore numerico (x) e produce in uscita due valori.
1;
function [y1, y2] = potenza(x)
y1=x^2;
y2=x^3;
endfunction
[y1,y2]=potenza(2);
disp(y1);
disp(y2);
La chiamata alla funzione passa come valore in ingresso x=2.
La funzione potenza() calcola il quadrato y1=4 e il cubo y2=8 restituendo due risultati in uscita.
4
8
Se vuoi anticipare la chiusura della funzione e la restituzione dei risultati utilizza l'istruzione return.
Ecco un esempio pratico.
1;
function [y1, y2] = potenza(x)
if x<0
y1=0
y2=0
return
endif
y1=x^2;
y2=x^3;
endfunction
[y1,y2]=potenza(-2);
disp(y1);
disp(y2);
L'istruzione return termina l'esecuzione della funzione e restituisce i risultati y1=0 e y2=0 se il valore passato è negativo.
In questo caso l'output della funzione è
0
0
Adesso hai una buona panoramica sull'utilizzo delle funzioni in Octave