Le classi. Classi derivate

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Le classi. Classi derivate"

Transcript

1 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; int anno_iscrizione; int numero_matricola; vector<string> esami_sostenuti; struct studente_dottorato { studente sd; int ciclo_dottorato; vector <string> classi_dottorato; F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 213

2 Ma lo studente di dottorato non è uno studente con delle proprietà in più? Possiamo dire che uno studente di dottorato è uno studente con un po di informazioni associate in più? struct studente_dottorato: public studente { int ciclo_dottorato; vector <string> classi_dottorato; studente di dottorato è una classe derivata da studente. studente è una classe di base per studente di dottorato. Si dice che una classe derivata eredita le proprietà dalla sua base. Questa relazione è detta: ereditarietà F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 214

3 Potete immaginare la classe derivata come un oggetto che contiene un oggetto della classe base a cui sono state aggiunte alla fine le informazioni specifiche che le appartengono: struct studente { string name; int anno_iscrizione; int numero_matricola; vector<string> esami_sostenuti; Ereditarietà struct studente_dottorato { string name; int anno_iscrizione; int numero_matricola; vector<string> esami_sostenuti; int ciclo_dottorato; vector <string> classi_dottorato; F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 215

4 Usare una classe come base class equivale quindi a dichiarare un oggetto senza nome del tipo specifico: class studente; struct studente_dottorato: public studente { // può essere incluso in un header file E equivalente a creare in memoria un oggetto studente senza nome Ma c era bisogno di mettere su tutto questo giubbillero se io posso usare una classe in un altra dichiarandola come membro della classe? E.g. : struct studente_dottorato { studente sd; int ciclo_dottorato; vector <string> classi_dottorato; F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 216

5 Con l ereditarietà la classe derivate diventa un sottotipo della classe base. Può essere usata ogni volta che si usa la classe base: vector <studente *> altogether; void add_student( studente * s) { altogether.push_back(s); } int main(){ studente laurea; studente_dottorato dott; add_student(&laurea); add_student(&dott); return 0; } Uso uno studente_dottorato come se fosse uno studente (generico) F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 217

6 Non è vero il contrario. Devo fare un cast esplicito. int main(){ studente laurea; studente_dottorato dott; studente *ps=&dott; add_student(&laurea); add_student(&dott); std::cout << (studente_dottorato *)ps->ciclo_dottorato << endl; return 0; } Uso uno studente_dottorato come se fosse uno studente Voglio usare studente come fosse studente_dottorato. NON E PERMESSO!! Devo fare un cast esplicito Un oggetto della classe derivata può essere trattato come un oggetto della classe base manipolandolo attraverso puntatori e reference. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 218

7 Member functions Che succede alle member functions? Su qualidati(membri) possonoessereusate? Un membro di una classe derivata può usare tutti I membri dichiarati pubblici o protetti della sua classe di base proprio come se fossero stati dichiarati nella sua class definition. Un membro di una classe derivata non può usare I membri dichiarati privati della sua classe di base. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 219

8 protected Tutti i membri dichiarati come protetti possono essere utilizzati dalla classe e da tutte le sue classi derivate Per tutti le altre entità (funzioni, helper functions, altri oggetti, oggetti in cui vengono dichiarati come membri etc. etc. etc. ) saranno privati. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 220

9 È un membro privato class studente { della classe base private: string _name; int _anno_iscrizione; int _numero_matricola; vector<string> _esami_sostenuti; public: void SetName(string &s){ _name=s;} string GetName() {return _name;} class studente_dottorato :public studente { private: int _ciclo_dottorato; vector <string> _classi_dottorato; public: void SetName(string &s){ _name=s;} Dove ho sbagliato? F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 221

10 class studente { private: protected: string _name; private: int _anno_iscrizione; int _numero_matricola; vector<string> _esami_sostenuti; public: void SetName(string &s){ _name=s;} string GetName() {return _name;} class studente_dottorato :public studente { private: int _ciclo_dottorato; vector <string> _classi_dottorato; public: void SetName(string &s){ _name=s;} Devo dichiararlo protetto F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 222

11 class studente { private: string _name; int _anno_iscrizione; int _numero_matricola; vector<string> _esami_sostenuti; public: void SetName(string &s){ _name=s;} string GetName() {return _name;} class studente_dottorato :public studente { private: int _ciclo_dottorato; vector <string> _classi_dottorato; public: void SetName(string &s){_name=s;} Usare le member functions della classe base { SetName(s);} Sicuri che funzioni? F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 223

12 class studente { private: string _name; int _anno_iscrizione; int _numero_matricola; vector<string> _esami_sostenuti; public: void SetName(string &s){ _name=s;} string GetName() {return _name;} Adesso funziona class studente_dottorato :public studente { private: In caso di ambiguità, specifico int _ciclo_dottorato; la classe (namespace) di cui fa vector <string> _classi_dottorato; parte il metodo che voglio usare public: void SetName(string &s){studente::setname(s);} F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 224

13 Costruttori e distruttori Che succede? Come si comportano? Se una classe base ha costruttori (quindi necessita di una inizializzazione) questi devono essere esplicitamente invocati con I parametri adatti. class studente { public: studente(string &s= none ): _name(s), {} class studente_dottorato : public studente{ public: studente_dottorato(string &s= none, ): studente(s), _anno_dottorato(0) { } F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 225

14 Gli oggetti sono costruiti dal basso vesto l alto (bottom up) Prima vengono costruiti gli oggetti delle classi base Poi I membri E poi la classe derivata Gli oggetti vengono distrutti nell ordine inverso I costruttori non sono mai ereditati F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 226

15 Copia Poichè la classe base non conosce niente della classe derivata, solo la parte della classe base verrà copiata nella copia di una classe derivata usata come classe base: void f(const studente_dottorato &s){ studente laurea=s; } Stessa cosa succede nelle assegnazioni: void f(const studente_dottorato &s){ studente laurea; laurea=s; } Anche gli operatori di assegnazione non vengono ereditati F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 227

16 Virtual functions Come facciamo ad essere sicuri che vengno usate le member functions delle classi corrette? void Print_it( const studente &s) { s.print(); } int main(){ studente a( Francesco ); studente_dottorato b( Cafagna,1); Print_it(a); Print_it(b); return 0; } Quale Print() verrà invocato? Quello di studente o di studente_dottorato? Se venisse invocato quello di studente mi perderei le informazioni sulle sue attività di dottorato F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 228

17 Virtual functions Il problema di assegnare le member functions alla classe corretta può essere evitato dichiarando una member function come virtuale: virtual return_type name(parameter_list); la dichiarazione di virtuale indica che il nome della funzione si comporta come una interfaccia tra la funzione definita nella classe base e quella definita nella classe derivata. Per questo gli argomenti delle due definizioni, nonchè I tipi di ritorno, devono essere gli stessi nelle due definizioni. Di solito I membri virtuali vengono detti method F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 229

18 class studente { private: public: string _name; int _anno_iscrizione; int _numero_matricola; vector<string> _esami_sostenuti; void SetName(string &s){ _name=s;} string GetName() {return _name;} virtual void Print(){ } class studente_dottorato :public studente { private: int _ciclo_dottorato; vector <string> _classi_dottorato; public: void SetName(string &s){studente::setname(s);} void Print(){; studente::print();} virtual segnala al compilatore che la member function potrebbe essere ridefinita nella classe derivata come infatti succede F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 230

19 void print_all(const vector<studente *> &vs){ for(vector<studente *>::const_iterator p=vs.begin(); p!=vs.end();++p) (*p)->print(); } int main(){ Studente laure; Studente_dottorato dot; Vector<studente *> vs; Fill_vs(laure,vs); Fill_vs(dot,vs); Print_all(vs); } Quando verrà passato un studente_dottorato verrà invocato il Print di studente_dottorato Passo uno studente, userà studente::print() Passo studente_dottorato come se fosse uno studente ma userà studente_dottorato::print() F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 231

20 Virtual destructors Che succede se provo a distruggere un oggetto di una classe derivata attraverso un puntatore alla sua classe base? void Print_it( const studente &s) { s.print(); } int main(){ studente a( Francesco ); studente_dottorato *b= new studente_dottorato b( Cafagna,1); Print_it(a); Print_it(*b); delete b; return 0; } Uso uo studente_dottorato come fosse uno studente Chi viene cancellato lo studente o lo studente_dottorato? F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 232

21 Virtual destructors Il distruttore della classe base: studente, non conosce le dimensioni della classe derivata: studente_dottorato, quindi non potrà distruggere la classe derivata. Per farlo bisogna dichiarare virtual il distruttore della classe base. La presenza di un distruttore virtual nella classe base assicura che ciascuna classe derivata venga fornita di un distruttore, anche se questo non è stato esplicitamente dichiarato. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 233

22 Metodi astratti Ma se la classe descrive oggetti generali che potrebbero avere delle funzionalita che hanno una corrispondenza solo in un oggetto reale? Per esempio: class writable { private: ofstream * ofile; public: void SetFile(ofstream * of){ ofile=of;} ofstream GetFile() const { return *of;} virtual void Write(); class studente: public writable{ La classe writable sa come usare Write? F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 234

23 Metodi astratti La classe writable descrive un oggetti generali e non sa come definire il Write(). L autore della classe writable non sa cosa deve fare nella vita il Write(). Attenzione, i metodi virtuali devono essere definiti. Quindi Write() deve essere definita vuota: virtual void Write(){ class writable { private: ofstream * ofile; public: void SetFile(ofstream * of){ ofile=of;} ofstream GetFile() const { return *of;} virtual void Write(){ class studente: public writable{ Potrebbe funzionare dato che in studente dovrei aver definito Write(). Ma se io mi dimenticassi di aggiungere Write() nella mia classe derivata? F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 235

24 Metodi astratti Posso dichiarare dei metodi,i.e. delle member functions virtuali, come astratti e far si che vengano obligatoriamente definiti nella classe derivata assegnando il valore 0 al metodo. class writable { private: ofstream * ofile; public: void SetFile(ofstream * of){ ofile=of;} ofstream GetFile() const { return *of;} virtual void Write()=0; class studente: public writable{ In questo modo sono obbligato a provvedere la member function Write() nella mia classe derivata. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 236

25 Abstract Classes Ma se la classe descrive oggetti completamente astratti che non hanno una corrispondenza in un oggetto reale? In questo caso tutti i suoi metodi saranno astratti e la classe stessa verrà detta astratta. Nel nostro caso Writable e una classe astratta. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 237

26 Ereditarietà Multipla Il nostro studente_dottorato è uno studente. Il nostro studente_dottorato è anche un oggetto che vorrei scrivere in un file, quindi un writable. Come faccio a renderlo sia studente che writable? Posso fargli ereditare entrambe le classi: class studente_dottorato: public studente, public writable { Posso ereditare più di una classe elencando le classi base separate da virgole potevo anche far ereditare Writable a studente class studente: public writable { // ricordati di scrivere Write class studente_dottorato: public studente { // Speriamo che studente abbia un Write astratto o almeno virtuale F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 238

27 Funzionalità avanzate: S(T)L Il C++ viene fornito con una Standard Library. la Standard Library viene definita nel namespace std, e contiene strumenti per: Run-time language support (typeid, memory operation, etc.) La C standard library (printf, scanf, etc. ) Stringhe e I/O streams (string, cout, cin, etc.) Supporto per calcolo numerico (complex, etc.) Contenitori (Containers) ed algoritmi che li utilizzano (vector, list, map, iterator, for_each, etc.) Utilizza pesantemente I templates F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 239

28 Funzionalità avanzate: S(T)L Abbiamo già usato la libreria per I/O: iostream cout: definisce un output per ogni tipo; cin: definisce un input per ogni tipo; Si specializza per I/O su file usando: fstream,ofstream, ifstream Su stringhe: sstream, istringstream, ostringstream Contenitori: vector : array dinamico. Non ha dimensione fissa. Templates. vector <int> caf; for(int a=0;a<10;++a){ caf.push_back(a); } std::cout << Dim. : << caf.size() << std::endl; Templates Dinamico. Cresce alla bisogna Chiedo al vector le dimensioni F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 240

29 Funzionalità avanzate: S(T)L Contenitori È possibile navigare in un vettore usando l operatore: [] vector<pere> kayser; for(int i=0; i< kayser.size(); ++i) do_nothing(kayser[i]); È possibile navigare in un vettore usando degli: iteratori. Oggetti che sanno come spostarsi in un vettore: vector<pere> kayser; for(vector<pere>::const_iterator i=kayser.begins(); i!= kayser.end(); ++i) do_nothing(*i); Gli iteratori forniscono il puntatore all oggetto contenuto nel container. Possono essere const in modo da non modificare l oggetto a cui puntano. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 241

30 Funzionalità avanzate: S(T)L Contenitori I contenitori delle STL sono di due tipi: sequenziali ed associativi vector è sequenziale, i.e. lo uso come una lista o una coda di oggetti Un contenitore associativo associa ad una chiave un valore. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 242

31 Funzionalità avanzate: S(T)L Contenitori Per esempio, il campo di un database ha un nome, ovvero una chiave, contiene un dato, ovvero un valore. field( nome )-> Francesco Associo alla chiave nome il valore Francesco field( anno di nascita )->2008 Associo alla chiave anno di nascita il valore 2008 Un contenitore associativo molto usato e la: map Come per il vector devo specificare, attraverso il meccanismo del template, il tipo da usare per la chiave ed il tipo da usare per il valore F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 243

32 Funzionalità avanzate: S(T)L Contenitori Per esempio: map<string, int> anno; Nella map verrà salvata una coppia, pair, di chiave e valore. Per assegnare i valori ad una chiave si usa l operatore: [] anno[ anno di nascita ]=2008; Se la coppia corrispondente alla chiave passata all operatore non esiste, questa viene creata. Per accedere alle coppie chiave valore, di solito si usa l iteratore F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 244

33 Funzionalità avanzate: S(T)L Stringstream Supponiamo di avere una variabile di un certo tipo e di avere la necessità di scriverla in una stringa. Per esempio abbiamo l id di studente e vogliamo scriverlo in una stringa che verrà poi fornita ad uno stream di output. Nel C avremmo usato le funzioni: s(n)printf (definite in stdio.h). Le stesse funzioni sono usate presenti nel C++ ma definite in cstdio. Per caso c è qualche cosa di equivalente nelle STL? F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 245

34 Funzionalità avanzate: S(T)L Stringstream Si. Gli oggetti di tipo: stringstream. Anche questi oggetti sono classi derivate della classe: ios. Sono dichiarati nell header file: sstream Sono in tutto equivalenti agli iostream o fstream ma invece di scrivere o leggere da un file o lo standard output/input, definiscono le operazioni di streaming ( <<, >>) su una string. F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 246

35 Funzionalità avanzate: S(T)L Stringstream In pratica hanno una stringa come data member che può essere inizializzata nel creatore e venire scritta e letta attraverso gli operatori di streaming ( <<, >>). Alla stringa si può accedere attraverso la member function: str(). #include <sstream> std::stringstream t, f( Anno di nascita: ); int a=2008; double c=.99; t << Percentuale di calvizie: ; f <<a; t << c*100. << % ; std::cout << t.str() << std::endl; std::cout << f.str() << std::endl; F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 247

36 Funzionalità avanzate: S(T)L Stringstream #include <sstream> std::stringstream t, f( Anno di nascita: 2008 ); t << Percentuale di calvizie 99. % ; int a; double c; string j; t >> j >> j >> j >> c; f >> j >> j >> j >> a; std::cout << L individuo e nato nel: << a; If(c>>90.) std::cout << ed e calvo! << std::endl; Ricordate che gli operatori di streaming accettano dati fino a che non trovano lo spazio o il ritorno carrello ( invio ). F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 248

37 Funzionalità avanzate: S(T)L stream Naturalmente ereditano tutti I metodi o le member functions degli stream. Di solito quelle più usate: bool eof(), vero se si è raggiunti l End Of File; bool good(),vero se lo stato dello stream è valido per I/O; bool fail(), vero se i bit di errore o di stato non valido sono asseriti. istream & getline(string &s, streamsize n, [char delimiter]) int get() ; istream& get ( char& c ); istream& get ( char* s, streamsize n ) ; istream& get ( char* s, streamsize n, char delim ); istream& get ( streambuf& sb); istream& get ( streambuf& sb, char delim ) ; Gli operatori di streaming ( <<, >>); L operatore!, equivalente a fail() ; F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 249

Grammatica di base: Pointers

Grammatica di base: Pointers Grammatica di base: Pointers Esistono I puntatori a funzioni. Bisogna esplicitare esattamente il tipo di ritorno e il tipo di argomento. Per evitare ambiguità con il prefisso * nel declarator, il nome

Dettagli

Grammatica di base: esempio

Grammatica di base: esempio Grammatica di base: esempio Esempio di funzione con assegnazione condizionata: Calcoliamo il fattoriale int fac(int ); int main(){ int bb=3; return fac(3); main.cpp int fac( int b){ return (n

Dettagli

Le classi. Costruttori

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

Dettagli

La classe std::vector della Standard Template Library del C++

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

Dettagli

Programmazione template

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)

Dettagli

La programmazione ad oggetti (OOP)

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

Dettagli

Standard Template Library

Standard Template Library Standard Template Library Standard Template Library Progettata per gestire insiemi di dati in modo comodo ed efficiente senza conoscere dettagli implementativi Fa parte dello standard C++ È basata a sulla

Dettagli

Introduzione C++ Compilatori Librerie Usare oggetti

Introduzione C++ Compilatori Librerie Usare oggetti Introduzione C++ Compilatori Librerie Usare oggetti Introduzione a C, C++ e Java 1977 C 1986 C++ a better C con estensioni agli oggetti oggi uno standard industriale 1994 Java C ++ -- C++ C Java programmazione

Dettagli

UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA

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.

Dettagli

Il paradigma OO e le Classi

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

Dettagli

Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

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

Dettagli

Informatica e Laboratorio di Programmazione C++ stream Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

Informatica e Laboratorio di Programmazione C++ stream Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione Informatica e Laboratorio di Programmazione C++ stream Alberto Ferrari Alberto Ferrari Informatica e Laboratorio di Programmazione stream o l input/output del C++ è basato sugli stream o gli stream sono

Dettagli

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione

Dettagli

Introduzione C++ Il compilatore. La compilazione in g++ Introduzione a C, C++ e Java. C++ C Java 1977 C 1986 C++ Compilatori Librerie Usare oggetti

Introduzione C++ Il compilatore. La compilazione in g++ Introduzione a C, C++ e Java. C++ C Java 1977 C 1986 C++ Compilatori Librerie Usare oggetti Introduzione a C, C++ e Java Introduzione C++ Compilatori Librerie Usare oggetti 1977 C 1986 C++ a better C con estensioni agli oggetti oggi uno standard industriale 1994 Java C ++ -- C++ C Java programmazione

Dettagli

Introduzione C++ Compilatori Librerie Usare oggetti. Introduzione a C, C++ e Java

Introduzione C++ Compilatori Librerie Usare oggetti. Introduzione a C, C++ e Java Introduzione C++ Compilatori Librerie Usare oggetti Introduzione a C, C++ e Java 1977 C 1986 C++ a better C con estensioni agli oggetti oggi uno standard industriale 1994 Java C ++ -- C++ C Java programmazione

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il

Dettagli

Introduzione al C++ Parte 2

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

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

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

Dettagli

Oggetti e classi. La classe è un modello (un contenitore) che definisce la forma di un oggetto, specificando:

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)

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Indice. Introduzione PARTE PRIMA LE BASI DEL C++: IL LINGUAGGIO C 1

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

Dettagli

Concetto di stream. c i a o \0. c i a o \0. c i a o \0

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

Dettagli

Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C

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

Dettagli

Il linguaggio C++ Ugo de Liguoro

Il linguaggio C++ Ugo de Liguoro Il linguaggio C++ Ugo de Liguoro Caratteristiche Il C++ è class based; interpreta le classi come tipi; il subtyping coincide con la (chiusura transitiva della) relazione di sottoclasse; è basato sul C

Dettagli

Programmazione I Prova scritta - 10 gennaio h20min

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

Dettagli

Fondamenti di Informatica Ing. Biomedica

Fondamenti di Informatica Ing. Biomedica Fondamenti di Informatica Ing. Biomedica Esercitazione n.10 Strutture Antonio Arena antonio.arena@ing.unipi.it Ripresa esercizio per casa Fondamenti di Informatica - Esercitazione n.10 2 Scrivere una funzione

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

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

Dettagli

La Standard Template Library Heap, algoritmi e funtori

La Standard Template Library Heap, algoritmi e funtori La Standard Template Library Heap, algoritmi e funtori Pericle Perazzo 27 maggio 2011 Riassunto contenitori e iteratori Un contenitore è un oggetto che contiene un insieme di altri oggetti di tipo omogeneo

Dettagli

La programmazione Object Oriented e le sue applicazioni in Fisica.

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 & INFN Lecce definizione di variabili Un metodo per automatizzare il processo

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; };

#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

Dettagli

Array. Unità 7. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

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

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Record Laboratorio di Informatica Ingegneria Meccanica Lezione 9, 6 dicembre 2007 versione 18 dicembre 2007 Renato Menicocci Array: collezione di dati omogenei

Dettagli

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3) Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di

Dettagli

La programmazione ad oggetti (Parte 1)

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

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

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

Dettagli

C++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW

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

Dettagli

Tipi di Dato Derivati

Tipi di Dato Derivati Un tipo di dato derivato è ottenuto a partire da tipi di dato predefiniti attraverso gli operatori *, &, [] definendo enumerazioni definendo struct I tipi di dato derivati non sono tipi di dati nuovi,

Dettagli

UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA

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

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

L AMBIENTE CODE BLOCKS E L IO

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

Dettagli

Passaggio di parametri per valore

Passaggio di parametri per valore Passaggio di parametri per valore #include using namespace std; int main() { int z, x = 1; z = ; cout

Dettagli

Esercizi. Cosa fa questa linea di codice: while (*a++=*b++); Costruiamo una funzione che la utilizzi (hint. Usiamo I char..)

Esercizi. Cosa fa questa linea di codice: while (*a++=*b++); Costruiamo una funzione che la utilizzi (hint. Usiamo I char..) Esercizi Cosa fa questa linea di codice: while (*a++=*b++); Costruiamo una funzione che la utilizzi (hint. Usiamo I char..) F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 160 Esercizi

Dettagli

ciclo di vita della soluzione (informatica) di un problema

ciclo di vita della soluzione (informatica) di un problema Università di Roma Tor Vergata L2-1 ciclo di vita della soluzione (informatica) di un problema errori run-time errori sintattici codice editor codice C++ compilatore esegui eseguibile OK risultati scorretti

Dettagli

Grammatica di base. Si chiama: main Non prende nessun argomento Non fa niente Ritorna un intero al sistema

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

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011 Gruppo Cognome Riontino Nome Raffaele Cognome Nome TRACCIA 2 ARGOMENTO: LISTE TEMPO: 4h 1. Utilizzando Typedef definire un nuovo tipo di dato

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016

Dettagli

INTRODUZIONE AL C++ CLASSIFICAZIONE

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;

Dettagli

Programmazione generica

Programmazione generica Programmazione generica Il C++ fornisce un metodo per creare un polimorfismo parametrico. E possibile utilizzare lo stesso codice per tipi differenti: il tipo della variabile diventa un parametro template

Dettagli

Cenni storici e grammatica di base

Cenni storici e grammatica di base Cenni storici e grammatica di base Cenni storici Lui chi e? Bjarne Stroustrup, papà del C++ Creato nel 1980: C with Classes, comincia a circolare nel 1983. C++ coniato in quell anno. Dal 1990 si sono attivi

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 13 Corso di Informatica 2009-2010 Lezione 13 1 Input/output da file Stream Si definisce stream una sequenza di bytes di dati che può essere in ingresso (input

Dettagli

Reti di Connessione e Instradamento AA

Reti di Connessione e Instradamento AA Politecnico di Milano Dipartimento di Elettronica e Informazione Reti di Connessione e Instradamento AA. 2010-2011 Cenni sulla programmazione a oggetti con il C++ Massimo Tornatore (Autore delle slide:

Dettagli

Introduzione alla STL

Introduzione alla STL Introduzione alla STL Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di: Giancarlo Cherchi Introduzione Cosa s intende per STL? STL? Standard Template Library E una libreria di programmazione

Dettagli

Grammatica di base. Casting

Grammatica di base. Casting Grammatica di base Casting Dichiarato un nome potrò usarlo per operazioni definite sul tipo del nome. Ma se io voglio usarlo per operazioni definite per un altro tipo o se voglio assegnarlo ad un nome

Dettagli

Parte 3. Puntatori. [S. Dalí The temptation of St. Anthony, 1946] - AA. 2015/16 3.1

Parte 3. Puntatori. [S. Dalí The temptation of St. Anthony, 1946] - AA. 2015/16 3.1 Parte 3 Puntatori [S. Dalí The temptation of St. Anthony, 1946] 3.1 3.2 Puntatori Approfondimento rispetto alla trattazione vista nel corso precedente Finora come avete utilizzato i puntatori? Principalmente

Dettagli

L AMBIENTE CODE BLOCKS E L IO

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

Dettagli

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

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

Dettagli

Introduzione alle stringhe e algoritmi collegati

Introduzione alle stringhe e algoritmi collegati Introduzione alle stringhe e algoritmi collegati Algoritmicamente August 15, 2009 1 Introduzione 1.1 Introduzione ai caratteri In informatica o più generalmente in una terminologia scientifica, il carattere

Dettagli

Standard Input e Standard Output

Standard Input e Standard Output Istruzioni di I/O Standard Input e Standard Output Il C++ utilizza i concetti di standard input e standard output rispettivamente come astrazione di un canale per l ingresso e per l uscita dei dati In

Dettagli

Lezione 3 Tipi di Dato Derivati

Lezione 3 Tipi di Dato Derivati Lezione 3 Un tipo di dato derivato è ottenuto a partire da tipi di dato predefiniti attraverso gli operatori *, &, [] definendo enumerazioni definendo struct I tipi di dato derivati non sono tipi di dati

Dettagli

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione Java Avanzata Programmazione Object- Oriented in Java Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione

Dettagli

Ho raggiunto la fine del file Provo a leggere un intero, ma il dato che prelevo dal file non è un intero

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

Dettagli

Tipi strutturati - struct

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

Dettagli

Ereditarietà. Ivan Lanese e Cosimo Laneve

Ereditarietà. Ivan Lanese e Cosimo Laneve Ereditarietà Ivan Lanese e Cosimo Laneve Argomenti Ereditarietà Sottotipaggio Costruttori Ereditarietà Spesso non vogliamo definire una classe a partire dal nulla, ma vogliamo definirla a partire da un

Dettagli

File. Unità 8. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

File. Unità 8. 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

Dettagli

Introduzione al C++ (continua)

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

Dettagli

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

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)

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 3 Record G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Record >> Sommario Sommario Introduzione Dichiarazione di Record

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 11 Corso di Informatica 2009-2010 Lezione 11 1 Utilizzo dei puntatori Funzioni Perche i Puntatori? I puntatori hanno tre importanti applicazioni: 1. Passaggio

Dettagli

Puntatori e array. Violetta Lonati

Puntatori e array. Violetta Lonati Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array

Dettagli

INFORMATICA File di testo in C Roberta Gerboni

INFORMATICA File di testo in C Roberta Gerboni 2018 - Roberta Gerboni File di testo in C++ Il linguaggio C++ mette a disposizione le seguenti classi per operare sui file (è necessario includere nel programma l header ), consentendo tipo di

Dettagli

Informatica e Laboratorio di Programmazione C++ Object Oriented Programming Alberto Ferrari

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

Dettagli

Programmazione orientata agli oggetti. Ivan Lanese

Programmazione orientata agli oggetti. Ivan Lanese Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows

Dettagli

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe Corso di Fondamenti di Informatica Tipi strutturati: Stringhe Anno Accademico Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri

Dettagli

Laboratorio di programmazione

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

Dettagli

Fondamenti di Informatica 2008 corso prof. A. Picariello. Operazioni sui FILE in C++

Fondamenti di Informatica 2008 corso prof. A. Picariello. Operazioni sui FILE in C++ Fondamenti di Informatica 2008 corso prof. A. Picariello Operazioni sui FILE in C++ Librerie di I/O per la gestione dei FILE Il C++ consente di utilizzare le librerie standard di I/O del C mette anche

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Variabili. Programma principale: funzione main. Funzioni

Variabili. Programma principale: funzione main. Funzioni Un programma descrive al computer, in estremo dettaglio, la sequenza di passi (istruzioni) necessari a svolgere un determinato compito o risolvere un particolare problema. Un linguaggio di programmazione

Dettagli

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Autore: Prof. Agostino Sorbara ITIS M. M. Milano Polistena (RC) con questo nome si indica in genere un pezzo di programma, dotato di una propria identità: un modulo, ad esempio, potrebbe essere l insieme di alcune funzioni C, o Pascal, che risiedono in un unico file

Dettagli

ASD Lab 2. Alessandra Giordani Alessandra Giordani ASD Lab / 28

ASD Lab 2. Alessandra Giordani Alessandra Giordani ASD Lab / 28 ASD Lab 2 Alessandra Giordani 10-10-2014 Alessandra Giordani ASD Lab 2 10-10-2014 1 / 28 CALENDARIO 03/10 14:00-16:00 Introduzione 10/10 14:00-15:45 Ad-Hoc 17/10 (Nessuna lezione) 24/10 14:00-16:00 Grafi

Dettagli

Algoritmi e Strutture Dati. Lezione 1

Algoritmi e Strutture Dati. Lezione 1 Algoritmi e Strutture Dati Lezione 1 www.iet.unipi.it/a.virdis Antonio Virdis antonio.virdis@unipi.it 1 Ma io so già programmare! Fondamenti I Sia dato un array contenente delle frasi. Scrivere un programma

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce 17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 9 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 01 Aprile 2008 ADT param. in C ADT param.

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Corso di Algoritmi e Strutture Dati Lezione del Esercitatrice: dott.ssa Susanna Cozza. L argomento della lezione

Corso di Algoritmi e Strutture Dati Lezione del Esercitatrice: dott.ssa Susanna Cozza. L argomento della lezione L argomento della lezione Dall informazione al file Per permettere il riutilizzo di informazioni oltre la durata dei programmi che le hanno prodotte, i dati sono allocati su dispositivi in memoria secondaria.

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

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

Dettagli