Название: Информатика Жанр: Информатика Рейтинг: Просмотров: 3381 |
4.4. основы безошибочного программирования
Основной недостаток традиционной практики составления программ для ЭВМ заключается в том, что при таком подходе никто не может гарантировать отсутствие в них ошибок. Особенностью традиционной практики является поиск ошибок в программах при их отладке на ЭВМ. Однако, так как число ошибок в программах заранее неизвестно, то неизвестна заранее и продолжительность отладки программ на ЭВМ. Более того даже после «завершения» отладки никто не может гарантировать отсутствие ошибок. Естественно, что использование таких программ, приводит к возникновению отказов, сбоев и получению неверных результатов. Структурный подход снижает количество ошибок в алгоритмах и программах. Однако и при этом подходе число ошибок также заранее неизвестно. Хотя структурная форма записи и упрощает поиск и исправление ошибок в текстах программ, гарантии отсутствия ошибок структурный подход не дает. Однозначные суждения об отсутствии или наличии ошибок в алгоритмах и программах возможны только при наличии описаний конечных результатов их выполнения. Такие описания принято называть спецификациями. Спецификации программ - это точные, математически строгие описания результатов выполнения алгоритмов и программ. Толькопри наличии спецификаций возможно создание алгоритмов и программ, в которых можно гарантировать отсутствие ошибок. Более того, при систематическом использовании спецификаций возможен не только анализ правильности алгоритмов и программ, но и становится возможным составление программ с одновременным доказательством правильности. Безошибочное программирование - это составление алгоритмов и программ с гарантиями отсутствия в них ошибок. А составление алгоритмов и программ с одновременным доказательством правильности называется доказательным программированием. И в том и другом подходе необходимо составление спецификаций. Для составления программ на любом языке программирования весьма полезно предварительное составление реализуемых в них алгоритмов. Эти описания алгоритмов вместе со спецификациями позволяют в полной мере оценить правильность составленных программ. Пример составления алгоритмов с использованием в качестве иллюстрации спецификаций сценария диалога с ЭВМ:
Сценарий «Галерея картинок» Список картинок: 1. треугольник 2. прямоугольник 3. кольцо номер = ?
n =1 n = 2 n = 3
В соответствии с этими четырьмя картинками построим три вспомогательных алгоритма рисования отдельных картинок из «Галереи» и общий алгоритм выбора картинок в соответствии с принятым сценарием:
алг «Галерея картинок» нач алг «рисуиок_треугольника» вывод («Список картинок:») нач вывод («1. треугольник») линия(150,50)-(100,100) вывод («2. прямоугольник») линия(150,50)-(200,100) вывод («3. кольцо») линия(100,100)-(200,100) запрос («номер=», п) кон
графический_экран если п = 1 то алг «рисунок_прямоугольника» рисунок_треугольника нач инес п = 2 то рамка(50,50)-(150,100) рисунок_прямоугольника кон инес п = 3 то рисунок_кольиа алг «рисунок_кольца» иначе нач вывод («нет такого рисунка») окружность( 100,100),20 все окружность(100,100),50 кон кон
Правильность каждого из вспомогательных алгоритмов и подпрограмм определяется сравнением с соответствующими фрагментами сценария, а правильность всего алгоритма и соответствующей программы - со сценарием в целом. Данный подход к составлению алгоритмов и программ с использованием спецификаций - позволяет реализовать основную идею безошибочного программирования - создание алгоритмов и программ, правильных по построению. Такой подход может применяться к составлению алгоритмов и программ для любых современных языков программирования - Паскаль, Си, Ада, Модула, Бейсик и т. д. Приведем примеры составления сложных алгоритмов и программ с циклами с использованием спецификаций. Первый пример - построение алгоритма и программы изображения на экране картинки «Звездное небо» из n случайных точек: В приводимом ниже алгоритме для формирования и вывода последовательности случайных точек на экране используется цикл со счетчиком и датчик случайных чисел для генерации координат «звезд».
Алгоритм Программа алг «звездное небо» ' звездное небо нач сls запрос(«звезд=», п) input «звезд=», n графический_экран screen 2,0 от k = 1 до п цикл for k = 1 to n x: = случайное [0:200] х = rnd*200 у: = случайное [0:200] у = rnd*200 точка (х,у) pset (x,y),3 кцикл next k кон end
Второй пример - составление с использованием спецификаций алгоритма и программы игры «Угадай-ка». В этой игре ЭВМ «загадывает» число от 0 до 100, а человек должен его отгадать, вводя пробные числа с клавиатуры. Для составления алгоритма и программы примем следующий сценарий:
Сценарий «Угадай-ка»
Для реализации этого сценария воспользуемся циклом с выходом, в котором задается вопрос число=? и проверяются числа, вводимые человеком. Выход из цикла происходит после совпадения ответа с числом, задуманным ЭВМ:
Алгоритм Программа алг «угадай-ка» ' угадай-ка нач сls вывод («Угадай число») print «Угадай число» вывод («от 1 до 100») print «от 1 до 100» z: = случайное [0:100] z = int (rnd* 100) цикл do запрос( «число=», х) input «число=», х при х = z вых if х = z then exit do если х < z то if х < z then вывод («мало») print «мало» инеc х > z то elseif х > z then вывод («много») print «много» все end if кцикл loop вывод («молодец, умница») print «молодец, умница» кон end
Сравнение алгоритма со сценарием показывает их полное соответствие друг другу.
В о п р о с ы
1. Сколько ошибок содержится в программах? 2. Как долго длится отладка программ? 3. Что такое спецификации программ? 4. Зачем нужны спецификации? 5. Можно ли гарантировать отсутствие ошибок в программах? 6. Что такое систематический подход к алгоритмизации?
З а д а ч и
1. Составьте сценарий и алгоритм диалога «Распорядок дня», с помощью которого можно узнать, что запланировано на заданный час дня. 2. Составьте сценарий и алгоритм диалога с выбором по меню; а) национальных флагов; б) каталога строительных блоков; в) набора рисунков; г) каталога строений. 3. Предложите сценарии и алгоритмы рисования на экране абстрактных рисунков: а) из случайных разноцветных точек; б) из случайных разноцветных отрезков; в) из случайных разноцветных рамок; г) из случайных разноцветных окружностей; д) из случайных разноцветных кругов; е) из случайных разноцветных окошек. 4. Составьте сценарий и алгоритм, моделирующий на экране броуновское движение частиц.
|
| Оглавление| |
- Акмеология
- Анатомия
- Аудит
- Банковское дело
- БЖД
- Бизнес
- Биология
- Бухгалтерский учет
- География
- Грамматика
- Делопроизводство
- Демография
- Естествознание
- Журналистика
- Иностранные языки
- Информатика
- История
- Коммуникация
- Конфликтология
- Криминалогия
- Культурология
- Лингвистика
- Литература
- Логика
- Маркетинг
- Медицина
- Менеджмент
- Метрология
- Педагогика
- Политология
- Право
- Промышленность
- Психология
- Реклама
- Религиоведение
- Социология
- Статистика
- Страхование
- Счетоводство
- Туризм
- Физика
- Филология
- Философия
- Финансы
- Химия
- Экология
- Экономика
- Эстетика
- Этика
Лучшие книги
Гражданский процесс: Вопросы и ответы
ЗАПАДНОЕВРОПЕЙСКОЕ ИСКУССТВО от ДЖОТТО до РЕМБРАНДТА
Коммуникации стратегического маркетинга
Консультации по английской грамматике: В помощь учителю иностранного языка.
Международные экономические отношения