Лекція 2 Тема: Операції. Вирази. Оператори.
План Операції Основні операції Порядок виконання операцій Додаткові операції Вирази Оператори Оператор присвоєння Поняття складеного оператора
Основними елементами, з яких будується програма, є оператори. Більшість операторів складається з виразів. Вирази це поєднання операцій і операндів. Операнд це те, над чим виконується операція.
Операції Операція присвоєння імя змінної величини=значення year = 2013 Операція виконується справа наліво. Означає наступне: змінній на імя year присвоюється значення 2013 Розглянемо операцію: і = і+1 Це означає, що видобувається значення змінної і, до нього додається 1 і це нове значення присвоюється змінній і.
Приклад 2_1 /*таблиця результатів */ main() { int l,m,n; n = m = l = 165; printf(l,m,n \n); printf(Рахунок першої партії %4d %8d %8d \n,l,m,n); }
Операція додавання: + Виконання операції додавання призводить до додавання двох величин, що стоять справа і зліва від цього знака. Наприклад, в результаті роботи оператора printf(%d,200+50); на екран виводитиметься число 250, а не вираз Операндами можуть бути як змінні, так і константи. Операція додавання є бінарною, тому що виконується над двома операндами. Наприклад, k=n+5 означає, що змінній k присвоюється значення змінної n плюс 5.
Операція віднімання: Виконання операції віднімання призводить до віднімання числа, що розміщується справа від знаку «», від числа, що розміщується зліва від цього знаку. Операція віднімання є бінарною. Наприклад, оператор m = ; присвоює змінній m значення
Операція змінення знаку: Є унарною, тому що виконується з одним операндом. Наприклад, оператор х = х; змінює знак змінної величини х.
Операція множення: * Є бінарною. Наприклад, оператор s = s*3; множить значення змінної величини s на три і це значення присвоює змінній s.
Операція ділення: / У мові Сі символ / указує на операцію ділення. Величина, що стоїть зліва від знаку ділення, ділиться на величину, що стоїть справа від цього знаку. Наприклад, в результаті виконання оператора f = /2.0; змінній f буде присвоєно значення Над даними цілого типу операція ділення виконується не так, як над даними з плаваючою комою: у першому випадку результат буде цілим числом, а у другому числом з плаваючою комою. У мові Сі прийнято правило, за яким дробова частина результату відкидається. Ця дія називається «відсіченням».
Приклад 2_3 main() { printf(ділення цілих: 5/4 це %d \n, 5/4); printf(ділення цілих: 6/3 це %d \n, 6/3); printf(ділення цілих: 7/4 це %d \n, 7/4); printf(ділення чисел з плаваючою комою: 7./4. це %2.2f \n, 7./4.); printf(змішане ділення: 7./4 це %2.2f \n, 7./4); } Останній приклад на використання змішаних типів, тобто ділення дійсного числа на ціле. Мова Сі дозволяє виконувати подібні операції. Результат виконання цієї програми наступний: ділення цілих: 5/4 це 1 ділення цілих: 6/3 це 2 ділення цілих: 7/4 це 1 ділення чисел з плаваючою комою: 7./4. це 1.75 змішане ділення: 7./4 це 1.75 Результат ділення цілих чисел заокруглюється не до найближчого цілого, а завжди до меншого цілого числа. Коли ми змішуємо цілі числа і числа з плаваючою комою, результат буде таким самим аби обидва операнди були числами з плаваючою комою. У цьому випадку перед діленням ціле число перетворюється на число з плаваючою комою.
ПОРЯДОК ВИКОНАННЯ ОПЕРАЦІЙ У мові Сі кожній операції призначається рівень старшинства.
ДОДАТКОВІ ОПЕРАЦІЇ МОВИ СІ У мові Сі є біля сорока операцій. Вище були розглянуті ті, що є найбільш широко вживаними. Розглянемо ще три операції, які досить часто використовуються.
Операція ділення по модулю: % Ця операція використовується у цілочисельній арифметиці. Її результатом є остача від ділення цілого числа, що стоїть зліва від знаку операції, на число, що стоїть справа від цього знаку. Наприклад, результатом операції 78 % 5 (читається як «78 по модулю 5») буде число 3 (тому що 78=15*5+3). В наступному прикладі: minutes = time % 60; змінній minutes буде присвоєно значення остачі від ділення значення змінної time на 60.
Операція збільшення: ++ Ця операція збільшує значення свого операнду на одиницю. Існує дві форми запису операції збільшення: префіксна і постфіксна. У префіксній формі символи ++ знаходяться зліва від операнду, а у постфіксній справа. Префіксна форма змінює значення операнду перед його використанням, а постфіксна після. Наприклад, в операторі j = i++; змінна j спочатку набуває значення змінної величини i, а потім змінна i збільшує своє значення на 1. А в операторі j = ++i змінна i спочатку збільшує своє значення на 1, а потім змінна j набуває значення змінної величини i.
Операція зменшення: Операція зменшення є повним аналогом операції збільшення, тільки в бік зменшення значення змінної. Операції збільшення і зменшення мають дуже високий рівень старшинства. Тільки круглі дужки мають більш високий пріоритет. Наприклад, вираз a/b++ означає (a)/(b++), а не (a/b)++.
ВИРАЗИ Вираз це поєднання операцій і операндів. Найпростіший вираз складається з одного операнда. Приклади виразів a*(bc) x=2 x=y++ y<5 Вирази це компоненти програми, створені з використанням операцій, констант, змінних (включаючи масиви, структури і обєднання) і викликів функцій. Порядок обчислення виразів обумовлений лише вимогами щодо семантики операторів і виконання правил пріоритету і порядку виконання операцій.
Деякі приклади виразів і їх значень Примітка: останній приклад виглядає досить дивно, але його написання повністю відповідає правилам мови Сі, оскільки даний вираз це сума двох підвиразів, кожне з яких має своє значення.
ОПЕРАТОРИ Оператори є основними елементами, з яких будується програма. Програма складається з послідовності операторів, до якої добавляється невелика кількість знаків пунктуації. Оператор є закінченою інструкцією для компютера. Будьякий вираз може бути перетворений на оператор через добавляння до нього крапки з комою. Запис вигляду вираз; є оператором. Наприклад, line =7 це тільки вираз, який, в принципі, може стати частиною більшого виразу, але запис line = 7; є оператором. В іншому прикладі, вираз не є закінченою інструкцією, а лише вказує компілятору, що слід додати число сім до числа девять, але не каже про те, що робити з результатом.
Приклади простих операторів:
ОПЕРАТОР ПРИСВОЄННЯ Одним із найважливіших операторів будь-якої мови програмування є оператор присвоєння. Оператор присвоєння це оператор, який заносить в змінну нове значення. Форма запису оператора присвоєння: змінна = значення;
Складений оператор присвоєння У розрахунках часто використовується наступна форма запису оператора присвоєння: змінна = змінна операція вираз Наприклад: i = i + 1; x = x * 2; Якщо імя змінної в лівій частині і на початку правої частини оператора присвоєння одне й те ж саме, то запис подібного оператора можна скоротити.
+= додавання -= віднімання *= множення /= ділення
Множинні присвоєння У мові С++ дозволяється присвоїти одне й теж саме значення декільком змінним одночасно. Наприклад: x=y=z=0 //змінним x,y i z одночасно присвоюється значення 0
Інкрементація і декрементація У мові C/C++ є два корисні оператори, яких немає в інших мовах. Це оператори інкрементації і декрементації. Оператор інкрементації ++ додає 1 до свого операнда (дивись операцію збільшення), а оператор декрементації віднімає її (дивись операцію зменшення).
Оператори інкрементації і декрементації мають дві форми: префіксну і постфіксну. Якщо використовується префіксна форма, оператори інкрементації і декрементації застосовуються до старого значення операнда, а якщо постфіксна до нового.
Більшість компіляторів мови C/C++ створюють для операторів інкрементації і декрементації ефективний обєктний код. Він виконується значно швидше, ніж код, який відповідає оператору присвоєння. Тому оператори інкрементації і декрементації слід використовувати завжди, коли це можливо.