Esercitazione 3
Uso di Istruzioni Condizionali ed Espressioni Booleane
Programmazione e Analisi di Dati Mod. A – Programmazione Java
Esercizio 1. Scrivere un programma Uguali che chiede all’utente di inserire due numeri interi e stampa il messaggio "sono uguali!" se i due numeri sono uguali e "non sono uguali!" se i due numeri non lo sono.
Esercizio 2. Modificare il programma Uguali dell’esecizio 1 in modo che usi un unico comando if privo del ramo else (suggerimento: notate che i due messaggio da stampare hanno una parte in comune che viene stampata comunque...)
Esercizio 3. Scrivere un programma Maggiore3Valori che chiede all’utente di inserire tre numeri interi e stampa il pi`u grandi di questi.
Esempio di esecuzione:
I n s e r i c i tre n u m e r i : 24
34 15
Il m a g g i o r e e’ : 34
Esercizio 4. Scrivere un programma Ordina3Valori che chiede all’utente di inserire tre numeri interi e stampa su un’unica riga in ordine crescente.
Esempio di esecuzione:
I n s e r i c i tre n u m e r i : 24
34 15
R i s u l t a t o : 15 24 34
Esercizio 5. Scrivere un programma PariPiccolo che chiede all’utente di inserire un numero intero e visualizza il messaggio "Pari e Piccolo" se il numero `e pari ed `e compreso tra 0 e 100, altrimenti stampa il messaggio "Non e’ pari e piccolo". (Nota: questo programma si pu`o realizzare usando if-else annidati o espressioni booleane. Provate entrambe le versioni.)
Esercizio 6. Modificare la guardia del comando if nel seguente programma in modo da ottenere una guardia equivalente, ma che non contenga l’operatore logico &&.
i m p o r t j a v a . u t i l . S c a n n e r ; p u b l i c c l a s s D e M o r g a n {
p u b l i c s t a t i c v o i d m a i n ( S t r i n g [] a r g s ) { S c a n n e r i n p u t = new S c a n n e r ( S y s t e m . in );
1
S y s t e m . out . p r i n t l n (" I n s e r i s c i due n u m e r i i n t e r i ");
int n u m 1 = i n p u t . n e x t I n t ();
int n u m 2 = i n p u t . n e x t I n t ();
b o o l e a n n u m 1 p a r i = (( n u m 1 % 2 ) = = 0 ) ; b o o l e a n n u m 2 p a r i = (( n u m 2 % 2 ) = = 0 ) ;
if ( n u m 1 p a r i && n u m 2 p a r i ) // m o d i f i c a r e s o l o q u e s t a g u a r d i a S y s t e m . out . p r i n t l n (" S o n o e n t r a m b i p a r i ");
} }
NOTA: la trasformazione che avete operato nella guardia dell’if `e nota con il nome di “Legge di De Morgan”
Esercizio 7. Scrivere un programma Calcolatrice che chiede all’utente di inserire due numeri interi x e y, poi chiede di inserire un numero compreso tra 1 e 4, che servir`a per determinare che operazione calcolare su x e y secondo la seguente mappatura
• 1 ⇒ somma
• 2 ⇒ sottrazione
• 3 ⇒ moltiplicazione
• 4 ⇒ divisione (intera)
Il programma dovr`a visualizzare il risultato dell’operazione scelta su x e y. Nel caso della divisione dovranno essere visualizzati sia il quoziente che il resto. Se l’utente inserice un valore diverso da 1,...,4 il programma dovr`a visualizzare il messaggio "Operazione errata". (Nota: utilizzare il comando switch per scegliere tra le quattro operazioni).
Esempio di esecuzione:
I n s e r i r e due n u m e r i i n t e r i : 12
5
S c e g l i e r e q u a l e o p e r a z i o n e e f f e t t u a r e : 4
Q u o z i e n t e : 2 R e s t o : 2
Esercizio 8. Scrivere un programma Festivita che chiede all’utente di inserire una data espressa come due numeri interi: uno che rappresenta un giorno del mese (1-31) e uno che rappresenta un mese dell’anno (1-12). Il programma innanzitutto controlla che i numeri inseriti siano validi (compresi negli intervalli previsti) e poi verifica se la data inserita corrisponda a una delle seguenti festivit`a:
• Capodanno (1/1)
• Epifania (6/1)
• Ferragosto (15/8)
• Natale (25/12)
Se la data inserita corrisponde a una festivit`a il programma deve visualizzare il nome della festivit`a.
Altrimenti deve visualizzare il messaggio "Non e’ una festivita’"
Esempi di esecuzione:
I n s e r i s c i il g i o r n o : 45
E R R O R E : V A L O R E G I O R N O E R R A T O !
2
I n s e r i s c i il g i o r n o : 20
I n s e r i s c i il m e s e : 8
Non e’ una f e s t i v i t a ’
I n s e r i s c i il g i o r n o : 25
I n s e r i s c i il m e s e : 12
N a t a l e
Esercizio 9. Scrivere un programma Giudizio che chiede all’utente di inserire un numero intero che rappresenta il voto ricevuto ad un esame universitario (in trentesimi, senza la lode) e si comporta come segue:
• Se il numero `e minore di 0 o maggiore di 30 visualizza il messaggio "Numero errato"
• Se il numero `e minore `e compreso tra 0 e 17 visualizza il messaggio "Esame non superato"
• Se il numero `e minore `e compreso tra 18 e 24 visualizza il messaggio "Giudizio: sufficiente"
• Se il numero `e minore `e compreso tra 25 e 30 visualizza il messaggio "Giudizio: buono"
Successivamente, se il giudizio `e sufficiente oppure buono il programma chiede all’utente se voglia regis- trare il voto. L’utente pu`o rispondere inserendo 0 per non registrare, oppure con 1 per registrare. Nel primo caso il programma visualizza il messagio Voto rifiutato, nel secondo caso invece visualizza il messaggio Voto accettato.
(Nota: utilizzare variabili booleane errato, nonSuperato, sufficiente e buono che avranno valori true o false a seconda che il voto ricada o meno nelle rispettive categorie elencate sopra, e usare tali variabili nelle guardie dei comandi if-else. Suggerimento: rivedere l’esempio Salute presentato a lezione.)
Esempio di esecuzione:
I n s e r i s c i il v o t o : 21
G i u d i z i o : s u f f i c i e n t e V u o i r e g i s t r a r e il v o t o ? 1
V o t o a c c e t t a t o
Esercizio 10. Modificare il programma Giudizio dell’esecizio precedente usando il comando switch al posto delle variabili booleane e degli if-else per determinare la categoria in cui ricade il valore inserito dall’utente. (Suggerimento: serviranno 31 case e un default)
3