Funzioni

MATLAB
Le funzioni

Con il termine funzione si intende, in generale, un
operatore che, applicato a un insieme di operandi,
consente di calcolare un valore come risultato, come
avviene anche per una funzione matematica f(x).
f(x) restituisce un valore, in generale, diverso per ogni
diverso valore di x. I valori che inseriamo tra
parentesi, che in matematica chiamiamo variabili
indipendenti, in MATLAB si chiamano parametri (o
argomenti) della funzione
MATLAB - Funzioni
Funzioni
Funzioni
Una funzione consiste quindi in una serie di istruzioni, che
producono un risultato che varia al variare del valore degli
argomenti della funzione stessa.
Per definire una funzione è necessario, in generale,
specificare:



2
Nome della funzione
Parametri formali (che costituiscono l’input della funzione)
Risultati forniti (che costituiscono l’output della funzione)
Una funzione possono non essere specificati:

Parametri formali (che costituiscono l’input della funzione)


Ad esempio, una funzione che stampa un messaggio prefissato.
Risultati

Ad esempio, se devo solo presentare i risultati su monitor e non
riutilizzarli nei calcoli successivi
function [<risultati>] = nome funzione ([par.formali])
MATLAB - Funzioni
3
MATLAB - Funzioni
4
1
Funzioni
Funzioni

Esempio
Occorre poi definire il codice della funzione
function [risultati] =nome funzione ([par.formali])
function
y = doppio (x)
doppio
è il nome della funzione
x
è il parametro formale
y
è il risultato
corpo della funzione
end
(input)
function
(output)
y = doppio (x)
y = 2 * x;
end
MATLAB - Funzioni
5
Funzioni
MATLAB - Funzioni
Chiamata di funzioni


6
Una volta definita una funzione, essa può essere
utilizzata all’interno di un programma (o di un’altra
funzione)

a = input("Inserisci un numero ")
duevoltea = doppio (a);

disp (duevoltea);

MATLAB - Funzioni
7
La funzione (programma) che utilizza al suo interno
un’altra funzione si dice, rispetto ad essa, funzione
(programma) chiamante; l’utilizzo di una funzione si dice
chiamata di funzione.
Nell’esempio precedente il programma chiamante invoca
doppio(x)
Le operazioni che nel codice della funzione vengono
eseguite sui parametri formali, nella esecuzione della
funzione vengono eseguite sui valori dei corrispondenti
argomenti che compaiono nella chiamata. Questo si
chiama passaggio dei parametri per valore.
Analoga corrispondenza fra parametri esiste per i risultati
MATLAB - Funzioni
8
2
Passaggio parametri per valore

Funzioni con parametri: riepilogo
La funzione opera sui valori dei parametri formali e non
modifica la variabile eventualmente usata nella chiamata.
Es.
Se nel programma chiamante ho che
….
x=3;

y=doppio(x); …
dopo l’esecuzione di doppio(x) il valore di x non risulta
modificato (y, ovviamente, vale 6).

Ogni chiamata di funzione deve passare tanti valori,
attraverso una serie di espressioni dello stesso tipo dei
parametri corrispondenti, quanti sono i parametri formali.
MATLAB - Funzioni

I valori dei parametri effettivi sono copiati nei parametri
formali utilizzati dalla funzione chiamata, cioè i loro
valori sono usati per inizializzare le variabili (parametri
formali) corrispondenti all’interno della funzione
MATLAB - Funzioni
10
function mx=massimo(m,n) % m,n sono
% i parametri formali
if mn
mx=m;
% della funzione
else
mx=n;
end;
end
a  input("Inserisci un numero ")
b  input("Inserisci un altro numero ")
piugrande = massimo(a,b);
disp("Il massimo è "), disp(piugrande);
Nessun effetto provocato da modifiche nel parametro
formale all’interno della funzione si ripercuote sul
parametro reale del programma chiamante
MATLAB - Funzioni
Si dice che i parametri vengono passati per valore,
cioè la funzione assegna, all’inizio della sua
esecuzione, i valori delle espressioni inserite come
argomenti della sua chiamata (dette parametri
effettivi o argomenti), alle corrispondenti variabili che
appaiono nella definizione della funzione come
parametri formali.
Esempio
I parametri effettivi (o argomenti, o parametri attuali) sono
passati per valore dalla funzione chiamante

Possono operare su valori diversi per ogni chiamata
di funzione, a seconda del valore che assumono in
quel momento le espressioni che sono inserite nella
lista dei parametri della chiamata
9
Passaggio parametri per valore


11
MATLAB - Funzioni
12
3
Passaggio parametri per valore (by value)
Esempio
g = 5;
h = doppio(g);
disp(g);
disp(h);

function y=doppio(x) % x è un parametro formale
y=2*x;
end
Quale sarà il valore stampato per le variabili g e h ?
MATLAB - Funzioni
Si realizzi un programma che legga da
tastiera il costo di listino di un prodotto e la
percentuale di sconto e visualizzi il prezzo da
pagare
Per realizzare il programma si definisca e si
usi una funzione che riceva come parametri i
due valori e calcoli il prezzo finale
13
MATLAB - Funzioni
14
Esempio
Esempio
function ps = prezzo_scont (valore, percent)
ps = valore - (valore*percent/100);
end
% Restituisce il valore del minimo di un vettore.
% vet: vettore di cui si cerca il minimo
% dim: numero di elementi del vettore
Valore e percent sono i parametri formali della funzione
function mn = min_ele (vet,dim)
mn  vet(1);
for i=1:dim
if vet(i)mn mnvet(i);
end
end
[costo, perc] = input("Introduci costo e
percentuale (interi) ");
disp("Prezzo di listino: "), disp(costo);
disp("Sconto: "), disp(perc);
disp("Prezzo finale: "),
disp(prezzo_scont(costo, perc) );
for i1:10
numeri(i) = input ("Inserire un numero: ");
end
disp("Il minimo è : "), disp(min_ele(numeri,i));
Costo e percentuale sono i parametri effettivi della chiamata
MATLAB - Funzioni
15
MATLAB - Funzioni
16
4
Esercizi
Esercizi



Scrivere una funzione
function mx = massimo(vet,dim) che calcoli
l’elemento di valore più elevato contenuto nel vettore vet di
dimensione dim.
Utilizzando la funzione scrivere un programma che, dati 2
vettori:
 calcoli il valore più grande fra il massimo dell’uno e
dell’altro
 stampi il valore di tale massimo, indicando in quale dei
due vettori è contenuto.
Sapendo che la funzione di MATLAB s = sizeof(V)
restituisce le dimensioni della variabile V, riscrivere la
funzione ma nella forma function mx = massimo(vet)
MATLAB - Funzioni
17
Scrivere una funzione m = media(a,b,c) che restituisce la
media di tre numeri a,b,c e un programma he chiami la
funzione e stampi i valori di a,b,c e la media.
Scrivere una funzione media_vet(vet, n) che inserisce
nell’elemento n_mo del vettore la media dei primi n-1 elementi
del vettore stesso e il programma che chiama la funzione e
stampa i valori dei primi n-1 elementi e la media, contenuta
nell’elemento n_mo.
Scrivere una funzione inverti(vet, n) che stampa i primi n
elementi del vettore vet in ordine inverso e il programma che
inizializza il vettore con i primi n numeri e chiama la funzione.
Non usare le funzioni di MATLAB, ma solo gli operatori
aritmetici di base
MATLAB - Funzioni
18
5
Scarica

Caratteri e Stringhe