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