[ Главная |Практика | Тест | О главном |
Слово "Алгоритм" происходит от имени выдающегося математика Мухаммеда аль - Хорезми, жившего в 783-850 гг. Он стал родоначальником математической дисциплины-алгебры. Им же были сформулированы правила арифметических вычислений с многозначными числами в десятичной позиционной системе. Позже в Европе эти правила назвали алгоритмами, от algorithmi – латинского написания имени аль – Хорезми.
Алгоритмы арифметических вычислений сформулированы для исполнителя – человека. С таким же успехом можно назвать любые инструкции, предписывающие последовательность действий человека для выполнения какой – либо работы. Алгоритм может быть предназначен для выполнения его автоматическим устройством или человеком. В дальнейшем будем называть его исполнителем алгоритма.
Алгоритмы арифметических вычислений сформулированы для исполнителя – человека. С таким же успехом можно назвать алгоритмами множество различных инструкций, предписывающих последовательность действий человека для выполнения какой – либо работы. Например, кулинарный рецепт – это алгоритм работы повара с целью приготовления блюда; инструкция по сборке машинки из деталей детского конструктора – алгоритм для ребенка; инструкция по использованию кухонного комбайна – алгоритм для домохозяйки.
Вы, наверное, никогда не задумывались над тем, какое количество алгоритмов вам известно. Жизненный опыт человека растет с увеличением числа освоенных им алгоритмов. Например, чтобы ребенок научился покупать в магазине хлеб, ему нужно сначала рассказать (а лучше показать), как это делается. Освоив «алгоритм покупки хлеба», он в дальнейшем будет успешно выполнять эту работу.
Поиск выигрышной тактики, а, следовательно, и алгоритма несложной игры – интересная и полезная задача. Рассмотрим одну из таких игр, которая называется игрой Баше.
Играют двое. Перед ними 21 предмет, допустим, камни (также может быть 11, 16, 26 и т.д.). Игроки берут камни по очереди. За один ход можно взять 1-2-3-4 камня. Проигрывает тот, кто забирает последний камень.
Имеется выигрышная тактика для игрока, берущего камни вторым. Она заключается в том, чтобы брать такое количество камней, которое дополняет число камней, взятых соперником на предыдущем ходе, до пяти. Этот алгоритм можно описать в виде последовательности команд:
В приведенном ниже примере используется символика учебного Алгоритмического языка (АЯ). Из примера видно, что при записи алгоритма на АЯ в начале находится заголовок, начинающийся со служебного слова алг (сокращенное слово «алгоритм»). Затем указывается название алгоритма, которое автор придумывает сам. Следующая часть называется телом алгоритма. Она начинается служебным словом нач (начало) и заканчивается словом кон (конец). Тело алгоритма представляет собой последовательность команд для исполнителя.
Каждый алгоритм создается в расчете на вполне конкретного исполнителя с учетом его возможностей. Для того чтобы алгоритм был выполним, нельзя включать в него команды, которые исполнитель не в состоянии выполнить. Нельзя повару поручать работу токаря, какая бы подробная инструкция ему не давалась. У каждого исполнителя имеется свой перечень команд, которые он может исполнить. Такой перечень называется системой команд исполнителя алгоритмов (СКИ).
Каждая команда алгоритма должна определять однозначное действие исполнителя. Это требование называется точностью алгоритма.
Алгоритм, составленный для конкретного исполнителя, должен включать только те команды, которые входят в его систему команд. Это свойство алгоритма называется понятностью.
Алгоритм не должен быть рассчитан на принятие, каких – либо самостоятельных решений исполнителем, не предусмотренных составителем алгоритма.
Еще одно важное требование, предъявляемое к алгоритму, это конечность (иногда говорят результативность) алгоритма. Это значит, что исполнение алгоритма должно завершиться за конечное число шагов.
Для успешного выполнения любой работы мало иметь ее алгоритм. Всегда требуются еще какие-то исходные данные, с которыми будет работать исполнитель (продукты для приготовления блюда, детали для сбора технического устройства и т.п.).
Исполнителю, решающему математическую задачу, требуется исходная числовая информация. Задача всегда формулируется так: дана исходная информация, требуется получить какой-то результат. В математике вы привыкли в таком виде записывать условия задач.
Например,
Дано: катеты прямоугольного
треугольника a=3см; b=4см.
Найти: гипотенузу c=?
Алгоритм решения этой задачи можно представить в таком виде:
алг Гипотенуза
нач
1. Возвести a в квадрат.
2. Возвести b в квадрат.
3. Сложить результаты действий 1 и 2.
4. вычислить квадратный корень из результата 3-го действия и принять его за значение c.
кон.
Каждую из этих команд может выполнить любой человек, знающий основы математики, следовательно, они входят в его систему команд.
Приступая к решению любой задачи, нужно сначала собрать все необходимые данные для ее решения.
Еще пример: для поиска номера телефона нужного вам человека исходными данными являются: фамилия, инициалы человека и телефонная книга (точнее, информация, заключенная в телефонную книгу). Однако этого может оказаться недостаточно. Например, вы ищете телефон Смирнова А.И. и обнаруживаете, что в книге пять строк с фамилией Смирнов А.И. Ваши исходные данные оказались неполными для точного решения задачи (вместо одного телефона вы получили пять). Оказалось, что нужно знать еще домашний адрес.
Набор: «фамилия – инициалы – телефонный справочник – адрес» является полным набором данных в этой ситуации.
Только имея полный набор данных, можно точно решить задачу.
Если исходные данные неполные, то задачу либо совсем нельзя решить (ничего нельзя узнать про гипотенузу по одному катету), либо получится неоднозначное решение (пять номеров телефонов).
В задачах управления физическими объектами (автомобиль, самолет, станок и т.п.) исходными данными является информация о состоянии объекта управления, об обстановке, его окружающей.
Обобщая все сказанное, сформулируем определение алгоритма.
Алгоритм – это понятное и точное предписание исполнителю выполнить конечную последовательность команд, |
Если алгоритм обладает перечисленными выше свойствами, то работа по нему будет производиться исполнителем формально (то есть без всяких элементов творчества с его стороны). На этом основана работа программно-управляемых исполнителей-автоматов, например, промышленных роботов. Робот-манипулятор может выполнить работу токаря, если он умеет делать все операции токаря (включать станок, закреплять резец, замерять изделие). От исполнителя не требуется понимание сущности алгоритма, он должен лишь точно выполнять команды, не нарушая их последовательности.
А что такое программа? Отличается ли чем-то программа от алгоритма?
Программа - это алгоритм, записанный на языке исполнителя. |
Учебными исполнителями называют различные объекты на экране компьютера, которым можно управлять, отдавая команды. Используются они для обучения составлению управляющих алгоритмов.
Есть много учебных исполнителей, придуманных для занятий по информатике. У них разные, часто забавные названия: Черепашка, Робот, Чертежник, Кенгуренок, Пылесосик, Муравей, Кукарача и др. одни исполнители создают рисунки на экране, другие складывают слова из кубиков с буквами, третьи перетаскивают предметы из одного места в другое. Все эти исполнители управляются программным путем. Любому из них свойственно определенная среда деятельности, система команд управления, режимы работы. С помощью каждого из таких исполнителей можно учиться строить алгоритмы управления.
Мы не будем детально описывать работу с каким-то реальным исполнителем из выше перечисленных. Мы опишем условного исполнителя, который очень похож на некоторых из существующих в главном: системой команд, языком и приемами программирования.
Многие из учебных исполнителей занимаются рисование на экране компьютера. Из названных это Черепашка, Чертежник, Кенгуренок. Эту группу можно назвать графическими исполнителями. Пусть наш гипотетический исполнитель тоже будет из этой компании. Назовем его ГРИС, что значит ГРафический ИСполнитель.
Что умеет делать ГРИС? Он может перемещаться по полю и своим хвостом рисовать на этом поле (предположим, что у него есть хвост, к которому привязан кусочек мела).
Обстановка, в которой действует исполнитель, называется средой исполнителя. Среда графического исполнителя показана на рис.1.Это лист (страница экрана) для рисования. ГРИС может перемещаться в горизонтальном и вертикальном направлениях с постоянным шагом. На рисунке 1 показана сетка с периодом, равным шагу исполнителя. Исполнитель может двигаться только по линиям этой сетки. ГРИС не может выходить за границы поля.
Рис.1. Среда графического исполнителя. Стрелка указывает состояние исполнителя (место положения и направление)
Состояние исполнителя на поле определяется, во-первых, его местоположением (в какой точке поля он находится) и направлением (куда он смотрит). Направление будем определять как на географической карте: вверх – на север, вниз – на юг, влево – на запад, вправо – на восток. ГРИС может шагать или прыгать по линиям сетки, а также поворачиваться. Поворачиваться он умеет только против часовой стрелки.
Графический исполнитель – это объект управления. А управлять им будем мы с вами. Целью управления является получение определенного рисунка. Понятно, что этот рисунок будет состоять только из горизонтальных и вертикальных отрезков, в других направлениях ГРИС двигаться не умеет.
Задача обычно ставится так: исполнитель находится в данной точке поля, смотрит в данном направлении. Требуется получить определенный рисунок. Например: ГРИС находится в середине поля и смотрит на восток. Нарисовать букву «Т» с длиной линий, равной четырем шагам.
Первоначально исполнителю придается исходное состояние. Это делается в специальном режиме установки.
Теперь перейдем к управлению графическим исполнителем. Здесь возможны два режима: режим прямого управления и режим программного управления.
Работа в режиме прямого управления происходит так: человек отдает команду, ГРИС ее выполняет; затем отдается следующая команда и т.д. (как в примере с хозяином и собакой).
В режиме прямого управления система команд исполнителя следующая:
шаг – перемещение ГРИС на один шаг вперед с рисованием линии;
поворот – поворот на 90 градусов против часовой стрелки;
прыжок – перемещение на один шаг вперед без рисования линии.
Эти команды будем называть простыми командами.
Например, требуется нарисовать квадрат со стороной, равной одному шагу. Исходное положение ГРИС: в левом нижнем углу квадрата, направление – на восток. Будем отмечать состояние исполнителя маленькой стрелкой. Тогда последовательность команд и результаты их выполнения будут следующими:
Работа в программном режиме имитирует автоматическое управление исполнителем. Управляющая система (компьютер) обладает памятью, в которую заносится программа. Человек составляет программу и вводит ее в память. Затем ГРИС переводится в режим установки и человек вручную (с помощью определенных клавиш) устанавливает исходное состояние исполнителя. После этого производится переход в режим выполнения и ГРИС начинает работать по программе. Если возникает ситуация, при которой он не может выполнить очередную команду (выход за границу поля), то выполнение программы завершается аварийно. Если аварии не происходит, то работа исполнителя заканчивается на последней команде.
Таким образом, программное управление графическим исполнителем проходит этап подготовки (программирование и установка исходного состояния) и этап исполнения программы.
В режиме программного управления по-прежнему используются команды шаг, поворот, прыжок. Однако в этом режиме есть еще и другие команды.
Язык программирования для графического исполнителя – это учебный алгоритмический язык (АЯ). Поэтому алгоритмы управления ГРИСом, записанные на АЯ, являются для него одновременно и программами.
Будем осваивать программирование на примерах решения конкретных задач. С новыми командами СКИ будем знакомиться по мере появления потребности в них.
Задача 1. Составим и выполним программу, по которой ГРИС нарисует на поле букву «Т». Пусть длина вертикального и горизонтального отрезков равна четырем шагам.
Исходное состояние – чистый лист. Исполнитель – в точке, где будет находиться левый конец горизонтального отрезка, направление - на восток.
Программа и результат ее выполнения показаны на рисунке 2. стрелка указывает конечное состояние исполнителя.
ПРОГРАММА
программа буква Т
нач
шаг
шаг
шаг
шаг
поворот
поворот
прыжок
прыжок
поворот
шаг
шаг
шаг
шаг
кон
Рис. 2. Программа и результат ее выполнения
Среда: лист (экран компьютера), по которому может двигаться черепашка. В начале сеанса черепашка находится в центре листа. Черепашка рисует хвостом. Если хвост опущен, то при движении черепашка рисует, если поднят – не рисует.
Назначение исполнителя: получение рисунков, составленных из отрезков прямых и закрашенных областей.
Данные: исполнитель работает с числовыми значениями длины перемещения, угла, поворота, номера цвета.
Действия исполнителя: перемещение по экрану с рисованием или без; повороты; управление цветом; закраска замкнутых областей.
Система команд исполнителя:
1. | Команды перемещения: | FORFARD <число> - движение вперед на указанное число шагов (FD <число>); BACK <число> - движение назад на указанное число шагов (BK <число>); HOME – перемещение черепашки в центре листа. |
2. | Команды поворотов: | LEFT <число> - поворот налево на указанное число градусов (LT <число>); RIGHT <число> - поворот направо на указанное число градусов (RT <число>). |
3. | Команды изменения состояния: | PU – поднять хвост; PD – опустить хвост. |
4. | Команды работы с цветом: | SETBG <число> - установить цвет рабочего поля (фона); SETC <число> - установить цвет черепашки и ее хвоста. Нумерация цветов: 0- Прозрачный 8- черный 1- Белый 9- светло-серый 2- Голубой 10- светло-голубой 3- Фиолетовый 11- розовый 4- Красный 12 – светло-красный 5- Синий 13 – светло-синий 6- Коричневый 14 - желтый 7- Зеленый 15 – светло-зеленый FILL – команда заливки замкнутой области текущим цветом черепашки. |
5. | Команда повторения: | REPEAT <число повторений> [<повторяющиеся действия>]; Например, нарисовать квадрат со стороной 40 шагов можно по команде REPEAT <4> [FD 40 RT 90]. |
6. | Неполное ветвление: | IF <условие> [что делать, если условие выполнено]. |
7. | Полное ветвление: | IFELSE <условие> [что делать, если условие выполнено] [что делать, если условие не выполнено]. |
8. | Описание вспомогательного алгоритма: | TO <имя> <параметры> - заголовок вспомогательного алгоритма (процедуры), параметры могут отсутствовать; END – конец вспомогательного алгоритма. |
9. | Команда присваивания переменной: | MAKE “<имя переменной> <выражение>. Например, MAKE “N 5; MAKE “N :N+5 |
10. | Операция чтения символа с клавиатуры: | READCHAR Например, MAKE “G READCHAR. |
11. | Команда очистки экрана: | RG. |
Реакция исполнителя:
«НЕ ПОНИМАЮ» - отдается команда, не входящая в СКИ или не описанная с помощью вспомогательного алгоритма.
Пример 1. Нарисовать на экране два квадрата большой и маленький.
TO SQ :k
REPEAT 4 [FD :k RT 90]
END
- вспомогательный алгоритм, с помощью которого можно нарисовать квадрат с любой
END стороной.
Вариант 1: SQ 60 LT 90 PU FD 50 PD SQ 20.
Вариант 2: SQ 20 RT 90 PU FD 60 PD SQ 60.
Вариант 3: TO SQ2 :k1 :k2
SQ :k1
RT 90 PU FD :k2
SQ :k2
END
- это описание новой команды исполнителя, с помощью которой можно нарисовать сразу два квадрата.
Обращение к новой программе имеет вид : SQ2 60 20.
Пример 2. Нарисовать квадрат красного цвета. Для решения задачи воспользуемся процедурой SQ.
TO CSQ :dl
SQ :dl – рисуем квадрат со стороной :dl
RT 45 PU FD :dl / 2 PD – не оставляя следа, входим внутрь квадрата
SETC 4 – меняем цвет черепашки на красный
FILL – закрашиваем квадрат
BK :dl / 2 LT 45 – возвращаем черепашку в исходное положение
SETC 1 – устанавливаем цвет черепашки белым
END
Пример 3. Процедура, вызывающая сама себя, называется рекурсивной. Рассмотрим пример рекурсивной процедуры, рисующей квадрат.
TO SQ :dl
FD :dl RT 90 – нарисовать сторону и повернуться
направо на 90?
SQ :dl
END
Это пример бесконечной рекурсии. Чтобы прекратить выполнение программы, надо нажать клавиши CTRL+BREAK.
Пример 4. Пример управляемой рекурсии – рисование квадратной спирали.
TO A :x
FD :x RT 90
IF :x < 80 [A :x + 5]
END
Задача 2.
Пусть требуется сократить программу по которой ГРИС напишет на экране четырехзначное число 1919;
Конечно, можно поступить так, как в предыдущей задаче, написав одну длинную программу, по которой исполнитель шаг за шагом нарисует эти цифры. Но, очевидно, возникает другая идея: поскольку здесь дважды повторяются цифры 1 и 9, нельзя ли сократить работу, написав программу рисования той и другой цифры только один раз? Это действительно можно сделать.
Алгоритм, по которому решается некоторая подзадача из основной задачи и который, как правило, выполняется многократно, называется вспомогательным алгоритмом. |
процедура ЕДИНИЦА нач поворот шаг шаг шаг шаг оворот поворот прыжок прыжок прыжок прыжок кон |
поворот процедура ДЕВЯТЬ нач шаг поворот шаг шаг шаг шаг поворот шаг поворот шаг шаг поворот шаг поворот поворот поворот прыжок прыжок поворот кон |
сделай < имя процедуры>
Определение процедуры в программе называется ее описанием. Формат описания процедуры:
процедура < имя процедуры>
нач
<тело процедуры>
кон
Имя в описании и имя в обращении должны точно совпадать (никаких склонений по падежам!).
Описание процедур располагается после основной программы.
Добавив к программе описание процедуры, мы тем самым расширили систему команд исполнителя. В данной программе стало возможным использование команды обращения к этой процедуре.
Использованный нами подход облегчает программирование сложных задач. Задача разбивается на более простые подзадачи. Решение каждой оформляется в виде вспомогательного алгоритма, а основной алгоритм организует связку между ними.
Метод программирования, при котором сначала пишется основная программа, затем в ней записываются обращения к пока еще не составленным подпрограммам, а потом описываются эти подпрограммы, называется методом последовательной детализации. Причем количество шагов детализации может быть гораздо большим, чем в нашем примере, поскольку сами подпрограммы могут содержать внутри себя обращения к другим подпрограммам.
Возможен и другой подход к построению сложных программ: первоначально составляется множество подпрограмм, а затем пишется основная программа, содержащая обращения к ним. Подпрограммы могут быть объединены в библиотеку подпрограмм и сохранены в долговременной памяти компьютера. Такую библиотеку можно постепенно наполнять новыми подпрограммами.
Например, если для управления графическим исполнителем создать библиотеку процедур рисования всех букв и цифр, то программа получения любого текста будет состоять из команд обращения к библиотечным процедурам.
Описанный метод называется сборочным программированием. Часто в литературе по программированию используется такая терминология: метод последовательной детализации называют программированием сверху вниз, а сборочный метод - программированием снизу вверх.
Обсудим решение следующей задачи.
Задача 3.
Исходное положение: ГРИС у левого края поля, направление – на восток. Требуется нарисовать горизонтальную линию через весь экран.
Задачу можно решить, написав 15 раз команду шаг (если поперек поля рисунка 15 шагов). Но есть и более короткий вариант программы. Вот он:
пока впереди не край, повторять
нц
шаг
кц
Здесь использована команда, которая называется циклом. Формат команды цикла следующий:
пока <условие> повторять
нц
<тело цикла>
кц
Служебное слово нц обозначает начало цикла, кц – конец цикла.
Это первая команда из СКИ, которая использует обратную связь между графическим исполнителем и управляющим им компьютером. Она заключается в том, что проверяется, не вышел ли ГРИС на край поля и не грозит ли ему следующий шаг или прыжок в этом направлении аварией? Проверяемые условия звучат так: «впереди край?» или «впереди не край?». На что машина получает от исполнителя ответ «да» или «нет».
В приведенном примере проверяется условие «Впереди не край?». Если «да», то делается шаг (то есть выполняется <тело цикла>). Затем происходит возврат на проверку условия, и все повторяется. Если проверка условия дает отрицательный результат (то есть впереди – край), то выполнение цикла завершится, и будет исполняться следующая команда программы.
При программировании цикла важно думать о том, чтобы цикл был конечным. Цикл, записанный выше, - конечный. Двигаясь в одном направлении, исполнитель обязательно достигнет края и на этом выполнение цикла закончится.
Ситуация, при которой выполнение цикла никогда не заканчивается, называется зацикливанием. Пусть ГРИС находится в середине поля. Исполнение следующего цикла:
пока впереди не край, повторять
нц
шаг
поворот
кц
никогда не закончится. ГРИС будет рисовать квадратик, т.к. проверка условия «впереди не край?» всегда будет давать положительный результат.
Задача 4.
Теперь составим программу, по которой графический исполнитель нарисует прямоугольную рамку по краю поля. Исходное положение: ГРИС находится в левом верхнем углу, смотрит на юг.
Рамка состоит из четырех линий, поэтому разумно воспользоваться процедурой, проводящей линию от края до края поля. Опять будем действовать методом последовательной детализации. Напишем сначала основную программу.
Рис. 3 Программа «Рамка» и результат ее выполнения
Программа проведения линии нами уже рассматривалась. Осталось оформить ее в виде процедуры.
процедура ЛИНИЯ
нач
пока впереди не край, повторять
нц
шаг
кц
кон
При составлении этой программы использовалась одношаговая детализация в такой последовательности:
Начиная с 50-х годов, т.е. еще с эпохи ЭВМ первого поколения, программисты стали использовать графические схемы, изображающие алгоритмы, которые получили название блок-схем.
Блок-схема состоит из фигур (блоков), обозначающих отдельные действия исполнителя, и стрелок, соединяющих эти блоки и указывающих на последовательность их выполнения. Внутри каждого блока записывается выполняемое действие. Сама форма блока подсказывает характер операции, которую он обозначает. Для придания наглядности и единообразия схемам алгоритмов все графические элементы стандартизированы.
На рисунке 4 показана блок-схема алгоритма рисования рамки. Она состоит из двух частей: блок-схемы основного алгоритма и блок-схемы вспомогательного алгоритма ЛИНИЯ.
Из этих схем видно назначение блоков различной формы.
|
|
Рис. 4. Блок-схема алгоритма «Рамка»
Команда цикла изображается не отдельным блоком, а целой структурой, показанной на рисунке 5. Такую структуру называют циклом с предусловием (так как условие предшествует тел цикла). Есть и другой вариант названия: цикл-пока (пока условие истинно, повторяется выполнение тела цикла).
|
|
Рис. 5. Элементы блок-схем и структура «цикл»
При решении следующей задачи снова будем использовать метод последовательной детализации.
Задача 5.
Требуется расчертить экран горизонтальными линиями (рис. 6.). Исходное состояние исполнителя: верхний левый угол, направление – на юг.
В программе для решения этой задачи используется та же процедура ЛИНИЯ. Другая процедура ВОЗВРАТ – возвращает ГРИС к исходному положению для рисования следующей линии.
Рис. 6. «Разлиновка»
программа Разлиновка
нач
пока впереди не край,
повторять
нц
поворот
сделай ЛИНИЯ
сделай ВОЗВРАТ
прыжок
кц
поворот
сделай ЛИНИЯ
кон
процедура ВОЗВРАТ
нач
поворот
поворот
пока впереди не край,
повторять
нц
прыжок
кц
поворот
кон
Блок-схемы основного и вспомогательного алгоритмов:
|
|
Команда ветвления. Познакомимся еще с одной командой ГРИС. Она называется командой ветвления. Формат команды ветвления такой:
если <условие>
то <серия 1>
иначе <серия 2>
кв
Служебное слово кв обозначает конец ветвления.
По-прежнему ГРИС может проверять только два условия: «впереди край?» или «впереди не край?». <Серия> - это одна или несколько следующих друг за другом команд. Если <условие> справедливо, то выполняется <серия 1>, в противном случае - <серия 2>. Например:
если впереди не край то прыжок иначе поворот кв |
|
Рис 8. Блок-схема полного ветвления
Такое ветвление называется полным, и его блок-схема показана на рисунке 8.
В некоторых случаях используется неполная форма команды ветвления. Вот, например:
если впереди край то поворот кв |
|
Рис. 9. блок-схема неполного ветвления
Неполная команда ветвления имеет следующий формат:
если <условие>
то <серия>
кв
Здесь <серия> выполняется, если <условие> справедливо.
Составим последнюю, сравнительно сложную программу для ГРИС. На этом примере вы увидите, что применение метода последовательной детализации облегчает решение некоторых головоломных задач.
Задача 6.
Построить орнамент, состоящий из квадратов по краю поля. Исходное положение ГРИС – в верхнем левом углу, направлен на юг.
Цепочку квадратов, нарисованных от края до края поля, назовем РЯД. Ниже будет составлена процедура, рисующая ряд квадратов. Но сначала напишем основную программу (исходное положение показано стрелкой).
программа Орнамент
нач
сделай РЯД
поворот
сделай РЯД
поворот
сделай РЯД
поворот
сделай РЯД
кон
Рис. 10. Программа «Орнамент» и результат ее выполнения
Ниже приводится процедура РЯД. В ней, в свою очередь, имеется обращение к другой процедуре, которая называется КВАДРАТ. Из названия ясно, что по этой процедуре чертится один квадрат
процедура РЯД
нач
прыжок
прыжок
пока впереди не край, повторять
нц
сделай КВАДРАТ
если впереди не край
то прыжок
кв
кц
кон
процедура КВАДРАТ
нач
шаг
поворот
шаг
поворот
шаг
поворот
шаг
поворот
прыжок
кон
В процедуре РЯД в теле цикла содержится неполное ветвление. Структуру такого алгоритма можно назвать так: цикл с вложенным ветвлением.
На рисунке 11. приведена блок-схема процедуры РЯД.
Рис. 11. Блок-схема процедуры «РЯД»
Составление этой программы потребовало два шага детализации алгоритма, которые выполнялись в такой последовательности:
ОСНОВНАЯ ПРОГРАММА
1-й шаг детализации
процедура РЯД
2-й шаг детализации
процедура КВАДРАТ
Теперь вам известны все команды управления графическим исполнителем. Их можно разделить на три группы: простые команды; команда обращения к процедуре; структурные команды. К третьей группе относятся команды цикла и ветвления.
СКИ графического исполнителя
Простые команды
шаг
поворот
прыжок
Обращение к процедуре
сделай <имя процедуры>
Структурные команды
пока <условие>, повторять
нц
<тело цикла>
кц
если <условие>
то <серия 1>
иначе<серия 2>
кв