Основы безошибочного программирования

Вопросы

 

1. Что такое алгоритмизация?

2. Что такое структурированные алгоритмы?

3. Что такое неструктурированные алгоритмы?

4. В чем достоинства структурированных программ?

5. В чем недостатки неструктурированных программ?

6. Можно ли гарантировать отсутствие ошибок в программах?

Задания

 

1. Постройте вспомогательные алгоритмы и подпрограммы с выделением параметров для рисования следующих блоков:

а) крыша;

б) дерево;

в) стена с окном;

г) столб.

2. Предложите рисунки и составьте алгоритмы рисования, используя вспомогательные алгоритмы из предыдущего задания, для следующих строений:

а) домика с окном и деревом;

б) домика с двумя окнами;

в) домика с собачьей будкой;

г) двухэтажного домика.

3. Составьте алгоритм вывода на экран полной таблицы умножения.

4. Составьте, используя вспомогательные алгоритмы из предыдущих задач, алгоритмы изображения на экране:

а) многосекционных домов с различным числом секций;

б) многоэтажных домов с различным числом этажей и секций.

 

Основнойнедостаток традиционной практики составления программ для ЭВМ заключается в том, что при таком подходе никто не может гарантировать отсутствие в них ошибок. Особенностью традиционной практики является поиск ошибок в программах при их отладке на ЭВМ.

Однако так какчисло ошибок в программах заранее неизвестно, то неизвестна заранее и продолжительность отладки программ на ЭВМ. Более того, даже после «завершения» отладки никто не может гарантировать отсутствие ошибок. Естественно, что использование таких программ приводит к возникновению отказов, сбоев и получению неверных результатов.

Структурный подходснижает количество ошибок в алгоритмах и программах. Однако и при этом подходе число ошибок также заранее неизвестно. Хотя структурная форма записи и упрощает поиск и исправление ошибок в текстах программ, гарантии отсутствия ошибок структурный подход не дает.

Однозначные суждения об отсутствии или наличии ошибок в алгоритмах и программах возможны только при наличии описаний конечных результатов их выполнения. Такие описания принято называть спецификациями.

Спецификации программ — это точные, математически строгие описания результатов выполнения алгоритмов и программ. Только при наличии спецификаций возможно создание алгоритмов и программ, в которых можно гарантировать отсутствие ошибок.

Более того, при систематическомиспользовании спецификацийвозможен не только анализ правильности алгоритмов и программ, но и становится возможным составление программ с одновременным доказательством правильности.

Безошибочное программирование — это составление алгоритмов и программ с гарантиями отсутствия в них ошибок. А составление алгоритмов и программ с одновременным доказательством правильности называется доказательным программированием. И в том и другом подходе необходимо составление спецификаций.

Для составления программна любом языке программированиявесьма полезно предварительное составление реализуемых в них алгоритмов. Эти описания алгоритмов вместе со спецификациями позволяют в полной мере оценить правильность составленных программ.

Пример составления алгоритмов с использованием в качестве иллюстрации спецификаций сценария диалога с ЭВМ:

 

 

В соответствии с этими четырьмя картинками построим три вспомогательных алгоритма рисования отдельных картинок из «Галереи» и общий алгоритм выбора картинок в соответствии с принятым сценарием:

алг «Галерея картинок»

нач алг «рисунок_треугольника»

вывод («Список картинок:») нач

вывод («1. треугольник») линия(150,50)-(100,100)

вывод («2. прямоугольник») линия(150,50)-(200,100)

вывод («З. кольцо») линия(100,100)-(200,100)

запрос («номер=», п) кон