Оператор (програмиране): Разлика между версии

Изтрито е съдържание Добавено е съдържание
Bot: Automated import of articles - append on top
щтащш
Етикети: Заместване blanking Визуален редактор
Ред 1:
{{към пояснение|Оператор|Оператор (пояснение)}}
Чрез '''операторите''' в [[програмните езици]] се осъществява обработката на данни. Всеки оператор има строго определена функционалност, в зависимост от конкретния [[програмен език]], към който принадлежи. Операторите се обозначават със символи (''напр.'' !, %, +, || ''и др.'') и се характеризират с: позиция спрямо аргументите си (инфиксен или постфиксен), приоритет и асоциативност.
 
== Видове оператори ==
Операторите са обособени в отделни категории: според естеството на извършваните от тях операции и според броя аргументи, които приемат.
 
=== Според естеството на извършваните операции ===
* '''аритметични''' - извършват математически операции (като [[събиране]], [[изваждане]], [[умножение]], [[деление]])
* '''логически''' - извършват [[Булева_алгебра|булеви]] операции върху данните и връщат булев резултат
* '''побитови''' - работят на принципа на логическите оператори, но върху двoичното представяне на числата.
* '''за сравнение''' - извършват операции за сравнение на две или повече операнди
* '''за присвояване''' - присвояват стойност на дадена променлива
 
=== Според броя на аргументите ===
* '''едноаргументни''' ''({{lang-en|unary}})'' - приема един аргумент
* '''двуаргументни''' ''({{lang-en|binary}})'' - приема два аргумента
* '''триаргументни''' ''({{lang-en|ternary}})'' - приема три аргумента
 
== Предефиниране на оператори ==
'''Предефинирането на оператори''' в [[Обектно-ориентирано програмиране|обектно-ориентираното програмиране]] позволява дефиниране на различна функционалност на вече съществуващи оператори, в зависимост от типовете, върху които се използват. Те могат да бъдат предефинирани както от езика (''напр.'' в [[C Sharp|C#]] и [[Java]] аритметичният оператор + може да означава събиране на числа или конкатениране на низове), така и от програмиста (''напр.'' в [[C++]]).
 
== Операторите в различните програмни езици ==
{| class="wikitable"
|-
! !! '''''[[C#]]''''' !! '''''[[Java]]''''' !! '''''[[C++]]''''' !! '''''[[JavaScript]]''''' !! '''''[[PHP]]'''''
|-
| '''Аритметични''' || || || || ||
|-
| Отрицание || - || - || - || - || -
|-
| Събиране || + || + || + || + || +
|-
| Изваждане || - || - || - || - || -
|-
| Умножение || * || * || * || * || *
|-
| Деление || / || / || / || / || /
|-
| Деление по модул || % || % || % || % || %
|-
| Инкрементиране || ++ || ++ || ++ || ++ || ++
|-
| Декрементиране || -- || -- || -- || -- || --
|-
| '''За присвояване''' || || || || ||
|-
| Присвояване || = || = || = || = || =
|-
| Прибавяне и присвояване || += || += || += || += || +=
|-
| Изваждане и присвояване || -= || -= || -= || -= || -=
|-
| Умножение и присвояване || *= || *= || *= || *= || *=
|-
| Деление и присвояване || /= || /= || /= || /= || /=
|-
| Деление по модул и присвояване || %= || %= || %= || %= || %=
|-
| Побитово "И" и присвояване || &= || &= || &= || &= || &=
|-
| Побитово "ИЛИ" и присвояване || <nowiki>|</nowiki>= || <nowiki>|</nowiki>= || <nowiki>|</nowiki>= || <nowiki>|</nowiki>= || <nowiki>|</nowiki>=
|-
| Изключващо "ИЛИ" и присвояване || ^= || ^= || ^= || ^= || ^=
|-
| Отместване вляво и присвояване || <<= || <<= || <<= || <<= || <<=
|-
| Отместване вдясно и присвояване || >>= || >>= || >>= || >>>= || >>=
|-
| Отместване в дясно, запълване с нули и присвояване || || >>>= || || >>>= ||
|-
| '''За сравняване''' || || || || ||
|-
| Равно || == || == || == || == || ==
|-
| Идентично || || || || === || ===
|-
| Различно || != || != || != || != || !=, <>
|-
| Неидентично || || || || !== || !==
|-
| По-малко || < || < || < || < || <
|-
| По-голямо || > || > || > || > || >
|-
| По-малко или равно || <= || <= || <= || <= || <=
|-
| По-голямо или равно || >= || >= || >= || >= || >=
|-
| '''Логически''' || || || || ||
|-
| Логическо "И" || && || && || && || && || and, &&
|-
| Логическо "ИЛИ" || <nowiki>||</nowiki> || <nowiki>||</nowiki> || <nowiki>||</nowiki> || <nowiki>||</nowiki> || or, <nowiki>||</nowiki>
|-
| Изключвщо "ИЛИ" || ^ || ^ || || || xor
|-
| Логическо отрицание || ! || ! || ! || ! || !
|-
| '''Побитови''' || || || || ||
|-
| Побитово "И" || & || & || & || & || &
|-
| Побитово "ИЛИ" || <nowiki>|</nowiki> || <nowiki>|</nowiki> || <nowiki>|</nowiki> || <nowiki>|</nowiki> || <nowiki>|</nowiki>
|-
| Изключващо "ИЛИ" || ^ || ^ || ^ || ^ || ^
|-
| Побитово отрицание || ~ || ~ || ~ || ~ || ~
|-
| Побитово отместване вляво || << || << || << || << || <<
|-
| Побитово отместване вдясно || >> || >> || >> || >> || >>
|-
| Побитово отместване вдясно и запълване с нули || || || >>> || >>> ||
|-
| '''Условни''' || ?:,?? || ?: || ?: || ?: || ?:
|-
| '''За работа с типове''' || (type), as, is, typeof, sizeof || (type), instanceof || (type), sizeof(), typeid() || typeof || instanceof
|-
| '''Оператори за низове''' || || || || ||
|-
| Съединяване || + || + || || + || .
|-
| Съединяване и присвояване || += || += || || += || .=
|-
| '''Оператори за масиви''' || || || || || +, ==, ===, !=, <>, !==
|}
 
== Операторите в [[C Sharp]] ==
=== Аритметични оператори ===
<source lang="csharp">
int a = 2;
int b = 3;
int result;
 
result = a + b; // в променливата result ще се запази сумата на a и b
result = a - b; // в променливата result ще се запази разликата на a и b
result = a * b; // в променливата result ще се запази произведението на a и b
result = a / b; // в променливата result ще се запази частното на a и b
result = a % b; // в променливата result ще се запази остатъкът от делението на a и b
result = a++; //в променливата result ще се запази стойността на променливата a, увеличена с 1
result = a--; // в променливата result ще се запази стойността на променливата a, намалена с 1
</source>
 
=== Логически оператори ===
<source lang="csharp">
bool a = true;
bool b = false;
 
Console.WriteLine(a && b); // На конзолата ще се изпише False
Console.WriteLine(a || b); // На конзолата ще се изпише True
Console.WriteLine(!b); // На конзолата ще се изпише True
</source>
 
=== Побитови оператори ===
<source lang="csharp">
int a = 3; // 0000 0011 = 3
int b = 5; // 0000 0101 = 5
 
Console.WriteLine( a | b); // 0000 0111 = 7
Console.WriteLine( a & b); // 0000 0001 = 1
Console.WriteLine( a ^ b); // 0000 0110 = 6
Console.WriteLine(~a & b); // 0000 0100 = 4
Console.WriteLine(a << 1); // 0000 0110 = 6
Console.WriteLine(a << 2); // 0000 1100 = 12
Console.WriteLine(a >> 1); // 0000 0001 = 1
</source>
 
=== Оператори за сравнение ===
<source lang="csharp">
int x = 10, y = 5;
Console.WriteLine(“x > y : “ + (x > y)); // true
Console.WriteLine(“x < y : “ + (x < y)); // false
Console.WriteLine(“x >= y : “ + (x >= y)); // true
Console.WriteLine(“x <= y : “ + (x <= y)); // false
Console.WriteLine(“x == y : “ + (x == y)); // false
Console.WriteLine(“x != y : “ + (x != y)); // true
</source>
 
=== Условни оператори ===
<source lang="csharp">
int a = 6;
int b = 4;
Console.WriteLine(a > b ? “a>b” : “b<=a”); // a>b
</source>
 
== Операторите в [[Java]] ==
=== Аритметични оператори ===
<source lang="csharp">
int squarePerimeter = 17;
double squareSide = squarePerimeter / 4.0;
double squareArea = squareSide * squareSide;
System.out.println(squareSide); // 4.25
System.out.println(squareArea); // 18.0625
 
int a = 5;
int b = 4;
System.out.println(a + b); // 9
System.out.println(a + b++); // 9
System.out.println(a + b); // 10
System.out.println(a + (++b)); // 11
System.out.println(a + b); // 11
System.out.println(14 / a); // 2
System.out.println(14 % a); // 4
</source>
 
=== Логически оператори ===
<source lang="csharp">
boolean a = true;
boolean b = false;
System.out.println(a && b); // false
System.out.println(a || b); // true
System.out.println(!b); // true
System.out.println(b || true); // true
System.out.println((5>7) ^ (a==b)); // false
</source>
 
=== Побитови оператори ===
<source lang="csharp">
short a = 3; // 0000 0011 = 3
short b = 5; // 0000 0101 = 5
 
System.out.println( a | b); // 0000 0111 = 7
System.out.println( a & b); // 0000 0001 = 1
System.out.println( a ^ b); // 0000 0110 = 6
System.out.println(~a & b); // 0000 0100 = 4
System.out.println(a << 1); // 0000 0110 = 6
System.out.println(a << 2); // 0000 1100 = 12
System.out.println(a >> 1); // 0000 0001 = 1
</source>
 
=== Оператори за сравнение ===
<source lang="csharp">
int x = 10, y = 5;
System.out.println(“x > y : “ + (x > y)); // true
System.out.println(“x < y : “ + (x < y)); // false
System.out.println(“x >= y : “ + (x >= y)); // true
System.out.println(“x <= y : “ + (x <= y)); // false
System.out.println(“x == y : “ + (x == y)); // false
System.out.println(“x != y : “ + (x != y)); // true
</source>
 
=== Условни оператори ===
<source lang="csharp">
int a = 6;
int b = 4;
System.out.println(a > b ? “a>b” : “b<=a”); // a>b
</source>
 
== Източници ==
<references />
* http://www.fmi.uni-sofia.bg/econtent/web-design/javascript-43e43f43544043044243e440438
* http://www.introprogramming.info/intro-java-book/read-online/glava3-operatori-i-izrazi/
* http://www.cplusplus.com/doc/tutorial/operators/
* http://www.php.net/manual/en/language.operators.php
 
== Вижте също ==
* [[Софтуер]]
* [[Програмиране]]
* [[Езици за програмиране]]
 
[[Категория:Програмни конструкции]]