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

Кцикл

Do

Цикл

Cls screen 2,0 circle (100,100),20 circle (100,100),50

Кон

Графический_экран окружность (100,100),20 окружность (100,100),50

Нач

Screen 2,0

Кон

Графический_экран рамка (50,50)-(150,100)

Нач

Line (150,50)-(100,100),3 line (150,50)-(200,100),3 line (100,100)-(200,100),3

Cls screen 2,0

Кон

Графический_экран линия (150,50)-(100,100) линия (150,50)-(200,100) линия (100,100)-(200,100)

Нач

Gosub ring

Gosub box

Gosub treug

Нач

Кон

Нач окружность (100,100), 20 окружность (100,100),50

Рамка (50,50)-(150,100) кон

Кон

алг «рисунок_прямоугольника» нач

алг «рисунок_кольца»


Реализация данного алгоритма в виде структурированной программы:


Алгоритмы:

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

вывод («Список картинок:») вывод («1. треугольник») вывод («2. прямоугольник») вывод («З. кольцо») запрос(«номер =», n) если n = 1 то

рисунок_треугольника инеc n = 2 то

рисунок_прямоугольника инеc n = 3 то рисунок_кольца


Программа: 'Галерея картинок cls print «Список картинок:» print «1. треугольник» print «2. прямоугольник» print «3. кольцо» input «номер =», n if n = 1 then

if n = 2 then

if n = 3 then



инеc п < 1 или n > 3 то

вывод («нет такого рисунка») все кон


if n < 1 or n >3 then

print «нет такого рисунка» 'все end



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


treug: 'рисунок треугольника

return



алг «рисунок прямоугольника»


box: 'рисунок прямоугольника cls

line (50,50)-(150,100),3,b return



алг «рисунок кольца»


ring: 'рисунок кольца

return


Данный подход - составление структурированных алгоритмов может применяться к со-ставлению структурированных программ для любых ЭВМ на любых языках программирования -Паскаль, Си, Ада, Модула и т. д.

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

1. Условные действия.

если у < 0 то if у < 0 then
вывод («недопустим») print «недопустим»
кесли end if
2. Многоальтернативный выбор.  
если х > 1 то if х > 1 then
у: = 1 у = 1
инес х < -1 то elseif х < -1 then
у: = -1 у = -1
иначе else
у: = х у = х
кесли end if
3. Циклы со счетчиком:  
от k = 1 до п цикл for k = 1 to n
вывод (k⋅k) print k*k
кцикл next k

4. Циклы с выходами.




s: = s + x при х < 1 выход

х: = x/2


s = s + x if х < 1 then exit do

x = x/2 loop


В циклах в общем случае возможны несколько выходов. Дополнительные выходы счита-ются допустимыми даже для циклов со счетчиками. Приведем примеры решения задач с исполь-зованием дополнительных правил структурирования алгоритмов и программ.

Пример записи структурированных алгоритмов и программ с использованием циклов для алгоритма игры-эксперимента «звездное небо»:


Алгоритм алг «звездное небо» нач цикл запрос(«звезд=», п) при п <= 0 выход графический_экран от k = 1 до п цикл х: = случайное [0:200] у: = случайное [0:200] точка (х,у) кцикл кцикл кон


Программа ' звездное небо» сls do input «звезд=», n if n <= 0 then exit do screen 2,10 for k = 1 to n х = rnd*200 у = rnd*200 pset (x,y),3 next k end do end


Пример структурированного алгоритма и программы с применением многоальтернативно-го выбора и циклов с несколькими выходами:


Алгоритм алг «угадай-ка» нач

вывод («Угадай-ка число») вывод («от 1 до 100») z: = случайное [0:100] цикл

запрос («число =», х) при х = z вых если х < z то

вывод («мало») инеc х > z тo

вывод («много») все кцикл

вывод («молодец, умница») кон


Программа ' угадай-ка cls print «Угадай-ка число» print от 1 до 100» z = int (rnd*100) do

input «число =», х if х = z then exit do if х < z then

print «мало» elseif х > z then

print «много» end if end do

print «молодец, умница» end


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


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

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

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

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

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

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

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

Сценарий «Галерея картинок»




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


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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: