DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Librerie…
Marco D. Santambrogio – [email protected]
Ver. aggiornata al 20 Luglio 2015
Veniamo a noi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
2
La calcolatrice?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
3
La calcolatrice?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Umh….
4
La calcolatrice?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Umh….
Meglio!
5
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
6
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
7
Calcolatrice V0
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutto in un file, con funzioni
8
Calcolatrice V0
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutto in un file, con funzioni
9
Calcolatrice V0
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutto in un file, con funzioni
10
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
11
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
12
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?
13
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?
14
Calcolatrice V1: Problema 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Quando compiliamo, come diciamo a
IEIM_Calcolatrice.c dove si trova
IEIM_Calcolatrice.h?
15
Calcolatrice V1: Problema 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Quando compiliamo, come diciamo a
IEIM_Calcolatrice.c dove si trova
IEIM_Calcolatrice.h?
16
Calcolatrice V1: Problema 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Quando compiliamo, come diciamo a
IEIM_Calcolatrice.c dove si trova
IEIM_Calcolatrice.h?
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
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
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 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
24
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
25
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?
26
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
27
Calcolatrice V3: Compilazione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Come per la V2
 Prima tutti i file oggetto
 Quindi l’eseguibile
28
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
29
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
30
Calcolatrice V4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutto in un file, con strutture
31
Calcolatrice V4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutto in un file, con strutture
32
Calcolatrice V4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutto in un file, con strutture
33
Calcolatrice V4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutto in un file, con strutture
34
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?
35
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…
36
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?
37
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?
38
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?
39
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
40
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
41
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
42
Fine
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
43
Scarica

PPT - V0