Presentation is loading. Please wait.

Presentation is loading. Please wait.

Laboratorio di Linguaggi lezione VI: istruzioni di controllo di flusso Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.

Similar presentations


Presentation on theme: "Laboratorio di Linguaggi lezione VI: istruzioni di controllo di flusso Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali."— Presentation transcript:

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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.com/2/578112/slides/slide_9.jpg", "name": "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

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)


Download ppt "Laboratorio di Linguaggi lezione VI: istruzioni di controllo di flusso Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali."

Similar presentations


Ads by Google