ЗМІСТ
Передмова 7
Розділ 1. БАЗОВІ ЕЛЕМЕНТИ МОВИ 11
Алфавіт 11
Лексеми 14
Запитання для самоконтролю 18
Розділ 2. СТРУКТУРА С-ПРОГРАМИ. ВИКОНАННЯ ПРОГРАМ 19
Приклад короткої програми 19
Структура програми 22
Запис та оформлення програми 25
Етапи виконання програми 27
Запитання та завдання для самоконтролю ЗО
Розділ 3. ТИПИ ДАНИХ 31
Класифікація типів даних 31
Цілочислові типи 32
Дійсні типи 36
Описи змінних 38
Переліки 39
Запитання та завдання для самоконтролю 42
Розділ 4. ВИРАЗИ ТА ОПЕРАЦІЇ 43
Порядок виконання операцій 46
Арифметичні операції 47
Порозрядні операції 48
Операції порівняння 51
Логічні операції 52
Операції присвоєння 53
Умовна операція 57
Операція розміру sizeof 58
Узгодження типів у виразах 58
Стандартні математичні функції 62
Макроси з параметрами 63
Запитання та завдання для самоконтролю 64
Розділ 5. ФОРМАТНЕ ВИВЕДЕННЯ ТА ВВЕДЕННЯ ДАНИХ 66
Форматне виведення даних 67
Форматне введення даних 75
Запитання та завдання для самоконтролю 83
Розділ 6. ОПЕРАТОРИ 85
Оператори-вирази 86
Умовні оператори 87
Умовний оператор if 87
Оператор вибору switch 90
Завершення роботи програми функцією exit() 93
6.3. Оператори циклу 94
6.3.1. Оператор for „ 94
Оператор while 100
Оператор do-while 101
6.4. Оператори переходу 102
Оператор goto 103
Оператор break 103
Оператор continue 104
Оператор return 105
6.5. Використання псевдовипадкових чисеп 106
Запитання та завдання для самоконтролю 109
Розділ 7. ВКАЗІВНИКИ 112
Оголошення вказівників, звертання до даних через вказівники 112
Адресна арифметика 117
void-вказівники. Типізація вказівників 120
Запитання та завдання для самоконтролю 124
Розділ 8. МАСИВИ 125
8.1. Одновимірні масиви 125
Оголошення та ініціалізація масивів 126
Звертання до елементів масиву через індекси та через вказівники 127
8.2. Багатовимірні масиви 131
Розташування в пам'яті та ініціалізація 131
Вказівники у багатовимірних масивах 134
Запитання та завдання для самоконтролю 140
Розділ 9. СИМВОЛЬНІ РЯДКИ 141
Оголошення та ініціалізація символьних рядків 141
Звертання до елементів символьних рядків 143
Введення/виведення символів і символьних рядків 144
Введення/виведення символів 145
Введення/виведення символьних рядків 146
9.4. Бібліотечні функції для роботи з символами та символьними рядками 150
Функції класифікації і перетворення символів 150
Функції операцій над символьними рядками 152
Функції перетворення рядків символів у числа та зворотних перетворень . 155
9.5. Масиви символьних рядків і масиви вказівників 157
Масиви символьних рядків 157
Масиви вказівників на символи рядків 159
Збереження символьних рядків у динамічній пам'яті 160
Запитання та завдання для самоконтролю 162
Розділ 10. СТРУКТУРИ ТА ОБ'ЄДНАННЯ 164
10.1. Структури 164
Оголошення та ініціалізація структур 164
Розмір структури. Операція присвоєння для структур 167
Вкладені структури, масиви структур, вказівники на структури 168
Звертання до елементів структур 170
Перейменування типів 175
Об'єднання 176
Поля бітів 179
Запитання та завдання для самоконтролю 182
Розділ 11. ФУНКЦІЇ 183
Структура функцій 184
Виклик функції. Прототипи функцій 187
Взаємодія фактичних і формальних параметрів функції 190
inline-функції 194
Масиви та символьні рядки як параметри функцій 195
Масиви - параметри функцій 195
Символьні рядки - параметри функцій 197
Робота з параметрами командного рядка 202
Багатовимірні масиви як параметри функцій 205
Опрацювання структур у функціях 209
Вказівникитіа функції 212
Оголошення вказівника на функцію. Звертання через вказівник 212
Вказівник на функцію як параметр функцій 213
Функції, що повертають вказівник на функцію 216
Масиви вказівників на функцію 218
Рекурсивні функції 222
Функції з неоголошеними параметрами 227
Безпосереднє звертання до неоголошених параметрів 228
Макрозасоби для роботи з неоголошеними параметрами 230
Запитання та завдання для самоконтролю 232
Розділ 12. КЛАСИ ПАМ'ЯТІ ДАНИХ 235
Клас пам'яті, час існування та видимість об'єкта 235
Специфікатори класів пам'яті 238
Багатофайлові програми 242
Запитання та завдання для самоконтролю 244
Розділ 13. РОБОТА З ДАНИМИ В ДИНАМІЧНІЙ ПАМ'ЯТІ 246
Стандартні функції динамічного виділення пам'яті 247
Використання масивів вказівників на динамічні дані 250
Приклад застосування статичного масиву вказівників 250
Створення динамічного масиву вказівників 253
13.3. Динамічні списки 257
Однозв'язні списки , 259
Двозв'язні лінійні списки , 268
13.4. Двійкові дерева 278
Запитання та завдання для самоконтролю 294
Розділ 14. МОДЕЛІ ПАМ'ЯТІ BORLAND С. КОРОТКІ Й ДОВГІ ВКАЗІВНИКИ 296
Сегментна організація пам'яті 296
Моделі розподілу пам'яті 298
Короткі та довгі вказівники. Модифікатори вказівників 299
Безпосереднє програмування відеопам'яті 304
Особливості звертання до динамічної пам'яті через функцГі' BcrtajuJ C 307
Запитання та завдання для самоконтролю , 310
Розділ 15. ОБМІН ДАНИМИ З ФАЙЛАМИ 311
Файли і потоки, буферизація даних 312
Групи функцій для роботи з потоками 313
Відкриття/закриття потоків 314
Стандартні потоки, перескерування потоків 316
Функції потокового введення/виведення даних 317
Посимвольний обмін даними 318
Файловий обмін рядками символів 320
Обмін блоками даних 322
Форматне введення/виведення даних 324
Встановлення поточної позиції файла 326
Функції аналізу помилок 328
Керування буферизацією даних 330
Витирання та перейменування файлів 332
15.10. Інші засоби для роботи з файлами 335
Функції <dir.h> для роботи з каталогами та файлами 335
Низькорівневе звертання до файлів 335
Запитання та завдання для самоконтролю 337
Розділ 16. КОНСОЛЬНИЙ ОБМІН ДАНИМИ 339
16.1. Керування консольним виведенням текстової інформації 340
Встановлення атрибутів символів 341
Формування текстових вікон 344
Виведення тексту у вікно екрана 350
Редагування рядків вікна 352
Керування позицією та формою текстового курсора 353
16.2. Консольне введення даних 354
Короткий опис процесу введення даних з клавіатури 354
Функції консольного введення даних 356
Аналіз стану клавіш-модифікаторів 360
Запитання та завдання для самоконтролю 361
Розділ 17. ДИРЕКТИВИ ПРЕПРОЦЕСОРА 363
Директива включення #include 364
Директиви макропідстановок #define та #undef 365
Текстові макропідстановки 365
Макроси з параметрами 366
Операції # та ## у директиві #define 368
Директива #undef 369
17.3. Директиви умовної компіляції 370
Директиви #if, #else, #elif та #endif 370
Директиви #ifdef, #ifndef 372
Стандартні макроси 374
Перегляд результатів препроцесування 375
Інші директиви препроцесора 377
Запитання та завдання для самоконтролю 379
Додаток 1. Таблиці кодування символів 380
Додаток 2. Функції бібліотеки Borland C 386
Додаток 3. Нове в стандарті С-99 417
Список літератури 426
Предметний покажчик 427





























































































































































































































































































































































































































Літерою В в узагальнених найменуваннях розширених типів позначено роз-рядність відповідного типу, вона може становити 8, 16, 32 або 64 біти. Наприклад, int_f ast32_t - це найбільш швидкий із цілих типів, розмір яких не менший за чотири байти.
У <stdint. h> визначено також два макроси з параметрами:
intB_C (вираз-параметр) uint5_C (вираз-параметр)
Результатом застосування цих макросів є число, яким можна записати значення виразу-параметра в формі 5-розрядного цілого зі знаком чи без знака відповідно.
Операції з широкими символами. До складу бібліотек С-99 включено нові заголовні файли <wchar. h> і <wctype. h>, макроси та функції яких дають змогу використовувати в С-програмах т. зв. широкі символи {wide-characters). Ці символи введено в мову С у 1995 р. (Поправка 1) для підтримки багатолітерних національних мов, насамперед азійських.
Функції, що опрацьовують широкі символи, оперують з типом wchar_t, задекларованим через typedef (найчастіше він встановлюється рівнозначним двобайтовому цілому типу unsigned short int). Крім wchar_t задекларовано допоміжні типи wint_t, wctrans_t та wctype_t.
Бібліотека, пов'язана зі заголовним файлом <wchar. h>, зберігає великий набір функцій. Вони забезпечують введення та виведення широких символів, реалізують операції над рядками та масивами широких символів (подібні до операцій, що оголошені в <string.h> і <mem.h>), виконують перетворення двобайтових символів і рядків широких символів у багатобайтові рядки, а також реалізують ряд інших операцій.
У заголовному файлі <wctype.h> записано прототипи функцій, які призначені для класифікації та перетворення широких символів. Ці функції аналогічні до функцій, оголошених у <ctype. h>. З переліком функцій опрацювання широких і багатобайтових символів можна ознайомитися в [24].
Список літератури
Белецкий Я. Энциклопедия языка Си: Пер. с польск. - М.: Мир, 1992. - 686 с:
Березин Б.И., Березин СБ. Начальный курс С и C++. - М.: Диалог-МИФИ, 1998. - 288 с.
Бочков С. О. Язык программирования Си для персонального компьютера. —М.: Диалог, 1990.-384 с.
Вирт Н. Алгоритмы и структуры данных: Пер. с англ. - СПб.: Невский диалект, 2001. - 352 с.
Джамса К. 1001 совет по C/C++. Настольная книга программиста: Пер. с англ. - М.: Март-Бином Универсал, 1997. - 784 с.
Джонс Б., Эйткен П. Освой самостоятельно С за 21 день. Пер. с англ. - М.: Изд. дом "Вильяме", 2003. - 800 с.
Касаткин А.И., Вальвачев А.Н. Профессиональное программирование на языке Си. От Turbo С к Borland C++. Справочное пособие. - Минск: Вышэйшая школа, 1992. - 240 с.
Касаткин А.И., Вальвачев А.Н. Профессиональное программирование на языке Си. Управление ресурсами. - Минск: Вышэйшая школа, 1992. - 432 с.
Керниган Б., Пайк Р. Практика программирования: Пер. с англ. - СПб.: Невский диалект, 2001.-381 с.
Керниган Б., Ритчи Д. Язык программирования Си: Пер. с англ. - М.: Финансы и статистика, 1992.-272 с.
Керниган Б., Ритчи Д. Язык программирования С: Пер. с англ. - Изд. дом "Вильяме", 2005.-304 с.
Кормен Т. и др. Алгоритмы: построение и анализ: Пер. с англ. - Изд. дом "Вильяме", 2005. - 1296 с.
Кнут Д.Е. Искусство программирования. Т.2. Получисленные алгоритмы: Пер. с англ. - М.: Изд. дом "Вильяме", 2004. - 824 с.
Кнут Д.Е. Искусство программирования. Т.З. Сортировка и поиск: Пер. с англ. - М.: Изд. дом "Вильяме", 2004. - 780 с.
Подбельский В.В., Фомин С.С. Программирование на языке Си. - М.: Финансы и статистика, 1999. - 660 с.
Подбельский В.В. Практикум по программированию на языке Си. - М.: Финансы и статистика, 2004. - 576 с.
Прата С. Язык программирования С. Лекции и упражнения: Пер. с англ. - СПб.: ООО "ДиаСофт ЮП", 2002. - 896 с.
Тондо К., Гимпел С. Язык Си. Книга ответов: Пер. с англ. - М.: Финансы и статистика, 1994.-157 с.
Трой Д. Программирование на языке Си для персонального компьютера IBM PC: Пер. с англ. - М.: Радио и связь, 1991. - 432 с.
Троценко B.C., Чаленко П.Й., Ставровський А.Б. Техніка програмування мовою Сі. К.: Либідь, 1993.-224 с.
21.Уинер Р. Язык Турбо Си: Пер. с англ. - М.: Мир, 1991. - 384 с.
22. Уэйт Р., Прата С, Мартин Д. Язык Си. Руководство для начинающих: Пер. с англ. -М.:
Мир, 1988.-512 с. 23.Хэзфилд Р., Кирби Л. и др. Искусство программирования на Си. Фундаментальные
алгоритмы, структуры данных и примеры приложений. Энциклопедия программиста:
Пер. с англ. - К.: Изд-во "ДиаСофт", 2001. - 736 с.
Шилдт Г. Полный справочник по С: Пер. с англ. - М.: Изд. дом "Вильяме", 2002. - 704 с.
Юлин В.А., БулатоваИ.Р. Приглашение к Си. -Минск: Вышэйшая школа, 1990.-224 с.