если п = 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, а человек должен его отгадать, вводя пробные числа с клавиатуры. Для составления алгоритма и программы примем следующий сценарий:
Сценарий «Угадай-ка»
Угадай число от 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
Сравнение алгоритма со сценарием показывает их полное соответствие друг другу.
|
|