Fondamenti Fondamenti di Informatica Informatica
Transcript
Fondamenti Fondamenti di Informatica Informatica
Storia del C e C++ Linguaggio C ❍ 1972, nato come evoluzione di due linguaggi Fondamenti di Informatica BCPL e B – Lingaggi senza nozione di “tipo di dati” ❍ C++: Introduzione, Introduzione, Tipi di Dato Fondamentali Fondamentali,, Variabili ❍ ❍ Dennis Ritchie (Bell Laboratories) Linguaggio di sviluppo di Unix Indipendente dall’Hardware Portabilità Prof. Francesco Lo Presti ❍ ❍ 1989: standard approvato 1990: pubblicato standard ANSI e ISO ANSI/ISO 9899: 1990 Storia del C e C++ 2 C++: Introduzione 4 Un Primo Esempio Linguaggio C++ ❍ Inizio anni ‘80: Bjarne Stroustrup (Bell Laboratories) ❍ Estensione del C ❍ Fornisce funzionalità per la programmazione orientata agli oggetti // Programma di Esempio Hello, World! #include <iostream> using namespace std; Oggetti: componenti software riusabili – Modellano entità del mondo reale Programmi objectobject-oriented – Migliore stile di programmazione – Facilità nel modificare/correggere programmi ❍ C++: Introduzione int main( ) { cout << "Hello, World!\n"; return 0; } Linguaggio--Ibrido Linguaggio Si può usare uno stile CC-like Si può usare uno stile ObjectObject-oriented Si possono usare entrambi gli stili C++: Introduzione 3 Un Primo Esempio Un Primo Esempio // Programma di Esempio Righe che iniziano con // vengono considerate righe di commento. Non hanno nessun effetto sul programma // Programma di Esempio #include <iostream> Direttive. Le frasi che iniziano con il simbolo cancelletto (#) sono direttive per il preprocessore del compilatore. La direttiva include richiede l’inclusione del file iostream.h che contiene le dichiarazioni delle operazioni basilari di I/O definite nella libreria standard #include <iostream> using namespace std; int main( ) { cout << "Hello, World!\n"; return 0; using namespace std; int main( ) { cout << "Hello, World!\n"; return 0; La funzione main e’ il punto da cui inizia l’esecuzione di un programma C++ } istruzioni Stringa: una sequenza di caratteri racchiusi tra virgolette “” Ogni istruzione termina con un punto e virgola ; Costante numerica (intero) } C++: Introduzione Le Fasi della Programmazione L’effetto dell’operatore << e’ quella di inserire una sequenza di caratteri (“Hello, World!\n”) nel flusso. newline – andare a capo return X fa terminare la funzione e restituisce il valore X tipo restituito nome funzione (lista arg) { cout e’ il flusso standard di output del C++ (di solito indirizzato allo schemo). \n: Escape Sequence } Definizione di funzione: main( ) restituisce un valore intero I nomi del programma appartengono allo spazio dei nomi std 5 // Programma di Esempio Costante stringa C++: Introduzione 6 Ambiente Integrato di Programmazione #include <iostream> using namespace std; 1. Scrittura del programma ❍ IDE (Integrated (Integrated Development Environment) Environment) ❍ Ambiente per la stesura, compilazione e debugging di programmi int main() { Codice sorgente 2. Compilazione del codice sorgente ❍ File oggetto cout << "Hello, World!\n"; return 0; } 3. Collegamento (linking) ❍ “Collega” il codice oggetto con il codice delle librerie Librerie contengono il codice delle funzioni invocate dal programma ❍ Codice eseguibile 4. Caricamento ed Esecuzione Codice Sorgente Compilatore Programma Oggetto Linker Programma Eseguibile ❍ Librerie C++: Introduzione 7 Useremo Code:: Code::Blocks Blocks (link sul sito del corso) C++: Introduzione 8 …oppure 1. …oppure Scrivere il codice usando un semplice editor di testo ❍ 2. Compilare il file sorgente da linea di comando g++ -o hello hello.cpp E.g., Blocco Note C++: Introduzione 9 C++: Introduzione …oppure Errori 3. Eseguire il programma da linea di comando Errori di Sintassi: Errori a tempo di compilazione ❍ Il codice sorgente viola le regole di sintassi hello 10 // Programma di Esempio #include <iostream> using namespace std; int main( ) { cout << "Hello, World!\n ; return 0 } C++: Introduzione 11 C++: Introduzione 12 Errori Inizio Il Ciclo ModificaModifica-CompilaCompila-Debug Modifica del Programma Errori Logici: Errori a tempo di esecuzione ❍ Il programma non svolge il compito desiderato // Programma di Esempio Compilazione #include <iostream> Errori di Compilazione using namespace std; int main( ) { Test del Programma cout << "Hell, World!\n”; return 0; Errori a } runtime C++: Introduzione Un Programma che Elabora Numeri #include <iostream> using namespace std; FineC++: Introduzione 13 14 Un Programma che Elabora Numeri #include <iostream> Total value = 1.23 using namespace std; int main() int main() { { Dichiarazione di variabili int pennies = 8; int pennies = 8; int dimes = 4; int dimes = 4; int quarters = 3; int quarters = 3; Operatore di assegnazione double total = pennies * 0.01 + dimes * 0.10 double total = pennies * 0.01 + dimes * 0.10 Costante numerica (virgola mobile) + quarters * 0.25; /* valore totale delle monete */ + quarters * 0.25; /* valore totale delle monete */ cout << "Total value = " << total << "\n"; cout << "Total value = " << total << "\n"; return 0; return 0; } } Sintassi alternativa per i commenti /* commento */ C++: Introduzione 15 C++: Introduzione 16 Costanti Costanti Una costante è una qualsiasi espressione che ha un Caratteri valore prefissato ❍ ‘x’, ‘T’,’1’ Stringhe “Salve gente”, “Hello, World”, “”, “x” Numeri interi, Numeri in virgola mobile, Caratteri, Stringhe Numeri Interi ❍ Decimali: ❍ Esadecimali Si premette 0x 75 75 -23 -23 0x4b 75 I letterali che rappresentano caratteri sono racchiusi da carattere apice (‘) Sequenze di letterali che rappresentato stringhe sono racchiusi da tra due caratteri doppio apice (“) Numeri in virgola mobile ❍ Numeri con parte frazionaria e/o fattore esponenziale 3.1456 3.1456 6.02e23 6.02·1023 1.6e-19 1.6·10-19 C++: Introduzione Variabili 17 memoria, identificati da un nome nome,, che possono conservare valori di un determinato tipo Ciascuna variabile deve essere definita indicandone tipo e nome Una variabile puo’ contenere soltanto valori del suo stesso pennies tipo dimes Nella definizione di una variabile, variabile, quarters e’ possibile assegnarle un valore iniziale total 18 I Nomi delle Variabili … int pennies = 8; Le variabili sono spazi di C++: Introduzione Identificatore Identificatore:: sequenza di lettere, numeri e simbolo di int dimes = 4; sottolineatura “_” int quarters = 3; … ❍ Deve iniziare con una lettera ❍ Non puo’ essere una parola o simbolo riservato del linguaggio ❍ Non puo’ contenere spazi 5pennies non va bene Memoria return non va bene Pen nies non va bene Nomi validi ❍ 8 ❍ 4 3 Case sensitive: maiuscole e minuscole vengono considerate diverse 1.23 C++: Introduzione pippo, pluto, ciao5, salve_a_tutti E’ bene scegliere nomi che descrivano adeguatamente il contenuto della variabile ❍ 19 Pippo e pippo sono due variabili diverse C++: Introduzione 20 Dichiarazione di variabili Dichiarazione di variabili Prima di usare una variabile occorre dichiararla Una volta dichiarate le variabili possono essere specificando a quale tipo di dato essa appartenga Sintassi usate nel programma all’interno del loro campo di validita’ (scope) ❍ nomeTipo nomeVariabile; E’ possibile dichiare piu’ variabili nomeTipo nomeVariabile = espressione; contemporaneamente indicando una sola volta il tipo Definire una nuova variabile nomeVariabile nomeVariabile,, di tipo nomeTipo nomeVariabile1, …, nomeVariabileN; nomeTipo, ed eventualmente assegnarle il valore nomeTipo, … iniziale espressione ❍ Altrimenti la variabile ha un valore iniziale indefinito Tratteremo questo aspetto in seguito nomeTipo nomeVariabile1=espressione1, …, nomeVariabileN=espressioneN; int pennies = 8; … int dimes = 4; int pennies = 8, dimes = 4, quarters = 3; int quarters = 3; double total = pennies * 0.01 + dimes * 0.10 double total = pennies * 0.01 + dimes * 0.10 + quarters * 0.25; /* valore totale delle monete */ + quarters * 0.25; /* valore totale delle monete */ … C++: Introduzione … 21 L’Assegnazione C++: Introduzione 22 L’Assegnazione Abbiamo visto come i programmi usino le variabili #include <iostream> per memorizzare i valori da elaborare e i risultati dell’elaborazione Le variabili sono posizioni in memoria che possono conservare valori di un determinato tipo Il valore memorizzato in una variabile puo’ essere inizializzato,, ma anche modificato durante inizializzato l’esecuzione di un programma Il cambiamento del valore di una variabile si ottiene con un enunciato di assegnazione using namespace std; int main() { int pennies = 8; double total= pennies*0.01; total viene definito ed inizializzato int dimes = 4; total=total+ dimes * 0.10; total viene modificato int quarters = 3; total=total+ quarters * 0.25; cout << "Total value = " << total << "\n"; return 0; } C++: Introduzione 23 C++: Introduzione 24 L’Assegnazione L’Assegnazione Sintassi … nomeVariabile = espressione; total=total+ quarters * 0.25; … … Calcola Memoria total=total+ quarters * 0.25; total+ quarters 1.23 * 0.25 … Calcola il valore di espressione e memorizza il risultato nella posizione di memoria assegnata alla variabile nomeVariabile L’assegnazione è un particolare tipo di espressione pennies 8 dimes 4 quarters 3 total C++: Introduzione Memorizza il risultato in total 1.23 0.48 25 C++: Introduzione Assegnazione o Dichiarazione? Costanti Definite (#define) Non confondere la dichiarazione di una variabile E’ possibile usare la direttiva #define del 26 preprocessore per dare un nome ad una costante con un enunciato di assegnazione #define id_costante double total=pennies*0.01; costante Ovunque viene usato l’identificatore, il … preprocessore provvederà a sostuirlo con la costante total=total+ quarters * 0.25; #define PI 3.14142 La dichiarazione specifica il tipo, l’assegnazione no Una variabile puo’: ❍ essere definita una volta sola ❍ Essere aggiornata quante volte si vuole … … double raggio=1; double raggio=1; double area=raggio*raggio*PI; double area=raggio*raggio*3.14142; #define non è una istruzione C++ ma una direttiva per il preprocessore C++: Introduzione 27 C++: Introduzione 28 Costanti Dichiarate Comunicazione da Console Usando il prefisso const si possono dichiarare delle costanti appartenenti ad un determinato tipo esattamente allo stesso modo in cui si dichiarano le variabili; La console è l’interfaccia l’interfaccia base del calcolatore Composta da: ❍ … ❍ Tastiera:: unità standard di Tastiera input Video: Video: unità standard di output const double lire_per_euro=1937,26; double valore_in_euro=15,36; double valore_in_lire=valore_in_euro*lire_per_euro; … Sintassi const nome_tipo nome_variabile=espresssione Costanti dichiarate sono delle variabili il cui valore non può essere modificato ❍ devono pertanto essere inizializzate al momento della loro creazione C++: Introduzione 29 Comunicazione da Console 1. 2. Sono definiti inoltre altri due flussi – cerr e clog – il cui scopo è quello di segnalare eventuali messaggi di errore 30 Output (cout) C++ le operazioni di input ed output di un programma vengono gestire da due flussi di ): dati (stream (stream): cin per l’input l’input (normalmente assegnato alla tastiera) cout per l’output l’output (normalmente diretta al video) ❍ C++: Introduzione In C++ l’output l’output si effettua applicando l’operatore di inserimento << al flusso cout cout.. << inserisce il valore alla sua destra nel flusso di dati alla sua sinistra Programma C++ ❍ Costante Stringa cout << “Frase di output”; ❍ Costante Numero cout << 120; Usando questi due flussi un programma può interagire con un utente mostrando messaggi sullo schermo e ricevendo l’input da parte dell’utente dalla tastiera ❍ 31 120 Variabile cout << x; C++: Introduzione Frase di output valore di x C++: Introduzione 32 Output (cout) Input (cin) L’operatore di inserzione << può essere usato più In C++ l’input l’input si effettua applicando l’operatore di estrazione >> al flusso cin cin.. L’operatore deve essere seguito dalla variabile in cui si deve memorizzare il valore da leggere volte nella stessa frase cout << “Salve” << “ a “ << “tutti”; Salve a tutti Sintassi cout << espr. 1 << … << espr. n ; int numero; cin >> numero; Per andare a capo bisogna inserire nel flusso il Il programma attende che l’utente digiti un numero carattere speciale newline ‘\ ‘\n’ cout << “Prima frase”; e prema il tasto “invio”. ❍ Prima fraseSeconda frase cout << “Seconda frase”; ❍ cout << “Prima frase\n”; Prima frase cout << “Seconda frase”; Seconda frase C++: Introduzione L’input viene elaborato da cin solo dopo aver premuto il tasto invio Il valore (costante) introdotto deve essere dello stesso tipo della variabile Altrimenti lo stream cin fallisce – Tralasciamo per ora la gestione di queste situazioni 33 C++: Introduzione Input (cin) 34 Esempio L’operatore di inserzione >> può essere usato più volte nella stessa istruzione cin >> a >> b; #include <iostream> #include <iostream> using namespace std; using namespace std; int main() int main() { { Sintassi cin >> var. 1 >> … >> var. n ; int x,y; cout << “Inserire il primo numero\n”; cin >> x; L’utente deve fornire valori di tipo appropriato, int x,y; cout << “Inserire i due numeri da sommare \n”; cin >> x >> y; cout << “Inserire il secondo numero\n”; uno per variabile I valori devono essere separati da uno o più caratteri spazio/tabulazione/newline int somma=x+y; cin >> y; int somma=x+y; cout << “Somma= " << somma << "\n"; return 0; cout << “Somma= " << somma << "\n"; return 0; } } C++: Introduzione 35 C++: Introduzione 36 Esempio Input (cin) #include <iostream> I valori devono essere separati da uno o più … caratteri spazio/tabulazione/newline cout << "How many dimes do you have? "; cin >> count; using namespace std; cin >> a >> b >> c >> d; total = count * 0.10 + total; E’ possibile inserire i dati ❍ uno dopo l’altro separati da spazi/tab int main( ) cout << "How many quarters do you have? { cout << "How many pennies do you have? "; "; 3 6 2 -4 cin >> count; int count; total = count * 0.25 + total; cin >> count; ❍ double total = count * 0.01; return 0; 2 - 4 \n cin 3 \n 6 \n 2 \n - 4 \n 2 } -4 … ❍ C++: Introduzione o una loro combinazione 37 Input (cin) C++: Introduzione 38 Tipo di Dato Fondamentali in C++ L’input da tastiera è bufferizzato ❍ I caratteri digitati sono raggruppati tra loro e l’input viene elaborato quando si preme il tasto invio cout << “ Primo num. ”; 6 oppure su righe succesive 6 cout << "How many nickels do you have? "; cin >> count; 3 3 cout << "Total value = " << total << "\n"; total = count * 0.05 + total; cin cin >> a; 3 cout << “ Secondo num. “; cin >> b; 6 cout << “ Terzo num. “; 2 cin >> c; cout << “ Quarto num. “; cin >> d; -4 Nome byte char 1 Carattere o intero di 8 bit Signed: -128…127 Unsigned: 0…255 short/ byte 1 Intero di 8 bit Signed: -128…127 Unsigned: 0…255 long 4 Intero di 32 bit 39 Signed: -2147483648…2147483647 Unsigned: 0…4294967295 float 4 Numero in virgola mobile a singola precisione ±3.4·10±38 double 8 Numero in virgola mobile a doppia precisione ±1.7·10±308 bool 1 Valori booleani 3 6 2 -4 C++: Introduzione Intervallo Intero. La sua lunghezza dipende dalla dimensione di una parola (word) usata dal sistema. Nei sistemi a 32 bit è di 32 bit int Che succede digitando direttamente? Descrizione true e false C++: Introduzione 40 Numeri interi in C++ Numeri in virgola mobile in C++ In C++ tutti i tipi di dati fondamentali per numeri In C++ tutti i tipi di dati fondamentali per numeri interi usano internamente la rappresentazione in complemento a due ❍ in virgola mobile usano internamente una rappresentazione binaria codificata dallo standard internazionale IEEE 754 float (32bit), double (64 bit) La divisione con divisore zero non è un errore se effettuata tra numeri in virgola mobile byte, int, long le condizioni di overflow nelle operazioni aritmetiche non vengono segnalate ❍ si ottiene semplicemente un risultato errato L’unica operazione aritmetica tra numeri interi che ❍ genera un’errore è la divisione per zero ❍ C++: Introduzione se il dividendo è diverso da zero, il risultato è infinito (con il segno del dividendo) se anche il dividendo è zero, il risultato è indeterminato, cioè non è un numero, e viene usata la codifica speciale NaN (Not a Number) 41 C++: Introduzione Errori di arrotondamento Arrotondamento Gli errori di arrotondamento sono un fenomeno … double f = 4.35; cout << setprecision(10) << f; … naturale nel calcolo in virgola mobile eseguito con un numero finito di cifre significative ❍ ❍ calcolando 1/3 con due cifre significative, si ottiene 0,33 moltiplicando 0,33 per 3, si ottiene 0,99 e non 1 4.349999905 Il numero 4,35 non ha una rappresentazione esatta nel sistema binario, proprio come 1/3 non ha una rappresentazione esatta nel sistema decimale Siamo abituati a valutare questi errori pensando alla rappresentazione dei numeri in base decimale, ma i computer rappresentano i numeri in virgola mobile in base binaria e a volte si ottengono dei risultati inattesi C++: Introduzione 42 ❍ 43 4,35 viene rappresentato con un numero appena inferiore a 4,35 C++: Introduzione 44 Assegnazioni con Conversione Assegnazioni con Conversione … double f; int pennies=3; f=pennies; … … double f=2.3; int pennies; pennies=f; … In un’assegnazione, il tipo di dati dell’espressione dell’espressione e della variabile a cui la si assegna devono essere compatibili ❍ In questo caso si ha perdita di informazione, se i tipi non sono compatibili, il compilatore genera un messaggio di warning perché la parte frazionaria di un valore in virgola mobile non può essere memorizzata in una variabile di tipo intero I tipi non sono compatibili se provocano una possibile perdita di informazione durante la conversione L’assegnazione di un valore di tipo numerico intero ad una variabile di tipo numerico in virgola mobile non può provocare perdita di informazione C++: Introduzione 45 C++: Introduzione Operatore Esplicito di Conversione (casting) Aritmetica Ci sono casi in cui si vuole effettivamente ottenere C++ supporta le quattro operazioni elementari ❍ addizione e sottrazione: + ❍ moltiplicazione e divisione: * / la conversione di un numero in virgola mobile in un numero intero Lo si fa segnalando al compilatore l’intenzione esplicita di accettare l’eventuale perdita di informazione, mediante un “cast” … … double f=2.3; double f=2.3; int pennies; int pennies; pennies= (int) f; pennies=static_cast<int> f; … … 46 Le operazioni di moltiplicazione e divisione hanno precedenza su addizione e sottrazione a+b/2 a+(b/2) E’ possibile usare coppie di parentesi tonde per indicare in quale ordine valutare le sottosottoespressioni C++: Introduzione (a+b)/2 47 (a+b)/2 C++: Introduzione 48 Aritmetica: Divisione Funzioni Matematiche Se uno dei due operandi è un numero floating point, Operazioni più complesse, e.g., la radice quadrata, il logaritmo vengano realizzare tramite funzioni il risultato e’ un numero floating point ❍ 7.0/4.0 7/4.0 double x; cin >> x; cout << sqrt(x); 1.75 7.0/4 Se entrambi gli operando sono interi, il risultato è Sintassi un intero 7/4 1 nome_funzione (espr1, …,esprn) L’operatore modulo % restituisce il resto della Calcola il valore della funzione nome_funzione con divisione tra interi 7%4 Le funzioni C++ saranno studiate in dettaglio in seguito argomenti/parametri espr1 espr1,…, ,…,esprn esprn 3 ❍ C++: Introduzione Si dice che la funzione restituisce (return) il valore calcolato 49 Esempio C++: Introduzione 50 C++: Introduzione 52 Funzioni Matematiche Per invocare le funzioni matematiche bisogna Funzione includere il file di intestazione <cmath> #include <iostream> #include <cmath> Inclusione del file di intestazione <cmath> Descrizione sqrt(x) radice quadrata di x pow(x,y) xy sin(x) sin x cos(x) cos x tan(x) tan x int x; exp(x) ex cout << “Inserire un numero \n”; log(x) logaritmo naturale loge(x), x>0 using namespace std; int main() { cin >> x; log10(x) double radice=sqrt(x); cout << “Radice quadrata= " << radice << "\n"; return 0; } C++: Introduzione 51 logaritmo decimale log10(x) ceil(x) il più piccolo numero intero ≥x floor(x) il più grande numero intero ≤x fabs(x) valore assoluto di x Caratteri Classi Il tipo char permette di memorizzare un carattere In C++ una classe e’ un tipo di dato definito dall’utente con codifica ASCII ad 8 bit Tipo: rappresentazione concreta di un concetto ❍ tipo int e’ la rappresentazione (approssimata) di un numero intero ❍ tipo double e’ la rappresentazione (approssimata) di un numero reale char x=‘a’,y; y=‘b’; char è un tipo compatibile con int (eredità del C) ❍ corrisponde ad un byte ❍ valore=numero binario corrispodente alla codifica ASCII del carattere ❍ ‘a’ ha codifica 01100001, codifica binaria di 97 … char x=‘a’; int a=x; cout << a; … In C++ e’ possibile definire nuovi tipi per 1. 97 2. 3. 4. C++: Introduzione rappresentare concretamente: Stringhe Impiegati Conto in Banca … 53 C++: Introduzione Classi Stringhe In C++ una classe e’ un tipo di dato definito Stringa: Sequenza di caratteri racchiusa tra doppi apici dall’utente Una classe e’ caratterizzata da: 1. Dati (Attributi) ❍ ❍ ❍ attributi 2. Funzioni (Comportamento) ❍ funzioni membro Oggetto e’ un’istanza di una classe ❍ una particolare stringa, un particolare impiegato, etc. Interfaccia Pubblica ❍ Insieme delle funzioni membro accessibili dall’esterno C++: Introduzione #include <iostream> #include <string> using namespace std; Per usare le stringhe in C++ int main() bisogna includere il file di intestazione <string> Dichiarazione, Assegnazione, input ed output simili ai tipi numerici Il tipo string è il primo esempio di classe che incontriamo in C++ { ❍ ❍ 55 “Hello”, “a”, “” I doppi apici non fanno parte della stringa stringhe in C++ sono oggetti in C il tipo string non esiste in C stringhe sono array di caratteri 54 string nome; string frase=“Inserire un nome\n”; cout >> frase; cin >> nome; cout << “Ciao " << nome << "\n"; return 0; } C++: Introduzione 56 Stringhe Stringhe Funzioni membro della classe string Invocazione di una funzione membro 1. funzione membro length( ) ❍ saluto.length() restituisce la lunghezza della stringa (numero di caratteri) Sintassi … int x; string saluto=“Ciao Mondo\n”; x=saluto.lenght( ); cout << saluto << “ è lunga “ << x << “ caratteri\n”; … espressione.funzione_membro(espr1, espr2,…,esprn) Calcola il valore della funzione membro funzione_membro con argomenti/parametri espr1,…, espr1 ,…,esprn esprn e espressione (parametro implicito) ❍ C++: Introduzione 57 Stringhe 2. … string saluto=“Ciao Mondo\n”; string porzione=saluto.substr(2,4); cout << porzione; … C i a o 1 2 3 4 M o n d o \n 5 6 7 8 9 10 … string nome=“Harry”; string cognome=“Potter”; string mago=nome + “ “ + cognome; cout << mago; … ao M identico a quello dell’operatore di addizione Almeno una delle due stringhe deve essere una variabile stringa la posizione dei caratteri nelle stringhe viene numerata a partire da 0. Perché? il secondo parametro è la quantità di caratteri (consecutivi) da estrarre C++: Introduzione Harry Potter Il simbolo dell’operatore di concatenazione è il primo parametro è la posizione del primo carattere che si vuole estrarre ❍ 58 Concatenazione di Stringhe: Operatore + restituisce una sottostringa 0 C++: Introduzione Stringhe funzione membro substr(primo carattere,lunghezza) ❍ Si dice che la funzione restituisce (return) il valore calcolato 59 C++: Introduzione 60 Classe Impiegato Classe Impiegato Esempio Capitolo 3 (Employee) Costruzione Rappresentazione di un Impiegato Sintassi 1. Attributi ❍ nome_classe (parametri_costruzione); name, salary Crea una variabile oggetto della classe 2. Comportamento ❍ Costruzione ❍ Accesso al nome, stipendio ❍ Variazione dello stipendio ❍ Distruzione string get_name( ) nome_classe usando i parametri parametri_costruzione per inizializzarlo Employee name double get_salary( ) void set_salary(double ) Employee(“Fantozzi, Ugo”, 2000); Employee name salary “Fantozzi, Ugo” 2000 salary C++: Introduzione 61 Classe Impiegato C++: Introduzione 62 Classe Impiegato Dichiarazione variabile oggetto Esempio Sintassi file di intestazione classe Employee #include <iostream.h> #include “ccc_empl.h” nome_classe nome_variabile=nome_classe(parametri costruzione); using namespace std; nome_classe nome_variabile(parametri costruzione); int main( ) { Employee fantozzi(“Fantozzi, Ugo”, 2000); Employee fantozzi=Employee(“Fantozzi, Ugo”, 2000); Employee fantozzi(“Fantozzi, Ugo”, 2000); Definisce una nuova variabile oggetto della classe nome_classe usando i parametri parametri_costruzione per inizializzarlo fantozzi= double nuovo_stipendio=fantozzi.get_salary( )-100; Employee fantozzi.set_salary(nuovo_stipendio); name salary “Fantozzi, Ugo” cout << “Il nuovo stipendio del dipendente “ << fantozzi.get_name( ); cout << “ è “ << fantozzi.get_salary( ) << “\n”; return 0; 2000 C++: Introduzione 63 } C++: Introduzione 64