next up previous contents index
Next: Funzioni in C++ Up: Funzioni Previous: Variabili costanti   Indice   Indice analitico

Introduzione alle funzioni

Fino ad ora abbiamo presentato degli esempi molto semplici; un programma che faccia qualcosa di davvero significativo, come si immagina facilmente, è ben più lungo di essi. Nasce allora un problema molto semplice: se un programma è costituito da un numero elevato di righe, come si può controllarlo in maniera semplice, mantenendo la propria integrità mentale? Il modo esiste e si chiama programmazione modulare; essa consiste nella tecnica di dividere il programma completo in più sottoprogrammi, ognuno specializzato in un solo compito, tutti facenti riferimento al corpo vero e proprio del programma. In C++ la programmazione modulare si ottiene mediante le funzioni, le quali fanno tutte riferimento ad una particolare funzione: la funzione void main(), che è sempre la prima funzione ad essere eseguita nel programma.

Le funzioni hanno anche un'altra ragione di esistere; spesso abbiamo a che fare con delle operazioni che vengono ripetute numerose volte all'interno di un programma: ad esempio, potrebbe essere necessario riscrivere molte volte l'algoritmo per stabilire il maggiore tra due variabili intere. Si tratterebbe di una bella fatica sprecata, in quanto sarebbe molto più comodo scrivere tale algoritmo una volta per tutte e utilizzarlo allall'occorrenza; inoltre, si eviterebbero anche errori, perché dovremmo verificare il nostro algoritmo una ed una sola volta, piuttosto che decine o centinaia. Possiamo, in casi simili, scrivere il codice che effettua l'operazione necessaria all'interno di una funzione.

Vediamo allora di descrivere in astratto cosa è una funzione: si tratta di un programma, all'interno del quale valgono le stesse regole sintattiche e semantiche del corpo principale, che lavora su un certo insieme di dati, e torna un risultato appartenente ad un altro insieme di dati. Entrambi questi insiemi potrebbero anche essere vuoti, ossia esistono funzioni che non elaborano nessun dato in entrata e non ne ritornano alcuno in uscita. Con questo modello, è facile identificare le funzioni di un linguaggio di programmazione con quelle matematiche, aventi la medesima definizione formale. Altre analogie sono le seguenti: sia le funzioni matematiche che quelle di un linguaggio di programmazione tornano al più un risultato; entrambe sono deterministiche, ossia ripetendo un numero arbitrario di volte una funzione su un insieme di dati fisso, si ottiene sempre lo stesso risultato. Una differenza importante è per esempio che le funzioni matematiche possono lavorare su insiemi infiniti, mentre abbiamo già detto che in un calcolatore non c'è posto per insiemi infiniti di dati, essendo la memoria di esso finita.

Oltre alle funzioni che scriviamo nei nostri programmi, possiamo utilizzare all'interno di essi anche numerose altre funzioni già pronte per l'uso: le funzioni di libreria. Si tratta di un insieme cospicuo di funzioni (e molto altro in realtà ...ne parleremo in seguito) messe a disposizione del programmatore, appartenenti a qualunque implementazione standard del linguaggio C++. Abbiamo già incontrato alcuni rappresentanti di esse, come le funzioni per calcolare il seno, l'arcotangente o per produrre numeri pseudocasuali. A fine capitolo faremo una breve panoramica sulle funzioni matematiche di maggiore interesse per il nostro corso.


next up previous contents index
Next: Funzioni in C++ Up: Funzioni Previous: Variabili costanti   Indice   Indice analitico
Claudio Cicconetti
2000-09-06