Buongiorno ragazzi, oggi vediamo come realizzare una libreria usando il linguaggio di programmazione C, tutti i programmi che scriveremo, faranno uso di alcune funzioni, tipo il calcolo della radice quadrata o calcolare il coseno o il seno, insomma funzioni che si occupano di fare alcuni calcoli matematici, quindi queste funzioni verranno riutilizzate in tutti i programmi che andremo a scrivere (l’operazioni di riscrittura di queste operazioni oltre che noiosa aumenterebbe il tempo per lo sviluppo), e buona prassi dunque separare dal programma principale altri programmi contenenti tutte le funzioni che verranno usate, questo programma viene chiamato appunto libreria, la libreria non è altri che un insieme di funzioni che servono per svolgere determinate istruzioni, esse vengono utilizzate spesso dal programma.
esistono 2 tipi di librerie…
- Librerie statiche
- Librerie dinamiche (dll)
La differenza fra le 2 librerie e che la libreria dinamica, Dynamic Link Library (librerie condivise) sono dei software che vengono caricati dinamicamente in fase di esecuzione invece di essere collegate staticamente ad un eseguibile in fase di compilazione, la separazione del codice in librerie dinamiche permette di spezzare i programmi in parti separate e queste parti verranno caricate solo se effettivamente e necessario e inoltre una singola libreria può essere caricata in memoria una sola volta ed utilizzata da più programmi è questo consente di risparmiare risorse, questo metodo di caricamento viene chiamato Loading Demand (caricamento su richiesta), consente inoltre di installare parzialmente dei sistemi software perché alcune parti che sono le nostre librerie potrebbero essere già presenti nella memoria di massa e quindi non richiede la reinstallazione.
La libreria statica consente invece di collegare questo software che contiene le nostre funzioni staticamente ad un eseguibile, questo collegamento avviene in fase di compilazione.
Se in un nostro programma abbiamo incluso una libreria che contiene le funzioni matematiche e le abbiamo usate, quando andiamo a compilare il nostro programma, il programma oltre a contenere varie istruzioni conterrà anche un collegamento alle librerie che abbiamo utilizzato, questo collegamento avviene staticamente ed avviene in compilazione.
Come creare una libreria in C.
Bisogna creare 2 file
un file con estensione .h chiamato anche file header
un file con estensione .c
il file con estensione .h contiene tutti i prototipi delle funzioni di cui e composta la nostra libreria
mentre il file con estensione .c contiene le implementazioni di queste funzioni.
Creiamo un nuovo progetto su eclipse.
clicchiamo su file, new e C Project
si aprirà una finestra, scegliamo il nome del progetto, scegliamo Hello World ANSI C Project e toolchain MinGW GCC e clicchiamo su finish.
Quello che otteniamo è un progetto dove troviamo la cartella src ‘source’ e la cartella include dove sono presenti alcune librerie.
andiamo nella cartella src tasto destro new header file,
lo chiamiamo ad esempio matematica.h e clicchiamo su finish.
nella nostra cartella source abbiamo Corso_C_Mynewsportal.c che conterrà le istruzioni per fare qualcosa, e poi quello che stiamo creando è una libreria che è formata di 2 file, uno si chiama matematica.h nella quale metteremo tutti i prototipi, e poi creiamo un altro file, clicchiamo sempre su src tasto destro new ma in questo caso anziche header file clicchiamo su source file.
lo chiamiamo matematica.c e clicchiamo su finish.
ora abbiamo il programma Corso_C_Mynewsportal e le librerie divise in 2 parti, andiamo nel file header, qui scriveremo i nostri prototipi, supponiamo di voler implementare una libreria che incorpori tre funzioni somma di 2 numeri interi, moltiplicazione di 2 numeri interi, e ultima divisione di 2 numeri interi, ma vediamo come scrivere effettivamente questi 3 prototipi:
ora andiamo su matematica.c a scrivere la loro implementazione formalmente abbiamo chiamato i due parametri a e b, è quello che andremo a scrivere all’interno delle parentesi graffe su calcolasomma, return (a + b),in pratica abbiamo restituito il risultato direttamente a calcolasomma, nello stesso modo si può dichiarare una variabile somma e inizializzarla a zero ed a somma assegnare il valore di a + b e poi scrivere direttamente return somma; per evitare di dichiarare variabili che possono risultare superflui possiamo direttamente usare il camando return (a * b);
Per quando riguarda la divisione non ci è possibile utilizzare il solo comando return (a / b); dobbiamo utilizzare la struttura di selezione binaria e scrivere, se b è diverso da zero allora a diviso b altrimenti return zero, cioè restituisci zero.
Abbiamo il file matematica.h che rappresenta il file header dove sono presenti i prototipi delle funzioni della libreria ed il file matematica.c dove invece sono presenti le implementazioni delle nostre funzioni, dobbiamo inserire necessariamente il riferimento al file nel quale sono presenti i prototipi, si usa la sintassi cancelletto include e fra doppi apici si scrive matematica.h ovvero diciamo al compilatore che quando andrai a leggerti le implementazioni di queste funzioni dovrai usare questo file matematica.h nel quale troverai i prototipi delle funzioni che nel file matematica.c sono state implementate.
Salviamo il nostro lavoro, e rechiamoci sul nostro programma Corso_C_Mynewsportal cancellando ciò che non ci interessa, ora noi abbiamo nel file matematica.h il prototipo delle funzioni che useremo nella scrittura di questo programma, nel programma Corso_C_Mynewsportal dovremo dire al compilatore che durante la scrittura di questo programma useremo delle funzioni, queste funzioni non sono dichiarate in questo file ma sono dichiarate in un file diverso, nel file matematica.h dove troverai i prototipi delle funzioni allora scriviamo cancelletto include doppi apici matematica.h
Fatto questo siamo liberi all’interno del nostro programma di usare una delle tre funzioni da noi implementate
dichiariamo una variabile intera risultato ed inizializziamola a zero e successivamente possiamo assegnare a risultato il valore della funzione calcolasomma e mediante i parametri attuali gli passiamo i numeri sulla base dei quali verrà effettuata la somma, poi potremo dire se risultato e maggiore o uguale a 6 allora a risultato devi assegnare calcolamoltiplicazione(3 , 6);
In questo software matematico come potete vedere abbiamo concettualmente separato in un programma diverso che rappresenta la nostra libreria, le funzioni che ci serviranno e nel programma principale, dopo averli inclusi li stiamo usando, e la cosa su cui prestare attenzione nella fase in cui stiamo scrivendo il nostro programma e che a noi non interessa come calcolasomma siastata implementata, il nostro interesse e solo quello di richiamare la nostra funzione, quindi non ci interessa il suo algoritmo, le librerie che creeremo potremo inserirle in qualsiasi programma.
Per oggi è tutto amici, chiedo scusa per le immagini poco chiare cercherò di trovare un modo per renderle più visibili, a presto.