09. Operatory, Programowanie, Klasa II


Operatory

Operatory są symbolami języka służącymi — mówiąc najogólniej — do manipulowania danymi. Istnieją operatory arytmetyczne — dodawania, odejmowania, mnoże­nia i dzielenia wartości liczbowych, operator przypisania, wyboru elementu z tablicy itp.

Operator przypisania

Operator przypisania służy do przypisania zmiennej warto­ści; jest to bodaj najprostszy, lecz jednocześnie jeden z najważniejszych operatorów ję­zyka. Oto jeden z przykładów jego zastosowania:

Number1 := 5;

Powyższa instrukcja przypisuje zmiennej Number1 wartość 5.

Operatory porównania

Operatory porównania w Delphi i w Visual Basicu są niemalże identyczne. Służą do stwierdzenia równości lub nierówności dwóch wartości albo ich porównania pod względem relacji mniejszości. W tabeli 2.2 przedstawione zo­stały łącznie operatory porównania i operatory logiczne, w tym miejscu chcemy jedynie zwrócić uwagę na istotną różnicę między operatorem porównania (= w Delphi, == w C i Javie) a operatorem przypisania (:= w Delphi, = w C i Javie).

Operator badający nierówność dwóch wielkości, w języku C mający sugestywną postać !=, w Pascalu ma postać <>, na przykład:

if x <> y

Then

Cokolwiek

Operatory logiczne

Operatory logiczne realizują (w ograniczonym zakresie) opera­cje wynikające z algebry Boole'a (stąd często nazywane bywają operatorami bool­owskimi — ang. Boolean operators). Ich typowym zastosowaniem jest jednoczesne testowanie kilku warunków, na przykład:

if (warunek1) and (warunek2)

Then

Cokolwiek

While (warunek1) or (warunek2) do

Cokolwiek

Operatory logiczne obecne są w każdym języku programowania, chociaż ich postać jest różnorodna. Tabela 2.2 przedstawia operatory porównania oraz operatory logiczne w Pascalu, C, Javie i Visual Basicu.

Tabela 2.2. Operatory przypisania, porównania i operatory logiczne

Operator

Pascal

Java i C

Visual Basic

Przypisania

:=

=

=

Równości

=

==

Is (dla obiektów) = (dla innych typów)

Nierówności

<>

!=

<>

Mniejszości

<

<

<

Większości

>

>

>

Niewiększości

<=

<=

<=

Niemniejszości

>=

>=

>=

Logiczne „i”

and

&&

And

Logiczne „lub”

or

||

Or

Zaprzeczenie

not

!

Not

Operatory arytmetyczne

Tabela 2.3 prezentuje operatory arytmetyczne Pascala, C, Javy i Visual Basica.

Tabela 2.3. Operatory arytmetyczne

Operator

Pascal

Java i C

Visual Basic

Dodawania

+

+

+

Odejmowania

-

-

-

Mnożenia

*

*

*

Dzielenia rzeczywistego

/

/

/

Dzielenia całkowitego

div

/

\

Reszty z dzielenia (modulo)

mod

%

Mod

Potęgowania

brak

brak

^

Jak wynika z tabeli, Pascal i Visual Basic rozróżniają dzielenie liczb całkowitych (wynik jest liczbą całkowitą) od dzielenia liczb rzeczywistych (wynik jest liczbą rzeczywistą); Java i C nie czynią takiego rozróżnienia.

Ostrzeżenie

Wykonując dzielenie, zawsze używaj operatorów stosownych do operandów i oczekiwanego wyniku. Kom­pilator Object Pascala nie zezwoli na dzielenie całkowite operandów, z których co najmniej jeden nie jest liczbą całkowitą. Równie powszechnym błędem jest próba przypisania zmiennej całkowitej wyniku dzielenia rzeczywistego (operator /), co ilustruje poniższy przykład:

Var
i : integer;
r : real;
begin
i := 4/3 // tu wystąpi błąd kompilacji
r := 3.4 div 2.3; // ta linia również jest błędna
i := Trunc(4/3); // ta linia jest poprawna
r := 3.4 / 2.3; // ta linia również jest poprawna
end;

Jako ciekawostkę odnotować należy fakt, iż wiele języków nie wykonuje dziele­nia całkowitego i w związku z tym posiada jeden, uniwersalny operator dzielenia. Dzielenie dwóch liczb całkowitych przebiega więc następująco: konwersja na typ zmiennoprzecinkowy, wykonanie dzielenia zmiennoprzecin­kowego oraz konwersja wyniku (po zaokrągleniu lub obcięciu — różnie bywa) na typ całkowity. Jest to działanie kosztowne oraz nieefektywne w sytuacji, gdy procesor posiada instrukcje dzielenia całkowitego (posiadają je wszystkie proce­sory 80×86).

Operatory zwiększania i zmniejszania

Realizują one zoptymalizowaną operację zwiększania (increment) lub zmniejszania (decrement) zmiennej typu porządkowego. Operatory te wy­stępują w dwóch odmianach. Pierwsza z nich powoduje zmianę wartości zmiennej o 1 (w górę lub w dół):

Inc(zmienna);

Dec(zmienna);

i jest przez kompilator przekładana na pojedynczą instrukcję INC lub DEC kodu maszynowego.

Operatory w postaci dwuargumentowej

Inc(zmienna, dystans);

Dec(zmienna, dystans);

powodują zmniejszenie albo zwiększenie zmiennej o wartość zadaną jawnie w postaci drugiego argumentu; operacja jest realizowana przez kompilator w postaci rozkazu ADD albo SUB.

Notatka

Kompilator Delphi w wersji 2 i następnych jest na tyle „inteligentny”, że sam roz­poznaje operację zmniejszania/zwiększania zmiennej za pomocą zwykłej ope­racji dodawania lub odejmowania, tak więc przekład instrukcji x := x + 1 nie różni się od przekładu instrukcji Inc(x), dlatego główną korzyścią wynikającą z użycia omawianych operatorów jest raczej wygoda programisty.

Zestawienie operatorów zwiększania i zmniejszania dla omawianych języków przedsta­wia tabela 2.5.

Tabela 2.5. Operatory zwiększania i zmniejszania

Operator

Pascal

Java i C

Visual Basic

Zwiększania

Inc()

++

nie istnieje

Zmniejszania

Dec()

--

nie istnieje

Operatory „wykonaj i przypisz”

Object Pascal, w przeciwieństwie do C i Javy, nie posiada operatorów oznaczających (mówiąc ogólnie) wykonanie na zmiennej pewnej operacji i stanowiących pewne uogólnienie operatorów inc() i dec() — nowa wartość zmiennej musi być zapisana explicite po prawej stronie operatora przypisania, tak więc zupełnie naturalna w C instrukcja

x += 5;

w Pascalu musi być zapisana jako

x := x + 5;



Wyszukiwarka

Podobne podstrony:
2010 09 Szkoła konstruktorów klasa II
1999 09 Szkoła konstruktorów klasa II
21.1 Tablice - wprowadzenie, Programowanie, Klasa II
2006 09 Szkoła konstruktorów klasa II
2001 09 Szkoła konstruktorów klasa II
08. Zmienne i stałe, Programowanie, Klasa II
2002 09 Szkoła konstruktorów klasa II
02b. Pseudokod - cd, Programowanie, Klasa II
02c-1. PROGRAM Suma n liczb, Programowanie, Klasa II
07. Typy danych w Delphi, Programowanie, Klasa II
Błędy w Delphi, Programowanie, Klasa II
20. Delphi - konsola, Programowanie, Klasa II
2010 09 Szkoła konstruktorów klasa II
2003 09 Szkoła konstruktorów klasa II
2000 09 Szkoła konstruktorów klasa II
2006 09 Szkoła konstruktorów klasa II

więcej podobnych podstron