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

Post on 02-May-2015

219 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Elementi di informatica di base 1

Parte 4

Elementi di Informatica di baseDott.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

Elementi di informatica di base 3

Strutture Java

• Sequenza– di default

Selezione» if» if-else» switch

Ripetizione» while» do-while» for

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

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?

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

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.

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.

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 |

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

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

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))

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

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

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;

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

Elementi di informatica di base 17

Diagramma di flusso

Espressione_Booleanatrue

Blocco_1

false

Blocco_2

Prossima_Istruzione

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;}

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

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’;

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}

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

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?

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’;}

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

Elementi di informatica di base 26

Esempio

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

• Equivale a:

if (n1>n2)max = n1;

elsemax = n2;

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

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

Elementi di informatica di base 29

trueBlocco

Diagramma di flusso

Espressione_Booleana

false

Prossima_Istruzione

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++;}

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;

}

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

Elementi di informatica di base 33

Diagramma di flusso

Espressione_Booleana

false

Prossima_Istruzione

Blocco

true

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);

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;}

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

Elementi di informatica di base 37

Diagramma di flusso

Inizializzazione

Continuazione

Bloccotrue

Espressione_Booleana

false

Prossima_Istruzione

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;

}

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)

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

Elementi di informatica di base 41

• Istruzione if:if (Espressione_Booleana)Blocco

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

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}

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

top related