Programowanie wyrażeń
1. Operacje arytmetyczne
Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.
W językach programowania są wykorzystywane znaki operacji:
„+” dla operacji dodawania,
„-„ dla operacji odejmowania i operacji negacji,
„*” dla operacji mnożenia,
„/” dla operacji dzielenia,
„div” dla operacji dzielenia całkowitego w języku Object Pascal,
„\” dla operacji dzielenia całkowitego w języku Visual Basic,
„%” dla operacji dzielenia modulo w językach C/C++ i Java,
„mod” dla operacji dzielenia modulo w języku Object Pascal,
„Mod” dla operacji dzielenia modulo w języku Visual Basic .NET.
Operacja dzielenia „/” może mieć w językach programowania różną interpreta-cję.
W językach C/C++ i Java operacja dzielenia „/” liczb całkowitych daje w wyniku iloraz całkowity.
W językach Object Pascal i Visual Basic operacja dzielenia „/” liczb całkowitych daje w wyniku liczbę rzeczywistą, która przekształca się do liczby całkowitej według reguł zaokrąglenia.
Przykładowo, dzielenie „17 / 3” daje w wyniku:
„5” w językach C/C++, Java,
„6” w językach Object Pascal, Visual Basic.
Aby w języku Visual Basic otrzymać w wyniku iloraz całkowity należy wykorzy-stać drugi wariant znaku dzielenia - znak „\”.
Przykładowo, dzielenie w języku Visual Basic „17 \ 3” daje w wyniku „5”.
Do obliczenia reszty z dzielenia liczb całkowitych są wykorzystywane:
- operator „%” w językach C/C++ i Java,
- operator „mod” w języku Object Pascal,
- operator „Mod” w języku Visual Basic .NET.
Przykłady:
w językach C++ i Java:
int x=17, y=3, w;
w=x%y; //wynik: 2
Dim x As Integer = 17
Dim y As Integer = 3
Dim w As Integer
w = x Mod y ‘wynik: 2
W językach C/C++ i Java są specjalne operatory inkrementacji i dekrementacji o jeden:
-
operator dodawania 1 - operator inkrementacji „++”,
-
operator odejmowania 1 - operator dekrementacji „--„.
Operatory inkrementacji i dekrementacji mogą być zapisane przed nazwą zmiennej, na przykład „++x”, „--y” lub poza nazwą zmiennej, na przykład „x++”,
„y--”.
Operator "++" lub "--" przed nazwą zmiennej (na przykład, „++x”, „--y”) nazywamy operatorem przedrostkowym, a operator "++" lub "--" poza nazwą zmiennej (na przykład, „x++”, „y--”) nazywamy operatorem przyrostkowym.
W przypadku operatora przedrostkowego (tj. w wyrażeniu „++x”, „--y”) wartość zmiennej jest wykorzystywana po inkrementacji lub dekrementacji, a w przypadku operatora przyrostkowego (tj. w wyrażeniu „x++”, „y--”) przed inkrementacją lub dekrementacją.
Przykłady:
int x=17, y=3, w;
w=(x++)*y;//wartość „x” jest wykorzystywana przed inkrementa-cją
//w=51
w=(y--)+5;//wartość „y” jest wykorzystywana przed dekrementa-cją
//w=8
w=(++x)*y;//wartość „x” jest wykorzystywana po inkrementacji
//w=54
w=(--y)+5;//wartość „y” jest wykorzystywana po dekrementacji
//w=7
W językach C/C++ i Java można połączyć bazową operację arytmetyczną z operacją przypisania wartości.
Możliwe są następujące operacje:
+= - przypisanie z sumowaniem,
-= - przypisanie z odejmowaniem,
*= - przypisanie z mnożeniem,
/= - przypisanie z dzieleniem,
%= - przypisanie z dzieleniem modulo.
W języku Visual Basic .NET jest operator potęgowania „^”, którego nie ma w innych językach.
Na przykład:
Dim x As Integer = 7
Dim y As Integer = 2
Dim w As Double
w = x^y 'wynik: w=49
Wyrażenia jako konstrukcji językowe mogą zawierać stałe, zmienne oraz wywo-
łania podprogramów zwracających wartość (tj. funkcji).
Jeżeli argumenty operacji mają różne typy, to kompilator wykonuję tzw. niejaw-ne przekształcenie typów według ścisłych reguł. Informacja o niejawnym przekształ-
ceniu typów znajduje się w opisie języka programowania.
2. Operacje porównania
W operacjach porównania wartości mają zastosowanie operatory relacyjne. Wynikiem działania operatora relacyjnego jest wartość logiczna, tj. "prawda" lub "fałsz".
Operatory relacyjne języków C++, Java:
== - operator równości,
!= - operator nierówności,
< - operator „mniej”,
> - operator „więcej”,
<= - operator „nie więcej”,
>= - operator „nie mniej”.
Operatory relacyjne języków Object Pascal i VB .NET:
= - operator równości,
<> - operator nierówności,
< - operator „mniej”,
> - operator „więcej”,
<= - operator „nie więcej”,
>= - operator „nie mniej”.
3. Operacje logiczne
Wynikiem operacji logicznej jest wartość „prawda”/”fałsz”.
Znaki operacji logicznych języka C++:
&& - znak operacji mnożenia logicznego,
|| - znak operacji sumowania logicznego,
! - znak negacji logicznej.
Przykłady:
int x;
bool w,f;
w = !f && ((x==0) || (x>10));
W języku Visual Basic .NET nie ma znaków dla operacji logicznych.
Wartość typu danych „Boolean” jest przedstawiona wartością („1” lub „0”) młod-szego bita. Dlatego operacje logiczne „And”, „Or”, „Xor”, „Not” są ekwiwalentne ope-racjom bitowym „And”, „Or”, „Xor”, „Not”.
Przykłady:
Dim x, y As Integer
Dim w, f As Boolean
w = Not f And ((x=0) Xor (x>10))
4. Operacje bitowe
Wynikiem operacji bitowej jest binarny kod powstający po wykonaniu operacji między odpowiednimi bitami argumentów operacji.
Wynik operacji bitowej może być interpretowany jako wynik operacji logicznej, ponieważ dla zmiennych całkowitych niezerowa wartość oznacza „prawda”, a zerowa wartość - „fałsz”.
Do operacji bitowych należą też operacje przesunięć bitowych.
Operacje bitowe języków C++ i Java:
& - znak operacji mnożenia logicznego bitowego,
| - znak operacji sumowania logicznego bitowego,
^ - znak operacji sumy symetrycznej bitowej,
~ - znak negacji logicznej bitowej,
<< - znak przesunięcia bitowego w lewo, tj. w stronę starszych bitów,
>> - znak przesunięcia bitowego w prawo, tj. w stronę młodszych bitów.
W języku Java do tych operacji jest dołączane:
>>> - przesunięcie logiczne w prawo,
>>>= - przypisanie z przesunięciem logicznym w prawo (w kierunku młodszych cyfr).
Przykłady:
int x;
bool w,f;
x <<= 4;
w = !f && ((x==0) || (x>10));
W językach C/C++ i Java można połączyć bazową operację bitową z operacją przypisania wartości. Możliwe są następujące operacje:
&= - przypisanie z koniunkcją bitową (iloczynem bitowym),
|= - przypisanie z alternatywą bitową (sumą bitową),
^= - przypisanie z różnicą symetryczną bitową.
W językach C/C++ i Java można połączyć bazową operację przesunięcia bitowego z operacją przypisania wartości. Możliwe są następujące operacje:
<<= - przypisanie z przesunięciem w lewo ( w kierunku starszych cyfr),
>>= - przypisanie z przesunięciem arytmetycznym w prawo.
Znaki operacji bitowych języka Visual Basic .NET:
And - znak operacji mnożenia logicznego bitowego,
Or - znak operacji sumowania logicznego bitowego,
Xor - znak operacji sumy symetrycznej bitowej,
Not - znak negacji logicznej bitowej,
<< - znak przesunięcia bitowego w lewo, tj. w stronę starszych bitów,
>> - znak przesunięcia bitowego w prawo, tj. w stronę młodszych bitów.
Przykłady:
Dim x, y As Integer
Dim w, f As Boolean
w = Not f And ((x=0) Xor (x>10))
y = Not x
y <<= 4
Wartość typu danych „Boolean” jest przedstawiona wartością („1” lub „0”) młod-szego bita. Dlatego operacje bitowe „And”, „Or”, „Xor”, „Not” są ekwiwalentne opera-cjom logicznym.