1 STEROWANIE Ale nie tylkoInformatyka I Wykład 6 STEROWANIE Ale nie tylko Operatory zmniejszania i zwiększania Operator rzutowania Reguły przekształceń typów Warunki Jerzy Kotowski
2 OPERATORY ZWIĘKSZANIA I ZMNIEJSZANIAOperator inkrementacji (zwiększania) ++ Operator jednoargumentowy, priorytet 14 Zwiększa o jeden: ++Ala; ÜÞ Ala = Ala + 1; Oszczędność na czasie Uwaga!! Argument musi być lvalue, tzn. ++(Ala + Ola); BŁĄD!! Postać przedrostkowa (preinkrementacja): ++Ala; Postać przyrostkowa (postinkrementacja): Ala++; Jerzy Kotowski
3 OPERATORY ZWIĘKSZANIA I ZMNIEJSZANIA c.d.Operator dekrementacji (zmniejszania) -- Operator jednoargumentowy, priorytet 14 Zmniejsza o jeden: --Ala; ÜÞ Ala = Ala - 1; Oszczędność na czasie Argument oczywiście też musi być lvalue Postać przedrostkowa (predekrementacja): --Ala; Postać przyrostkowa (postdekrementacja): Ala--; Jerzy Kotowski
4 Operatory zwiększania i zmniejszania w wyrażeniachint a=1, b=3, c; Przykład 1: c = ++a+b; Rozwiązanie: a: 2, b: 3, c: 5 Przykład 2: c = a--+b; Rozwiązanie: a: 0, b: 3, c: 4 Przykład 3: c = a+++b; Rozwiązanie: a: 2, b: 3, c: 4 Przykład 4: c = -a---b--; Rozwiązanie: a: 0, b: 2, c: -4 c=2+++a; c=a+++2; Jerzy Kotowski
5 OPERATOR RZUTOWANIA Jednoargumentowy operator projekcji (case)Priorytet 14 Przykład użycia (jawna projekcja): float a=7, b=3.14; int c = (int)(a/2) + (int)(double)b; Rozwiązanie: c: 6 Przykład użycia (niejawna projekcja): c = a/2 + b; Rozwiązanie: c: 7 Bardzo ważny operator przy operacjach na wskaźnikach Jerzy Kotowski
6 REGUŁY PRZEKSZTAŁCEŃ TYPÓW dla operatorów arytmetycznychArgumenty dwuargumentowych operatorów arytmetycznych powinny być identyczne. Dlatego podlegają one następującym regułom przekształceń typów: Wpierw typy char i short są przekształcane na typ int a typ float na double. Następnie: double long Proste? unsigned int Jerzy Kotowski
7 KONSTRUKCJE STERUJĄCEKonstrukcje sterujące ustalają kolejność obliczeń. Wyrażenie staje się instrukcją jeżeli jest zakończone średnikiem. Instrukcja złożona (blok) jest to grupa deklaracji oraz instrukcji w parze nawiasów { … }. W dalszej części materiału - jeżeli nie zostanie podkreślone, że jest inaczej - słowo instrukcja będzie oznaczało zarówno instrukcję pojedynczą (prostą) jak i instrukcję blokową. Jerzy Kotowski
8 KONSTRUKCJE STERUJĄCE c.d.WARUNKI if - else else - if switch PĘTLE while do - while for SŁOWA KLUCZOWE case - w kontekście z konstrukcją switch default - w kontekście z konstrukcją switch break - wszędzie continue - w kontekście z pętlami Jerzy Kotowski
9 KONSTRUKCJA if - else Składnia: if(wyrażenie) instrukcja_1 else instrukcja_2 Przykład 1: max(a,b) if(a>b) x=a; else x=b; Przykład 2: bez else if(a>b) x=0; Przykład 3: zagnieżdżanie if(n>0) if(a>b) x=a; else x=b; else dotyczy wew. if-a P. 4: nawiasy klamrowe if(n>0) {if(a>b) x=a;} else x=b; Wcięcia są bez znaczenia! Jerzy Kotowski
10 KONSTRUKCJA else - if Składnia: if(wyrażenie_1) instrukcja_1 else if(wyrażenie_2) instrukcja_2 else if(wyrażenie_3) instrukcja_3 else instrukcja_4 Ostatnie else nie jest obowiązkowe Przykład: delta=b*b-4*a*c; if(delta>0) { s=sqrt(delta); x1=(-b-s)/2/a; x2=(-b+s)/2/a; printf(“Two roots: ”); printf(“%f %f”,x1,x2);} else if(!delta) printf(“x0=%f”,-b/2/a); else printf(“No roots”); Jerzy Kotowski
11 KONSTRUKCJA else – if c.d.2-5 0-2 3-5 A3 if(x>0&&x<=2) Instrukcja_1 else if(x>2&&x<5) Instrukcja_2 if(x>3&&x<5) Instrukcja_3 Instrukcja_4 if(xA1) Instrukcja_1 else if(xA2) Instrukcja_2 if(xA3) Instrukcja_3 Instrukcja_4 x=4, else: 2 x=4, bez else: 2,3,4 Jerzy Kotowski