DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio –...

29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Sottoprogrammi Marco D. Santambrogio – [email protected] Ver. aggiornata al 20 Dicembre 2013

Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio –...

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

SottoprogrammiSottoprogrammi

Marco D. Santambrogio – [email protected]. aggiornata al 20 Dicembre 2013

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Venerdì 20 Dicembre…Venerdì 20 Dicembre…

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

E’ Natale…E’ Natale…

e “Santa” porta i “doni”…

3

e quindi…

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

1mo Compitino1mo Compitino

• 208 prove INS: 44 (21.2%) 7: 26 (12.5%) SUF: 138 (66.3%)

Dei SUF (138)• 13 maggiori di 15 (6.25% sul totale)• In 7 hanno preso 17 (3.36% sul totale)

4

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

ObiettiviObiettivi

• Sottoprogrammi/funzioni• Come invocare una funzione• Passaggio dei dati• Funzioni vs Scripts

5

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sottoprogrammi: perchéSottoprogrammi: perché

• Riusabilità scrivere una sola volta codice usato

più volte

• Astrazione esprimere in modo sintetico

operazioni complesse

• Estendibilità del linguaggio non tutte operazioni incluse come

predefinite

6

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sottoprogrammi: comeSottoprogrammi: come

• Per un sottoprogramma deve essere definito• quale operazione astratta realizza• come può essere identificato dal programma

principale• quali parametri coinvolge

• dati in ingresso come punto di partenza dei calcoli• valori restituiti ai programmi che lo usano

• Un sottoprogramma definito può essere utilizzato dal programma principale

• L’utilizzo è detto chiamata (o invocazione) del sottoprogramma

• In MATLAB i sottoprogrammi hanno la forma di funzioni dominio corrisponde a operandi/dati codominio corrisponde a valori calcolati

7

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

SiSintassi della definizione di funzione: ntassi della definizione di funzione: testata + corpotestata + corpo

• La testata contiene informazioni rilevanti per l’uso corretto del sottoprogramma lista dei risultati, tra parentesi quadre, separati da ‘,’

• matematicamente, il codominio della funzione identificatore del sottoprogramma lista degli argomenti, tra parentesi tonde, separati da ‘,’

• matematicamente, il dominio della funzione

• Argomenti e risultati detti parametri formali se considerati dal punto di vista della

funzione parametri attuali se considerati dal punto di vista del

programma chiamante

8

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Testata + corpo: esempioTestata + corpo: esempio

• Funzione fact per il calcolo del fattoriale

function [f]=fact(n) f=1; for k=1:n f=f*k; end

testata

corpo: è la parte eseguibile

9

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzione usata Funzione usata invocandolainvocandola>> x=fact(4)x =24

• Sintassi dell’invocazione ispirata a notazione matematica una funzione, applicata a suoi argomenti, fornisce un valore del suo

codominio nei programmi i valori denotati da espressioni

• chiamata di funzione sintatticamente è un’espressione

>> x=fact(2)+fact(3)x = 8

>> fact(fact(3))ans = 720

• Equivalente a >> y=fact(3); fact(y)ans = 720

10

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sintassi dellSintassi dell’’invocazioneinvocazione

• Identificatore della funzione • Lista dei parametri attuali racchiusa fra parentesi tonde

parametri attuali• valori degli argomenti ai quali applicata funzione • ogni parametro è un’espressione qualsiasi (di tipo appropriato…)

– può essere una chiamata di funzione

• NB: parametri possono essere di tipo qualsiasi (senza alcuna restrizione)

• Se ci sono più parametri, corrispondenza tra formali e attuali determinata dall’ordine primo formale primo attuale secondo formale secondo attuale etc.

• Numero parametri attuali = numero parametri formali ovviamente, tipo dei parametri attuali compatibile con tipo dei formali

• Nel caso di più parametri in uscita, risultati “raccolti” usando la notazione dei vettori

>> [x,y]=sumProd(4,5)x = 9y = 20

function [s,p]=sumProd(a,b) s=a+b; p=a*b;

11

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Dove si definisce (scrive) una funzione?Dove si definisce (scrive) una funzione?

• In un m-file di tipo particolare detto “file di funzione”• Ha estensione “.m” come i file di script• File di funzione deve

avere stesso nome della funzione che contiene iniziare con la definizione della funzione

• NB: parola function va in minuscolo• ciò distingue da file di script

trovarsi in una cartella che sta nel PATH di MATLAB

• Per evitare conflitti di nomi usare exist(‘nomeFunzione’) restituisce 0 se la funzione non esiste, ≠0 altrimenti

• es. ‘sin’ è una funzione predefinita (built-in)

>> exist('sin')ans = 5

12

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Esecuzione delle funzioni e passaggio dei parametriEsecuzione delle funzioni e passaggio dei parametri

• Comportamento dell’interprete MATLAB durante esecuzione funzioni

Consideriamo esempio>> r=12; s=42; [h,k]=MCDmcm(r, s)h = 6k = 84

• Descrizione esecuzione fa uso di metafora delle macchine astratte una macchina principale per esecuzione programma

chiamante una “asservita” per esecuzione funzione

• entrambe dotate di proprio insieme di variabili detto ambiente o stato di esecuzione

function [M, m]=MCDmcm(a, b) x=a; y=b; while x ~= y if x>y x=x-y; else y=y-x; end; end; M=x; m=a*b/M;

13

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

AmbienteAmbiente

• Ambiente macchina principale contiene due variabili r e s, argomenti della chiamata

(parametri attuali di ingresso) due variabili h e k cui sono assegnati i

risultati (parametri attuali di uscita)

• Ambiente della macchina asservita (ambiente locale della funzione) contiene i quattro parametri formali, due di ingresso,

a e b, e due di uscita, M ed m • sono a tutti gli effetti delle variabili locali alla

funzione– visibili solo al suo interno– esistono indipendentemente da altre variabili anche

omonime esterne altre due variabili locali x e y

14

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Effetto dell’esecuzione di [h,k] = Effetto dell’esecuzione di [h,k] = MCDmcm(r, s)MCDmcm(r, s)

• Macchina principale valuta espressione a destra dell’assegnamento ‘=‘ calcolato il valore dei parametri attuali di ingresso creata macchina asservita passaggio dei parametri

• copiatura valore parametri attuali in ingresso (r ed s) nei corrispondenti parametri formali a e b

ceduto il controllo alla macchina asservita (esecuzione macchina principale sospesa)

esecuzione del corpo della funzione alla fine variabili M ed m hanno valore risultante

dall’esecuzione nell’ambiente locale passaggio dei parametri

• copiatura all’indietro dei parametri formali di uscita (M ed m) nei parametri attuali h e k

controllo restituito a macchina principale , macchina asservita (con tutto il suo ambiente) “distrutta”

15

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sequenza dell’esecuzione di Sequenza dell’esecuzione di [h,k] = MCDmcm(r, s) [h,k] = MCDmcm(r, s)

r:12 s:42 h:… k:…

principale

r:12 h:… k:…

principale

r:12 s:42 h:… k:…

principale

a:… b:… M:.. m:…

MCDmcm

a:12 b:42 M: m:

MCDmcm

(1) (2) (3)

r:12 s:42 h:… k:…

principale

a:12 b:42 M:6 m:84

MCDmcm

(4)

r:12 s:42 h:6 k:84

principale

M:12 m:42 M:6 m:84

MCDmcm

(5)

r:12 s:42 h:6 k:84

principale

M:12 m:42 M:6 m:84

MCDmcm

(6)

x:… y:… x:… y:…

x: 6 y: 6 x: 6 y: 6 x: 6 y: 6

s:42

16

Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Scope delle variabiliScope delle variabili

• Ambienti della macchina principale e di quella asservita sono disgiunti comunicano attraverso i parametri possono contenere variabili omonime, che rimangono distinte NB: dopo esecuzione di una funzione non rimane traccia del suo

ambiente

Es.: variabili x e y locali a MCDmcm distinte da quelle dell’ambiente principale, variabilea indefinita fuori da MDDmcm>> x=12;y=42;[h,k]=MCDmcm(x,y)h = 6k = 84>> [x,y]ans = 12 42>> a??? Undefined function or variable 'a'.

Es.: nessun pericolo di confusione tra variabili omonime nei due ambienti, comunicazione avviene mediante copiatura>> M=12;m=42;[a,b]=MCDmcm(M,m)a = 6b = 84>>

• Meglio comunque in generale evitare omonimie come queste, che creano confusione

function [M, m]=MCDmcm(a, b) x=a; y=b; while x ~= y if x>y x=x-y; else y=y-x; end; end; M=x; m=a*b/M;

17

Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Parametri di tipo arrayParametri di tipo array

• Parametri di tipo array possibili in ingresso e anche in uscita occorre conoscere le dimensioni dell’array in ingresso

• funzione predefinita length(v) fornisce il numero degli elementi di v l’array in uscita può essere costruito incrementalmente

Esempio: function [pres, pos]=cerca(x, v)cerca lo scalare x nell’array v

se x è presente pres=1 altrimenti pres=0pos è un vettore con indici di tutti elementi di v uguali a x

function [pres, pos]=cerca(x, v) p=0; pos=[]; for i=1:length(v) if v(i)==x p=p+1; pos(p)=i; end end pres=p>0;

>> A=[1, 2, 3, 4, 3, 4, 5, 4, 5, 6]A = 1 2 3 4 3 4 5 4 5 6>> [p, i]=cerca(4,A)p = 1i = 4 6 8>>

18

Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Parametri di tipo MatriceParametri di tipo Matrice

• Parametri di tipo matrice (o array a n dimensioni) possibili in ingresso e anche in uscita occorre conoscere le dimensioni del parametro in ingresso

• funzione predefinita ndims(v) dà numero n delle dimensioni di v• funzione predefinita size(v) dà array con n valori: le dimensioni di v• e.g., [R,C]=size(m) dà, in R e in C, num. righe e colonne della

matrice m

• Esempio: function [t]=trasposta(m) crea matrice t con righe e colonne scambiate rispetto a

ingresso m

function [t]=trasposta(m) [R,C]=size(m); for r=1:R for c=1:C t(c,r)=m(r,c); 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

19

Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Parametri di tipo structParametri di tipo struct• Parametri di tipo struct (ovviamente) ammessi: ma non c’è (ahimè) controllo di

tipi attezione a corrispondenza parametri attuali-formali, specie in ingresso

Esempio: function [c]=polar2cart(p) da rappresentazione polare di punto nel piano a quella cartesiana

function [c]=polar2cart(p) c.x=p.ro*cos(p.teta); c.y=p.ro*sin(p.teta);

P

x

y P>> P.ro=1; P.teta=pi/3P = ro: 1 teta: 1.0472>> Q=polar2cart(P)Q = x: 0.5000 y: 0.8660

>> R.to=1; R.teta=pi/3R = to: 1 teta: 1.0472>> Q=polar2cart(R)??? Reference to non-existent field 'ro'.Error in ==> polar2cart at 2 c.x=p.ro*cos(p.teta);

NB!!

20

Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Esempio con ingresso array di Esempio con ingresso array di strutturestrutture

• Esempio: function [dm]=distMedia(a) distanza media dall’origine dei punti (strutture con campi x e

y) contenuti nell’array a

• Una comoda possibilità per le funzioni con più risultati (parametri in uscita):

Esempio: function [s,p]=sumProd(a,b), invocata con >>[x,y]=sumProd(4,5)

• Possibile restituire solo il primo dei valori (l’altro viene perso) assegnando il risultato a uno scalare

>> x=sumProd(4,5)x = 9

function [dm]=distMedia(a) s=0; for k=1:length(a) s=s+sqrt(a(k).x^2+a(k).y^2); end; dm=s/length(a);

>> a.x=1;a.y=0;b.x=0;b.y=2;>> v=[a,b];>> distMedia(v)ans = 1.5000

21

Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

istruzione returnistruzione return

• Termina l’esecuzione della funzione e restituisce il controllo al programma chiamante

• (usualmente questo avviene dopo l’esecuzione dell’ultima istruzione della funzione)

• Esempio d’uso: funzione cercaMultiplo cerca un multiplo di un numero v (assunto 0) in un array a, restituisce posizione p e valore m del multiplo se trovato (o coppia di zeri altrimenti) NB: se nell’array ci sono più multipli se ne può restituire uno

qualsiasi

NB: l’istruzione return non è indispensabile • si può sostituire con combinazioni di altre istruzioni, usando

eventualmente variabili aggiuntive• permette però di scrivere funzioni più compatte e leggibili

function [p,m]=cercaMultiplo(v, a)for k=1:length(a) if mod(a(k),v)==0 p=k; m=a(k); return; %si restituisce il primo multiplo incontrato % evita ulteriori inutili calcoli end;end;p=0; m=0; %eseguite solo se non trovato alcun multiplo

%versione senza istruzione returnfunction [p,m]=cercaMultiploNR(v, a)trovato=0; k=1;while k <= length(a) && ~trovato if mod(a(k),v)==0 p=k; m=a(k); trovato=1; end; k=k+1;end;if ~trovato p=0; m=0;end;

22

Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni che chiamano Funzioni che chiamano funzionifunzioni• Finora assunto funzioni invocate dal programma cosiddetto

“chiamante” o “principale”• linea di comando• script

• alternativa: istruzione di chiamata inclusa in una (altra) funzione• caso molto interessante. con sviluppi importantissimi (ricorsione)

• Esempio semplice: calcolo del coefficiente binomiale • usiamo funzione fact(n) per il fattoriale definita in precedenza

• (NB: nessun conflitto tra parametro n di fact e parametro n di coefBin)

23

!!

!

knk

n

k

n

function [c]=coefBin(n, k) f1=fact(n); f2=fact(k); f3=fact(n-k); c=f1/(f2*f3);

Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Esecuzione di coefBin(6,2)Esecuzione di coefBin(6,2)

• Si generano più macchine astratte asservite. che esistono simultaneamente solo quella creata per ultima è attiva ordine di terminazione delle macchine inverso a

quello di inizio • (gestione LIFO, Last In First Out)

interpretecomandi

(1)

coefBin(6,2)

interpretecomandi

(2)

interpretecomandi

coefBin(6,2)

fact(6)

(3)

interpretecomandi

coefBin(6,2)

(4)

interpretecomandi

coefBin(6,2)

fact(2)

(5)

interpretecomandi

coefBin(6,2)

(6)

interpretecomandi

coefBin(6,2)

fact(4)

(7)

interpretecomandi

coefBin(6,2)

(8)

interpretecomandi

(9)

24

Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Confronto Funzioni vs. Script Confronto Funzioni vs. Script 1/31/3

• Hanno un proprio ambiente di esecuzione variabili locali distinte da quelle del chiamante variabili locali cessano di esistere al ritorno

• Comunicazione mediante copiatura parametri• Adatte a sviluppo sistematico di applicazioni complesse

Unità di programma con alta coesione interna e interfacce minimali e chiaramente identificate

FUNZIONI

SCRIPT• NON hanno un proprio ambiente di esecuzione

– variabili dello script sono le stesse del chiamante– variabili create nello script continuano a esistere

• Comunicazione mediante scrittura/lettura variabili comuni

• Adatti a sviluppo esplorativo e prototipale25

Page 26: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Confronto Funzioni vs. Script Confronto Funzioni vs. Script 2/32/3

Esempio: calcolo distanza tra due punti in piano cartesiano mediante script o funzione

% script: file distScript.mdx = x2 – x1;dy = y2 –y1;d = sqrt(dx^2 + dy^2);

function [d] = distFunz(x1,y1,x2,y2) dx = x2 – x1; dy = y2 –y1; d= sqrt(dx^2 + dy^2);

quattro punti: a(1,1), b(1,2), c(3,2) e d(3,4); calcolata distanza tra a e b (=1) e tra c e d (=2)

>> ax = 1; ay = 1; bx = 1; by = 2; >> cx = 3; cy = 2; dx = 3; dy = 4;

>> x1=ax; y1=ay; x2=bx; y2=by; >> distScript>> Dab = d

Dab = 1>> x1=cx; y1=cy; x2=dx; y2=dy; >> distScript>> Dcd = d Dcd = 3.1623 ERRATO

>> Dab=distFunz(ax,ay,bx,by) Dab = 1>> Dcd=distFunz(cx,cy,dx,dy) Dcd = 2

CORRETTO

variabili usate per comunicare con lo script: - x1, y1, x2, y2 per trasmettere allo script i punti di cui calcolare la distanza - d per restituire al chiamante il risultato

26

Page 27: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Confronto Funzioni vs. Script Confronto Funzioni vs. Script 3/33/3

• Codice che usa la funzione è molto più conciso: incorpora parte di passaggio parametri

• Perchè lo script dà un risultato errato?• Problema con variabili dx e dy: hanno due ruoli

nel chiamante rappresentano coordinate del punto d nello script differenze delle ascisse e delle ordinate dei due

punti• Prima esucuzione dello script modifica coordinate dx e

dy del punto d: diventa d(0,1)• Seconda calcola distanza tra il punto c(3,2) e quello

erroneo d(0,1): viene • NB: l’errore passa inosservato se non si controlla il

risultato

• Morale: script e suo programma chiamante non possono essere definiti indipendentemente occorre individuare variabili usate da entrambi script e

chiamante per la comunicazione le altre variabili devono essere usate da uno solo dei due

27

1623.310

Page 28: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

E ora…E ora…

• Buone feste, a voi e a tutti i vostri cari!

28

Page 29: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Dicembre 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio

Introduzione alla programmazione in MATLAB, A.Campi, E.Di Nitto, D.Loiacono, A.Morzenti, P.Spoletini, Ed.Esculapio• Capitolo 4

• Credits Prof. A. Morzenti

29