Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Istruzioni condizionali e blocco
Capitolo 13 febbraio 2004 Istruzioni condizionali e blocco
2
Introduzione alle istruzioni di controllo
Tipologie di istruzioni istruzioni semplici istruzioni strutturate o di controllo istruzioni composte da più istruzioni e/o condizioni tre categorie di istruzioni strutturate blocco (o istruzione composta) istruzione condizionale istruzione ripetitiva Istruzioni condizionali e blocco
3
Istruzione condizionale if-else
Scrivere un frammento di codice che calcola il minore tra due numeri interi dati ... calcola il minore tra due numeri interi a e b ... int minore; // il minore tra a e b if (a<b) minore = a; else minore = b; ... il risultato è minore ... Istruzioni condizionali e blocco
4
Istruzioni condizionali e blocco
Istruzione if-else if ( espressione ) istruzione-parte-if else istruzione-parte-else espressione è la condizione dell’if-else deve essere di tipo boolean istruzione-parte-if è la parte if dell’istruzione if-else istruzione-parte-else è la parte else dell’istruzione if-else Semantica valuta il valore vespressione della condizione se il valore vespressione vale true, allora esegui l’istruzione parte if se invece il valore vespressione vale false, allora esegui l’istruzione parte else Istruzioni condizionali e blocco
5
Diagramma di flusso per l’istruzione if-else
parte if parte else condizione true false istruzione if-else Istruzioni condizionali e blocco
6
Blocco (istruzione composta)
Scrivere un frammento di codice che calcola il minore e il maggiore tra due numeri interi dati ... calcola il minore e il maggiore tra a e b ... if (a > b) minore = b; maggiore = a; else minore = a; maggiore = b; ... i risultati sono minore e maggiore ... questo frammento di codice non è corretto Per scrivere una sequenza di istruzioni dove è richiesta una singola istruzione, si deve usare un blocco un blocco (o istruzione composta) è una sequenza di istruzioni racchiuse tra parentesi graffe { e } Istruzioni condizionali e blocco
7
Istruzioni condizionali e blocco
Uso di blocchi ... calcola il minore e il maggiore tra a e b ... if (a > b) { minore = b; maggiore = a; } else { minore = a; maggiore = b; } ... i risultati sono minore e maggiore ... Istruzioni condizionali e blocco
8
Semantica e diagramma di flusso per blocco
{ istruzione1 istruzione istruzionen } Semantica valuta le istruzioni che compongono il blocco, una alla volta e in sequenza, nell’ordine in cui sono scritte blocco istruzione1 istruzione2 istruzionen Istruzioni condizionali e blocco
9
Istruzione condizionale if
Scrivere un frammento di codice che incrementa la variabile zeri se la variabile numero vale zero se numero non vale zero allora non bisogna fare niente ... se numero vale zero incrementa zeri ... if (numero==0) zeri++; Istruzioni condizionali e blocco
10
Istruzioni condizionali e blocco
Istruzione if if ( espressione ) istruzione Semantica valuta la condizione se la condizione è vera, allora esegui l’istruzione parte if Istruzioni condizionali e blocco
11
Diagramma di flusso per l’istruzione if
parte if true false istruzione if condizione Istruzioni condizionali e blocco
12
Istruzioni condizionali annidate
Calcolare il maggiore tra tre numeri interi a, b e c dati una prima soluzione ... calcola il maggiore tra a, b e c ... int maggiore; // il maggiore tra a, b e c int maggioreTraAeB; // il maggiore tra a e b /* calcola il maggiore tra a e b */ if (a>b) maggioreTraAeB = a; else maggioreTraAeB = b; /* calcola il maggiore tra a, b e c, * confrontanto c con il maggiore tra a e b */ if (maggioreTraAeB > c) maggiore = maggioreTraAeB; maggiore = c; ... il risultato è maggiore ... Istruzioni condizionali e blocco
13
Istruzioni condizionali annidate
Una soluzione alternativa ... calcola il maggiore tra a, b e c ... int maggiore; // il maggiore tra a, b e c if (a>b) // il maggiore è a oppure c if (a>c) // il maggiore è a maggiore = a; else // il maggiore è c maggiore = c; else // il maggiore è b oppure c if (b>c) // il maggiore è b maggiore = b; ... il risultato è maggiore ... Istruzioni condizionali e blocco
14
Cascata di istruzioni if-else
consente di eseguire una istruzioni tra molte (N) sulla base di alcune condizioni (N-1) una modalità di composizione di istruzioni condizionali Istruzioni condizionali e blocco
15
Il problema del triangolo
Dati tre numeri interi a, b e c che rappresentano le lunghezze dei lati di un triangolo, visualizza un messaggio che dice se il triangolo è equilatero, isoscele o scaleno una attività preliminare – conta le coppie di lati uguali /* calcola il numero di coppie di lati uguali */ uguali = 0; /* confronta i lati */ if (a==b) uguali++; if (a==c) if (b==c) /* ora uguali può valere 0, 1 oppure 3 */ Istruzioni condizionali e blocco
16
Una cascata di istruzioni if-else
/* visualizza il messaggio: * "scaleno" - se uguali vale 0 * "isoscele" - se uguali vale 1 * "equilatero" - se uguali vale 3 */ if (uguali==0) System.out.println("scaleno"); else if (uguali==1) System.out.println("isoscele"); else // uguali vale sicuramente 3 System.out.println("equilatero"); Istruzioni condizionali e blocco
17
Istruzioni condizionali e blocco
Diagramma di flusso alternativa1 condizione1 true false cascata di if-else alternativa2 condizione2 alternativaelse Istruzioni condizionali e blocco
18
Istruzioni condizionali e blocco
Esempi Data l’età di una persona, visualizza il “tipo” di persona if (età<10) System.out.println("bambino"); else if (età<18) System.out.println("ragazzo"); else if (età<30) System.out.println("giovane"); else // età >= 30 System.out.println("adulto"); Cascata di if-else senza l’ultima istruzione parte else if (lati==3) System.out.println("triangolo"); else if (lati==4) System.out.println("quadrato"); else if (lati==5) System.out.println("pentagono"); Istruzioni condizionali e blocco
19
Il problema dell’else mancante
Se è utile avere una istruzione condizionale nella parte else di un’altra istruzione condizionale è meno utile e può essere fonte di errori usare una istruzione condizionale nella parte if di un’altra istruzione condizionale ... verifica se x è a sinistra/destra dell’intervallo [a,b] ... if (x>=a) // if-1 if (x>b) // if-2 System.out.println("destra"); else System.out.println("sinistra"); è sbagliato Istruzioni condizionali e blocco
20
Il problema dell’else mancante
Una parte else appartiene all’ultima istruzione condizionale incontrata l’indentazione corretta ... verifica se x è a sinistra/destra dell’intervallo [a,b] ... if (x>=a) // if-1 if (x>b) // if-2 System.out.println("destra"); else System.out.println("sinistra"); Quale è la soluzione corretta? Istruzioni condizionali e blocco
21
Uso di predicati complessi
Le condizioni delle istruzioni condizionali possono essere anche molto complesse operatori relazionali e/o operatori logici Istruzioni condizionali e blocco
22
Maggiore tra tre numeri
... calcola il maggiore tra a, b e c ... int maggiore; // il maggiore tra a, b e c if (a>b && a>c) // il maggiore è a maggiore = a; else if (b>c) // il maggiore è b maggiore = b; else // il maggiore è c maggiore = c; ... il risultato è maggiore ... Istruzioni condizionali e blocco
23
Il problema del triangolo
/* calcola il tipo del triangolo * i cui lati sono a, b e c */ if (a==b && a==c) System.out.println("equilatero"); else if (a==b || a==c || b==c) System.out.println("isoscele"); else System.out.println("scaleno"); Istruzioni condizionali e blocco
24
Istruzioni condizionali e blocco
Linee guida Linee guida per selezionare l’istruzione di controllo più adeguata a un caso in esame se devono essere eseguite delle istruzioni in sequenza va usata una istruzione composta (blocco) se deve essere eseguita una istruzione al verificarsi di una condizione, oppure non bisogna fare niente va usata l’istruzione condizionale if se deve essere eseguita una tra due istruzioni in alternativa sulla base dell’esito di una condizione va usata l’istruzione condizionale if-else se deve essere eseguita una tra tre o più istruzioni (in alternativa) sulla base dell’esito di più condizioni va usata una cascata di istruzioni if-else se, sulla base dell’esito di più condizioni, deve essere eseguita una tra due o più istruzioni (in alternativa) oppure niente va usata una cascata di istruzioni if-else senza parte else finale Istruzioni condizionali e blocco
25
Istruzioni condizionali e blocco
Errori comuni Un errore comune nell’uso dell’istruzione composta dimenticare di usarla Attenzione all’istruzione vuota – composta da un punto e virgola ... se numero vale zero incrementa zeri ... if (numero==0); zeri++; Scrivere le condizioni in una cascata di if-else senza tenere in considerazione il fallimento delle condizioni precedenti /* calcola il maggiore tra a, b e c */ if (a>b && a>c) maggiore = a; else if (b>a && b>c) maggiore = b; else if (c>a && c>b) maggiore = c; /* maggiore è il maggiore tra a, b e c (???) */ Istruzioni condizionali e blocco
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.