Operatori E possibile ridefinire +, -, *, [], ++, ==, < class Vector2D { Friend operator+(const Vector2D& v1, const Vector2D& v2); public: Vector2D(double.

Slides:



Advertisements
Presentazioni simili
MATLAB.
Advertisements

Agenda di oggi Lavoro ed energia *Lavoro fatto da più forze costanti
Funzioni In C++ le funzioni sono caratterizzate da un nome, dal tipo della variabile ritornata e da una lista di parametri (opzionali) La lista dei parametri.
Funzioni Friend Come abbiamo visto non possiamo accedere a membri privati di una classe dall'esterno della classe. Ma a volte abbiamo bisogno di farlo.
Oggetti Java.
Linee guida per la programmazione
Elementi di Programmazione
MATLAB.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
SISSIS MODULO DI JAVA PER LA CLASSE IV DELL’ITI
Programmazione in Java (3)
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Calcolatori Elettronici III
Costruzione di Interfacce Lezione 12 C++STL
Introduzione al linguaggio C++ 5 lezioni
LA SCOMPOSIZIONE DI UN VETTORE
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Grafico di funzione Disegna la Matematica.
Soluzione Esercizio - Classe Vettore
BIOINGEGNERIA S. Salinari Lezione 5. Lalgoritmo di retropropagazione Premesse 1.Reti Duali Si definiscono reti duali reti per cui è verificata la seguente.
FISICA AMBIENTALE 1 Lezioni I cicli termodinamici.
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
Lab. Calc. AA 2005/061 Classi. Lab. Calc. AA 2005/062 C e C++ Fino a questo punto abbiamo introdotto gli elementi base di qualsiasi linguaggio di programmazione,
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 laboratorio di calcolo II AA 2003/04 quarta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Vettori e Funzioni 3 Maggio Esercizio 1 Si scriva un programma in linguaggio C che, dopo aver acquisito il contenuto di un vettore di interi da.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
Componenti A.Natali Marzo Oggetti u Un oggetto possiede stato, funzionamento e identita'. u Struttura e funzionamento di oggetti simili sono.
AN FI Array Array in Java. AN FI Array Dichiarazione di array in Java [ ]; //oppure u [] ; int a[]; int[] a; u La dimensione non è specificata.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (8)
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Esempio di esecuzione dellalgoritmo di Prim 1 v1v1 v5v5 v2v2 v3v3 v4v U = {v 1 } X =Ø 1 v1v1 v5v5 v2v2 v3v3 v4v U = {v.
Tipi di dati elementari
VARIABILI E COSTANTI INTEGER
Elementi di programmazione ad oggetti a. a. 2009/2010
Sistemi di riferimento
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Matrici: un’implementazione parametrica in C++
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
Scienze Tecniche per l’Immagine I Modulo Misure Elettriche AA Richiami sulle grandezze Elettriche Dr. Ing. Antonio Moschitta.
CORSO DI PROGRAMMAZIONE II Lezione 22
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Oggetti in C# Lezione 2 Metodi e Static Oggetti in C# - Lezione 2.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Pile e Code.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 11 Ereditarietà in C++
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Alberi.
Gestione dei thread in Java
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Strutture Dati.
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 5 -Test e verifica Ernesto Damiani Università degli Studi di Milano.
 2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 9 - Ereditarietà 1. Introduzione 2. Ereditarietà:classi base e classi derivate 3. Membri protetti.
ESERCITAZIONE Problema Scrivere una funzione che scambi due interi non opera su oggetti  funzione statica scritta dentro a una classe contenitore.
Metodo dei trapezi.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Transcript della presentazione:

Operatori E possibile ridefinire +, -, *, [], ++, ==, < class Vector2D { Friend operator+(const Vector2D& v1, const Vector2D& v2); public: Vector2D(double x, double y); double x() const; double y() const; double r() const; double phi() const; private: double x_; double y_; }; Vector2D operator+(const Vector2D& v1, const Vector2D& v2); Vector2D operator-(const Vector2D& v1, const Vector2D& v2); class Vector2D { Friend operator+(const Vector2D& v1, const Vector2D& v2); public: Vector2D(double x, double y); double x() const; double y() const; double r() const; double phi() const; private: double x_; double y_; }; Vector2D operator+(const Vector2D& v1, const Vector2D& v2); Vector2D operator-(const Vector2D& v1, const Vector2D& v2); Vector2D.h Vector2D operator+(const Vector2D& v1, const Vector2D& v2) { return Vector2D(v1.x + v2.x, v1.y + v2.y); } Vector2D operator-(const Vector2D& v1, const Vector2D& v2) { return Vector2D(v1.x - v2.x, v1.y - v2.y); } Vector2D operator+(const Vector2D& v1, const Vector2D& v2) { return Vector2D(v1.x + v2.x, v1.y + v2.y); } Vector2D operator-(const Vector2D& v1, const Vector2D& v2) { return Vector2D(v1.x - v2.x, v1.y - v2.y); } Vector2D.cpp

Operatori (2) E possibile ridefinire anche loutput e linput: cioè gli operatori > class Vector2D { friend operator <<(ostream & os, const Vector2D& v); friend operator >>(istream & is, const Vector2D& v); public: Vector2D(double x, double y); double x() const; double y() const; double r() const; double phi() const; private: double x_; double y_; }; class Vector2D { friend operator <<(ostream & os, const Vector2D& v); friend operator >>(istream & is, const Vector2D& v); public: Vector2D(double x, double y); double x() const; double y() const; double r() const; double phi() const; private: double x_; double y_; }; Vector2D.h Vector2D Vector2d::operator <<(ostream & os, const Vector2D& v) { os<<(<<x<<,<<y<<); return os; } Vector2D Vector2d::operator >>(istream & is, const Vector2D& v) { is>>x; is>>y; return is; } Vector2D Vector2d::operator <<(ostream & os, const Vector2D& v) { os<<(<<x<<,<<y<<); return os; } Vector2D Vector2d::operator >>(istream & is, const Vector2D& v) { is>>x; is>>y; return is; } Vector2D.cpp

Operatori (3) Esempio: #include #include Vector2D.h int main() { Vector2D v1(1, 0), v2(0, 1); Vector2D v; v = v1 + v2; cout << v = << v << endl; cout << r = << v.r(); cout << phi = << v.phi() << endl; } #include #include Vector2D.h int main() { Vector2D v1(1, 0), v2(0, 1); Vector2D v; v = v1 + v2; cout << v = << v << endl; cout << r = << v.r(); cout << phi = << v.phi() << endl; } main.cc v = (1, 1) r = theta = Output : ridefinizione di << v.operator=( operator+(v1, v2) ); Sintassi alternativa :

I/O con files E possibile definire altre unità di I/O –Si utilizza la libreria fstream (include iostream ) –I files di input sono dichiarati ifstream –I files di output sono dichiarati ofstream –I files di input/output sono dichiarati fstream –Costruttore con argomento const char* (nome file) //Un file va prima aperto: fstream miofile; miofile.open (dati.txt, ios_base::out); // poi posso scriverci sopra qualcosa miofile<<ciao<<endl; // alla fine lo devo chiudere miofile.close(); Un file puo esssere aperto: ios_base::out // in scritttura ios_base::in // in lettura ios_base::app // in append (scrive alla fine del file)

I/O con files Posso posizionarmi in un punto qualsiasi del file prima di leggere o scrivere con le istruzioni: miofile.seekg (5) si posiziona nella posizione 5 del file per leggere miofile.seekp (8) si posiziona nella posizione 8 del file per scrivere. miofile.eof() // restituisce true se sono arrivato alla fine del file miofile.fail() // restituisce true se ho fallito ad aprire il file (il file non esiste o il disco è protetto in scrittura)

Appendice: Manipolatori di I/O Modificano il comportamento di una stream. boolalpha : true e false rappresentati come stringhe noboolalpha : true e false rappresentati come 1 e 0 (default) showbase : interi stampati col prefisso che indica la base noshowbase : interi stampati senza il prefisso (default) showpoint : floating point stampati sempre col punto decimale noshowpoint : stampa i floating point come interi se non frazionari (default) showpos : stampa + per numeri positivi noshowpos : non stampa + per i numeri positivi (default) skipws: salta gli spazi bianchi in input (default) noskipws : non salta gli spazi bianchi in input uppercase : stampa 0X in esadecimale, E in scientifica lowercase : stampa 0x oppure e (default) dec : interi in base 10 (default) hex : interi in base 16 oct: interi in base 8

Appendice: Manipolatori di I/O (2) I seguenti manipolatori richiedono: #include left : aggiunge caratteri di riempimento alla destra del val. right : aggiunge caratteri di riempimento alla sinistra internal : aggiunge caratteri fra segno e valore fixed : floating point in notazione decimale (default) scientific : floating point in notazione scientifica flush : svuota il buffer ends : aggiunge il carattere nullo ( \0 ) e svuota il buffer endl : aggiunge un newline e svuota il buffer ws : mangia gli spazi bianchi setfill(ch) : definisce il carattere di riempimento setprecision(n) : definisce la precisione per i floating point setw(n) : scrive o legge in n caratteri setbase(b) : interi in base b

Esempio di I/O con manipolatori #include int main() { cout << "inserisci un numero: "; double num=0; while(cin >> num) { int pi = (int)(num); cout << setfill('0') << setprecision(5); cout << "Il numero inserito e\' " << num << endl; cout << "La parte intera e\' " << pi << "(" << hex << setw(6) << pi << " esadecimale)" << dec << endl; cout << "La parte frazionaria e\' " << num-pi << endl; cout << "inserisci un numero: "; } return 0; } inserisci un numero: Il numero inserito e' La parte intera e' 12345( esadecimale) La parte frazionaria e' inserisci un numero: