DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe 19 Aprile 2013 Marco D. Santambrogio – [email protected] Ver. aggiornata al 18 Aprile 2013 WAT DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 WAT… prima reazione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3 Feedback 1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente 4 Feedback 1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente 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 5 Feedback 1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente 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 6 Feedback 1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Mettere gli extra Lab alle 8 del mattino vorrebbe dire avere in aula metà della gente 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 7 Feedback 1 e 2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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) 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 8 Gruppi OreRicevimento DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Gruppo 1 • Gruppo3 Chiara Crippa Giada Bandera Alessandra Camassa Maria Veronica Lipreri Chiara Balestra Valeria Luraghi • Gruppo 5 Matteo Lepori Andrea Crippa Luca Foppoli Girogio Andriani Francesca Berti Daniele Alberti Mattia Bergaglio Gabriele Bianchi Pierfrancesco Capone Matteo Butti • Gruppo 2 Francesco La Marca • Gruppo 4 Silvia Contini Chiara Fattore Francesca Donnaloja Giuseppina Lauriola Vincenza Cascella Martina Gava Clara Andolina Samuele Colombo Patrizia Casali Tommaso Cazzato 9 Veniamo a noi… DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 10 La calcolatrice? DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Umh…. Meglio! 11 La calcolatrice! DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma in C che, dati due numeri, permetta all’utente di calcolarne la somma, sottrazione, moltiplicazione, e la divisione tra essi • Nota: l’utente, per ogni coppia di numeri inseriti, potrà eseguire una e una sola operazione 12 Quante calcolatrici? DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • • • • 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 Calcolatrice V0 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Tutto in un file, con funzioni 14 Calcolatrice V1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V1: Organizzazione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V1: Problema 1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • In IEIM_Calcolatrice.c, abbiamo un main che invoca alcune funzioni!!! Come diciamo al main come invocare le funzioni di cui ha bisogno? 17 Calcolatrice V1: Problema 2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Quando compiliamo, come diciamo a IEIM_Calcolatrice.c dove si trova IEIM_Calcolatrice.h? 18 Pausa! DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 15’… poi seduti! 19 Calcolatrice V2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V2: Organizzazione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V2: Problema DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V2: Soluzione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Dobbiamo prima creare il codice oggetto per le implementazioni • Quindi compilare il main fornendogli il file oggetto delle implementazioni 23 Calcolatrice V3 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V3: Organizzazione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V3: Compilazione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Come per la V2 Prima tutti i file oggetto gcc IEIM_FunzioniIO.c -c gcc IEIM_FunzioniAritmetiche.c -c Quindi l’eseguibile gcc IEIM_CalcolatriceV3.c IEIM_FunzioniAritmetiche.o IEIM_FunzioniIO.o –o exe 26 Pausa! DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 15’… poi seduti! 27 Calcolatrice V4 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Tutto in un file, con strutture 28 Calcolatrice V5 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V5: Problema 1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Se le funzioni hanno bisogno di dati, come facciamo a dargli questa informazione? • Sfruttiamo gli include nei file di progetto! Vediamolo nel codice… 30 Calcolatrice V5: Problema 2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Se i parametri sono strutturati, e vengono passati per indirizzo, come faccio a salvare i valori nei loro campi? 31 Calcolatrice V5: Organizzazione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Calcolatrice V6 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Ma se volessimo creare una libreria? cd CalcolatriceV6 gcc IEIM_FunzioniIO.c IEIM_FunzioniCalcolatrice.c -c ar -r libreria.a IEIM_FunzioniIO.o IEIM_FunzioniCalcolatrice.o gcc IEIM_Calcolatrice_V6.c libreria.a -o exe 33 Calcolatrice V7… per casa DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 Fine DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 35