Операції

Для здійснення маніпуляцій з даними мова C++ застосовує широкий набір операцій (див. табл. 3.4), що виконують форму­вання і, відповідно, подальше обчислення виразів. Вирази міс­тять одну або декілька операцій, об’єкти яких називають опе­рандами. Операції являють собою деяку дію, що виконується над одним (унарна) або декількома (бінарна, триарна) операн­дами , і мають позначення (наприклад, операція перевір­ки на рівність — позначення «==», операція обчислення за­лишку від ділення цілих чисел — позначення «%» тощо).

Операції поділяються на:

  • унарні або одномісні&, *, -, +, ~, !, ++, –-, sizeof;
  • бінарні або двомісні+, -, *, /, %, <<,  >>, &, :, ^, <, >, <=, ==, >=, !=, &&, ||, =,*=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^=, ., ->, ,, (), [];
  • умовну триарну або тримісну операцію — ?: .

Таблиця 3.4

Основні операції мови C++

 №  Операції  Порядок виконання
1  ()  ,  {}  ->  . Л -> П
2  !   ~   ++  —  &  *  (type) П -> Л
3  sizeof П -> Л
4  *   /   % Л -> П
5  +    Л -> П
6  <<   >>  Л -> П
7  <   <=   >   >=  Л -> П
8  ==   !=  Л -> П
9  &  Л -> П
10  ^  Л -> П
11  |  Л -> П
12  &&  Л -> П
13  ||  Л -> П
14  ?: П -> Л
15  =   +=   *=   -=   /=   %=  П -> Л
16  , Л -> П

Порядок застосування операції визначається пріоритетом операції (яка операція виконується раніше, а яка пізніше) та асоціативністю (виконується зліва направо або справа на ліво). У першу чергу реалізуються операції з найвищим пріо­ритетом.

У табл. 3.4 літерою «Л» позначено величину, що стоїть ліво­руч від знака операції, літерою «П» — величину, яка розташо­вана праворуч від знака операції, а символом «->» напрямок виконання операції. Розглянемо основні операції.

Арифметичні операції:

     + — додає величину П до Л;
     –     — віднімає П із Л;
     –     — унарна операція зміни знака величини П;
     *     — множення П і Л;
     / — ділення Л на П;
    % — залишок від ділення величини Л на величину П (для цілих чисел), наприклад, якщо int g = 12;, то операція g = g % 9; надасть результат: g = 3;
++ — унарна операція інкремент. Якщо змінна розташовується праворуч від знака операції (префіксна форма), то значення збільшується на 1 до використання. Якщо ж змін­на знаходиться ліворуч від знака операції (постфіксна форма), то її значення збільшується на 1 після використання, наприклад:

int d;
++d; — префіксний інкремент,
d++; — постфіксний інкремент;

— — унарна операція декремент аналогічно інкременту має двi форми: префіксную (змінна розташована праворуч від знака операцii) — зменшення значення змінної на 1 відбувається до її використання; постфіксну (змінна знаходиться ліворуч від знака операції) — зменшення значення змінної на 1 після її використання.

Операції присвоювання:
= — присвоювання значення П змінній Л;
+= — додає величину П до змінної Л;
= — віднімає величину П від змінної Л;
*= — множення змінної Л на величину П;
/= — ділення Л на П;
%= — видає залишок від ділення Л на П.

Просте присвоювання здійснює операція «=». Допускається одночасне зчіплювання декількох операцій присвоювання за умови, що всі операнди мають однаковий тип, наприклад:

int і, j, с;
i = j = с = 0; .

Операції «+=», «-=», «*=», «/=» виконують складні присвоювання і дозволяють записувати вирази коротше, наприклад:

s += 7;        //s=s + 7;
  і *= j + 5;   //i=i*(j +5);
g%=9;        //g=g%9;.

Операції відношення порівнюють значення Л зі значенням П:
< — менше;
<= — менше або дорівнює (не перевищує);
== — дорівнює;
> — більше;
>= — більше або дорівнює (не менше);
!= — не дорівнює.

У мові C++ «істина» — це ненульова величина, «неправ­да» — це нуль (0). У більшості випадків одиниця (1) викориc­товується як ненульове значення.

Операції відношення повертають ціле значення 1, якщо умова вірна, або 0, якщо умова помилкова.

Логічні операції оперують з цілими розмірами або з розміра­ми, які можна перетворити на цілі. Обчислення зупиняється, які тільки визначиться, чи є вираз правдивим («істина») або помил­ковим («неправда»). При цьому, як і для операцій відношення, значенням «істина» відповідає 1, а значенням «неправда» — 0.

&& — логічне «AND» (кон’юнкція);
||    — логічне «OR» (диз’юнкція);
!= — логічне «NOT» (заперечення).

Результат операції «&&» є «істина» (1), якщо обидва її oпe­ранди правдиві (не рівні 0). Результат операції «||» — «істина» (1), якщо хоча б один з її операндів є «істина». Логічне заперечення «!=» перетворює свій операнд на «істину» (1), якщо він дорівнює 0, і на «неправду» (0), якщо він не дорівнює 0.

З  використанням логічних операцій та операцій відношення записуються різні умовні вирази, наприклад, умова 3 < х < 5 ма­тиме вигляд: х > 3 && х < 5.

Операції обробки окремих бітів застосовують для обробки даних як послідовностей бітів (розрядів), кожний з яких набуває значення 0 або 1.

&    — операція бітового множення (кон’юнкція);
|    — операція бітового додавання (диз’юнкція);
^    — додавання за модулем 2;
~    — інвертування;
>> — зсув праворуч;
<< — зсув ліворуч.

Змінна-покажчик зберігає значення, що є адресою об’єкта в пам’яті комп’ютера. Через покажчик можна звертатися до об’єкта.

Операції з адресами та покажчиками:

& — одержання адреси: видає адресу змінної, ім’я якої роз­ташоване праворуч від позначення операції;
* — непряма адресація (розіменування): видає значення, записане за адресою, на яку посилається покажчик.
Додаткові операції:
  sizeof() — знаходить розмір (у байтах) операнда, розташова­ного праворуч від назви операції;
  (type) — операція приведення типу перетворює наступне за нею значення в тип, визначений ключовим словом, укладеним у круглі дужки, наприклад:
i = i+(int)*3.14;
?: —  триарна (з трьома операндами)     операція, що має вигляд:

вираз1? вираз2 : виразЗ;,

тут, якщо результат обчислення першого операнда (вираз1) не дорівнює 0 («істина»), то результатом операції буде значення дру­гого операнда (вираз2), інакше — третього операнда (виразЗ). Наприклад, знаходження найбільшої з двох величин а і b, мож­ливо здійснити операцією: max = (b > а)? b : а;.

Мова C++ налічує широкий спектр математичних функцій (табл. 3.5). Для їх використання слід включити в код програми заголовний файл math.h.

Таблиця 3.5

Математичні функції (заголовний файл math.h)

 

Прототип функції

Ім’я

Призначення

Double sin (double _х); sin (x) синус x (в радіанах) — sin x
Double cos (double _x); cos (x) косинус x (в радіанах) — cos х
Double tan (double _x); tan (x) тангенс х (в радіанах) — tg х
Double asin (double _x); asin (x) арксинус х — arcsin х
Double acos (double _x); acos (x) арккосинус х — arcos х
Double atan (double _x); atan (x) арктангенс х — arctg х
Double atan2 (double _y, Double_x); atan2 (y,x) арктангенс у/х — arctg (у/х)
Double sinh (double _x); sinh (x) синус гіперболічний х — sh х
Double cosh (double _x); cosh (x) косинус гіперболічний х — ch х
Double tanh (double _x); tanh (x) тангенс гіперболічний х — th х
Double log (double _x); log (x) натуральний логарифм х — ln х
Double log10 (double _x); log10 (x) десятковий логарифм х — log х
Double exp (double _x); exp (x) піднесення е до степеня х — ех
Double pow (double _x, double_y); pow (x,y) піднесення х до степеня у — ху
Double pow 10 (int _p) pow10 (p) повертає 10р
Double sqrt (double _х); sqrt (x) корінь iз x, x > 0
Double hypot (double_x, double_y); hypot (x,y) корінь із (х22)
Double fabs (double __x); fabs (x) абсолютне значення х — |х| типу double
int abs (int _x); abs (x) абсолютне значення х — |х| типу int
long labs (long _x); labs (x) абсолютне значення х — |х| типу long
Double fmod (double __x, double_y); fmod (x,y) залишок від ділення х на у
Double ceil (double __x); ceil (x) округлення до більшого
Double floor (double _x); floor (x) повертає найближче ціле, не більше за х
Double modf (double _x, double); modf(x,&p) виділяє цілу й дробову частинні числа
Double atof(const char* _s); atof (s) перетворює рядок символів
у число з плаваючою крапкою

Визначені константи: М_РІ = 3.1415… — пи, М_Е = 2.71828… — е, M_SQRT2 = 1.4142… — sqrt(2), M_LN2 = 0.6931… — ln(2) тощо.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *