elementi di informatica di base1 parte 4 elementi di informatica di base dott.ssa elisa tiezzi
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