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<=nn 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
12345678987654321
Suggerimento: 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