DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe 19 Aprile 2013 Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEWAT Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente NON è POSSIBILE DOVERSI ADEGUARE A CERTI ORARI. Per favore faccia delle modifiche al calendario.. (riferito alle OreRicevimento) 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE WAT… prima reazione 3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Feedback 1 Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Feedback 1 Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente 5 LunedìMartedìMercoledìGiovedìVenrdì 6am - 7am 7am - 8am 8am - 9am 9am - 10am 10am - 11am 11am - 12pm 12pm - 1pm 1pm - 2pm 2pm -3pm 3pm - 4pm 4pm - 5pm 5pm - 6pm
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Feedback 1 Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente 6 LunedìMartedìMercoledìGiovedìVenrdì 6am - 7am 7am - 8am 8am - 9am 9am - 10am 10am - 11am 11am - 12pm 12pm - 1pm 1pm - 2pm 2pm -3pm 3pm - 4pm 4pm - 5pm 5pm - 6pm
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Feedback 1 Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente 7 LunedìMartedìMercoledìGiovedìVenrdì 6am - 7am 7am - 8am 8am - 9am 9am - 10am 10am - 11am 11am - 12pm 12pm - 1pm 1pm - 2pm 2pm -3pm 3pm - 4pm 4pm - 5pm 5pm - 6pm
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Feedback 1 e 2 Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente NON è POSSIBILE DOVERSI ADEGUARE A CERTI ORARI. Per favore faccia delle modifiche al calendario.. (riferito alle OreRicevimento) 8 LunedìMartedìMercoledìGiovedìVenrdì 6am - 7am 7am - 8am 8am - 9am 9am - 10am 10am - 11am 11am - 12pm 12pm - 1pm 1pm - 2pm 2pm -3pm 3pm - 4pm 4pm - 5pm 5pm - 6pm
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Gruppi OreRicevimento Gruppo 1 Chiara Crippa Giada Bandera Alessandra Camassa Maria Veronica Lipreri Chiara Balestra Valeria Luraghi Gruppo 2 Francesco La Marca Chiara Fattore Francesca Donnaloja Vincenza Cascella Clara Andolina Patrizia Casali 9 Gruppo3 Matteo Lepori Andrea Crippa Luca Foppoli Girogio Andriani Francesca Berti Gruppo 4 Silvia Contini Giuseppina Lauriola Martina Gava Samuele Colombo Tommaso Cazzato Gruppo 5 Daniele Alberti Mattia Bergaglio Gabriele Bianchi Pierfrancesco Capone Matteo Butti
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Veniamo a noi… 10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice? 11 Umh…. Meglio!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La calcolatrice! Si scriva un programma in C che, dati due numeri, permetta allutente di calcolarne la somma, sottrazione, moltiplicazione, e la divisione tra essi Nota: lutente, per ogni coppia di numeri inseriti, potrà eseguire una e una sola operazione 12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Quante calcolatrici? V0: tutto in un file, con funzioni V1: più file, con funzioni aritmetiche V2: più file, con funzioni aritmetiche V3: più file, con funzioni aritmetiche e funzioni di I/O V4: tutto in un file, con strutture V5: più file, con strutture, con funzioni aritmetiche e funzioni di I/O V6: creiamo una libreria 13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V0 Tutto in un file, con funzioni 14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V1 Più file, con funzioni aritmetiche Perché non separare i prototipi dalle implementazioni? Un conto è il cosa (prototipi) Un conto è il come (implementazioni) In C Il cosa:.h Il come:.c 15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V1: Organizzazione Il cosa: IEIM_Calcolatrice.h Contiene la descrizione di tutti i nostri prototipi Il come: IEIM_Calcolatrice.c Contiene la descrizione di tutte le nostre funzioni 16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V1: Problema 1 In IEIM_Calcolatrice.c, abbiamo un main che invoca alcune funzioni!!! Come diciamo al main come invocare le funzioni di cui ha bisogno? 17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V1: Problema 2 Quando compiliamo, come diciamo a IEIM_Calcolatrice.c dove si trova IEIM_Calcolatrice.h? 18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEPausa! 15… poi seduti! 19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V2 Più file, con funzioni aritmetiche Perché non separare i prototipi dalle implementazioni? Un conto è il cosa (prototipi) Un conto è il come (implementazioni) In C Il cosa:.h Il come:.c Ma quindi… perché le implementazioni delle funzioni sono nel file del main? 20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V2: Organizzazione Il cosa: IEIM_FunzioniCalcolatrice.h Contiene la descrizione di tutti i nostri prototipi Il come: IEIM_FunzioniCalcolatrice.c Contiene la descrizione di tutte le nostre funzioni IEIM_Calcolatrice_V2.c Contiene il main 21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V2: Problema Quando compiliamo, come diciamo a IEIM_Calcolatrice_v2.c dove si trovano le implementazioni? Dobbiamo prima creare il codice oggetto per le implementazioni compilare i file con le implementazioni Quindi compilare il main fornendogli il file oggetto delle implementazioni 22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V2: Soluzione Dobbiamo prima creare il codice oggetto per le implementazioni Quindi compilare il main fornendogli il file oggetto delle implementazioni 23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V3 Più file, con funzioni aritmetiche e funzioni di I/O Se le funzioni aritmentiche sono in IEIM_FunzioniCalcolatrice.c, perché non fare lo stesso per quelle di I/O? 24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V3: Organizzazione Il cosa: IEIM_FunzioniCalcolatrice.h Contiene la descrizione dei prototipi delle funzioni artimetiche IEIM_FunzioniIO.h Contiene la descrizione dei prototipi delle funzioni di I/O Il come: IEIM_FunzioniCalcolatrice.c Contiene la descrizione delle funzioni aritmetiche IEIM_FunzioniIO.c Contiene la descrizione delle funzioni di I/O IEIM_Calcolatrice_V3.c Contiene il main 25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V3: Compilazione Come per la V2 Prima tutti i file oggetto Quindi leseguibile 26 gcc IEIM_FunzioniIO.c -c gcc IEIM_FunzioniAritmetiche.c -c gcc IEIM_CalcolatriceV3.c IEIM_FunzioniAritmetiche.o IEIM_FunzioniIO.o –o exe
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEPausa! 15… poi seduti! 27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V4 Tutto in un file, con strutture 28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V5 Più file, con strutture, con funzioni aritmetiche e funzioni di I/O Problemi Se le funzioni hanno bisogno di dati, come facciamo a dargli questa informazione? Se i parametri sono strutturati, e vengono passati per indirizzo, come faccio a salvare i valori nei loro campi? 29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V5: Problema 1 Se le funzioni hanno bisogno di dati, come facciamo a dargli questa informazione? Sfruttiamo gli include nei file di progetto! Vediamolo nel codice… 30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V5: Problema 2 Se i parametri sono strutturati, e vengono passati per indirizzo, come faccio a salvare i valori nei loro campi? 31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V5: Organizzazione Il cosa: IEIM_FunzioniCalcolatrice.h Contiene la descrizione dei prototipi delle funzioni artimetiche IEIM_FunzioniIO.h Contiene la descrizione dei prototipi delle funzioni di I/O IEIM_Dati.h Contiene la struttura dati Il come: IEIM_FunzioniCalcolatrice.c Contiene la descrizione delle funzioni aritmetiche IEIM_FunzioniIO.c Contiene la descrizione delle funzioni di I/O IEIM_Calcolatrice_V5.c Contiene il main 32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V6 Ma se volessimo creare una libreria? 33 gcc IEIM_Calcolatrice_V6.c libreria.a -o exe cd CalcolatriceV6 gcc IEIM_FunzioniIO.c IEIM_FunzioniCalcolatrice.c -c ar -r libreria.a IEIM_FunzioniIO.o IEIM_FunzioniCalcolatrice.o
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calcolatrice V7… per casa Più file, con strutture, con funzioni aritmetiche e funzioni di I/O Problema Se i parametri sono strutturati, e vengono passati per copia, come faccio a salvare i valori nei loro campi? … è possibile passare per copia un dato strutturato? … è possibile ritornare un dato strutturato? Si veda il codice in CalcolatriceV7 34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEFine 35