Програмування С, С++теорія та практика (частина 2)
ЗМІСТ
Передмова............................................................................. 3
Про авторів............................................................................ 4
Частина 1. Мова програмування Сі...................................... 5
1.1 Історія виникнення.............................................................................. 5
1.2 Елементи мови Сі................................................................................. 6
1.2.1 Алфавіт................................................................... 6
1.2.2 Ідентифікатори....................................................... 6
1.2.3 Константи............................................................... 7
1.2.4 Коментарі............................................................... 9
1.2.5 Ключові слова........................................................ 9
1.3 Структура програми. Базові типи даних...................................... 9
1.3.1 Функція таіп() : з цього все починається.............. 9
1.3.2 Базові типи даних................................................ 10
1.3.3 Перетворення типу............................................... 12
1.3.4 Функції введення та виведення........................... 14
1.3.5 Директиви включення.......................................... 17
1.4 Основні операції................................................................................ 19
1.4.1 Арифметичні операції.......................................... 19
1.4.2 Операції присвоювання....................................... 21
1.4.3 Операції порівняння............................................ 22
1.4.4 Логічні операції.................................................... 23
1.4.5 Порозрядні операції (побітові операції).............. 24
1.4.6 Операція слідування (кома)................................. 25
1.4.7 Умовна операція ?:.............................................. 26
1.4.8 Операція 5ігеоГ()................................................... 26
1.5 Основи алгоритмізації...................................................................... 27
1.5.1 Алгоритми та їх властивості................................ 27
1.5.2 Блок-схеми........................................................... 28
Базові алгоритмічні конструкції:................................ 29
1.6 Оператори........................................................................................... 31
1.6.1 Оператор розгалуження іГ................................... 32
1.6.2 Оператор 5МГЇСІ1................................................. 34
1.6.3 Оператор циклу з передумовою міііїе................. 36
1.6.4 Оператор циклу з постумовою йо ................. міііїе 37
1.6.5 Оператор розриву Ьгеак...................................... 38
1.6.6 Оператор продовження сопїіпие......................... 39
1.6.7 Оператор циклу Гог.............................................. 39
1.6.8 Оператор переходу доЬ....................................... 42
1.6.9 „Порожній” оператор........................................... 42
1.6.10 „Складений” оператор 43
1.7 Тип перерахування епит............................................................... 43
1.8 Покажчики......................................................................................... 44
1.8.1 Основні відомості про покажчики....................................... 44
1.8.2 Моделі пам'яті.......................................................................... 47
1.8.3 Основні операції над покажчиками................................... 48
1.8.4 Багаторівнева непряма адресація...................................... 53
1.8.5 Операції над покажчиками................................................... 55
1.8.6 Проблеми, пов'язані з покажчиками................................... 58
1.9 Масиви .............................................................................................. 61
1.9.1 Основні поняття....................................................................... 61
1.9.2 Оголошення та звертання в одновимірних масивах.... 64
1.9.3 Оголошення та звертання до багатовимірних масивів ...66
1.10 Масиви покажчиків......................................................................... 69
1.10.1 Робота з великими масивами............................................... 69
1.10.2 Вільні масиви та покажчики................................................. 70
1.11 Символьні рядки.............................................................................. 71
1.11.1 Основні відомості про представлення рядків................... 71
1.11.2 Функції роботи з рядками..................................................... 73
1.12 Основні методи сортування масивів.......................................... 76
1.12.1 Метод бульбашкового сортування.................................... 76
1.12.2 Сортування методом вибору............................................... 77
1.12.3 Сортування вставками........................................................... 78
1.12.4 Швидке сортування................................................................ 79
1.13 Структури ......................................................................................... 80
1.13.1 Оголошення структури.......................................................... 80
1.13.2 Масиви структур..................................................................... 84
1.13.3 Бітові поля................................................................................. 87
1.14 Об’єднання (ипіоп).......................................................................... 88
1.15 Файлові потоки................................................................................ 89
1.15.1 Текстові файли......................................................................... 90
1.15.2 Двійкові файли.......................................................................... 92
1.15.3 Використання дескрипторів файлів................................... 95
1.16 Функціональний підхід.................................................................. 99
1.16.1 Функції..................................................................................... 102
1.16.2 Функції, що не повертають значення.............................. 103
1.16.3 Передача параметрів........................................................... 105
1.16.4 Функції із змінним числом параметрів............................ 109
1.16.5 Рекурсивні функції................................................................ 110
1.16.6 Покажчики на функції.......................................................... 112
1.16.7 Класи пам’яті......................................................................... 115
1.16.8 Додаткові можливості функції таіп()............................... 118
1.17 Складені оголошення................................................................... 120
1.17.1 Описи з модифікаторами..................................................... 122
1.17.2 Модифікатори сопзї і уоіаїііе............................................. 124
1.17.3 Модифікатори ссіесі і разсаї 125
1.17.4 Модифікатори пеаг, 1аг, Ииде 126
1.17.5 Модифікатор іпїеггирї 127
1.18Директиви препроцесора............................................................. 127
1.18.1 Директива #іпсїиСе 127
1.18.2 Директива #Се1іпе 128
1.18.3 Директива #ипСе1 130
1.18.4 Директиви #і1, #еїі1, #еїзе, #епСі1 131
1.18.5 Директиви #і1Се1 і #і1пСе1 133
1.18.6 Директива #їіпе 133
1.19Динамічні структури даних......................................................... 134
1.19.1 Лінійні списки 134
1.19.2 Стеки 141
1.19.3 Черги 142
1.19.4 Двійкові дерева 143
Частина 2. Мова програмування Сі++............................................................ 147
2.1 Історія виникнення......................................................................... 147
2.2 Відмінності мов Сі та Сі++, не пов’язані з
використанням об’єктів......................................................................... 147
2.2.1 Ключові слова......................................................................... 148
2.2.2 Область опису змінних......................................................... 148
2.2.3 Використання коментарів.................................................... 148
2.2.4 Аргументи по замовчуванню.............................................. 149
2.2.5 Перевантаження функцій..................................................... 150
2.2.6 Операція розв’язання видимості......................................... 153
2.2.7 Використання іпїіпе-специфікатору.................................. 154
2.2.8 Анонімні об’єднання.............................................................. 155
2.2.9 Оператори розподілу пам’яті.............................................. 156
2.3 Порівняння функціонального та об’єктного підходу ...156
2.4 Об’єктно - орієнтоване програмування. Головні
принципи об'єктного підходу.............................................................. 160
2.4.1 Абстрагування........................................................................ 162
2.4.2 Обмеження доступу............................................................... 163
2.4.3 Модульність............................................................................. 163
2.4.4 Ієрархія..................................................................................... 164
2.5 Класи.................................................................................................. 165
2.5.1 Протокол опису класу.......................................................... 166
2.5.2 Створення об’єктів. Доступ до полів та методів............. 169
2.5.3 Використання специфікаторів доступу класу............... 172
2.5.4 Правила визначення конструкторів.................................. 173
2.5.5 Методи ініціалізації елементів у конструкторах........... 175
2.5.6 Деструктори............................................................................. 178
2.5.7 Порядок виклику конструкторів та деструкторів.......... 180
2.5.8 Статичні члени класу............................................................ 180
2.6 Успадкування................................................................................. 181
2.6.1 Механізм успадкування....................................................... 181
2.6.2 Керування доступом при успадкуванні.......................... 184
2.6.3 Друзі-класи та друзі-функції............................................... 189
2.7 Поліморфізм..................................................................................... 193
2.7.1 Віртуальні функції................................................................. 193
2.7.2 Чисті віртуальні функції та абстрактні базові класи.. 197
2.7.3 Розміщення УРТР та таблиці УМТ у пам'яті.................. 200
2.7.4 Віртуальні деструктори....................................................... 202
2.8 Перевантаження операцій........................................................... 204
2.9 Шаблони.......................................................................................... 209
2.9.1 Параметризовані функції..................................................... 209
2.9.2 Параметризовані класи........................................................ 211
2.10 Класи потоків С++......................................................................... 216
2.10.1Визначені об'єкти-потоки.................................................... 217
2.10.2Операції поміщення та вилучення.................................... 218
2.10.3Переадресація введення та виведення............................. 220
2.10.4Визначення потокових операцій як дружніх................. 221
2.10.5Функції керування процесом І/О....................................... 221
2.10.6Прапорці форматування...................................................... 222
2.10.7Маніпулятори......................................................................... 223
2.10.8Файлові потоки....................................................................... 225
2.11 Контейнерні класи......................................................................... 227
2.12 Вкладені класи............................................................................... 229
2.13 Локальні класи............................................................................... 231
2.14 Обробка виняткових ситуацій.................................................... 232
Частина 3. Перелік лабораторних робіт........................................... 236
Вимоги щодо оформлення робіт........................................................ 236
I семестр (мова програмування Сі)................................................... 237
Лабораторна робота №1................................................................ 237
Лабораторна робота №2................................................................ 240
Лабораторна робота №3................................................................ 245
Лабораторна робота №4................................................................ 253
Лабораторна робота №5................................................................ 260
Задачі на складання ефективних алгоритмів.......................... 265
Задачі, що пропонувалися на Всеукраїнських олімпіадах ....272
II семестр (мова програмування Сі++) 276
Лабораторна робота №1................................................................ 276
Лабораторна робота №2............................................................... 277
Лабораторна робота №3............................................................... 279
Лабораторна робота №4-5 .......................................................... 283
Частина 4. Додатки.................................................................. 292
4.1 Вбудований відлагоджувач програм....................................... 292
4.2 Таблиця символів АЗСІІ.............................................................. 297
____________________________________________________ 321
4.3 Розширені коди клавіатури........................................................... 298
4.4 Функції стандартної бібліотеки .................................................. 299
4.5 Пріоритети операцій....................................................................... 312
4.6 Основні комбінації клавіш середовища ТС.............................. 313
Література............................................................................... 317
Зміст.................................................................................... 318
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
