Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto Istruzione if
Soluzione esercizio Ese03_1 Scrivere un programma che chiede all utente di inserire 5 numeri double corrispondenti al prezzo in euro di 5 oggetti da comprare. Restituisce in output il costo totale da pagare per l'acquisto. Scrive in output anche il resto che il cassiere deve restituire (supponendo che l'utente paghi con una banconota da 20 Euro). NOTA1: Per acquisire in input valori double usare n = tastiera.nextdouble(); NOTA2: utilizzare SOLTANTO 2 variabili
...riprendiamo dalla lezione scorsa
Dichiarazione di variabili Dichiarare una variabile significa sceglierne il nome e il tipo. int numerocestini,uovapercestino; Il tipo di una variabile determina quale genere di valore potrà contenere. (int, double, char, etc.). Una variabile deve essere dichiarata prima di essere utilizzata in una istruzione.
Sintassi ed esempi sintassi <tipo> <nome1>,<nome2>, ; esempi int num1, valore, contapassi; double media, tassointeresse; char risposta; String domanda;
2 famiglie di tipi Un tipo classe è usato per una classe di oggetti ed ha sia dati che metodi "Java is fun" è un valore del tipo classe String Un tipo primitivo è usato per valori semplici tipo come numeri o singoli caratteri. int, double, char sono tipi primitivi.
Tipi Primitivi
Notazione esponenziale Chiamata anche scientifica o a virgola mobile (floating-point). Esempi: 865000000.0 corrisponde a 8.65e8 0.000483 corrisponde a 4.83e-4
Inprecisione nei numeri Floating-Point I numeri a virgola mobile sono spesso solo approssimazioni visto che possono contenere solo un numero finite di cifre. Quindi 1.0/3.0 è un po' meno di 1/3. Se faccio : 1.0/3.0 + 1.0/3.0 + 1.0/3.0 ottengo un po' meno di 1. ATTENZIONE!
Constanti Chiamiamo costanti tutti i valori numerici (interi o con la virgola), i caratteri e le stringhe. Esempio: 2, 3.7, 'y, buongiorno Le costanti numeriche possono essere precedute dal segno + o - Le costanti floating-point possono essere scritte Con delle cifre dopo il punto decimale Usando la notazione esponenziale.
Dichiarazione di Costanti Java permette di: Definire una variabile Inizializzarla Fissarne il valore in modo da non poter essere cambiato nel corso del programma (corrisponde al nostro concetto di costante!)
Dichiarazione di Costanti Sintassi: public static final <tipo> <nome> =<valorecostante>; Esempi: public static final double PI = 3.14159; public static final String SALUTO_FINALE = "Grazie e arrivederci!"; Per convenzione, per i nomi delle costanti si usano tutte lettere maiuscole e _
Istruzione di assegnamento Uso l operatore = Sintassi: <variabile> = <espressione> Posso assegnare un valore costante o il valore di un altra variabile o il valore di una espressione. Importante: devo assegnare un valore compatible con il <tipo> della variabile. int num; num= 6; char risp; risp= s ;
Compatibilità di assegnamento Java è un linguaggio fortemente tipato. Per esempio non si può assegnare un valore float ad una variabile dichiarata int. Alcune conversioni sono però consentite. float numero = 7; è possible assegnare un valore intero ad una variabile di tipo float.
Compatibilità di assegnamento Il valore di un tipo si può assegnare ad una variabile di un qualsiasi tipo a destra nello schema sotto: byte -> short -> int -> long -> float --> double ATTENZIONE: non si può fare il contrario!
Compatibilità di assegnamento Si può anche assegnare un valore di tipo char ad una variabile di tipo int. ESEMPIO: int risposta; risposta = 's'; DOMANDA: quale valore assume la variabile risposta? RISPOSTA: risposta = 115
Casting di tipi Il casting di tipo cambia temporaneamente il tipo di una variabile dal tipo dichiarato a un altro tipo indicato tra parentesi tonde. double distanza; distanza = 9.0; int valore; valore= (int)distanza; Illegale senza(int) I valori dopo la virgola vengono troncati (non arrotondati!)
Casting di tipi ATTENZIONE al casting tra int e char ESEMPIO char simbolo='6'; int valore; valore = (int) simbolo; DOMANDA: quale valore assume la variabile valore? RISPOSTA: valore= 54
Operatori Aritmetici Espressioni aritmetiche sono formate usando gli operatori +, -, *, / insieme a variabili e numeri (operandi). Il risultato è un numero. Se entrambi gli operandi sono dello stesso tipo, il risultato è di quel tipo. Quando un operando è di tipo float e l altro è di tipo intero il risultato è di tipo float. Se gli operandi sono di vari tipi, il risultato è del tipo più a destra della lista sotto: byte -> short -> int -> long -> float -> double
L operatore divisione Se uno dei due operandi è di tipo float, l operatore divisione (/) si comporta come ci aspettiamo. ATTENZIONE! Se entrambi gli operandi sono interi, il risultato è troncato e non arrotondato. Esempio: 99/100 dà come risultato 0.
L operatore modulo (mod ) L operatore modulo (%) è usato con operandi interi e calcola il resto della divisione Esempio: 14 diviso 4 dà 3 con il resto di 2. quindi 14 % 4 è uguale a 2.
Altri operatori unari Si usano per incrementare o decrementare una variabile di 1 Non possono essere usati su costanti o espressioni Operatore Incremento ++ cont++ o ++cont Operatore Decremento -- cont-- or--cont
Operatori ++ e -- (Incremento e Decremento) Le seguenti espressioni sono equivalenti: cont++; ++cont; cont = cont + 1; cont--; --cont; cont = cont - 1;
NOTA la differenza! Se scrivo int m = 4; int ris = 3 * (++m) Dopo l esecuzione, ris vale 15 e m vale 5 Se scrivo int m = 4; int ris = 3 * (m++) Dopo l esecuzione, ris vale 12 e m vale 5
Parentesi Le espressioni aritmetiche possono contenere anche delle parentesi (, ) che cambiano l ordine di precedenza con cui applicare gli operatori In assenza di parentesi gli operatori vanno applicati seguendo le regole di precedenza (analoghe a quelle dell algebra!) e, a parità di precedenza, si procede da sinistra verso destra.
Regole di precedenza Operatori unari +, -, ++, -- Operatori binari *, /, %, Operatori binari +, -. Più alta Operatore di assegnamento = Esempio: val= -cont + n1 * ++n2 Più bassa
Altri operatori di assegnamento Esistono altri operatori di assegnamento ottenuti combinando l operatore = con gli operatori aritmetici. Sono: +=,-=,*=, /= ESEMPIO: num += 5; è equivalente a num = num + 5;
Operatori di confronto Sono operatori che applicati a variabili di "tipo numerico (o char)" danno come risultato un valore booleano true o false Esempi: num > 5; n1 + n2 >= 14; valore == n1;
Operatori di confronto in Java
Flusso del programma Flusso del programma è l'ordine con cui vengono eseguite le istruzioni in un programma. Sequenza Eseguo nell'ordine in cui sono scritte Selezione (branch) scelgo tra 2 o più possibili istruzioni Iterazione (loop) Ripeto una istruzioni un certo numero di volte
L'istruzione if Sintassi if ( <valore booleano> ) <istruzione_1>; <istruzione_2>; <istruzione_3>;... Significato <istruzione_1> viene eseguita soltanto se <valore booleano> è true
Istruzioni composte Quando un gruppo di istruzioni è racchiusto tra coppia di parentesi graffe ({}), esse formano una unica istruzione composta. Sintassi: { } Istruzione_1; Istruzione_2;
Istruzioni composte Uso istruzione composta per eseguire diverse istruzioni dentro un if if (cont < 3) { } totale = 0; System.out.println("tutto sbagliato!"; prezzo = 50;......
Vediamo i programmi: larger2 larger3 larger5
Vediamo i programmi: misuracerchio.java misuracerchio2.java
Esercizi codice Ese04_x Esercizio 1 (utilizzare media_new) Scrivere un programma che chiede all'utente di inserire 5 numeri interi tra 1 e 30 che corrispondono ai voti ottenuti agli esami da uno studente. Calcola poi la media e la scrive in output. Se la media dei punteggi è maggiore di 24 scrive un messaggio di congratulazioni. Prima di terminare, scrive un saluto. Esercizio 2 Scrivere un programma che chiede all'utente di inserire 7 numeri interi tra 1 e 30 che corrispondono ai voti ottenuti agli esami da 7 studenti. Calcola poi quanti sono i voti "sufficienti" (>= 18) e scrive sullo schermo quanti sono gli studenti che hanno passato l'esame.
Esercizi codice Ese04_x Esercizio 3 (utilizzare Ese03_1) Scrivere un programma che simula un acquisto di 5 oggetti dal costo inferiore ai 4 euro ciascuno. Si assume che l'utente paghi con una banconota da 20 Euro e che il cassiere dia il resto solo in monete (da 2 e 1 Euro + tutte le monete da 50, 20,10,5,2,1 centesimi). Il cassiere ha a disposizione tante monete per ogni tipo e dà il resto con il minor numero di monete possibile. Il programma chiede all utente di inserire i 5 prezzi (double) e restituisce in output la spesa totale, il resto dei venti euro e quante monete per ogni tipo verranno restituite come resto.
ESEMPIO di output in esecuzione: Inserisci il prezzo: 2,30 Inserisci il prezzo: 2,15... Il totale da pagare e' 12,25. Resto 7,75. Dare: 3 moneta da 2 Euro 1 moneta da 1 Euro 1 moneta da 50 centesimi 2 moneta da 20 centesimi 1 moneta da 5 centesimi