Operatory

   Operatory służą do wykonywania działań na zmiennych. W języku C++ sporo operatorów jest już wbudowane. Jednak w tym języku możesz rozbudować działanie danego operatora o jakieś dodatkowe działania, a nawet całkowicie zmienić jego działanie. Ale o tym pogadamy później. Narazie poznasz operatory, które są już wbudowane do języka C++.

1. Operatory arytmetyczne

   Zaczniemy od operatora +. Dodaje on dwie wartości, które znajdują się po jego lewej i prawej stronie. Całe takie wyrażenie zastępowane jest wynikiem. Jeśli liczba znajduje się tylko po jego prawej stronie, to traktowany jest on po prostu jako dodatni znak liczby. Wyrażenia z operatorem + można łączyć kaskadowo. Przykłady:
int Liczba = 2+2; //Dodanie dwóch liczb. Wynik jest 4. Liczba = +7; //Liczba 7. Liczba = 3+7+5; //Wynik to liczba 15. Podobnie działa operator -. Służy on oczywiście do odejmowania dwóch liczb [prawej od lewej]. Jeśli liczba znajduje się tylko po jego prawej stronie, to jest on traktowany jako znak ujemny liczby. I też można łączyć wyrażenia kaskadowo. Przykłady:
Liczba = 5-3; //Odjęcie dwóch liczb. Wynik jest 2. Liczba = -8; //Liczba -8. Liczba = 7-2-3; //Wynik to liczba 2. Do wykonywania mnożenia służy operator *, a do dzielenia jest operator /. Te operatory wymagają liczb po obu swoich stronach. Dodatkowo jest operator % [modulo], który zwraca resztę z dzielenia dwóch liczb całkowitych. Można je łączyć kaskadowo. Przykłady:
Liczba = 3*3; //Pomnożenie dwóch liczb. Wynik jest 9. Liczba = 8/4; //Dzielenie dwóch liczb. Wynik jest 2. Liczba = 11%4; //Reszta z dzielenia. Wynik jest 3. Liczba = 8/2*2; //Wynik to liczba 8. Liczba = 8*2/2; //Wynik to też 8. Zawsze trzeba pamiętać o kolejności wykonywania działań. Hehe.. :-) Ile jest dwa plus dwa razy dwa? Nie, wcale nie 8 ;-). Najpierw wykonuje się mnożenie. Te zasady to chyba każdy zna z podstawówki ;-). W razie wątpliwości, który z operatorów zadziała pierwszy, po prostu zastosuj nawiasy. To co jest w nawiasie zawsze będzie ważniejsze niż to, co jest poza nawiasem.

Są też operatory do bardzo szybkiego zmniejszania lub zwiększania jakiejś zmiennej o 1. Do zwiększania służy operator ++, a do zmniejszania operator --. Można je zastosować na dwa sposoby. Jeśli umieścimy taki operator przed zmienną, to najpierw zmieni on jej wartość, a dopiero potem ją zwróci. Natomiast jeśli umieścimy go po zmiennej, to najpierw pokaże on jej zawartość, a dopiero potem ją zmieni. Przykładowy fragment kodu:
int Liczba = 7; cout << "Liczba=" << Liczba << endl; //Wypisanie liczby 7 cout << "Liczba=" << ++Liczba << endl; //Zwiększenie do 8 i wypisanie liczby. cout << "Liczba=" << Liczba-- << endl; //Wypisanie liczby 8 i zmniejszenie do 7 cout << "Liczba=" << Liczba << endl; //Wypisanie liczby 7. Tutaj już niebardzo się da łączyć kaskadowo, no bo by się można było pogubić. Zresztą taki zapis nie wyglądałby zbyt logicznie ;-). Ale dla kombinatorów mam małą łamigłówkę:
cout << Liczba+++7; Jak myślisz, co z tego wyniknie? :-P
Jeśli nie wiesz, skompiluj i sprawdź. Jeśli dalej nic ci to nie mówi, a chcesz się dowiedzieć dlaczego tak to działa, otwórz źródło HTML tej strony i wyszukaj ciągu "Odpowiedz:", a znajdziesz wyjaśnienie ;-)

2. Operatory przypisania

   Najprostszy z nich to chyba operator =. Przypisuje jakąś wartość znajdującą się po jego prawej stronie do zmiennej, która znajduje się po jego lewej stronie. Mówię "zmienna", bo musi być możliwa zmiana tej wartości podczas przypisywania. Można łączyć kilka operatorów kaskadowo, ale trzeba pamiętać by dopiero ostatnia wartość była tą, którą przypisujemy, bo w przeciwieństwie do operatora +, operator przypisania jest łączny prawostronnie. Przykłady:
Liczba=7; Liczba = Numer = 2; Dodatkowym wymogiem jest, by wartość stojąca po lewej stronie tego operatora była jakąś zmienną, do której da się przypisywać. Całe wyrażenie z operatorem przypisania ma taką wartość, jak zmienna po lewej stronie znaku =, o czym warto wiedzieć, bo może to czasami uprościć zapis.

Jeśli programowaliście wcześniej w inych językach, pewnie znane wam są instrukcje podobne do tej poniżej:
Liczba = Liczba + 3; Jest to zwiększenie zmiennej Liczba o 3. W języku C++ można to zapisać prościej:
Liczba += 3; To bardzo upraszcza i skraca ten zapis, co jest jedną z zalet języka C++ [konkurencja tego nie ma ;-P]. Oczywiście zamiast znaku + można stosować pozostałe operatory arytmetyczne i bitowe.

3. Operatory porównania

   Służą one do porównywania ze sobą dwóch wartości i są takie same jak te, które na pewno znasz już ze szkoły. Operatory te zwracają wartości logiczne. Operator == zwraca true [czyli 1] tylko wtedy, gdy oba argumenty są sobie równe, a operator != tylko wtedy, gdy argumenty są nierówne. Operator > zwraca true tylko wtedy, gdy lewy argument jest większy od prawego, a operator < tylko wtedy, gdy prawy jest większy od lewego. Operator >= zwraca true tylko wtedy, gdy lewy argument jest większy lub równy prawemu, a operator <= tylko wtedy, gdy prawy jest większy lub równy lewemu. Przykłady:
cout << 4 == 3+1; //Wypisze 1 cout << 2 != 5; //Wypisze 1 cout << 8 > 12; //Wypisze 0
4. Operatory logiczne

   Służą do formułowania wyrażeń logicznych. Operator && [zwany też operatorem i] zwraca wartość logiczną 1 [true] tylko wtedy, gdy oba argumenty mają wartość logiczną 1. Operator || [zwany też operatorem lub] zwróci 1 gdy albo jeden, albo drugi argument ma wartość logiczną 1. I na koniec operator ! [zwany też operatorem nie] zwraca 1, gdy argument po jego prawej stronie ma wartość logiczną 0. Gdy ma wartość logiczną 1, operator ten zwraca 0. Przykłady:
cout << 0 && 1; //Wypisze 0 cout << 1 || 0; //Wypisze 1 cout << !0; //Wypisze 1
5. Pozostałe operatory

   Wszystkich operatorów jest w C++ trochę więcej, ale narazie nie będę ich opisywał, bo do reszty zamąciłbym ci w głowie ;-). Poznasz je gdy będą ci potrzebne. To, czego cię tu narazie nauczyłem, i tak powinno ci wystarczyć w normalnym programie ;-). No, to teraz się trochę pobaw z operatorami, żeby się z nimi oswoić. Pododawaj coś, poodejmuj, sprawdź kiedy liczba zmienia wartość itp. Jak skończysz, przejdź do kolejnej strony. Jak już poznasz instrukcje warunkowe i pętle, napiszemy prostą gierkę [narazie bez grafiki :-P].