In questo tutorial parleremo delle funzioni in C++. Le funzioni sono uno strumento molto utile in special modo quando si deve affrontare un problema complesso.
Infatti, nel momento in cui ci troviamo davanti un problema che sembra irrisolvibile, è fondamentale suddividerlo in sottoprogrammi. Questi sottoprogrammi si potranno così risolvere separatamente.
In questo modo diventa anche più semplice intervenire sulle varie parti e trovare bug o malfunzionamenti.
Un sottoprogramma o funzione è un insieme di istruzioni identificate da un nome che può essere richiamato all’interno del programma principale o all’interno dei sottoprogrammi.
In questo caso si dice che il programma chiamante effettua una chiamata alla funzione.
Le funzioni possono essere utilizzate per compiere un calcolo o per effettuare un’azione.
Nel caso in cui si compie un’azione allora non si ritorna nessun valore, infatti si utilizza il tipo void come valore di ritorno.
Nel caso invece in cui la funzione compie un calcolo restituisce un valore e si specifica prima del nome della funzione stessa. Se non si specifica nulla, allora in automatico si considera il valore di ritorno un intero.
Sintassi funzioni in C++
La sintassi di una funzione in C++ in generale è:
<tipo_ritorno> nome_funzione ([<elenco_parametri>])
{
<istruzioni>
return valore_restituito;
}
Dove:
<tipo_ritorno> è il valore di ritorno specificato come abbiamo detto prima.
nome_funzione è il nome dato alla funzione, si raccomanda di seguire le stesse regole sintattiche per le variabili.
[<elenco_parametri>] può anche essere una lista vuota, oppure si elencano gli argomenti passati alla funzione detti anche parametri.
Esempio 1
Innanzitutto facciamo un esempio molto banale: realizziamo un programma che calcola la somma di due numeri utilizzando le funzioni.
Creiamo inizialmente una funzione somma che prende come parametri due interi a e b e calcola la somma dei due numeri. La funzione mi ritorna un valore intero.
Dopo nel main richiamiamo la funzione somma e mostriamo il risultato in output.
#include <iostream>
using namespace std;
int somma(int a, int b) {
int s;
s = a + b;
return s;
}
int main() {
int x;
x = somma(8, 10);
cout << "Il risultato è: " << x;
return 0;
}
Facciamo adesso altri semplici esempi di utilizzo delle funzioni in C++.
Esempio 2
Calcolo del cubo di un numero.
Inizialmente definiamo la funzione cubo che restituisce il cubo di numero, che è un valore di tipo double.
Dopo nel main richiamiamo la funzione cubo e stampiamo il risultato in output.
#include <iostream>
using namespace std;
double cubo(float c) {
return c * c * c;
}
int main() {
float lato;
double c;
cout << "Inserisci il lato del cubo, calcolero' il volume:\n";
cin >> lato;
c = cubo(lato);
cout << c;
return 0;
}
Esempio 3
Affrontiamo un esercizio fatto in precedenza in C.
Supponiamo di avere i voti di 10 materie e di voler fare la media, utilizzando sempre le funzioni in C++.
Inizialmente creiamo la funzione somma che fa la somma delle materie e restituisce un valore di tipo float.
Dopo creiamo la procedura stampa. Noterete come la procedura stampa non effettua nessun calcolo ma effettua un’azione e dunque non restituisce nulla, pertanto si usa il tipo void.
Poi nel main richiamiamo la funzione somma e anche la procedura stampa.
#include <iostream>
using namespace std;
#define MATERIE 10 // La definizione di una costante non deve essere seguita da un punto e virgola
float somma() {
float s = 0;
float voto;
for (int i = 0; i < MATERIE; i++) {
cout << "Inserisci il voto: ";
cin >> voto;
s += voto;
}
return s;
}
void stampa(float media) { // La funzione stampa deve accettare la media come argomento
cout << "La media e': " << media; // Stampa direttamente la media anziché restituirla
}
int main() { // La funzione main deve essere di tipo int
float media;
media = somma() / MATERIE;
stampa(media);
return 0; // Restituisce 0 per indicare che il programma è stato eseguito correttamente
}
Nel prossimo articolo vedremo altri esempi con le funzioni in C++.
Alcuni link utili
Iterazioni con il ciclo for in C++
Esercizi con switch case in C++
Successione di Fibonacci in C++