
Міністерство освіти і науки України
Сумський державний університет
Бабій М.С. , Чекалов О.П.
Теорія програмування
Рекомендовано Міністерством освіти і науки України як
навчальний посібник для студентів вищих навчальних закладів
Суми
Видавництво СумДУ
2009
УДК 004.42(075.8)
Б12
Рекомендовано Міністерством освіти і науки України
(лист № 1.4/18-Г-2360 від 14.11.2008 р.)
Рецензенти:
д-р техн. наук, проф. Є.А. Лавров (Національний аграрний університет, м. Суми);
д-р фіз.-мат. наук, проф. К.Г. Малютін (Національний аграрний університет, м. Суми);
д-р фіз.-мат. наук, доцент. Д.О. Харченко (Інститут прикладної фізики НАН України, м. Суми)
Бабій М.С., Чекалов О.П.
Б12 Теорія програмування: Навчальний посібник.-Суми:
Вид-во СумДУ, 2009.- 181с.
ISBN
Навчальний посібник є вступом до теорії програмування і містить основи формальних мов і граматик, огляд регулярних, контекстовільних і контекстозалежних мов. Показано зв’язок граматик з автоматами і методи перетворень автоматів. Наводяться основи синтаксичного аналізу програм, у тому числі LR-аналізу. Розглянуто методології програмування: імперативну, об’єктно-орієнтовану, функціональну і логічну. Даються основи типізації даних із сучасної точки зору, розглядаються способи верифікації програм. Опис супроводжується прикладами.
Навчальний посібник призначений для студентів спеціальності „Інформатика”, а також може бути корисним для спеціалістів у галузі інформатики і прикладної математики.
УДК 004.42(075.8)
© М.С.Бабій, О.П. Чекалов, 2009
ISBN © Вид-во СумДУ, 2009
ЗМІСТ
C.
1 МАТЕМАТИЧНІ ОСНОВИ ТЕОРІЇ ПРОГРАМУВАННЯ . . . . . . . . . . . . . . . . 1.1 Множини . . . . . . . . . . . . . . . . . . . . . . 1.2 Відношення . . . . . . . . . . . . . . . . . . . . 1.3 Порядок, структури . . . . . . . . . . . . . . . . 1.4 Універсальні алгебри. . . . . . . . . . . . . . . . 2 РЕГУЛЯРНІ МОВИ . . . . . . . . . . . . . . . . . 2.1 Мови . . . . . . . . . . . .. . . . . . . . . . . . . 2.2 Регулярні вирази . . . . . . . . . . . . . . . . . . 2.3 Недетермінований скінченний автомат. . . . . . 2.4 Зв’язок автоматів з регулярними виразами . . . 3 КОНТЕКСТОВІЛЬНІ МОВИ . . . . . . . . . . . . 3.1 Дерева розбору . . . . . . . . . . . . . . . . . . . 3.2 Неоднозначні граматики. . . . . . . . . . . . . . 3.3 Видалення лівої рекурсії . . . . . . . . . . . . . 3.4 Ліва факторизація . . . . . . . . . . . . . . . . . 3.5 Магазинні автомати . . . . . . . . . . . . . . . . 4 СИНТАКСИЧНИЙ АНАЛІЗ . . . . . . . . . . . . 4.1 Спадний аналіз . . . . . . . . . . . . . . . . . . . 4.2 Предиктивний аналізатор . . . . . . . . . . . . . 4.3 Функції first і follow . . . . . . . . . . . . . . . . 4.4 Побудова таблиць предиктивного аналізу . . . . 4.5 LL(1)-граматики . . . . . . . . . . . . . . . . . . 4.6 Висхідний аналіз . . . . . . . . . . . . . . . . . . 4.7 Обрізання основ . . . . . . . . . . . . . . . . . . 4.8 LR(k)-аналізатори . . . . . . . . . . . . . . . . . 4.9 LR-граматики . . . . . . . . . . . . . . . . . . . 4.10 Побудова таблиць SLR-аналізу . . . . . . . . . 4.11 Побудова канонічних таблиць LR-аналізу . . . |
5 5 8 13 18 22 22 28 31 37 47 47 49 55 57 59 66 66 68 71 74 75 76 78 82 88 89 101 |
5 ЛЯМБДА-ВИРАХУВАННЯ І ТИПІЗАЦІЯ . . . . 5.1 Лямбда-вирахування. . . . . . . . . . . . . . . . 5.2 Комбінатори . . . . . . . . . . . . . . . . . . . . 5.3 Лямбда-вирахування і мови . . . . . . . . . . . 5.4 Типи даних . . . . . . . . . . . . . . . . . . . . . 5.5 Типи і підтипи. . . . . . . . . . . . . . . . . . . . 5.6 Абстрактний тип даних. . . . . . . . . . . . . . . 6 МЕТОДОЛОГІЇ ПРОГРАМУВАННЯ . . . . . . . . 6.1 Основні методології . . . . . . . . . . . . . . . . 6.2 Імперативне програмування . . . . . . . . . . . . 6.3 Об’єктно-орієнтоване програмування . . . . . . 6.4 Найпростіше вирахування типів з уточненням λ≤ 6.5 Вирахування типів з перетинаннями λ ^ . . . . . 6.6 Вирахування з обмеженою квантифікацією F≤ 6.7 Функціональне програмування . . . . . . . . . . 6.8 Логічне програмування . . . . . . . . . . . . . . 7 ВЕРИФІКАЦІЯ ПРОГРАМ. . . . . . . . . . . . . 7.1 Семантики мов програмування . . . . . . . . . . 7.2 Правила Хоара і верифікація . . . . . . . . . . . 8 АЛГОРИТМІЧНО НЕРОЗВ'ЯЗНІ ПРОБЛЕМИ . . 8.1 Нерозв’язність . . . . . . . . . . . . . . . . . . . 8.2 Машина Тюринга і мови . . . . . . . . . . . . . . СПИСОК ЛІТЕРАТУРИ . . . . . . . . . . . . . . . .
|
111 111 118 120 124 126 128 132 132 132 133 135 136 137 139 146 152 152 157 168 168 173 180 |