Programmazione [.2cm] - Tipi di dato...
Transcript of Programmazione [.2cm] - Tipi di dato...
![Page 1: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/1.jpg)
Programmazione
Programmazione
– Tipi di dato primitivi –
Francesco Tiezzi
Scuola di Scienze e Tecnologie
Sezione di Informatica
Universita di Camerino
Lucidi originali di Pierluigi Crescenzi
![Page 2: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/2.jpg)
Programmazione
Tipi di dato primitivi
Programmazione
Concetti base
I DatiI VariabileI Tipo
I IstruzioniI Istruzioni baseI Strutture di controlloI Sotto-programmi
![Page 3: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/3.jpg)
Programmazione
Tipi di dato primitivi
Programmazione–Concetti base
I Variabili: usate per immagazzinare dati come numeri e lettere
I Nome: identificatore con cui riferirsi alla variabileI Valore: dato contenuto in variabileI Tipo: genere di dati che la variabile puo contenere
I Istruzioni di baseI Istruzione di assegnamento: permettono di assegnare valore
a variabileI Esempio
somma = primoNumero+secondoNumero;
I Istruzioni di input e output: permettono di inserire dati dafile o da tastiera e scrivere su disco, monitor o stampante
I Le istruzioni sono normalmente eseguite in sequenza, a menodi esecuzioni di istruzioni di controllo che modificano il flussodi esecuzione (cicli e diramazioni)
![Page 4: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/4.jpg)
Programmazione
Tipi di dato primitivi
Programmazione–Concetti base
I Input e output in Java--
int x=Input.getInt("Inserisci un numero intero");
System.out.println( "Numero inserito: "+x );
I Stampa nel pannello etichettato OutputI Anche getLong, getDouble e getChar
![Page 5: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/5.jpg)
Programmazione
Tipi di dato primitivi
Variabili-Dichiarazione di variabili
Variabili: dichiarazione di variabili
I Dichiarazione: consente di conoscere nome di variabile,memoria da riservare per variabile e come memorizzare
I Consiste di tipo, seguito da lista di nomi (separati da virgole)terminata con punto e virgola
I Sintassitipo variabile 1,variabile 2, . . . ;
I Esempio
int punteggio;
char lettera;
double larghezza ,altezza;
![Page 6: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/6.jpg)
Programmazione
Tipi di dato primitivi
Variabili-Identificatori
Variabili: identificatori
I Identificatore: nome di variabili (e di altro)
1. Non possono cominciare con una cifra2. Contengono lettere, cifre, simbolo _ e simbolo $
3. Sono sensibili alle maiuscole
I Buone norme
1. Devono avere un significato e suggerire utilizzo di variabile2. Devono iniziare con lettera minuscola e seguire notazione “a
cammello”3. Non devono contenere simbolo $
I Errori di ortografia rilevati da compilatore
![Page 7: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/7.jpg)
Programmazione
Tipi di dato primitivi
Tipi di dato primitivi
Tipi di dato primitivi
Nome Tipo Memoria
byte intero 1 byte
short intero 2 byte
int intero 4 byte
long intero 8 byte
float reale 4 byte
double reale 8 byte
char carattere 2 byte
boolean vero/falso 1 byte
![Page 8: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/8.jpg)
Programmazione
Tipi di dato primitivi
Tipi di dato primitivi
Numeri in virgola mobile
I Rappresentazione floating point di x : mantissa m edesponente e tali che x = m · Be
I Notazione scientifica: B = 10, anche indicata con EI Esempio: 2.34E+2 e 234.0 e 1.234E-3 e 0.001234
I Mantissa ed esponente occupano quantita fissata di memoriae sono limitati inferiormente e superiormente
I Numero cifre decimali in mantissa indica precisionerappresentazione
I Numeri double: numeri in virgola mobile a precisione doppia
![Page 9: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/9.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
Istruzione di assegnazione
I Sintassivariabile = espressione;
I Esempio
punteggio = giuste -sbagliate;
area = larghezza*altezza;
punteggio = punteggio +1;
I Variabile a sinistra segno uguale posta uguale a valoreespressione a destra
I Segno di uguale detto operatore di assegnazioneI Espressione: variabile, costante o espressione costituita da
operatori aritmetici
![Page 10: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/10.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
Esempio
double base;
double altezza;
double area;
base = 4.0;
altezza = 8.0;
area = (base*altezza )/2;
System.out.println( "Area: "+area );
![Page 11: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/11.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
Formula di Gauss
I Somma primi n numeri interi
n∑i=1
i =n(n + 1)
2
int n;
n = Input.getInt( "Inserisci il numero n" );
int somma;
somma = n*(n+1)/2;
System.out.println( "Somma: "+somma );
![Page 12: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/12.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
I Stesso identificatore puo apparire in due lati operatore diassegnazione
int contatore;
contatore = 5;
System.out.println( "Contatore: "+contatore );
contatore = contatore -1;
System.out.println( "Contatore: "+contatore );
contatore = contatore -1;
System.out.println( "Contatore: "+contatore );
I Sottrae uno a valore di contatore e usa risultato perimpostare nuovo valore di contatore
![Page 13: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/13.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
Letterali
I A differenza di una variabile, il valore di un letterale noncambia
I Letterali di tipo numero come 5.0 (costante reale) e 5(costante di tipo intero)
I Letterali di tipo carattere come ’A’, ’B’ e ’*’I Letterali di tipo Booleano, ovvero le costanti true e falseI Letterali di tipo stringa: come "Contatore: "
![Page 14: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/14.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
Numeri reali e perdita di precisione
I Numeri double piu estesi di numeri int ma meno precisi
double numeroOrig = 2E14;
double numeroRid = numeroOrig -0.05;
double differenza = numeroOrig -numeroRid;
System.out.println( "Differenza: "+differenza );
![Page 15: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/15.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
Scambio di variabili
I Operazione molto frequente
I Non puo essere ridotta a esecuzione di
x = y;
y = x;
I Si perde valore iniziale di x ed entrambe le variabili hanno altermine dell’esecuzione il valore di y prima dello scambio
I Puo essere eseguita da istruzioni:
z = x;
x = y;
y = z;
![Page 16: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/16.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
Scambio di variabili
I Operazione molto frequente
I Non puo essere ridotta a esecuzione di
x = y;
y = x;
I Si perde valore iniziale di x ed entrambe le variabili hanno altermine dell’esecuzione il valore di y prima dello scambio
I Puo essere eseguita da istruzioni:
z = x;
x = y;
y = z;
![Page 17: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/17.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili
Scambio di variabili
I Operazione molto frequente
I Non puo essere ridotta a esecuzione di
x = y;
y = x;
I Si perde valore iniziale di x ed entrambe le variabili hanno altermine dell’esecuzione il valore di y prima dello scambio
I Puo essere eseguita da istruzioni:
z = x;
x = y;
y = z;
![Page 18: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/18.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili–Assegnare valori iniziali alle variabili
Assegnazione valori iniziali alle variabili
I Opzionale ma consigliato
I Sintassitipo var 1 = esp 1,var 2 = esp 2, . . . ;
I Esempio
int punteggio = 0;
char lettera = ’p’;
double altezza = 12.34, base = 5.1;
![Page 19: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/19.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili–Operatori di assegnazione combinati
I Ottenuti combinando operatore di assegnazione con operatorearitmetico
int punteggio = 0;
System.out.println( "Punteggio: "+punteggio );
punteggio += 5;
System.out.println( "Punteggio: "+punteggio );
I Istruzionepunteggio += 5;
equivalente apunteggio = punteggio+5;
I Espressione a destra trattata come singola unitaI x *= a+b;
equivalente ax = x*(a+b);
e non ax = x*a+b;
![Page 20: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/20.jpg)
Programmazione
Tipi di dato primitivi
Assegnare valori alle variabili–Commenti
Commenti
I Due tipi: quelli su una singola riga e quelli su righe multiple
I Sintassi
// commento limitato a una singola linea
/* commento distribuito su piu’ linee
senza limiti sul numero di righe */
I Esempio
boolean primo; // indica se il numero e’ primo
/* La variabile primo indica se il numero e’
primo: la primalita ’ viene determinata dividendo
il numero per tutti i suoi possibili divisori. */
boolean primo;
![Page 21: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/21.jpg)
Programmazione
Tipi di dato primitivi
Conversione di tipo–Conversione implicita
Conversione di tipoI Conversione: necessaria per assegnare valore di un tipo a
variabile di tipo diversoI Cambia il tipo del valore non della variabile
I Implicita (ovvero automatica): si assegna valore di tipo “piubasso” a variabile di tipo “piu alto” nella gerarchia
1. double
2. float
3. long
4. int
5. short
6. byte
I Esempio
double x;
int n = 5;
x = n;
System.out.println( "x: "+x );
![Page 22: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/22.jpg)
Programmazione
Tipi di dato primitivi
Conversione di tipo–Conversione implicita
Tipo di un’espressione
I Operandi tutti dello stesso tipo: tipo del valore di ritorno equello degli operandi
I Operandi di tipo diverso: il tipo del valore di ritorno e quellopiu alto nella gerarchia
I Esempio
double a;
int n = 2;
double x = 5.1;
double y = 1.33;
a = (n*x)/y;
System.out.println( "a: "+a );
![Page 23: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/23.jpg)
Programmazione
Tipi di dato primitivi
Conversione di tipo–Conversione esplicita
Conversione esplicita
I Necessaria per assegnare valore di tipo “piu alto“ a variabiledi tipo “piu basso”
I intero = reale;
genera errore
Type mismatch: cannot convert from double to int
I Sintassi var 1 = (tipo)var 2;
I Esempio
numeroIntero = (int)numeroReale;
carattere = (char)numeroIntero;
![Page 24: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/24.jpg)
Programmazione
Tipi di dato primitivi
Conversione di tipo–Conversione esplicita
Conversione implicita e perdita di precisione
I Conversioni da tipi interi a tipi in virgola mobile: perdita diprecisione
I Non tutti i valori di tipo int sono rappresentati nel tipo float
int x = 2109876543;
float y = x;
int z = (int)y;
System.out.println( "x: "+x );
System.out.println( "y: "+y );
System.out.println( "z: "+z );
![Page 25: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/25.jpg)
Programmazione
Tipi di dato primitivi
Conversione di tipo–Conversione esplicita
Troncamento
I Quando si converte un valore di tipo in virgola mobile in untipo intero, la parte decimale viene ignorata
int numeroEuro;
double conto = 26.99;
numeroEuro = (int)conto;
System.out.println( "Euro: "+numeroEuro );
I Non tutti i numeri reali sono rappresentati in modo esatto:troncamento puo causare perdita di precisione
double f = 4.35;
int n = (int )(100*f);
System.out.println( "n: "+n );
![Page 26: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/26.jpg)
Programmazione
Tipi di dato primitivi
Conversione di tipo–Divisione reale e divisione intera
Divisione reale e divisione intera
I Se almeno uno dei due operandi e di tipo float o double,risultato quello aspettato
I Se entrambi operandi sono di tipo intero, parte frazionariaignorata
System.out.println( "5/4.0: "+5/4.0 );
System.out.println("5/4: "+5/4);
![Page 27: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/27.jpg)
Programmazione
Tipi di dato primitivi
Conversione di tipo–Caratteri come interi
Caratteri come interi
Ogni carattere e memorizzato come un intero in accordo ad unparticolare codice (Unicode in Java)
I ASCII e Unicode a cifre un codice diverso dal loro valorenumerico
char cifra = ’6’;
int cifraIntera = cifra;
System.out.println( "Cifra: "+cifraIntera );
I Pero codici cifre sono numeri interi consecutivi a partire da 48
char cifra = ’6’;
int cifraIntera = cifra -48;
System.out.println( "Cifra: "+cifraIntera );
![Page 28: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/28.jpg)
Programmazione
Tipi di dato primitivi
Conversione di tipo–Caratteri come interi
Caratteri come interi
Ogni carattere e memorizzato come un intero in accordo ad unparticolare codice (Unicode in Java)
I ASCII e Unicode a cifre un codice diverso dal loro valorenumerico
char cifra = ’6’;
int cifraIntera = cifra;
System.out.println( "Cifra: "+cifraIntera );
I Pero codici cifre sono numeri interi consecutivi a partire da 48
char cifra = ’6’;
int cifraIntera = cifra -48;
System.out.println( "Cifra: "+cifraIntera );
![Page 29: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/29.jpg)
Programmazione
Tipi di dato primitivi
L’operatore di modulo
L’operatore di modulo
I %: restituisce resto divisione primo operando per secondoI Il valore di ritorno di 20%6 e 2
I Diverse applicazioniI Consente di contare modulo un certo valore n
I Ad esempio, 0, 1, 2, 0, 1, 2, . . .
I Consente di decidere se un numero multiplo di un altroI Primo algoritmo per massimo comun divisore
I Parte integrante di algoritmoI Algoritmo di Euclide
![Page 30: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/30.jpg)
Programmazione
Tipi di dato primitivi
Precedenze e parentesi
Precedenze e parentesi
I Espressioni seguono normali regole di precedenza
1. Operatori unari (ovvero con un solo argomento) +, -, ++, --.2. Operatori binari (ovvero con due argomenti) *, /, %.3. Operatori binari +, -.
I Parentesi forzano precedenza
int x = 10,y = 2;
double f = 0.2;
double risultato = (x+y)*f;
System.out.println( "(x+y)*f: "+risultato );
risultato = x+(y*f);
System.out.println( "x+(y*f): "+risultato );
![Page 31: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/31.jpg)
Programmazione
Tipi di dato primitivi
Operatori di incremento e decremento
Operatori di incremento e decrementoI Aumentano o diminuiscono di uno il valore di variabile interaI punteggio++;
equivale apunteggio = punteggio+1;
e punteggio--;
equivale apunteggio = punteggio-1;
I Operatore precede (segue) operando: valore variabilemodificato prima (dopo) di essere usato
int contatore = 5;
int n = 2*(++ contatore );
int m = 2*( contatore ++);
System.out.println( "n: "+n );
System.out.println( "m: "+m );
System.out.println( "contatore: "+contatore );
![Page 32: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/32.jpg)
Programmazione
Tipi di dato primitivi
Array
Array
I Tipo di dato usato per memorizzare collezione di variabilidello stesso tipo
I Sintassitipo Base[] nome = {lista Valori};tipo Base[] nome = new tipo Base[numero Elementi];
I Esempio
int[] comb = {2, 1, 4, 4};
double [] voto = new double [30];
![Page 33: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/33.jpg)
Programmazione
Tipi di dato primitivi
Array
Variabili di tipo array e locazioni di memoria
int numero = 6;
int[] numeroArray = {6};
numero
6
numeroArray numeroArray[0]
6
![Page 34: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/34.jpg)
Programmazione
Tipi di dato primitivi
Array
Creazione di array e accesso a elementi
I Inizializzando i valori degli elementi
int[] comb = {2, 1, 4, 4};
int i = Input.getInt( "Indice tra 0 e 3" );
System.out.println( "comb["+i+"] = "+comb[i] );
I Specificando numero di elementi
char[] carattere = new char [80];
I Elementi vanno inizializzati
![Page 35: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/35.jpg)
Programmazione
Tipi di dato primitivi
Array
Array e parentesi quadre
I Creare nome di tipo di dati
int[] arrayIntero;
I Parte di speciale sintassi Java per creare nuovi array
int[] arrayIntero = new int [100];
I Accedere a elemento di array
arrayIntero [3] = 1024;
![Page 36: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/36.jpg)
Programmazione
Tipi di dato primitivi
Array–Lunghezza di un array
Lunghezza di un array
I Numero di elementi contenuti in arrayI Accessibile con nome array seguito da punto e da length
int[] primo = {2,3,5,7,11,13};
System.out.println( "Lung: "+primo.length );
I Non modificabile
primo.length = 10;
genera errore
The final field array.length cannot be assigned
![Page 37: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/37.jpg)
Programmazione
Tipi di dato primitivi
Array–Indicizzazione di un array
Indicizzazione di un arrayI Indici partono da 0
I Ultimo indice uguale a lunghezza array meno 1
Indice 0 1 2 3
Valore 97 86 92 71
I Adattare proprio schema numerazione a numerazione Java
int[] punti = {97 ,86 ,92 ,71}; int i = 1;
System.out.println( "Punti "+i+": "+punti[i-1] );
i = i+1;
System.out.println( "Punti "+i+": "+punti[i-1] );
i = i+1;
System.out.println( "Punti "+i+": "+punti[i-1] );
i = i+1;
System.out.println( "Punti "+i+": "+punti[i-1] );
I Accesso a variabile indicizzata con indice fuori dominio generaerrore ArrayIndexOutOfBoundsException
![Page 38: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/38.jpg)
Programmazione
Tipi di dato primitivi
Array–Indicizzazione di un array
Gioco dell’oca
![Page 39: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/39.jpg)
Programmazione
Tipi di dato primitivi
Array–Indicizzazione di un array
Gioco dell’oca
![Page 40: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/40.jpg)
Programmazione
Tipi di dato primitivi
Array–Indicizzazione di un array
Gioco dell’oca
I Tabellone rappresentato da arrayI Valore elementi array: 0 oppure casella in cui spostarsi (premio
o penalita)I Numerazione caselle a partire da 1
int[] tabellone =
{0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,
0,33,0,0,0,0,0,0,35,0,0,0,0,19,0,0,0,48,0,0,
15,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,8,0,0};
I Quattro premi (20, 33, 35 e 48)I Quattro penalita (19, 15, 40 e 8)
![Page 41: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/41.jpg)
Programmazione
Tipi di dato primitivi
Array–Array multi-dimensionali
Array multi-dimensionaliI Consentono di strutturare elementi di collezione in forma di
tabelle a piu dimensioniI Numero di dimensioni determina numero di indici
byte [][][] punto = new byte [2][2][2];
punto [0][0][0] = 0;
punto [0][0][1] = 1;
punto [0][1][0] = 10;
punto [0][1][1] = 11;
punto [1][0][0] = 100;
punto [1][0][1] = 101;
punto [1][1][0] = 110;
punto [1][1][1] = 111;
![Page 42: Programmazione [.2cm] - Tipi di dato primitivididattica.cs.unicam.it/lib/exe/...1920:prog1920_tipi_di_dato_primitivi.pdfTipi di dato primitivi Conversione di tipo{Conversione implicita](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f822413dcfad430c62c2a4f/html5/thumbnails/42.jpg)
Programmazione
Tipi di dato primitivi
Array–Array multi-dimensionali
Gioco della dama
0
1
2
3
4
5
6
7
0 1 2 3 4 5 6 7
char [][] damiera = {
{’n’,’*’,’n’,’*’,’n’,’*’,’n’,’*’},
{’*’,’n’,’*’,’n’,’*’,’n’,’*’,’n’},
{’n’,’*’,’n’,’*’,’n’,’*’,’n’,’*’},
{’*’,’ ’,’*’,’ ’,’*’,’ ’,’*’,’ ’},
{’ ’,’*’,’ ’,’*’,’ ’,’*’,’ ’,’*’},
{’*’,’b’,’*’,’b’,’*’,’b’,’*’,’b’},
{’b’,’*’,’b’,’*’,’b’,’*’,’b’,’*’},
{’*’,’b’,’*’,’b’,’*’,’b’,’*’,’b’}};