L'obiettivo di questa esercitazione è familiarizzare con i seguenti concetti, illustrati nel capitolo 3 del libro:
switch/case
.do/while
e
for
.Ove non altrimenti indicato, rispondete alle domande prima ragionando su carta e poi provando a editare, compilare ed eseguire. Gli esercizi etichettati con l'asterisco (*) sono più difficili: affrontateli dopo aver risolto gli altri.
Obiettivo: Familiarizzare con l'istruzione
switch/case
.
Attività:
switch/case
invece dell'if/else
.if/else
usando lo switch/case
? Perché?
if (x >= 0) System.out.println("x e' positivo"); else System.out.println("x e' negativo");Nota: questo esempio dimostra che lo
switch/case
non è più potente
dell'if/else
.Obiettivo: Familiarizzare con il do/while
.
Attività:
do/while
, un programma che
visualizza i numeri da 1 a 10.while
, un programma che legge da
tastiera un numero intero e visualizza tutti i numeri da 10 fino a
quel numero. Se il numero letto è inferiore a 10, non
visualizza nulla.do/while
invece del while
. Attenzione: se il numero letto è
inferiore a 10, non deve visualizzare nulla.Obiettivo: Familiarizzare con il for
.
Attività:
class Boh { public static void main (String[] args) { for (int i = 1; i < 10; i = i + 1); System.out.println(i); } }Perché? Suggerimento: leggete MOLTO attentamente il codice...
for
, un programma che visualizza
i numeri da 1 a 10. Confrontare con gli analoghi programmi che usano
il while
e il do/while
, scritti in
precedenza.for
, un programma che visualizza
tutti i multipli di 3 da 1 a 30.for
, un programma che legge da
tastiera un numero intero e visualizza tutti i numeri da 10 fino a
quel numero. Se il numero letto è inferiore a 10, non
visualizza nulla.for
, un programma che legge da
tastiera un numero intero e visualizza tutti i numeri multipli di tre
compresi fra quel numero e 100. Se il numero letto è superiore
a 100, non visualizza nulla.Obiettivo: Familiarizzare con lo sviluppo incrementale dei programmi.
Attività:
Obiettivo: Familiarizzare con i cicli annidati.
Attività:
class ChiLoSa { public static void main(String[] args){ for (int i = 1; i <= 4; i = i + 1){ for (int j = 1; j <= 6; j = j + 1) System.out.print("*"); System.out.println(); } } }
class ChiLoSa2 { public static void main(String[] args){ for (int i = 1; i <= 4; i = i + 1){ for (int j = i; j <= 6; j = j + 1) System.out.print("*"); System.out.println(); } } }
class ChiLoSa3 { public static void main(String[] args){ for (int i = 1; i <= 4; i = i + 1){ for (int j = 1; j <= i; j = j + 1) System.out.print("*"); System.out.println(); } } }
(x,somma)
tali che somma
è la somma di tutti i valori da 1 a x
(per
x
che va da 1 a 10). C'è però un
errore. Per trovarlo, potrebbe esservi utile farvi visualizzare tutti
i valori assunti da somma
(e questa è una tecnica
standard per capire perché un programma non funziona: farsi
visualizzare i valori intermedi assunti dalle variabili per verificare
che siano esattamente quello che si prevede).
somma = 0; for (int x = 1; x <= 10; x = x + 1) for (int y = 1; y <= x; y = y + 1) somma = somma + y; System.out.println(x +" " + somma);Una volta capito l'errore, correggete il programma, e riverificatene il funzionamento.