Le funzioni in C++. Introduzione  Spesso alcuni gruppi di operazioni vengono ripetute in diverse parti all’interno del medesimo programma  Si pensi.

Slides:



Advertisements
Presentazioni simili
Procedure e funzioni A. Ferrari.
Advertisements

Introduzione al linguaggio C
Le funzioni.
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 Puntatori Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 15 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2012.
Le funzioni.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
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 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.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2016.
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Fondamenti di Informatica A - Massimo Bertozzi LE FUNZIONI.
CONTROLLO DELLA CONCORRENZA
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Introduzione al linguaggio C
7. Strutture di controllo Ing. Simona Colucci
10. Programmazione Ricorsiva Ing. Simona Colucci
Le postcondizioni specificano l’output della funzione.
Strutture classi e oggetti
Process synchronization
Process synchronization
L’AMBIENTE CODE BLOCKS E L’IO
FORMULE E FUNZIONI SU EXCEL
I BUS È un insieme di fili conduttori che permette il passaggio di dati tra le varie periferiche del pc.
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
istalliamo l’ambiente di sviluppo - ide
Process synchronization
Programmazione e Laboratorio di Programmazione
IL CONCETTO DI ALGORITMO
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Copia di oggetti il costruttore di copia ha le stesse particolarità della signature di un costruttore ordinario; il primo parametro è una reference ad.
Algebra Booleana.
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
Ricorsione 16/01/2019 package.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
I SOTTOPROGRAMMI.
Definizione di linguaggio di programmazione
APPUNTI SUL LINGUAGGIO C
Process synchronization
La struttura dei primi programma in C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Passaggio di parametri per indirizzo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
La programmazione strutturata
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Le funzioni in C++

Introduzione  Spesso alcuni gruppi di operazioni vengono ripetute in diverse parti all’interno del medesimo programma  Si pensi ad esempio a un programma di algebra  È plausibile pensare che ci sia la necessità di stampare a video le soluzioni di un’equazione di 2° grado  Il codice relativo è sempre lo stesso  È quindi utile definire una sola volta questo gruppo di istruzioni e dare un nome ad esso  Ogni volta che si vuole mostrare a video le soluzione di un’equazione di 2° grado sarà sufficiente indicare il nome assegnato

Le funzioni  Una funzione è:  un insieme di istruzioni dotato di nome  descritta (definita) una sola volta  attivabile (richiamabile o invocabile) all’interno del programma o di un’altra funzione  Alcune funzioni sono già definite  si pensi alla scanf e alla printf  dietro a questi nomi vi sono una serie di istruzioni in grado di, rispettivamente, intercettare la pressione dei tasti e di visualizzare un carattere sullo schermo  chi richiama queste funzioni non si preoccupa di com e sono fatte, basta sapere solo cosa fanno (visione black box)

Funzioni: utilizzo(1)  Astrazione e leggibilità:  enucleano parti di codice, nascondendo dettagli algoritmici e di codifica  il nome di programma si presenta come “un’operazione elementare”  Strutturazione e scomposizione funzionale del programma:  consentono una stesura del programma che riflette un’analisi funzionale del problema  Collaudo:  verifica di correttezza della soluzione facilitata dal poter verificare la correttezza prima dei singoli sottoprogrammi e poi dell’intero progra mma visto come insieme di chiamate che si scambiano informazioni

Funzioni: utilizzo(2)  Compattezza ed efficienza del codice:  si evita di ripetere sequenze di istruzioni in più parti del programma  Modificabilità:  una sola modifica vale per tutte le attivazioni del sottoprogramma  Riuso:  sottoprogrammi non troppo specifici possono essere raccolti in librerie utilizzabili da programmi diversi

Calcolare la somma dei fattoriali dei primi 100 numeri naturali: 0!+1!+2! … + 99!+100! #include Using namespace std; int fattoriale(int); main(){ int numero; // numero di cui voglio calcolare il fattoriale int fatt; // memorizzo il fattoriale di numero int somma; somma = 0; for(numero=0; numero<=100; numero++) { fatt = fattoriale(numero); somma = somma + fatt; } Cout<<«la somma dei fattoriali è »<<somma; }

Dichiarazione del prototipo  Il prototipo definisce:  il nome della funzione  il tipo dei parametri in ingresso e in uscita  Chi utilizzerà la funzione dovrà rispettare la sintassi definita nel prototipo  Prototipo funzione tipo_restituito nome_funzione (elenco dei parametri);  Funzione che non ritorna valori (void è una parola chiave del C che indica assenza di tipo) void nome_funzione (lista tipi dei parametri);

Definizione della funzione  La definizione di una funzione va messa dopo il main. Ha la stessa struttura del main (in realtà anche il main è una funzione):  Una parte dichiarativa  Una parte esecutiva tipo nome (tipo par_for1, tipo par_for2...) { parte dichiarativa locale parte esecutiva }  tipo nome (tipo par_for1, tipo par_for2...) è la testata della funzione  par_for1, par_for2 sono i nomi dei parametri formali della funzione, il cui tipo deve corrispondere in m

Definizione della funzione(2) int fattoriale(int n){ int risultato=1; int i; for (i = 1; i <= n; i++) risultato = risultato * i; return risultato; }  Parametri Formali:  Rappresentano un riferimento simbolico (identificatori) a oggetti utilizzati all’interno della funzione  Sono utilizzati dalla funzione come se fossero variabili dichiarate localmente  Il valore iniziale di parametri formali viene definito all’atto della chiamata della funzione tramite i parametri attuali (passaggio di parametri)

Invocazione o chiamata  Nel corpo del main o di un’altra funzione indica il punto in cui va eseguita la parte del codice presente nella definizione di funzione  Invocazione di funzione  come operando in una espressione  = ;  par_att1,… sono i parametri attuali che devono corrispondere per ordine e per tipo ai parametri formali  I parametri attuali possono essere variabili, costanti o espressioni definite nell’ambiente chiamante, i cui valori all’atto della chiamata vengono copiati nei parametri formali

Istruzione return  È l’ultima istruzione di una funzione e indica:  il punto in cui il controllo torna al chiamante  il valore restituito  In una funzione  deve esserci almeno un’istruzione di return  possono esserci più istruzioni di return ma in alternativa  la funzione può restituire un solo valore

Chiamata di una funzione  All’atto della chiamata, il controllo dell’esecuzione passa dal chiamante al chiamato  Il codice del chiamato viene eseguito  Al termine dell’esecuzione il controllo ritorna al chiamante, all’istruzione successiva a quella della Istruzione 1 Istruzione 2 Chiama funzione Istruzione 3 codice chiamante Inizio programma Passaggio del controllo Ritorno del controllo Istruzione 1 Istruzione 2 Istruzione 3 Istruzione 4 return

Scambio di informazioni  Il chiamato deve poter ricevere dal chiamante i valori attuali sui quali eseguire le operazioni definite nella funzione  Il chiamato deve poter fornire al chiamante i risultati dell’elaborazione  Lo scambio di informazioni tra chiamante e chiamato può avvenire:  valore restituito da una funzione (dal chiamato al chiamante)  per fornire un valore al chiamante  passaggio dei parametri (dal chiamante al chiamato)  per fornire i valori in ingresso al chiamato  per fornire i risultati di operazioni al chiamante  variabili globali (in entrambe le direzioni)  fortemente sconsigliato

Passaggio dei parametri  Il passaggio dei parametri consiste nell’associare, all’atto delle chiamata di un sottoprogramma, ai parametri formali i parametri attuali  Se il prototipo di una funzione è float circonferenza (float raggio);  Invocare questa funzione significa eseguire l’istruzione c = circonferenza(5.0);  In questo modo la variabile raggio (il parametro formale) assumerà per quella particolare invocazione il valore 5 (il parametro attuale).  Lo scambio di informazioni con passaggio dei parametri tra chiamante e chiamato può avvenire in due modi:  Passaggio per valore  Passaggio per indirizzo

Passaggio per VALORE  All’atto della chiamata il valore del parametro attuale viene copiato nelle celle di memoria del corrispondente parametro formale.  Il parametro formale e il parametro attuale si riferiscono a due diverse celle di memoria  La funzione in esecuzione lavora nel suo ambiente e quindi sui parametri formali  I parametri attuali non vengono modificati

Esempio: passaggio per valore float circonferenza(float raggio) { float circ; circ = raggio * 3.14; raggio = 7; /*istruzione senza senso, voglio solo vedere cosa succede modificando il valore di un paramentro formale*/ return circ; } /* nel main */ float c,r=5; c=circonferenza(r); /*Attenzione! r vale sempre 5 */ Ambiente della funzione circonferenza raggio circ Ambiente della funzione main r c Quando invoca la funzione in raggio viene copiato il valore di r Quando la funzione termina il valore di circ in circonferenza viene copiato in c nel main

Passaggio per riferimento  All’atto della chiamata viene passato l’indirizzo del parametro attuale.  Il parametro formale e il parametro attuale si riferiscono alla stessa cella di memoria.  L’indirizzo viene passato mettendo & nella definizione dei parametri.  In questo caso qualunque cambiamento dei parametri formali all’interno della funzione determina un cambiamento dei parametri attuali  I parametri attuali possono venire modificati.

Esempio: passaggio per indirizzo  Ordinamento crescente di tre numeri #include using namespace std; //Ordina scambia i valori di x e y void ordina(int &x, int &y)) { int temp; if(x>y){ temp=x; x=y; y=temp; }

Esempio: passaggio per indirizzo(2) int main() { int a,b,c; cout<<"Trenumeri: "; cin>>a>>b>>c; ordina(a,b); ordina(a,c); ordina(b,c); cout<<"Numeri ordinati: "<<endl; system("PAUSE"); return EXIT_SUCCESS; } x y a b Ambiente della funzione main Ambiente della funzione ordina Indirizzo di a Indirizzo di b