|
Il linguaggio Java: lez.5
4 - Unità didattica 4.4)
Obbiettivi
e Unità Didattica 4.1) - Pagina 1
Unità didattica 4.2) - Pagina 2
Unità didattica 4.3) - Pagina 3
Unità didattica 4.4) - Pagina 4
1
|
2 |
3 |
4
- Costrutti di programmazione avanzati:
for,
do
e
switch
- Il costrutto
for
Completiamo il discorso dei cicli presentando
for
e
do.
Essi sono due cicli, equivalenti al
while,
con delle caratteristiche particolari. Ecco la sintassi per il
for,
nel caso d’utilizzo di una o più istruzioni da iterare:
for
(inizializzazione;
espr. booleana; aggiornamento)
istruzione;
for (inizializzazione; espr.
booleana; aggiornamento)
{
istruzione1;
...........;
istruzionen;
}
Presentiamo un esempio che stampa i primi 10
numeri partendo da 10 e terminando ad 1:
class ForDemo
{
public static void main(String args[])
{
for (int n=10; n>0; n--)
{
System.out.println(n);
}
}
}
N.B.: in questo caso notiamo che la sintassi è più
compatta rispetto a quella relativa al
while.
Tra le parentesi tonde relative ad un ciclo
for,
addirittura dichiariamo una variabile locale
n
(che smetterà di esistere al termine del ciclo). Potevamo comunque
anche dichiararla prima del ciclo, nel caso fosse stata nostra
intenzione utilizzarla anche al di fuori di esso. In pratica, se nel
while
utilizzavamo le parentesi tonde solo per l’espressione booleana, nel
for
le utilizziamo per inserirci rispettivamente, prima l’inizializzazione
di una variabile, poi l’espressione booleana, ed infine
l’aggiornamento che sarà eseguito ad ogni iterazione. Da notare che
questi tre istruzioni possono anche essere completamente
indipendenti tra loro.
Questo è il ciclo più utilizzato, vista la sua
grande semplicità d’utilizzo. Il ciclo while, è molto utilizzato
quando non si conosce il numero delle volte che le istruzioni devono
essere eseguite, e soprattutto nei cicli infiniti, dove la sintassi
è banale:
while
(true)
{
. . .
. . .
}
- Il costrutto
do
Nel caso in cui si desideri la garanzia, che le
istruzioni da iterare siano eseguite almeno una volta, dobbiamo
utilizzare il ciclo
do,
eccone la sintassi:
[inizializzazione;]
do {
corpo;
[iterazione;]
} while (terminazione);
in questo caso viene eseguito prima il blocco di
codice, e poi, viene valutata l’espressione booleana che si trova a
destra della parola chiave
while.
Ovviamente se l’espressione booleana è verificata, viene rieseguito
il blocco di codice, altrimenti termina. Notare il punto e virgola
situato alla fine del costrutto.
- Il costrutto
switch
Il costrutto
switch,
si presenta come alternativa al costrutto
if.
A differenza di
if,
non è possibile utilizzarlo in ogni situazione in cui c’è bisogno di
scegliere tra l’esecuzione di parti di codice diverse. Di seguito vi
presentiamo la sintassi:
switch
(variabile
di test) {
case valore1:
istruzione1;
break;
case valore2: {
istruzione2;
...........;
istruzionek;
}
break;
case valore3:
case valore4: {
//blocchi di codice opzionale
istruzionek+1;
...........;
istruzionej;
}
break;
[default: { //clausola
default opzionale
istruzionej+1;
...........;
istruzionen;
}]
}
In pratica, a seconda del valore intero che assume
la variabile di test, vengono eseguite determinate espressioni. La
variabile di test, deve essere di un tipo di dato compatibile con un
intero, ovvero un
byte,
uno
short,
un
char,
oppure, ovviamente un
int.
Inoltre
valore1...valoren
devono essere espressioni costanti e diverse tra loro.
Notare che la parola chiave
break,
provoca l’immediata uscita dal costrutto. Se infatti, dopo aver
eseguito tutte le istruzioni che seguono un’istruzione di tipo
case,
non è presente un’istruzione
break,
verranno eseguite tutti gli statement che seguono gli altri
case,
sino a quando non si arriverà ad un
break.
Di seguito viene presentato un esempio:
class SwitchStagione {
public static void main(String args[]) {
int mese=4;
String stagione;
switch (mese) {
case 12:
case 1:
case 2:
stagione="inverno";
break;
case 3:
case 4:
case 5:
stagione="primavera";
break; //senza questo break si ha
estate
case 6:
case 7:
case 8:
stagione="estate";
break;
case 9:
case 10:
case 11:
stagione="autunno";
break;
default: //la clausola default è
opzionale
stagione="non identificabile";
}
System.out.println("La stagione e’ "+stagione+".");
}
}
- Due importanti parole chiave:
break
e continue
La parola chiave
break,
è stata appena presentata come comando capace di fare terminare il
costrutto
switch.
Ma
break, è utilizzabile anche per far terminare un qualsiasi
ciclo. Il seguente frammento di codice, provoca la stampa dei primi
dieci numeri interi:
int i=0;
while (true) //ciclo infinito
{
if (i>10)
break;
System.out.println(i);
i++;
}
Oltre al
break,
esiste la parola chiave
continue,
che fa terminare non l’intero ciclo, ma solo l’iterazione corrente.
Il seguente frammento di codice provoca la stampa dei primi dieci
numeri, escluso il cinque:
int i=0;
do
{
i++;
if (i==5)
continue;
System.out.println(i);
}
while(i<=10);
Sia
break
sia
continue, possono utilizzare etichette (label) per
specificare, solo nel caso di cicli annidati, su quale ciclo devono
essere applicati. Il seguente frammento di codice stampa una sola
volta, i soliti primi dieci numeri interi:
int j=0;
pippo: //possiamo dare un qualsiasi nome ad
una //label
while (true)
{
while (true)
{
if (j>10)
break pippo;
System.out.println(j);
j++;
}
}
Esercizio 4.a)
Scrivere un semplice programma, costituito da
un’unica classe, che sfruttando esclusivamente un ciclo infinito,
l’operatore modulo, un paio di costrutti
if,
un break ed un continue, stampi solo i primi 10 numeri pari.
Esercizio 4.b)
Scrivere un programma che
Utilizza una classe Persona che dichiara le
variabili nome, cognome, età, codice fiscale, indirizzo (scegliere i
tipi di dati più appropriati). Ricordarsi di utilizzare le
convenzioni e le regole descritte in questo modulo.
Utilizza una classe Principale che nel metodo main,
istanzia due oggetti chiamati
persona1
e
persona2 della classe
Persona,
inizializzando per ognuno di essi i relativi campi sfruttando
l’operatore dot.
Dichiarare un terzo reference (persona3)
che punti ad uno degli oggetti già istanziati. Controllare che
effettivamente
persona3
punti allo oggetto voluto, stampando i campi di
persona3
sempre mediante l’operatore dot.
Commentare adeguatamente le classi realizzate e
sfruttare lo strumento javadoc per produrre la relativa
documentazione.
Esercizio 4.c)
Scrivere un'applicazione che stampi i 256
caratteri del codice ASCII con un ciclo (suggerimento: riguardare il
capitolo precedente).
Claudio De Sio Cesari --- il linguaggio Object
Oriented Java ---
http://www.claudiodesio.com
Obbiettivi
e Unità Didattica 4.1) - Pagina 1
Unità didattica 4.2) - Pagina 2
Unità didattica 4.3) - Pagina 3
Unità didattica 4.4) - Pagina 4
Pagina :
1
|
2 |
3 |
4
Restyling e Aggiornamenti della
sezione manuali e guide a cura di:
Fabrizio
Miceli
|
Tips su sistemi
operativi, registro di configurazione, sicurezza, internet,
navigazione, word ed excel. |
|
|
|
Guide e sulla
configurazione, installazione ed utilizzo di, periferiche,
sistemi operativi ecc... |
|
|