PROGRAMMIAMO
C++ - Funzioni di library
Funzioni di library standard del C++: chiamata, argomenti e file include

Le funzioni sono talmente importanti per la programmazione in C++ che molte funzioni fanno parte della cosiddetta library standard del linguaggio C++ (il termine inglese library viene spesso erroneamente tradotto nell'italiano libreria, mentre la traduzione corretta è biblioteca). In pratica la library è una collezione (una biblioteca) di funzioni già scritte e pronte da usare e incorporate nei compilatori standard del linguaggio C++.

Sostanzialmente le funzioni della library si possono usare quasi come se fossero delle semplici istruzioni del linguaggio, a parte alcune piccole differenze. Facciamo un esempio. Consideriamo la funzione standard di library pow per il calcolo dell'elevamento a potenza. A differenza di altri linguaggi di programmazione, il C non possiede un'apposita istruzione per calcolare l'elevamento a potenza: al suo posto esso utilizza la funzione pow (abbreviazione dell'inglese power).

#include <cstdlib>
#include <iostream>

#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
    double base, exp, ris;
    cout<<"Fornisci il valore della base e dell'esponente: ";
    cin>>base;
    cin>>exp;
    ris = pow(base,exp);
    cout<<"Il risultato dell'elevamento a potenza e' "<<ris<<"\n";
    system("PAUSE");
    return EXIT_SUCCESS;
} 

Osserviamo anzitutto l'uso della funzione:

ris = pow(base, exp);

Questa particolare istruzione si dice chiamata alla funzione. L'interpretazione è abbastanza semplice: pow è il nome della funzione, base e exp sono due variabili di tipo double che contengono rispettivamente la base e l'esponente e ris è la variabile di tipo double che conterrà il risultato del calcolo.

I valori base ed exp si dicono argomenti della chiamata alla funzione, mentre ris è detto valore di ritorno della funzione. Vale la pena di notare che i nomi degli argomenti e del valore di ritorno non hanno nessuna importanza: quello che conta è semplicemente la loro posizione nella chiamata (per esempio, nel nostro caso fra le parentesi il valore della base deve sempre precedere quello dell'esponente). Si osservi a tale scopo il programma seguente, che calcola e visualizza le potenze di due (con esponente da 0 a 10):

#include <cstdlib>
#include <iostream>

#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
int i,pot;
cout<<"Potenze di 2:\n";
for (i=0;i<=10;i++)
  {
  pot = pow(2,i);
  cout<<"2 elevato alla "<<i<<" fa "<<pot<<"\n";
  }
system("PAUSE");
return EXIT_SUCCESS;

Si noti che i valori usati nella chiamata alla funzione pow sono completamente diversi rispetto all'esempio precedente.

Un'altra cosa da osservare è il file include aggiunto all'inizio del programma:

#include <math.h>

Questa riga indica il fatto che il programma vuole usare una funzione di tipo matematico. Torneremo in seguito sul significato di questa particolare "istruzione". Per adesso basti sapere che, a seconda di quale funzione di library si vuole usare, bisognerà aggiungere in testa al programma una o più "istruzioni" include, a seconda dei casi.

Consideriamo adesso un'altra funzione di library del C: la funzione strlen, per il calcolo della lunghezza di una stringa di caratteri. Si osservi il programma seguente:

#include <cstdlib>
#include <iostream>

#include <string.h>

using namespace std;

int main(int argc, char *argv[])
{
int numcar;
numcar = strlen("Evviva l'informatica!");
cout<<"La lunghezza della stringa e': "<<numcar<<"\n";
system("PAUSE");
return EXIT_SUCCESS;
}

Esso visualizza al termine la seguente frase:

La lunghezza della stringa e': 21

Infatti "Evviva l'informatica!" è composta di 21 caratteri (incluso lo spazio). In questo esempio la chiamata alla funzione ha un solo argomento (la stringa, racchiusa fra doppi apici, "Evviva l'informatica!").

Per poter usare la strlen (che appartiene alla categoria delle funzioni di manipolazione delle stringhe) occorre scrivere all'inizio del programma:

#include <string.h>

 

Elenco delle funzioni di library e loro utilizzo

Per un elenco completo delle funzioni standard di library del C++ rimandiamo a C++: Refernce: C library. Le funzioni sono divise in categorie, per ciascuna delle quali è indicato il file include da inserire all'inizio del programma:

cassert (assert.h) C Diagnostics Library (header)
cctype (ctype.h) Character handling functions (header)
cerrno (errno.h) C Errors (header)
cfloat (float.h) Characteristics of floating-point types (header)
ciso646 (iso646.h) ISO 646 Alternative operator spellings (header)
climits (limits.h) Sizes of integral types (header)
clocale (locale.h) C localization library (header)
cmath (math.h) C numerics library (header)
csetjmp (setjmp.h) Non local jumps (header)
csignal (signal.h) C library to handle signals (header)
cstdarg (stdarg.h) Variable arguments handling (header)
cstddef (stddef.h) C Standard definitions (header)
cstdio (stdio.h) C library to perform Input/Output operations (header)
cstdlib (stdlib.h) C Standard General Utilities Library (header)
cstring (string.h) C Strings (header)
ctime C Time Library (header)

 

Per esempio le funzioni della library numerica (quelle che richiedono il file include math.h) sono:


header

<cmath> (math.h)

C numerics library
cmath declares a set of functions to compute common mathematical operations and transformations:

Trigonometric functions:

Hyperbolic functions:

Exponential and logarithmic functions:

Power functions
Rounding, absolute value and remainder functions:

 

 

Cliccando sulle singole funzioni, viene aperta una pagina di spiegazioni sull'uso della funzione. Consideriamo per esempio la funzione sqrt, per il calcolo della radice quadrata (square root):

Il prototipo (in realtà in questo caso sono più di uno) è sostanzialmente un esempio (un "modello") molto sintetico di uso della funzione: in esso viene indicato il tipo dei valori di ingresso (quelli fra parentesi, detti argomenti o parametri) e il tipo del risultato (valore di ritorno). Queste informazioni sono spiegate più nel dettaglio nelle successive righe Parameters e Return Value. Infine Example, come suggerisce il nome, fornisce un semplice esempio di uso della funzione (è scritto in linguaggio C, per cui ci sono alcune differenze rispetto alla sintassi del C++).

 

link precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it