Пытаясь угадать какие клетки будут закрашены, нельзя не оцентить и размеры
программы, и сложность траектории движения Робота.
А заметили Вы повторяющуюся группу команд, выделенную более
светлым фоном и соответствующую повторяющейся части
пути исполнителя (группа клеток, которые при этом закрашиваются,
напоминает флажок)?
Мало того, что такое повторение одной и той же группы команд выглядит
громоздко, оно еще затрудняет и понимание алгоритма, и его изменение:
если мы, например, захотим изменить форму флажка, придется редактировать
каждый выделенный фрагмент.
Вы, конечно, обратили
внимание на заголовок алгоритма: после служебного слова алг
указано имя (название)этогоалгоритма. Обычно оно
подбирается так, чтобы было ясно для чего служит алгоритм.
Как выяснится чуть
ниже, имя "флажок"этого алгоритма поможет нам
вызвать его на исполнение. Так в геометрии принято давать название (имя)
доказанной теореме, чтобы было удобно на нее сослаться, а не повторять
каждый раз ее доказательство.
Теперь мы можем переписать исходный алгоритм,
не повторяя команды рисования флажка, а вызывая уже написанный вспомогательный
алгоритм "флажок":
Количество предписаний
ровно в четыре раза меньше, чем в первоначальном варианте.
Запись "флажок"
в алгоритме парад это команда вызова вспомогательного
алгоритма с именем "флажок".
Выполняя эту команду, компьютер
приостанавливает выполнение алгоритма "парад";
выполняет алгоритм "флажок";
затем продолжает выполнение алгоритма "парад".
Определения
Вспомогательный алгоритм(процедура) это
алгоритм, который хранится в памяти компьютера и может быть вызван для
исполнения по его имени.
Предписание на выполнение процедуры называется командой
вызовавспомогательного алгоритма
и имеет вид: имя_алгоритма
В общем случае если в записи алгоритма X
встречается команда вызова процедуры Y,
то говорят, что
алгоритм
Y является вспомогательным
для X,
а алгоритм
Xосновным(главным)
для Y.
алгX нач
. . . Y . . . кон
. . . . .
алгY нач
. . . кон
Обратите внимание: команды, входящие в процедуру (вспомогательный алгоритм),
будут выполняться только тогда, когда процедура вызывается на исполнение,
а не тогда, когда она вводится (запоминается компьютером).
Вспомогательный алгоритм (процедура) - инструмент,
который позволяет:
сократить текст основного алгоритма (за счет отсутствия многократных
описаний одних и тех же повторяющихся действий);
облегчить понимание
текста программы, делая его похожим на текст на естественном языке, при условии,
конечно, использования содержательных имен процедур;
"обучать" исполнителя новым предписаниям, т.е. "расширять",
приспосабливая к конкретной задаче, его СКИ;
свести новую задачу к уже решенным, используя уже написанные
алгоритмы как вспомогательные (метод программирования снизу
вверх);
писать, проверять и отлаживать большую программу по
частям;
переделывать программы и исправлять в них ошибки, не затрагивая
тех частей алгоритма, которые остаются без изменения;
Алгоритм это описание последовательности действий компьютера.
Исполнители ничего ни про какие алгоритмы и процедуры не знают.
Например, при выполнении алгоритма парад
именно компьютер
"разбирается" в записи алгоритма на алгоритмическом языке;
анализирует заключенную в нем информацию;
"понимает", что сначала надо выполнить команду вниз
и только затем процедуруфлажок;
обеспечивает их выполннение, транслируя исполнителю соответствующие элементарные
команды;
и т.д.
Исполнитель же лишь выполняет последовательно поступающие от ЭВМ команды: вниз,
закрасить и т.д.
Выполнение команды вызова вспомогательного алгоритма
Чтобы хранящаяся в памяти компьютера процедура начала выполняться, надо, как уже
отмечалось, в основном алгоритме использовать команду вызова (своего
рода "волшебное заклинание": стоит произнести имя вспомогательного алгоритма
и тут же запускается его исполнение).
Действия, совершаемые ЭВМ и Роботом при выполнении этой команды,
можно проследить с помощью следующего примера
выполнения команд вызова.
Знакомясь с примером,
попытайесь, если Вы этого не сделали
вначале, до выполнения алгоритма угадать его результат;
постарайтесь проследить каждый из трех
этапов выполнения компьютером команды вызова;
попробуйте на каждом шаге выявить "главное
действующее лицо": компьютер или исполнитель.