Download presentation
Presentation is loading. Please wait.
Published byHailey Stewart Modified over 11 years ago
1
Laboratorio di Linguaggi lezione VI: istruzioni di controllo di flusso Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2006/07
2
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ripasso costrutti base: Istruzioni di Controllo del Flusso nozioni di sintassi e semantica (intuitivamente, non formalmente)
3
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a if then else costrutto condizionale if ( ) else Come gia detto, esegue statement1 (il ramo then) sse lespressione risulta diversa da zero
4
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a Esempi di s: y = x + 10; { y = x + 10; z = 4; }; niente punto-e-virgola! nota: punto e virgola...
5
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a if then else costrutto condizionale if ( ) else if (x) y = x + 10; else y = 20; if (x==2) {y = x + 10;... } else y = 20;
6
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a 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
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a 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 (x=2) { y = x + 10;... }; if (x==2) {y = x + 10;... }; else y = 20; if (x==2); { y = x + 10;... };
8
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a for costrutto iterativo for ( ; ; ) for (i=0,j=10;(j>20) &&(i<5); i++, j--) { vect[i]+=10; printf(%d, vect[i]); }
9
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a while ciclo while while ( ) while (i<N && a[i]< 1000) i = i + 1;
10
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a do while ciclo do-while do while ( ) do { printf("Immettere un valore intero pari\n"); scanf("%d",&a); /* leggi il numero a da tastiera */ } while(a%2);
11
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a switch costrutto condizionale a più vie switch ( ) { case : break;... case : 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
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a 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
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a labels e goto salti non strutturati –di solito, simbolo di cattiva programmazione (programmi spaghetti) –perlomeno, non eleganti : goto ;
14
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a labels e goto ad esempio: equivalente a: i=0; while (i <= NUM) printf("%d \n",++i);... i=0; INIZIO : if (i>NUM) goto FINE; printf("%d \n",++i); goto INIZIO; FINE :...
15
M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 6 / 0 7 U n i v e r s i t à d e l l I n s u b r i a 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)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.