elementi di informatica di base1 parte 4 elementi di informatica di base dott.ssa elisa tiezzi

43
Elementi di informatica di base 1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Upload: luigi-piazza

Post on 02-May-2015

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 1

Parte 4

Elementi di Informatica di baseDott.ssa Elisa Tiezzi

Page 2: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 2

Controllo del flusso

• Flusso di esecuzione: ordine in cui le istruzioni di un programma sono eseguite

• Salvo contrordini, è in sequenza• Due possibili alterazioni:

– selezione: sceglie un’azione da una lista di due o più azioni possibili

– ripetizione: continua ad eseguire un’azione fino a quando non si verifica una condizione di termine

Page 3: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 3

Strutture Java

• Sequenza– di default

Selezione» if» if-else» switch

Ripetizione» while» do-while» for

Page 4: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 4

Valori Booleani

• boolean: tipo di dato primitivo in Java che può assumere valore true oppure false

• Variabili (o espressioni) il cui valore è di tipo boolean sono chiamate variabili (o espressioni) Booleane– Il valore di una variabile (o espressione) Booleana è true oppure false

Page 5: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 5

Espressioni Booleane• Esprimono una condizione che risulta

essere vera o falsa• Esempio (A e B sono due dati non

necessariamente dello stesso tipo):– A è maggiore di B?– A è uguale a B?– A è minore di oppure uguale a B?

Page 6: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 6

Operatori di confronto

Notazione matematica Java Esempio

= (uguale a) == utile == 0≠ (diverso )da != utile ≠ tax> (maggior e di) > ricav >i costi≥ (maggior e dioppu re ugual )e a >= vo to>= 60< (min ored )i < pression < e max≤ (mino re d i oppure ugua le a) <= ricav <i = costi

Page 7: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 7

Confronto tra caratteri e stringhe

• Si può confrontare caratteri: sono infatti basati su Unicode che definisce un ordinamento per tutti i possibili caratteri che possono essere usati. Dato che in Unicode, per esempio, il carattere ‘a’ viene prima di ‘b’, si può dire che ‘a’ è minore di ‘b’.

• Non si possono usare operatori di confronto e di uguaglianza tra stringhe.

Page 8: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 8

Confronto tra valori in virgola mobile

• Raramente si usa l’operatore di uguaglianza tra due valori in virgola mobile.

• Per testare l’uguaglianza di due valori in virgola mobile si può calcolare il valore assoluto della loro differenza e confrontare il valore così ottenuto con un valore di tolleranza, ad esempio 0,00001.

Page 9: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 9

Operatori logici• AND: &&

– congiunge due espressioni

– valore di ritorno true se e solo se entrambi le espressioni sono vere

• OR: ||– disgiunge due espressioni

– valore di ritorno false se e solo se entrambi le espressioni sono false

• Valutazione della seconda espressione condizionata– per avere valutazione completa, usare & e |

Page 10: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 10

Altri operatori logici• NOT: !

– nega un’espressione– valore di ritorno true se e solo se

l’espressione è falsa

• XOR: ^– disgiunge due espressioni in modo esclusivo– valore di ritorno true se e solo se le due

espressioni hanno diversi valori di ritorno– esprimibile mediante AND, OR e NOT

Page 11: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 11

Precedenze e associatività

Unario++ -- + - !

Unario postfisso++ --

assegnazione= += -= *= /= %= &= |= ^=

OR||

AND&&

OR|

XOR^

AND&

Uguaglianza= = !=

Relazionale< <= > >=

Additivo+ -

Moltiplicativo* / %

Conversione(type)

Operatori Associatività Tipo

Page 12: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 12

Esempio • score < min/2 – 10 || score > 90

• score < (min/2) – 10 || score > 90

• score < ((min/2) – 10) || score > 90

• (score < ((min/2) – 10)) || (score > 90)

• ((score < ((min/2) – 10)) || (score > 90))

Page 13: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 13

Blocchi di istruzioni

• Insiemi di istruzioni racchiuse tra parentesi graffe– corrispondono ad un’azione– parentesi non necessarie se include una sola

istruzione• Esempio:

{ //inizio del bloccocalorieLess = 500;calorieAllotment = calorieAllotment-

calorieLess;} //fine del blocco

Page 14: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 14

Istruzione if• Selezione semplice:

– esegue un’azione se solo se una certa condizione è verificata

• Sintassi:if (Espressione_Booleana)

Blocco_1 //esegui solo se vera

Prossima_Istruzione; //sempre eseguita

Espressione_Booleanatrue

Blocco_1

false

Prossima_Istruzione

Page 15: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 15

Esempio

• Se il peso è superiore a quello ideale allora diminuisci il numero totale di calorie che si possono assumere di 500.

• Successivamente, imposta il numero di calorie da assumere per colazione ad un terzo del numero totale di calorie

• if(weight > ideal)calorieAllotment = calorieAllotment-500;

calorieBreakfast = calorieAllotment/3;

Page 16: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 16

Istruzione if-else• Selezione doppia:

– esegue un’azione oppure un’altra in base al valore di una condizione

• Sintassi:if (Espressione_Booleana)

Blocco_1 //esegui solo se vera

else

Blocco_2 //esegui solo se falsa

Prossima_Istruzione; //sempre eseguita

Page 17: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 17

Diagramma di flusso

Espressione_Booleanatrue

Blocco_1

false

Blocco_2

Prossima_Istruzione

Page 18: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 18

Esempi

• Esempio con una singola istruzione:if(balance >=0) balance=balance+(INTEREST_RATE*balance)/12;else balance=balance-OVERDRAWN_PENALTY;

• Esempio con un’istruzione composta:if(balance >=0){ interest=(INTEREST_RATE*balance)/12; balance=balance+interest;}else{ interst=OVERDRAWN_PENALTY; balance=balance-interest;}

Page 19: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 19

Istruzioni if-else annidate• Annidamento di istruzioni if-else:

– tratta situazioni con più di due possibilità– Attenzione : ogni else si riferisce all’if più vicino

• Sintassi:if (Espressione_Booleana_1) Blocco_1else if (Espressione_Booleana_2) Blocco_2 .else if (Espressione_Booleana_ n) Blocco_nelse Blocco_Default

Page 20: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 20

Esempioif (score >= 90) grade = ‘A’;else if (score >= 80) grade = ‘B’;else if (score >= 70) grade = ‘C’;else if (score >= 60) grade = ‘D’;else grade = ‘E’;

Page 21: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 21

Istruzione switch

• Selezione multipla

• Sintassi:

switch(Espressione_Di_Controllo){

case Etichetta_Caso_1: Sequenza_Istruzioni_1

break; case Etichetta_Caso_2: Sequenza_Istruzioni_2 break;

...

default: Sequenza_Istruzioni_Default}

Page 22: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 22

• Espressione_Di_Controllo deve essere char, int, short o byte

• Espressione_Di_Controllo e le varie Etichette_Caso_* devono essere dello stesso tipo

• L’istruzione break, che può essere omessa, fa, passare il controllo alla prima istruzione dopo l’istruzione switch– se break non è inclusa, allora l’esecuzione procede con le

istruzioni del caso successivo

Page 23: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 23

Diagramma di flusso

Espressione_Di_Controllo = Etichetta_Caso_1true

Sequenza_Istruzioni_1

break?

true

break?

Espressione_Di_Controllo = Etichetta_Caso_2

false

Sequenza_Istruzioni_2

false

false

...

true

true

false

...

false

true

Sequenza_Istruzioni_Defaultdefault?

Page 24: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 24

Esempioswitch (seatLocationCode){ case 1: type=‘O’; price = 40.00; break; case 2: type=‘M’; price = 30.00; break; case 3: case 4: type=‘B’; price = 15.00; break; default: type=‘U’;}

Page 25: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 25

L’operatore condizionale

• È l’unico operatore ternario di Java• Sintassi:

– (Espressione Booleana)? Espressione_1:Espressione_2;

• Il valore di ritorno è quello di Espressione_1 se Espressione Booleana è vera, altrimenti è quello di Espressione_2

Page 26: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 26

Esempio

• max = (n1>n2)?n1:n2;

• Equivale a:

if (n1>n2)max = n1;

elsemax = n2;

Page 27: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 27

Ripetizione: i cicli• Struttura:

– corpo del ciclo– condizione di terminazione del ciclo

• Organizzazione logica– cicli controllati da condizioni

– cicli controllati da contatori

• Istruzioni Java per realizzare cicli– while– do-while– for

Page 28: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 28

Ciclo while• Sintassi:

while (Espressione_Booleana)Blocco //corpo del ciclo

Prossima_Istruzione• Espressione_Booleana rappresenta la

condizione di ripetizione del ciclo– si esce dal ciclo, quando è falsa

• Blocco rappresenta il corpo del ciclo• Istruzioni di inizializzazione precedono

generalmente il ciclo

Page 29: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 29

trueBlocco

Diagramma di flusso

Espressione_Booleana

false

Prossima_Istruzione

Page 30: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 30

Esempio• Ciclo che calcola la somma dei primi 10 numeri

interi

int total = 0;int count = 1;while (count <= 10){ total = total + count; count++;}

Page 31: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 31

Minimo numero di iterazioni• Il numero minimo di iterazioni di un ciclo while

è 0 dato che la condizione di ingresso può essere immediatamente falsa

• Esempio:int next;int total = 0;next = (int)(Math.random()*100)-50;while (next >= 0){ total = total + next;next = (int)(Math.random()*100)-50;

}

Page 32: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 32

Ciclo do-while • Sintassi:

do

Blocco //corpo del ciclo

while (Espressione_Booleana);

Prossima_Istruzione

• Il corpo del ciclo è eseguito almeno una volta dato che la condizione di ripetizione è posta dopo il corpo stesso

Page 33: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 33

Diagramma di flusso

Espressione_Booleana

false

Prossima_Istruzione

Blocco

true

Page 34: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 34

Esempio

int next;

int total = 0;

do

{

next = (int)(Math.random()*100)-50;

total = total + next;

}

while (next >= 0);

Page 35: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 35

Cicli infiniti

• Cause principali:– errata espressione Booleana– errata (o assente) alterazione delle variabili coinvolte nell’espressione

Booleana

• Esempio: int total = 0;int count = 1;while (count != 10){ total = total + count; count += 2;}

Page 36: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 36

Ciclo for• Struttura:

– azione di inizializzazione– condizione di ripetizione– corpo del ciclo– azione di continuazione

• Sintassi:for (Inizializzazione; Espressione_Booleana; Continuazione) Blocco Prossima_Istruzione

Page 37: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 37

Diagramma di flusso

Inizializzazione

Continuazione

Bloccotrue

Espressione_Booleana

false

Prossima_Istruzione

Page 38: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 38

Esempio• Sommare separatamente i numeri pari e quelli

dispari compresi tra 1 e 100

int sumEven = 0, sumOdd = 0;for (int count = 1; count <= 99; count+=2)

{

sumOdd = sumOdd + count;

sumEven = sumEven + count + 1;

}

Page 39: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 39

Considerazioni pratiche• Errori comuni:

– cicli infiniti (non intenzionali)– cicli con contatore che non eseguono il numero di

iterazioni desiderato (scarto di uno).

• Testare soprattutto la condizione di ripetizione di un ciclo per evitare possibili errori

• Mantenere traccia dei valori delle variabili (facendo uso di stampe su video)

Page 40: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 40

Questioni di stile• Blocchi:{

Sequenza_Istruzioni}– inserire le parentesi graffe anche se il blocco è

costituito da una sola istruzione– indentare tutte le istruzioni incluse nella

sequenza

Page 41: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 41

• Istruzione if:if (Espressione_Booleana)Blocco

• Istruzione if-else:if (Espressione_Booleana)Blocco elseBlocco

Page 42: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 42

• Istruzione switch:switch (Espressione_Di_Controllo){

case Etichetta_1:Sequenza_Istruzioni_1

case Etichetta_2: Sequenza_Istruzioni_2

...case Etichetta_n:

Sequenza_Istruzioni_ndefault:

Sequenza_Istruzioni_Default}

Page 43: Elementi di informatica di base1 Parte 4 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di informatica di base 43

• Istruzione while:while (Espressione_Booleana)Blocco

• Istruzione do-while:do Blocco while (Espressione_Booleana);

• Istruzione for:for (Inizializzazione ; EB; Continuazione) Blocco