SlideShare a Scribd company logo
1 of 27
Le variabili
Di che parliamo?
•Le variabili, nella programmazione, sono
importanti!
•Concetto teorico e
•Implementazione pratica.
•L’inizializzazione
•Il casting
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
Come immaginarla
• Potete pensarlo come a uno scatolone con una etichetta (o nome, o
identificatore), idealmente con un senso
IncassiOdierni
Come usarla
• Può contenere un valore.
• L’operazione di riempimento si chiama ASSEGNAZIONE
• Vari simboli indicano questa operazione: ← , =, := , a seconda del contesto
IncassiOdierni
$250
Come usarla
• Ripetere l’operazione di assegnazione cancella il risultato eventualmente
presente.
•
IncassiOdierni
$300$250
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.
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
Dichiarazioni
Esistono molti tipi di scatole….
• Ogni scatola è pensata per un particolare esempio di contenuto
….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
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
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;
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
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)
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.
Inizializzazione
Che trovate dentro una scatola nuova?
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?
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.
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)
Casting
Cosa succede se...
• Cerchiamo di mettere un oggetto in un contenitore non adatto?
Dobbiamo fare degli aggiustamenti!
• Alcuni riusciranno meglio di altri.
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
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);
That’s it!
E’ tutto per oggi!
(o forse no)

More Related Content

What's hot

2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#Marco Parenzan
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaCristina Attori
 
14 - Programmazione: Stream e File
14 - Programmazione: Stream e File14 - Programmazione: Stream e File
14 - Programmazione: Stream e FileMajong DevJfu
 
Py a2 python-documentazione
Py a2 python-documentazionePy a2 python-documentazione
Py a2 python-documentazioneMajong DevJfu
 
Py a3 python-metaprogramming
Py a3 python-metaprogrammingPy a3 python-metaprogramming
Py a3 python-metaprogrammingMajong DevJfu
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusionePiero Fraternali
 
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggettiMajong DevJfu
 
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa penaLe 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa penaAdvenias
 

What's hot (15)

2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#
 
T4 tipizzazione
T4 tipizzazioneT4 tipizzazione
T4 tipizzazione
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
T7 librerie
T7 librerieT7 librerie
T7 librerie
 
Il nostro amico Stan
Il nostro amico Stan   Il nostro amico Stan
Il nostro amico Stan
 
Introduzione a Python
Introduzione a PythonIntroduzione a Python
Introduzione a Python
 
14 - Programmazione: Stream e File
14 - Programmazione: Stream e File14 - Programmazione: Stream e File
14 - Programmazione: Stream e File
 
Py a2 python-documentazione
Py a2 python-documentazionePy a2 python-documentazione
Py a2 python-documentazione
 
Py a3 python-metaprogramming
Py a3 python-metaprogrammingPy a3 python-metaprogramming
Py a3 python-metaprogramming
 
Py t1 python-intro
Py t1 python-introPy t1 python-intro
Py t1 python-intro
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione
 
Bash programming
Bash programmingBash programming
Bash programming
 
Corso Python 2020 - Lezione 2
Corso Python 2020 - Lezione 2Corso Python 2020 - Lezione 2
Corso Python 2020 - Lezione 2
 
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggetti
 
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa penaLe 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
 

Similar to Variabili

Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1Paolo Ferretti
 
lezione1.pdf
lezione1.pdflezione1.pdf
lezione1.pdfdttdigi
 
corso oracle plsql.ppt
corso oracle plsql.pptcorso oracle plsql.ppt
corso oracle plsql.pptssuserf7962d
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...UltraUploader
 
01 - Ereditarietà e polimorfismo
01 - Ereditarietà e polimorfismo01 - Ereditarietà e polimorfismo
01 - Ereditarietà e polimorfismoFederico Russo
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!MarioTraetta
 
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpCorso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpGiuseppe Cramarossa
 
09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del CodiceMajong DevJfu
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 

Similar to Variabili (16)

Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1
 
Template
TemplateTemplate
Template
 
Intro to JavaScript
Intro to JavaScriptIntro to JavaScript
Intro to JavaScript
 
Corso c++
Corso c++Corso c++
Corso c++
 
lezione1.pdf
lezione1.pdflezione1.pdf
lezione1.pdf
 
Corso Java 1 - BASE
Corso Java 1 - BASECorso Java 1 - BASE
Corso Java 1 - BASE
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
corso oracle plsql.ppt
corso oracle plsql.pptcorso oracle plsql.ppt
corso oracle plsql.ppt
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
 
05 1 intro-struttura
05 1 intro-struttura05 1 intro-struttura
05 1 intro-struttura
 
01 - Ereditarietà e polimorfismo
01 - Ereditarietà e polimorfismo01 - Ereditarietà e polimorfismo
01 - Ereditarietà e polimorfismo
 
Corso java base
Corso java baseCorso java base
Corso java base
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!
 
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpCorso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
 
09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 

More from Marcello Missiroli

Guida del perfetto Algoritmista I
Guida del perfetto Algoritmista IGuida del perfetto Algoritmista I
Guida del perfetto Algoritmista IMarcello Missiroli
 
5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppoMarcello Missiroli
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Marcello Missiroli
 
L'avvento del programmatore sociale
L'avvento del programmatore socialeL'avvento del programmatore sociale
L'avvento del programmatore socialeMarcello Missiroli
 
Lo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in JavaLo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in JavaMarcello Missiroli
 
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)Marcello Missiroli
 
Uefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il maleUefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il maleMarcello Missiroli
 

More from Marcello Missiroli (20)

Algorithmist guide II
Algorithmist guide IIAlgorithmist guide II
Algorithmist guide II
 
Guida del perfetto Algoritmista I
Guida del perfetto Algoritmista IGuida del perfetto Algoritmista I
Guida del perfetto Algoritmista I
 
Workshop: Introduzione ad TDD
Workshop: Introduzione ad TDDWorkshop: Introduzione ad TDD
Workshop: Introduzione ad TDD
 
Dal c a Java (3/3)
Dal c a Java (3/3)Dal c a Java (3/3)
Dal c a Java (3/3)
 
Dal C a Java (2/3)
Dal C a Java (2/3)Dal C a Java (2/3)
Dal C a Java (2/3)
 
Dal C a Java (1/3)
Dal C a Java (1/3)Dal C a Java (1/3)
Dal C a Java (1/3)
 
Sviluppo degli algoritmi
Sviluppo degli algoritmiSviluppo degli algoritmi
Sviluppo degli algoritmi
 
5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
Big O Notation
Big O NotationBig O Notation
Big O Notation
 
Insegnare Agile
Insegnare AgileInsegnare Agile
Insegnare Agile
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
 
L'avvento del programmatore sociale
L'avvento del programmatore socialeL'avvento del programmatore sociale
L'avvento del programmatore sociale
 
Il ciclo for
Il ciclo forIl ciclo for
Il ciclo for
 
Lo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in JavaLo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in Java
 
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
 
Controllo di versione e Git
Controllo di versione e GitControllo di versione e Git
Controllo di versione e Git
 
Moodle: i compiti (homework)
Moodle: i compiti (homework)Moodle: i compiti (homework)
Moodle: i compiti (homework)
 
Uefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il maleUefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il male
 
Corso Moodle: presentazione
Corso Moodle: presentazioneCorso Moodle: presentazione
Corso Moodle: presentazione
 

Variabili

  • 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.
  • 18. Che trovate dentro una scatola nuova?
  • 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)
  • 23. Cosa succede se... • Cerchiamo di mettere un oggetto in un contenitore non adatto?
  • 24. Dobbiamo fare degli aggiustamenti! • Alcuni riusciranno meglio di altri.
  • 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);
  • 27. That’s it! E’ tutto per oggi! (o forse no)