L'obiettivo di questa esercitazione è familiarizzare con i seguenti concetti, illustrati nel capitolo 3 del libro:
break
e continue
.Raccomandazioni: Prima di risolvere questi
esercizi, terminate quelli dell'esercitazione
scorsa. 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. Non è
importante risolvere tutti gli esercizi di questa esercitazione:
cercate piuttosto di fare bene quello che fate. Quando opportuno,
usate gli operatori di incremento i++
e decremento
i--
invece delle istruzioni i = i + 1
e
i = i - 1
.
Obiettivo: Familiarizzare con le istruzioni
break
e continue
.
Attività:
break
e continue
(e le opportune parentesi
graffe!) in modo che:
n
letto in input è pari viene
visualizzato un messaggio (e il ciclo continua con i test
successivi);n
letto in input è
multiplo di 3 viene visualizzato un messaggio e non vengano
effettuati i test successivi nel corpo del ciclo;n
letto in input è multiplo di 4
viene visualizzato un messaggio (e il ciclo continua); n
letto in input è
100 viene visualizzato un messaggio e il programma termina.class Break { public static void main(String[] args) { int n = 0; while (true) { System.out.print("Inserisci un numero: "); n = EasyIn.readInt(); if (n%2==0) System.out.println("Il numero " + n + " e' pari."); if (n%3==0) System.out.println("Il numero " + n + " e' multiplo di 3."); if (n%4==0) System.out.println("Il numero " + n + " e' multiplo di 4."); if (n == 100) System.out.println("Il numero " + n + " e' 100 e quindi termino."); } } }
continue
nel
corpo del primo if
? Obiettivo: Approfondire i cicli for
,
i cicli annidati e gli operatori di incremento e decremento.
Attività:
for (int r = 1; r <= n; r++) { // r e' la riga for (int c = 1; c <= r; c++) // c e' la colonna System.out.print("*"); System.out.println(); }che visualizza il triangolo di asterischi
* ** *** **** ***** ******(e
n
, il numero di righe/colonne può essere scelto
durante l'esecuzione). Completate le versioni seguenti, molto meno
comprensibili ma comunque funzionanti. (N.B. Dovete solo sostituire i
tre punti di domanda ???, non serve modificare niente altro)
for (int r = 1; r <= n; r++) { for (int c = r; c >= 1; ???) System.out.print("*"); System.out.println(); } for (int r = n; r >= 1; r--) { for (int c = r; c <= ???; c++) System.out.print("*"); System.out.println(); } for (int r = n; r >= 1; r--) { for (int c = n; c >= ???; ???) System.out.print("*"); System.out.println(); }
Obiettivo: Approfondire la tecnica di sviluppo incrementale dei programmi.
Attività:
n
letto in input (senza usare i
metodi delle librerie Java). Suggerimento: cercate il
più grande numero x
tale che
x*x<=n
n
letto in
input. Suggerimento: basta una minima modifica alla
soluzione dell'esercizio precedente...(n,x)
tali che n
è la radice quadrata di x
,
ordinate per valori crescenti di n
da 1 a
40. Suggerimento: basatevi sugli esercizi precedenti
e aggiungete un ciclo.(n,x)
tali che n
è la radice quadrata di x
,
ordinate per valori decrescenti di n
da 100 a 70.Obiettivo: Approfondire i cicli annidati e la tecnica di sviluppo incrementale dei programmi.
Attività:
11111111 22222222 33333333 44444444 55555555 66666666 77777777 88888888
12345678 12345678 12345678 12345678 12345678 12345678 12345678 12345678
12345678 23456781 34567812 45678123 56781234 67812345 78123456 81234567
3 1si deve visualizzare un quadrato di dimensione 3 del tipo 1, ossia
111 222 333se invece l'input è
2 2si deve visualizzare un quadrato di dimensione 2 del tipo 2, ossia
12 12se infine l'input è
4 3si deve visualizzare un quadrato di dimensione 4 del tipo 3
1234 2341 3412 4123Suggerimento: Si deve usare un
if
o uno
switch
?
234565432
se l'input è 8
6 l'output sarà 67876
.11111 3456789012109876543
1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321Suggerimento: per ogni riga, dovete visualizzare prima un certo numero di spazi, poi un certo numero di cifre crescenti e poi un certo numero di cifre decrescenti. Tutti e tre questi numeri dipendono dal numero di riga...
1 121 12321 1234321 123454321
12345654321 123454321 1234321 12321 121 1
1 21 321 4321 54321 654321 54321 4321 321 21 1
1 21 321 4321 54321 4321 321 21 1