Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente...

Post on 22-Mar-2021

4 views 0 download

Transcript of Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente...

Corso di Programmazione e Metodi NumericiIngegneria Aerospaziale – BAER

Unità 1

Funzioni

Unità 1

Domenico Daniele Bloisi

Docenti

Metodi Numericiprof. Vittoria Bruni

vittoria.bruni@sbai.uniroma1.it

Programmazioneprof. Domenico Daniele Bloisi

bloisi@dis.uniroma1.it

2011/2012FunzioniUnità 1

Pagina 2

bloisi@dis.uniroma1.it

Sito del corso http://www.dis.uniroma1.it/~pmnNota: %7E corrisponde alla tilde ~

Orario delle Lezioni

Lunedì 10.15 – 11.45Martedì 08.30 – 10.00Martedì 08.30 – 10.00Giovedì 10.15 – 11.45Venerdì 10.15 – 11.45

Aula 15, Via Scarpa 14Aula 15, Via Scarpa 14

2011/2012FunzioniUnità 1

Pagina 3

Informazioni Generali

Ing. Domenico Daniele Bloisi, PhD

Dipartimento di Ingegneria Informatica Dipartimento di Ingegneria Informatica Automatica e GestionaleVia Ariosto 25(adiacente Piazza Dante,

A fermate Manzoni, Vittorio Emanuele,Tram 3 fermata via Labicana)

mailto:bloisi@dis.uniroma1.it

http://www.dis.uniroma1.it/~bloisi2011/2012Funzioni

Unità 1Pagina 4

Ricevimento

Martedì 15.00 – 17.00DIS via Ariosto 25DIS via Ariosto 25

Aula docenti adiacente aula A4

Si consiglia di inviare una email per conferma edi controllare preventivamente la bacheca degli avvisiavvisi

2011/2012FunzioniUnità 1

Pagina 5

Funzioni

Le funzioni sono moduli di programma (predefinite o scritte dall’utente) che svolgono un particolare calcolo.svolgono un particolare calcolo.

2011/2012FunzioniUnità 1

Pagina 6

FunzioniNell’esempio seguente vengono invocate (o chiamate) funzioni matematiche e viene stampato il risultato delle ope razioni indicate.

#include <iostream>#include <iostream>#include <cmath>

using namespace std;

int main() {cout << "Questo programma C++ fa dei calcoli " <<

"usando funzioni matematiche predefinite..." << endl;cout << "La radice quadrata di 169 e' " << sqrt(169) << endl;cout << "La radice quadrata di 169 e' " << sqrt(169) << endl;cout << "Il seno di Pi_greco/4 e' " << sin(M_PI/4) << endl;cout << "Il logaritmo di 0 e' " << log(0) << endl;

}

2011/2012FunzioniUnità 1

Pagina 7

Invocazione di funzione

Sintassi:

nomeFunzione ( parametri )

• nomeFunzione (...) è la funzione invocata• parametri sono i dati passati alla funzione

Semantica:

Invoca una funzione fornendogli eventuali parametri addizionali. L’invocazione di una funzione comporta addizionali. L’invocazione di una funzione comporta l’esecuzione dell’operazione associata e, in genere,la restituzione di un valore.

2011/2012FunzioniUnità 1

Pagina 8

Esempio di invocazione di una funzioneEsempio:sqrt(169)

• sqrt(...) è la funzione che calcola la radice quadrata di un numero

• 169 è il parametro (o argomento) passato alla funzione

• la funzione restituisce un risultato (13) che vie ne usato dall’istruzione che ha chiamato la funzione usato dall’istruzione che ha chiamato la funzione (nell’esempio il valore viene stampato a video).

2011/2012FunzioniUnità 1

Pagina 9

Le principali funzioni e costanti matematiche sono definite nel file include di sistema cmath(oppure math.h per compatibilità con il C), che

Esempio di invocazione di una funzione

(oppure math.h per compatibilità con il C), che bisogna quindi includere mediante la direttiva #include<...>

In caso contrario, il sistema segnalerà la mancatadichiarazione di costanti e funzioni:error: 'sqrt' was not declared in this scopeerror: 'M_PI' was not declared in this scopeerror: 'sin' was not declared in this scopeerror: 'log' was not declared in this scope

2011/2012FunzioniUnità 1

Pagina 10

Segnatura e intestazione di una funzione

La segnatura di una funzione consiste in:• nome della funzione• nome della funzione• descrizione (tipo, numero e posizione) dei suoi parametri.

Esempi:

sqrt(double x)pow(double b, int e)

2011/2012FunzioniUnità 1

Pagina 11

pow(double b, int e)

Nota: il nome del parametro non è significativo nella segnatura.

Intestazione di una funzione

L'intestazione di una funzione consiste in: • segnatura• descrizione (il tipo) del risultato.• descrizione (il tipo) del risultato.

Esempi:

double sqrt(double x)double pow(double b, double e)

Nota: double è un tipo di dati predefinito che

2011/2012FunzioniUnità 1

Pagina 12

Nota: double è un tipo di dati predefinito che rappresenta valori reali (vedi Unità 2).

Funzioni sovraccariche

Due funzioni possono avere lo stesso nome purché abbiano segnature diverse.

Funzioni con lo stesso nome (ma con diverse segnature) si dicono overloaded (sovraccariche).

2011/2012FunzioniUnità 1

Pagina 13

Parametri di una funzioneI parametri di una funzione sono i valori passati da l modulo chiamante alla funzione per poter svolgere i calcoli.calcoli.

Esempio: la funzione sqrt(double x) deve essere invocata passando un parametro che costituisce il v alore di cui vogliamo calcolare la radice quadrata.

In generale, i parametri passati come argomenti pos sono essere espressioni complesse formate a loro volta d a invocazioni di altre funzioni.invocazioni di altre funzioni.

Esempio:sqrt(pow(5,2)+pow(12,2))calcola la radice quadrata di 5 2 + 122.

2011/2012FunzioniUnità 1

Pagina 14

Risultato di una funzione

Il risultato calcolato da una funzione viene restituito al blocco di codice che ha chiamatola funzione stessa.la funzione stessa.

Esempio: la funzione sqrt(double x) invocata con il parametro 169, restituisce il valore 13, che corrisponde alla radice quadrata di 169.

2011/2012FunzioniUnità 1

Pagina 15

Funzioni definite in cmath

2011/2012FunzioniUnità 1

Pagina 16

Funzioni definite in cmath

2011/2012FunzioniUnità 1

Pagina 17

Funzioni definite in cmath

2011/2012FunzioniUnità 1

Pagina 18

Esercizi

Esercizio 1.1. Scrivere, compilare ed eseguire i programmi presentati.

Esercizio 1.2. Scrivere un programma C++ che calcoli il valore 82 6 e lo stampi a video.

Esercizio 1.3. Scrivere un programma C++ che stampi a video il valore di 2

2011/2012FunzioniUnità 1

Pagina 19

Soluzione Esercizio 1.2

Esercizio 1.2. Scrivere un programma C++ che calcoli il valore 82 6 e lo stampi a video.#include <iostream>#include <cmath>

using namespace std;

int main() {cout << "82^6 = " << pow(82, 6) << endl;return 0;return 0;

}

Output:82^6 = 3.04007e+011

2011/2012FunzioniUnità 1

Pagina 20

Soluzione Esercizio 1.3

Esercizio 1.3. Scrivere un programma C++ che stampi a video il valore di 2

#include <iostream >#include <iostream >#include <cmath>

using namespace std;

int main() {cout << "radice di 2 = " << sqrt(2) << endl;return 0;return 0;

}

Output:radice di 2 = 1.41421

2011/2012FunzioniUnità 1

Pagina 21

Problemi pratici - tastiera italiana

Come si scrive la graffa aperta ( { ) ?Alt + 123oppureoppureAlt Gr + Shift + èoppureFn + Alt + 123 (per i portatili)

Come si scrive la graffa chiusa ( } ) ?Alt + 125oppureoppureAlt Gr + Shift + +oppureFn + Alt + 125 (per i portatili)

2011/2012FunzioniUnità 1

Pagina 22

Problemi pratici - esecuzione

Tale comportamento avviene perché il programma term ina immediatamente dopo aver eseguito le istruzioni in e sso contenute.

Perché se provo ad eseguire il .exe non vedo l’outp ut ?La finestra appare e scompare immediatamente dopo.

immediatamente dopo aver eseguito le istruzioni in e sso contenute.Per visualizzare l’output aggiungere come ultima istr uzione (prima dell’eventuale return nel main )

system("PAUSE");

NOTA: E’ necessario inserire la direttiva#include <cstdlib>poiché la funzione system è definita in cstdlib

In alternativa è possibile eseguire il programma di rettamente da prompt , eseguendo il file<nomeEseguibile>.execreato da g++ in fase di compilazione

2011/2012FunzioniUnità 1

Pagina 23

Esempio system("PAUSE")

#include <iostream>#include <cmath>#include <cstdlib>

using namespace std;

int main() {cout << "radice di 2 = " << sqrt(2) << endl;system("PAUSE");return 0;

}

2011/2012FunzioniUnità 1

Pagina 24

}

Output:radice di 2 = 1.41421Premere un tasto per continuare . . .

Approfondimento

Things to Avoid in C/C++ -- system("pause")

http://www.gidnetwork.com/b -61.htmlhttp://www.gidnetwork.com/b -61.html

2011/2012FunzioniUnità 1

Pagina 25