Istruzioni condizionali e blocco

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Strutture condizionali
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Selezione A. Ferrari.
3TC – 5/11/2010 Cicli while e do.. While Contatori e Totalizzatori.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F3 Iterazione.
Iterazione Capitolo 17 febbraio 2004 Iterazione.
Array di array Capitolo 20 febbraio 2004 Array di array.
Capitolo 13 Verifica e debug Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Iterazione enumerativa (for)
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: funzione di output a video Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Programmazione Corso di laurea in Informatica
Istruzioni di ripetizione in Java
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Selezione (=scelta) con “if-else”
Strutture di controllo in C -- Flow Chart --
Introduzione alla Ricorsione
Java base II: Strutture di Controllo
Algoritmi e diagrammi di flusso
Programmazione in Java Claudia Raibulet
Javascript 5 Selezione. Listruzione IF (in italiano SE) pone una scelta, ossia 'se vero' esegui in un modo oppure 'se falso' esegui in un altro modo.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 3 (Deitel) Lo sviluppo di programmi strutturati Indice degli argomenti Introduzione 3.2 -
CODIFICA Da flow-chart a C++.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Lezione 6 Strutture di controllo Il condizionale
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Parte 4 Elementi di Informatica di base
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
BIOINFO3 - Lezione 221 Listruzione IF-ELSE prevede un secondo blocco di istruzioni da eseguire in alternativa al primo nel caso la condizione sia falsa.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
Corso di Programmazione in Java – Esercizio n° 001
Anno accademico Le istruzioni di controllo in C.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Programmazione imperativa
Ripetizione La vera potenza dei programmi per computer risiede nella capacità di ripetere lo stesso calcolo o sequenza di istruzioni più volte, ogni volta.
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
Variabili e assegnazione
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
Introduzione a Javascript
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Algoritmi e basi del C Struttura di un programma
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Strutture di controllo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Luca Chichisola1 Dal problema al programma LUCA CHICHISOLA.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

Istruzioni condizionali e blocco Capitolo 13 febbraio 2004 Istruzioni condizionali e blocco

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

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

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

Diagramma di flusso per l’istruzione if-else parte if parte else condizione true false istruzione if-else Istruzioni condizionali e blocco

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

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

Semantica e diagramma di flusso per blocco { istruzione1 istruzione2 ... 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

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

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

Diagramma di flusso per l’istruzione if parte if true false istruzione if condizione Istruzioni condizionali e blocco

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

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

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

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

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

Istruzioni condizionali e blocco Diagramma di flusso alternativa1 condizione1 true false cascata di if-else alternativa2 condizione2 alternativaelse Istruzioni condizionali e blocco

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

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

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

Uso di predicati complessi Le condizioni delle istruzioni condizionali possono essere anche molto complesse operatori relazionali e/o operatori logici Istruzioni condizionali e blocco

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

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

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

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