DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 3 Aprile 2015.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Sottoprogrammi: funzioni e procedure
Process synchronization
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Linguaggi algoritmici
Iterazione A. Ferrari.
Selezione A. Ferrari.
Procedure e funzioni A. Ferrari.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
LE FUNZIONI IN C Sommario 1 Introduzione 2 Moduli di programma in C
Introduzione al linguaggio C
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
FUNZIONI DI BIBLIOTECA
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 Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Algebra di Boole ed elementi di logica
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 3 Ottobre 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.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
nome: sequenza di caratteri usata per denotare un oggetto
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Strutture di controllo in C -- Flow Chart --
Le funzioni.
Espressioni condizionali
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Un esempio: Calcolo della potenza n-esima di un numero reale
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Unità Didattica 3 Linguaggio C
Lo sviluppo top down Le funzioni
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Complessità di un algoritmo
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algebra di Boole ed elementi di logica Marco D. Santambrogio – Ver. aggiornata.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: 24 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Sottoprogrammi e funzioni
Algoritmi e basi del C Struttura di un programma
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
Algoritmi e basi del C Struttura di un programma
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
STRUTTURA DI UN PROGRAMMA C In prima battuta, la struttura di un programma C è definita dalla seguente produzione: ::= { }
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Copyright © Istituto Italiano Edizioni Atlas
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.
Programmazione dei Calcolatori Elettronici
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Librerie… Marco D. Santambrogio – Ver. aggiornata al 20 Luglio 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2016.
10. Programmazione Ricorsiva Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Transcript della presentazione:

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 3 Aprile 2015

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Regole esame Compitini di INFO:  24 Aprile 2015 C.G.1 (Ed. 9)  21 Maggio 2015 S.0.2 (Ed. 3)  17 Giugno 2015 I.0.1 (Ed. 4) 2

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Regole esame Compitini di INFO:  24 Aprile 2015 C.G.1 (Ed. 9)  21 Maggio 2015 S.0.2 (Ed. 3)  17 Giugno 2015 I.0.1 (Ed. 4) Si passa con 50% (11.5) o 60% (13.8)? 3

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Regole esame Compitini di INFO:  24 Aprile 2015 C.G.1 (Ed. 9)  21 Maggio 2015 S.0.2 (Ed. 3)  17 Giugno 2015 I.0.1 (Ed. 4) Si passa con 50% (11.5) o 60% (13.8)? Nel dubbio… con 60% && orale obbligatorio! 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Regole esame 5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 6 1 Aprile

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Regole esame Compitini di INFO:  24 Aprile 2015 C.G.1 (Ed. 9)  21 Maggio 2015 S.0.2 (Ed. 3)  17 Giugno 2015 I.0.1 (Ed. 4) Si passa con 50% (11.5) o 60% (13.8)? Nel dubbio… con 55% 7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Torniamo al 27 Marzo… 8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale Dato n, intero positivo, si definisce n fattoriale e si indica con n! il prodotto dei primi n numeri interi positivi minori o uguali di quel numero. In formule Nota:  0! = 1  1! = 1  2! = 2, 3! = 6,… 9

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale: codice 10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Dal fattoriale… 11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Dal fattoriale… 12 … al coefficiente binomiale

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Coefficiente binomiale Il numero di scelte di k oggetti fra quelli che costituiscono un insieme di n elementi Quindi il numero dei sottoinsiemi di k elementi di un dato insieme di n oggetti, è dato dal cosiddetto coefficiente binomiale: 13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tornando ad oggi… 14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Funzioni Scope delle variabili 15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Coefficiente binomiale Il numero di scelte di k oggetti fra quelli che costituiscono un insieme di n elementi Quindi il numero dei sottoinsiemi di k elementi di un dato insieme di n oggetti, è dato dal cosiddetto coefficiente binomiale: 16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Coefficiente binomiale: flusso 1.Inserire K e N 2.Verifico K e N 3.Se corretti A.Calcolare il fattoriale di N (FatN) B.Calcolare il fattoriale di K (FatK) C.Calcolare il fattoriale di N-K (FatNK) D.CoefBin = FatN/(FatK)*FatNK 4.Altrimenti torno a 1 17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma quindi… Cosa è Calcolare il fattoriale di N? 18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma quindi… Cosa è Calcolare il fattoriale di N? Cosa è Calcolare il fattoriale di K? 19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma quindi… Cosa è Calcolare il fattoriale di N? Cosa è Calcolare il fattoriale di K? Cosa è Calcolare il fattoriale di N-K? 20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma quindi… Cosa è Calcolare il fattoriale di N? Cosa è Calcolare il fattoriale di K? Cosa è Calcolare il fattoriale di N-K? Sono tutti SOTTOPROGRAMMI!! 21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONESottoprogrammi Un sottoprogramma è:  un insieme di istruzioni dotato di nome  descritto (definito) una sola volta  attivabile (richiamabile o invocabile) all’interno del programma o di un altro sottoprogramma Alcuni sottoprogrammi sono già definiti  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 come sono fatte, basta sapere solo cosa fanno (visione black box) 22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi: motivazioni 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 programma visto come insieme di chiamate che si scambiano informazioni 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 23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi: funzioni e procedure I sottoprogrammi si differenziano per la logica di definizione per l’uso e per la modalità di chiamata e possono essere  di tipo funzionale  di tipo procedurale Sottoprogrammi di tipo funzionale (funzioni) possono essere considerati una astrazione di valore  l’invocazione della funzione associa al nome della funzione il valore del risultato calcolato dal sottoprogramma Sottoprogrammi di tipo procedurale (procedure) possono essere considerati una astrazione di operazioni  l’invocazione della procedura è associata all’esecuzione delle istruzioni del sottoprogramma che realizzano l’operazione specificata dal sottoprogramma Ad esempio: leggi(A,B);/* procedura*/ risultato = somma(A,B); /* funzione*/ 24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e procedure in C In C esistono solo le funzioni  Le procedure sono particolari funzioni che non restituiscono nulla (VOID) Quindi parleremo solo di funzioni intendendo sia le funzioni che le procedure Definire una funzione secondo il linguaggio C implica: 1.Dichiarazione del prototipo della funzione (nella sezione dichiarativa) 2.Definizione della funzione 3.Invocazione o chiamata della funzione (nel codice che necessita della funzioni) 25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 1. Dichiarazione del prototipo Il prototipo definisce:  il nome della funzione  il tipo (funzione, procedura)  il tipo dei parametri in ingresso e in uscita Chi utilizzerà la funzione dovrà rispettare la sintassi definita nel prototipo Prototipo funzione ( ); Prototipo procedura (void è una parola chiave del C che indica assenza di tipo) void ( ); 26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 2. Definizione della funzione La definizione della funzione va messa dopo il main. Ha la stessa struttura del main (anche il main, come sappiamo è una funzione):  Una parte dichiarativa  Una parte esecutiva (tipo par_for1, tipo par_for2...) { parte dichiarativa locale parte esecutiva } (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 modo ordinato ai tipi elencati nella dichiarazione del prototipo 27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3. 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 = ; Invocazione di procedura  come un’istruzione nomeprocedura(par_att1, …); In entrambi i casi:  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 28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEChimante/Chiamato 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 chiamata Istruzione 1 Istruzione 2 Chiama funzione Istruzione 3 codice chiamante Istruzione 1 Istruzione 2 Istruzione 3 Istruzione 4 return funzione chiamata Inizio programma Passaggio del controllo Ritorno del controllo 29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Istruzione return Parola chiave C utilizzata solo nelle funzioni Sintassi 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 30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tornando al coefficiente binomiale 1.Inserire K e N 2.Verifico K e N 3.Se corretti A.Calcolare il fattoriale di N (FatN) B.Calcolare il fattoriale di K (FatK) C.Calcolare il fattoriale di N-K (FatNK) D.CoefBin = FatN/(FatK)*FatNK 4.Altrimenti torno a 1 31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Coefficiente binomiale: codice 32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Coefficiente binomiale: codice 33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Coefficiente binomiale: codice 34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Coefficiente binomiale: codice 35

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Comunicazione tra chiamante e chiamato 36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 è int fat (int valore);  Invocare questa funzione significa eseguire l’istruzione FatK = fat(K);  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 37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parametri formali 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) Le funzioni in C sono funzioni in senso matematico, il tipo del valore di ritorno definisce il Codominio mentre i valori possibili dei parametri in ingresso corrispondono al Dominio 38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 Il sottoprogramma in esecuzione lavora nel suo ambiente e quindi sui parametri formali I parametri attuali non vengono modificati 39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esempio: passaggio per valore } /* nel main */ int K; int FatK; FatK=fat(K); Ambiente della funzione fat valore fattoriale Ambiente della funzione main K FatK Quando la funzione fat termina, il valore di fattoriale viene copiato in FatK nel main Quando invoco la funzione fat, il valore in K nel main viene copiato in valore 40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEVisibilità 41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Scope/visibilità delle variabili 42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEVisibilità Visibilità di un identificatore:  indicazione della parte del programma in cui tale identificatore può essere usato Ambiente globale del programma  insieme di identificatori (tipi, costanti, variabili) definiti nella parte dichiarativa globale  regole di visibilità: visibili a tutte le funzioni del programma Ambiente locale di una funzione  insieme di identificatori definiti nella parte dichiarativa locale e degli identificatori definiti nella testata (parametri formali)  Regole di visibilità: visibili alla funzione e ai blocchi in essa contenuti Ambiente di blocco  insieme di identificatori definiti nella parte dichiarativa locale del blocco  regole di visibilità: visibili al blocco e ai blocchi in esso contenuti 43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Mascheramento (shadowing) Un nome ridefinito all’interno di un blocco nasconde il significato precedente di quel nome Tale significato è ripristinato all’uscita del blocco più interno In caso di omonimia di identificatori in ambienti diversi è visibile quello dell’ambiente più “vicino” 44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Mascheramento (shadowing) Un nome ridefinito all’interno di un blocco nasconde il significato precedente di quel nome Tale significato è ripristinato all’uscita del blocco più interno In caso di omonimia di identificatori in ambienti diversi è visibile quello dell’ambiente più “vicino” 45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEVisibilità Livello globale main f1 g1,g2,g3 a,b a,c a,d d blocco1 blocco2 blocco3 char g1, g2, g3; main() { int a, b; … {/*blcco1*/ double a,c; } … } void f1(){ … {/*blocco2*/ char a,d; } … {/*blocco3*/ float d … } 46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La visibilità di y si estende dal punto di dichiarazione fino alla fine del blocco di appartenenza y e z locali alla funzione g, con visibilità nel blocco racchiuso da parentesi graffe k e l hanno la stessa visibilità Errata! Si tenta di definire due volte la variabile locale x nello stesso bloccoEsempi int x; f() { int y; y=1; } int x; g(int y, char z) { int k; int l; … } f(int x) { int x; } 47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice! 48

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice? 49 Umh….

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice! 50 Umh…. Meglio!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice! Problema  Si scriva un programma in C che, dati due numeri, permette all’utente di calcolarne la somma, sottrazione, moltiplicazione, e la divisione tra essi L’utente, per ogni coppia di numeri inseriti, potrà eseguire una e una sola operazione 51

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio Credits  Gianluca Palermo