Scarica in formato pdf o txt
Scarica in formato pdf o txt
Sei sulla pagina 1di 25

PROGRAMMAZIONE DEI CALCOLATORI ELETTRONICI 1

IL MIO PRIMO PROGRAMMA IN C++


I TIPI DI DATO E GLI OPERATORI

Roberto Nardone, Luigi Romano


ROADMAP 2

□ Primo esempio di programma C++: Hello World


□ Tipi di dato in C++
□ Operatori

ELEMENTI BASE DEL LINGUAGGIO C++


FASI DEL CICLO DI SVILUPPO 3
□ Sono riporti di seguito i passi fondamentali per Scrittura del
codice
ottenere un eseguibile da un programma C++:
 Scrittura del codice – generazione di un file .cpp

sorgente .cpp Compilazione


 Compilazione – compilazione del file
sorgente e generazione di un file oggetto .o Librerie .o

 Link – collegamento/linkaggio del file Link


oggetto .o con le librerie del linguaggio e
generazione dell’eseguibile .exe (Windows) .exe (Win)
.bin (Unix)
.bin (Unix) Esecuzione
 Esecuzione – Esecuzione del programma

ELEMENTI BASE DEL LINGUAGGIO C++


CIAO MONDO 4

g++ –ohelloC hello.cpp

ELEMENTI BASE DEL LINGUAGGIO C++


DIRETTIVE 5
□ Alle fasi precedentemente viste ne dovremmo aggiungere
un’altra, precompiling, durante la quale vengono risolte le
direttive per il compilatore

□ Una direttiva inizia sempre con il carattere # (a colonna 1) e


occupa una sola riga (non ha un terminatore)

#include <iostream>

#define A 3

□ Il preprocessore, eseguendo le direttive, non produce codice


binario, ma modifica il codice sorgente destinato al compilatore
ELEMENTI BASE DEL LINGUAGGIO C++
STRUTTURA DI UN PROGRAMMA C++ 6
□ Per ogni linguaggio di programmazione (Java, Python, …) il
programma più elementare è “Hello World”. In C++:

Output
> Hello World!

Tutto ciò che inizia con # è una direttiva al


Preprocessore (vedremo in seguito). Vuol
La funzione main è la dire: includi il codice standard C++ per fare
funzione principale operazioni di input/output (ad es. cout)
che viene eseguita dal
// indica un calcolatore in fase di
commento esecuzione. E’ il Questa linea di codice è un Istruzione eseguita dal calcolatore. Le
cosidetto entry point istruzioni sono eseguite nell’ordine in cui appaiono e terminano con ';' .
del programma std::cout significa: standard character output device. << è un Operatore

ELEMENTI BASE DEL LINGUAGGIO C++


7

Variabili e Tipi di Dato

ELEMENTI BASE DEL LINGUAGGIO C++


LE VARIABILI C++ 8
□ In un programma C++ si fa uso di Variabili.
… …

1000

1001

1002

1003

1004

1005

1006

1007
int unaVariabile = 4; 0 0 0 4

&unaVariabile = 0x1001

□ Queste devono essere obbligatoriamente dichiarate prima del loro utilizzo


□ Per una variabile vanno distinti tre momenti:
 Dichiarazione: il programma dichiara l’esistenza della variabile, il suo tipo
ed il suo nome, ma non viene realmente allocata memoria
 Definizione: la variabile viene associate ad uno spazio di memoria (viene
attribuito un indirizzo)
 Inizializzazione: alla variabile viene associato un valore
□ Spesso Dichiarazione e Definizione avvengono nello stesso istante

ELEMENTI BASE DEL LINGUAGGIO C++


DEFINIZIONE E DICHIARAZIONE 9
□ Una variabile può essere di diversi tipo. I più elementari sono:
 Intero (int) #include <iostream>
 Booleano (bool): (Vero o Falso)
 Carattere (char) int main() {
int prima_variable;
 Floating‐point (float, double) (numeri razionali) prima_variabile=5;
}

□ Non tutti i tipi occupano la stessa quantità di memoria


sizeof() ritorna la dimensione del dato passato
come argomento

Es. sizeof(int) ritorna 4

ELEMENTI BASE DEL LINGUAGGIO C++


INFORMAZIONE 10
□ Il concetto di informazione può essere definito in modo semplicistico come la
risoluzione di un’incertezza, la scelta tra più alternative

□ Ogni informazione è caratterizzata da tipo, valore e attributo


 Il tipo specifica a quale insieme di enti appartieni l’informazione
• numero intero, numero reale, nome di persona, lettera dell’alfabeto,
data,…
 Il valore è un elemento specifico di un insieme
• 5, 5.3, Mario, c, 03/03/2008,…
 L’attributo specifica ulteriormente l’informazione e ne dà un senso
compiuto
• l’informazione di tipo numero e valore 1000 potrà avere come
attributi “costo della rata mensile”, “numero di telaio”,…

ELEMENTI BASE DEL LINGUAGGIO C++


TIPI

□ In un programma C++ tutti i nomi delle entità (identificatori)


utilizzati devono essere dichiarati, ossia deve essere
specificato il loro tipo

□ Ogni tipo determina quali operazioni possono essere


applicate ad un nome e come tali operazioni sono
interpretate
float x; // x is a floating-point variable
int y = 7; // y is an integer variable with the initial value 7
float f(int); // f is a function taking an argument of type int and returning a floating-point number

x = y + f(2);
TIPI FONDAMENTALI 12
□ Il tipo booleano può assumere due valori: Vero (true) o Falso
(false). Serve per effettuare operazioni logiche
#include <iostream> #include <iostream>
int main() { int main() {
bool var; bool var= true;
var=true; }
}
□ Il tipo Float è utilizzato per □ Il tipo Char indica un carattere
operazioni tra numeri reali
#include <iostream> #include <iostream>
int main() { int main() {
float variabile_1, variabile_2; char carattere=‘a’;
variabile_1=4.5; }
variabile_2=5.5;
}

ELEMENTI BASE DEL LINGUAGGIO C++


ATTENZIONE, NOTARE CHE… 13
□ Il C++ è Case‐Sensitive: vuol dire che fa differenza tra maiuscole e minuscole
 Ad es. float variabile_1; float Variabile_1;

□ Non è possibile definire variabili con spazi. Per convenzione lo spazio è


inserito con tratto basso _
 Ad es. int prima_variabile;

□ Le parole chiave (quelle evidenziate in grassetto) sono riservate del


linguaggio. Non si possono usare per altri scopi. Il compilatore darà errore!!

ELEMENTI BASE DEL LINGUAGGIO C++


DIETRO LE QUINTE 14
□ I valori delle variabili di un programma vengono registrati nella
memoria del calcolatore
□ Il calcolatore deve quindi conoscere quali valori vogliamo
memorizzare in una variabile in quanto deve sapere quanta
memoria riservare per tali valori
□ Non tutti i tipi di valore occupano la stessa quantità di
memoria
□ Quantità di memoria diversa per registrare un carattere, un
piccolo numero o un grande numero
□ La memoria di un calcolatore è suddivisa in byte (8 bit).
□ A seconda del tipo, una variabile sarà rappresentabile su n bit

ELEMENTI BASE DEL LINGUAGGIO C++


RAPPRESENTAZIONE DEGLI INTERI – 1/2 15
□ Il C++ permette di definire variabili intere di tipo signed (con segno) o
unsigned (senza segno). Di default sono definite come signed. Ad es.
quando scriviamo:
 int variabile_intera=‐30;
□ variabile_intera sarà con segno.
□ Anteponendo la parola chiave unsigned, è possibile anche definirle
come variabili senza segno. Ad es:
 unsigned int variabile_senza_segno=24;
□ Usando unsigned, potremo rappresentare numeri positivi più grandi. Ad es.
nel caso degli interi int (n=32b), da 0 a 4.294.967.295.
□ Usando signed, invece, i numeri positivi potranno raggiungere un valore
massimo di 2.147.483.647

ELEMENTI BASE DEL LINGUAGGIO C++


RAPPRESENTAZIONE DEGLI INTERI – 2/2 16
□ Il linguaggio permette inoltre di definire diverse tipologie di interi che
saranno rappresentati su n differenti valori di bit e dunque
caratterizzati da un differente dominio (o range)
□ In generale, il dominio è definito come segue:
2 1, 2 1 ; 𝑠𝑖𝑔𝑛𝑒𝑑
0, 2 1 ; 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑
32769,32767 ; 𝑠𝑖𝑔𝑛𝑒𝑑
 short int  n=16bit 
0,65535 ; 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑
 int  n=32bit. In verità, la sua lunghezza dipende dal sistema operativo e dal
calcolatore. Ad esempio, in MSDOS è di 16 bit mentre in sistemi a 32 bit (quali
Windows 9x/2000/NT) è di 32 bit (4 bytes).
 long  n=32bit
 long long  n=64bit

ELEMENTI BASE DEL LINGUAGGIO C++


RAPPRESENTAZIONE DI BOOL 17
□ Il bool come detto può assumere solo due valori true e false
□ Dunque, è rappresentabile attraverso un solo bit
□ Conversione bool → int:
int valore_esempio= true;
 valore_esempio assume valore 1
int valore_esempio = false;
 valore_esempio assume valore 0
□ Conversione int → bool:
bool val = ‐100;
 val assume valore true. In generale, tutti i valori diversi da
zero assumono valore true. Solo se 0 assume valore false:
bool stop = 0;

ELEMENTI BASE DEL LINGUAGGIO C++


RAPPRESENTAZIONE DEI CHAR 18

□ La rappresentazione dei caratteri segue il codice ASCII (8 bit)


□ Esistono tre tipi: char, signed char e unsigned char
□ La rappresentazione (con o senza segno) dei char è lasciata libera
dallo standard

128,127 ; 𝑠𝑖𝑔𝑛𝑒𝑑
□ Dominio char:
0,255 ; 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑

ELEMENTI BASE DEL LINGUAGGIO C++


ESEMPIO CODICE ASCII ‐ CARATTERI STAMPABILI 19

ELEMENTI BASE DEL LINGUAGGIO C++


RAPPRESENTAZIONE DEI TIPI A VIRGOLA MOBILE 20
□ I numeri reali sono di tre tipi:
 float: singola precisione (n=32 bit)
 double: doppia precisione (n=64 bit)
 long double: doppia precisione estesa (n=80 bit)
□ I tipi a virgola mobile sono rappresentati attraverso la notazione
esponenziale (es. +5.37E+16)

ELEMENTI BASE DEL LINGUAGGIO C++


ESERCIZIO ‐ ECHO 21
□ Scrivere un programma che, dopo aver chiesto all’utente di
inserire un carattere, lo stampa sul terminale

□ Scrivere un programma che, dopo aver chiesto all’utente di


inserire un numero intero, lo stampa sul terminale

ELEMENTI BASE DEL LINGUAGGIO C++


DIMENSIONI

□ Alcune proprietà del C++ non sono specificate nello standard


e quindi dipendono dalla particolare implementazione del
linguaggio di programmazione
□ Ad esempio, la dimensione del tipo int non è specificata
dallo standard e può variare da compilatore a compilatore

□ Affinché il codice sia portabile (ossia che funzioni su ogni


sistema) è necessario che un programmatore eviti tali
dipendenze
DIMENSIONI E DOMINIO DELLE VARIABILI –2/2 23
Tipo Byte Descrizione Dominio
signed: ‐128 ... 127
char 1 carattere o intero di 8 bit.
unsigned: 0 ... 255
signed: ‐32768 ... 32767
short 2 intero di 16 bit.
unsigned: 0 ... 65535

signed:‐2147483648 ...
long 4 intero di 32 bit. 2147483647
unsigned: 0 ... 4294967295

Intero. La sua lunghezza dipende dalla lunghezza del


tipo word usato dal sistema operativo. Ad esempio, in MSDOS è di
int * See short, long
16 bit mentre in sistemi a 32 bit (quali Windows 9x/2000/NT) è di
32 bit (4 bytes).
3.4e + / ‐ 38 (7 cifre
float 4 numero in virgola mobile.
decimali)
1.7e + / ‐ 308 (15 cifre
double 8 numero in virgola mobile in doppia precisione.
decimali)
1.2e + / ‐ 4932 (19 cifre
long double 10 numero in virgola mobile in doppia precisione estesa.
decimali)

bool 1 Valori Booleani. Può assumere uno dei due valori: true o false. true or false

ELEMENTI BASE DEL LINGUAGGIO C++


TIPO VOID

□ Il tipo void sintatticamente è un tipo fondamentale


□ Può essere usato solo come parte di un tipo più complesso,
dato che non esistono oggetti di tipo void

□ È usato per specificare che una funzione non ritorna un valore


oppure come tipo base per puntatori a oggetti di tipo
sconosciuto

void x; // error: there are no void objects


void f(); // function f does not return a value
void* pv; // pointer to object of unknown type
IL QUALIFICATORE CONST 25
□ Può essere anteposto alla definizione della variabile
 const int a = 3;

□ Sta ad indicare che il valore della variabile a non potrà


modificarsi nel tempo
 a ++; // errore!!!
 a = a + 7; // errore!!!

ELEMENTI BASE DEL LINGUAGGIO C++

Potrebbero piacerti anche