2.4. Операції і вирази
Операції визначають дії за допомогою яких здійснюється обробка інформації комп’ютером. Послідовність дій визначається за допомогою виразу. . Вираз – це форма запису, що вказує, які потрібно взяти операнди і які виконати над ними операції, щоб обчислити значення виразу.
За кількістю операндів розрізняють унарні і бінарні операції. Унарні операції мають один операнд, а бінарні два. Більшість операцій є бінарними.
По характеру виконуваних дій операції можна розділити на такі групи:
Арифметичні операції: +, -, *, /, div, mod. Операції +, - можуть унарними. Тип операндів може бути дійсним або цілим, результат буде дійсним або цілим. Результат операції / (ділення) цілих або дійсних даних буде тільки дійсним. Операнди в операціях div (ціла частина від ділення, наприклад, 5 div 2 =2) і mod (остача від ділення, наприклад, 5 mod 2 = 1) тільки цілі і результат буде цілим.
Операції відношення: =, <>, >, <, >=, <=. Тип операндів з цими операціями повинен бути сумісним це прості типи, символьні рядки, а в операціях =, <> і вказівний тип. Результат операцій відношення бульвого типу false або true.
Бульові операції: not – заперечення, and – кон’юнкція (логічне множення), or – диз’юнкція (логічне додавання), xor – додавання за модулем два. Операція not є унарною. Бульові операції виконуються за правилами бульової алгебри Табл..2.5. Операнди з бульовими операціями повинні бути бульового типу і результат також буде бульового типу.
Порозрядні логічні операції і зсуви not, and, or, xor, shl, shr. Операнди з порозрядними логічними операціями і зсувами тільки цілого типу. Порозрядні логічні операції виконуються над кожним розрядом за правилами бульової алгебри. Операція А shl В приводить до зсуву числа А на В розрядів вліво, а А shr В відповідно на В розрядів вправо. Результат порозрядних логічних операцій і зсувів є цілого типу.
Табл..2.5.
Операнди |
Операції |
||||
A |
B |
Not A |
A and B |
A or B |
A xor B |
false |
False |
True |
False |
false |
false |
false |
True |
True |
False |
true |
true |
true |
False |
False |
False |
true |
true |
true |
True |
False |
True |
true |
false |
Операція конкатенація +. Операндами з операцією конкатенація є дані символьного типу або символьні рядки. Результатом цієї операції є символьний рядок.
Операції над множинами: + – об’єднання множин, - – різниця множин, * – переріз множин, = – еквівалентність множин, <> – не еквівалентність множин, >= – перевірка входження однієї множини в іншу, <= – перевірка входження однієї множини в іншу, in – перевірка належності елемента множині. Результатом операцій +, -, * є множина, а операцій =, <>, >=, <= значення бульового типу true або false.
Унарна операція @ взяття адреси. Операндом цієї операції може бути ідентифікатор змінної, процедури, функції, або методу. Тип результату вказівник сумісний з NIL.
На основі операцій і операндів будуються вирази. За характером дій і операндів вирази поділяються на арифметичні, логічні, символьні і вирази над множинами. Операндами у виразах можуть використовуватися сталі, змінні і функції (наведені у додатку) різних типів, для яких дозволені певні операції.
Вирази обчислюються зліва направо з врахуванням пріоритетів операцій, порядком розміщення операцій і дужок.
Серед операцій встановлено такий пріоритет:
звернення до функцій;
унарні +, -, not, @;
мультиплікативні *, /, div, mod, and, shl, shr;
адитивні +, -, or, xor;
відношення =, <>, <, >, <=, >=, in.
Приклад 2.1. Визначити порядок виконання дій у виразі
,
1. ,
2. sin(x),
3. 5* sin(x),
4. +5* sin(x),
5. 6*x,sqr(x),
6. (6*x+sqr(x)),
7. 7*(6*x+sqr(x)),
8. +5* sin(x)- 7*(6*x+sqr(x)),
9. +5* sin(x)- 7*(6*x+sqr(x))-5.