Introduzione a C++11. EuRoC. IAS-Lab
|
|
- Fiora Lazzari
- 5 anni fa
- Visualizzazioni
Transcript
1 Introduzione a EuRoC
2 - File: interfaccia + implementazione Interfaccia (header) #include <color.h> class Square public: void setcolor (Color color); Color getcolor () const; private: Color m_color = blue; }; include/square.h PUBBLICO Implementazione src/square.cpp #include <square.h> void Square::setColor (Color color) m_color = color; } Color Square::getColor () const return m_color; } PRIVATO
3 - File: solo interfaccia Interfaccia (header) include/square.h include/square.h #include <color.h> class Square public: Color getcolor () const return m_color; } void setcolor (Color color) m_color = color; } private: Color m_color = blue; };
4 - Differenze - Pro e contro Pro Interfaccia + implementazione Contro PREFERIBILE Codice più leggibile Più veloce a compilare Ci sono casi in cui non è possibile (template) Pro Solo interfaccia Contro QUANDO SAPRETE BENE COSA STATE FACENDO Codice più ottimizzabile Più lento a compilare Codice meno leggibile
5 - File: importante!! Interfaccia (header) include/shape/square.h #ifndef SHAPE_SQUARE_H_ #define SHAPE_SQUARE_H_ #include <color.h> namespace shape class Square // fa qualcosa }; } // namespace shape Guardie: altrimenti non compila Namespace: per evitare la duplicazione dei nomi #endif // SHAPE_SQUARE_H_
6 - File: importante!! Interfaccia (header) include/shape/square.h #ifndef SHAPE_SQUARE_H_ #define SHAPE_SQUARE_H_ #include <color.h> namespace shape class Square // fa qualcosa }; } // namespace shape #endif // SHAPE_SQUARE_H_ Implementazione src/shape/square.cpp #include <shape/square.h> namespace shape void Square::setColor (Color color) m_color = color; } // altri metodi } // namespace shape
7 - File: importante!! I file possono avere qualsiasi nome e percorso ANARCHIA
8 - File: importante!! I file possono avere qualsiasi nome e percorso ANARCHIA Per una classe di nome NomeClasse all'interno del namespace un_namespace usare sempre: include/un_namespace/nome_classe.h src/un_namespace/nome_classe.cpp DITTATURA
9 Filippo Basso Java vs - Puntatori In Java tutti gli oggetti sono in realtà puntatori ad oggetti, in no!! Java Square a = new Square(); Square b = new Square(); a.setcolor(yellow); b.setcolor(red); a = b; a.setcolor(blue); b.getcolor() == blue auto a = Square(); auto b = Square(); a.setcolor(yellow); b.setcolor(red); a = b; a.setcolor(blue); b.getcolor() == red
10 C++ - Puntatori C++ Square a = Square(); Square * b = new Square(); a.setcolor(red); b->setcolor(blue); delete b; <Square> b a In memoria <Square> Sintassi: La variabile *b è di tipo Square (*b).setcolor(blue); C++ Sintassi: Si usa -> invece di. per metodi e variabili Problema! C++ non ha un garbage collector. L'oggetto deve essere cancellato manualmente!
11 C++ - Puntatori & Problemi Square * a, b; // Attenzione! a è un puntatore, b no!! Square * a; Square b = *a; // Errore: a non punta a niente!! Square * a = new Square(); SEGMENTATION Square * b = a; FAULT delete b; a->setcolor(green); // Errore: a è stato cancellato!! C++ Square * a = new Square(); // Do something a = new Square(); C++ In memoria a MEMORY LEAK <Square> <Square>
12 Filippo Basso C++ vs - Puntatori C++ Square * a = new Square(); a->setcolor(blue); Square b = *a; delete a; auto a = std::make_shared<square>(); // a è di tipo std::shared_ptr<square> a->setcolor(blue); Square b = *a; // non serve fare il delete NO SEGMENTATION FAULT NO MEMORY LEAK
13 Filippo Basso - Puntatori vs Reference In C++ esiste qualcosa chiamato reference!! auto * a = new Square(); auto * b = a; a->setcolor(blue); b->setcolor(red); a->getcolor() == red auto a = Square(); auto b = a; a.setcolor(blue); b.setcolor(red); a.getcolor() == blue auto a = Square(); auto & b = a; a.setcolor(blue); b.setcolor(red); a.getcolor() == red Sintassi: La variabile b, di tipo Square &, è un alias per a <Square> In memoria a,b
14 - Const reference Da usare il più possibile!! auto a = Square(); const auto & b = a; a.setcolor(blue); b.setcolor(red); const auto c = Square(); const auto & d = c; auto & e = c; Errore! c è const Errore! Ovviamente le variabili const hanno il loro motivo di esistere Sintassi: Le variabili b e d sono alias per a e c che non possono essere modificate (const) QUANDO CAPIRETE QUESTE SLIDE AVRETE IMPARATO A PROGRAMMARE IN C++
15 - Reference: considerazioni auto a = Square(); // OK auto & b = a; // OK auto & c = Square(); const auto & d = Square(); Si può fare? NO! Perché? Perché Square() ritorna un dato che non si può convertire in Square & Ma quindi si può fare? NO! Ovvero? Square() ritorna un const Square & e Perché? Perché l'oggetto creato con Square() è temporaneo e viene distrutto alla fine dell'istruzione Square &!= const Square & QUANDO CAPIRETE QUESTE SLIDE AVRETE IMPARATO A PROGRAMMARE IN C++
16 - Passaggio per valore void per_valore (Square s2) s2.setcolor(red); } <Square> s <Square> s2 auto s = Square(); s.setcolor(blue): per_valore(s); s.getcolor() == blue void per_ptr (Square * p) p->setcolor(red); } <Square> p s C++ Square * s = new Square(); s->setcolor(blue): per_ptr(s); s->getcolor() == red Nota: Il puntatore viene copiato SOLO DATI PICCOLI
17 - Passaggio per riferimento void per_ref (Square & r) r.setcolor(red); } <Square> r,s void per_const_ref (const Square & r) r.getcolor(); } auto s = Square(); s.setcolor(blue): per_ref(s); s.getcolor() == red auto s = Square(); per_const_ref(s); per_ref(square()); per_const_ref(square()); USA I CONST REFERENCE Si può fare? NO! Si può fare? SI!
18 - Classi class Rectangle public: Rectangle (int width, int height); private: int m_width; int m_height; }; Implementazione Java-like Rectangle::Rectangle (int width, int height) m_width = width; NO m_height = height; } Rectangle::Rectangle (int width, int height) : m_width(width), m_height(height) } PIU' EFFICIENTE Sintassi: Inizializzazione dei membri dopo i :
19 - Classi: costruttore di default Se in una classe il costruttore non è definito, C++ gliene assegna uno di default class Circle private: int m_radius; Color m_color; }; NON SERVE SCRIVERE CODICE Codice Generato Circle::Circle () : m_radius(), m_color() } Cosa fa? Chiama i costruttori di default dei membri Attenzione! I tipi numerici sono inizializzati a valori random
20 - Classi: valori di default Si possono dare dei valori di default ai membri Si può chiedere la generazione del costruttore di default class Circle public: Circle () = default; Circle (int radius); private: int m_radius = 0; Color m_color = blue; }; Circle::Circle (int radius) : m_radius(radius) } Codice Generato Circle::Circle () : m_radius(0), m_color(blue) } Circle::Circle (int radius) : m_radius(radius), m_color(blue) }
21 - Classi: note sui costruttori Alcuni modi per richiamare lo stesso costruttore Circle::Circle () auto a = Circle(); auto b = std::make_shared<circle>(); Circle a; Circle a = Circle(); Circle * b = new Circle(); Circle::Circle (int radius) auto a = Circle(10); auto b = std::make_shared<circle>(10); Circle a = Circle(10); Circle * b = new Circle(10);
22 vs Java - Classi: ereditarietà class Shape public: Virtual: serve per il polimorfismo Attenzione! Si può decidere se si vuole il polimorfismo o meno! virtual ~Shape (); virtual int area () const = 0; }; Shape::~Shape () } Metodo pure virtual: il metodo non è implementato, quindi la classe diventa astratta Distruttore: Chiamato quando l'oggetto viene distrutto Attenzione! Deve essere virtual se la classe ha un metodo virtual!!
23 - Classi: ereditarietà class Rectangle : public Shape public: Rectangle (int width, int height); virtual ~Rectangle (); virtual int area () const override; private: int m_width; int m_height; }; int Rectangle::area () const return m_width * m_height; } Override: dice al compilatore che si vuole sovrascrivere un metodo Attenzione! Funziona anche se manca A cosa serve? Dà errore se manca il metodo nella classe base
24 - Classi: metodi virtual vs metodi non virtual class Base public: class Derived : public Base public: int method () return 0;} 0 virtual int v_method () return 0;} }; int method () return 1;} virtual int v_method () override return 1;} 1 }; std::shared_ptr<base> base = std::make_shared<derived>(); base->method() == 0 base->v_method() == 1
25 - Const correctness const dovrebbe essere la keyword più usata!! 1. Evita modifiche accidentali a variabili che non devono essere modificate const int a = 5; if (a = 6)...} // Errore di compilazione: a e' const 2. Comunica a chi legge il codice che l'oggetto non verrà modificato 3. Aiuta ad esprimere concetti nel codice 4. E' efficiente PIU' LEGGIBILITA' PIU' ESPRESSIVITA' PIU' EFFICIENZA MENO BUG
26 - Const correctness const dovrebbe essere la keyword più usata!! class A public: int getnumber () const return m_number; } private: int m_number = 10; }; void work_with_n_of_a (const A & a) int n = a.getnumber(); // Fa qualcosa con n } Attenzione! Senza il const non compila work_with_n_of_a(a());
27 - Const: altri utilizzi Puntatore ad un oggetto const auto a = std::make_shared<const Square>(); // a è di tipo std::shared_ptr<const Square> a->setcolor(blue); // Errore: *a è const a = std::make_shared<square>(); // OK Da non confondere con un puntatore const const auto a = std::make_shared<square>(); // a è di tipo const std::shared_ptr<square> a->setcolor(blue); // OK a = std::make_shared<square>(); // Errore: a è const
28 - Cast C double d = 100.0; int i = (int)d; GUAI A VOI auto d = 100.0; auto i = static_cast<int>(d); std::shared_ptr<base> b = std::make_shared<derived>(); auto d = std::static_ptr_cast<derived>(b); Attenzione! Solo se si sa che b è di tipo Derived, altrimenti non si sa cosa accade. In tal caso: std::shared_ptr<base> b = std::make_shared<derived>(); auto d = std::dynamic_ptr_cast<derived>(b); if (d) // cast andato a buon fine }
29 Filippo Basso - Array Java Square[] static_array = new Square[10]; Vector<Square> dyn_array = new Vector<Square>(); C GUAI A VOI Square static_array[10]; C++ boost::array<square, 10> static_array; std::vector<square> dyn_array; auto static_array = std::array<square, 10>(); auto dyn_array = std::vector<square>();
30 - Template Prossimamente
31 - Altro Namespace Struct Typedef namespace ns class Shape // qualcosa }; } ns::shape shape; struct Shape // qualcosa }; class Shape public: // qualcosa }; using T = int; T t = 5; typedef int T; T t = 5; #define T int T t = 5; EVITARE COME LA PESTE I #define C++ C
32 - Librerie Prima di implementare qualsiasi metodo che potrebbe esistere guardare: 1. STL [8] (namespace std::) 2. Boost [9] (namespace boost::) 3. ROS (namespace ros::) 4. Eigen (namespace Eigen::) 5. PCL (namespace pcl::) 6. OpenCV (namespace cv::)
33 References [1] Bjarne Stroustrup "The C++ Programming Language", 4th edition, Addison-Wesley, 2013 [2] Scott Meyers "Effective Modern C++", O'Reilly Media, 2014 [3] Andrei Alexandrescu "Modern C++ Design: Generic Programming and Design Patterns Applied", 2001 [4] Herb Sutter & Andrei Alexandrescu "C++ Coding Standards: 101 Rules, Guidelines, And Best Practices", Addison-Wesley, 2004 [5] [6] [7] [8] [9] [10] [11]
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
DettagliSommario. 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...
DettagliUNIVERSITA 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
DettagliC++ 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
DettagliAGGIORNAMENTI 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
DettagliCorso 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
DettagliInformatica 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
DettagliProgrammazione 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
DettagliUNIVERSITA 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.
DettagliAncora sulle Classi in C++ e Java. this
Ancora sulle Classi in C++ e Java this Classe: riepilogo gestione memoria ogg1: oggetto di invocazione del metodo ogg: parametro fornito al metodo!"# ogg1 ogg2 ogg metodoa metodob varv varw varx varv varw
DettagliLaboratorio 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
DettagliLa 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
DettagliInformatica 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)
DettagliFondamenti di Informatica
Programmazione modulare (top-down) Fondamenti di Informatica 15. Funzioni in C++ (parte 1) Problemi complessi Conviene suddividere il programma in sottoprogrammi piu semplici mediante la metodologia di
DettagliC++ 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
DettagliParte 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
DettagliIl 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
DettagliIntroduzione 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
DettagliIntroduzione al corso. Obiettivo del corso
Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Introduzione al corso Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio
DettagliRiuso 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
DettagliI/O da tastiera e direttive processore. Alessandra Giordani Lunedì 3 maggio
I/O da tastiera e direttive processore Alessandra Giordani agiordani@disi.unitn.it Lunedì 3 maggio 2010 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una
DettagliUtilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:
1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente
DettagliOCA 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
DettagliReti 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:
DettagliVariabili 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:
DettagliTemplate (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti
Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti int sumvector(int *array, int n) { int sum(0); for (int i = 0; i < n; ++i) sum
DettagliJava Native Interface Appunti
Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per
DettagliDati 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
DettagliFondamenti di Informatica II 3. Funzioni in C++ (parte 1)
Introduzione alle funzioni in C++ Fondamenti di Informatica II 3. Funzioni in C++ (parte 1) Corso di Laurea in Ingegneria Informatica A.A. 2008-2009 2 Semestre Corso (A-M) int main() int n, fattoriale=1;
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array 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 Corso di Laurea
DettagliIntroduzione 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
DettagliIntroduzione 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
DettagliLaboratorio 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
DettagliJAVA IL LINGUAGGIO. Ogni valore nel linguaggio ha un tipo Ogni variabile deve essere dichiarata ed associata ad un tipo:
JAVA IL LINGUAGGIO Tipi e variabili Ogni valore nel linguaggio ha un tipo Ogni variabile deve essere dichiarata ed associata ad un tipo: String greeting = "Hello, World!"; PrintStream printer = System.out;
DettagliI L IN I GU G AGG G I G O
JAVA IL LINGUAGGIO Tipi e variabili Ogni valore nel linguaggio ha un tipo Ogni variabile deve essere dichiarata ed associata ad un tipo: String greeting = "Hello, World!"; PrintStream printer = System.out;
DettagliINPUT: 2 parametri. double atan2( double y, double x) OUTPUT: risultato del calcolo. Le funzioni. Implementazioni di funzioni dell utente
Le funzioni in C++ (CAP 6) Alberto Garfagnini e Marco Mazzocco Università degli studi di Padova A.A. 14/15 Le funzioni Sono i mattoni fondamentali per la costruzione dei programmi in C++ (e C) Il prototipo
DettagliFunzioni, 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,
DettagliProgrammazione 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)
DettagliLa sintassi del C APPENDICE H
APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i
DettagliIl puntatore alla classe base e le funzioni virtuali
Polimorfismo Indice Le funzioni virtuali e il puntatore alla classe base Le funzioni virtuali pure Classi astratte: interfaccia Commenti sugli strumenti del C++ e l OOD Il puntatore alla classe base e
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliInformatica (A-K) 12. Linguaggio C -3
Introduzione alle funzioni in C Informatica (A-K) 12. Linguaggio C -3 int main() int i,n, fattoriale=1; printf( Inserire Numero: ); scanf( %d, &n); for (i =2; i
DettagliOCA JAVA 8 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 8 SE PROGRAMMER
DettagliIntroduzione 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
DettagliDal 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
DettagliEstendere Python in C
Marco Barisione Marco Barisione Estendere Python in C Perché estendere Python? La maggior parte del tempo di esecuzione è passata ad eseguire poche funzioni Queste funzioni scritte in Python potrebbero
DettagliProgrammazione ad Oggetti C++
Programmazione ad Oggetti C++ A5160039 Gianluigi Ciocca A.A. 2007-2008 Programmazione ad Oggetti Richiami (1) Elementi Fondamentali Astrazione Attenzione non su : come fare cosa Attenzione su : chi può
DettagliLaboratorio di Programmazione Lezione 4. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 4 Cristian Del Fabbro Prossima lezione Mercoledì 25 novembre ore 8:30-11:00 Classe Una classe descrive degli oggetti tramite: Proprietà/variabili/campi (dati/caratteristiche,
DettagliJAVA GENERICS. Angelo Di Iorio Università di Bologna
JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
DettagliProgrammazione ad oggetti
Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,
DettagliA. 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),
DettagliLaboratorio 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
Dettagli14 - 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
DettagliRiassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,
DettagliIl Linguaggio Java. Le interfacce
Il Linguaggio Java Le interfacce Ordinamento dei conti PROBLEMA: si vogliono ordinare i libretti di risparmio (SavingsAccount) in base al loro tasso di interesse REQUISITO: La classe dovrebbe essere ordinabile,
DettagliESPRESSIONI. Ivan Lanese
ESPRESSIONI Ivan Lanese Argomenti Espressioni Spaziatura e commenti Per domani Domani sarete divisi in 2 gruppi Il gruppo coi portatili qui in aula Controllate di essere in grado di avviare Eclipse sul
DettagliStringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10
Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe
DettagliOggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.
Classi e oggetti Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. OOP Vantaggi facilità di lettura e di comprensione
DettagliLa 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
DettagliEsempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
DettagliUn 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
DettagliNON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!
NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliBreve Ripasso del linguaggio C
Breve Ripasso del linguaggio C Michelangelo Diligenti Ingegneria Informatica e dell'informazione diligmic@diism.unisi.it Compilazione, linking, ecc sorgente oggetto librerie sorgente oggetto editor sorgente
DettagliVariabili e Costanti
Struttura di un Programma C++ Un programma descrive una sequenza di azioni ogni azione è descritta da una espressione un insieme di espressioni seguite da ; è un istruzione espressione = più piccola unità
DettagliStandard 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
DettagliDichiarazione di una classe. Dichiarazione ereditarietà
Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante
DettagliStringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14
Stringhe in C Nicu Sebe Informatica Nicu Sebe 1 / 14 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe
DettagliStrutture Dinamiche. Strutture Dinamiche
Corso di Informatica A Vito Perrone 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato)); Crea in memoria una variabile
DettagliCorso di Grafica Computazionale
Corso di Grafica Computazionale Note di C++ Docente: Massimiliano Corsini Laurea Specialistica in Ing. Informatica Università degli Studi di Siena Note Iniziali Il C++ non ha il concetto dei packages In
DettagliAlcuni errori tipici. Frammento 1
Alcuni errori tipici Frammento 1 Sulla gestione errori... Deve essere controllato l esito delle funzioni di libreria malloc-calloc non controllate! Mai fidarsi del valore dei parametri passati a una f.ne
DettagliIl primo programma C++
Il linguaggio C++ A better C Il linguaggio C++ nasce presso i laboratori di ricerca della AT&T Bell (Murray Hill, NJ) a partire dal 1979, ad opera di Bjarne Stroustrup. Rappresenta una estensione del linguaggio
DettagliAlgoritmi 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
DettagliIl 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;
DettagliEsercizi. La funzione swapint() primo tentativo
Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include
DettagliIndice. 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
DettagliPassaggio dei parametri
Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment
DettagliLa 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
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
DettagliOverloading - Overriding
1 Overloading - Overriding Overloading: Funzioni con uguale nome e diversa firma possono coesistere. move(int dx, int dy) move(int dx, int dy, int dz) Overriding: Ridefinizione di una funzione in una sottoclasse
DettagliUn tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo
TIPI DI DATO ASTRATTO Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo implica un dominio, D un insieme di operazioni ammissibili su oggetti
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Il meccanismo dell ereditarietà a.a. 2008/2009 Claudio De Stefano 1 L ereditarietà consente di definire nuove classi per specializzazione o estensione di classi preesistenti,
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliLettura 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
DettagliFile: /home/peppino/area_lavori/ese orgenti/oggetti/ohm_classe.cpp Pagina 1 di 5
File: /home/peppino/area_lavori/ese orgenti/oggetti/ohm_classe.cpp Pagina 1 di 5 * esempi_c++/sorgenti/ohm_classe.cpp * * Una classe semplice per applicare la legge di OHM * * @autore Giuseppe Talarico
DettagliOggetti 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)
DettagliPile: implementazione. Pile: implementazione. Pile: implementazione con array. Pile: implementazione con array. Pile: implementazione con array
Sommario Pile: Implementazione con Array Esempio: algoritmo per il controllo del bilanciamento delle parentesi. Tipi riferimento Pile: implementazione Si consideri ora la realizzazione della pila. Si sono
DettagliCapitolo 10 - Strutture
1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la
DettagliIntroduzione 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
DettagliIl creator di un oggetto è l entità (oggetto o funzione) che crea un oggetto. L owner di un oggetto è l entità responsabile della sua distruzione
Il creator di un oggetto è l entità (oggetto o funzione) che crea un oggetto L owner di un oggetto è l entità responsabile della sua distruzione Creator e owner in generale non coincidono class ExprParser
DettagliCompendio 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