Obiettivo: Familiarizzare con l'operatore di modulo "%" (il resto della divisione intera).
Attività:
x, di
tipo int, dopo ognuno degli assegnamenti seguenti?
x = 16 / 2; x = 15 / 2; x = 16 % 2; x = 15 % 2;Scrivete un breve programma per verificare che la vostra risposta è corretta. Suggerimento: È sufficiente scrivere un programma contenente la dichiarazione della variabile
x e poi i 4 assegnamenti a x dei 4 valori,
ognuno seguito dall'istruzione di visualizzazione del valore di
x (System.out.println).
y il valore 0 se la variabile intera
x è pari, 1 se x è
dispari. Scrivete un breve programma per verificare che la vostra
soluzione è corretta. Suggerimento: ripensate
al risultato delle ultime due operazioni dell'esercizio precedente e
completate (ed eseguite più volte su più valori di
x) il programma seguente:
/* Programma per "..." */
class PariDispari {
public static void main (String[] args) {
int y;
int x;
x = "..."; // valore di prova
y = "..."; //espressione da trovare...
System.out.println(y);
}
}
8 (16 diviso due),
7 (15 diviso 2, con la divisione intera, fa 7 con resto
1), 0 (il resto della divisione di 16 per 2) e
1 (il resto della divisione di 15 per 2). Il programma
per verificare la risposta è il seguente:
class ValoriDiX {
public static void main (String[] args) {
int x;
x = 16 / 2;
System.out.println(x);
x = 15 / 2;
System.out.println(x);
x = 16 % 2;
System.out.println(x);
x = 15 % 2;
System.out.println(x);
}
}
In questo programma viene usata una variabile x di tipo
int; ad essa vengono assegnati in sequenza i 4 valori
risultanti dalle 4 espressioni, e questi valori vengono via via
visualizzati con l'istruzione
System.out.println(x). Compilando ed eseguendo il
programma si ottiene:
>javac ValoriDiX.java >java ValoriDiX 8 7 0 1
x per due e ne prendiamo il resto (con l'operatore di
modulo %), otteniamo il valore da assegnare a
x. Quindi l'espressione cercata è x %
2 e il programma va completato così:
class PariDispari {
public static void main (String[] args) {
int y;
int x;
x = 17;
y = x % 2;
System.out.println(y);
}
}
Assegnando a x un valore, ricompilando ogni volta ed
eseguendo si otterrà in output 0 se il valore
assegnato a x è pari e 1 se è
dispari. Ad esempio, compilando ed eseguendo il programma precedente
si ottiene:
>javac PariDispari.java >java PariDispari 1È necessario ricompilare perché per assegnare un valore a
x si deve modificare il sorgente Java; in
realtà, come vedremo nelle prossime esercitazioni, sarebbe
possibile determinare durante l'esecuzione il valore da
assegnare a x, e questo eviterebbe di dover modificare e
ricompilare il programma ogni volta.
Stefano Mizzaro