STEROWANIE Ale nie tylko Informatyka I Wykład 6 STEROWANIE Ale nie tylko Operatory zmniejszania i zwiększania Operator rzutowania Reguły przekształceń typów Warunki Jerzy Kotowski
OPERATORY ZWIĘKSZANIA I ZMNIEJSZANIA Operator 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
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
Operatory zwiększania i zmniejszania w wyrażeniach int 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
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
REGUŁY PRZEKSZTAŁCEŃ TYPÓW dla operatorów arytmetycznych Argumenty 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
KONSTRUKCJE STERUJĄCE Konstrukcje 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
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
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
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
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