Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Corso di Programmazione e Metodi NumericiIngegneria Aerospaziale – BAER
Unità 1
Funzioni
Unità 1
Domenico Daniele Bloisi
Docenti
Metodi Numericiprof. Vittoria Bruni
Programmazioneprof. Domenico Daniele Bloisi
2011/2012FunzioniUnità 1
Pagina 2
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:[email protected]
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