9  Арифметичні та логічні оператори

Автор

Юрій Клебан

Опубліковано

3/18/23

9.1 Арифметичні оператори

R можна використовувати як звичайни калькулятор.

Розглянемо набір звичних арифметичних операторів, що відомі з початкової школи:

  • Додавання: +.
  • Віднімання: -.
  • Ділення: /.
  • Множення: *.

А також більш складні оператори:

  • Піднесення до степеня: ^ (вводиться з клавіатури як Shift+6 на ENG-розкладці клавіатури).
  • Остача від ділення (ще може називатися “ділення по модулю”): %% (вводиться з клавіатури як Shift+5).
  • Ділення націло: %/%.

Розглянемо приклад додавання чисел:

5 + 10
[1] 15
5 + 4 + 15
[1] 24
5 + 53 + 343
[1] 401
(5 + 8) + (4 + 9)
[1] 26
Note

Примітка. Використання “круглих” дужок у прогрмуванні виразах має пріоритет аналогічний до загальноприйнятих у математиці.

Розглянемо приклад віднімання чисел:

47 - 21
[1] 26
15 - (10 - 25)
[1] 30
Note

Примітка. Заміна знаків до/в “дужках” тут працює так само як працювала у школі :)

Приклади множення чисел:

5 * 3
[1] 15
5 * (2 + 5)
[1] 35

Приклади ділення чисел:

12 / 2
[1] 6
(4 + 7) / 3
[1] 3.666667

Піднесення до степеня за допомогю оператора ^ є досить простим. Так, наприклад, 3^2 (у математиці записується як \(3^2\)) дорівнює 9, а 2^3 - це 2*2*2 і дорівнює 8.

5^2
[1] 25
(1+3)^3 + 100 
[1] 164

Остача від ділення дозволяє знайти залишок одного числа від ділення на інше число.

Наприклад, остача від ділення націло 5 на 2 дорівнює 1, бо 2 * 2 (=4) + 1 = 5

28 %% 7
[1] 0
17 %% 5
[1] 2

Примітка. Пробіли між цифрами та операторами можна не лишати, це робиться для зручності візуального сприйняття коду.

Ділння націло залишає лише цілу частину від ідленнядвох чисел:

28 %/% 7
[1] 4

9.2 Оператори відношення

Оператори відношення відповідають за порівнняння двох об’єктів між собою та повертають значення логічного типу TRUE, якщо результат істинний та FALSE, якщо результат хибний.

Перелік операторів відношення:

  • Більше або дорівнює >=.
  • Менше <.
  • Менше або дорівнює <=.
  • Дорівнює ==.
  • Не дорівнює !=

Для демонстрації принципів роботи операторів відношення оголосимо 3 змінні a, b та c.

a <- 12
b <- 5
c <- 7

Розгялнемо кілька прикладів використання описаних вище операторів.

Оператори, що відповідають за первірку на “більше/менше”:

a > b
[1] TRUE
b + c < a
[1] FALSE
b + c <= a
[1] TRUE

Оператори, що відповідають за перевірку на “рівність/нерівність”:

a != b
[1] TRUE
a == b + c
[1] TRUE
b == c
[1] FALSE

9.3 Логічні оператори

До логічних операторів у R відносяться:

  • & - І (амперсант, Shift-7) - виконання усіх умов одночасно.
  • | - АБО (вертикальна риска, Shift+\) - виконання однієї із умов.
  • ! - НЕ (знак оклику, Shift+1) - заперечення.
Important

Зверніть увагу, що у R існують також і оператори && та ||. Це також логічні оператори І та АБО. Проте їх відмінність полягає у тому, що “розширені” оператори порівнюють лише перші елементи векторів, у той час як “скорочені” усі елементи:

x <- c(5, 8, 10)
y <- c(3, 2, 5)

print(x)
[1]  5  8 10
print(y)
[1] 3 2 5
x > 5 & y < 7
[1] FALSE  TRUE  TRUE
x > 5 && y < 7
[1] FALSE

Важливо розуміти відмінності між цими операторами вміти використовувати результи їх роботи. Для початку варто розглянути таблицю істинності:

Таблиця істинності логічних операторів
A B Оператор І Оператор АБО Заперечення A (не A)
FALSE FALSE FALSE FALSE TRUE
FALSE TRUE FALSE TRUE TRUE
TRUE FALSE FALSE TRUE FALSE
TRUE TRUE TRUE TRUE FALSE

Приклади використання логічних операторів зображені нижче.

Оператор І (and):

a <- 12
b <- 7

a > 10 & b < 10
[1] TRUE
a > 10 & b > 10
[1] FALSE
a < 10 & b < 10
[1] FALSE
a < 10 & b > 10
[1] FALSE

Оператор АБО (or):

a > 10 & b < 10
[1] TRUE
a > 10 | b > 10
[1] TRUE
a < 10 | b < 10
[1] TRUE

Приклади виконання завдань

Завдання 1. Ділення по модулю

Яким буде результат виконання наступних команд?

a <- 10
b <- 4

a %% b > 0 # what is result 
[1] TRUE

Результат:

TRUE

Пояснення: \(a\) %% \(b = 2\), бо остача від ділення \(10\) на \(4\) рівна \(2\), а \(2 > 0 = true\).

Завдання 2. Ділення по модулю

Яким буде результат виконання наступних команд?

Підзавдання 1:

a <- 7
b <- 12
c <- a - b %% 2

c

Результат:

7

Підзавдання 2:

c > 0 & b > a

Результат:

TRUE

Підзавдання 3:

c < 0 | b > a

Результат:

TRUE