- 26 Luglio 2008
- 13
- 0
- Miglior risposta
- 0
Tutorial 3
Scritto da Roberto Navigli
Introduzione alle funzioni
Come già detto, una funzione è implementata mediante una o più istruzioni che svolgono un determinato compito. In genere, il nome della funzione indica il compito che essa svolge. Ad esempio, una funzione che calcola la radice quadrata si chiamerà radice_quadrata, una funzione che calcola il logaritmo di un numero si chiamerà log e così via. In generale, una funzione può assumere un qualsiasi nome, a meno di casi specifici. Ricordiamo, ad esempio, che la funzione main ha un preciso significato e che rappresenta il punto di inizio di ogni programma C++.
Vediamo un esempio che definisce alcune funzioni:
/* definiamo alcune funzioni */
#include <iostream>
using namespace std;
void stampa()
{
cout << "stampa()" << endl;
}
int successore(int a)
{
return a+1;
}
void main()
{
stampa();
int x;
x = successore(10);
cout << "successore di 10: " << x << endl;
}
La prima funzione non prende nulla in input e non restituisce nulla. Il suo compito è quello di stampare la seguente stringa e andare a capo:
stampa()
La seconda funzione implementa il successore, una nota funzione matematica che dato x restituisce x+1. Esaminiamo l'intestazione della funzione:
int successore(int a)
La funzione prende in input un intero (associato alla variabile a) e restituisce in output un altro intero. Il corpo della funzione è specificato dal blocco seguente:
{
return a+1;
}
Tutto quello che fa è restituire, mediante la parola chiave return, il valore dell'espressione a+1, che è proprio il successore di a. Si faccia attenzione al fatto che a è una variabile locale, ovvero non è visibile all'esterno della funzione. Ma su questo torneremo in seguito.
Il corpo della funzione main fa quattro cose: chiama la funzione stampa,
stampa();
dichiara la variabile x di tipo intero,
int x;
le assegna il successore di 10 (chiamando l'omonima funzione)
x = successore(10);
e infine stampa il valore di x:
cout << "successore di 10: " << x << endl;
Ricapitolando, la forma generica per definire una funzione è la seguente:
tipo-da-restituire nome-della-funzione(lista dei parametri)
{
// corpo della funzione
}
La forma generica per chiamare una funzione è la seguente:
nome-della-funzione(parametro1, parametro2, …, parametron);
Nel caso in cui la funzione restituisca valore è possibile memorizzare tale valore in una variabile del medesimo tipo, come si è fatto nell'esempio precedente con la chiamata a successore(10) che restituisce un intero il cui valore è memorizzato in una variabile dello stesso tipo.
Scritto da Roberto Navigli
Introduzione alle funzioni
Come già detto, una funzione è implementata mediante una o più istruzioni che svolgono un determinato compito. In genere, il nome della funzione indica il compito che essa svolge. Ad esempio, una funzione che calcola la radice quadrata si chiamerà radice_quadrata, una funzione che calcola il logaritmo di un numero si chiamerà log e così via. In generale, una funzione può assumere un qualsiasi nome, a meno di casi specifici. Ricordiamo, ad esempio, che la funzione main ha un preciso significato e che rappresenta il punto di inizio di ogni programma C++.
Vediamo un esempio che definisce alcune funzioni:
/* definiamo alcune funzioni */
#include <iostream>
using namespace std;
void stampa()
{
cout << "stampa()" << endl;
}
int successore(int a)
{
return a+1;
}
void main()
{
stampa();
int x;
x = successore(10);
cout << "successore di 10: " << x << endl;
}
La prima funzione non prende nulla in input e non restituisce nulla. Il suo compito è quello di stampare la seguente stringa e andare a capo:
stampa()
La seconda funzione implementa il successore, una nota funzione matematica che dato x restituisce x+1. Esaminiamo l'intestazione della funzione:
int successore(int a)
La funzione prende in input un intero (associato alla variabile a) e restituisce in output un altro intero. Il corpo della funzione è specificato dal blocco seguente:
{
return a+1;
}
Tutto quello che fa è restituire, mediante la parola chiave return, il valore dell'espressione a+1, che è proprio il successore di a. Si faccia attenzione al fatto che a è una variabile locale, ovvero non è visibile all'esterno della funzione. Ma su questo torneremo in seguito.
Il corpo della funzione main fa quattro cose: chiama la funzione stampa,
stampa();
dichiara la variabile x di tipo intero,
int x;
le assegna il successore di 10 (chiamando l'omonima funzione)
x = successore(10);
e infine stampa il valore di x:
cout << "successore di 10: " << x << endl;
Ricapitolando, la forma generica per definire una funzione è la seguente:
tipo-da-restituire nome-della-funzione(lista dei parametri)
{
// corpo della funzione
}
La forma generica per chiamare una funzione è la seguente:
nome-della-funzione(parametro1, parametro2, …, parametron);
Nel caso in cui la funzione restituisca valore è possibile memorizzare tale valore in una variabile del medesimo tipo, come si è fatto nell'esempio precedente con la chiamata a successore(10) che restituisce un intero il cui valore è memorizzato in una variabile dello stesso tipo.