- •Програмування і алгоритмічні мови Конспект лекцій
- •Луцьк 2004
- •Лекція 1 Основи мови с. Оператори введення та виводу.
- •Імена змінних та типи і розміри даних. Арифметичні та логічні оператори. Оператори присвоєння.
- •Лекція 3 Масиви. Масиви літер.
- •Умовні оператори. Інкриментні та декрементні оператори.
- •Цикл For
- •Лекція 6 Цикли While, Do-while.
- •Структури. Масив структур.
- •Препроцесор. Рекурсія.
- •Основні відомості про функції.
- •Змінні і правила дії областей у функціях
- •Головні файли.
- •Масиви в якості аргументів функції.
- •Структури в якості аргументів функції
- •Вказівники і адреси
- •Масиви вказівників
- •Вказівники на структуру
- •Лекція 17 Використання вказівників у якості аргументів функцій
- •Лекція 18 Доступ до файлів
- •Методичне видання
- •“Автоматизоване управління технологічними процесами”
- •Тир.50 прим. Зам.1516
- •43018, М.Луцьк, вул. Львівська, 75
Імена змінних та типи і розміри даних. Арифметичні та логічні оператори. Оператори присвоєння.
Основні типи, що найбільше безпосередньо відповідають засобам апаратного забезпечення, такі:
char short int long float double
Перші чотири типи використовуються для представлення цілих, останні два для представлення чисел із крапкою. Змінна типу char має розмір природний для збереження символу на даній машині (звичайно, байт), а змінна типу int має розмір, що відповідає цілій арифметиці на даній машині (звичайно, слово). Діапазон цілих чисел, що можуть бути представлені типом, залежить від його розміру. У C++ розміри виміряються в одиницях розміру даних типу char, тому char по визначенню має розмір одиниці.
До основного типу можна застосовувати прикметник const. Це дає тип, що має ті ж властивості, що і вихідний тип, за винятком того, що значення змінних типу const не може змінюватися після ініціалізації.
const float pi = 3.14;
const char plus = '+';
Символ, укладений в одинарних лапках, є символьною константою. Помітьте, що часто константа, визначена таким чином, не займає пам'ять; просто там, де потрібно, її значення може використовуватися безпосередньо. Константа повинна ініціалізуватися при описі. Для змінних ініціалізація необов'язкова, але постійно рекомендується. Основ для введення локальної змінної без її ініціалізації дуже небагато.
Є також декілька кваліфікаторів, які можна використовувати разом з вказаними базовими типами.
Для представлення цілого, описаного з кваліфікатором short, відводиться 16 біт, з кваліфікатором long-32 біта, а значення типу int- чи 16 чи 32 біта.
Бінарними арифметичними операторами являються +,-,*,/, а також оператор взяття модуля %. Ділення цілих супроводжується відкиданням дрібної частини, якою вона б не була.
До будь-якої комбінації цих типів можуть застосовуватися арифметичні операції:
+ – (плюс, унарний і бінарний)
- – (мінус, унарний і бінарний)
* – (множення)
/ – (ділення)
Логічні оператори && і ¦¦.
До логічних операцій відносяться операція логічного І (&&) і операція логічного АБО (||). Операнди логічних операцій можуть бути цілого типу, що плаває чи типу вказівника, при цьому в кожній операції можуть брати участь операгди різних типів.
Операнди логічних виражень обчислюються ліворуч праворуч. Якщо значення першого операнда досить, щоб визначити результат операції, то другий операнд не обчислюється.
Логічні операції не викликають стандартних арифметичних перетворень. Вони оцінюють кожен операнд із погляду його еквівалентності нулю. Результатом логічної операції є 0 чи 1, тип результату int.
Операція логічного І (&&) виробляє значення 1, якщо два операнда мають нульові значення. Якщо один з операндів дорівнює 0, то результат також дорівнює 0. Якщо значення першого операнда дорівнює 0, то другий операнд не обчислюється.
Операція логічного АБО (||) виконує над операндами операцію що включає АБО. Вона виробляє значення 0, якщо обоє операнда мають значення 0, якщо який-небудь з операндів має ненульове значення, то результат операції дорівнює 1. Якщо перший операнд має ненульове значення, то другий операнд не обчислюється.
Операція простого присвоювання використовується для заміни значення лівого операнда, значенням правого операнда. При присвоюванні виробляється перетворення типу правого операнда до типу лівого операнда за правилами, згаданим раніш.
Приклад:
int t;
char f;
long z;
t=f+z;
Значення змінної f перетвориться до типу long, обчислюється f+z, результат перетвориться до типу int і потім привласнюється змінної t.
Крім простого присвоювання, є ціла група операцій присвоювання, що поєднують просте присвоювання з однієї з бінарних операцій. Такі операції називаються складними операціями присвоювання і мають вид:
(операнд-1) (бінарна операція) = (операнд-2) .
Складне присвоювання по результатам еквівалентно наступному простому присвоюванню:
(операнд-1) = (операнд-1) (бінарне операція) (операнд-2) .
Відзначимо, що вираз складного присвоювання з погляду реалізації не еквівалентно простому присвоюванню, тому що в останньому операнд-1 обчислюється двічі.
Кожна операція складного присвоювання виконує перетворення, що здійснюються відповідною бінарною операцією. Лівим операндом операцій (+=) (-=) може бути вказівник, у той час як правий операнд повинний бути цілим числом.
Приклади:
double arr[4]={ 2.0, 3.3, 5.2, 7.5 } ;
double b=3.0;
b+=arr[2]; /* еквівалентно b=b+arr[2] */
arr[3]/=b+1; /* еквівалентно arr[3]=arr[3]/(b+1) */
Помітимо, що при другому присвоюванні використання складного присвоювання дає більш помітний виграш у часі виконання, тому що лівий операнд є індексним виразом.
