Кцикл
Все
Цикл
Нач
Кон
Окружность(100,100),20 окружность(100,100),50
Нач
Рамка(50,50)-(150,100) кон
Кон
Нач линия(150,50)-(100,100) линия(150,50)-(200,100) линия(100,100)-(200,100)
Нач
вывод («Список картинок:») вывод («1. треугольник») вывод («2. прямоугольник») вывод («3. кольцо») запрос («номер=», п)
алг «рисуиок_треугольника»
графический_экран если п = 1 то
рисунок_треугольника инес п = 2 то
рисунок_прямоугольника инес п = 3 то
рисунок_кольиа иначе
вывод («нет такого рисунка») все кон
алг «рисунок_прямоугольника» нач
алг «рисунок_кольца»
Правильность каждого из вспомогательных алгоритмов и подпрограмм определяется сравнением с соответствующими фрагментами сценария, а правильность всего алгоритма и соответствующей программы - со сценарием в целом.
Данный подход к составлению алгоритмов и программ с использованием спецификаций -позволяет реализовать основную идею безошибочного программирования - создание алгоритмов и программ, правильных по построению. Такой подход может применяться к составлению алгоритмов и программ для любых современных языков программирования - Паскаль, Си, Ада, Модула, Бейсик и т. д.
|
|
Приведем примеры составления сложных алгоритмов и программ с циклами с использованием спецификаций. Первый пример - построение алгоритма и программы изображения на экране картинки «Звездное небо» из п случайных точек:
Сценарий «Звездное небо»
В приводимом ниже алгоритме для формирования и вывода последовательности случайных точек на экране используется цикл со счетчиком и датчик случайных чисел для генерации коорди-нат «звезд».
Алгоритм
алг «звездное небо»
запрос(«звезд=», п) графический_экран от k = 1 до п цикл x: = случайное [0:200] у: = случайное [0:200] точка (х,у) кцикл кон
Программа ' звездное небо сls input «звезд=», n screen 2,0 for k = 1 to n х = rnd*200 у = rnd*200 pset (x,y),3 next k end
Второй пример - составление с использованием спецификаций алгоритма и программы иг-ры «Угадай-ка». В этой игре ЭВМ «загадывает» число от 0 до 100, а человек должен его отгадать, вводя пробные числа с клавиатуры. Для составления алгоритма и программы примем следующий сценарий:
{
Сценарий «Угадай-ка» Угадай число от 0 до 100
число =? < х >
мало
много молодец, умница
^
Для реализации этого сценария воспользуемся циклом с выходом, в котором задается во-прос число=? и проверяются числа, вводимые человеком. Выход из цикла происходит после сов-падения ответа с числом, задуманным ЭВМ:
Сравнение алгоритма со сценарием показывает их полное соответствие друг другу. |
Алгоритм алг «угадай-ка» нач
вывод («Угадай число»)
вывод («от 1 до 100»)
z: = случайное [0:100]
запрос(«число=», х)
|
|
при х = z вых
если х < z то вывод («мало»)
инеc х > z то вывод («много»)
вывод («молодец, умница») кон
Программа ' угадай-ка сls 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 loop
print «молодец, умница» end