Informatyka I Wykad 6 STEROWANIE Ale nie tylko

  • Slides: 11
Download presentation
Informatyka I Wykład 6 STEROWANIE Ale nie tylko u u Operatory zmniejszania i zwiększania

Informatyka I Wykład 6 STEROWANIE Ale nie tylko u u Operatory zmniejszania i zwiększania Operator rzutowania Reguły przekształceń typów Warunki Jerzy Kotowski 1

OPERATORY ZWIĘKSZANIA I ZMNIEJSZANIA u u u u Operator inkrementacji (zwiększania) ++ Operator jednoargumentowy,

OPERATORY ZWIĘKSZANIA I ZMNIEJSZANIA u u u u 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): Postać przyrostkowa (postinkrementacja): Jerzy Kotowski ++Ala; Ala++; 2

OPERATORY ZWIĘKSZANIA I ZMNIEJSZANIA c. d. u u u u Operator dekrementacji (zmniejszania) -Operator

OPERATORY ZWIĘKSZANIA I ZMNIEJSZANIA c. d. u u u u 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 3

Operatory zwiększania i zmniejszania w wyrażeniach u u u u Przykład 1: Rozwiązanie: Przykład

Operatory zwiększania i zmniejszania w wyrażeniach u u u u Przykład 1: Rozwiązanie: Przykład 2: Rozwiązanie: Przykład 3: Rozwiązanie: Przykład 4: Rozwiązanie: int a=1, b=3, c; c = ++a+b; a: 2, b: 3, c: 5 c = a--+b; a: 0, b: 3, c: 4 c = a+++b; a: 2, b: 3, c: 4 c = -a---b--; a: 0, b: 2, c: -4 Jerzy Kotowski c=2+++a; c=a+++2; 4

OPERATOR RZUTOWANIA u u u u Jednoargumentowy operator projekcji (case) Priorytet 14 Przykład użycia

OPERATOR RZUTOWANIA u u u u 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 5

REGUŁY PRZEKSZTAŁCEŃ TYPÓW dla operatorów arytmetycznych u u Argumenty dwuargumentowych operatorów arytmetycznych powinny być

REGUŁY PRZEKSZTAŁCEŃ TYPÓW dla operatorów arytmetycznych u u Argumenty dwuargumentowych operatorów arytmetycznych powinny być identyczne. Dlatego podlegają one następującym regułom przekształceń typów: u Wpierw typy char i short są przekształcane na typ int a typ float na double. u Następnie: Proste? double long unsigned int Jerzy Kotowski 6

KONSTRUKCJE STERUJĄCE u u Konstrukcje sterujące ustalają kolejność obliczeń. Wyrażenie staje się instrukcją jeżeli

KONSTRUKCJE STERUJĄCE u u 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 7

KONSTRUKCJE STERUJĄCE c. d. WARUNKI PĘTLE if - else - if switch while do

KONSTRUKCJE STERUJĄCE c. d. WARUNKI PĘTLE if - else - if switch 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 8

KONSTRUKCJA if - else u u u Składnia: if(wyrażenie) instrukcja_1 else instrukcja_2 Przykład 1:

KONSTRUKCJA if - else u u u Składnia: if(wyrażenie) instrukcja_1 else instrukcja_2 Przykład 1: max(a, b) if(a>b) x=a; else x=b; u u Przykład 2: bez else if(a>b) x=0; Jerzy Kotowski 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! 9

KONSTRUKCJA else - if u u Składnia: if(wyrażenie_1) instrukcja_1 else if(wyrażenie_2) instrukcja_2 else if(wyrażenie_3)

KONSTRUKCJA else - if u u 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 u Przykład: delta=b*b-4*a*c; if(delta>0) { s=sqrt(delta); x 1=(-b-s)/2/a; x 2=(-b+s)/2/a; printf(“Two roots: ”); printf(“%f %f”, x 1, x 2); } else if(!delta) printf(“x 0=%f”, -b/2/a); else printf(“No roots”); Jerzy Kotowski 10

KONSTRUKCJA else – if c. d. A 1 0 -2 A 3 if(x A

KONSTRUKCJA else – if c. d. A 1 0 -2 A 3 if(x A 1) Instrukcja_1 else if(x A 2) Instrukcja_2 else if(x A 3) Instrukcja_3 else Instrukcja_4 2 -5 3 -5 if(x>0&&x<=2) Instrukcja_1 else if(x>2&&x<5) Instrukcja_2 else if(x>3&&x<5) Instrukcja_3 else Instrukcja_4 Jerzy Kotowski u u x=4, else: 2 x=4, bez else: 2, 3, 4 11