G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XII Le funzioni Programmazione di Calcolatori: le funzioni 1.

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

INFORMATICA Algoritmi fondamentali
Sottoprogrammi: funzioni e procedure
LE FUNZIONI IN C Sommario 1 Introduzione 2 Moduli di programma in C
PUNTATORI Introduzione
Fondamenti di Informatica CDL in Ingegneria Gestionale (B)- A.A CDL in Ingegneria Gestionale (B)- A.A Programmazione Ricorsiva.
Introduzione al linguaggio C
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
Funzioni definite dall’utente
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
CORSO DI PROGRAMMAZIONE II
Array Un array è una collezione in sequenza di variabili del medesimo tipo Riferimento con un nome comune Nome_studente1 Nome_studente2. Nome_studenteN.
APPUNTI SUL LINGUAGGIO C
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Dichiarazioni e tipi predefiniti nel linguaggio C
La Programmazione Ricorsiva
Le funzioni.
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
Programmazione di Calcolatori
1 ListaDiElem Cancella( ListaDiElem lista, TipoElemento elem ) { ListaDiElem puntTemp; if( ! ListaVuota(lista) ) if( lista–>info == elem ) { puntTemp =
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Programmazione di Calcolatori
Programmazione di Calcolatori
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1.
C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Programmazione di Calcolatori
Programmazione di Calcolatori
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1.
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione X Ingresso/Uscita di Interi Programmazione di Calcolatori: Ingresso/Uscita 1.
Unità Didattica 3 Linguaggio C
Programmazione di Calcolatori
Lo sviluppo top down Le funzioni
Programmazione di Calcolatori
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XVIII Le matrici Programmazione di Calcolatori: le matrici 1.
C. Gaibisso Programmazione di Calcolatori Lezione XIV I vettori Programmazione di Calcolatori: i vettori 1.
Programmazione di Calcolatori
C. Gaibisso Programmazione di Calcolatori Lezione XXII La struttura di dati lista di variabili strutturate Programmazione di Calcolatori: le liste di.
C. Gaibisso Programmazione di Calcolatori Lezione XVI Allocazione dinamica della memoria Programmazione di Calcolatori: allocazione dinamica della memoria.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 5 (Deitel) Le funzioni Indice degli argomenti Introduzione Moduli nei programmi C 5.3.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Complessità di un algoritmo
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Vettori, indirizzi e puntatori Finora abbiamo usato gli indirizzi nel chiamare  la funzione scanf()  le altre funzioni per riferimento Tuttavia la vera.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 3 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Lo stato  I domini della semantica restano invariati: Ide, Val (Int  { ,  }) Loc (locazioni di memoria), FunctDecl. ma definiamo 2 funzioni: Loc :
10. Programmazione Ricorsiva Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XII Le funzioni Programmazione di Calcolatori: le funzioni 1

G. Amodeo, C. Gaibisso Le funzioni della matematica Programmazione di Calcolatori: le funzioni2 Definizione di una funzione: Dominio Codominio In matematica: Nome f : X Y f(x) = y una legge che assegna ad ogni elemento di X uno ed un solo elemento di Y f : N x N N f(x,y) = (x-y) 2

G. Amodeo, C. Gaibisso Le funzioni del C Programmazione di Calcolatori: le funzioni3 In C: int f (int x, int y) { int ris; ris = (x-y)*(x-y); return(ris); } Ma non cè proprio nessuna differenza? Dominio Codominio Nome una legge che assegna ad ogni elemento del dominio uno ed un solo elemento del codominio

G. Amodeo, C. Gaibisso La differenza … Programmazione di Calcolatori: le funzioni f(x,y,z) possono calcolare valori ma possono anche modificare lo stato della memoria x 2 2 x x x 3 Le funzioni del C:

G. Amodeo, C. Gaibisso Definizione di una funzione Programmazione di Calcolatori: gli operatori5 E necessario assegnare alla funzione: a)un nome b)il tipo del valore calcolato c)il nome e il tipo delle variabili di ingresso (parametri formali) d)le modalità secondo le quali (algoritmo) il valore della funzione è calcolato a partire dai parametri formali

G. Amodeo, C. Gaibisso Definizione di funzione Programmazione di Calcolatori: gli operatori6 Funzioni che calcolano un valore: tipo F nome F (tipo 1 par 1, …, tipo k par k ) { … return(espressione); } il valore di espressione è il valore restituito dalla funzione Funzioni che si limitano a modificare lo stato della memoria: void nome F (tipo 1 par 1, …, tipo k par k ) { … return(espressione); } intestazione corpo

G. Amodeo, C. Gaibisso Definizione di funzione Programmazione di Calcolatori: le funzioni7 Esempio: // definizione della funzione che calcola la somma di 4 numeri interi int somma (int num1, int num2, int num3, int num4) { // definizione della variabile per la somma int totale; // calcola la somma dei 4 parametri formali totale = num1 + num2 + num3 + num4; // restituisce il valore cosi calcolato return(totale); }; // definizione della funzione che calcola la somma di 4 numeri interi int somma (int num1, int num2, int num3, int num4) { // restituisce la somma dei 4 parametri formali return(num1 + num2 + num3 + num4); };

G. Amodeo, C. Gaibisso Chiamata di funzione Programmazione di Calcolatori: gli operatori8 E necessario specificare: a)il nome della funzione b)una lista di espressioni, una per ognuno dei parametri formali (parametri attuali) c)parametri formali e espressioni corrispondenti devono essere dello stesso tipo nome F (espr 1, …, espr k )

G. Amodeo, C. Gaibisso Chiamata di funzione Programmazione di Calcolatori: gli operatori9 Funzioni che calcolano un valore: nome_variabile = nome F (espr 1, …, espr k ); con il tipo di nome_variabile coincidente con quello assegnato alla funzione nella sua definizione può comparire ovunque può comparire unespressione dello stesso tipo di quello assegnato alla funzione nella sua definizione Esempio:

G. Amodeo, C. Gaibisso Chiamata di funzione Programmazione di Calcolatori: le funzioni10 // sorgente: Lezione_XII\DefChiamata.c // definizione della funzione per la somma di 4 numeri interi #include int somma (int num1, int num2, int num3, int num4) { // restituisce la somma dei 4 parametri formali return(num1+num2+num3+num4); } ; int main() { // definizione delle variabili e loro acquisizione int n1, n2, n3, n4; printf("\nFornire i 4 valori: "); scanf("%d %d %d %d", &n1, &n2, &n3, &n4); // chiamata della funzione printf("\nLa somma e': %d", somma(n1,n2,n3,n4)); return(0); }; Esempio

G. Amodeo, C. Gaibisso Chiamata di funzione Programmazione di Calcolatori: le funzioni11 Compilazione: Esecuzione:

G. Amodeo, C. Gaibisso Modalità di passaggio dei parametri Programmazione di Calcolatori: le funzioni12 Modalità di passaggio dei parametri: modalità in accordo alle quali i parametri attuali sono legati ai parametri formali In modo informale (ma non troppo), per ognuno dei parametri formali: 1.si alloca memoria per il parametro formale 2.si valuta il corrispondente parametro attuale 3.il risultato di tale valutazione viene assegnato al corrispondente parametro formale 4.si esegue il corpo della funzione 5.si rilascia la memoria allocata per i parametri formali

G. Amodeo, C. Gaibisso Modalità di passaggio dei parametri Programmazione di Calcolatori: le funzioni13 Corrispondenza tra parametri attuali e parametri formali: stabilita sulla base dellordine con cui questi compaiono nella chiamata e nella intestazione della funzione, rispettivamente

G. Amodeo, C. Gaibisso Modalità di passaggio dei parametri Programmazione di Calcolatori: le funzioni x x x x x x x z y int max (int N, int M) { if (N > M) return(N); else return(M); } ; y = max (x+1, z%4); x x N x x M Esempio

G. Amodeo, C. Gaibisso Modalità di passaggio dei parametri Programmazione di Calcolatori: le funzioni x x x1 void Add (int N) { N = N+1; } ; Add(x); x x N 1 Abbiamo un problema!!! 2

G. Amodeo, C. Gaibisso Abbiamo un problema … Programmazione di Calcolatori: le funzioni16 // sorgente: Lezione_XII\PassParNo.c // esempio che dimostra come non sia possibile // modificare il valore dei parametri attuali #include // definizione della funzione che vorrebbe aggiungere1 ad una variabile void add (int n) { n++; }; // chiamante int main() { // definizione e inizializzazione della variabile di prova int prova=1; printf("\nValore prima della chiamata: %d", prova); // chiamata della funzione che dovrebbe aumentarne il valore add(prova); printf("\nValore successivo alla chiamata: %d", prova); return(0); }; Esempio

G. Amodeo, C. Gaibisso Abbiamo un problema … Programmazione di Calcolatori: le funzioni17 Compilazione: Esecuzione:

G. Amodeo, C. Gaibisso Modalità di passaggio dei parametri Programmazione di Calcolatori: le funzioni x x x1 void Add (int *N) { *N = *N+1; } ; Add(&x); x x N 2839 Ma abbiamo anche la soluzione!!! 2

G. Amodeo, C. Gaibisso E abbiamo la soluzione … Programmazione di Calcolatori: le funzioni19 // sorgente: Lezione_XII\PassParSi.c // modalita di modifica dello stato della memoria tramite una funzione #include // definizione della funzione che aggiunge1 al valore di una variabile void add (int *n) { // aggiunge 1 alla varibile puntata dal parametro formale *n=*n+1; }; int main() { // definizione e inizializzazione della variabile di prova int prova=1; printf("\nValore prima della chiamata: %d", prova); // chiamata della funzione che ne aumenta il valore add(&prova); printf("\nValore successivo alla chiamata: %d", prova); return(0); }; Esempio

G. Amodeo, C. Gaibisso E abbiamo la soluzione … Programmazione di Calcolatori: le funzioni20 Compilazione: Esecuzione:

G. Amodeo, C. Gaibisso Quando definisco lintestazione di una funzione … Programmazione di Calcolatori: le funzioni21 Devo capire: 1.se restituisce un valore, e in caso di risposta positiva di che tipo è 2.quanti e di che tipo sono i valori di ingresso 3.se modifica lo stato della memoria, e in caso di risposta positiva quali sono i riferimenti ai contenuti da modificare // sorgente Lezione_XII\scambia.c #include // funzione che scambia il contenuto di due variabili intere void scambia (int *var1, int *var2) { int temp; temp = *var1; *var1 = *var2; *var2 = temp; }; Esempio:

G. Amodeo, C. Gaibisso Quando definisco una funzione … Programmazione di Calcolatori: le funzioni22 // chiamante int main () { // definizione e acquisizione delle variabili int A, B; printf (\nDammi il valore della I variabile: ); scanf (%d, &A); printf (\nDammi il valore della II variabile: ); scanf (%d, &B); printf(\nI variabile prima dello scambio: %d\n, A); printf(II variabile prima dello scambio: %d\n, B); // chiama la funzione che scambia le variabili scambia(&A, &B); printf(\nI variabile dopo lo scambio: %d\n, A); printf(II variabile dopo lo scambio: %d\n, B); return(1); } Esempio:

G. Amodeo, C. Gaibisso Quando definisco una funzione … Programmazione di Calcolatori: le funzioni23 Compilazione: Esecuzione:

G. Amodeo, C. Gaibisso Quando definisco una funzione … Programmazione di Calcolatori: le funzioni24 // sorgente: Lezione_XII\somma2in1.c #include // funzione che somma il contenuto di due variabili // in una terza variabile void somma_in (int s1, int s2, int *dest) { *dest = s1+s2; }; Esempio:

G. Amodeo, C. Gaibisso Quando definisco una funzione … Programmazione di Calcolatori: le funzioni25 // chiamante int main () { // definizione e acquisizione delle variabili int A, B, somma; printf (\nDammi il valore della I variabile: ); scanf (%d, &A); printf (\nDammi il valore della II variabile: ); scanf (%d, &B); // chiamata della funzione che somma i due input // in una terza variabile somma_in(A, B, &somma); printf(\nSomma: %d, somma); return(1); }; Esempio:

G. Amodeo, C. Gaibisso Quando definisco una funzione … Programmazione di Calcolatori: le funzioni26 Compilazione: Esecuzione: