Quando scriviamo un programma in un linguaggio di programmazione
come Java, non facciamo altro che elencare le istruzioni che la
macchina deve eseguire secondo unopportuna sintassi, propria
del linguaggio utilizzato.
Tali istruzioni vengono normalmente eseguite in sequenza, nellordine
in cui sono state scritte; talvolta però, è necessario effettuare
un controllo del flusso del programma, ad es. perché vogliamo che
unistruzione venga eseguita solo se si verifica una determinata
condizione, oppure perché dobbiamo eseguire ciclicamente unoperazione
in base al valore di una variabile di tipo intero
Gli esempi che si possono portare sono praticamente infiniti e si
presentano anche nei programmi più semplici.
Le istruzioni per il controllo del flusso possono essere
suddivise in quattro categorie:
1. Istruzioni iterative;
2. Istruzioni condizionali;
3. Istruzioni per il controllo delle eccezioni;
4. Istruzioni di salto.
A partire da questa lezione esamineremo i costrutti offerti da Java
per ognuna di esse.
Le istruzioni iterative servono per eseguire una sequenza
di istruzioni un certo numero di volte o finché non si verifica
unopportuna condizione.
Il linguaggio Java offre 3 tipi di istruzioni iterative:
1. while;
2. do-while;
3. for.
Listruzione while viene usata per eseguire continuamente
un blocco di istruzioni finché una condizione rimane vera; la sua
sintassi è:
while (espressione) {
istruzioni
}
Innanzitutto viene valutata lespressione, che deve restituire
un valore booleano; se il valore restituito è true, allora
vengono eseguite le istruzioni racchiuse tra le parentesi graffe,
continuando a testare lespressione e ad eseguire le istruzioni
finché lespressione non restituisce false.
Se lespressione restituisce false alla prima valutazione,
tutto il blocco viene saltato, cioè non viene mai eseguito, e il
programma prosegue con listruzione successiva al while.
Listruzione do-while è simile alla precedente, ma presenta
una piccola (e fondamentale) differenza: lespressione viene
valutata dopo aver eseguito almeno una volta il ciclo.
La sintassi è:
do {
istruzioni
} while (espressione);
Le istruzioni racchiuse tra parentesi graffe verranno perciò eseguite
almeno una volta, indipendentemente dal valore iniziale dellespressione
(che deve restituire anchessa un valore booleano).
Listruzione for fornisce un modo compatto per ripetere
un blocco di istruzioni un numero finito di volte.
La sintassi è la seguente:
for (inizializzazione; terminazione;
incremento) {
istruzioni
}
La parte di inizializzazione è costituita da unistruzione
che inizializza il ciclo (il caso più comune è lassegnamento
di un valore ad una variabile di tipo intero).
La terminazione è unespressione booleana che determina
quando terminare il ciclo: questa espressione viene valutata allinizio
di ogni iterazione, se vale false il ciclo termina.
Infine, lincremento è unespressione che viene
invocata alla fine di ogni iterazione.
Non è necessario che siano presenti tutti e tre questi elementi.
Nel caso in cui manchi la parte di terminazione occorre inserire,
tra le istruzioni del ciclo, unistruzione che permetta di
uscire dal ciclo in qualche modo.
Spesso il ciclo for viene utilizzato per scorrere gli elementi
di un array o i caratteri di una stringa.
Esaminiamo il seguente esempio:
class TestIterazioni {
public static void main(String[] args) {
int a = 0;
int b = 10;
while (a <= b) {
System.out.println("a = " + a + " b
= " + b);
a++;
b--;
}
do {
System.out.println("--");
} while (a < b);
String testo = "Esempio di utilizzo delle iterazioni.";
char c;
int i;
for (i = 0; i < testo.length(); i++) {
c = testo.charAt(i);
System.out.println(c);
}
}
}
Allinterno del while vengono stampati i valori
delle variabili a e b finché, incrementando a
e decrementando b, il valore di a diventa maggiore
di b; nel ciclo do-while loperazione di stampa
della stringa viene eseguita una sola volta,
perché lespressione a < b è false.
Il ciclo for è più interessante: inizializza una variabile
intera i (che viene incrementata ad ogni iterazione) e il
ciclo viene eseguito fintanto che il valore di i è minore
della lunghezza della stringa testo.
Il metodo charAt(int) è un metodo della classe String
che ritorna il carattere della stringa che occupa la posizione indicata
dal valore intero passatogli come parametro.
Torna all'indice Generale del corso di Corso di Java di Software Planet