La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Istruzioni condizionali e blocco

Presentazioni simili


Presentazione sul tema: "Istruzioni condizionali e blocco"— Transcript della presentazione:

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


Scaricare ppt "Istruzioni condizionali e blocco"

Presentazioni simili


Annunci Google