2. Di che parliamo?
•Le variabili, nella programmazione, sono
importanti!
•Concetto teorico e
•Implementazione pratica.
•L’inizializzazione
•Il casting
3. Cos’è una variabile?
• Una variabile è una coppia (nome,valore) dove:
• il nome è l’identificatore associato alla variabile (esso rimane costante durante
l’esecuzione dell’algoritmo);
• il valore è il contenuto associato alla variabile in un certo istante dell’esecuzione
dell’algoritmo (esso può variare durante l’esecuzione dell’algoritmo)
• Una variabile è un entità identificata da un nome il cui valore può
cambiare durante l’esecuzione di un programma
• Una variabile è un dato modificabile situato in una porzione di memoria
destinata a contenere valori, suscettibili di modifica nel corso
dell'esecuzione di un programma. Una variabile è caratterizzata da un
nome.
• Per il momento ci occupiamo di variabili SCALARI, cioè in grado di
contenere un solo valore per volta
4. Come immaginarla
• Potete pensarlo come a uno scatolone con una etichetta (o nome, o
identificatore), idealmente con un senso
IncassiOdierni
5. Come usarla
• Può contenere un valore.
• L’operazione di riempimento si chiama ASSEGNAZIONE
• Vari simboli indicano questa operazione: ← , =, := , a seconda del contesto
IncassiOdierni
$250
6. Come usarla
• Ripetere l’operazione di assegnazione cancella il risultato eventualmente
presente.
•
IncassiOdierni
$300$250
7. I nomi delle variabili
• I nomi DEVONO iniziare con una lettera (o con _ )
• I nomi possono contenere numeri e lettere e underscore. NON possono
contenere caratteri speciali
• Lettere MAIUSCOLE e minuscole sono considerati lettere diverse
• I nomi DOVREBBERO essere significativi, per dare chiarezza al programma.
Tuttavia, molti programmatori sono pigri, e tendono a utilizzare nomi brevi
e/o incomprensibili come a,b,l1,l2,pippo,kebeppe. Cercate di NON farlo.
Usare nomi di variabili significativi come inizio, contatore, lato1, lato2,
potrebbe salvarvi la vita.
8. Identificatori: convenzioni
• I nomi delle variabili sono generalmente in minuscolo
• I nomi delle costanti sono generalmente in MAIUSCOLO
• I nomi lunghi e complessi usano uno di questi due stili
• Stile “serpente”: una_variabile_molto_lunga
• Stile “cammello”: unaVariabileMoltoLunga
• Eccezione1: è accettabile usare le variabili i,j,k,l come variabili di ciclo
(velocità, convenzione storica)
• Eccezione2: pippo, pluto, paperino sono “metanomi” utilizzati negli
esempi (cfr. www.pippo.com)
• Eccezione3: convenzioni specifiche all’interno di una organizzazione
10. Esistono molti tipi di scatole….
• Ogni scatola è pensata per un particolare esempio di contenuto
11. ….e di variabili!
• Nella maggior parte dei linguaggi tra cui il C/C++ e Java, ad ogni variabile è
assegnato un particolare tipo di dato e può contenere solo questo.
float
long int short
12. Dichiarazione di variabili
• Nella maggior parte dei linguaggi di programmazione, occorre dichiarare il
nome e il tipo di dato utilizzato prima di poter usare una variabile.
• Il C è uno di questi.
• La dichiarazione DEVE essere fatta prima di qualsiasi istruzione (altrimenti
dà errore)
• Nel C++ la dichiarazione può essere fatta in qualsiasi momento – noi la
riterremo una cattiva pratica e per questa fase sarà VIETATA
13. Dichiarazione di variabili
FORMA GENERALE
<tipo di dato> <nome> [, <nome> ];
dove:
<tipo di dato> è uno dei tipi di dati presenti nel
sistema, oppure definito dall’utente o tramite librerie
<nome> è un identificatore
ESEMPI:
•int a;
•float x,y;
14. Tipi di dati scalari di base in C/C++
• int numero intero (solitamente 4 byte)
• float numero con virgola (solitamente 4 byte)
• double numero con virgola a doppia precisione
(solitamente 8 byte)
• char una lettera o cifra (1 byte, SOLO UNO. Si
pronuncia “KAR”)
Alcuni compilatori possono introdurre tipi
personalizzati come byte, _uint64, ma possono
sempre essere ricondotti ai tipi base
15. Modificatori
•short (riduce i byte a disposizione)
•long (aumenta i dati a disposizione)
•long long (aumenta MOLTO i dati a disposizione)
•unsigned (permette solo numeri positivi)
•register (accelera le prestazioni, usare con
prudenza)
•static (rende la variabile semipermanente)
•const (solo C++, la rende immutabile)
16. Modificatori (esempi)
•short int pluto; → short pluto;
•long int pippo; → long pippo;
•long double paperino;
•register unsigned long long int strano;
(NON TUTTE LE COMBINAZIONI SONO
POSSIBILI)
PER MAGGIORI DETTAGLI CHIEDERE AL PROF.
DI TEPSIT.
19. Nulla!
• Esattamente
• In una scatola nuova non c’è nulla
• Ma una variabile è memorizzata in
una sezione di memoria del
computer, quindi c’è SEMPRE
qualcosa.
• Cosa c’è quindi dentro a una
variabile appena dichiarata?
20. Boh!
• Infatti
• Però questo non è accettabile
(ricordate le proprietà degli
algoritmi?)
• E’ quindi buona norma assegnare
un valore noto alle variabili usate.
• Tale procedura si dice
inizializzazione.
• In C/C++/Java e altri linguaggi le
variabili numeriche sono
inizializzate a 0. Cattiva pratica.
21. Esempi
•short int pluto = 4;
•char lettera = ‘A’;
•double x = 0.5;
(TECNICAMENTE NON SI TRATTA DI ISTRUZIONI;
SONO PREASSEGNAZIONI ESEGUITE IN FASE DI
COMPILAZIONE. NEL C++ PUO’ ESSERE
DIVERSO)
25. In generale
• Mettere un oggetto dello stesso tipo in un contenitore grande riesce
sempre (sprechiamo solo spazio)
• Mettere un oggetto grande in un contenitore piccolo in generale richiede
dei sacrifici e non può non riuscire.
• Questa procedura si chiama casting (lit. throw (something) forcefully in a
specified direction; utilizzato anche per dare forma, per esempio nella
modellazione e/o nei film) o conversione.
• Il primo tipo è detto conversione implicita.
• Esempi
long double ← double ← float
long long int ← long int ← int ← short int ← char
26. Casting esplicito
• In altri casi occorre espressamente indicare il tipo di conversione
premettendo il tipo fra parentesi tonda PRIMA della variabile da usare.
• Può anche non riuscire…. Occorre controllare il risultato!
• Esempi
float x; long double y;
y = (float) x;
int z ; short q;
q = (int) (x + z);