ЕОМ та мікропроцесори. Арифметичні операції й арифметичні вирази. (Лекція 2)

Содержание

Слайд 2

Арифметичні операції й арифметичні вирази Традиційним способом задавання арифметичних операцій є

Арифметичні операції й арифметичні вирази

Традиційним способом задавання арифметичних операцій є

використання двохмістних арифметичних операторів мультиплікативної й адитивної груп.
Операндами всякої двохмістної операції можуть бути як константи, так і змінні, причому імена останніх повинні бути попередньо визначені в одній з інструкцій опису типу.
Оператори мультиплікативної групи служать для представлення операцій множення (*), ділення (/) операндів і одержання залишку (%) від розподілу першого операнда на другий.
(В останньому випадку обоє операнд повинні бути цілими величинами)
Слайд 3

Арифметичні операції й арифметичні вирази Операція множення здійснюється над операндами будь-яких

Арифметичні операції й арифметичні вирази
Операція множення здійснюється над операндами будь-яких

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

Арифметичні операції й арифметичні вирази Порядок виконання операцій мультиплікативної групи –

Арифметичні операції й арифметичні вирази
Порядок виконання операцій мультиплікативної групи –

з ліва на право. Група адитивних операторів містить у собі два оператори: додавання (+) і віднімання (-). Обидві ці операції здійсненні над операндами будь-яких (можливо різних!) типів. Порядок виконання операцій адитивної групи - зліва направо. Їхній пріоритет нижче пріоритету мультиплікативних операцій, але вище, ніж пріоритет операції присвоювання.
Слайд 5

Арифметичні операції й арифметичні вирази Зауваження. Двумістну операцію віднімання варто відрізняти

Арифметичні операції й арифметичні вирази
Зауваження. Двумістну операцію віднімання варто відрізняти

від операції що має найвищий пріоритет одномісної (унарної) операції зміни знака, символом який служить знак мінус (-) ліворуч від операнда.
Слайд 6

Одномісні арифметичні операції Одномісними операціями яки набули найбільшого використання у програмах

Одномісні арифметичні операції
Одномісними операціями яки набули найбільшого використання у програмах на

мові С є операції збільшення (++) і зменшення (--) значення змінної на одиницю.
Кожна з них має дві форми: префіксну і постфіксну.
Слайд 7

Префіксна і постфіксна форми операцій ++ та -- У префіксній формі

Префіксна і постфіксна форми операцій ++ та --

У префіксній формі символ

операції ставиться ліворуч від свого операнда, а в постфіксній - праворуч від нього. Семантична відмінність двох цих форм полягає в тому, що у випадку префіксного запису (++x) збільшення або (--x) зменшення значення змінної x виконується до його використання в більш складному виразі, у той час як постфіксний запис (x++) або (x--) змінює колишнє значення змінної лише після його фактичного використання.
Слайд 8

Префіксна і постфіксна форми операцій ++ та -- Пріоритет операцій ++

Префіксна і постфіксна форми операцій ++ та --

Пріоритет операцій ++ і

-- вище пріоритету будь-якої двохмістної арифметичній операції й операції присвоювання, а порядок їхньої обробки компілятором – з право наліво.
При обчисленні значення виразу спочатку виконуються унарні операції (-, ++, --), потім двохмістні операції мультиплікативної (*, /, %) і аддитивних (+, -) груп і, нарешті, операції присвоювання.
(Звичайний порядок виконання операцій може бути змінений шляхом веденням деякої частини арифметичного виразу в круглі дужки)
Слайд 9

Приклади арифметичних виразів 1. a = 4.3 + 2.7 У цьому

Приклади арифметичних виразів
1. a = 4.3 + 2.7
У цьому прикладі

обидва операнди праворуч від оператора присвоювання є числовими константами. Арифметичні вирази такого виду прийнято називати константними вираженнями.
Слайд 10

Приклади арифметичних виразів 2. b = (c + d) % 4

Приклади арифметичних виразів

2. b = (c + d) % 4
Тут

традиційний порядок виконання арифметичних операцій порушений використанням круглих дужок, які виділяють підвираз в складі більш складного арифметичного виразу. Відповідно до визначення операції % операнди c і d повинні бути змінними цілого типу.
Слайд 11

Приклади арифметичних виразів 3. e = ++f/(g + h) В даному

Приклади арифметичних виразів

3. e = ++f/(g + h)
В даному прикладі

використана префіксна форма оператора ++ і тому операція ділення буде виконана після фактичного збільшення значення змінної f на одиницю.
Домашнє завдання:
Слайд 12

Домашнє завдання: Приклади арифметичних виразів Визначити значення всіх змінних після виконання

Домашнє завдання: Приклади арифметичних виразів

Визначити значення всіх змінних після виконання

наведених виразів чи вказати на неможливість використання даних виразів за умови наступних вихідних значень: a=3; b=10; c=21;
1) k1=-a*3%c;
2) k2=--b*a;
3) k3=b+++4;
4) k4=--c+++b;
Слайд 13

Особливості використання операції присвоювання У мові Сі операція присвоювання є повноправною

Особливості використання операції присвоювання
У мові Сі операція присвоювання є повноправною

частиною будь-якого арифметичного виразу й у загальному випадку має формат:
expression1 = expression2
Слайд 14

Особливості використання операції присвоювання Не вдаючись поки в семантичні подробиці такого

Особливості використання операції присвоювання
Не вдаючись поки в семантичні подробиці такого

запису, ми будемо користуватися її спрощеною формою
identifier = expression
де identifier є попередньо визначене ім'я змінної,
expression - довільний арифметичний вираз.
Слайд 15

Особливості використання операції присвоювання Але навіть у таку спрощену схему укладаються

Особливості використання операції присвоювання
Але навіть у таку спрощену схему укладаються

досить складні в семантичному відношенні вирази виду
p = 2*(q + s)/(t = u * ++v)
Слайд 16

Операції відношення, логічні операції і логічні вирази Група двохмістних операцій відношення

Операції відношення, логічні операції і логічні вирази

Група двохмістних операцій відношення

виконує порівняння першого операнда з другим, перевіряючи, чи є істиною те співвідношення між операндами, що визначене символом операції. Повний набір операцій відношення задається наступною групою операторів:
< - менше > - більше
<= - менше або дорівнює >= - більше або дорівнює
== - дорівнює != - не дорівнює
Слайд 17

Операції відношення, логічні операції і логічні вирази Результатом будь-якої операції відношення

Операції відношення, логічні операції і логічні вирази
Результатом будь-якої операції відношення

є числове значення типу int, яке дорівнює одиниці, якщо порівняння істина, і нулеві в противному випадку. Таким чином, операції відношення у внутрішнім машинному представленні приводять до арифметичного результату.
Слайд 18

Операції відношення, логічні операції і логічні вирази Строго кажучи, логічне значення

Операції відношення, логічні операції і логічні вирази
Строго кажучи, логічне значення

"істина" відповідає будь-якому числовому значенню, відмінному від нуля. Саме така домовленість прийнята в мові Сі
Це дає можливість об'єднати поняття арифметичного, умовного і логічного виразів у єдиному понятті "вираз", що дуже важливо з точки зору гнучкості і "симетричності" мови.
Слайд 19

Операції відношення, логічні операції і логічні вирази Вирази, які сконструйовані за

Операції відношення, логічні операції і логічні вирази
Вирази, які сконструйовані за

допомогою операцій відношення, прийнято називати умовними виразами. У процесі обчислення значення будь-якого умовного виразу, операції відносини обробляються з ліва на право.
Встановлений порядок може бути змінений шляхом ведення частини виразу в круглі дужки.
Слайд 20

Приклади використання умовних виразів x цілком еквівалентна запису: (x у той

Приклади використання умовних виразів
x < y == z
цілком еквівалентна запису:
(x

< y) == z
у той час як вираз виду
x < (y == z)
відрізняється від попереднього порядком виконанням операцій < і ==.
Слайд 21

Логічні операції і логічні вирази При розробці реальних програм часто виявляється

Логічні операції і логічні вирази
При розробці реальних програм часто виявляється

необхідним об'єднати два або більш умовних виразів.
Це можна зробити, використовуючи набір двохмістних логічних операцій:
&& - логічне І
|| - логічне АБО
! - логічне НІ (заперечення)
Слайд 22

Логічні операції і логічні вирази Припустимо, що expression1 і expression2 -

Логічні операції і логічні вирази

Припустимо, що expression1 і expression2 -

два простих умовних вирази. Тоді:
1. значення expression1 && expression2 є істиною тоді і тільки тоді, коли обидва вирази expression1 і expression2 істинні;
2. значення expression1 || expression2 є істиною, якщо хоча б один з виразів-операндів має значення "істина";
3. значення !expression1 є істиною, якщо вираз expression1 є не істиною, і навпаки.
Слайд 23

Логічні операції і логічні вирази Вирази, побудовані з використанням логічних операцій,

Логічні операції і логічні вирази

Вирази, побудовані з використанням логічних операцій,

ми будемо називати логічними виразами.
Логічні вирази є прямим узагальненням простих умовних виразів.
Стандартний порядок їхньої обробки – з ліва на право. Пріоритет логічних операцій && і || нижче пріоритету будь-якої операції відношення і тому логічні вирази
a < b && b < c і (a < b) && (b < c)
цілком рівносильні, хоча друге з них є більш кращим через наочність.
Слайд 24

Логічні операції і логічні вирази ОДНАК операція логічного заперечення (!) має

Логічні операції і логічні вирази
ОДНАК
операція логічного заперечення (!) має дуже

високий пріоритет (він такий же, як пріоритет одномісних арифметичних операцій) і тільки круглі дужки мають більш високий пріоритет.
Слайд 25

Логічні операції і логічні вирази У загальному випадку операндами логічних операцій

Логічні операції і логічні вирази
У загальному випадку операндами логічних операцій

можуть бути не тільки умовні вирази, але і будь-які арифметичні вирази. Це легко зрозуміти, якщо нульовому значенню арифметичного виразу поставити у відповідність логічне значення "не істина" і, навпаки, всяке відмінне від нуля числове значення ототожнити з логічним значенням "істина".
Слайд 26

Умовний оператор Найпростішою інструкцією мови Сі, що використовує логічні вирази, є

Умовний оператор

Найпростішою інструкцією мови Сі, що використовує логічні вирази, є

умовний оператор:
expression1 ? expression2 : expression3
де expression1 це логічне вираз, а expression2 і expression3 це довільні арифметичні вирази.
Слайд 27

Умовний оператор expression1 ? expression2 : expression3 Якщо expression1 приймає значення

Умовний оператор
expression1 ? expression2 : expression3
Якщо expression1 приймає значення "істина",

то результатом умовної операції буде значення expression2, у противному випадку він дорівнює значенню expression3.
Наприклад, інструкція
abs_a = (a > 0) ? a : -a
привласнює змінній abs_a абсолютне значення змінної a
Слайд 28

Автоматичне перетворювання типів і операція приведення Якщо до складу арифметичного або

Автоматичне перетворювання типів і операція приведення

Якщо до складу арифметичного або

умовного виразу входять операнди різних типів, то компілятор автоматично виконує їхнє приведення до загального типу. Незважаючи на те, що в ряді випадків характер перетворення залежить від виду конкретної операції і типу операндів, існує загальний набір стандартних правил перетворення
Слайд 29

Правила перетворення типу 1. якщо операція виконується над даними двох різних

Правила перетворення типу
1. якщо операція виконується над даними двох різних

типів, обидві величини приводяться до "вищого" типу;
2. в операторі присвоювання кінцевий результат обчислення виразу в правій частині приводиться до типу змінної, якій повинне бути привласнене значення.
Слайд 30

Правила перетворення типу Послідовність імен типів, упорядкованих від "вищого" типу до

Правила перетворення типу
Послідовність імен типів, упорядкованих від "вищого" типу до

"нижчого", виглядає так: double, float, long, int, short і char.
Застосування ключового слова unsigned підвищує ранг відповідного типу даних зі знаком.
Слайд 31

Операція приведення типів У мові Сі мається можливість точно вказати тип

Операція приведення типів

У мові Сі мається можливість точно вказати тип

даних, до якого необхідно привести деяку величину. Ця можливість реалізується в операції приведення типів у такий спосіб:
перед даною величиною в круглих дужках записується ім'я необхідного типу.
Слайд 32

Операція приведення типів наприклад, змінна res має тип int. Тоді значення

Операція приведення типів

наприклад, змінна res має тип int. Тоді значення

арифметичного вираження
res = 2.7 + 1.5
відповідно до загальних правил перетворення типів, дорівнює 4.
При застосуванні явної операції приведення типу до обох операндів у правій частині
res = (int)2.7 + (int)1.5
одержимо результат, рівний 3.
Слайд 33

Домашнє завдання Розібрати поняття складеного оператору

Домашнє завдання
Розібрати поняття складеного оператору