
- •12. Класи пам'яті даних 100
- •13. Робота з файлами 106
- •14. Посилання 111
- •Склад мови
- •Алфавіт мови
- •Лексеми
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Символьні рядки
- •Знаки операцій, роздільники, коментарі
- •Типи даних
- •Класифікація типів даних
- •Цілочислові типи
- •Дійсні типи
- •Оголошення змінних і констант
- •Переліки
- •Структура програми
- •Функція main
- •Область дії змінної
- •Введення і виведення даних
- •Функції стандартної математичної бібліотеки
- •Вирази і операції
- •Поняття виразу, операнда, операції
- •Порядок виконання операцій
- •Арифметичні операції
- •Порозрядні операції
- •Операції порівняння
- •Логічні операції
- •Операції присвоєння
- •Умовна операція
- •Операція визначення розміру sizeof
- •Узгодження типів у виразах
- •Умовні оператори
- •Оператори
- •Умовний оператор if
- •Оператор вибору switch
- •Оператори циклу
- •Цикл з параметром. Оператор for
- •Цикл з передумовою. Оператор while
- •Цикл з постумовою. Оператор do while
- •Оператори переходу
- •Використання псевдовипадкових чисел
- •Одновимірні масиви
- •Багатовимірні масиви
- •Символьні рядки
- •Вказівники
- •Оголошення вказівника, операції, пов’язані з вказівниками
- •Адресна арифметика
- •Void – вказівники, типізація вказівників
- •Звертання до елементів масивів через вказівники
- •Масиви символьних рядків і масиви вказівників
- •Динамічне виділення пам’яті
- •Структури і об’єднання
- •Оголошення і ініціалізація структур
- •Звертання до елементів структур
- •Перейменування типів
- •Об’єднання
- •Поля бітів
- •Директиви препроцесора
- •Призначення директив препроцесора
- •Директива включення #include
- •Директиви макропідстановок #define I #undef
- •Директиви умовної компіляції
- •Директиви #ifdef, #ifndef
- •Функції
- •Структура функції
- •Виклик функцій. Прототипи функцій
- •Взаємодія фактичних і формальних параметрів функцій
- •Inline – функції
- •Масиви і символьні рядки як параметри функцій
- •Використання кваліфікатора const в оголошеннях параметрів
- •Багатовимірні масиви як параметри функцій
- •Опрацювання структур у функціях
- •Вказівники на функції
- •Рекурсивні функції
- •Класи пам'яті даних
- •Клас пам'яті, час існування і видимість об’єкта
- •Область дії глобальних і локальних змінних
- •Специфікатори класів пам'яті
- •Специфікатори глобальних змінних
- •Багатофайлові програми
- •Робота з файлами
- •Звертання до файлів
- •Послідовний запис до файлу і послідовне читання з файлу
- •Файли з довільним доступом
- •Посилання
- •Призначення посилань
- •Передача аргументів функцій як посилань
Дійсні типи
Для збереження і опрацювання дійсних чисел, тобто чисел, що складаються з цілої та дробової частини, в С++ використовуються типи даних float, double, long double. Відповідно до стандарту С++, тип float повинен мати точність не менше 6-ти значущих десяткових цифр, типи double, long double – не менше 10 значущих десяткових цифр. Діапазон значень трьох дійсних типів згідно зі стандартом повинен бути не меншим, ніж від 10-37 до 1037.
Для запису дійсних констант використовують дві форми запису – з фіксованою та плаваючою крапкою (див. розділ 1.6). Незалежно від форми запису дійсна константа зберігається в пам'яті як число в форматі double. Тип дійсної константи можна модифікувати, долучивши до неї кінцеву літеру f (або F) для встановлення типу float, або літеру l (або L) для встановлення типу long double.
В заголовному файлі float.h записані макроконстанти, які характеризують параметри всіх трьох дійсних типів.
Оголошення змінних і констант
Всі змінні, які використовуються в програмі, мають бути явно оголошені (описані). Синтаксис оголошення змінних такий:
тип список_змінних;
тут тип – ім’я одного з базових або похідних типів з модифікаторами або без них; список змінних – послідовність з одного або декількох ідентифікаторів, відокремлених комами, що задають імена змінних даного типу. Імена змінних мають відповідати вимогами до ідентифікаторів (див. розділ 1.5). Наприклад,
int a; // ціле
double b, c, d; // дійсне
unsigned long int e; // без знакове довге ціле
char ch_val_1; // символ
При оголошенні змінної можна відразу надавати їй початкове значення, тобто ініціалізувати цю змінну. Для ініціалізації змінної при її оголошенні після імені ставлять знак присвоєння «=» і вираз, значення якого отримає ця змінна. Елементами виразу ініціалізації можуть бути константи або змінні, значення яких вже відомі. Наприклад,
int a = 12, symb = '*';
double b = 3.45, c = 5.6e-3;
unsigned long int d = 2 * a;
char e = 'z';
Змінна, в описі якої перед типом вказаний кваліфікатор const вважається константою – змінювати її значення під час виконання програми не можна. Ініціалізація констант є обов’язковою. Наприклад,
const double PI = 3.1415926;
const double TWO_PI = 2 * PI;
Переліки
Перелікові типи, або просто переліки – це набори цілочислових констант, кожна з яких має унікальне в межах програми ім’я. Переліки оголошують таким чином:
enum ім’я_переліку {список_іменованих_констант};
тут ім’я переліку – ім’я, яке визначає (ідентифікує) даний перелік; список іменованих констант – набір імен, які надаються константам переліку. Тег переліку та імена його констант повинні відповідати правилам запису ідентифікаторів. Переліки є зручним способом для створення груп іменованих констант. Їх використання дозволяє підвищити наочність програм, спрощує внесення змін і доповнень, полегшує процес налагодження програм.
Наступний перелік надає імена константам, які позначають дні тижня:
enum days {Mon, Tue, Wed, Thu, Fri, Sat, Sun};
Кожен елемент переліку є константою з типом int, йому присвоюється значення, на одиницю більше,ніж значення попереднього елемента. Стандартно першій елемент переліку отримує значення нуль. Тобто, константа Mon з переліку days дорівнює 0, константа Tue дорівнює 1, константа Wed дорівнює 2 і так далі. Стандартні значення констант можна змінити, присвоївши їм потрібні цілочислові значення:
enum work_days {MON=1, TUE, WED, THU, FRI};
Перший елемент переліку в цьому випадку отримає значення 1, другий 2, і так далі.
Константні значення можна присвоїти всім або декільком елементам переліку:
enum RGBColors {Red = 1, Green = 128, Blue = 255};
enum Colors {RED = 1, GREEN, BLUE = 5};
Можна оголошувати змінні, які будуть мати визначений переліків тип. Наприклад, після оголошення
enum days {Mon, Tue, Wed, Thu, Fri, Sat, Sun};
enum days d1;
змінна d1 може набувати значення кожної з констант переліку days. Змінні переліскового типу можна оголошувати окремо, як у попередньому прикладі, і разом з оголошенням переліку:
enum days {Mon, Tue, Wed, Thu, Fri, Sat, Sun} d1, d2, d3;