Sei sulla pagina 1di 114

Capitolo 3

Basi del linguaggio


c 2005-2010 Pearson Education Italia Capitolo 3 - 1 / 44
Sommario: Basi del linguaggio

1 Il tipo primitivo boolean

2 La classe Frazione

3 L’istruzione if-else (selezione in Java)

4 Il ciclo do...while

5 Il ciclo while

6 Il ciclo for

7 Il tipo primitivo char

8 Le istruzioni break e continue


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 2 / 44
Il tipo primitivo boolean
Due valori possibili, denotati dai letterali false e true


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 3 / 44
Il tipo primitivo boolean
Due valori possibili, denotati dai letterali false e true
Condizioni. Le espressioni booleane, cioè le espressioni che
restituiscono un valore di tipo boolean


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 3 / 44
Il tipo primitivo boolean
Due valori possibili, denotati dai letterali false e true
Condizioni. Le espressioni booleane, cioè le espressioni che
restituiscono un valore di tipo boolean
Condizioni semplici. Confronti fra espressioni di tipo primitivo
mediante un operatore relazionale:

> maggiore di
<= minore o uguale a
>= maggiore o uguale a
== uguale a
< minore di
!= diverso da

Esempio
(x + 3) <= (y * 5)

c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 3 / 44
Operatori booleani

Un tipo è caratterizzato dai suoi valori e dalle operazioni che si possono


compiere su di essi.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 4 / 44
Operatori booleani

Un tipo è caratterizzato dai suoi valori e dalle operazioni che si possono


compiere su di essi.
Il tipo boolean dispone di:
due operatori binari (boolean×boolean→boolean)
&& and (congiunzione)
|| or (disgiunzione)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 4 / 44
Operatori booleani

Un tipo è caratterizzato dai suoi valori e dalle operazioni che si possono


compiere su di essi.
Il tipo boolean dispone di:
due operatori binari (boolean×boolean→boolean)
&& and (congiunzione)
|| or (disgiunzione)

un operatore unario (boolean→boolean)


! not (negazione)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 4 / 44
Tavole di verità

x y x && y x y x || y
false false false false false false
false true false false true true
true false false true false true
true true true true true true

x !x
false true
true false


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 5 / 44
Precedenze degli operatori booleani

L’operatore ! ha la massima precedenza e || la minima


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 6 / 44
Precedenze degli operatori booleani

L’operatore ! ha la massima precedenza e || la minima

Esempio
a && b || a && c equivalente a (a && b) || (a && c)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 6 / 44
Precedenze degli operatori booleani

L’operatore ! ha la massima precedenza e || la minima

Esempio
a && b || a && c equivalente a (a && b) || (a && c)

!a && b || a && !c equivalente a ((!a) && b) || (a && (!c))


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 6 / 44
Esempio di tavola di verità

! (a && b) || (a && c)

a b c ! (a && b) || (a && c)
false false false true false true false
false false true true false true false
false true false true false true false
false true true true false true false
true false false true false true false
true false true true false true true
true true false false true false false
true true true false true true true


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 7 / 44
Leggi di De Morgan

! (x && y) equivalente a !x || !y


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 8 / 44
Leggi di De Morgan

! (x && y) equivalente a !x || !y

!(x || y) equivalente a !x && !y


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 8 / 44
Leggi di De Morgan

! (x && y) equivalente a !x || !y

!(x || y) equivalente a !x && !y

Esercizio
Dimostrare le leggi di De Morgan costruendo e confrontando le tavole di
verità delle espressioni coinvolte.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 8 / 44
Il metodo equals per il confronto — esempio con String

public boolean equals(String s)


Restituisce:
- true se la stringa che esegue il metodo contiene gli stessi caratteri della
stringa in argomento
- false in caso contrario


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 9 / 44
Il metodo equals per il confronto — esempio con String

public boolean equals(String s)


Restituisce:
- true se la stringa che esegue il metodo contiene gli stessi caratteri della
stringa in argomento
- false in caso contrario

Un’altra possibilità per confrontare due stringhe è utilizzare l’operatore ==


applicato a dei tipi riferimento


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 9 / 44
Il metodo equals per il confronto — esempio con String

public boolean equals(String s)


Restituisce:
- true se la stringa che esegue il metodo contiene gli stessi caratteri della
stringa in argomento
- false in caso contrario

Un’altra possibilità per confrontare due stringhe è utilizzare l’operatore ==


applicato a dei tipi riferimento

String u = new String("pippo");


boolean x = (u == "pippo");
boolean y = u.equals("pippo");


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 9 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = new String("pippo");
v = u;


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 10 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = new String("pippo");
v = u;

String

v "pippo"


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 10 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = new String("pippo");
v = u;

String

v "pippo"

u == v
viene valutata true
u e v fanno riferimento allo
stesso oggetto


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 10 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = new String("pippo");
v = u;

String

v "pippo"

u == v u.equals(v)
viene valutata true viene valutata true
u e v fanno riferimento allo un oggetto è uguale a se
stesso oggetto stesso

c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 10 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = new String("pippo");
v = new String("pippo");


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 11 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = new String("pippo");
v = new String("pippo");

String
u
"pippo"

v String

"pippo"


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 11 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = new String("pippo");
v = new String("pippo");

String
u
"pippo"

v String

"pippo"

u == v
viene valutata false
u e v fanno riferimento a
oggetti distinti

c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 11 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = new String("pippo");
v = new String("pippo");

String
u
"pippo"

v String

"pippo"

u == v u.equals(v)
viene valutata false viene valutata true
u e v fanno riferimento a i due oggetti rappresentano
oggetti distinti la medesima stringa

c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 11 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = "pippo";
v = "pippo";


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 12 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = "pippo";
v = "pippo";

u.equals(v)
viene valutata true
i due oggetti rappresentano
la medesima stringa


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 12 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = "pippo";
v = "pippo";

u.equals(v) u == v
viene valutata true viene valutata true
i due oggetti rappresentano perché?
la medesima stringa


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 12 / 44
Confronto fra riferimenti: == e equals

String u, v;
u = "pippo";
v = "pippo";

u.equals(v) u == v
viene valutata true viene valutata true
i due oggetti rappresentano perché?
la medesima stringa

Nota
Letterali stringa o espressioni costanti che danno luogo ad una medesima
sequenza di caratteri sono rappresentate come un unico oggetto String
dal compilatore

TanteStringhe.java

c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 12 / 44
Sommario: Basi del linguaggio

1 Il tipo primitivo boolean

2 La classe Frazione

3 L’istruzione if-else (selezione in Java)

4 Il ciclo do...while

5 Il ciclo while

6 Il ciclo for

7 Il tipo primitivo char

8 Le istruzioni break e continue


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 13 / 44
La classe Frazione

Contratto: Frazione
Le sue istanze modellano frazioni.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 14 / 44
La classe Frazione

Contratto: Frazione
Le sue istanze modellano frazioni.

Costruttori
public Frazione(int x)
Costruisce una nuova Frazione il cui numeratore è uguale
all’argomento e il cui denominatore è 1.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 14 / 44
La classe Frazione

Contratto: Frazione
Le sue istanze modellano frazioni.

Costruttori
public Frazione(int x)
Costruisce una nuova Frazione il cui numeratore è uguale
all’argomento e il cui denominatore è 1.

public Frazione(int x, int y)


Costruisce una nuova Frazione il cui valore è il rapporto fra il primo
argomento e il secondo argomento.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 14 / 44
Metodi: operazioni

public Frazione piu(Frazione f)


Restituisce il riferimento a un nuovo oggetto che rappresenta la
frazione ottenuta sommando la frazione specificata come argomento a
quella che esegue il metodo.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 15 / 44
Metodi: operazioni

public Frazione piu(Frazione f)


Restituisce il riferimento a un nuovo oggetto che rappresenta la
frazione ottenuta sommando la frazione specificata come argomento a
quella che esegue il metodo.

public Frazione meno(Frazione f)


Restituisce il riferimento a un nuovo oggetto che rappresenta la
frazione ottenuta sottraendo la frazione specificata come argomento
da quella che esegue il metodo.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 15 / 44
Metodi: operazioni

public Frazione piu(Frazione f)


Restituisce il riferimento a un nuovo oggetto che rappresenta la
frazione ottenuta sommando la frazione specificata come argomento a
quella che esegue il metodo.

public Frazione meno(Frazione f)


Restituisce il riferimento a un nuovo oggetto che rappresenta la
frazione ottenuta sottraendo la frazione specificata come argomento
da quella che esegue il metodo.

public Frazione per(Frazione f)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 15 / 44
Metodi: operazioni

public Frazione piu(Frazione f)


Restituisce il riferimento a un nuovo oggetto che rappresenta la
frazione ottenuta sommando la frazione specificata come argomento a
quella che esegue il metodo.

public Frazione meno(Frazione f)


Restituisce il riferimento a un nuovo oggetto che rappresenta la
frazione ottenuta sottraendo la frazione specificata come argomento
da quella che esegue il metodo.

public Frazione per(Frazione f)

public Frazione diviso(Frazione f)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 15 / 44
Metodi: operazioni di confronto

public boolean equals(Frazione f)


Restituisce:
- true se la frazione che esegue il metodo ha lo stesso valore di quella
specificata come argomento
- false in caso contrario


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 16 / 44
Metodi: operazioni di confronto

public boolean equals(Frazione f)


Restituisce:
- true se la frazione che esegue il metodo ha lo stesso valore di quella
specificata come argomento
- false in caso contrario

public boolean isMinore(Frazione f)


Restituisce:
- true se la frazione che esegue il metodo è minore di quella specificata
come argomento
- false in caso contrario


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 16 / 44
Metodi: operazioni di confronto

public boolean equals(Frazione f)


Restituisce:
- true se la frazione che esegue il metodo ha lo stesso valore di quella
specificata come argomento
- false in caso contrario

public boolean isMinore(Frazione f)


Restituisce:
- true se la frazione che esegue il metodo è minore di quella specificata
come argomento
- false in caso contrario

public boolean isMaggiore(Frazione f)


Restituisce:
- true se la frazione che esegue il metodo è maggiore di quella
specificata come argomento
- false in caso contrario

c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 16 / 44
Metodi

public int getNumeratore()


Restituisce il numeratore della frazione rappresentata dall’oggetto che
esegue il metodo.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 17 / 44
Metodi

public int getNumeratore()


Restituisce il numeratore della frazione rappresentata dall’oggetto che
esegue il metodo.

public int getDenominatore()


Restituisce il denominatore della frazione rappresentata dall’oggetto
che esegue il metodo.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 17 / 44
Metodi

public int getNumeratore()


Restituisce il numeratore della frazione rappresentata dall’oggetto che
esegue il metodo.

public int getDenominatore()


Restituisce il denominatore della frazione rappresentata dall’oggetto
che esegue il metodo.

public String toString()


Restituisce una stringa di caratteri che descrive la frazione
rappresentata dall’oggetto che esegue il metodo.

ProvaFrazione.java SommaFrazioni.java


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 17 / 44
Sommario: Basi del linguaggio

1 Il tipo primitivo boolean

2 La classe Frazione

3 L’istruzione if-else (selezione in Java)

4 Il ciclo do...while

5 Il ciclo while

6 Il ciclo for

7 Il tipo primitivo char

8 Le istruzioni break e continue


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 18 / 44
L’istruzione if-else

if (condizione)
istruzione1
else
istruzione2


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 19 / 44
L’istruzione if-else

if (condizione)
istruzione1
else
istruzione2

condizione
È una qualunque espressione che restituisce un valore di tipo boolean
scritta obbligatoriamente tra parentesi tonde


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 19 / 44
L’istruzione if-else

if (condizione)
istruzione1
else
istruzione2

condizione
È una qualunque espressione che restituisce un valore di tipo boolean
scritta obbligatoriamente tra parentesi tonde

istruzione1, istruzione2
sono istruzioni singole oppure blocchi di istruzioni, cioè sequenze di
istruzioni racchiuse tra parentesi graffe


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 19 / 44
L’istruzione if-else: esecuzione

if (condizione)
istruzione1
else
istruzione2

(1) Viene valutata condizione (il valore è true o false)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 20 / 44
L’istruzione if-else: esecuzione

if (condizione)
istruzione1
else
istruzione2

(1) Viene valutata condizione (il valore è true o false)


- se la condizione è vera, viene eseguita istruzione1


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 20 / 44
L’istruzione if-else: esecuzione

if (condizione)
istruzione1
else
istruzione2

(1) Viene valutata condizione (il valore è true o false)


- se la condizione è vera, viene eseguita istruzione1
- se la condizione è falsa, viene eseguita istruzione2


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 20 / 44
L’istruzione if-else: esecuzione

if (condizione)
istruzione1
else
istruzione2

(1) Viene valutata condizione (il valore è true o false)


- se la condizione è vera, viene eseguita istruzione1
- se la condizione è falsa, viene eseguita istruzione2

(2) L’esecuzione riprende dalla prima istruzione che segue l’istruzione


if-else


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 20 / 44
L’istruzione if: esecuzione

if (condizione)
istruzione

Viene valutata la condizione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 21 / 44
L’istruzione if: esecuzione

if (condizione)
istruzione

Viene valutata la condizione


- se la condizione è vera, viene eseguita istruzione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 21 / 44
L’istruzione if: esecuzione

if (condizione)
istruzione

Viene valutata la condizione


- se la condizione è vera, viene eseguita istruzione
- se la condizione è falsa, l’esecuzione riprende dalla prima istruzione che
segue l’if.

ConfrontoFrazioni.java


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 21 / 44
if-else innestati

Dato che if-else è un’istruzione, può comparire nel corpo di


un’istruzione if-else...

int x, y, z;
...
if (x == 1)
if (y == 1)
z = x + y;
else
z = x * y;
else
z = x - y;


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 22 / 44
Il problema del dangling else

if (x == 1) if (y == 1) z = x + y; else z = x - y;


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 23 / 44
Il problema del dangling else

if (x == 1) if (y == 1) z = x + y; else z = x - y;

Quale delle due seguenti “interpretazioni” è adottata dal compilatore?

if (x == 1) if (x == 1)
if (y == 1) if (y == 1)
z = x + y; z = x + y;
else else
z = x - y; z = x - y;


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 23 / 44
Il problema del dangling else

if (x == 1) if (y == 1) z = x + y; else z = x - y;

Quale delle due seguenti “interpretazioni” è adottata dal compilatore?

if (x == 1) if (x == 1)
if (y == 1) if (y == 1)
z = x + y; z = x + y;
else else
z = x - y; z = x - y;

In una sequenza di if innestati, un else è associato


al primo if che lo precede, ...
per il quale non sia stato ancora individuato un else


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 23 / 44
Esempio

if (x == 1)
if (y == 1)
z = x + y;
else
z = x - y;


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 24 / 44
Esempio

if (x == 1)
if (y == 1)
z = x + y;
else
z = x - y;

Per associare l’unico else al primo if dobbiamo utilizzare le parentesi


graffe:

if (x == 1) {
if (y == 1)
z = x + y;
} else
z = x - y;

DanglingElse.java

c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 24 / 44
Sommario: Basi del linguaggio

1 Il tipo primitivo boolean

2 La classe Frazione

3 L’istruzione if-else (selezione in Java)

4 Il ciclo do...while

5 Il ciclo while

6 Il ciclo for

7 Il tipo primitivo char

8 Le istruzioni break e continue


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 25 / 44
L’istruzione do...while (iterazione in Java)

do
istruzione
while (condizione)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 26 / 44
L’istruzione do...while (iterazione in Java)

do
istruzione
while (condizione)

condizione
È un’espressione di tipo boolean scritta obbligatoriamente tra
parentesi tonde


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 26 / 44
L’istruzione do...while (iterazione in Java)

do
istruzione
while (condizione)

condizione
È un’espressione di tipo boolean scritta obbligatoriamente tra
parentesi tonde

istruzione
È l’istruzione che dev’essere ripetuta: può essere un’istruzione singola
oppure un blocco di istruzioni


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 26 / 44
L’istruzione do...while: esecuzione

do
istruzione
while (condizione)

(1) Viene eseguito il corpo del ciclo, cioè istruzione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 27 / 44
L’istruzione do...while: esecuzione

do
istruzione
while (condizione)

(1) Viene eseguito il corpo del ciclo, cioè istruzione

(2) Viene valutata l’espressione condizione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 27 / 44
L’istruzione do...while: esecuzione

do
istruzione
while (condizione)

(1) Viene eseguito il corpo del ciclo, cioè istruzione

(2) Viene valutata l’espressione condizione


- se la condizione è vera, l’esecuzione prosegue dal Punto (1)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 27 / 44
L’istruzione do...while: esecuzione

do
istruzione
while (condizione)

(1) Viene eseguito il corpo del ciclo, cioè istruzione

(2) Viene valutata l’espressione condizione


- se la condizione è vera, l’esecuzione prosegue dal Punto (1)
- se la condizione è falsa, il ciclo termina e l’esecuzione riprende dalla prima
istruzione che segue l’istruzione do...while.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 27 / 44
L’istruzione do...while

do
istruzione
while (condizione)

Osservazioni
L’esecuzione del ciclo termina quando la condizione risulta falsa


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 28 / 44
L’istruzione do...while

do
istruzione
while (condizione)

Osservazioni
L’esecuzione del ciclo termina quando la condizione risulta falsa

Il corpo del ciclo è sempre eseguito almeno una volta

SommaSequenza.java


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 28 / 44
Sommario: Basi del linguaggio

1 Il tipo primitivo boolean

2 La classe Frazione

3 L’istruzione if-else (selezione in Java)

4 Il ciclo do...while

5 Il ciclo while

6 Il ciclo for

7 Il tipo primitivo char

8 Le istruzioni break e continue


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 29 / 44
L’istruzione while

while (condizione)
istruzione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 30 / 44
L’istruzione while

while (condizione)
istruzione

condizione
È un’espressione booleana scritta obbligatoriamente tra parentesi
tonde


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 30 / 44
L’istruzione while

while (condizione)
istruzione

condizione
È un’espressione booleana scritta obbligatoriamente tra parentesi
tonde

istruzione
È l’istruzione che dev’essere ripetuta; può essere un’istruzione singola
oppure un blocco di istruzioni


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 30 / 44
L’istruzione while: esecuzione

while (condizione)
istruzione

(1) Viene valutata l’espressione condizione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 31 / 44
L’istruzione while: esecuzione

while (condizione)
istruzione

(1) Viene valutata l’espressione condizione

- Se la condizione è vera:
- viene eseguita istruzione (il corpo del ciclo)
- l’esecuzione continua dal Punto (1)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 31 / 44
L’istruzione while: esecuzione

while (condizione)
istruzione

(1) Viene valutata l’espressione condizione

- Se la condizione è vera:
- viene eseguita istruzione (il corpo del ciclo)
- l’esecuzione continua dal Punto (1)

- Se la condizione è falsa, il ciclo termina e l’esecuzione continua dalla prima


istruzione che segue il ciclo while


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 31 / 44
L’istruzione while

while (condizione)
istruzione

Osservazioni
L’esecuzione del ciclo termina quando condizione risulta falsa


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 32 / 44
L’istruzione while

while (condizione)
istruzione

Osservazioni
L’esecuzione del ciclo termina quando condizione risulta falsa

istruzione può essere eseguita anche zero volte

PappagalloInstancabile.java PappagalloStanco.java
MediaSequenza.java


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 32 / 44
Sommario: Basi del linguaggio

1 Il tipo primitivo boolean

2 La classe Frazione

3 L’istruzione if-else (selezione in Java)

4 Il ciclo do...while

5 Il ciclo while

6 Il ciclo for

7 Il tipo primitivo char

8 Le istruzioni break e continue


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 33 / 44
L’istruzione for

for (espr inizializzazione; condizione; espr incremento)


istruzione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 34 / 44
L’istruzione for

for (espr inizializzazione; condizione; espr incremento)


istruzione

espr inizializzazione
È una lista di espressioni, separate da virgola (,)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 34 / 44
L’istruzione for

for (espr inizializzazione; condizione; espr incremento)


istruzione

espr inizializzazione
È una lista di espressioni, separate da virgola (,)

condizione
È una qualunque espressione booleana


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 34 / 44
L’istruzione for

for (espr inizializzazione; condizione; espr incremento)


istruzione

espr inizializzazione
È una lista di espressioni, separate da virgola (,)

condizione
È una qualunque espressione booleana

espr incremento
È una lista di espressioni


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 34 / 44
L’istruzione for

for (espr inizializzazione; condizione; espr incremento)


istruzione

espr inizializzazione
È una lista di espressioni, separate da virgola (,)

condizione
È una qualunque espressione booleana

espr incremento
È una lista di espressioni

istruzione
È una singola istruzione oppure un blocco di istruzioni


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 34 / 44
L’istruzione for

for (espr inizializzazione; condizione; espr incremento)


istruzione

espr inizializzazione
È una lista di espressioni, separate da virgola (,)

condizione
È una qualunque espressione booleana

espr incremento
È una lista di espressioni

istruzione
È una singola istruzione oppure un blocco di istruzioni

Tutte le componenti di un ciclo for sono opzionali



c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 34 / 44
L’istruzione for: esecuzione

for (espr inizializzazione; condizione; espr incremento)


istruzione

(1) Vengono valutate le espressioni che compaiono in espr inizializzazione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 35 / 44
L’istruzione for: esecuzione

for (espr inizializzazione; condizione; espr incremento)


istruzione

(1) Vengono valutate le espressioni che compaiono in espr inizializzazione

(2) Viene valutata l’espressione condizione


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 35 / 44
L’istruzione for: esecuzione

for (espr inizializzazione; condizione; espr incremento)


istruzione

(1) Vengono valutate le espressioni che compaiono in espr inizializzazione

(2) Viene valutata l’espressione condizione


- Se condizione è true:
- viene eseguito il blocco di istruzioni nel corpo del ciclo
- vengono valutate le espressioni che compaiono in espr incremento
- l’esecuzione prosegue dal Punto (2)


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 35 / 44
L’istruzione for: esecuzione

for (espr inizializzazione; condizione; espr incremento)


istruzione

(1) Vengono valutate le espressioni che compaiono in espr inizializzazione

(2) Viene valutata l’espressione condizione


- Se condizione è true:
- viene eseguito il blocco di istruzioni nel corpo del ciclo
- vengono valutate le espressioni che compaiono in espr incremento
- l’esecuzione prosegue dal Punto (2)

- Se la condizione è false, l’esecuzione riprende dalla prima istruzione che


segue l’istruzione for


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 35 / 44
L’istruzione for: esecuzione

for (espr inizializzazione; condizione; espr incremento)


istruzione

(1) Vengono valutate le espressioni che compaiono in espr inizializzazione

(2) Viene valutata l’espressione condizione


- Se condizione è true:
- viene eseguito il blocco di istruzioni nel corpo del ciclo
- vengono valutate le espressioni che compaiono in espr incremento
- l’esecuzione prosegue dal Punto (2)

- Se la condizione è false, l’esecuzione riprende dalla prima istruzione che


segue l’istruzione for
- Una condizione vuota è valutata true


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 35 / 44
Espressioni di inizializzazione

L’espressione di inizializzazione può contenere direttamente la


dichiarazione della variabile di controllo:


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 36 / 44
Espressioni di inizializzazione

L’espressione di inizializzazione può contenere direttamente la


dichiarazione della variabile di controllo:

for (int cont = 1; cont <= 10; cont = cont + 1)


out.println(cont);


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 36 / 44
Espressioni di inizializzazione

L’espressione di inizializzazione può contenere direttamente la


dichiarazione della variabile di controllo:

for (int cont = 1; cont <= 10; cont = cont + 1)


out.println(cont);

In questo caso la variabile cont non è definita al di fuori del ciclo.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 36 / 44
Espressioni di inizializzazione

L’espressione di inizializzazione può contenere direttamente la


dichiarazione della variabile di controllo:

for (int cont = 1; cont <= 10; cont = cont + 1)


out.println(cont);

In questo caso la variabile cont non è definita al di fuori del ciclo.

È possibile dichiarare più variabili ma devono essere tutte dello stesso tipo:

for (int i = 1, j = 0; i + j <= 20; i = i + 1, j = j + 1)


out.println(i + j);

Cornice.java


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 36 / 44
Simulazione di for tramite while
L’istruzione for può sempre essere sostituita da un assegnamento seguito
da un ciclo while


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 37 / 44
Simulazione di for tramite while
L’istruzione for può sempre essere sostituita da un assegnamento seguito
da un ciclo while

for (int i = 0; i <= 10; i = i + 1)


out.println(i);

è equivalente a

int i = 0;
while (i <= 10) {
out.println(i);
i = i + 1;
}


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 37 / 44
Simulazione di for tramite while
L’istruzione for può sempre essere sostituita da un assegnamento seguito
da un ciclo while

for (int i = 0; i <= 10; i = i + 1)


out.println(i);

è equivalente a

int i = 0;
while (i <= 10) {
out.println(i);
i = i + 1;
}

for ( ; ; ) è equivalente a while (true);


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 37 / 44
Sommario: Basi del linguaggio

1 Il tipo primitivo boolean

2 La classe Frazione

3 L’istruzione if-else (selezione in Java)

4 Il ciclo do...while

5 Il ciclo while

6 Il ciclo for

7 Il tipo primitivo char

8 Le istruzioni break e continue


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 38 / 44
Il tipo primitivo char

Rappresenta caratteri Unicode


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 39 / 44
Il tipo primitivo char

Rappresenta caratteri Unicode

Letterali
Singoli caratteri racchiusi fra apici singoli (’)
Sequenze di escape


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 39 / 44
Il tipo primitivo char

Rappresenta caratteri Unicode

Letterali
Singoli caratteri racchiusi fra apici singoli (’)
Sequenze di escape

Esempio
char c;
c = ’\u0041’; //rappresentazione esadecimale
//del carattere A

c = ’\t’; //carattere di tabulazione

c = ’A’;


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 39 / 44
Operatori di confronto

È possibile confrontare due caratteri utilizzando gli operatori di confronto.


L’ordine è stabilito dalla posizione del carattere nella tabella Unicode.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 40 / 44
Operatori di confronto

È possibile confrontare due caratteri utilizzando gli operatori di confronto.


L’ordine è stabilito dalla posizione del carattere nella tabella Unicode.

Nella tabella Unicode i caratteri alfabetici compaiono nell’ordine alfabetico

’a’ < ’b’ //true


’b’ < ’c’ //true
...
c >= ’a’ && c <=’z’

Le maiuscole precedono le minuscole

’Z’ < ’a’ //true


’A’ < ’B’ //true
...
c >= ’A’ && c <=’Z’


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 40 / 44
Il metodo charAt

public char charAt(int index)


Restituisce il carattere nella posizione indicata da index della stringa
rappresentata dall’oggetto che esegue il metodo.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 41 / 44
Il metodo charAt

public char charAt(int index)


Restituisce il carattere nella posizione indicata da index della stringa
rappresentata dall’oggetto che esegue il metodo.

String s = "pluto";

char c1 = s.charAt(0); // c1 vale ’p’


char c2 = s.charAt(4); // c2 vale ’o’

CicloFor.java MergeString.java


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 41 / 44
Sommario: Basi del linguaggio

1 Il tipo primitivo boolean

2 La classe Frazione

3 L’istruzione if-else (selezione in Java)

4 Il ciclo do...while

5 Il ciclo while

6 Il ciclo for

7 Il tipo primitivo char

8 Le istruzioni break e continue


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 42 / 44
L’istruzione break

Può essere usato solo in un ciclo.


Termina l’esecuzione del blocco del ciclo in cui compare.

PappagalloStancoBreak.java
Palindromi1.java Palindromi2.java


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 43 / 44
L’istruzione continue

Può essere usato solo in un ciclo.


Provoca l’interruzione dell’esecuzione del blocco di istruzioni interne al
ciclo e il passaggio all’iterazione successiva.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 44 / 44
L’istruzione continue

Può essere usato solo in un ciclo.


Provoca l’interruzione dell’esecuzione del blocco di istruzioni interne al
ciclo e il passaggio all’iterazione successiva.

Nel caso dei cicli while o do...while si saltano le restanti istruzioni


nel corpo del ciclo e si passa immediatamente alla valutazione della
condizione.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 44 / 44
L’istruzione continue

Può essere usato solo in un ciclo.


Provoca l’interruzione dell’esecuzione del blocco di istruzioni interne al
ciclo e il passaggio all’iterazione successiva.

Nel caso dei cicli while o do...while si saltano le restanti istruzioni


nel corpo del ciclo e si passa immediatamente alla valutazione della
condizione.

Nel caso dei cicli for si passa a valutare le espressioni di incremento


del ciclo e poi alla valutazione della condizione.


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 44 / 44
L’istruzione continue

Può essere usato solo in un ciclo.


Provoca l’interruzione dell’esecuzione del blocco di istruzioni interne al
ciclo e il passaggio all’iterazione successiva.

Nel caso dei cicli while o do...while si saltano le restanti istruzioni


nel corpo del ciclo e si passa immediatamente alla valutazione della
condizione.

Nel caso dei cicli for si passa a valutare le espressioni di incremento


del ciclo e poi alla valutazione della condizione.

Nel caso di cicli innestati le istruzioni break e continue agiscono sul


ciclo più interno

Ciclo1.java Ciclo2.java


c 2005-2010 Pearson Education Italia Capitolo 3 - Basi del linguaggio 44 / 44

Potrebbero piacerti anche