Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Part1.doc
Скачиваний:
1
Добавлен:
15.12.2019
Размер:
334.85 Кб
Скачать

Міністерство освіти і науки України

Сумський державний університет

Бабій М.С. , Чекалов О.П.

Теорія програмування

Рекомендовано Міністерством освіти і науки України як

навчальний посібник для студентів вищих навчальних закладів

Суми

Видавництво СумДУ

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]