La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.

Presentazioni simili


Presentazione sul tema: "Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies."— Transcript della presentazione:

1 Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco1 Capitolo 13 febbraio 2004

2 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco2 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

3 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco3 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

4 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco4 Istruzione if-else if ( espressione ) istruzione-parte-if else istruzione-parte-else espressione è la condizione dellif-else deve essere di tipo boolean istruzione-parte-if è la parte if dellistruzione if-else istruzione-parte-else è la parte else dellistruzione if-else Semantica valuta il valore v espressione della condizione se il valore v espressione vale true, allora esegui listruzione parte if se invece il valore v espressione vale false, allora esegui listruzione parte else

5 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco5 Diagramma di flusso per listruzione if-else parte ifparte else condizione truefalse istruzione if-else

6 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco6 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 }

7 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco7 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...

8 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco8 Semantica e diagramma di flusso per blocco { istruzione 1 istruzione 2... istruzione n } Semantica valuta le istruzioni che compongono il blocco, una alla volta e in sequenza, nellordine in cui sono scritte blocco istruzione 1 istruzione 2 istruzione n

9 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco9 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++;

10 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco10 Istruzione if if ( espressione ) istruzione Semantica valuta la condizione se la condizione è vera, allora esegui listruzione parte if

11 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco11 Diagramma di flusso per listruzione if parte if truefalse istruzione if condizione

12 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco12 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; else maggiore = c;... il risultato è maggiore...

13 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco13 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; else // il maggiore è c maggiore = c;... il risultato è maggiore...

14 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco14 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

15 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco15 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) uguali++; if (b==c) uguali++; /* ora uguali può valere 0, 1 oppure 3 */

16 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco16 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");

17 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco17 Diagramma di flusso alternativa 1 condizione 1 true false cascata di if-else alternativa 2 condizione 2 true false alternativa else

18 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco18 Esempi Data letà 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 lultima 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");

19 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco19 Il problema dellelse mancante Se è utile avere una istruzione condizionale nella parte else di unaltra istruzione condizionale è meno utile e può essere fonte di errori usare una istruzione condizionale nella parte if di unaltra istruzione condizionale... verifica se x è a sinistra/destra dellintervallo [a,b]... if (x>=a) // if-1 if (x>b) // if-2 System.out.println("destra"); else System.out.println("sinistra"); è sbagliato

20 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco20 Il problema dellelse mancante Una parte else appartiene allultima istruzione condizionale incontrata lindentazione corretta... verifica se x è a sinistra/destra dellintervallo [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?

21 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco21 Uso di predicati complessi Le condizioni delle istruzioni condizionali possono essere anche molto complesse operatori relazionali e/o operatori logici

22 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco22 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...

23 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco23 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");

24 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco24 Linee guida Linee guida per selezionare listruzione 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 listruzione condizionale if se deve essere eseguita una tra due istruzioni in alternativa sulla base dellesito di una condizione va usata listruzione condizionale if-else se deve essere eseguita una tra tre o più istruzioni (in alternativa) sulla base dellesito di più condizioni va usata una cascata di istruzioni if-else se, sulla base dellesito 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

25 Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies srl Istruzioni condizionali e blocco25 Errori comuni Un errore comune nelluso dellistruzione composta dimenticare di usarla Attenzione allistruzione 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 (???) */


Scaricare ppt "Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies."

Presentazioni simili


Annunci Google