Le funzioni

17 marzo 2006

Le funzioni rappresentano una parte fondamentale della programmazione in C++ in quanto permettono di eseguire con una sola linea di codice un insieme di operazioni. Cosa vuol dire questo? Naturalmente non bisogna pensare che ci sia qualche magia sotto o che il computer sappia da solo quali operazioni vogliamo che esso compia.

Negli esempi esaminati finora, tutte le istruzioni eseguivano operazioni molto semplici, come assegnamenti, controlli booleani od operazioni aritmetiche. Spesso accade di dover ripetere le stesse azioni numerose volte all’interno di uno stesso programma. Immaginiamo cosa significhi questo in termini di tempo e di probabilità di errori nella stesura del codice.

Grazie alle funzioni è possibile racchiudere un pezzo di funzionalità del programma (composto da linee di codice più “semplici”) e a far si che in ogni momento sia possibile richiamare tale funzionalità da altri punti del programma stesso.

In altre parole, possiamo dire che il C++ permette di identificare una serie di istruzioni con un preciso nome: quello, appunto, di una funzione. L’enorme utilità delle funzioni risiede nel fatto che grazie ad esse è possibile scrivere il codice che esegue una particolare azione una volta per tutte e riutilizzarlo, d’altra parte, tutte le volte che si vuole.

Definire le funzioni, i prototipi

Secondo lo standard ANSI (American National Standard Institute), tutte le funzioni devono avere un corrispondente prototipo. È buona norma far risiedere il prototipo in un cosiddetto file d’intestazione (file header, con estensione .h) anche se questa non è una regola obbligatoria. Un prototipo di funzione ha la seguente forma:

tipo_restituito nome_funzione (tipo_argomento1 nome_argomento1, ...);

Questa sintassi mostra sinteticamente che una funzione può scambiare informazioni con il resto del programma grazie a meccanismi di:

  • input
    rappresentato dagli argomenti della funzione, che permettono di passare alla funzione le informazioni da elaborare ad ogni chiamata;
  • ouput
    rappresentato dal tipo di ritorno (tipo_restituito), che indica quale tipo di valore viene calcolato dalla funzione. Una funzione può restituire output di tipo void, int, float, etc. Il tipo_restituito indica appunto il tipo del valore restituito dalla funzione.

Il nome della funzione può essere un nome qualunque scelto per descriere lo scopo della funzione. Se la funzione riceve parametri, sarà necessario specificare il tipo_argomento seguito da un nome_argomento. Anche il tipo degli argomenti può essere void, int, float, etc. Se a una funzione si passano più argomenti, questi dovranno essere separati da una virgola.

La scrittura della funzione vera e propria è essa stessa una porzione di codice C++ che normalmente segue la definizione delle funzione main(). Una funzione può quindi assumere la seguente forma:

tipo_restituito nome_funzione(tipo e nome_argomenti)
{
  // dichiarazione dei dati e corpo della funzione
  return();
}

Si noti che la prima riga della funzione è identica al prototipo inserito nel file header, ma con un’importante differenza: manca il punto e virgola finale. Vediamo ora un esempio che mostra un prototipo e una funzione in un programma:

/* Semplice programma che illustra l'uso dei prototipi
 * di funzioni. La funzione, esegue la moltiplicazione 
 * tra due interi e restituisce il risultato
 */
#include <iostream.h>

// Definizione del prototipo
int moltiplica(int x, int y);

// Dichiarazione della funzione
int moltiplica(int x, int y)
{
  int ris;
  ris = x * y;  // Calcolo basato sui valori in input
  
  return ris;   // Valore restituito dalla funzione
}

main()
{
  int a = 5;
  int b = 6;
  int risultato;

  risultato = moltiplica(a,b);
  cout << Il risultato della moltiplicazione è: << risultato << endl;

  return (0);
}
Tutte le lezioni

1 ... 24 25 26 ... 50

Se vuoi aggiornamenti su Le funzioni inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Le funzioni

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy