Laboratorio di Linguaggi lezione VI: istruzioni di controllo di flusso - PowerPoint PPT Presentation

About This Presentation
Title:

Laboratorio di Linguaggi lezione VI: istruzioni di controllo di flusso

Description:

Title: PowerPoint Presentation Last modified by: mtarini Created Date: 1/1/1601 12:00:00 AM Document presentation format: Presentazione su schermo – PowerPoint PPT presentation

Number of Views:67
Avg rating:3.0/5.0
Slides: 16
Provided by: cnr64
Category:

less

Transcript and Presenter's Notes

Title: Laboratorio di Linguaggi lezione VI: istruzioni di controllo di flusso


1
Laboratorio di Linguaggilezione VI istruzioni
di controllo di flusso
Università dellInsubria Facoltà di Scienze
Matematiche, Fisiche e Naturali di Varese Corso
di Laurea in Informatica Anno Accademico 2006/07
  • Marco Tarini

2
Ripasso costrutti base
Istruzioni di Controllo del Flusso nozioni di
sintassi e semantica (intuitivamente, non
formalmente)
3
if then else
  • costrutto condizionale

if (ltexpressiongt) ltstatement1gtelse
ltstatement2gt
Come gia detto, esegue statement1 (il ramo
then) sse lespressione risulta diversa da zero
4
ltstatementgt
  • Esempi di ltstatementgts

y x 10
y x 10 z 4
5
if then else
  • costrutto condizionale

if (ltexpressiongt) ltstatement1gtelse
ltstatement2gt
if (x) y x 10 else y 20
if (x2) y x 10 ... else y 20
6
Lo sapevate che...
  • In C, quasi tutti gli statement sono anche
    espressioni?
  • Ad esempio, lassegnamento
  • e anche unespressione, che vale il valore
    assegnato (e ha anche il suo tipo)
  • Cio consente di scrivere, per esempio(non
    solo e coinciso, ma e anche efficiente,come da
    filosofia C)

x y
int x,y,z x y z 10
7
if then else trappole
  • errore di sintassi (non compila, innocuo)
  • errore nella guardia (compila errore cattivo.
    Cosa fa?)
  • punto-e-virgola di troppo (compila errore
    cattivo. Cosa fa?)

if (x2) y x 10 ... else y 20
if (x2) y x 10 ...
if (x2) y x 10 ...
8
for
  • costrutto iterativo

for (ltexpr0gtltexpr1gtltexpr2gt) ltstatgt
for (i0,j10(jgt20) (ilt5) i, j--)
vecti10 printf(d, vecti)
9
while
  • ciclo while

while (ltexpr0gt) ltstatgt
while (iltN ailt 1000) i i 1
10
do while
  • ciclo do-while

do ltstatgt while (ltexpr0gt)
do printf("Immettere un valore intero
pari\n") scanf("d",a) / leggi il numero a
da tastiera / while(a2)
11
switch
  • costrutto condizionale a più vie

switch (ltexpr0gt) case ltconst1gt ltstat1gt
break ... case ltconst2gt ltstat2gt
break
switch (ch) case 'a'
cont_a break case 'e' cont_e
break case 'i' cont_i break
case 'o' cont_o break
case 'u' cont_u break default
cont_car
12
switch
  • senza break fall trought

switch (oggi) case LUN ... / gestisci il
caso LUN / break case MAR ...
/ gestisci il caso MAR / break
case SAB ... / operazioni solo per il SAB /
/ FALL TROUGHT / case DOM ... /
gestisci per il SAB e la DOM /
break default ... / gestisci gli altri
casi /
13
labels e goto
  • salti non strutturati
  • di solito, simbolo di cattiva programmazione
  • (programmi spaghetti)
  • perlomeno, non eleganti

ltlabelgt
goto ltlabelgt
14
labels e goto
  • ad esempio
  • equivalente a

i0 while (i lt NUM) printf("d
\n",i) ...
            i0    INIZIO if (igtNUM) goto
FINE             printf("d \n",i)
            goto INIZIO    FINE    ...
15
break e continue
  • utilizzabili in tutti i cicli
  • for, while, do-while
  • break esci dal ciclo
  • (vai alla prima iterazione dopo il ciclo)
  • continue interrompi literazone corrente
  • vai allinizio della prossima iterazione
  • (dove, per prima cosa, la guardia di uscita dal
    ciclo viene testata)
Write a Comment
User Comments (0)
About PowerShow.com