
- •12. Класи пам'яті даних 100
- •13. Робота з файлами 106
- •14. Посилання 111
- •Склад мови
- •Алфавіт мови
- •Лексеми
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Символьні рядки
- •Знаки операцій, роздільники, коментарі
- •Типи даних
- •Класифікація типів даних
- •Цілочислові типи
- •Дійсні типи
- •Оголошення змінних і констант
- •Переліки
- •Структура програми
- •Функція main
- •Область дії змінної
- •Введення і виведення даних
- •Функції стандартної математичної бібліотеки
- •Вирази і операції
- •Поняття виразу, операнда, операції
- •Порядок виконання операцій
- •Арифметичні операції
- •Порозрядні операції
- •Операції порівняння
- •Логічні операції
- •Операції присвоєння
- •Умовна операція
- •Операція визначення розміру sizeof
- •Узгодження типів у виразах
- •Умовні оператори
- •Оператори
- •Умовний оператор if
- •Оператор вибору switch
- •Оператори циклу
- •Цикл з параметром. Оператор for
- •Цикл з передумовою. Оператор while
- •Цикл з постумовою. Оператор do while
- •Оператори переходу
- •Використання псевдовипадкових чисел
- •Одновимірні масиви
- •Багатовимірні масиви
- •Символьні рядки
- •Вказівники
- •Оголошення вказівника, операції, пов’язані з вказівниками
- •Адресна арифметика
- •Void – вказівники, типізація вказівників
- •Звертання до елементів масивів через вказівники
- •Масиви символьних рядків і масиви вказівників
- •Динамічне виділення пам’яті
- •Структури і об’єднання
- •Оголошення і ініціалізація структур
- •Звертання до елементів структур
- •Перейменування типів
- •Об’єднання
- •Поля бітів
- •Директиви препроцесора
- •Призначення директив препроцесора
- •Директива включення #include
- •Директиви макропідстановок #define I #undef
- •Директиви умовної компіляції
- •Директиви #ifdef, #ifndef
- •Функції
- •Структура функції
- •Виклик функцій. Прототипи функцій
- •Взаємодія фактичних і формальних параметрів функцій
- •Inline – функції
- •Масиви і символьні рядки як параметри функцій
- •Використання кваліфікатора const в оголошеннях параметрів
- •Багатовимірні масиви як параметри функцій
- •Опрацювання структур у функціях
- •Вказівники на функції
- •Рекурсивні функції
- •Класи пам'яті даних
- •Клас пам'яті, час існування і видимість об’єкта
- •Область дії глобальних і локальних змінних
- •Специфікатори класів пам'яті
- •Специфікатори глобальних змінних
- •Багатофайлові програми
- •Робота з файлами
- •Звертання до файлів
- •Послідовний запис до файлу і послідовне читання з файлу
- •Файли з довільним доступом
- •Посилання
- •Призначення посилань
- •Передача аргументів функцій як посилань
ЗМІСТ
1. Базові елементи мови програмування С++ 3
1.1. Склад мови 3
1.2. Алфавіт мови 3
1.3. Лексеми 4
1.4. Ключові слова 4
1.5. Ідентифікатори 5
1.6. Константи 5
1.7. Символьні рядки 5
1.8. Знаки операцій, роздільники, коментарі 6
2. Типи даних 7
2.1. Класифікація типів даних 7
2.2. Цілочислові типи 8
2.3. Дійсні типи 9
2.4. Оголошення змінних і констант 9
2.5. Переліки 10
3. Структура програми 11
3.1. Функція main 11
3.2. Область дії змінної 11
3.3. Введення і виведення даних 12
3.4. Функції стандартної математичної бібліотеки 13
4. Вирази і операції 14
4.1. Поняття виразу, операнда, операції 14
4.2. Порядок виконання операцій 16
4.3. Арифметичні операції 16
4.4. Порозрядні операції 17
4.5. Операції порівняння 18
4.6. Логічні операції 18
4.7. Операції присвоєння 19
4.8. Умовна операція 22
4.9. Операція визначення розміру sizeof 22
4.10. Узгодження типів у виразах 23
5. Умовні оператори 24
5.1. Оператори 24
5.2. Умовний оператор if 25
5.3. Оператор вибору switch 27
6. Оператори циклу 30
6.1. Цикл з параметром. Оператор for 30
6.2. Цикл з передумовою. Оператор while 35
6.3. Цикл з постумовою. Оператор do while 38
6.4. Оператори переходу 39
6.5. Використання псевдовипадкових чисел 41
7. Масиви 41
7.1. Властивості масивів в мові програмування С++ 41
7.2. Одновимірні масиви 42
7.3. Багатовимірні масиви 46
7.4. Символьні рядки 49
8. Вказівники 50
8.1. Оголошення вказівника, операції, пов’язані з вказівниками 50
8.2. Адресна арифметика 52
8.3. void – вказівники, типізація вказівників 54
8.4. Звертання до елементів масивів через вказівники 55
8.5. Масиви символьних рядків і масиви вказівників 59
8.6. Динамічне виділення пам’яті 63
9. Структури і об’єднання 64
9.1. Оголошення і ініціалізація структур 64
9.2. Звертання до елементів структур 68
9.3. Перейменування типів 72
9.4. Об’єднання 73
9.5. Поля бітів 75
10. Директиви препроцесора 77
10.1. Призначення директив препроцесора 77
10.2. Директива включення #include 77
10.3. Директиви макропідстановок #define i #undef 78
10.4. Директиви умовної компіляції 80
10.5. Директиви #ifdef, #ifndef 82
11. Функції 84
11.1. Структура функції 84
11.2. Виклик функцій. Прототипи функцій 85
11.3. Взаємодія фактичних і формальних параметрів функцій 86
11.4. inline – функції 89
11.5. Масиви і символьні рядки як параметри функцій 90
11.6. Використання кваліфікатора const в оголошеннях параметрів 92
11.7. Багатовимірні масиви як параметри функцій 93
11.8. Опрацювання структур у функціях 95
11.9. Вказівники на функції 97
11.10. Рекурсивні функції 98
12. Класи пам'яті даних 100
12.1. Клас пам'яті, час існування і видимість об’єкта 100
12.2. Область дії глобальних і локальних змінних 101
12.3. Специфікатори класів пам'яті 103
12.4. Специфікатори глобальних змінних 104
12.5. Багатофайлові програми 105
13. Робота з файлами 106
13.1. Звертання до файлів 106
13.2. Послідовний запис до файлу і послідовне читання з файлу 107
13.3. Файли з довільним доступом 109
14. Посилання 111
14.1. Призначення посилань 111
14.2. Передача аргументів функцій як посилань 112
Базові елементи мови програмування С++
Склад мови
У будь-якій мові можна виділити чотири основні елемента: символи, слова, словосполучення і речення. Такі самі елементи містить і алгоритмічна мова, тільки слова називають лексемами (елементарними конструкціями), словосполучення – виразами, речення – операторами. Лексеми складаються з символів, вирази – з лексем і символів, оператори – з символів, виразів і лексем (мал. 1.1). Лексеми утворюють з символів, вирази – з символів і лексем, оператори – з символів, лексем і виразів.
Мал. 1.1. Елементи мови програмування і зв’язок між ними
Алфавіт мови (символи мови) – це основні неподільні знаки, за допомогою яких пишуть всі тексти цією мовою. Лексема, або елементарна конструкція – мінімальна одиниця мови, яка має самостійне значення. Вираз задає правило обчислення певного значення. Оператор визначає повний опис певної дії. Оператори можна поділити на дві групи. Оператори першої групи виконують дії над даними, оператори другої групи використовуються для визначення даних.
Кожен елемент мови програмування визначається через його синтаксис та семантику. Синтаксичні визначення встановлюють правила побудови елементів мови програмування, семантика визначає їх зміст і правила використання. Об'єднана єдиним алгоритмом сукупність описів і операторів утворює програму на алгоритмічній мові. Для виконання програми її необхідно перетворити до виду, який може зрозуміти процесор, тобто у машинні коди. Цей процес називається компіляцією.
Алфавіт мови
Алфавіт мови програмування визначає набір символів, які можуть використовуватися для формування лексичних елементів програм. Всі символи алфавіту С++ можна поділити на три групи. До першої групи входять символи ключових слів і ідентифікаторів, до яких належать великі та малі літери латинської абетки, цифри, знак підкреслення. До другої групи входять символи, що використовуються як знаки операцій, символи пунктуації та роздільники:
+ - * / % = < > & | ! ~ ^ ? , . ; : ‘ “ ( ) [ ] { } # \
Третя група символів – це так звані неграфічні символи, кожен з яких має встановлений внутрішній код, як і символи першої і другої групи, але не має власного графічного позначення. До цієї групи належать символ пробілу та спеціальні керуючі символи, які ще називають ескейп-послідовностями: символ табуляції, нового рядка, нової сторінки тощо. Пробільні неграфічні символи використовуються для відокремлення лексем.
В оперативній пам'яті комп’ютера кожен символ зберігається як ціле двійкове число, значення якого відповідає коду цього символу. Найбільш поширеною системою кодування символів є таблиця ASCII – кодів (скорочення від American Standard Code for Information Interchange – американський стандартизований код для обміну інформацією). Згідно з цією системою кодування код символу є однобайтовим, що дає змогу занести в повну ASCII – таблицю 256 символів з кодами від 0 до 255.
Властивості кодування символів у ASCII – таблиці, що мають практичне застосування у програмуванні багатьох задач: коди символів цифр 0…9 розташовані послідовно у порядку зростання: 48…57; коди великих латинських літер A…Z і малих літер a…z записані послідовно в абетковому порядку, великі літери: 65…90, малі: 97…122; різниця кодів малих і відповідних великих латинських літер однакова і дорівнює 32.
Спеціальні керуючі символи (керуючі послідовності, ескейп – послідовності) позначають неграфічні символи, призначені для керування формою виведення даних і повідомлень. Їх можна записувати трьома способами: використовуючи символьну форму, вісімкове чи шістнадцяткове позначення. У всіх трьох варіантах запису першим символом послідовності є зворотна коса риска (лівий слеш, \).
У символьній формі ескейп – послідовності за рискою записується визначена для даного символу літера. Вісімкове позначення ескейп – послідовності складається з риски та однієї, двох або трьох вісімкових цифр (цифри від 0 до 7), що задають код даного символу. Шістнадцяткова форма ескейп – послідовності починається символами \х або \Х, за якими вказуються одна або дві шістнадцяткові цифри (цифри 0…9 або літери a…f або A…F). Так, для горизонтальної табуляції використовується ескейп – послідовність \t, ASCII код 9, \011 або \09, для переходу на новий рядок - \n, код 10 або \012 чи \х0а.
Як ескейп – послідовності записують також вказані нижче символи абетки, коли вони використовуються як окремі символьні константи або як елементи символьних рядків: \’ – позначення апострофа, \” – позначення лапок, \\ - позначення лівого слеша, \? позначення знака запитання. При використанні цих символів відсутність слеша може викликати неправильну інтерпретацію символьних рядків.
Через вісімкову та шістнадцяткову форму ескейп – послідовності можна записати довільний символ ASCII таблиці. Наприклад, ескейп – послідовність \0 позначає символ з кодом 0, тобто перший символ ASCII таблиці. Цей символ використовується у символьних рядках як ознака кінця рядка. Незважаючи на те, що в записах ескейп – послідвностей використовується два, три або чотири символи, вони позначають один символ стандартної кодової таблиці і розглядаються компілятором нарівні з іншими символами мови.