Laboratorio di Programmazione e Calcolo
|
|
- Carla Di Matteo
- 4 anni fa
- Visualizzazioni
Transcript
1 UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico
2 0) Struttura del Corso 1) Trattamento dell'informazione Elementi di Architettura di un Computer 2) Sistemi operativi 3) Introduzione alla Programmazione ad oggetti (OO) 4) Simulazione del Sistema Solare
3 5) Introduzione al linguaggio C/C++ 6) Elementi di linguaggio C/C++ A 1 - istruzioni e operatori booleani 2 -iterazioni(for, while, do while ) B - istruzioni di selezione (if, switch, else ) C - funzioni predefinite. La classe math. 7) Puntatori
4 8) Vettori (Array) 9) Classe SistemaSolare (prima parte) 10) Gestione dinamica della memoria 11) Classe SistemaSolare 12) Programma di Simulazione (main) 13) Ereditarieta 14) Classe Sonda
5 15) per referenza e per valore 16) Output su file 17) Polimorfismo - Concetto - Funzione - Realizzazione in C++ - Esempi 18) Richiami sulle funzioni 19-22) L'algebra di una classe (cenni)
6
7 17) Polimorfismo - Concetto - Funzione - Realizzazione in C++ - Esempi 7
8 Caratteristiche Fondamentali della Programmazione ad Oggetti (OO) (1) (dalla seconda lez.) 1. Incapsulamento I dati dell oggetto sono nascosti ad altri oggetti ed è possibile accedervi solo attraverso modalita ben definite Robustezza Flessibilita 1. Robustezza 2. Possibilita di ri-utilizzo del codice 3. Portabilita Laboratorio di Calcolo Laboratorio 4. lezione di Flessibilita' Programmazione e Organizzazione 8 e del Codice (Semplicita') Calcolo - A.A lezione 8
9 Caratteristiche Fondamentali della Programmazione ad Oggetti (OO) (2) (dalla seconda lez.) 2. Ereditarieta Gli oggetti complessi possono essere costruiti a partire da oggetti più semplici. Gli oggetti complessi derivano tutto o parte del loro comportamento dagli oggetti a partire dai quali sono stati generati Ri-utilizzo del codice Organizzazione del codice 1. Robustezza 2. Possibilita di ri-utilizzo del codice Ereditarieta piu efficiente Flessibilita 3. Portabilita Laboratorio di Calcolo Laboratorio 4. Flessibilita' di Programmazione e Organizzazione lezione 8 e del Codice (Semplicita') Calcolo - A.A lezione 8 9
10 Caratteristiche Fondamentali della Programmazione ad Oggetti (OO) (3) (dalla seconda lez.) 3. Polimorfismo Oggetti simili possono essere trattati, in alcuni casi, come se fossero dello stesso tipo, senza la necessità di implementare trattamenti specifici per distinguere tra le varie tipologie Ereditarieta piu efficiente Flessibilita La Portabilita e una caratteristica del C++ standard (ANSi-C++) 1. Robustezza 2. Possibilita di ri-utilizzo del codice Ereditarieta piu efficiente Flessibilita 3. Portabilita Laboratorio di Calcolo Laboratorio 4. Flessibilita' di Programmazione e Organizzazione lezione 8 e del Codice (Semplicita') Calcolo - A.A lezione 8 10
11 Le Classi nella Programmazione ad Oggetti (dalla seconda lez.) 1. Incapsulamento 2. Ereditarieta 3. Polimorfismo Incapsulamento Oggetti Oggetti Classi Prossima lezione terza lezione Classi in OO Come scrivere una classe in C++ 11
12 L'Ereditarieta' nella Programmazione ad Oggetti 1. Incapsulamento 2. Ereditarieta 3. Polimorfismo Riutilizzo del Codice Ereditarieta' Relazioni tra concetti Ereditarieta' Prossima lezione lezione scorsa Ereditarieta' in OO Come implementare l'ereditarieta' in C++ 12
13 Il Polimorfismo nella Programmazione ad Oggetti 1. Incapsulamento 2. Ereditarieta 3. Polimorfismo Flessibilita' Polimorfismo Ereditarieta' Polimorfismo Prossima lezione oggi Polimorfismo in OO Come implementare il Polimorfismo in C++ 13
14 Indice 0. Ereditarieta' e Polimorfismo 1. Metodi Virtuali 2. Metodi pure virtual e classi astratte 14
15 Il problema con cui abbiamo concluso la scorsa lezione 15
16 Ereditarieta e Puntatori in C++ (1) 1. Voglio rappresentare un Oggetto CorpoCeleste terra(..) ; 2. Voglio rappresentare piu oggetti CorpoCeleste terra(..) ; CorpoCeleste sole(..) ; CorpoCeleste terra(..) ; 3. Voglio rappresentare tanti oggetti CorpoCeleste pianeti[10] ; pianeti[0] =. ; pianeti[1] = ; 16
17 Ereditarieta e Puntatori in C++ (2) 2. Voglio rappresentare tanti oggetti legati tra loro da ereditarieta devo usare un vettore di puntatori CorpoCeleste * pianeti[10] ; pianeti[0] = new CorpoCeleste( ) ; pianeti[1] = new Sonda( ) ; pianeti[2] = new Corpoceleste( ) ;.. 17
18 Se ho un vettore di puntatori ad oggetti CorpoCeleste p[0] p[1] p[2] p[3] CorpoCeleste * sole CorpoCeleste Sonda terra Voyager Sputnik quale metodocalcolaposizione viene applicato agli elementi del vettore? 18
19 Ricordando la Struttura 19
20 Il problema non si porrebbe se usassimo gli oggetti. CorpoCeleste Terra("terra",.) ; Sonda Sputnik("sputnik",. ) ;. Terra.calcolaPosizione(.) ; // applica il metodo di CorpoCeleste Sputnik.calcolaPosizione(.) ; // applica il metodo di Sonda 20
21 ma noi usiamo i puntatori per poter gestire insieme oggetti CorpoCeleste e Sonda!. CorpoCeleste* Terra = new CorpoCeleste("terra",.) ; CorpoCeleste* Sputnik = new Sonda ("sputnik",. ) ;. Terra->calcolaPosizione(.) ; //applica il metodo di CorpoCeleste Sputnik->calcolaPosizione(.) ; //quale metodo? 21
22 Metodi Virtuali (Ereditarieta e Polimorfismo) (1) 1. Per indicare al compilatore che deve cercare il metodo nella classe piu bassa nella catena gerarchica si usa la parola virtual 2. virtual va utilizzato nella classe piu alta nella catena gerarchica delle classi che devono utilizzare il polimorfismo (ma e bene ripeterlo anche nelle classi figlie ) 22
23 Metodi Virtuali (Ereditarieta e Polimorfismo) (2) 3. Se un metodo e dichiarato virtual Il compilatore ricerca un metodo nella classe piu bassa nella catena di ereditarieta (esempio: calcolaposizione(fx,fy,dt) ) Se non lo trova esegue il metodo nella classe piu alta (esempio: X() Vx() ) 4. Sintassi (nella definizione della classe - header file.h) virtual void calcolaposizione (float fx, float fy, float dt); 23
24 Ricordando la Struttura Deve essere dichiarato virtual E' bene ripetere la dichiarazione virtual 24
25 CorpoCeleste.h (tenendo presenti le relazioni di ereditarieta') #ifndef CORPOCELESTE_H #define CORPOCELESTE_H #include <string> #include <iostream> #include <iomanip> using namespace std; class CorpoCeleste { protected:. public:. virtual void calcolaposizione(float fx, float fy, float t);.... (tutto il resto come prima almeno per ora)... }; #endif Laboratorio di Calcolo Laboratorio lezione di Programmazione 8 e 25
26 Sonda.h (modifica non necessaria ma opportuna per chiarezza) #ifndef SONDA_H #define SONDA_H #include "CorpoCeleste.h" class Sonda: public CorpoCeleste { protected: float tcount; float tstart; CorpoCeleste *owner; float svx; float svy; char started; public: Sonda() { } ; Sonda(string name, float mass,float starttime, CorpoCeleste *startfrom, float vxi, float vyi); ~Sonda() { } ; virtual void calcolaposizione(float fx, float fy, float t); }; #endif Laboratorio di Calcolo Laboratorio lezione di Programmazione 8 e... nessun'altra modifica almeno per ora... 26
27 Un altro esempio Autoveicolo Autovettura Autocarro Auto_Fiat Punto Panda 27
28 Definizione ed implementazione della classe Autoveicolo Autoveicolo.h #ifndef AUTOVEICOLO_H #define AUTOVEICOLO_H #include <iostream> using namespace std; class Autoveicolo { protected: public: Autoveicolo() { } ~Autoveicolo() { } virtual void ChiSei() ; Autoveicolo.cc #include "Autoveicolo.h" #include <iostream> using namespace std; void Autoveicolo::ChiSei() { } cout << " Sono un Autoveicolo!!! " << endl ; } ; #endif 28
29 Definizione ed implementazione della classe Autovettura Autovettura.h #ifndef AUTOVETTURA_H #define AUTOVETTURA_H #include "Autoveicolo.h" #include <iostream> using namespace std; class Autovettura : public Autoveicolo { protected: public: Autovettura.cc #include "Autovettura.h" #include <iostream> using namespace std; void Autovettura::ChiSei() { } cout << " Sono una Autovettura!!! " << endl ; Autovettura() { } ~Autovettura() { } virtual void ChiSei() ; } ; #endif 29
30 Il problema non si porrebbe se usassimo (solo) gli oggetti #include "Autoveicolo.h" #include "Autovettura.h" #include <iostream> using namespace std; int main() { // proviamo con gli oggetti cout << endl; Autoveicolo primo ; Autovettura secondo ; primo.chisei() ; secondo.chisei() ; nbseve(~/polim)>./prv_plom1 Sono un Autoveicolo!!! Sono una Autovettura!!! nbseve(~/polim)> Lo stesso risultato si otterrebe senza dichiarare virtual il metodo ChiSei() in Autoveicolo.h e Autovettura.h return 1; } 30
31 ma noi usiamo i puntatori per poter gestire insieme #include "Autoveicolo.h" #include "Autovettura.h" #include <iostream> using namespace std; int main() { // proviamo con i puntatori Autoveicolo* veicolo[2] ; Autoveicolo primo ; Autovettura secondo ; veicolo[0] = &primo ; veicolo[1] = &secondo ; veicolo[0]->chisei() ; veicolo[1]->chisei() ; return 1; senza dichiarare virtual il metodo ChiSei() nbseve(~/polim)>./prv_plom2 Sono un Autoveicolo!!! Sono un Autoveicolo!!! nbacer(~/polim)> dichiarando virtual il metodo ChiSei() nbseve(~/polim)>./prv_plom2 Sono un Autoveicolo!!! Sono una Autovettura!!! nbseve(~/polim)> } Laboratorio di Calcolo Laboratorio lezione di Programmazione 8 e 31
32 Ma anche i Costruttori e i Distruttori sono metodi!!! 32
33 I Costruttori (1) #include "Autoveicolo.h" #include "Autovettura.h" #include <iostream> using namespace std; int main() { // proviamo con i puntatori Autoveicolo* veicolo[2] ; Autoveicolo primo ; Autovettura secondo ; nbseve(~/polim)>./prv_plom3 Sto creando un Autoveicolo... Sto creando un Autoveicolo... Sto creando una Autovettura... Sto creando un Autoveicolo... Sto creando un Autoveicolo... Sto creando una Autovettura... nbacer(~/polim)> cout << endl; veicolo[0] = new Autoveicolo() ; veicolo[1] = new Autovettura() ; return 1; } 33
34 I Costruttori (2) O.K.! Vedi ad esempio la dichiarazione della classe Sonda nbseve(~/polim)>./prv_plom3 Sto creando un Autoveicolo... Sto creando un Autoveicolo... Sto creando una Autovettura... Sto creando un Autoveicolo... Sto creando un Autoveicolo... Sto creando una Autovettura... nbacer(~/polim)> Quando viene invocato il Costruttore di una Classe che eredita da altre, il compilatore invoca automaticamente i Costruttori di tutte le Classi nella catena di ereditarieta, inziando dal costruttore piu in alto nella catena gerarchica 34
35 I Distruttori (1).. se usassimo (solo) gli oggetti #include "Autoveicolo.h" #include "Autovettura.h" #include <iostream> using namespace std; int main() { // proviamo con gli oggetti Autoveicolo primo ; Autovettura secondo ; nbacer(~/polim)>./prv_plom3 Sto creando un Autoveicolo... Sto creando un Autoveicolo... Sto creando una Autovettura......sto distruggendo una Autovettura!!!...sto distruggendo un Autoveicolo!!!...sto distruggendo un Autoveicolo!!! nbacer(~/polim)> return 1; } Quando viene invocato il Distruttore di una Classe che eredita da altre, il compilatore invoca automaticamente i Distruttori di tutte le Classi nella catena di ereditarieta, iniziando dal distruttore piu in basso nella catena gerarchica 35
36 I Distruttori (2) ma noi usiamo i puntatori per poter gestire insieme Se ad un oggetto si accede tramite il suo puntatore, istanziato come puntatore di una delle classi madre, e necessario che il distruttore sia definito virtual, in modo che il compilatore inizi ad invocare il distruttore piu in basso nella catena di ereditarieta, risalendo poi tutta la catena gerarchica. 36
37 I Distruttori Virtuali (3) Autoveicolo.h #ifndef AUTOVEICOLO_H #define AUTOVEICOLO_H #include <iostream> using namespace std; class Autoveicolo { protected: public: } ; Autoveicolo() { } virtual ~Autoveicolo() {. } virtual void ChiSei() ; Autovettura.h #ifndef AUTOVETTURA_H #define AUTOVETTURA_H #include "Autoveicolo.h" #include <iostream> using namespace std; class Autovettura : public Autoveicolo { protected: public: } ; Autovettura() { } virtual ~Autovettura() { } virtual void ChiSei() ; #endif #endif 37
38 I Distruttori Virtuali (4) nbseve(~/polim)>./prv_plom4 #include "Autoveicolo.h" #include "Autovettura.h" #include <iostream> using namespace std; int main() { // proviamo con i puntatori Autoveicolo* veicolo[2] ; cout << endl; veicolo[0] = new Autoveicolo() ; veicolo[1] = new Autovettura() ; cout << endl; delete veicolo[0] ; delete veicolo[1] ; return 1; Sto creando un Autoveicolo... Sto creando un Autoveicolo... Sto creando una Autovettura......sto distruggendo un Autoveicolo!!!...sto distruggendo una Autovettura!!!...sto distruggendo un Autoveicolo!!! nbseve(~/polim)> } Laboratorio di Calcolo Laboratorio lezione di Programmazione 8 e 38
39 Distruttori Virtuali - Esempio Autoveicolo Autovettura Autocarro Auto_Fiat Punto Panda 39
40 Creazione di oggetti Creo un Autoveicolo Creo una Autovettura Creo una Auto_Fiat Creo una Punto 40
41 Distruzione di oggetti (accedendo ad un oggetto tramite puntatore ad Autovettura) Distruggo una Autovettura Distruggo un Autoveicolo 41
42 Distruzione di oggetti (accedendo ad un oggetto tramite puntatore + virtual) Distruggo una Punto Distruggo una Auto_Fiat Distruggo una Autovettura Distruggo un Autoveicolo Anche in CorpoCeleste.h ( e Sonda.h ) e' opportuno dichiarare virtual i Distruttori 42
43 Si puo' andare oltre..? Posso continuare (verso l'alto) nella catena di ereditarieta' ad esempio da "Autoveicolo" a "mezzi di trasporto su ruote" oppure "mezzi di trasporto" sino a che la classe piu' in alto non ha piu' tutti i metodi implementabili! Classi astratte 43
44 Metodi pure virtual e classi astratte (1) 1. Se un metodo e dichiarato virtual, la classe che eredita (la classe piu bassa nella catena gerarchica) puo ridefinire il metodo, che e comunque implementato nella classe da cui si eredita 2. Se un metodo e dichiarato pure virtual ( virtual. = 0 ; ) tutte le classi che ereditano devono fornire il metodo, che non e implementato nella classe da cui si eredita 44
45 Metodi pure virtual e classi astratte (2) 3. Sintassi virtual double Area() = 0 ; 4. Una classe con almeno un metodo pure virtual si chiama classe astratta 5. Attenzione! Gli oggetti di una classe astratta non possono essere istanziati 6. Esempio: Shape, Circle, Square 45
46 Shape. Shape(int n) virtual ~Shape() virtual double Area() = 0 Circle. Circle(int n) virtual ~Circle() virtual double Area() Square. Square(int n) virtual ~Square() virtual double Area() 46
47 18) Richiami sulle funzioni
48 Un esempio di funzione Noi usiamo (soprattutto) metodi, pero puo essere utile saper scrivere una funzione Un esempio semplice.
49 #include <iostream> using namespace std void swap(int &a, int &b) { int c = b ; b = a ; a = c ; } nbacer(~)>g++ -c provafun.cpp nbacer(~)>g++ provafun.cpp nbacer(~)>./a.out n1 = 2 n2 = 3 n1 = 3 n2 = 2 int main() { } int n1 = 2 ; int n2 = 3 ; cout << endl << " n1 = " << n1 << " n2 = " << n2 << endl; swap(n1,n2); cout << endl << " n1 = " << n1 << " n2 = " << n2 << endl; return 1;
50 19-22) L'algebra di una classe (cenni)
51 Overloading dei metodi (1) Due metodi della stessa classe con lo stesso nome possono essere distinti in base 1. Al numero degli argomenti CorpoCeleste() ; CorpoCeleste(string nome, float mass) ; CorpoCeleste(string nome, float mass, float x, float y); 2. Al tipo degli argomenti calcolaposizione(float fx,float dt); calcolaposizione(twovector f, float dt);
52 Overloading dei metodi (2) 3. [ ovviamente: ] Al tipo e al numero degli argomenti calcolaposizione(float fx, float fy, float dt); calcolaposizione(twovector f, float dt); Non e possibile distinguere tra metodi in base al tipo del metodo (void, int, double, )
53 Overloading degli Operatori Inserire un algebra all interno di una classe Un esempio: la classe TwoVector dei vettori in due dimensioni Operatori di assegnazione Operatori unari Operatori binari [ Operatori ternari ] Overloading dell Operatore << ( cout )
54 Precisazioni sull Overloading degli operatori (1) 1. Operatori membro (member operators) Gli operatori definiti all interno della classe si chiamano operatori membro Gli operatori definiti in questo modo sono un modo naturale (e compatto) di identificare un metodo (della classe) e come tali possono accedere ai membri privati Gli operatori membro si applicano ad oggetti di una classe (come i metodi) e possono avere come argomento nessun oggetto (operatori unari) (es. ++, - (segno)) un oggetto (operatori binari) (es. +, - (sottrazione) ) [due oggetti (operatori ternari) ].
55 Precisazioni sull Overloading degli operatori (2) Esempi di operatori unari a++ a.operator++() Esempi di operatori binari a+b a.operator+(b) a=b a.operator=(b) a=b+c a.operator=(b.operator+(c)) Scritture Equivalenti!!!!
56 Precisazioni sull Overloading degli operatori (3) 2. Operatori non membro (non member operators) Gli operatori definiti all esterno della classe si chiamano operatori non membro Si usa per gli operatori che agiscono sugli oggetti della classe, ma sono applicati ad oggetti di un altra classe. cout << a cout.operator<<(a) << e un operatore che si applica all oggetto cout pero qui fa riferimento alla classe a cui appartiene a, e lo implementero alla fine dell implementazione della classe a cui appartiene a (un esempio nel seguito) Scritture Equivalenti!!!!
57 Un (primo esempio): la classe Shape (1) Shape.h const bool diff_a(shape &s2) ; const bool operator!= (Shape &s2) ; } Shape.cc const bool Shape::diff_A(Shape* &s2) { return ( this->area()!= s2->area() ) ; const bool Shape::operator!= (Shape &s2) { return ( this->area()!= s2.area() ) ; }
58 Un (primo esempio): la classe Shape (2) #include "Shape.h" #include "Rettangolo.h" #include <iostream> using namespace std ; cout << endl; return 1; nbseve(~/eserc_7)>./provop Sto costruendo una Shape... Sto costruendo un Rettangolo... Sto costruendo una Shape... Sto costruendo un Rettangolo int main() {... sto distruggendo un Rettangolo... sto distruggendo una Shape Rettangolo alfa(2,3);... sto distruggendo un Rettangolo Rettangolo beta(4,5);... sto distruggendo una Shape Rettangolo gamma = alfa ;... sto distruggendo un Rettangolo... sto distruggendo una Shape cout << " " << (alfa!=beta) << nbseve(~/eserc_7)> endl; cout << " " << (alfa!=gamma) << endl; } piu' naturale di alfa.diff_a(beta)
59 TwoVector.h // Questo file e' stato ottenuto modificando, // per scopo didattico, il file originario // ThreVector.h (e ThreeVector.icc) // della libreria CLHEP del Cern // =========================================== // This file is a part of the CLHEP - a Class // Library for High Energy Physics. //.SS Authors Leif Lonnblad and Anders Nilsson. // ============================================ // //.SS Authors // John Marraffino and Mark Fischler //
60 // Attributi private: double dx, dy; // The components. public: // Metodi // OPERATORI // UNARI TwoVector operator - () const; // Unary minus. // BINARI TwoVector & operator = (const // Assignment TwoVector &);
61 TwoVector operator + (const TwoVector &); // Addition of 2-vectors. TwoVector operator (const TwoVector &); // Subtraction of 2-vectors. TwoVector & operator += (const TwoVector &); // Addition ( += ). TwoVector & operator -= (const TwoVector &); // Subtraction (-= ). TwoVector & operator *= (float); // Scaling with real numbers. // BOOLEANI ( Comparisons ) bool operator == (const TwoVector &) const; bool operator!= (const TwoVector &) const; };
62 // dopo il segno }; che indica la fine della // dichiarazione della classe TwoVector operator * (const TwoVector &, float ); TwoVector operator * (float, const TwoVector & ); // Overloading dell'operatore << (cout) // ostream & operator << (ostream &, const TwoVector &); // Output to a stream. #include TwoVector.icc #endif //TWOVECTOR_H
63 TwoVector.icc // Questo file e' stato ottenuto modificando, // per scopo didattico, il file // originario // ThreeVector.icc (e ThreeVector.h) della // libreria CLHEP del Cern // ===================== // This file is a part of the CLHEP // a Class Library for High Energy Physics. // This is the definitions of the inline // member functions of the // TwoVector class. // ===================== TwoVector TwoVector::operator - () const { return TwoVector(-dx, -dy); } TwoVector & TwoVector::operator = (const TwoVector & p) { dx = p.x(); dy = p.y(); return *this; }
64 TwoVector TwoVector::operator + (const TwoVector & a) { return TwoVector(dx + a.x(), dy + a.y()); } TwoVector TwoVector::operator - (const TwoVector & a) { return TwoVector(dx - a.x(), dy - a.y()); } TwoVector& TwoVector::operator += (const TwoVector & p) { dx += p.x(); dy += p.y(); return *this; } TwoVector& TwoVector::operator -= (const TwoVector & p) { dx -= p.x(); dy -= p.y(); return *this; }
65 TwoVector& TwoVector::operator *= (float a) { dx *= a; dy *= a; return *this; } bool TwoVector::operator == (const TwoVector& v) const { if (v.x()==x() && v.y()==y()) { return true ; } else { return false ; } } bool TwoVector::operator!= (const TwoVector& v) const { if (v.x()!=x() v.y()!=y()) { return true ; } else { return false ; } }
66 inline TwoVector operator * (const TwoVector & p, float a) { return TwoVector(a*p.x(), a*p.y()); } inline TwoVector operator * (float a, const TwoVector & p) { return TwoVector(a*p.x(), a*p.y()); } ostream & operator << (ostream & fstream, const TwoVector & v) { fstream << " (" << v.x() << "," << v.y() << ") "; } non-member operators
67 Precisazione sull'uso di const Per indicare che un metodo non puo' modificare gli attributi della classe, const deve essere posto dopo la definizione della classe (prima del ; nel.h o della { nel.cc) bool operator > (const Shape &s2) const ; Shape.h bool Shape::operator > (const Shape &s2) const { } Shape.cc Quando nei container STL si utilizza un const_iterator, non e' possibile modificare il valore a cui esso si riferisce (un esempio nella prossima lezione)
68 68
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2016-17 0) Struttura del Corso 1) Trattamento
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2016-17 0) Struttura del Corso 1) Trattamento
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
La programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA Laboratorio di Programmazione e Calcolo A.A. 2018-19 Test Finale Roma, 17 gennaio 2019 1) Le variabili A, B e C sono dichiarate int.
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2017-18 0) Struttura del Corso 1) Trattamento
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA Laboratorio di Programmazione e Calcolo Cognome:... A.A. 2017-18 Nome:... Test Finale con Soluzioni Matricola:... Roma, 18 gennaio 2018
OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi
OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
Informatica e Laboratorio di Programmazione C++ Object Oriented Programming Alberto Ferrari
Informatica e Laboratorio di Programmazione C++ Object Oriented Programming Alberto Ferrari oggetti o in C++ la definizione della classe è separata dalla implementazione dei metodi o definizione fornita
Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
La programmazione ad oggetti (Parte 1)
La programmazione ad oggetti (Parte 1) Algoritmicamente November 21, 2009 http://algoritmicamente.wordpress.com/ 1 Introduzione Una proprietà importante del C++ è quella che denisce questo linguaggio come
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
C++ L. Bellucci Università di Firenze Maggio
C++ programmazione OO L Bellucci Università di Firenze 23-24 Maggio Vantaggi della programmazione OO Programmare interfacce Ereditarietà e polimorfismo Entrare nell azione Procedurale vs Object Oriented
Il paradigma OO e le Classi
Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui
Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
Ho raggiunto la fine del file Provo a leggere un intero, ma il dato che prelevo dal file non è un intero
Stato di uno stream Uno stream possiede uno stato, che può essere corretto o errato. Quando lo stream è in stato di errore, non posso utilizzarlo. In lettura: Apertura di un file che non esiste X Ho raggiunto
Ereditarietà gerarchica
Ereditarietà Ereditarietà L ereditarietà è importante per la creazione di software riutilizzabile e per controllare la complessita del codice Le classi nuove sono progettate sulla base di classi pre-esistenti
Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)
Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Macchina astratta: un linguaggio di programmazione trasforma un calcolatore in una macchina
L AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout
Laboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
Programmazione template
Programmazione template Funzionalità ed operatori Anche se con comportamenti simili, i vari tipi (int, float, double) in C++ non sono interscambiabili automaticamente una medesima azione (es. la somma)
Laboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
Tipi strutturati - struct
Fondamenti di Programmazione A Appunti per le lezioni Gianfranco Rossi Tipi strutturati - struct Struttura dati (concreta) struct: sequenza di n elementi (n 0), rispettivamente di tipo t1,,tn (non necessariamente
La programmazione Object Oriented e le sue applicazioni in Fisica.
La programmazione Object Oriented e le sue applicazioni in Fisica. Gabriella Cataldi, INFN Lecce Daniele Martello, dip. Fisica e INFN Lecce Puntatori Riferimento ad una locazione di memoria #include
Dal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi
Dal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Commenti Non aumentano la dimensione del programma eseguibile ma si rivelano utili per riassumere il comportamento
Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande/ VERSIONE 1 1) Nell uso dei puntatori in C++ la scrittura -> vuol dire: a) riferimento
Introduzione al polimorfismo. Il polimorfismo è la possibilità di utilizzare una unica interfaccia per più metodi
Polimorfismo Introduzione al polimorfismo Il polimorfismo è la possibilità di utilizzare una unica interfaccia per più metodi Polimorfismo Il polimorfismo al momento della compilazione si ottiene con con
#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; };
#include #include #include using namespace std; struct elem{ char parola[31]; elem *pun; ; struct Dizionario{ elem *testa; ; void inizializzadizionario(dizionario &D){ D.testa
Commenti. I commenti vengono ignorati dal compilatore, ovvero non vengono tradotti in codice eseguibile. /* righe multiple seconda riga */
Introduzione al C++ Sommario Le differenze fra C e C++ commenti parametri per funzioni funzioni inline overloading di funzione input/output nuovi header punto di dichiarazione delle variabili locali allocazione/deallocazione
Qualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili
Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne
INTRODUZIONE AL C++ CLASSIFICAZIONE
INTRODUZIONE AL C++ 1 CLASSIFICAZIONE LINGUAGGI CHE OPERANO SU DATI OMOGENEI: FORTRAN77, LINGUAGGIO C, LINGUAGGIO C++, PASCAL: operano solo su DATI OMOGENEI (integer, float, double), senza classi e puntatori;
Introduzione a C++ e alla programmazione OO. Nunzio Brugaletta
Introduzione a C++ e alla programmazione OO Nunzio Brugaletta 1 Di cosa si parla: Paradigma OOP e C ++ 98 Si determini quali classi si desiderano; si fornisca un insieme completo delle operazioni di ogni
Laboratorio di Algoritmi e Strutture Dati
Realizzazione di Liste (II) Laboratorio di Algoritmi e Strutture Dati Domenico Redavid redavid@di.uniba.it Materiale di base gentilmente concesso dal dott. Nicola Di Mauro Ricercatore presso l'univ. di
1.1 of :05:39
/home/mgm/mydropbox/dropbox/peano/libri Peano/INFO3/es78/main.cpp 1 #include "mylib.h" 2 3 int main() { 4 unsigned short code[dim]; 5 bool book; 6 7 // carico il codice a barre 8 LoadCode(code); 9 // calcolo
L AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using
C. Genta Tecniche di Programmazione e Analisi Dati a.a. 2007/08 C++
C. Genta Tecniche di Programmazione e Analisi Dati a.a. 2007/08 C++ Perche il C++? E necessario utilizzare dei calcolatori per analizzare i dati raccolti agli esperimenti di fisica delle particelle Esistono
Definizione di classi
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
Corso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
Le classi. Classi derivate
Classi derivate È possibile esprimere proprietà comuni tra le classi? I concetti che sottendono alle definizioni delle classi, sono in relazione tra loro o sono in comune? struct studente { string name;
Struttura di un programma C++
Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout
Ereditarietà e polimorfismo
Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Ereditarietà e polimorfismo Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio
Gestire le situazioni di errore
Gestire le situazioni di errore #include using namespace std; Classe VettoreDiInteri const int MAX = 10; class VettoreInteri { int v[max]; public: ; Gestire le situazioni di errore Ottenere
Nel seguito, istruzione1 e istruzione2 possono essere un blocco di codice { }, cioè più istruzioni
INTRODUZIONE A C++ Nel seguito, istruzione1 e istruzione2 possono essere un blocco di codice, cioè più istruzioni Istruzione - Esempi Significato int a; float f; double d; char c; int x=0; variabile =
Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande/ VERSIONE 1 1) Nell uso dei puntatori in C++ la scrittura -> vuol dire: a) riferimento b) dereferenziazione e
La classe std::vector della Standard Template Library del C++
La classe std::vector della Standard Template Library del C++ Alberto Garfagnini Università degli studi di Padova 23 Ottobre 2013 Programmazione generica in C++ : i Template I templates sono probabilmente
Introduzione a C++11. EuRoC. IAS-Lab
Introduzione a EuRoC - File: interfaccia + implementazione Interfaccia (header) #include class Square public: void setcolor (Color color); Color getcolor () const; private: Color m_color = blue;
Introduzione al C++ (continua)
Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x
//=============================== class String { // VARIABILI DI ISTANZA char * base; int length;
#include using namespace std; String STRING 1 //=============================== class String { // VARIABILI DI ISTANZA char * base; int length; //METODI // metodi interni di servizio-------------------------------
Laboratorio di Algoritmi e Strutture Dati. Esercizi
Laboratorio di Algoritmi e Strutture Dati Esercizi Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro 1 Operatori Indispensabili Ogni Classe che
C. Genta Analisi Dati a.a. 2009/10 C++
C. Genta Analisi Dati a.a. 2009/10 C++ Perché il C++? E necessario utilizzare dei calcolatori per analizzare i dati raccolti agli esperimenti di fisica delle particelle Esistono dei programmi sviluppati
Grammatica di base. Si chiama: main Non prende nessun argomento Non fa niente Ritorna un intero al sistema
Codice minimo: int main() { return 0;} Definisce una funzione che: Si chiama: main Non prende nessun argomento Non fa niente Ritorna un intero al sistema TUTTI I PROGRAMMI IN C++ DEVONO AVERE UNA FUNZIONE
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 31 Ottobre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 31 Ottobre 2014 1 Reimpiego di Codice Un punto fondamentale nei linguaggi di programmazione moderni è la possibilità di riutilizzo del codice. Nel
Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
INFORMATICA OOP Relazioni tra classi Roberta Gerboni
2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi
BREVE INTRODUZIONE ALLA PROGRAMMAZIONE IN C++ E MATHEMATICA
BREVE INTRODUZIONE ALLA PROGRAMMAZIONE IN C++ E MATHEMATICA 1 LA PROGRAMMAZIONE STRUTTURATA Regole formali per la costruzione del software Metodo di astrazione suddivisione del programma in parti logiche
C++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW
C++ funzioni Alberto Ferrari http://en.cppreference.com FUNZIONI le funzioni caratterizzate da nome, parametri (numero, ordine e tipo) e tipo di ritorno le funzioni hanno un prototipo il prototipo non
String. String: Esercizio 1
1 String class String { private: // VARIABILI DI ISTANZA char * base; int length;... 2 String: Esercizio 1 Scrivere e testare i metodi di base: a. i costruttori String(), String(char * s), b. il distruttore.
Ereditarieta', Polimorfismo e Metodi Virtuali. Per "referenza" e per "valore".
Esercitazioni del corso di Laboratorio di Calcolo (Parte A) n. 7 Ereditarieta', Polimorfismo e Metodi Virtuali. Per "referenza" e per "valore". Attenzione: il programma di questa esercitazione verra' valutato
Programmazione I Prova scritta - 10 gennaio h20min
Programmazione I Prova scritta - 10 gennaio 2019-1h20min NOTA: Nei programmi si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main, inoltre si sottintenda la presenza delle
Fondamenti di Informatica
Passaggio di parametri in C++ Il passaggio dei parametri tra funzione chiamante e funzione chiamata in C++ avviene secondo due modalità: Fondamenti di Informatica 16. Funzioni in C++ (parte 2) per valore
Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1
Informatica 3 Informatica 3 LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Modulo 1: Ereditarietà Modulo 2: Polimorfismo e classi astratte Modulo 3: Visibilità delle proprietà di una
Le classi. Costruttori
Costruttori Le classi Usare una funzione per inizializzare membri di una classe viene considerato poco elegante. Ci si potrebbe dimenticare di invocare la funzione di inizializzaione o, peggio, chiamarla
Sommario. Tipo stringa: string. Tipo stringa: stile C. Tipo stringa Tipo booleano
Tipo stringa Tipo booleano Sommario Ricorsione: Definizione Chiamata di funzione Ricorsione in coda Ricorsione non in coda Ricorsionei eccessiva Esempio di ricorsione: ricerca binaria Tipo stringa Il C++
PROGRAMMA = ALGORITMO
Corso di Laurea Scienze Prof. San. Tec., Area Tecnico-Assistenziale SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Anno Accademico 2005-2006 Prof. Fausto Passariello Corso Integrato Metodologia della Ricerca
AGGIORNAMENTI RECENTI IN C++ Programmazione ad Oggetti Corso di Laurea in Informatica Università della Calabria
AGGIORNAMENTI RECENTI IN C++ Programmazione ad Oggetti Corso di Laurea in Informatica Università della Calabria C++0x/C++11/C++14/C++17 : Cosa sono? C++ ha subito molti miglioramenti da quando è stato
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
Array. Unità 7. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
Laboratorio di Algoritmi e Strutture Dati. Pile
Laboratorio di Algoritmi e Strutture Dati Pile Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso dal dott.
Il primo programma C++
Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA4 A2 Utilizzo di classi 1 Prerequisiti Implementazione di classi Funzionamento di una classe Parametri formali e attuali di una funzione 2 1 Introduzione In questa
Overloading degli operatori
Overloading degli operatori Indice L overloading degli operatori Restrizioni sull overloading degli operatori L overloading degli operatori: le funzioni membro L overloading degli operatori: le funzioni
Indice. Introduzione PARTE PRIMA LE BASI DEL C++: IL LINGUAGGIO C 1
Indice Introduzione XV PARTE PRIMA LE BASI DEL C++: IL LINGUAGGIO C 1 Capitolo 1 Una panoramica sul linguaggio C 3 1.1 Le origini e la storia del linguaggio C 3 1.2 Il C è un linguaggio di medio livello
Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)
Informatica 3 LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Modulo 1: Ereditarietà Modulo 2: Polimorfismo e classi astratte Modulo 3: Visibilità delle proprietà di una classe Modulo
Vector v1,v2; cout << max(v1,v2) << endl;} T max( max( T p1, p1, T p2 p2 ) { int main() { Per il tipo T deve essere
Programmazione generica Programmazione generica INFN, Sezione di Napoli Programmazione generica Programmazione generica Il C++ fornisce un metodo per creare un polimorfismo parametrico. E possibile utilizzare
Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
Argomento della lezione N. 2. Argomento della lezione N. 1. Presentazione del corso.
Argomento della lezione N. 1 Presentazione del corso. Argomento della lezione N. 2 Concetti introduttivi. Rappresentazione dell'informazione. Rappresentazione di caratteri (tabella ASCII). 05/10/1998 05/10/1998
Lezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
Laboratorio di Algoritmi e Strutture Dati. Alberi Binari
Laboratorio di Algoritmi e Strutture Dati Alberi Binari Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
Concetto di stream. c i a o \0. c i a o \0. c i a o \0
Concetto di stream Uno stream è un flusso di byte che permette al programma di comunicare con l esterno (es. con periferiche di input/output) c i a o \0 c i a o \0 c i a o \0 Stream di uscita standard
Programmazione I - corso B a.a prof. Viviana Bono
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
Oggetti e classi. La classe è un modello (un contenitore) che definisce la forma di un oggetto, specificando:
Classi Oggetti e classi La classe è un modello (un contenitore) che definisce la forma di un oggetto, specificando: Come è fatto (i dati) Quali operazioni si possono fare con- e sull oggetto (le funzioni)
Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 27 Ottobre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 27 Ottobre 2014 1 AVVISO Nuovo calendario turni di laboratorio : I prova: 11, 12, 13 Novembre 2014 ore 9-12 II prova: 18, 19, 20 Novembre 2014 ore
Laboratorio di Algoritmi e Strutture Dati
Realizzazione di Liste Laboratorio di Algoritmi e Strutture Dati Domenico Redavid redavid@di.uniba.it Materiale di base gentilmente concesso dal dott. Nicola Di Mauro Ricercatore presso l'univ. di Bari
Introduzione al C++ Parte 2
Introduzione al C++ Parte 2 Sommario Le differenze fra C e C++ il qualificatore const i namespace gli stream Evitare modifiche accidentali Il qualificatore const indica che la variabile non può più essere
Istruzioni Condizionali
Istruzioni Condizionali Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione
Lettura e scrittura di file di dati input/output
Lettura e scrittura di file di dati input/output Lettura e scrittura da disco Molto semplice in C++: si fa esattamente come se fosse una tastiera (se sto leggendo da disco) o lo schermo (se sto scrivendo
14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER