Corso di Programmazione ad Oggetti
|
|
- Aurelia Valentino
- 7 anni fa
- Visualizzazioni
Transcript
1 Corso di Programmazione ad Oggetti Funzioni e classi friend Overloading di operatori aa 2008/2009 Claudio De Stefano 1
2 Le funzioni friend Nella definzione di una classe è possibile elencare quali funzioni, esterne alla classe, possono accedere ai memebri privati della classe Queste funzioni sono dette friend (amiche) Per dichiarare una funzione friend è necessario includere il prototipo nella classe, facendola precedere dalla parola chiave friend: class Myclass friend Tipo funz(); ; Le funzioni friend sono particolarmente utili quando due o più classi contengono membri correlati con altre parti del programma 2
3 Le funzioni friend: Esempio class Myclass int a,b; public: void set_ab(int i, int j) friend int sum(myclass x); ; main() Myclass n; nset_ab(2, 4); cout<<sum(n); Myclass::set_ab(int i, int j) a = i; b = j; // sum non è membro della classe int sum(myclass x) return xa + xb; La funzione Sum non è membro della classe, ma essendo friend può accedere ai suoi membri privati 3
4 Le classi friend In C++ è anche possibile rendere un'intera classe friend di un'altra classe In tal caso tutte le funzioni della classe dichiarata friend avranno accesso ai membri privati della classe La dichiarazione di classe friend è del tipo: class C1 friend class C2; ; Osserviamo che le funzioni membro di C2 possono accedere ai membri di C1 e non viceversa 4
5 Overloading degli operatori Il meccanismo di overloading degli operatori consente di attribuire ulteriori significati agli operatori del linguaggio In C++ è possibile eseguire l'overloading della maggior parte degli operatori, per consentire loro di svolgere operazioni specifiche rispetto a determinate classi l'overlading di un operatore, estende l'insieme dei tipi al quale esso può essere applicato, lasciando invariato il suo uso originale L'overloading degli operatori consente di integrare meglio le nuove classi create dall'utente nell'ambiente di programmazione L'overloading degli operatori è alla base delle operazioni di I/O del C++ 5
6 Overloading degli operatori L'overlaoding degli operatori viene realizzato per mezzo delle funzioni operator Un funzione operator definisce le specifiche operazioni che dovranno essere svolte dall'operatore sovraccaricato (overloaded) rispetto alla classe specificata Ci sono due modi per sovraccaricare un operatore Tramite funzioni membro della classe; Tramite funzioni esterne che però devono esseredefinite friend per la classe 6
7 Funzioni operator membro Le funzioni operator membro di una classe hanno la seguente froma generale: Tipo nome-classe::operator#(tipo1 arg1, Tipo2 arg2, ) // istruzioni dove # è il simbolo dell'operatore da sovraccaricare Nella maggior parte dei casi le funzioni operator restituiscono un oggetto della classe su cui operano, ma in generale possono restituire qualsiasi tipo valido Quando si esegue l'overloading di un operatore binario, la funzione operator ha un solo argomento, mentre se l'operatore è unario la funzione non ha argomenti 7
8 Overloading degli operatori: le regole da seguire È possibile modificare il significato di un operatore esistente; Non è possibile creare nuovi operatori e non e opportuno ridefinire la semantica di un operatore applicato a tipi predefiniti; Non è possibile cambiare precedenza, associatività e arity (numero di operandi); non è possibile usare argomenti di default 8
9 Il comportamento del compilatore L'overloading degli operatori viene realizzato dal compilatore Il compilatore, quando incontra un espressione della forma x op y verifica nell ordine: se nella classe X dell oggetto x vi è una funzione membro della forma operator op(y), dove Y indica il tipo dell oggetto y; se vi è una funzione non membro della forma operator op(x, Y) se una delle due condizioni è verificata provvede ad invocare la funzione individuata, altrimenti segnala un errore 9
10 Funzioni operator membro: esempio class Complex float re; float im; public: Complex(float r=00, float i=00) re=r; im=i;; float getre() const return re; ; float getim() const return im; ; void setre(float r) re=r; ; void setim(float i) im=i; ; void show(); Complex operator+(complex op2); ; void Complex::show() cout<<endl<< re: <<re<< im: <<im; Complex Complex::operator+(Complex op2) Complex tmp; tmpre = re + op2re; tmpim = im + op2im; return tmp; 10
11 Funzioni operator membro: esempio main() Complex c1, c2(1, 1), c3(4,5); c1show(); c2show(); c3show(); c1 = c2 + c3; c1show(); output >> re: 0 im: 0 >> re: 1 im: 1 >> re: 4 im: 5 >> re: 5 im: 6 NOTA c1 = c2 + c3; diventa c1 = c2operator+(c3) 11
12 Funzioni operator: alcune osservazioni quando si esegue l'oveloading di un operatore binario è l'oggetto di sinistra a generare la chiamata alla funzione operator l'operatore di assegnamento può essere usato solo perchè operator+ restituisce un oggetto della classe Complex La funzione operator+ NON modifica gli operandi In generale, è opportuno definire sempre delle funzioni operator che non modificano gli operandi, in analogia con gli operatori standard 12
13 Altri operatori Complex Complex::operator-(Complex op2) Complex tmp; tmpre = re - op2re; tmpim = im - op2im; return tmp; poiché è l'oggetto di sinistra a generare la chiamata a operator- i dati di op2 devono essere sottratti a quelli dell'oggetto chiamante, al fine di conservare la semantica della sottrazione Complex Complex::operator++() re++; im++; return *this In questo modo si definise l'operatore prefisso di incremento l'operatore non ha parametri perchè è un operatore unario In questo caso viene modificato l'operando 13
14 Altri operatori: esempio d'uso main() Complex c1(1,2), c2(3,5), c3(9,9); c1show(); c2show(); ++c1; c1show(); c2 = ++c1; c1show(); c2show(); c1 = c2 c3; c1show(); output >> re: 1 im: 2 >> re: 3 im: 5 >> re: 2 im: 3 >> re: 3 im: 4 >> re: 3 im: 4 >> re: -6 im: -5 14
15 L'operatore di assegnamento L'operatore di assegnamento viene usato in tutte le espressioni in cui è presente il segno = L'assegnamento di default effettua un copia bit a bit Pertanto l'overloading è necessario per le classi che hanno un'estensione dinamica Deve essere una funzione membro Ha la forma: const C& operator=(const C&) L operatore di assegnamento deve consentire assegnazioni multiple a=b=c 15
16 L'operatore di assegnamento: esempio Complex Complex::operator=(Complex op2) re = op2re; im = op2im; return *this; NOTA l'operatore restituisce *this ovvero l'oggetto che ha generato la chiamata Questo accorgimento rende possibile assegnamenti multipli del tipo: c1 = c2 = c3; 16
17 Operatori di incremento postfissi Per definire operatori di incremento(decremento) postfissi bisogna usare la forma: nome_classe nome_classe::operator++(int x) // istruzioni Nell'esempio precedente avremo: Complex Complex::operator++(int x) re++; im++; return *this; 17
18 Overloading delle forme abbreviate È possibile effettuare anche l'overloading delle forme abbreviate degli operatori, tipo: +=, *=, -= ecc Esempio Complex Complex::operator+=(Complex op2) im += op2im; re += op2re; return *this; main c1, c2(1,1); c1 +=c2; 18
19 Overloading tramite funzioni friend Come detto in precedenza l'ooveloading può essere eseguito anche per mezzo di funzioni non membro, ma definite friend per la classe in esame Nel caso delle funzioni friend il numero di argomenti coincide con il numero di operandi 19
20 Overloading tramite funzioni friend: esempio class Complex friend Complex operator+(complex op1, Complex op2); friend Complex operator++(complex op); ; Complex operator+(complex op1, Complex op2) Complex tmp; tmpre = op1re + op2re; tmpim = op1im + op2im; return tmp; Complex operator++(complex &op) ++opre; ++opim; return *this; 20
21 Confronto tra operatori membro e funzioni friend Le funzioni friend offrono in generale maggiore flessibilità Consideriamo il caso in cui alla classe Complex sia stata definita un'ulteriore funzione membro operator+ che prende come operando un intero: class Complex Complex operator +(float val); ; Complex operator+(float val) Complex tmp; tmpre = re +val; tmpim = im +val; return tmp; Main() Complex c1, c2; c2 = c ; // OK c1 = c1; // ERRORE! 21
22 Confronto tra operatori membro e funzioni friend È possibile rimediare al problema visto in precedenza in questo modo: class Complex friend Complex operator +(Complex op, float val); friend Complex operator +(float val, Complex op); ; Complex operator+(complex op, float val) Complex tmp; tmpre = opre +val; tmpim = opim +val; return tmp; Complex operator+(float val, Complex op) Complex tmp; Main() Complex c1, c2; c2 = c ; // OK c1 = c1; // OK tmpre = opre +val; tmpim = opim +val; return tmp; 22
23 Overloading degli operatori di stream se si vuole permettere il flusso su stream della propria classe, e` necessario ricorrere ad una funzione ordinaria, perche` il primo argomento degli operatori di shift non e` una istanza della classe class Complex public: private: float Re, Im; ; friend ostream& operator<<(ostream& os,complex C); friend istream& operator>>(istream& in,complex& C); 23
24 Overloading degli operatori di stream ostream& operator<<(ostream& os, Complex op) os << opre; if (opim > 0) os << + ; else if (opim < 0) o s<< - ; os << opim; return os; istream& operator>>(istream& in, Complex &op) Complex tmp; in >> tempre; in >> tempim; op = temp; return in; 24
25 Overloading degli operatori di stream void main() Complex c1, c2, c3; cout << "\n inserisci il primo operando: "; cin >> c1; cout << "\n inserisci il secondo operando: "; cin >> c2; c3 = c1 + c2; cout << c3; cout << "\n"; cout << c3; Equivale operator<<(cout,c3); cin >> c1; Equivale operator>>(cin,c3); 25
26 Un esempio oveloading di operatori: la classe string La libreria standard del C++ mette a disposizione la classe standard string per la gestione delle stringhe Proprio grazie all'oveloading degli operatori, questa classe rende molto semplice l'uso delle stringhe Un altro aspetto importante di questa classe è che la lunghezza della stringa non deve essere dichiarata a priori Ecco l'elenco degli operatori sovraccaricati delle corrispondenti funzioni C della libreria stringh = ==, <, >, <=, >=,!= <<, >> +, += 26
27 La classe string: esempi d'uso #include <iostream> #include <string> using namespace std; main() string s1( alfa ), s2( beta ), s3( omega ), s4, s5; char *C_str = ciao ; // questa è una stringa stile C s4 = s1; // assegnamento tra stringhe s4 = s1 + s2 // assegna a s4 il concatenamento di s1 e s2 s4+= s3; // concatena s4 a s3 s4 = s s2; // 27
28 operatori di concatenamento e assegnazione Usando gli operatori sovraccariricati =, + e += le operazioni di assegnamento e concatenazione diventano immediate: s4 = s1; // assegnamento tra stringhe s4 = s1 + s2 // assegna a s4 il concatenamento di s1 e s2 s4+= s3; // concatena s4 a s3 s4 = s s2; // s1 = questa è una stringa chiusa dal carattere nullo ; s3 = s1 + pippo ; s3 = pippo + s1; // ERRORE! s4 = C_str; // si possono usare stringhe classiche 28
29 Operatori di confronto Anche le operazioni di confronto sono immediate: if (s1 > s2) cout<<endl<< s2 precede s1 ; if (s1 == s2 ) cout<<endl<< le stringhe s1 e s2 sono uguali ; Così come le opreazioni di I/O cout<<endl<< introdurre una stringa: ; cin>> s4; cout<<endl<<s5; 29
30 Alcune osservazioni Le dimensioni delle stringhe non sono specificate Gli oggetti di tipo string vengono dimensionati automaticamente per contenere la stringa fornita Pertanto quando si assegnano o concatenano stringhe le dimensioni della stringa destinazione cresceranno automaticamente per contenere la nuova stringa Questa gestione dinamica evita tutti gli errori delle gestione delle stringhe del C dovuti al superamento degli array 30
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 27 Ottobre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 27 Ottobre 2014 1 AVVISO Nuovo calendario turni di laboratorio : I prova: 11, 12, 13 Novembre 2014 ore 9-12 II prova: 18, 19, 20 Novembre 2014 ore
DettagliOverloading di Operatore
Overloading di Operatore Perche' In C++ si creano e manipolano dei tipi di dato creati dall utente (il programmatore) Il C++ mette a disposizione degli strumenti per creare e distruggere gli oggetti creati
DettagliEreditarietà. 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
DettagliEspressioni ed operatori in C
Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere
DettagliEspressioni ed operatori in C
Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout
DettagliStruttura di un programma C++
Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout
DettagliL 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
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
Dettaglicout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni int n, ris; cout n; ris = n*2; cout
DettagliCorso 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
DettagliPROGRAMMIAMO Classi predefinite standard: la classe string C++ - Il contenitore string C++ Home Contatti Così come le funzioni di library standard del C++ mettonoa disposizione del programmatore codice
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
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Costruttori di copia, funzioni di accesso e variabili static aa 2008/2009 Claudio De Stefano Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 1
DettagliIl C nel C++ Struttura di un linguaggio. regole per la definizione i simboli. regole per la composizione dei simboli
Il C nel C++ Struttura di un linguaggio Livello lessicale: regole per la definizione i simboli Livello sintattico: regole per la composizione dei simboli Livello semantico: significato delle strutture
DettagliInformatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande/ VERSIONE 1 1) Nell uso dei puntatori in C++ la scrittura -> vuol dire: a) riferimento
DettagliStruttura di un linguaggio
Il C nel C++ Struttura di un linguaggio Livello lessicale: regole per la definizione i simboli Livello sintattico: regole per la composizione dei simboli Livello semantico: significato delle strutture
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
DettagliUniversità 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
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
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
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliTipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:
Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere
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
DettagliLaboratorio di Algoritmi e Strutture Dati. Esercizi
Laboratorio di Algoritmi e Strutture Dati Esercizi Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro 1 Operatori Indispensabili Ogni Classe che
DettagliNel seguito, istruzione1 e istruzione2 possono essere un blocco di codice { }, cioè più istruzioni
INTRODUZIONE A C++ Nel seguito, istruzione1 e istruzione2 possono essere un blocco di codice, cioè più istruzioni Istruzione - Esempi Significato int a; float f; double d; char c; int x=0; variabile =
DettagliC: 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
DettagliCorso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 24 Ottobre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 24 Ottobre 2014 1 Una funzione membro importante: il costruttore In logica OOP l accesso allo stato interno di un istanza deve avvenire solo attraverso
DettagliStrutture come parametri di funzioni
Strutture come parametri di funzioni int main() { struct PolReg { int numlati; float lunghezzalato; PolReg p1; p1.numlati = 3; p1.lunghezzalato = 10.0; float perimetro = p1.numlati * p1.lunghezzalato;
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
DettagliQualsiasi programma in C++ segue lo schema: Variabili
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
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
DettagliLe stringhe in C++ Utilizzo della classe string in un programma C++ Alessandro Bugatti 31 ottobre 2007
Le stringhe in C++ Alessandro Bugatti 31 ottobre 2007 Tutto dovrebbe essere fatto nel modo più semplice possibile, ma non più semplicemente di così. Albert Einstein Le stringhe nel linguaggio C vengono
DettagliLinguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi
DettagliTipi 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
DettagliLezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
DettagliPuntatori 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
DettagliPer fare riferimento ad un elemento, specificare il nomedel vettore. numerodi posizione(indice)
Vettore(Array monodimensionale) Sequenza di posizioniconsecutive (o locazioni di memoria) che vengono chiamate elementi del vettore Gli elementi hanno tutti lo stesso nomee sono tutti dell stesso tipo
DettagliIL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace
IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei
DettagliUniversità degli Studi di Milano
Università degli Studi di Milano Corso di Laurea in Sicurezza dei Sistemi e delle Reti Informatiche Lezione 3 Input/Output elementare. Operatori, espressioni e istruzioni FABIO SCOTTI Laboratorio di programmazione
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
DettagliIL LINGUAGGIO C TIPI DI DATO
IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei
DettagliIL LINGUAGGIO C TIPI DI DATO
IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei
DettagliSi possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).
Operatori di incremento e decremento: ++ e -- ++ e -- sono operatori unari con la stessa priorità del meno unario e associatività da destra a sinistra. Si possono applicare solo a variabili (di tipi interi,
DettagliString. String: Esercizio 1
1 String class String { private: // VARIABILI DI ISTANZA char * base; int length;... 2 String: Esercizio 1 Scrivere e testare i metodi di base: a. i costruttori String(), String(char * s), b. il distruttore.
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
DettagliUn elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char
IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura tt fisica i di ogni elaboratore è intrinsecamente capace di trattare vari domini i di dati, detti tipi i primitivi iti
DettagliElementi di Informatica A. A. 2016/2017
Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 1
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x
DettagliDefinizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
DettagliIl potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliIntroduzione al linguaggio C Funzioni
Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliEspressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!
Espressioni Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Valutazione automatica di expr aritmetiche = obiettivo primario dei primi LP
DettagliOggetti. Definizioni di Classi II
Programmazione a Oggetti Definizioni di Classi II Sommario Costruzioni di oggetti Campi e metodi di classe Overloading Istanziazione di oggetti Costruzione di un oggetto Processo complesso che comprende
DettagliClasse Squadra. #include <iostream> using namespace std;
Classe Squadra Si vuole scrivere un programma che gestisce la classifica di un campionato tra squadre di calcio, ognuna identificata dal proprio nome. Il programma deve essere in grado di assegnare un
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)
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;
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliOverloading degli operatori
Overloading degli operatori Indice L overloading degli operatori Restrizioni sull overloading degli operatori L overloading degli operatori: le funzioni membro L overloading degli operatori: le funzioni
DettagliProgrammazione a Oggetti Lezione 8. Definizioni di Classi II
Programmazione a Oggetti Lezione 8 Definizioni di Classi II Sommario Costruzione di un oggetto Processo complesso che comprende varie fasi: 1. Allocare spazio per ogni campo - in ordine testuale - inizializza
DettagliOOP 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
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliEsercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
DettagliFondamenti di C++ Input/Output di base
Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Fondamenti di C++ Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio
DettagliParametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi
Funzioni Introduzione Operatori & e * Passaggio by reference Passaggio di vettori Esercizio strcpy 2 Passaggio dei parametri Il linguaggio C prevede il passaggio di parametri by value Il chiamato non può
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,
DettagliMETODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi
Fondamenti di Informatica METODI in Java Prof.Angela Bonifati 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile definire nuovi tipi di dati, tramite i metodi è possibile
DettagliOverloading di operatori
Overloading di operatori In C++ è possibile effettuare l overloading degli operatori per utilizzarli sugli oggetti delle classi definite dagli utenti complex.h class Complex { double m_re, m_im; public
DettagliSTRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come
DettagliFACOLTÀ DI INGEGNERIA
UNIVERSITÀ DEGLI STUDI DI PISA FACOLTÀ DI INGEGNERIA Tipi di Dati Comuni testa fondo Giuseppe Anastasi Anno Accademico 1999-2000 Tipi di Dati Comuni 1. Tipo di Dato Astratto Un tipo è individuato da due
DettagliConcetto 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
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliCorso di Programmazione a oggetti
Corso di Programmazione a oggetti Overloading delle funzioni e parametri di default a.a. 2014/2015 Francesco Fontanella Overloading delle funzioni In C++, è possibile dare a funzioni diverse lo stesso
DettagliParametri passati per indirizzo. Puntatori Vogliamo modificare la parte del codice di bubble che realizza lo scambio dei valori:
Parametri passati per indirizzo. Puntatori Vogliamo modificare la parte del codice di bubble che realizza lo scambio dei valori: tmp = a[j-1]; a[j-1] = a[j]; a[j] = tmp; sostituiamo questa riga con un
DettagliInformatica! Appunti dal laboratorio 1!
Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti
DettagliDefinizione di classi
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere
DettagliIntroduzione 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
DettagliValutazione di espressioni
Valutazione di espressioni Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Blocco Blocco è un insieme di istruzioni consecutive, con un
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
DettagliInformatica AA 2005/06. Programmazione M.A. Alberti. Operatori in Java 1. Operatori in Java. Espressioni aritmetiche. Espressioni booleane
Operatori in Java Operatori in Java Corso di laurea in Informatica Operatori aritmetici Operatori di uguaglianza e relazionali Operatori logici in espressioni booleane La precedenza degli operatori L associatività
DettagliLINGUAGGI DI PROGRAMMAZIONE!
LINGUAGGI DI PROGRAMMAZIONE! Il potere espressivo di un linguaggio è! caratterizzato da:! quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente)! quali istruzioni
DettagliStruttura dei programmi C
Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University
DettagliIntroduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
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...
Dettagli#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
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
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Puntatori a funzioni 1 Funzioni che restituiscono puntatori Il valore di ritorno restituito da una funzione può essere di qualsiasi tipo, compreso il tipo puntatore.
Dettagli