Sei sulla pagina 1di 3

Funzioni

Patrizio Oddi 3F
Per le funzioni utilizziamo una tecnica chiamata TOPDOWN, serve per testi di programmi più
complessi con una serie di istruzioni e di passaggi.
Consiste nel suddividere il problema in una serie di mini problemi.
Ogni mini problema può essere risolto con delle istruzioni specifiche, esempio, vogliamo calcolarci
la media? Ci calcoliamo la somma di 3 numeri e lo dividiamo per 3 cosi che ogni volta ci si presenti
la necessità di usare quell’istruzione possiamo riprenderla da quel programma e riutilizzarla senza
apportare modiche.
Esistono già alcune funzioni che noi usiamo senza rendercene conto in C++, esempio, il quadrato di
un numero o la radice di un numero, dichiarando inizialmente le librerie (una raccolta di funzioni,
<cmath>).

Come creare una funzione:


<tipo funzione> nome_funzione (elenco di eventuali parametri/indirizzi)
{
<istruzione>
return valore_restituito
}

(SE DEVE IL TIPO FUNZIONE PERMETTE QUESTO SE LA FUNZIONE E’ VOID NON RESTITUISCE NESSUN
VALORE)

nome_funzione è il nome che daremo alla funzione e che poi useremo per invocarla una volta nel
main.

Elenco parametri può anche essere vuoto oppure elenchiamo i parametri passati nella funzione .

Facciamo un esempio banale di un programma che ci chiede la somma di


due numeri ma con l’utilizzo di una funzione.

Inizialmente dobbiamo creare una funzione somma che utilizza come parametri due numeri interi a
e b e calcola la somma tra i due e la funzione ritorna un valore intero.

#include <iostream>
using namespace std;

int somma (int a, int b)


{
int s;
s=a+b;
return s;
}
Ora nel main invochiamo la funzione già creata somma e stampiamo il risultato.

int main ()
{
int x;
x = somma (2,4);
cout << "Il risultato della somma e’: " << x <<endl;
return 0;
}

(La chiamata di una funzione può essere effettuata da un punto qualunque del programma)

PARAMETRI:
Esistono due tipi di parametri:
1) parametri formali: servono a passare informazioni da elaborare nel corpo della funzione;
vengono utilizzati nel corpo della funzione come variabili già inizializzate.
2) parametri attuali: sono i parametri passati nella chiamata al sottoprogramma da parte del main,
durante l'esecuzione, i parametri formali prendono i valori dei parametri attuali.

PASSAGGIO PER INDIRIZZO:


si ha quando i parametri attuali e formali fanno riferimento allo stesso indirizzo di memoria
e quindi i cambiamenti che la funzione comporta sui dati non vanno persi nelle successive
elaborazioni del main o di un'altra funzione chiamante quando si passano i parametri per indirizzo,
si deve anteporre all'identificatore della variabile il carattere "&".
in una stessa funzione è possibile passare parametri sia per valore che per indirizzo/referenza.

Esempio passaggio per valore


#include <iostream> //LIBRERIE I/O
using namespace std;

void Modifica(int y) //funzione dove il valore di x passa nel parametro y, che viene incrementato -
- all'interno della funzione,
{ // ma l'operazione nella funzione non cambia il valore di X.
y+= 2; //Quindi sullo schermo verrà stampato per due volte il valore di X indicato nel
- main in questo caso equivalente ad 1
}
//INIZIO PROGRAMMA
int main() //funzione principale
{
int x; //dichiariamo le variabili

x=1; //X valore 1.


cout << x << endl; //stampo a schermo X, per la prima volta.
Modifica(x); //invochiamo la funzione Modifica.
cout << x << endl; //stampo a schermo X, per la seconda volta (rimasta invariata)

return 0; //FINE PROGRAMMA


}
Esempio passaggio per referenza
#include<iostream> //LIBRERIE I/O
using namespace std;

void Modifica(int& y) //funzione che incrementa il valore di y all'interno della funzione ,


{ // con la variabile x che appartiene allo stesso indirizzo
y+=2;
}
//INIZIO
int main() //funzione principale
{
int x; //dichiariamo la variabile x
x=1; //valore di X = 1.
cout << x << endl; //stampo a schermo X una prima volta senza aver invocato la funzione
ancora
Modifica(x); //invochiamo la funzione Modifica
cout << x << endl; //stampo a schermo X dopo aver invocato la funzione
return 0; //FINE PROGRAMMA
}

Potrebbero piacerti anche