Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Docenti di Laboratorio:
• Biagio Cosenza bcosenza@unisa.it
• Mattia De Rosa matderosa@unisa.it
ESERCITAZIONE 1:
ASTRAZIONE E MODULARITÀ
Realizzare un programma in Linguaggio C che
consenta di effettuare, tramite un semplice menu a
caratteri, le seguenti operazioni su un vettore di
numeri interi:
1. Immissione elementi in un dato array
2. Stampare il contenuto di un dato array
3. Ricerca di un elemento in un dato array
4. Ricercare il minimo in un dato array
5. Ordinare un dato array
6. Eliminare un elemento in un dato array
2. Information Hiding
4. Modularità
Vantaggi:
1. Parti del programma che non devono essere modificate sono inaccessibili
2. Correzione degli errori facilitata: un errore presente in un modulo può essere
corretto modificando soltanto quel modulo
RIUSO DEL CODICE
Pratica, estremamente comune nella programmazione, di richiamare o invocare parti
di codice precedentemente già scritte ogni qualvolta risulta necessario, senza doverle
riscrivere daccapo.
Si può ottenere per esempio sviluppando funzioni e relative librerie
MODULARITÀ
Tecnica di suddividere un progetto software. Dividere aiuta a gestirne la complessità.
Modulo:
• unità di programma che mette a disposizione risorse e servizi computazionali (dati, funzioni, …)
• Elevata coesione: le varie funzionalità messe a disposizione da un singolo modulo sono strettamente
correlate
• Indipendenza: sviluppabili separatamente dal resto del programma, con compilazione e testing
separati
• Modalità di interazione ben definite
14
IL PROGRAMMA PRINCIPALE
// file main.c
15
USO DEI
COMMENTI
I commenti relativi alla specifica di una funzione
possono essere inseriti nell’header file prima del
prototipo della funzione
… serve da documentazione per chi
dovrà usare la funzione (modulo client)
I commenti relativi alla progettazione e
realizzazione di una funzione possono essere
inseriti nel file .c prima della definizione della
funzione (o anche all’interno del corpo della
funzione)
… serve da documentazione per chi dovrà
eventualmente modificare la funzione
16
• I due moduli possono essere compilati indipendentemente
–gcc -c utils.c
–gcc -c vettore.c
–gcc -c main.c
• Possibile anche compilarli insieme
–gcc -c utils.c vettore.c main.c
• In entrambi i casi si ottengono tre file con estensione .o
COMPILAZIONE ...
17
DAL SORGENTE ALL’ESEGUIBILE
lib.o
other files/libraries
18
PROGETTO: MAKEFILE E MAKE
Tutti gli ambienti di programmazione consentono di costruire un progetto
Il comando make: compilazione e collegamento dei vari moduli che compongono il
progetto
Il Makefile è costituito da specifiche del tipo:
1. target_file:
2. dipendenze_da_file
3. comandi
… IL MAKEFILE DEL NOSTRO ESEMPIO
20
MAKE: ALCUNE OSSERVAZIONI …
L’ordine delle specifiche non è importante …
… ma è buona norma inserire come prima specifica quella per la
costruzione del programma eseguibile
In questo caso per lanciare il processo basta digitare il comando
make
MAKEFILE E COMANDO MAKE
Nel nostro esempio, come effetto del comando make:
bisogna produrre vettore.exe, ma occorrono utils.o vettore.o main.o
se i due file non esistono, si cercano le specifiche per produrli, e così via
…
Ordine di esecuzione:
gcc –c utils.c
gcc -c vettore.c
gcc -c main.c
gcc utils.o vettore.o main.o -o vettore.exe
make clean
utile un’azione clean (di solito inserita dopo le altre) per eliminare i file
intermedi prodotti
COSTRUIRE L’ESEGUIBILE CON IL MAKE
Il Makefile deve risiedere nella cartella dei
sorgenti
Accedere alla cartella del progetto tramite
console/terminale (cd path_del_progetto)
Digitare « make »
Il comando produrrà i file .o e l’eseguibile
ESERCITAZIONE 6.
7.
Eliminare un elemento in un dato array
Inserimento di un elemento in un dato array