Funzioni int n, ris; cout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl; cout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni Sottoprogrammi che possono essere utilizzati, anche più volte, all interno di un programma Nome della funzione void raddoppia() { int n; cout << "Inserisci un numero:" << endl; cin >> n; int ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni void raddoppia() { int n; cout << "Inserisci un numero:" << endl; cin >> n; int ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl; raddoppia(); raddoppia(); chiamata della funzione
Funzioni raddoppia(); raddoppia(); NO! La funzione deve essere dichiarata prima del suo utilizzo void raddoppia() { int n; cout << "Inserisci un numero:" << endl; cin >> n; int ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni void raddoppia(); raddoppia(); raddoppia(); OK Pre-dichiarazione della funzione, specificandone il suo prototipo void raddoppia() { int n; cout << "Inserisci un numero:" << endl; cin >> n; int ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni: visibilità delle variabili void somma() { int s = a + b; int a = 3; int b = 6; somma(); NO! Le variabili a e b non sono visibili all interno della funzione
Funzioni: visibilità delle variabili void somma() { int s = a + b; Memoria «visibile» dalla funzione somma() s? int a = 3; int b = 6; somma(); Memoria «visibile» dal main a 3 b 6
Funzioni: uso dei parametri void somma(int n, int m) { int s = n + m; int a = 3; int b = 6; somma(a, b); Parametri formali della funzione Ogni parametro è specificato da tipo e nome. Sono variabili locali alla funzione, nelle quali viene copiato il valore del parametro attuale Parametri attuali della funzione
Funzioni: uso dei parametri void somma(int n, int m) { int s = n + m; int a = 3; int b = 6; somma(a, b); Copia dei valori dei parametri al momento della chiamata alla funzione n m s a b 3 6 9 3 6
Funzioni: uso del risultato void somma(int n, int m) { int s = n + m; int a = 3; int b = 6; NO! La variabile s non è visibile all esterno della funzione n m s 3 6 9 somma(a, b); a 3 cout << "La somma e " << s << endl; b 6
Funzioni: uso del risultato int somma(int n, int m) { int s = n + m; return s; int a = 3; int b = 6; int ris = somma(a, b); Istruzione return Termina la funzione e fornisce al programma chiamante il valore dell espressione indicata (per esempio, il valore di una variabile) cout << "La somma e " << ris << endl;
Funzioni: uso del risultato int somma(int n, int m) { int s = n + m; return s; int a = 3; int b = 6; int ris = somma(a, b); Tipo restituito Specifica il tipo dell espressione che compare nell istruzione return cout << "La somma e " << ris << endl;
Funzioni: uso del risultato int somma(int n, int m) { int s = n + m; return s; int a = 3; int b = 6; int ris = somma(a, b); Copia del valore del risultato al termine della funzione cout << "La somma e " << ris << endl; n m s a b ris 3 6 9 3 6 9
Utilizzo della funzione con parametri diversi int somma(int n, int m) { int s = n + m; return s; int a=3, b=6; int ris; ris = somma(a, b); La stessa funzione viene chiamata con parametri attuali diversi (esegue le stesse operazioni su input diversi) int c=10, d=-3; ris = somma(c, d); cout << "La somma e " << ris << endl;
Funzioni: istruzione return Esempio di utilizzo di diverse istruzioni return char segno(int n) { if (n>0) return P ; if (n==0) return N ; if (n<0) return Z ; int main() { int a cout <<... cin >> a; char ris = segno(a);...
Funzioni void Una funzione può non restituire alcun valore In questo caso, l istruzione return può essere omessa Nell esempio, la funzione deve solo stampare a video, per cui il main non si aspetta alcun risultato dalla funzione void stampa(int n) { cout << "n = " << n << endl; int main() { int a;... stampa(a);...
Funzioni: esercitazione Esercizio 1: scrivere una funzione che chiede all utente di inserire un intero maggiore o uguale a zero da tastiera e ne restituisce il valore. La funzione continua a chiedere un valore da tastiera finché l utente inserisce numeri negativi. Esercizio 2: scrivere una funzione che prende come parametri due numeri interi e restituisce il valore true se il primo è maggiore del secondo, restituisce false altrimenti. Esercizio 3: scrivere una funzione che prende come parametri due numeri reali, a e b, effettua la divisione a/b e restituisce il risultato. Esercizio 4: scrivere una funzione che prende come parametro un numero reale e lo visualizza a video. Continua
Funzioni: esercitazione Usando le funzioni definite precedentemente, scrivere un main che: Legge due interi maggiori di zero da tastiera Divide il maggiore dei due per il minore Mostra a video il risultato della divisione
Funzioni: esercitazione Esercizio 1 int legginumero() { int n; do{ cout << "Inserisci numero >=0" << endl; cin >> n; while(n<0); return n;
Funzioni: esercitazione Esercizio 2 bool maggiore(int a, int b) { if (a>b) return true; return false;
Funzioni: esercitazione Esercizio 3 float dividi(float a, float b) { if (b==0) { cout << "Errore! Den. uguale a 0" << endl; return a/b;
Funzioni: esercitazione Esercizio 4 void stampa(float n) { cout << "Il valore e' " << n << endl;
Funzioni: esercitazione int primo = legginumero(); int secondo = legginumero(); float div; if ( maggiore(primo,secondo) ) div=dividi(primo,secondo); else div=dividi(secondo,primo); stampa(div);