Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Бичков - Основи сучасного програмування.doc
Скачиваний:
69
Добавлен:
07.03.2016
Размер:
2.67 Mб
Скачать

Передмова 3

ВСТУП 5

1. ОСНОВИ АЛГОРИТМІЗАЦІЇ 12

1.1. Поняття алгоритму 12

1.2. Класифікація внутрішніх структур алгоритмів 14

1.3. Складність алгоритмів 16

1.4. Складність задач 19

2. Форма Бекуса – Наура 26

3. ТЕХНОЛОГІЯ ЗАПИСУ АЛГОРИТМІВ ЗА ДОПОМОГОЮ

МОВИ ПРОГРАМУВАННЯ С 28

3.1. Елементи мови 28

3.2. Структура С-програми 31

3.3. Описувачі 31

3.4. Основні операції мови С 32

3.5. Оператори мови С 37

3.5.1. Прості оператори 37

3.5.2. Умовний оператор 38

3.5.3. Оператор циклу for 39

3.5.4. Оператори do-while, while 40

3.5.5. Оператор continue 41

3.5.6. Оператор-перемикач switch 41

3.5.7. Оператор break 42

3.5.8. Оператор goto 42

3.5.9. Оператор return 43

3.6. Директиви препроцесору та вказівки компілятору 43

3.6.1. Директива препроцесору #define 44

3.6.2. Директива #undef [<ім’я>] 46

3.6.3. Директива #include 46

3.6.4. Директиви умовної компіляції

#if, #elif, #else, #endif 47

3.6.5. Директива #line 48

3.6.6. Директива #error <повідомлення> 49

3.7. Описувачі з модифікаторами 49

3.7.1. Моделі пам'яті 49

3.7.2. Модифікатори типу доступу в пам'яті 49

3.7.3. Модифікатори const, volatile,

cdecl, pascal, interrupt 50

4. ПРИНЦИПИ ТИПІЗАЦІЇ ДАНИХ 53

4.1. Прості типи даних 54

4.2. Похідні типи 55

4.3. Еквівалентність типів 57

4.4. Успадкування атрибутів 58

4.5. Перераховні типи 59

4.6. Логічні типи 59

4.7. Символьні типи 60

4.8. Числові типи 60

4.9. Структурні типи даних 60

4.9.1. Масиви 61

4.9.2. Структури 62

4.10. Деякі особливості типів даних С 62

4.10.1. Базові типи даних 62

4.10.2. Перетворення типів 63

4.10.3. Засіб typedef 64

4.10.4. Покажчики та масиви 65

4.10.5. Структури та об'єднання 82

5. ЗОБРАЖЕННЯ ЧИСЕЛ У КОМП'ЮТЕРІ 96

5.1. Системи числення 97

5.2. Правила переведення чисел з однієї системи числення в іншу 99

5.3. Правило визначення точності зображення 100

5.4. Двійкова арифметика 103

5.4.1. Додавання двійкових чисел 103

5.4.2. Зображення від'ємних чисел 104

5.4.3. Віднімання двійкових чисел 107

5.4.4. Множення двійкових чисел 108

5.4.5. Ділення двійкових чисел 109

5.5. Ознака переповнення розрядної сітки

при арифметичних операціях 110

5.6. Зображення цілих чисел 111

5.7. Зображення дійсних чисел 112

5.8. Керування машинним зображенням чисел

та особливості виконання арифметичних операцій 117

6. РЕАЛІЗАЦІЯ КОНЦЕПЦІЇ

СТРУКТУРНОГО ПРОГРАМУВАННЯ В МОВІ С 122

6.1. Оголошення та визначення функцій 122

6.2. Формальні та фактичні параметри 123

6.3. Функції зі змінною кількістю параметрів 124

6.4. Рекурсія 126

6.5. Параметри функції MAIN 127

6.6. Лiтернi покажчики та функції 127

6.7. Час життя та область дії. Оголошення та визначення 129

6.8. Класи пам'яті 130

6.9. Введення–виведення С. Файли та потоки 140

6.9.1. Функції введення–виведення верхнього рівня 141

6.9.2. Функції введення–виведення

консольного термінала та порту 146

6.9.3. Функції введення–виведення нижнього рівня 147

7. ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ ТА С++ 167

7.1. Елементи концепції обєктно-орієнтованого програмування 167

7.2. Від структур ANSI С до класів С++ 169

7.3. Опис протоколу класу 172

7.4. Деякі особливостi С++ 176

7.4.1. Коментарі 176

7.4.2. Прототипи функцій 176

7.4.3. Операція розширення області видимості 177

7.4.4. Оголошення в операторах 177

7.4.5. Перевантаження функцій 178

7.4.6. Значення формальних параметрів за умовчанням 178

7.4.7. Посилання й покажчики 179

7.4.8. Специфікатор INLINE 182

7.4.9. Операції NEW і DELETE 183

7.4.10. Покажчик на void 183

7.4.11. Зв'язування зі збереженням типів 184

7.4.12. Про структури та об'єднання 184

7.5. Функції-члени класу 185

7.5.1. Функції-члени в межах

і за межами формального опису класу 185

7.5.2. Покажчик this 186

7.5.3. Перевантаження функцій-членів.

Параметри за умовчанням 187

7.6. Конструктори та деструктори 189

7.6.1. Поняття про конструктори 189

7.6.2. Деструктори 192

7.6.3. Конструктор копіювання 194

7.7. Глобальні та локальні об'єкти 195

7.8. Статична пам'ять і класи 198

7.9. Успадкування 201

7.9.1. Синтаксична реалізація успадкування 201

7.9.2. Правила доступу до полів даних 202

7.9.3. Конструктори та деструктори в похідних класах 204

7.9.4. Використання заміщуючих функцій-членів 206

7.9.5. Похідні класи й покажчики 208

7.9.6. Ієрархія типів 208

7.9.7. Множинне успадкування 209

7.10. Віртуальні функції та класи 212

7.10.1. Віртуальні функції 212

7.10.2. Чисті віртуальні функції. Абстрактні класи 214

7.10.3. Віртуальні деструктори 216

7.10.4. Посилання як засіб для реалізації поліморфізму 217

7.10.5. Дещо про механізм віртуальних функцій 218

7.10.6. Віртуальні базові класи 219

7.11. Друзі 223

7.11.1. Дружні класи 223

7.11.2. Дружні функції 225

7.12. Перевантаження операцій 227

7.12.1. Загальний підхід 227

7.12.2. Перетворення типів 230

7.12.3. Перевантаження операції індексування масиву 232

7.12.4. Перевантаження операції виклику функції 234

7.12.5. Перевантаження операції доступу до члена класу 236

7.12.6. Перевантаження операцій інкремента й декремента 237

7.12.7. Перевантаження операцій

керування пам'яттю (NEW, DELETE) 238

7.12.8. Перевантаження операції присвоювання 239

8. ШАБЛОНИ С++ 241

8.1. Функціональні шаблони 241

8.1.1. Визначення й використання шаблонів функцій 241

8.1.2. Перевантаження шаблонів функції 243

8.1.3. Cпецiалiзованi функцiї шаблона 244

8.2. Шаблони класів 245

8.2.1. Визначення шаблонів класу 245

8.2.2. Константи й типи як параметри шаблона 246

8.2.3. Використання шаблонних класів 246

8.2.4. Спеціалізація шаблонів класу 248

9. АВТОМАТНА ТЕХНОЛОГІЯ програмування 255

СПИСОК ЛІТЕРАТУРИ 268