Основы безошибочного программирования
Вопросы
1. Что такое алгоритмизация?
2. Что такое структурированные алгоритмы?
3. Что такое неструктурированные алгоритмы?
4. В чем достоинства структурированных программ?
5. В чем недостатки неструктурированных программ?
6. Можно ли гарантировать отсутствие ошибок в программах?
Задания
1. Постройте вспомогательные алгоритмы и подпрограммы с выделением параметров для рисования следующих блоков:
а) крыша;
б) дерево;
в) стена с окном;
г) столб.
2. Предложите рисунки и составьте алгоритмы рисования, используя вспомогательные алгоритмы из предыдущего задания, для следующих строений:
а) домика с окном и деревом;
б) домика с двумя окнами;
в) домика с собачьей будкой;
г) двухэтажного домика.
3. Составьте алгоритм вывода на экран полной таблицы умножения.
4. Составьте, используя вспомогательные алгоритмы из предыдущих задач, алгоритмы изображения на экране:
а) многосекционных домов с различным числом секций;
б) многоэтажных домов с различным числом этажей и секций.
Основнойнедостаток традиционной практики составления программ для ЭВМ заключается в том, что при таком подходе никто не может гарантировать отсутствие в них ошибок. Особенностью традиционной практики является поиск ошибок в программах при их отладке на ЭВМ.
Однако так какчисло ошибок в программах заранее неизвестно, то неизвестна заранее и продолжительность отладки программ на ЭВМ. Более того, даже после «завершения» отладки никто не может гарантировать отсутствие ошибок. Естественно, что использование таких программ приводит к возникновению отказов, сбоев и получению неверных результатов.
Структурный подходснижает количество ошибок в алгоритмах и программах. Однако и при этом подходе число ошибок также заранее неизвестно. Хотя структурная форма записи и упрощает поиск и исправление ошибок в текстах программ, гарантии отсутствия ошибок структурный подход не дает.
Однозначные суждения об отсутствии или наличии ошибок в алгоритмах и программах возможны только при наличии описаний конечных результатов их выполнения. Такие описания принято называть спецификациями.
Спецификации программ — это точные, математически строгие описания результатов выполнения алгоритмов и программ. Только при наличии спецификаций возможно создание алгоритмов и программ, в которых можно гарантировать отсутствие ошибок.
Более того, при систематическомиспользовании спецификацийвозможен не только анализ правильности алгоритмов и программ, но и становится возможным составление программ с одновременным доказательством правильности.
Безошибочное программирование — это составление алгоритмов и программ с гарантиями отсутствия в них ошибок. А составление алгоритмов и программ с одновременным доказательством правильности называется доказательным программированием. И в том и другом подходе необходимо составление спецификаций.
Для составления программна любом языке программированиявесьма полезно предварительное составление реализуемых в них алгоритмов. Эти описания алгоритмов вместе со спецификациями позволяют в полной мере оценить правильность составленных программ.
Пример составления алгоритмов с использованием в качестве иллюстрации спецификаций сценария диалога с ЭВМ:
В соответствии с этими четырьмя картинками построим три вспомогательных алгоритма рисования отдельных картинок из «Галереи» и общий алгоритм выбора картинок в соответствии с принятым сценарием:
алг «Галерея картинок»
нач алг «рисунок_треугольника»
вывод («Список картинок:») нач
вывод («1. треугольник») линия(150,50)-(100,100)
вывод («2. прямоугольник») линия(150,50)-(200,100)
вывод («З. кольцо») линия(100,100)-(200,100)
запрос («номер=», п) кон