Un esempio di if annidati

Documenti analoghi
Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.

Programmazione A.A Fondamenti di programmazione. ( Lezione IX ) Notazione Lineare Strutturata. Prof. Giovanni Gallo Dr.

Istruzioni di selezione in Java 1

Istruzioni di selezione in Java 1

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI

Programmazione in Java (I modulo)

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Laboratorio di Informatica I

Fondamenti di Programmazione. Strutture di controllo

Istruzioni Condizionali

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2015/2016

Linguaggio C Strutture di controllo

Istruzioni di Controllo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

STRUTTURE DI CONTROLLO DEL C++

Introduzione al Linguaggio C

Programmazione C Massimo Callisto De Donato

Fondamenti di Informatica A. A. 2018/19

STRUTTURE DI CONTROLLO IN C. Docente: Giorgio Giacinto AA 2009/2010

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2014/2015

Informatica 2 modulo C Massimo Callisto De Donato

Istruzioni di Controllo in C. Emilio Di Giacomo

Corso di PHP. Prerequisiti. 3 - Le strutture di controllo. Istruzioni semplici Controllo del flusso di programma

Istruzioni. Istruzioni semplici Istruzioni di controllo. Fondamenti di Informatica e laboratorio Istruzioni e Controllo del flusso

Lezione 3 Strutture di controllo

Fondamenti di Informatica L-A. Esercitazione 3

Indice. I costrutti decisionali I cicli

Strutture di Controllo

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Il linguaggio Java Istruzioni di Controllo

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Laboratorio di Programmazione e Calcolo

Istruzioni. Una istruzione semplice è qualsiasi espressione seguita da un punto e virgola. Esempio x = 0; y = 1;/* due istruzioni */

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Operatori in Java. Il Costrutto Condizionale if

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Le basi del linguaggio Java

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 8 14/11/2013

Costrutti di iterazione

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

Laboratorio di Informatica I

Il costrutto if else (I) Il costrutto if else (II)

Java SE 7. Strutture di programmazione (2)

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Assegnazione di una variabile

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Fondamenti Teorici e Programmazione

IL COSTRUTTO SELEZIONE

PHP Lezione 4. Istruzione condizionale IF. Sintassi IF: if (condizione) { istruzioni; }

INFORMATICA. Strutture condizionali

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

I costrutti del C. Le Strutture del C. Il costrutto if else (I) Il costrutto if else (II) Condizionali. if-else (else if) switch Iterative

Istruzioni iterative (o cicliche)

Oggi. La programmazione strutturata - III. Sequenza e selezione. Dove siamo. Iterazione: while e do/while. Raffinamenti successivi.

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;

Introduzione alla programmazione

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;

Laboratorio Progettazione Web Il linguaggio PHP le istruzioni. Andrea Marchetti IIT-CNR 2013/2014

Istruzioni di selezione (if/else/switch)

Strutture di Controllo

ISTRUZIONI. Le strutture di controllo permettono di aggregare istruzioni semplici in istruzioni più complesse.

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1

Corso di Informatica

Il C nel C++ Struttura di un linguaggio. Elementi lessicali. Spazi. Livello lessicale: Livello sintattico: Livello semantico:

Due osservazioni sulle variabili

Laboratorio Progettazione Web Il linguaggio PHP Lezione 6. Andrea Marchetti IIT-CNR 2011/2012

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Iterazione determinata e indeterminata

! Riassunto. ! for. ! Cicli annidati. ! Esempi, esercizi, errori tipici. ! Programmazione strutturata. ! break e continue I1; I2; I3;

Istruzioni Condizionali

ISTRUZIONI ISTRUZIONI SEMPLICI

Programmazione in Python per la bioinformatica

Costrutti condizionali e iterativi

Diagrammi di flusso: forme

COMANDI ITERATIVI. Ivan Lanese

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Informatica (A-K) 5. Algoritmi e pseudocodifica

Il C nel C++ Struttura di un linguaggio. regole per la definizione i simboli. regole per la composizione dei simboli

Struttura di un linguaggio

Università di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Istruzioni di controllo. Walter Didimo

Costrutti condizionali e iterativi

Qualsiasi programma in C++ segue lo schema:

20/10/2014 M. Nappi/FIL 1

Fondamenti di Informatica T-1. Selezione

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

Fondamenti di Informatica

Istruzioni di ripetizione in Java 1

Esecuzione condizionale. Esecuzione condizionale. Costrutto if. Costrutto if

Fondamenti di Informatica

Istruzioni di controllo: SEQUENZA

Transcript:

Programmazione A.A. 2002-03 I Costrutti di base ( Lezione XIV, parte I ) Costrutto di selezione switch Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail : {gallo, cincotti}@dmi.unict.it Un esempio di if annidati Vogliamo un programma che prenda in input un intero e produca un messaggio diverso a seconda che si immetta il numero 0, 1 oppure 2. Lo strumento a nostra disposizione (fino ad adesso) è l'istruzione if else. G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 2

Un esempio di if annidati (cont.) // prima di questo frammento abbiamo // ottenuto l'intero x con un qualunque // metodo per la gestione dell'input if (x==0) System.out.println("zero"); else if (x==1) System.out.println("uno"); else if (x==2) System.out.println("due"); else System.out.println("non capisco"); diagramma di flusso G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 3 Un esempio di if annidati (cont.) Diagramma di flusso di tre "if" a cascata. x==0 zero Questa situazione si incontra spesso. Per renderla più compatta nei programmi invece di una cascata di if si può usare lo switch x==1 x==2 non capisco uno due G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 4

La sintassi dell istruzione switch switch(espressione) { case valore_1: Istruzione_1; case valore_2 : Istruzione_2; default: IstruzioneDiDefault; } G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 5 Dunque switch ( x ) { case 0 : System.out.println("zero"); case 1: System.out.println("uno"); default: System.out.println("non capisco"); } G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 6

La semantica dell istruzione switch L istruzione switch costituisce un abbreviazione per una sequenza di if annidati. Essa valuta un espressione e ne confronta il risultato con i diversi casi elencati Ogni caso contiene un valore e una lista di istruzioni da eseguire. Il flusso di controllo è trasferito alla lista associata con il primo valore uguale all espressione G.Gallo, G.Cincotti Costrutti di base, pag. 7 e quindi x==0 zero Già visto? In effetti. x==1 x==2 uno due non capisco G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 8

L istruzione break L istruzione break pasa il controllo alla fine dell istruzione switch. Se non si usa l istruzione break, il flusso di controllo continua ai casi successivi. Qualche volta questo è utile, ma di solito i valori dei diversi casi sono mutuamente esclusivi e al più un caso corrisponde al valore dell espressione. In generale, non si deve mai dimenticare il comando break tra un caso e l'altro (stesso problema nel C!). G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 9 L istruzione break (cont.) int x; switch (x) { case 0: System.out.println("zero"); case 1: System.out.println("uno"); default: System.out.println("altro"); } Che succede se l'input x è 1? Verrà visualizzato: uno altro Ciò dipende dalla assenza del break dopo il case 1. G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 10

La clausola default Un istruzione switch può avere un caso di default. Il caso di default non ha un valore associato ma usa semplicemente la parola riservata default. Se è presente il caso di default, il controllo è trasferito all istruzione associata se non ci sono altri casi Se non è presente il caso di default e nessun valore corrisponde, il controllo passa all istruzione successiva all istruzione switch G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 11 Limiti di switch L espressione di un istruzione switch deve produrre un valore intero o carattere. Non può essere un valore in virgola mobile o una stringa. La condizione nell istruzione switch è sempre un uguaglianza. Non si possono utilizzare altri operatori relazionali. G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 12

Limiti di switch (cont.) String m; switch (m) { case "pippo": System.out.println("baudo"); case "mike": System.out.println("bongiorno"); default: System.out.println("frizzi?"); } L istruzione switch non può gestire stringhe!!! G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 13 Esempi Es. 01 Es. 02 G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 14

Programmazione A.A. 2002-03 I Costrutti di base ( Lezione XIV, parte II ) Costrutto di iterazione do while Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail : {gallo, cincotti}@dmi.unict.it Istruzioni iterative I costrutti di iterazione consentono di eseguire molte volte la stessa istruzione e sono controllati da espressioni booleane. In Java esistono tre tipi di istruzioni iterative: il ciclo while, il ciclo do while, il ciclo for. Sono equivalenti ma appropriati in situazioni diverse! G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 16

L istruzione do while L istruzione do-while a differenza del while, controlla il valore della espressione booleana alla fine del blocco di istruzioni. In questo modo quindi il corpo del ciclo verrà eseguito sicuramente almeno una volta. do { Istruzione; } while (espressione_booleana); G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 17 Semantica del ciclo do while istruzione vera condizione falsa G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 18

Confronto tra i cicli ciclo while ciclo do while istruzione condizione vera vera istruzione falsa condizione falsa G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 19 La differenza fra while consiste nel fatto che: Repetita juvant e do-while il corpo del ciclo nel do-while viene sempre eseguito almeno una volta (cioè la prima volta); nel while invece se la condizione booleana è falsa il corpo del ciclo non viene mai eseguito. G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 20

Si può scappare dai cicli? Il comando break visto all'interno dell istruzione "switch" può essere usato anche per "scappare" dal body di un ciclo while o do while. Tale pratica non è mai necessaria e rende il codice particolarmente oscuro: EVITATELO!!! G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 21 Esercitazione Lanci ripetuti di un dado Si lancia un dado finché escono consecutivamente 5 facce uguali; Visualizzare il numero dei lanci che sono stati necessari ed il valore che si è ripetuto. Es. 03 Es. 04 G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 22

Fine G.Gallo, G.Cincotti Programmazione I (A.A. 2002-03) Costrutti di base, pag. 23