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) Supporta l astrazione dei dati Supporta la programmazione orientata agli oggetti (Object Oriented = OO) Supporta la programmazione generica C++ - Tipi e dichiarazioni 2
Cosa è un programma #include <iostream> // rende accessibili le funzioni dii/o #include <string> // funzionalità classe string //using namespace std; int main() { string yourname; } std::<< cout Inserisci il tuo nome -> ; std::cin >> yourname; std::<<cout Ciao << yourname <<!\n ; C++ - Tipi e dichiarazioni 3
Come si fa ad eseguire un programma Compilazione ad esempio con il compilatore gcc Esecuzione del file compilato: attenzione sotto Unix verificare che il file compilato sia eseguibile (chmod +x <nome file>) C++ - Tipi e dichiarazioni 4
Identificatori Un identificatore è una sequenza lettere, numeri e simbolo _. Non c è limite alla lunghezza anche se per alcuni compilatori sono significativi solo i primi 32 caratteri. Un identificatore non deve corrispondere a una parola chiave del linguaggio. Case sensitive C++ - Tipi e dichiarazioni 5
Parole chiave del linguaggio asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, rivate, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static,static_cast, struct, switch, template, this, throw, true, try, typedef,typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t C++ - Tipi e dichiarazioni 6
Tipi di dati La memoria del computer è organizzata a bytes (8 bit) Byte ->0:255 oppure 1 carattere C++ - Tipi e dichiarazioni 7
Tipi fondamentali (1) TIPO BYTES DESCR RANGE char 1 Carattere o intero lungo 8 bit [-128:127], [0: 255] short 2 Intero lungo 16 bit [-32768:32767] [0:65535] long 4 Intero lungo 32 bit [-2147483648: 2147483647] [0:4294967295] int * Intero la cui lunghezza dipende dalla lunghezza della word di sistema operativo, ad es. MSDOS 16bit, Windows 32 float 4 Numero in virgola mobile 3.4e + / - 38 (7 cifre) C++ - Tipi e dichiarazioni 8
Tipi fondamentali (2) TIPO BYTES DESCR RANGE double 8 Numero in virgola mobile doppia precisione 1.7e + / - 308 (15 cifre) long double 10 Numero in virgola mobile long 1.2e + / - 4932 (19 cifre) bool 1 booleano true o false wchar_t 2 E stato progettato per rappresentare un set di caratteri internazionali a 2 byte. Non è supportato da tutti i compilatori wide characters C++ - Tipi e dichiarazioni 9
Booleani (1) Una variabile booleana può assumere i valori true e false Un booleano è usato per esprimere il risultato di una operazione logica, ad esempio: void f(int a, int b) { bool b1 = a==b; // == equivalenza } C++ - Tipi e dichiarazioni 10
Booleani (2) Conversione bool -> intero true = 1, false = 0 Conversione intero -> bool: Interi diversi da 0 = true Interi uguale a 0 = false C++ - Tipi e dichiarazioni 11
Caratteri L insieme dei caratteri è definito per esempio dai caratteri ASCII Prescinde dalla rappresentazione interna. Char c = a ; Costante di tipo carattere C++ - Tipi e dichiarazioni 12
Escape codes \n newline \r carriage return \t tabulation \v vertical tabulation \b backspace \f page feed \a alert (beep) \' single quotes (') \" double quotes (") \ question (?) \\ inverted slash (\) C++ - Tipi e dichiarazioni 13
I tipi fondamentali: interi Sia char che int possono essere definiti in funzione del segno ( puro, signed, unsigned) Gli interi possono essere definiti anche in funzione della lunghezza (short int, int, long int) int x; short xcorto; long interolungo; C++ - Tipi e dichiarazioni 14
I tipi fondamentali: void Non esistono oggetti di tipo void, si usa per specificare che una funzione non restituisce valori oppure per indicare che un puntatore è di un tipo non specificato. void x; // ERRORE void f(); // la funzione f non restituisce alcun valore void* pv; // puntatore ad oggetto di tipo sconosciuto C++ - Tipi e dichiarazioni 15
Enumerati Tipo che può contenere un insieme di valori specificati dall utente: enum settimana { lunedì, martedì, mercoledì, giovedì, Venerdì, sabato, domenica}; C++ - Tipi e dichiarazioni 16
Dichiarazioni Perché un identificatore possa essere usato in un programma C++ deve essere precedentemente dichiarato: char ch; string s; int count = 1; const double pi = 3.1415926; char* name = Alessandra ; C++ - Tipi e dichiarazioni 17
Struttura della dichiarazione Una dichiarazione è costituita da: specificatore tipobase dichiaratore inizializzatore (Per una maggiore precisione consultare la sintassi) Ad esempio: char ch; string s; static int count = 1; const double pi = 3.1415926; char* name = Alessandra ; C++ - Tipi e dichiarazioni 18
Gli identificatori Gli identificatori consistono in una sequenza di lettere e cifre, il primo carattere deve essere una lettera. Il carattere _ può essere usato Gli identificatori non possono essere uguali le parole chiave del C++ Si distingue fra maiuscolo e minuscolo C++ - Tipi e dichiarazioni 19
Regole di visibilità (scope) int x; int main() { // compound statement x = 25; { int y = x; int x; x = 1; y = x; { int x; x = 2; } x = 3; } x = 33; } C++ - Tipi e dichiarazioni 20
sizeof Le dimensioni delle variabili in memoria dipendono dall implementazione Problema della portabilità C++ - Tipi e dichiarazioni 21
Inizializzazione Inizializzazione automatica a 0 per variabili con scope globale o all interno di un namespace Valore iniziale no definito per variabili locali e oggetti allocati nella memoria libera Array inizializzati solo se statici C++ - Tipi e dichiarazioni 22
lvalue Left value, ovvero espressioni alla sinistra di una assegnamento che identificano una locazione di memoria, ad es: *p[a+10] = 7; C++ - Tipi e dichiarazioni 23
best practices Evitare di usare identificatori che non hanno senso (pippo, x, a ecc ) I nomi delle classi iniziano con lettera maiuscola Tutti gli altri con lettera minuscola Se il nome è composto da più parole, le parole che seguono devono avere l iniziale maiuscola class StudentiPrimoCorso StudentiPrimoCorso giovannirossi; char* myname = Alessandra ; C++ - Tipi e dichiarazioni 24
Esercizi 1. Programma sulla conversione dei caratteri 2. Programma sulla dimensione dei tipi di dati C++ - Tipi e dichiarazioni 25