6-Lesson №21

Урок №21. Процедуры.

Рассмотрим рисунок из трёх квадратов, сторона которых равна 40 шагам Черепахи (рис. 3.10).

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

Конечно, можно решить эту задачу, записав сначала команды для рисования первого квадрата, потом — второго и затем — третьего:

использовать Черепаха
алг Три квадрата
нач
  опустить хвост
  нц 4 раз
    вперед(40)
    вправо(90)
  кц
  вперед(40)
  вправо(90)
  вперед(40)
  влево(90)
  нц 4 раз
    вперед(40)
    вправо(90)
  кц
  вправо(90)
  вперед(40)
  нц 4 раз
    вперед(40)
    вправо(90)
  кц
кон

Легко заметить, что в этой программе трижды повторяется группа команд. Посмотрим, как можно сокрнтить программу, научив Черепаху понимать новую команду.

Представим себе, что у Черепахи есть команда Квадрат (хотя на самом деле её нет). Эта команда рисует квадрат со стороной 40 шагов и возвращает Черепаху в то же место, откуда она начинала рисование, и в то же положение. Используя оту команду, мы легко можем написать программу, которая рошаот нашу задачу:

алг Три квадрата
нач
  опустить хвост
Квадрат Имя не объявлено
  вперед(40)
  вправо(90)
  вперед(40)
  влево(90)
  Квадрат Имя не объявлено
  вправо(90)
  вперед(40)
  Квадрат Имя не объявлено
кон

Всё было бы хорошо, но эта программа не будет ВЫПОЛНЯТЬСЯ, Если вы её запустите, то получите сообщение об ошибке:

Имя не объявлено.

Это значит, что такой команды у Черепахи нет, она её не понимает. Но… мы можем её добавить в систему команд исполнителя (СКИ), составив новую команду из тех команд, которые уже известны Черепахе.

Та программа, которую мы уже написали, называется основной программой. Именно её выполняет исполнитель. Если в программе встречается неизвестная команда, Черепаха ищёт объяснение (расшифровку) этой команды после основной программы. Там должны быть описаны все действия, которые должна выполнить Черепаха по этой команде.

 

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

Вспомогательный алгоритм (процедура) решает отдельную задачу и может быть использован при решении более сложных задач. Он вызывается так же, как команды из СКИ исполнителя.

Имя для процедуры мы уже выбрали — Квадрат. Имена процедур строятся по тем же правилам, что и имена программ и переменных: это должно быть одно слово или несколько слов, соединённых знаком подчёркивания. В именах можно использовать цифры, но не на первом месте.

Расшифровка процедуры Квадрат будет выглядеть так:

Квадрат
    ...

Первая строка, где записано название процедуры, — это заголовок процедуры. После заголовка точка с запятой не ставится.

Внутри фигурных скобок (на месте многоточия) нужно записать команды, которые должна выполнить Черепаха для рисования квадрата. Эти команды составляют тело процедуры. Вот что у нас получилось:

алг Квадрат
нач
опустить хвост
нц 4 раз
вперед(40)
вправо(90)
кц
поднять хвост
кон

Этот алгоритм выглядит так же, как и основная программа. На самом деле он и может быть основной программой, если нам нужно нарисовать всего один квадрат.

Обратите внимание, что в начале процедуры мы опускаем перо (вдруг оно поднято?), а в конце — поднимаем его. Это сделает процедуру более универсальной: она будет работать при любом начальном положении пера Черепахи.

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

В программе может быть несколько процедур, все они должны быть записаны после основной программы. Имена всех процедур должны быть различны.

Чтобы процедура сработала, её нужно вызвать — обратиться к ней по имени. Одна процедура может вызывать другую процедуру.

В нашей основной программе Три_квадрата процедура Квадрат вызывается три раза, эти строки в программе выделены. Если мы опишем процедуру, но не обратимся к ней, то она не будет выполняться.

Выполнить домашнюю работу

Выполнить классную работу