matlab: funzioni - politecnico di milanocassano.faculty.polimi.it/lez9_funzioni_2020.pdf · 2020....
TRANSCRIPT
![Page 1: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/1.jpg)
Informatica B, AA 20/21, Luca Cassano
Matlab: Funzioni
Informatica B AA 2020/2021
Luca Cassano
25 Novembre 2020
![Page 2: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/2.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
Calcolo del fattoriale
Scrivere un programma che legge da tastiera un intero x e
calcola fx = ς𝑖=1𝑥 𝑖
Se fx è maggiore di 220, il programma legge da tastiera un
intero y e calcola fy = ς𝑖=1𝑦
𝑖
![Page 3: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/3.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
x = input('inserisci x: ');
![Page 4: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/4.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
x = input('inserisci x: ');
fx = 1
for ii = 1 : x
fx = fx * ii;
end
![Page 5: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/5.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
x = input('inserisci x: ');
fx = 1
for ii = 1 : x
fx = fx * ii;
end
if (fx > 220)
end
![Page 6: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/6.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
x = input('inserisci x: ');
fx = 1
for ii = 1 : x
fx = fx * ii;
end
if (fx > 220)
y = input('inserisci y: ');
end
![Page 7: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/7.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
x = input('inserisci x: ');
fx = 1
for ii = 1 : x
fx = fx * ii;
end
if (fx > 220)
y = input('inserisci y: ');
fy = 1
for ii = 1 : y
fy = fy * ii;
end
end
![Page 8: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/8.jpg)
Informatica B, AA 20/21, Luca Cassano
x = input('inserisci x: ');
fx = 1
for ii = 1 : x
fx = fx * ii;
end
if (fx > 220)
y = input('inserisci y: ');
fy = 1
for ii = 1 : y
fy = fy * ii;
end
end
A cosa servono funzioni e script?
Entrambi i
frammenti di
codice
eseguono il
calcolo del
fattoriale
![Page 9: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/9.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
Riusabilità
• Scrivo una sola volta codice utilizzato spesso
• Lo stesso codice viene richiamato in diversi programmi
![Page 10: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/10.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
Riusabilità
• Scrivo una sola volta codice utilizzato spesso
• Lo stesso codice viene richiamato in diversi programmi
Leggibilità
• Incapsulo porzioni di codice complesso, il
programmatore non deve entrare nei dettagli
![Page 11: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/11.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
Flessibilià
• Posso aggiungere funzionalità non presenti nelle
funzioni di libreria
![Page 12: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/12.jpg)
Informatica B, AA 20/21, Luca Cassano
A cosa servono funzioni e script?
Flessibilià
• Posso aggiungere funzionalità non presenti nelle
funzioni di libreria
Manutenibilità
• Modifiche e correzioni sono gestibili facilmente
• E’ più difficili commettere errori sistematici
![Page 13: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/13.jpg)
Informatica B, AA 20/21, Luca Cassano
Usiamo uno script file?
Uno script è un file che può essere usato per incapsulare
porzioni di codice riusabili in futuro
![Page 14: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/14.jpg)
Informatica B, AA 20/21, Luca Cassano
Usiamo uno script file?
Uno script è un file che può essere usato per incapsulare
porzioni di codice riusabili in futuro
x = input('inserisci x: ');
fx=1
for ii=1:x
fx = fx*ii
end
if (fx>220)
y = input('inserisci y: ');
fy=1
for ii=1:y
fy = fy*ii
end
end
![Page 15: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/15.jpg)
Informatica B, AA 20/21, Luca Cassano
Usiamo uno script file?
Uno script è un file che può essere usato per incapsulare
porzioni di codice riusabili in futuro
x = input('inserisci x: ');
fx=1
for ii=1:x
fx = fx*ii
end
if (fx>220)
y = input('inserisci y: ');
fy=1
for ii=1:y
fy = fy*ii
end
end
f=1
for ii=1:n
f = f*ii
end
fattoriale.m
![Page 16: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/16.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files
Problemi:
• Come fornisco l’input allo script?
• Dove recupero l’output?
Gli script utilizzano le variabili del workspace:
f=1
for ii=1:n
f = f*ii
end
fattoriale.m
![Page 17: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/17.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files
Problemi:
• Come fornisco l’input allo script?
• Dove recupero l’output?
Gli script utilizzano le variabili del workspace:
x = input('inserisci x: ');
f=1
for ii=1:n
f = f*ii
end
fattoriale.m
![Page 18: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/18.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files
Problemi:
• Come fornisco l’input allo script?
• Dove recupero l’output?
Gli script utilizzano le variabili del workspace:
x = input('inserisci x: ');
n=x f=1
for ii=1:n
f = f*ii
end
fattoriale.m
Prepara l’input in n
![Page 19: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/19.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files
Problemi:
• Come fornisco l’input allo script?
• Dove recupero l’output?
Gli script utilizzano le variabili del workspace:
x = input('inserisci x: ');
n=x
fattoriale
f=1
for ii=1:n
f = f*ii
end
fattoriale.m
Prepara l’input in n
chiama lo script
![Page 20: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/20.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files
Problemi:
• Come fornisco l’input allo script?
• Dove recupero l’output?
Gli script utilizzano le variabili del workspace:
x = input('inserisci x: ');
n=x
fattoriale
fx=f
f=1
for ii=1:n
f = f*ii
end
fattoriale.m
Prepara l’input in n
chiama lo script
Salva il risultato in fx
![Page 21: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/21.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files
Problemi:
• Come fornisco l’input allo script?
• Dove recupero l’output?
Gli script utilizzano le variabili del workspace:
x = input('inserisci x: ');
n=x
fattoriale
fx=f
if (fx>220)
y = input('inserisci y: ');
n=y
fattoriale
fy=f
end
f=1
for ii=1:n
f = f*ii
end
fattoriale.m
Prepara l’input in n
chiama lo script
Salva il risultato in fx
Prepara l’input
chiama lo script
Salva il risultato in fy
![Page 22: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/22.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files (2)
n=x
Workspace
x n
![Page 23: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/23.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files (2)
n=x
fattoriale
Workspace
x n f f=1
for ii=1:n
f = f*ii
end
![Page 24: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/24.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files (2)
n=x
fattoriale
fx=f
fx
Workspace
x n f f=1
for ii=1:n
f = f*ii
end
![Page 25: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/25.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files (2)
n=x
fattoriale
fx=f
fx
Workspace
x n f f=1
for ii=1:n
f = f*ii
end
Questo meccanismo ha molti svantaggi:
• poco leggibile
• richiede molte istruzioni
• poco sicuro
![Page 26: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/26.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files (2)
n=x
fattoriale
fx=f
fx
Workspace
x n f f=1
for ii=1:n
f = f*ii
end
Questo meccanismo ha molti svantaggi:
• poco leggibile
• richiede molte istruzioni
• poco sicuro
Tutte le variabili sono nello stesso workspace (fattoriale.m può
modificare tutte le variabili del workspace)
![Page 27: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/27.jpg)
Informatica B, AA 20/21, Luca Cassano
Limiti degli script-files (2)
n=x
fattoriale
fx=f
fx
Workspace
x n f f=1
for ii=1:n
f = f*ii
end
Questo meccanismo ha molti svantaggi:
• poco leggibile
• richiede molte istruzioni
• poco sicuro
Tutte le variabili sono nello stesso workspace (fattoriale.m può
modificare tutte le variabili del workspace)
Le funzioni non hanno questi problemi
![Page 28: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/28.jpg)
Informatica B, AA 20/21, Luca Cassano
Le funzioni
function f=fattoriale(n)
f=1
for ii=1:n
f = f*ii
end
![Page 29: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/29.jpg)
Informatica B, AA 20/21, Luca Cassano
Le funzioni
function f=fattoriale(n)
f=1
for ii=1:n
f = f*ii
end
n è l’argomento della
funzione (serve a
fornire l’input)
![Page 30: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/30.jpg)
Informatica B, AA 20/21, Luca Cassano
Le funzioni
function f=fattoriale(n)
f=1
for ii=1:n
f = f*ii
end
n è l’argomento della
funzione (serve a
fornire l’input)
f è il valore di ritorno
della funzione (serve a
fornire l’output)
![Page 31: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/31.jpg)
Informatica B, AA 20/21, Luca Cassano
Le funzioni
function f=fattoriale(n)
f=1
for ii=1:n
f = f*ii
end
header
n è l’argomento della
funzione (serve a
fornire l’input)
f è il valore di ritorno
della funzione (serve a
fornire l’output)
La testata (o intestazione o header) inizia con la parola chiave function e
definisce:
• nome della funzione
• argomenti (input)
• valore di ritorno (output)
![Page 32: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/32.jpg)
Informatica B, AA 20/21, Luca Cassano
Le funzioni
function f=fattoriale(n)
f=1
for ii=1:n
f = f*ii
end
body
header
n è l’argomento della
funzione (serve a
fornire l’input)
f è il valore di ritorno
della funzione (serve a
fornire l’output)
La testata (o intestazione o header) inizia con la parola chiave function e
definisce:
• nome della funzione
• argomenti (input)
• valore di ritorno (output)
Il corpo definisce le istruzioni da eseguire se la funzione viene chiamata
• Utilizza gli argomenti e assegna il valore di ritorno
![Page 33: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/33.jpg)
Informatica B, AA 20/21, Luca Cassano
Sintassi per la Definizione di una Funzione
La sintassi per definire l’header di funzione è:
function [out1,.., outM] = nomeFunzione(in1, .., inN)
end
![Page 34: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/34.jpg)
Informatica B, AA 20/21, Luca Cassano
Sintassi per la Definizione di una Funzione
La sintassi per definire l’header di funzione è:
function [out1,.., outM] = nomeFunzione(in1, .., inN)
end
Gli argomenti (parametri in ingresso) in1,.., inN
vanno elencati tra parentesi tonde e seguono il nome della funzione
![Page 35: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/35.jpg)
Informatica B, AA 20/21, Luca Cassano
Sintassi per la Definizione di una Funzione
La sintassi per definire l’header di funzione è:
function [out1,.., outM] = nomeFunzione(in1, .., inN)
end
Gli argomenti (parametri in ingresso) in1,.., inN
vanno elencati tra parentesi tonde e seguono il nome della
funzione
I valori ritornati (parametri in uscita) out1,.., outN
vanno elencati tra parentesi quadre e seguono la keyword
function.
![Page 36: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/36.jpg)
Informatica B, AA 20/21, Luca Cassano
Sintassi per la Definizione di una Funzione
La sintassi per definire l’header di funzione è:
function [out1,.., outM] = nomeFunzione(in1, .., inN)
end
NB: se la funzione non ha parametri in ingresso/uscita le
parentesi tonde/quadre rimangono vuote
function [] = nomeFunzione(in1, .., inN)
end
function [out1,.., outM] = nomeFunzione()
end
![Page 37: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/37.jpg)
Informatica B, AA 20/21, Luca Cassano
Esempi
Una funzione può avere più argomenti separati da virgola:
function [v1] = f(x,y)
Nel caso sia necessario ritornare più valori, definiamol’header affiancando più variabili in output usando la stessanotazione degli array (l’output non deve necessariamenteessere omogeneo):
function [v1,v2,…] = f(x,y)
![Page 38: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/38.jpg)
Informatica B, AA 20/21, Luca Cassano
Esempi
Una funzione può avere più argomenti separati da virgola:
function [v1] = f(x,y)
Nel caso sia necessario ritornare più valori, definiamol’header affiancando più variabili in output usando la stessanotazione degli array (l’output non deve necessariamenteessere omogeneo):
function [v1,v2,…] = f(x,y)
Esempio:
function [s, p] = sumProd(a, b)
s = a + b;
p = a * b;
end
![Page 39: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/39.jpg)
Informatica B, AA 20/21, Luca Cassano
Invocazione di una funzione
Una funzione può essere invocata in un programma attraverso il
suo nome, seguito dagli argomenti fra parentesi rotonde
La funzione viene quindi eseguita e il suo valore di ritorno viene
calcolato (i suoi valori di ritorno vengono calcolati, nel caso
fossero più di uno). function f=fattoriale(n)
f=1
for ii=1:n
f = f*ii
end
![Page 40: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/40.jpg)
Informatica B, AA 20/21, Luca Cassano
Invocazione di una funzione
Una funzione può essere invocata in un programma attraverso il
suo nome, seguito dagli argomenti fra parentesi rotonde
La funzione viene quindi eseguita e il suo valore di ritorno viene
calcolato (i suoi valori di ritorno vengono calcolati, nel caso
fossero più di uno).
x = input('inserire x:');
fx = fattoriale(x);
if (fx>220)
y = input('inserisci y: ');
fy = fattoriale(y);
end
function f=fattoriale(n)
f=1
for ii=1:n
f = f*ii
end
![Page 41: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/41.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri
Definizioni:
• I parametri formali sono le variabili usate come
argomenti e valori di ritorno nella definizione della
funzione
![Page 42: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/42.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri
Definizioni:
• I parametri formali sono le variabili usate come
argomenti e valori di ritorno nella definizione della
funzione
• I parametri attuali sono i valori (o le variabili) usati come
argomenti e come valori di ritorno nell’invocazione della
funzione
![Page 43: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/43.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri
Definizioni:
f ed n sono parametri formali
function f=fattoriale(n)
f = 1;
for ii=1:n
f = f*ii;
end
![Page 44: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/44.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri
Definizioni:
f ed n sono parametri formali
function f=fattoriale(n)
f = 1;
for ii=1:n
f = f*ii;
end
>> fat5 = fattoriale(5) %Invocazione
fat5 =
120 fat5 e 5 sono parametri attuali
![Page 45: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/45.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri (2)
Qualsiasi tipo di parametri è ammesso (scalari, vettori,
matrici, strutture, ecc.)
![Page 46: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/46.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri (2)
Qualsiasi tipo di parametri è ammesso (scalari, vettori,
matrici, strutture, ecc.)
I parametri attuali vengono associati a quelli formali in
base alla posizione:
Esempio
>> [x,y]=sumProd(4,5)
function [s,p]=sumProd(a,b)
s=a+b;
p=a*b;
![Page 47: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/47.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri (2)
Qualsiasi tipo di parametri è ammesso (scalari, vettori,
matrici, strutture, ecc.)
I parametri attuali vengono associati a quelli formali in
base alla posizione:
• il primo parametro attuale viene associato al primo
formale
Esempio
>> [x,y]=sumProd(4,5)
function [s,p]=sumProd(a,b)
s=a+b;
p=a*b;
![Page 48: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/48.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri (2)
Qualsiasi tipo di parametri è ammesso (scalari, vettori,
matrici, strutture, ecc.)
I parametri attuali vengono associati a quelli formali in
base alla posizione:
• il primo parametro attuale viene associato al primo
formale
• il secondo parametro attuale al secondo parametro
formale
Esempio
>> [x,y]=sumProd(4,5)
function [s,p]=sumProd(a,b)
s=a+b;
p=a*b;
![Page 49: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/49.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri (2)
Qualsiasi tipo di parametri è ammesso (scalari, vettori,
matrici, strutture, ecc.)
I parametri attuali vengono associati a quelli formali in
base alla posizione:
• il primo parametro attuale viene associato al primo
formale
• il secondo parametro attuale al secondo parametro
formale
Esempio
>> [x,y]=sumProd(4,5)function [s,p]=sumProd(a,b)
s=a+b;
p=a*b;
![Page 50: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/50.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione
Quando una funzione viene invocata, viene creato un workspace “locale” in cui vengono memorizzate tutte le variabili usate nella funzioni inclusi i parametri formali.
Workspace
principale
Workspace
locale
![Page 51: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/51.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione
Quando una funzione viene invocata, viene creato un workspace “locale” in cui vengono memorizzate tutte le variabili usate nella funzioni inclusi i parametri formali.
• All’interno delle funzioni non si può accedere al workspace “principale” (nessun conflitto di nomi)
Workspace
principale
Workspace
locale
![Page 52: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/52.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione
Quando una funzione viene invocata, viene creato un workspace “locale” in cui vengono memorizzate tutte le variabili usate nella funzioni inclusi i parametri formali.
• All’interno delle funzioni non si può accedere al workspace “principale” (nessun conflitto di nomi)
• Al termine dell’esecuzione della funzione, il workspace“locale” viene distrutto!
Workspace
principale
Workspace
locale
![Page 53: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/53.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione
Quando una funzione viene invocata, viene creato un workspace “locale” in cui vengono memorizzate tutte le variabili usate nella funzioni inclusi i parametri formali.
• All’interno delle funzioni non si può accedere al workspace “principale” (nessun conflitto di nomi)
• Al termine dell’esecuzione della funzione, il workspace“locale” viene distrutto!
Workspace
principale
Workspace
locale
Le comunicazioni tra i workspace
avvengono solamente mediante
copia dei valori dei parametri
in ingresso ed in uscita
![Page 54: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/54.jpg)
Informatica B, AA 20/21, Luca Cassano
Riepilogando: Esecuzione di una funzione (2)
Quando viene invocata una funzione:1. Vengono calcolati i valori dei parametri attuali di
ingresso
![Page 55: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/55.jpg)
Informatica B, AA 20/21, Luca Cassano
Riepilogando: Esecuzione di una funzione (2)
Quando viene invocata una funzione:1. Vengono calcolati i valori dei parametri attuali di
ingresso
2. Viene creato un workspace “locale” per la funzione
![Page 56: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/56.jpg)
Informatica B, AA 20/21, Luca Cassano
Riepilogando: Esecuzione di una funzione (2)
Quando viene invocata una funzione:1. Vengono calcolati i valori dei parametri attuali di
ingresso
2. Viene creato un workspace “locale” per la funzione
3. I valori dei parametri attuali di ingresso vengono copiati nei parametri formali all’interno del workspace “locale”
− Il workspace locale ora contiene solamente i parametri formali con assegnati i valori dei parametri attuali
![Page 57: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/57.jpg)
Informatica B, AA 20/21, Luca Cassano
Riepilogando: Esecuzione di una funzione (2)
Quando viene invocata una funzione:1. Vengono calcolati i valori dei parametri attuali di
ingresso
2. Viene creato un workspace “locale” per la funzione
3. I valori dei parametri attuali di ingresso vengono copiati nei parametri formali all’interno del workspace “locale”
− Il workspace locale ora contiene solamente i parametri formali con assegnati i valori dei parametri attuali
4. Viene eseguito il corpo della funzione
![Page 58: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/58.jpg)
Informatica B, AA 20/21, Luca Cassano
Riepilogando: Esecuzione di una funzione (2)
Quando viene invocata una funzione:1. Vengono calcolati i valori dei parametri attuali di
ingresso
2. Viene creato un workspace “locale” per la funzione
3. I valori dei parametri attuali di ingresso vengono copiati nei parametri formali all’interno del workspace “locale”
− Il workspace locale ora contiene solamente i parametri formali con assegnati i valori dei parametri attuali
4. Viene eseguito il corpo della funzione
5. Vengono copiati i valori di ritorno dai parametri formali nel workspace “locale” al workspace“principale” nei corrispondenti parametri attuali
![Page 59: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/59.jpg)
Informatica B, AA 20/21, Luca Cassano
Riepilogando: Esecuzione di una funzione (2)
Quando viene invocata una funzione:1. Vengono calcolati i valori dei parametri attuali di
ingresso
2. Viene creato un workspace “locale” per la funzione
3. I valori dei parametri attuali di ingresso vengono copiati nei parametri formali all’interno del workspace “locale”
− Il workspace locale ora contiene solamente i parametri formali con assegnati i valori dei parametri attuali
4. Viene eseguito il corpo della funzione
5. Vengono copiati i valori di ritorno dai parametri formali nel workspace “locale” al workspace“principale” nei corrispondenti parametri attuali
6. Il workspace “locale” viene distrutto
![Page 60: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/60.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
end
W “principale”
![Page 61: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/61.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
end
x=3
W “principale” dopo (1)
![Page 62: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/62.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
end
x=3
w=2
W “principale” dopo (2)
![Page 63: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/63.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
end
x=3
w=2
W “principale” dopo (2)
x=4
W “locale” prima (1’)
![Page 64: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/64.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
end
x=3
w=2
W “principale” dopo (2)
x=4
y=8
W “locale” dopo (1’)
![Page 65: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/65.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
end
x=3
w=2
W “principale” dopo (2)
x=0
y=8
W “locale” dopo (2’)
![Page 66: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/66.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
end
x=3
w=2
W “principale” dopo (2)
x=0
y=8
z=4
W “locale” dopo (3’)
![Page 67: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/67.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
end
x=3
w=2
r=8
W “principale” dopo (3)
![Page 68: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/68.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
W “principale”
![Page 69: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/69.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
x=3
W “principale” dopo (1)
![Page 70: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/70.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
x=3
w=2
W “principale” dopo (2)
![Page 71: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/71.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
x=3
w=2
W “principale” dopo (2)
W “locale”
![Page 72: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/72.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
x=3
w=2
W “principale” dopo (2)
x=4
W “locale” prima (1’)
![Page 73: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/73.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
x=3
w=2
W “principale” dopo (2)
x=4
y=8
W “locale” dopo (1’)
![Page 74: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/74.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
x=3
w=2
W “principale” dopo (2)
x=4
y=0
W “locale” dopo (2’)
![Page 75: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/75.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
x=3
w=2
W “principale” dopo (2)
x=4
y=0
z=4
W “locale” dopo (3’)
![Page 76: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/76.jpg)
Informatica B, AA 20/21, Luca Cassano
Esecuzione di una funzione: esempio
(1) >> x=3;
(2) >> w=2;
(3) >> r = funz(4);
function y = funz(x)
y = 2*x; %(1’)
x = 0; %(2’)
z = 4; %(3’)
x = w - 1; %(4’)
end
x=3
w=2
W “principale” dopo (2)
x=4
y=0
z=4
w=? errore
W “locale” dopo (4’)
![Page 77: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/77.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri (3)
Il numero di parametri di ingresso attuali all’invocazione
della funzione deve essere identico al numero di parametri
di ingresso formali della funzione
![Page 78: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/78.jpg)
Informatica B, AA 20/21, Luca Cassano
I Parametri (3)
Il numero di parametri di ingresso attuali all’invocazione
della funzione deve essere identico al numero di parametri
di ingresso formali della funzione
Il numero di parametri di uscita attuali all’invocazione
della funzione può essere minore del numero di parametri
di uscita formali della funzione
• Ad esempio s = sommaProd(5,2) il valore della
somma viene assegnato a s ma non il valore del
prodotto (anche se la funzione lo calcola)
![Page 79: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/79.jpg)
Informatica B, AA 20/21, Luca Cassano
Note sui Parametri in Uscita
I parametri formali dei valori di ritorno devono essere
sempre definiti (eventualmente possono essere vuoti)
![Page 80: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/80.jpg)
Informatica B, AA 20/21, Luca Cassano
Note sui Parametri in Uscita
I parametri formali dei valori di ritorno devono essere
sempre definiti (eventualmente possono essere vuoti)
function [positivi, media] = mediaPositivi(vett)
somma = 0; cnt = 0;
positivi = [];
for ii = 1 : length(vett)
if vett(ii) > 0
positivi = [positivi, vett(ii)];
somma = somma + vett(ii);
cnt = cnt + 1;
end
end
if cnt > 0
media = somma / cnt;
end
>> [a,b] = mediaPositivi(-[1 : 10])
Error in mediaPositivi (line 2)
positivi = vett(vett >0);
Output argument "media" (and
maybe others) not assigned during
call to mediaPositivi
![Page 81: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/81.jpg)
Informatica B, AA 20/21, Luca Cassano
Note sui Parametri in Uscita
I parametri formali dei valori di ritorno devono essere
sempre definiti (eventualmente possono essere vuoti)
function [positivi, media] = mediaPositivi(vett)
somma = 0; cnt = 0;
positivi = [];
for ii = 1 : length(vett)
if vett(ii) > 0
positivi = [positivi, vett(ii)];
somma = somma + vett(ii);
cnt = cnt + 1;
end
end
if cnt > 0
media = somma / cnt;
else
media = [];
end
![Page 82: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/82.jpg)
Informatica B, AA 20/21, Luca Cassano
Note sull’output
>> [x,y]=sumProd(4,5) function [s,p]=sumProd(a,b)
s=a+b;
p=a*b;
![Page 83: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/83.jpg)
Informatica B, AA 20/21, Luca Cassano
Note sull’output
>> [x,y]=sumProd(4,5)
È però possibile invocare la funzione senza specificare due
parametri in uscita,
• x = sumProd(4,5). In tal caso solamente il primo output
viene assegnato ad x
function [s,p]=sumProd(a,b)
s=a+b;
p=a*b;
![Page 84: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/84.jpg)
Informatica B, AA 20/21, Luca Cassano
Note sull’output
>> [x,y]=sumProd(4,5)
È però possibile invocare la funzione senza specificare due
parametri in uscita,
• x = sumProd(4,5). In tal caso solamente il primo output
viene assegnato ad x
L’invocazione associa alla variabile ans il secondo
argomento restituito da sumProd
function [s,p]=sumProd(a,b)
s=a+b;
p=a*b;
![Page 85: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/85.jpg)
Informatica B, AA 20/21, Luca Cassano
Note sull’output
>> [x,y]=sumProd(4,5)
Per riceve solo il secondo output uso ~ come se fosse una
variabile da non considerare [~,y] = sumProd(4,5)
function [s,p]=sumProd(a,b)
s=a+b;
p=a*b;
![Page 86: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/86.jpg)
Informatica B, AA 20/21, Luca Cassano
File Funzione
Come nel caso degli script, anche le funzioni possono
essere scritti in file di testo sorgenti
• Devono avere estensione .m
• Devono avere lo stesso nome della funzione
• La prima riga del file deve contenere l’header della
funzione e di fatto iniziare con la parola chiave
function
![Page 87: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/87.jpg)
Informatica B, AA 20/21, Luca Cassano
File Funzione
Come nel caso degli script, anche le funzioni possono
essere scritti in file di testo sorgenti
• Devono avere estensione .m
• Devono avere lo stesso nome della funzione
• La prima riga del file deve contenere l’header della
funzione e di fatto iniziare con la parola chiave
function
Attenzione a non “ridefinire” funzioni esistenti
• exist(‘nomeFunzione’) 0 se la funzione non esiste
![Page 88: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/88.jpg)
Informatica B, AA 20/21, Luca Cassano
File Funzione
Come nel caso degli script, anche le funzioni possono
essere scritti in file di testo sorgenti
• Devono avere estensione .m
• Devono avere lo stesso nome della funzione
• La prima riga del file deve contenere l’header della
funzione e di fatto iniziare con la parola chiave
function
Attenzione a non “ridefinire” funzioni esistenti
• exist(‘nomeFunzione’) 0 se la funzione non esiste
Se le prime righe della funzione (dopo l’header) contengono
commenti, questi rappresentano l’help della funzione e
vengono visualizzati quando si scrive: >> help nomeFunzione
![Page 89: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/89.jpg)
Informatica B, AA 20/21, Luca Cassano
Esercizio
Scrivere una funzione che prende in ingresso due
coefficienti 𝑚, 𝑞 ed un vettore di punti xx e restituisce il
vettore yy dei punti che stanno sulla retta 𝑦 = 𝑚𝑥 + 𝑞 in
corrispondenza a xx
![Page 90: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/90.jpg)
Informatica B, AA 20/21, Luca Cassano
Esercizio
Scrivere una funzione che prende in ingresso due
coefficienti 𝑚, 𝑞 ed un vettore di punti xx e restituisce il
vettore yy dei punti che stanno sulla retta 𝑦 = 𝑚𝑥 + 𝑞 in
corrispondenza a xx
function yy = retta(m, q, xx)
% function yy = retta(m, q, xx)
% m, q sono i coefficienti e xx un vettore di punti
% la funzione restituisce il vettore yy dei punti
che stanno sulla
% retta y = mx + q in corrispondenza a xx
yy = m * xx + q;
end
![Page 91: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/91.jpg)
Informatica B, AA 20/21, Luca Cassano
Esercizio
Implementare la funzione trasposizione per le matrici
![Page 92: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/92.jpg)
Informatica B, AA 20/21, Luca Cassano
Esercizio
function [t]=trasposta(m)
[r,c]=size(m);
for ii=1:r
for jj=1:c
t(jj,ii)=m(ii,jj);
end
end
end
>> m =[1,2,3,4
5,6,7,8
9,10,11,12]
m =
1 2 3 4
5 6 7 8
9 10 11 12
>> trasposta(m)
ans =
1 5 9
2 6 10
3 7 11
4 8 12
Implementare la funzione trasposizione per le matrici
![Page 93: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/93.jpg)
Informatica B, AA 20/21, Luca Cassano
Esercizio
%% scrivere un programma che chiede all'utente di inserire un
% numero positivo (nel caso in cui il numero non è positivo
ripetere l’inserimento)
%
% verificare se il numero è perfetto
%
% in caso contrario dice se è abbondante o difettivo.
% Dopo di che richiede un altro numero e controlla se
% i due numeri sono amici
%
% un numero è perfetto se corrisponde alla somma
% dei suoi divisori, escluso se stesso
% abbondante se è > della somma dei suoi divisori
% altrimenti difettivo
%
% a,b sono amici se la somma dei divisori di a= b e viceversa
![Page 94: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/94.jpg)
Informatica B, AA 20/21, Luca Cassano
Implemento diverse funzioni che richiamo
function n = inserisciInteroPositivo()
% function n = inserisciInteroPositivo()
%
% richiede all'utente di inserire un intero positivo
% e lo restituisce
function somma = calcolaSommaDivisori(n)
%function somma = calcolaSommaDivisori(n)
%
% calcola la somma di tutti i divisori di n escluso n
function [res, abb] = controllaSePerfetto(n)
% function [res, abb] = controllaSePerfetto(n)
%
% res = true se n è perfetto (uguale alla somma dei suoi
divisori escluso se stesso)
% se res = false e abb = true/false se è abbondante o
difettivo
function res = controllaSeAmici(a,b)
% function res = controllaSeAmici(a,b)
%
% res = 1 se a è amico di b, 0 altrimenti
![Page 95: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/95.jpg)
Informatica B, AA 20/21, Luca Cassano
function n = inserisciInteroPositivo()
%
% function n = inserisciInteroPositivo()
%
% richiede all'utente di inserire un intero
positivo
% e lo restituisce
isPositivo = 0
while(isPositivo == 0)
n = input('Inserire intero positivo: ')
isPositivo = (n > 0 && n == round(n));
end
end
![Page 96: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/96.jpg)
Informatica B, AA 20/21, Luca Cassano
function somma = calcolaSommaDivisori(n)
%
%function somma = calcolaSommaDivisori(n)
%
% calcola la somma di tutti i divisori di n escluso
n
somma = 0;
for ii = 1 : n / 2 % inutile procedere oltre a n/2.
if (mod(n, ii) == 0)
somma = somma + ii;
end
end
end
![Page 97: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/97.jpg)
Informatica B, AA 20/21, Luca Cassano
function [res, abb] = controllaSePerfetto(n)
% function [res, abb] = controllaSePerfetto(n)
%
% res = true se n è perfetto
%
% se res = false e abb = true/false n è
abbondante/difettivo
s = calcolaSommaDivisori(n);
abb = [];
if (n == s)
res = true;
else
res = false;
if n > s
abb = true;
else
abb = false;
end
end
end
![Page 98: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/98.jpg)
Informatica B, AA 20/21, Luca Cassano
function res = controllaSeAmici(a,b)
%
% function res = controllaSeAmici(a,b)
%
% res = 1 se a è amico di b, 0 altrimenti
if b == calcolaSommaDivisori(a) && a ==
calcolaSommaDivisori(b)
res = true;
else
res = false;
end
end
![Page 99: Matlab: Funzioni - Politecnico di Milanocassano.faculty.polimi.it/Lez9_Funzioni_2020.pdf · 2020. 11. 26. · frammenti di codice eseguono il calcolo del fattoriale. Informatica B,](https://reader035.vdocuments.pub/reader035/viewer/2022062610/6114b42b820eaf38c9727e9d/html5/thumbnails/99.jpg)
Informatica B, AA 20/21, Luca Cassano
Script per l’utilizzo delle funzioni definite
n = inserisciInteroPositivo();
[perf, abbond] = controllaSePerfetto(n);
if(perf == true)
disp([num2str(n), ' è perfetto']);
else
disp([num2str(n), ' NON è perfetto']);
if(abbond == true)
disp([num2str(n), ' è abbondante']);
else
disp([num2str(n), ' è difettivo']);
end
m = inserisciInteroPositivo();
amici = controllaSeAmici(n,m);
if(amici)
disp([num2str(n), ' e ', num2str(m), ' sono amici'])
else
disp([num2str(n), ' e ', num2str(m), ' NON sono amici'])
end
end