
- •12. Класи пам'яті даних 100
- •13. Робота з файлами 106
- •14. Посилання 111
- •Склад мови
- •Алфавіт мови
- •Лексеми
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Символьні рядки
- •Знаки операцій, роздільники, коментарі
- •Типи даних
- •Класифікація типів даних
- •Цілочислові типи
- •Дійсні типи
- •Оголошення змінних і констант
- •Переліки
- •Структура програми
- •Функція main
- •Область дії змінної
- •Введення і виведення даних
- •Функції стандартної математичної бібліотеки
- •Вирази і операції
- •Поняття виразу, операнда, операції
- •Порядок виконання операцій
- •Арифметичні операції
- •Порозрядні операції
- •Операції порівняння
- •Логічні операції
- •Операції присвоєння
- •Умовна операція
- •Операція визначення розміру sizeof
- •Узгодження типів у виразах
- •Умовні оператори
- •Оператори
- •Умовний оператор if
- •Оператор вибору switch
- •Оператори циклу
- •Цикл з параметром. Оператор for
- •Цикл з передумовою. Оператор while
- •Цикл з постумовою. Оператор do while
- •Оператори переходу
- •Використання псевдовипадкових чисел
- •Одновимірні масиви
- •Багатовимірні масиви
- •Символьні рядки
- •Вказівники
- •Оголошення вказівника, операції, пов’язані з вказівниками
- •Адресна арифметика
- •Void – вказівники, типізація вказівників
- •Звертання до елементів масивів через вказівники
- •Масиви символьних рядків і масиви вказівників
- •Динамічне виділення пам’яті
- •Структури і об’єднання
- •Оголошення і ініціалізація структур
- •Звертання до елементів структур
- •Перейменування типів
- •Об’єднання
- •Поля бітів
- •Директиви препроцесора
- •Призначення директив препроцесора
- •Директива включення #include
- •Директиви макропідстановок #define I #undef
- •Директиви умовної компіляції
- •Директиви #ifdef, #ifndef
- •Функції
- •Структура функції
- •Виклик функцій. Прототипи функцій
- •Взаємодія фактичних і формальних параметрів функцій
- •Inline – функції
- •Масиви і символьні рядки як параметри функцій
- •Використання кваліфікатора const в оголошеннях параметрів
- •Багатовимірні масиви як параметри функцій
- •Опрацювання структур у функціях
- •Вказівники на функції
- •Рекурсивні функції
- •Класи пам'яті даних
- •Клас пам'яті, час існування і видимість об’єкта
- •Область дії глобальних і локальних змінних
- •Специфікатори класів пам'яті
- •Специфікатори глобальних змінних
- •Багатофайлові програми
- •Робота з файлами
- •Звертання до файлів
- •Послідовний запис до файлу і послідовне читання з файлу
- •Файли з довільним доступом
- •Посилання
- •Призначення посилань
- •Передача аргументів функцій як посилань
Умовні оператори
Оператори
Оператори – основні конструктивні компоненти програми, призначені для виконання встановлених дій. Через оператори реалізують послідовність кроків алгоритму розв’язання задачі. Мова С++ має невеликий, але потужній за своїми функціональними можливостями набір операторів.
За конструкцією всі оператори можна поділити на дві групи: прості оператори, до складу яких не входять інші оператори; складені оператори, обов’язковим компонентом яких є вкладені (внутрішні) оператори.
За характером дій, що виконуються оператором, виділяють такі групи: оператори-вирази, умовні оператори (if, switch), оператори циклу (for, while, do while), оператори переходу (go, break, continue, return).
Окремим видом складеного оператора є блок. Блоком у мові С++ називають групу довільних операторів, об’єднаних фігурними дужками. Після правої дужки крапка з комою не ставиться. Блок розглядається як один оператор, він може бути записаний всюди, де синтаксис мови вимагає наявності оператора. Всередині блоку можна оголошувати внутрішні змінні, які не можна використовувати за межами блоку (див. розділ 3.2).
Оператором вважається кожен допустимий вираз, що закінчується знаком крапка с комою. Такі вирази можна розглядати як оператори – вирази. Наприклад:
#include <iostream>
using namespace std;
void print(int x) {
cout << x << endl;
}
int main(){
int a = 1, b = 2, t;
a + b * t; // 1й оператор-вираз
123; // 2й оператор-вираз
t = a + b; // 3й оператор-вираз
++a; // 4й оператор-вираз
a > b ? a++ : b++; // 5й оператор-вираз
print(a); // 6й оператор-вираз
pow(a, 2.); // 7й оператор-вираз
}
При компіляції цієї програми помилок не буде, тільки для першого оператора – виразу буде видано таке попередження: warning C4552: '+' : operator has no effect; expected operator with side-effect, тобто оператор не виконує ніяких дій, значення виразу буде обчислене, але воно не використовується і буде втрачене після завершення оператора. Так саме і другий оператор вираз є беззмістовним, тобто він не виконує ніяких дій, але синтаксично правильним.
Інші оператори – вирази цього прикладу виконують такі дії: третій – присвоює змінній t значення виразу, четвертий і п’ятий – збільшують значення змінних на одиницю, шостий і сьомий – викликають функції.
Таким чином, оператори – вирази можна поділити на дві групи: оператори присвоєння і оператори звертання до функції.
Синтаксично оператори присвоєння є виразами, в яких останньою виконується операція присвоєння, а в кінці записано знак ;. Можна використовувати кожну з форм операції присвоєння: звичайне присвоєння, комбіноване присвоєння, інкремент – декремент.
Звертання до функції може бути операндом виразу (якщо функція повертає відповідне значення) або виступати окремим оператором. Якщо функція не повертає значення, тобто тип її значення void, то така функція є аналогом процедури в інших мовах програмування, її можна викликати тільки як окремий оператор.
Як окремий оператор може виступати і звертання до функції, яка повертає значення. В цьому випадку виконуються дії, що передбачені в функції, а значення, яке вона повертає, не використовується і втрачається.
Найпростішим у записі є порожній оператор – він позначається тільки знаком ;. Порожній оператор не виконує ніяких дій, його застосовують у тих випадках, коли синтаксично конструкція вимагає запису оператора, але ніяких дій виконувати не треба. Порожній оператор часто використовують в операторах циклу і в умовних операторах.