Anteprima
Vedrai una selezione di 1 pagina su 5
Istruzione Switch Pag. 1
1 su 5
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi

Istruzione switch



L’istruzione switch può essere usata con il linguaggio di programmazione C e C++.
É un istruzione che può far evitare l’uso di molte “if”, così da rendere il programma più facile da vedere in caso ci dovessero essere degli errori.

Es.

Switch (a)
{
Case v1:
A1;
break;

default:
B1;
}
l'espressione (a) può essere una variabile oppure un'espressione aritmetica.
"Case v1" è come scrivere "if", per esempio quando viene premuto il tasto "1". In questo caso passa al livello successivo e compie l'azione desiderata, come fare un calcolo e visualizzare un messaggio.
Non bisogna mai dimenticare di scrivere "break", perché impedisce di passare al caso successivo in caso ce ne fosse un altro.
Il "default" invece rappresenta una "else", che viene eseguito in caso si dovesse sbagliare la digitazione del tasto desiderato.
Come per il cicli anche l'istruzione switch è racchiusa all'interno di due parentesi graffe, una che apre e una che chiude.

É un'istruzione che può essere usata per creare un semplice programma in cui si possa eseguire una somma di due numeri interi.
Esempio:
switch(operazione)
{
case 1:
c=a+b;
break;

La spiegazione completa si trova nel file in pdf da scaricare, con un esercizio e la soluzione per verificare lo svolgimento dell’esercizio.
Estratto del documento

switch

Istruzione

Sintassi dell’istruzione

Particolarità dell’istruzione

Esercizio proposto

Verifica della soluzione

Scelte ed alternative 2

Scelte multiple

if( mese == 1 )

if

Quando occorre printf("Gennaio\n") ;

compiere una if( mese == 2 )

else if

printf("Febbraio\n") ;

sequenza di scelte, in else if( mese == 3 )

if

printf("Marzo\n") ;

funzione del valore di else if( mese == 4 )

if

printf("Aprile\n") ;

una variabile, occorre else if( mese == 5 )

if

if-

una catena di printf("Maggio\n") ;

switch ............................

Istruzione else else if( mese == 9 )

if

printf("Settembre\n") ;

Lo stesso risultato si else if( mese == 10 )

if

printf("Ottobre\n") ;

può ottenere in forma else if( mese == 11 )

if

printf("Novembre\n") ;

più compatta else if( mese == 12 )

if

mediante l’istruzione printf("Dicembre\n") ;

else

switch printf("MESE ERRATO!\n") ;

4

switch

Sintassi istruzione Precisazioni (1/2)

switch ( e )

{ e

L’espressione può essere una variabile oppure

case v1: un’espressione aritmetica

e=...

A1 ; int, char enum

Il tipo di dato deve essere o

e=v1 e=v2 altrimenti

break ; e=v3 Ciascun caso è identificato da una costante

A1

case v2: e

L’espressione viene confrontata con il valore

A2

A2 ; v1...vn

delle costanti

A3

break ; Il tipo di dato deve essere compatibile

...

case v3: case...break

Ciascun caso è delimitato da

An

A3 ; {...}

Non vi sono parentesi graffe

break ;

...........

default:

default

An ; 5 6

} break

Precisazioni (2/2) L’istruzione

break

Il significato di è di portare l’esecuzione

I casi possono apparire in qualsiasi ordine del programma fino al termine del costrutto

Devono essere tutti diversi switch

Verrà selezionato al più un caso }

“Salta alla chiusa graffa”:

default

Il caso viene valutato se e solo se break,

In assenza di l’esecuzione proseguirebbe

nessuno degli altri casi è stato considerato attraverso il caso successivo

Opzionale, ma sempre consigliato case,

Né il prossimo né eventuali parentesi graffe,

possono fermare l’esecuzione lineare

7 8

Casi multipli Esempio

switch( mese )

switch

{

Potrebbe essere necessario eseguire lo stesso case 1:

codice in corrispondenza di diversi valori printf("Gennaio\n") ; mesi3.c

break ;

dell’espressione case 2:

printf("Febbraio\n") ;

È possibile accomunare più casi, indicandoli break ;

consecutivamente case 3:

printf("Marzo\n") ;

switch( ora )

switch break ;

{ case 4:

switch(

switch ora ) printf("Aprile\n") ;

case 12: { break ;

pranzo = 1 ; case 12: ..............................

break;

break case 13: case 12:

case 13: pranzo = 1 ; printf("Dicembre\n") ;

pranzo = 1 ; break ;

break;

break

break;

break default:

default

}

} printf("MESE ERRATO!\n") ;

9 10

} Istruzione atipica

switch

L’istruzione è anomala sotto diversi punti

di vista:

Non utilizza le parentesi graffe per l’annidamento

delle istruzioni interne

Prevede solamente il controllo di uguaglianza

e==v

switch

Istruzione Richiede che i valori da confrontare siano costanti

break default

e sono opzionali

Occorre una forte disciplina nell’utilizzarla

correttamente! 12

Errore frequente Errore frequente

switch( ora )

switch

{

È errato dimenticare È errato utilizzare variabili come valori dei singoli

case 12: case

break

l’istruzione al pranzo = 1 ;

case 20:

termine di ogni caso Se non è possibile usare costanti, allora utilizzare

cena = 1 ;

break;

break if-else

delle catene di

}

viene interpretato come forma corretta

forma corretta

switch( ora )

switch switch( ora ) switch( ora )

switch switch

{ if( ora==orapranzo )

if

{ {

case 12: {

case 12: case orapranzo: pranzo = 1 ;

pranzo = 1 ; pranzo = 1 ; pranzo = 1 ; }

cena = 1 ; break;

break break;

break

break; else if( ora==oracena )

break if

case 20: case oracena:

case 20: {

cena = 1 ; cena = 1 ;

cena = 1 ; cena = 1 ;

break; break;

break break

break; }

break } }

13 14

} Errore frequente Suggerimento

default

Utilizzare sempre l’istruzione

È errato pensare di poter fare confronti di ordine,

o confronti multipli Anche se non vi è ragione apparente, è

if-else

Utilizzare sequenze di opportuno che il programma intercetti valori

errati della variabile

else if

Non usare se i casi non sono

mutuamente esclusivi

forma corretta switch( ora )

switch

{

switch( ora )

switch if( ora<12 )

if ......

{ {

case <12: mattino = 1 ; default:

default

mattino = 1 ; } printf("Errore: valore inatteso

break;

break if( ora==12 || 20 )

if %d per la variabile ora\n", ora) ;

case 12 || 20: { }

pasti = 1 ; pasti = 1 ;

break;

break } 15 16

} Suggerimento

default

Posizionare l’istruzione come ultimo

switch

caso dello

Potrebbe stare ovunque

Maggiore leggibilità

break

L’istruzione finale si può omettere switch

Istruzione

17

Dettagli
Publisher
5 pagine
19 download