Funzioni

Ogni operazione può essere divisa in sottoattività, ciascuna delle quali può essere direttamente rappresentata sotto forma di un codice, o suddivisa in piccole sotto-attività. Questo metodo è chiamato raffinamento per passi successivi. Le funzioni vengono utilizzate per scrivere il codice di sotto-compiti da risolvere. Il codice che descrive ciò che è una funzione, viene chiamato definizione di funzione:

intestazione_funzione
  {
  le istruzioni
  }

Tutto ciò che è prima della prima parentesi graffa è l' intestazione della definizione di funzione, e ciò che è tra le parentesi graffe è il corpo della definizione della funzione. L'intestazione funzione comprende una descrizione del tipo di valore di ritorno, il nome (identificatore) e parametri formali. Il numero di parametri passati alla funzione è limitato e non può superare i 64.

La funzione può essere chiamata da altre parti del programma, tante volte quanto necessario. Infatti, il tipo di ritorno, identificatore della funzione e tipi di parametri costituiscono la funzione prototipo.

Il prototipo della funzione è la dichiarazione della funzione, ma non la sua definizione. A causa della dichiarazione esplicita del tipo di return e l' elenco dei tipi di argomento, un controllo di tipo restrittivo ed il typecasting implicito, sono possibili durante le chiamate di funzione. Molto spesso le dichiarazioni di funzione vengono utilizzate nelle classi per migliorare la leggibilità del codice.

La definizione della funzione deve corrispondere esattamente alla sua dichiarazione. Ogni funzione dichiarata deve essere definita.

Esempio:

double                       // tipo di valore di ritorno(_*return)
linfunc (double a, double b) // nome funzione ed elenco parametri
  {
                             // valore di ritorno
   return (a + b);           // dell'operatore composito
  }

 

L'operatore return può restituire il valore di un'espressione che trova in questo operatore. Se necessario, il valore dell' espressione viene convertito nel tipo di risultato della funzione. Cosa può essere restituito: tipi semplici, strutture semplici, puntatori agli oggetti. Con l'operatore return non puoi restituire nessun array, oggetti classe, variabili di tipo struttura composta.

Una funzione non restituisce un valore dev'essere descritta come tipo void.

Esempio:

void errmesg(string s)
  {
   Print("errore: "+s);
  }

 

I parametri passati alla funzione possono avere valori di default, che sono definiti dalle costanti di quel tipo.

Esempio:

int unaqualchefunzione(double a,
             double d=0.0001,
             int n=5,
             bool b=true,
             string s="stringa passata")
  {
   Print("Parametro Richiesto a = ",a);
   Print("Passa i seguenti parametri: d = ",d," n = ",n," b = ",b," s = ",s);
   return(0);
  }

 

Se uno dei parametri ha un valore di default, tutti i parametri successivi devono avere anche valori di default.

Esempio di dichiarazione inesatta:

int unaqualchefunzione(double a,
             double d=0.0001,    // valore di default 0.0001 dichiarato
             int n,              // il valore di default non specificato !
             bool b,             // il valore di default non specificato !
             string s="stringa passata")
  {                                          
  }           

Vedi anche

Overload, Funzioni Virtuali, Polimorfismo