In questa breve lezione sulla definizione di funzione in C++, vedremo la differenza tra definzione e dichiarazione di una funzione.
Abbiamo già parlato delle funzioni in C++ e visto alcuni esempi pratici, potete seguire il link se non l’avete già fatto.
Cosa fa la definizione di funzione in C++
La definzione di una funzione specifica cosa fa la funzione e come lo fa.
Un esempio che abbiamo già visto nelle precedenti lezioni:
double cubo(float c) //definzione di funzione
{
return c*c*c;
}
In questo esempio, di definizione di funzione, si definisce una funzione cubo e all’interno ci sono le istruzioni per calcolare il cubo di un numero. Quindi rappresenta un sottoprogramma.
Se una funzione però viene chiamata prima di essere definita allora bisogna dichiarla, così come si fa con le variabili.
Ad esempio, nell’esempio sotto, si avrebbe un errore di funzione non dichiarata.
#include <iostream>
using namespace std;
// Dichiarazione del prototipo della funzione cubo
double cubo(float c);
int main() {
float lato;
double volume;
// Input della lunghezza del lato del cubo
cout << "Inserisci il lato del cubo, calcolerò il volume: " << endl;
cin >> lato;
// Calcolo del volume del cubo utilizzando la funzione cubo()
volume = cubo(lato);
// Output del volume
cout << "Il volume del cubo è: " << volume << endl;
return 0;
}
// Definizione della funzione cubo() che calcola il volume di un cubo
double cubo(float c) {
return c * c * c;
}
In questo caso occorre dunque dichiarala.
Dichiarazione di funzione in C++
La dichiarazione di funzione è rappresentata da un’unica istruzione che specifica il tipo di funzione, i parametri (argomenti) della funzione e il tipo del valore di ritorno (può essere anche void).
Quindi ecco come sarebbe l’esempio di prima con la dichiarazione di funzione.
Ecco dunque un listato che mostra un esempio di definizione di funzione in C++ e di dichiarazione.
#include <iostream>
using namespace std;
// Dichiarazione del prototipo della funzione cubo
double cubo(float c);
int main() {
float lato;
double volume;
// Input della lunghezza del lato del cubo
cout << "Inserisci il lato del cubo, calcolerò il volume: " << endl;
cin >> lato;
// Calcolo del volume del cubo utilizzando la funzione cubo()
volume = cubo(lato);
// Output del volume
cout << "Il volume del cubo è: " << volume << endl;
return 0;
}
// Definizione della funzione cubo() che calcola il volume di un cubo
double cubo(float c) {
return c * c * c;
}
E’ importante dire che i nomi dei parametri in una dichiarazione di funzione sono fittizzi, quindi avrei anche potuto scrivere:
double cubo(float); al posto di double cubo(float c);.
Quindi il nome del parametro formale è superfluo, quello che conta è il tipo o la lista dei tipi.
Ovviamente ad una dichiarazione deve seguire sempre una definizione di funzione.
Si può anche definire una funzione in un file e invocarla in un altro, in questo caso nel file in cui la funzione viene utilizzata deve essere inserita la dichiarazione.
Facciamo ancora un altro esempio di dichiarazione di funzioni, riprendendo l’esercizio della lezione precedente.
#include <iostream>
using namespace std;
// Dichiarazione dei prototipi delle funzioni
double quadrato(float);
double cubo(float);
double meta(float);
int main() {
int num;
double q, c, r;
// Input del numero dall'utente
cout << "Inserisci il numero: ";
cin >> num;
// Calcolo del quadrato, del cubo e della metà del numero
q = quadrato(num);
c = cubo(num);
r = meta(num);
// Output dei risultati
cout << "Il quadrato è: " << q << ", il cubo è: " << c << ", la sua metà è: " << r;
return 0;
}
// Definizione della funzione per calcolare il quadrato di un numero
double quadrato(float c) {
return c * c;
}
// Definizione della funzione per calcolare il cubo di un numero
double cubo(float c) {
return c * c * c;
}
// Definizione della funzione per calcolare la metà di un numero
double meta(float c) {
return c / 2;
}
Chiaramente questi sono solo degli esempi sulla definizione di funzione in C++.
Alcuni link utili
Passaggio di parametri per valore o per riferimento
Iterazioni con il ciclo for in C++
Esercizi con switch case in C++
Successione di Fibonacci in C++