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

25
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale – BAER Unità 1 Funzioni Unità 1 Domenico Daniele Bloisi

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

Page 1: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

Corso di Programmazione e Metodi NumericiIngegneria Aerospaziale – BAER

Unità 1

Funzioni

Unità 1

Domenico Daniele Bloisi

Page 2: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

Docenti

Metodi Numericiprof. Vittoria Bruni

[email protected]

Programmazioneprof. Domenico Daniele Bloisi

[email protected]

2011/2012FunzioniUnità 1

Pagina 2

[email protected]

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

Page 3: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 4: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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:[email protected]

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

Unità 1Pagina 4

Page 5: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 6: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 7: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 8: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 9: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 10: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 11: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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.

Page 12: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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).

Page 13: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 14: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 15: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 16: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

Funzioni definite in cmath

2011/2012FunzioniUnità 1

Pagina 16

Page 17: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

Funzioni definite in cmath

2011/2012FunzioniUnità 1

Pagina 17

Page 18: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

Funzioni definite in cmath

2011/2012FunzioniUnità 1

Pagina 18

Page 19: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 20: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 21: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 22: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 23: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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

Page 24: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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 . . .

Page 25: Funzioni - uniroma1.itRicevimento Martedì 15.00 – 17.00 DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una email per conferma e di controllare preventivamente

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