Linguaggio C (2)
Stefano Petrarca
Conservatorio S. Cecilia - Roma
Funzioni di libreria
- Generalità
Nel paragrafo precedente abbiamo visto che le istruzioni come printf(), scanf(), getch(), etc. sono funzioni di libreria, cioè funzioni predefinite che sono subito disponibili per l'uso. La libreria di funzioni del C è suddivisa secondo il tipo di compito che effettuano; pertanto esisterà la libreria delle funzioni matematiche, quella di input e output di diverso tipo, quelle di sistema, quelle grafiche, etc. Ognuna di queste è associata ad un header file specifico che è un file di testo con estensione .h contenente i prototipi delle funzioni di cui tratta, la definizione di alcune costanti, la dichiarazione di strutture dati utili nel contesto di applicazione delle funzioni in esso definite, e altro ancora. In questo capitolo daremo un'occhiata ad alcune librerie e ad alcune delle funzioni più utili in esse contenute.
- Funzioni matematiche
Il linguaggio C è corredato da una ricca libreria di funzioni matematiche. I prototipi, le costanti e le strutture dati a cui fanno riferimento sono definiti nel file math.h. Di seguito sono riportate alcune di queste funzioni insieme ad una breve descrizione del loro funzionamento e del loro uso all'interno di un programma. Alcuni esempi di programmi che utilizzano funzioni matematiche forniranno un ulteriore chiarificazione riguardo al loro funzionamento.
double _j0( double x ); double _j1( double x ); double _jn( int n, double x ); // funzioni di Bessel del primo tipo di ordine 0, 1, n qualsiasi
double log( double x ); double log10( double x ); // rispettivamente logaritmo naturale e in base 10
Le altre funzioni matematiche non descritte nell'elenco precedente possono essere trovate nello help del VisC.
- Funzioni di input e output di console
In un programma molto spesso può essere utile gestire l'input e l'output di singoli caratteri dai dispositivi di interazione fra l'utente e la macchina; tali dispositivi sono, di norma, la tastiera e il video. Il file contenente i prototipi e gli altri oggetti è conio.h. Di seguito alcune delle funzioni di questa categoria.
int getch( void ); int getche( void ); // restituisce il carattere corrispondente al tasto premuto; getche inoltre invia il carattere sul video
- Funzioni standard input e output
A questa categoria appartengono le funzioni dedicate alla gestione di generici dispositivi di input e output; lo header file relativo è stdio.h. Questi possono essere la tastiera, il video, un file su disco, la porta seriale, la stampante, etc. Ciascuno di questi dispositivi viene considerato genericamente come un file che va aperto e a cui deve essere associato uno stream per la gestione del trasferimento dei dati. Quando si usa una delle funzioni appartenetni a questa categoria va tenuto presente che alcuni file sono già aperti per default; essi sono:
Tutti gli altri file vanno esplicitamente aperti. Ad esempio, la ben nota printf(), che fa parte di stdio, invia il suo output su stdout; scanf() prende l'input da stdin. Di seguito vengono mostrate alcune delle funzioni, importantissime, appartenenti a questa categoria. La struttura FILE è definita in stdio.h e serve come tramite per il flusso di dati gestito dallo stream. size_t normalmente è equivalente a unsigned int. L'asterisco davanti al nome di una variabile significa che non viene usata proprio quella variabile ma un suo riferimento (sarà più chiaro quando parleremo di puntatori). [, argument ]... indica una lista indefinita di argomenti (quanti ne servono di volta in volta).