скачать doc
О Г Л А В Л Е Н И Е
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 3 |
| |
И АНАЛИЗ АЛГОРИТМА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 4 |
1.1. Основные определения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 4 |
1.2. Разработка алгоритма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 5 |
1.3. Метод математической индукции . . . . . . . . . . . . . . . . . . . . . . . . . . . | 7 |
1.4. Запись алгоритма и доказательство корректности . . . . . . . . . . . . . . | 10 |
1.5. Анализ алгоритма Евклида . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 12 |
1.6. Числа Фибоначчи и анализ алгоритма Евклида . . . . . . . . . . . . . . . . | 13 |
1.7. Бинарный алгоритм нахождения НОД . . . . . . . . . . . . . . . . . . . . . . . | 15 |
1.8. Неструктурированная версия бинарного алгоритма | |
нахождения НОД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 20 |
1.9. Сравнительные испытания алгоритмов нахождения НОД . . . . . . . . | 23 |
2. ОСНОВЫ АНАЛИТИЧЕСКОЙ ВЕРИФИКАЦИИ ПРОГРАММ . . . . . . | 28 |
2.1. Основные правила аналитической верификации программ . . . . . . | 28 |
2.2. Теорема о цикле, его инварианте и ограничивающей функции . . . | 35 |
2.3. Соотношение между хоаровскими инвариантами цикла и | |
индуктивными утверждениями Флойда . . . . . . . . . . . . . . . . . . . . . . . . . | 36 |
2.4. Алгоритм возведения в степень . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 40 |
3. ИНДУКТИВНЫЕ ФУНКЦИИ НА ПОСЛЕДОВАТЕЛЬНОСТЯХ . . . . . | 49 |
3.1. Последовательности и файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 49 |
3.2. Индуктивные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 51 |
3.3. Стационарные значения индуктивных функций . . . . . . . . . . . . . . . | 53 |
3.4. Индуктивные расширения функций . . . . . . . . . . . . . . . . . . . . . . . . . | 54 |
3.5. Примеры задач с индуктивными функциями . . . . . . . . . . . . . . . . . . | 55 |
4. КОРРЕКТНОСТЬ ПРОГРАММ ПРИ РАБОТЕ С МАССИВАМИ . . . . . . | 59 |
4.1. Кванторы и запись утверждений о массивах . . . . . . . . . . . . . . . . . . | 59 |
4.2. Правила вывода для цикла с параметром . . . . . . . . . . . . . . . . . . . . . | 63 |
4.3. Примеры программ работы с массивами . . . . . . . . . . . . . . . . . . . . . | 64 |
4.4. Задача разделения массива на две части . . . . . . . . . . . . . . . . . . . . . . | 68 |
4.5. Задача слияния упорядоченных массивов . . . . . . . . . . . . . . . . . . . . . | 70 |
4.6. Задачи перестановки и обращения сегментов массива . . . . . . . . . . | 72 |
4.7. Задача о максимальной равнине . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 82 |
5. ПОИСК В МАССИВЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 84 |
5.1. Линейный поиск . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 84 |
5.2. Разработка алгоритма бинарного поиска . . . . . . . . . . . . . . . . . . . . . | 86 |
5.3. Анализ алгоритма бинарного поиска . . . . . . . . . . . . . . . . . . . . . . . . | 88 |
5.4. Оптимизация программы бинарного поиска . . . . . . . . . . . . . . . . . . | 92 |
Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 96 |
Список условных обозначений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 97 |
Ивановский Сергей Алексеевич
РАЗРАБОТКА КОРРЕКТНЫХ ПРОГРАММ
Учебное пособие
Редактор Э. К. Долгатов
ЛР № 020617 от 24.06.98
------------------------------------------------------------------
Подписано в печать . Формат

Печать офсетная. Усл.печ.л. 5.81. Уч.-изд.л. 6.25.
Тираж 170 экз. Заказ
------------------------------------------------------------------
Издательство СПбГЭТУ «ЛЭТИ»
197376, С.-Петербург, ул. Проф. Попова, 5