Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Informatica per l’Ingegneria
Funzioni e procedure Informatica per l’Ingegneria
2
Informatica per l’Ingegneria
Indice Necessità di sottoprogrammi(funzioni e procedure) Funzioni Procedure Comunicazione con i sottoprogrammi Tipi di sottoprogrammi Informatica per l’Ingegneria
3
Il concetto di sottoprogramma (1)
I sottoprogrammi implementano operazioni non predefinite sui tipi di dati I sottoprogrammi racchiudono in maniera astratta le righe di codice necessarie ad eseguire un’operazione Se l’operazione deve essere ripetuta più volte l’utilizzo dei sottoprogrammi è ancora più vantaggioso Informatica per l’Ingegneria
4
Il concetto di sottoprogramma (2)
I sottoprogrammi sono lo strumento per realizzare astrazioni sulle operazioni Due tipi (concettualmente): Funzioni: sottoprogrammi descrivibili come vere e proprie funzioni matematiche e possiedono un dominio ed un codominio Procedure: sottoprogrammi che modificano lo stato di alcune variabili di programma L’utilizzo dei sottoprogrammi necessita di: Definizione del sottoprogramma Chiamata del sottoprogramma Informatica per l’Ingegneria
5
Sottoprogrammi: Definizione
Deve contenere almeno il nome del sottoprogramma, la lista degli output e degli input Le variabili di input prendono il nome di parametri formali del sottoprogramma In Matlab: In un file di funzione (estensione .m) che: Tratta tutte le variabili come locali Ha il nome uguale a nome_funzione.m Inizia con la riga di definizione della funzione : function [variabili di output] =nome_funzione(variabili di input) Ammette le seguenti varianti di definizione: - function variabile_di_output =nome_funzione(variabili di input) quando c’è una sola variabile di output - function nome_funzione(variabili di input) quando non c’è alcuna variabile di output (procedura) Informatica per l’Ingegneria
6
Sottoprogrammi: Chiamata
Consentono di utilizzare le operazioni implementate dal sottoprogramma: Struttura della chiamata: Identificatore del sottoprogramma Lista dei parametri attuali, tra parentesi tonde: Sono i valori degli argomenti rispetto ai quali deve essere calcolato Corrispondono in numero e ordine ai parametri formali dichiarati In Matlab: nome_funzione (parametri attuali) Varianti: parametri attuali come varibili, oppure come valori, oppure come vettori Informatica per l’Ingegneria
7
Esecuzione dei sottoprogrammi e passaggio dei parametri
drop.m function [dist, vel] = drop (g, v0,t) vel=g*t+v0; dist= 0.5*g*t^2+v0*t; myscript.m a=9,8; veloc_iniziale=10; tempo=5; [distanza, veloc] = drop (a, veloc_iniziale, tempo) Informatica per l’Ingegneria
8
Esecuzione di funzioni: macchine astratte master e slave
g a veloc_iniziale v0 t tempo dist distanza vel veloc SLAVE: calcola il risultato dopo aver manipolato i parametri formali MASTER: chiama la funzione passando i parametri attuali Informatica per l’Ingegneria
9
Esecuzione di funzioni: macchine astratte master e slave
Le due macchine hanno ciascuna il proprio ambiente di esecuzione: La macchina slave ha un ambiente locale di funzione caratterizzato da: Variabili locali Variabili corrispondenti ai parametri formali Variabile che contengono i valori di output La macchina master ha un ambiente caratterizzato dalle variabili che utilizza il programma chiamante, tra cui quelle passate come parametri attuali Informatica per l’Ingegneria
10
Passaggio di parametri
L’istruzione: [distanza, veloc] = drop (a, veloc_iniziale, tempo) provoca il seguente flusso: La macchina master chiama la macchina slave per il valore di [distanza, veloc] passando i parametri ad essa:il passaggio dei parametri consiste nella copiatura dei parametri attuali nella cella dei parametri formali Il controllo viene ceduto alla macchina slave, che procede con l’esecuzione come un normale programma Il controllo viene restituito alla macchina master con la restituzione del valore di [distanza, veloc] Informatica per l’Ingegneria
11
Informatica per l’Ingegneria
Procedure Sono sottoprogrammi che non restituiscono valori Le procedure non servono a produrre dei valori di un certo tipo ma a modificare lo stato del programma che ne chiede l’esecuzione Informatica per l’Ingegneria
12
Informatica per l’Ingegneria
Procedure : esempio sortandprint.m function sortandprint(V) N=length(V) for i=1:N k=i; for j=i+1:N if V(k) >V(j) k=j; end if k~=i lavoro = V(i); V(i) = V(k); V(k)= lavoro; disp(V); myscript.m I= [8, 15, 1, 4, 87] sortandprint (I); Informatica per l’Ingegneria
13
Esecuzione delle procedure
Ambiente globale V I N k j Ambiente locale di mioscript.m i lavoro Ambiente di sortandprint.m Informatica per l’Ingegneria
14
Passaggio parametri per indirizzo
Parametri attuali Parametri formali Passaggio per valore 243 243 Ind(x) = 2034 y A Passaggio per indirizzo 413 1004 Ind(y) = 1004 Informatica per l’Ingegneria
15
Visibilità delle variabili
variabili locali: i loro valori sono visibili solo all’interno della funzione che le definiscono e non nell’area di lavoro principale variabili globali: i loro valori sono visibili all’interno dell’area principale di lavoro e nelle funzioni che dichiarano tali variabili come globali: sintassi: global A X Y nelle funzioni Informatica per l’Ingegneria
16
Informatica per l’Ingegneria
Handle di Funzioni etichette utilizzabili per fare riferimento alle funzioni Esempio: definire un handle d per la funzione drop function [dist, vel] = drop (g, v0,t) Utilità: definire funzioni di funzioni Esempio x0) è una funzione che calcola lo zero di una ad una sola variabile, se X0 è ipotizzato come valore dello 0. Informatica per l’Ingegneria
17
Categorie di Sottoprogrammi
Built in: automaticamente forniti dal linguaggio matematiche, logiche, ecc User defined: definiti dall’utente come visto finora Informatica per l’Ingegneria
18
Tipi di sottoprogrammi user-defined in Matlab
Funzione primaria: prima funzione in un file .m, unica chiamabile nel prompt con il nome del file che la contiene o con il comando Run Funzioni anonime: non richiedono la creazione di file.m Sottofunzioni: definite in un file .m a seguito della funzione primaria Funzioni annidate: definite all’interno di altre funzioni, non visibili al di fuori di esse Funzioni overloaded: rispondono in maniera diversa a seconda degli argomenti di input Funzioni private: chiamabili soltanto dalle funzioni di file.m che si trovano nella directory parent Informatica per l’Ingegneria
19
Esempio funzione principale-sottofunzione
I = [82, 3, 4, 7, 1, 89, 43]; sort(I); function sort(V) N=length(V) for i=1:N k=i; for j=i+1:N if V(k) >V(j) k=j; end if k~=i lavoro = V(i); V(i) = V(k); V(k)= lavoro; disp(V); Funzione Principale Sottofunzione Informatica per l’Ingegneria
20
Informatica per l’Ingegneria
Esercizio 1 Progettare tramite flowchart struttrato un programma che acquisisca un vettore di interi e consenta la scelta ripetuta tra le seguenti opzioni: visualizzazione del massimo e minimo nel vettore visualizzazione della media nel vettore visualizzazione del vettore ordinato in ordine crescente ricerca binaria di un elemento K nel vettore. Codificare in Matlab il progetto, realizzando un sottoprogramma per ognuna delle opzioni precedenti Informatica per l’Ingegneria
21
Esercizio 1 : funzione primaria
Informatica per l’Ingegneria
22
Esercizio 1 : ricerca del massimo e del minimo
Informatica per l’Ingegneria
23
Esercizio 1 : calcolo della media
Informatica per l’Ingegneria
24
Esercizio 1 : ordinamento
Informatica per l’Ingegneria
25
Informatica per l’Ingegneria
Esercizio 1 : ricerca Informatica per l’Ingegneria
26
Informatica per l’Ingegneria
Esercizio 2 Progettare tramite flowchart struttrato un programma che acquisisca un vettore di stringhe e consenta la scelta ripetuta tra le seguenti opzioni: visualizzazione del vettore ordinato in ordine alfabetico ricerca binaria di un elemento K nel vettore. Codificare in Matlab il progetto, realizzando un sottoprogramma per ognuna delle opzioni precedenti Informatica per l’Ingegneria
27
Esercizio 2: funzione primaria
Informatica per l’Ingegneria
28
Esercizio 2: Inserimento nel vettore
Informatica per l’Ingegneria
29
Esercizio 2: confronto alfabetico
Informatica per l’Ingegneria
30
Esercizio 2: Ordinamento alfabetico
Informatica per l’Ingegneria
31
Esercizio 2: ricerca binaria
Informatica per l’Ingegneria
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.