DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2014.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F1 Primi programmi.
Introduzione al linguaggio C++
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!
INFORMATICA Strutture condizionali
Sottoprogrammi: funzioni e procedure
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Linguaggi algoritmici
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.
Selezione - approfondimento
LS Tron Classe 4TC – as 2006/07 LORGANIZZAZIONE DEI PROGRAMMI UD. 8 p. 282.
LE FUNZIONI IN C Sommario 1 Introduzione 2 Moduli di programma in C
Algoritmi e Programmazione
Introduzione al linguaggio C
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
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 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 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.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
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.
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.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Complessità di un algoritmo
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 31 Marzo 2014 Marco D. Santambrogio – Gianluca Durelli –
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.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 3 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 3 Aprile 2015.
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
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.
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 Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
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.
Process synchronization
Transcript della presentazione:

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info di servizio 1 Vi siete dimostrati volenterosi, quindi teniamo la divisione proposta da voi  Questa mattina è arrivato l’ultimo gruppo per lo scambio! 2

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info di servizio 1 3

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info di servizio 2 Il lab di lunedì 24 Marzo inizierà alle 3pm invece che alle 3.30pm 4 FALSO! Rimane alle 3.30pm

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info di servizio 3 Mercoledì 3 Aprile, avete lezione prima di IEIM (10.15am) Vorrei verificare la possibilità, solo per il 3 Aprile di iniziare alle 9.30am e finire alle 11am 5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info di servizio 4 Nuova pagina dei tool! Caricati dei video su  Come installare la VM  Come usare Code::Blocks  Come scrivere il primo programma im/2014/tools/video.htm 6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info di servizio 5 Progetti alternativi di Informatica  Ven 7am – 9am  Quando il Ven non fosse possibile (ponti, scioperi, etc.): Gio 8.30am – 10am Calendario online sul sito del corso 7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info di servizio 6 Il NECST lab organizza visite ad altri centri di ricerca  Avvicinarsi a/conoscere nuove realtà di ricerca  Networking Centro di Super-computing Svizzero   Data candidata: 22 Aprile 2014  Se interessati, scrivere a me :) 8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Obiettivi Funzioni Scope delle variabili 10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice? 11 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 12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Prima osservazione: i dati! Definizione dei dati su cui devo lavorare  Quanti dati mi servono?  Di che tipo devono essere?  Come gestisco l’operazione? 13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ragioniamo sul fIusso Inserire i dati (numeri e operazione) Verificare che l’inserimento dei dati sia corretto Sulla base dell’operazione selezionata, eseguire la funzione richiesta Mostrare il risultato 14 Questo NON e’ un algoritmo!!!! -Non e’ “non ambiguo” -I passi non sono atomici

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Primo compito per casa Scrivere l’algoritmo che risolve il problema in esame! 15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Una prima soluzione 16 Problema con i char

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Una 1ma sol corretta ;) 17 E qui cosa succede?

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE IF annidati 18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEOsservazioni Quando abbiamo ragionato sul flusso, abbiamo detto:  Sulla base dell’operazione selezionata, eseguire la funzione richiesta Quali sono le funzioni che potremmo definire?  somma, sottrazione, divisione e moltiplicazione In C, queste vengo chiamate anche sottoprogrammi 19

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) 20

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 21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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*/ 22

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:  dichiarazione del prototipo della funzione (nella sezione dichiarativa)  definizione della funzione  invocazione o chiamata della funzione (nel codice che necessita della funzioni) 23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 ( ); 24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Definizione del sottoprogramma La definizione del sottoprogramma 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 25

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) 26 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

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 27

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 28 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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 29

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 è 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 30

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 31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEPausa… 32 Pausa per 10’

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice con le funzioni - prototipi 33 I prototipi Le chiamate

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice con le funzioni – le funzioni 34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esempio: passaggio per valore } /* nel main */ float valore1, valore2; float risultato; risultato=somma(valore1,valore2); 35 Ambiente della funzione somma d1, d2 risultato Ambiente della funzione main valore1, valore2 risultato Quando invoco la funzione in d1 e d2 vengono copiati i valori di valore1 e valore 2 Quando la funzione termina il valore di risultato in smma viene copiato in risultato nel main

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Scope delle variabili 36

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 37

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; } 38

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” 39

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 … } 40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Torniamo alla calcolatrice 41 Verifichiamo gli ingressi?

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Non possiamo fare di meglio? 42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Selezione multipla Operazione e’ uguale in tutti i casi  Non posso evitare di ripetere operazione == 43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lo switch 44 switch ( expression ){ case value1 : statement-list1 case value2 : statement-list2 case value3 : statement-list3 case... } Lo switch ci permette una alternativa al come selezionare la prossima istruzione da eseguire Lo switch valuta una espressione, quindi cerca di confrontare un valore con diversi possibili cases

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lo switch Ciascun case contiene un valore (value) e una lista di istruzioni (statement) Il flusso di controllo si traferisce attraverso tutte le istruzioni, partendo dal primo case che “corrisponde” 45 switch ( expression ){ case value1 : statement-list1 case value2 : statement-list2 case value3 : statement-list3 case... }

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice con lo switch 46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Piccolo problema… 47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Perche’??? 48 Flusso

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lo switch ed il break 49

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEZoom 50 Flusso

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lo switch: default 51

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