Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Jerzy Kotowski1 Informatyka I Wykład 5 OPERATORY l Priorytety i kolejność obliczeń l Operator podstawiania l Operatory arytmetyczne l Relacje i operatory.

Podobne prezentacje


Prezentacja na temat: "Jerzy Kotowski1 Informatyka I Wykład 5 OPERATORY l Priorytety i kolejność obliczeń l Operator podstawiania l Operatory arytmetyczne l Relacje i operatory."— Zapis prezentacji:

1 Jerzy Kotowski1 Informatyka I Wykład 5 OPERATORY l Priorytety i kolejność obliczeń l Operator podstawiania l Operatory arytmetyczne l Relacje i operatory logiczne

2 Jerzy Kotowski2

3 3 PRIORYTETY I KOLEJNOŚĆ OBLICZEŃ l Operatory wymienione w jednym wierszu mają ten sam priorytet. l Wiersze tabeli ustawione według malejącego priorytetu. l Operator jest lewostronnie (prawostronnie) łączny, jeżeli w wyrażeniu zawierającym co najmniej dwa takie ope- ratory na tym samym poziomie struktury nawiasowej najpierw jest wykonywany operator lewy (prawy). l W języku C nie określa się kolejności obliczania argu- mentów operatora ani kolejności wyznaczania argu- mentów funkcji. Przykłady: x=f()+g(); printf("%d %d\n",++n,power(2,n));

4 Jerzy Kotowski4 PRIORYTETY I KOLEJNOŚĆ OBLICZEŃ c.d. l Efekty uboczne (slide effects): przy okazji obliczania wyrażenia pewna zmienna otrzymuje nową war- tość. Przykład: a[i] = i++; - wynik zależy od architektury komputera. l Wniosek: pisanie programów zależnych od archi- tektury komputera należy do złej praktyki programo- wania w każdym języku. l Nawiasy mają najwyższy priorytet, w związku z tym wymuszają kolejność wykonywania operacji.

5 Jerzy Kotowski5 OPERATOR PODSTAWIANIA l Operator dwuargumentowy. Priorytet = 2. l Lewy argument musi być lvalue. Lvalue jest wyrażeniem, z którym wiąże się adres w pamięci komputera - to znaczy, że jak się chce coś pod- stawić, to trzeba wiedzieć gdzie. Przykładem lvalue jest nazwa zmiennej, bo wartość każdej zmiennej jest gdzieś zapamiętywana w pamięci. l Wartością działania (operatora) jest podstawiana wartość. l W języku C można napisać:x = y = z = 2; l x = 2 + y = z + 3; BŁĄD!!! l x = 2 + (y = z + 3); OK

6 Jerzy Kotowski6 OPERATORY ARYTMETYCZNE l Operatory jednoargumentowe (priorytet 14): + oraz - l Przykłady: x = -y;x = +y; l Operatory dwuargumentowe: * / %(priorytet 13) + -(priorytet 12) Wnioski:a + b*c a + (b*c)PRIORYTET a / b / c (a / b) / cŁĄCZNOŚĆ 7 / 3 * 6 12Arytmetyka!!! Operator dzielenia modulo: 17 % 3 2 l Oba operandy muszą być typu całkowitego. l Pytanie: jakie wartości ma wyrażenie x%2 i kiedy?

7 Jerzy Kotowski7 OPERATORY LOGICZNE Zmienne logiczne l Język C nie ma zmiennych logicznych. Konwencja: 0 (ZERO) FAŁSZ 0 (różne od zera) PRAWDA l Przykłady: l if(x) - jeżeli x jest różne od zera l if(x%2)- jeżeli x jest nieparzyste l !- jednoargumentowy operator logicznej negacji l if(!x)- jeżeli x jest równe zero l x = !5;- do x podstawimy 0 (zero) l x = !!7;- do x podstawimy 1 (jeden)

8 Jerzy Kotowski8 OPERATORY LOGICZNE Relacje l Operatory relacji –mniejszy: < –mniejszy równy: <= –większy: > –większy równy:>= l Operatory dwuargumentowe. Priorytet = 10. l Operatory przyrównania –równy:== –różny:!= l Operatory dwuargumentowe. Priorytet = 9.

9 Jerzy Kotowski9 Relacje i operatory przyrównania Seria (przykładów) l Wszystkie obiekty w przykładach są typu int l x = 2 < 3; x = 1 bo 2 jest mniejsze od 3. l x = 2 == 3; x = 0 bo zdanie 2 jest równe 3 jest fałszywe. l x = 2 = 3; Błąd kompilacji bo w wyrażeniu 2 = 3 lewy argument nie jest lvalue. l if(x == 2) printf(Ala ma kota.); Historyjkę o Ali i jej kocie zobaczymy jeżeli zmienna x ma wartość 2.

10 Jerzy Kotowski10 Relacje i operatory przyrównania Druga seria (przykładów) l Wszystkie obiekty w przykładach są dalej typu int l y = 2; Szarzyzna ligowa. l x == 2; Ostrzeżenie kompilatora. Obliczamy wartość wyrażenia x == 2 i ją natychmiast odrzucamy. l if(x = 2) printf(Ala ma kota.); Historyjkę o Ali i jej kocie zawsze zobaczymy bo w konstrukcji if jest teraz operator podstawiania. Efektem tej konstrukcji jest podstawienie x = 2 i zwrócenie podstawianej wartości (czyli prawdy).

11 Jerzy Kotowski11 OPERATORY LOGICZNE Spójniki logiczne l Koniunkcja logiczna, iloczyn logiczny:&& l Operator dwuargumentowy. Priorytet = 5. Definicja: a && b 1 iff a oraz b jest prawdą. l Alternatywa logiczna, suma logiczna:|| l Operator dwuargumentowy. Priorytet = 4. Definicja: a || b 0 iff a oraz b jest fałszem. l Są to jedyne operatory, dla których ANSI określa kolejność wyznaczania operandów: wpierw LEWY!! l Język C wykorzystuje tautologie: 0 && x 0 1 || x 1

12 Jerzy Kotowski12 Znowu przykłady l z = f(x) && g(y); Jeżeli f(x) zwróci 0 to g nie zostanie wywołana. l if(x && a/x < 5)… Nigdy nie podzielimy przez zero. l if(2 < x < 5) printf(Ala ma kota); Zobaczymy historyjkę o Ali i jej kocie niezależnie od wartości x bo 2 < x < 5 (2 < x) < 5 1 l if(2 < x && x < 5) printf(Ala ma kota); Tak będzie lepiej. Nawiasy nie są potrzebne!! l x = !(a =5); Prawa de Morgana mogą się przydać. l x = a>=3 || b<5 ;

13 Jerzy Kotowski13 SERIA KOŃCZĄCA (zwalająca z nóg) l y = 2; z = 3; x = 2 + y == 1 + z; Jaka będzie wartość zmiennej x? 2 + y == 1 + z (2 + y) == (1 + z) 4 == 4 1 l int x,y; x = y % 4 == 0 && y % 100 !=0 || y % 400 == 0; Jest to definicja roku przestępnego: Rok y jest przestępny jeżeli dzieli się przez 4 i nie dzieli się przez chyba, że dzieli się przez 400. x= alfa && beta || gamma; l x = !(y % 4) && (y % 100) || !(y % 400);


Pobierz ppt "Jerzy Kotowski1 Informatyka I Wykład 5 OPERATORY l Priorytety i kolejność obliczeń l Operator podstawiania l Operatory arytmetyczne l Relacje i operatory."

Podobne prezentacje


Reklamy Google