Занятие 4. Программирование исполнителя

(поделиться сведениями)

Программирование и программы

В режиме непосредственного выполнения команд, который был рассмотрен на предыдущем занятии, исполнитель выполнял команды сразу (непосредственно) после их получения. Такой способ работы подходит не всегда. Например, исполнитель может находиться далеко от центра управления (в соседнем помещении, в другом городе или даже на другой планете) или действия надо выполнить в неудобное время (например, ночью). Всё это затрудняет взаимодействие оператора (того, кто отдаёт команды) с исполнителем.

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

Программа для исполнителя ГРИС представляет собой последовательность строк текста. В каждой строке записывается одна команда. Команды программы будут выполняться исполнителем в том порядке, в каком они записаны в программе — сверху вниз. При программировании важно помнить об этом и соблюдать правильный порядок команд.

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

шаг
шаг
поворот
поворот
поворот
шаг
шаг
поворот
поворот
поворот
шаг
шаг
поворот
поворот
поворот
шаг
шаг

Действуя по этой программе, исполнитель нарисует квадрат, двигаясь по часовой стрелке. Но из экспериментов с исполнителем, которые проводились в непосредственном режиме, должно быть понятно, что исполнителю проще поворачиваться против часовой стрелки. Поэтому программу можно записать так:

поворот
поворот
поворот
шаг
шаг
поворот
шаг
шаг
поворот
шаг
шаг
поворот
шаг
шаг

Вторая программа короче первой, но результатом её выполнения будет точно такой же квадрат, как и при выполнении первой программы (рис. 4.1). Программы, выполнение которых приводит к одному и тому же результату, называются эквивалентными. При этом эквивалентные программы не обязательно одинаковые — в них может быть различное количество команд, команды могут идти в разных порядках, и они могутприводить к одному результату разными способами. Строго говоря, эти две программы не совсем эквивалентны, потому что после выполнения первой программы исполнитель смотрит вверх, а после выполнения второй — влево.

Квадраты
Рис. 4.1. Квадраты, нарисованные по первой (слева) и второй (справа) программе. Стрелками указано направление рисования. Исполнитель обозначен в положении после рисования.

Ввод программы

Чтобы запрограммировать исполнителя, надо перейти во второй режим ГРИС — режим программирования (рис. 4.2). В этом режиме активируется редактор текста программы — в нём можно набирать команды, составляя программу.

Переход в режим программирования из режима непосредственного выполнения команд осуществляется с помощью пункта меню TABпрограммирование. Слова команд можно набирать по буквам с клавиатуры, завершая каждую команду нажатием клавиши <Enter> для перехода на новую строку. Можно использовать приём копировать-вставить с помощью комбинаций клавиш <CTRL>+<C> и <CTRL>+<V>, если требуется растиражировать какой-то фрагмент программы или поместить в редактор текст программы из внешнего источника (например, с сайта).

Режим программирования
Рис. 4.2. ГРИС в режиме программирования.

Существенно ускорить процесс ввода программы позволяет возможность одномоментного набора целых слов-команд с помощью соответствующих пунктов меню или функциональных клавиш. Первые три пункта строки меню, как и в режиме непосредственного выполнения команд, соответствуют командам прыжок, шаг, поворот. Только при выборе этих пунктов вместо реакции исполнителя будет появляться соответствующее слово-команда в текстовом редакторе — там, где находится курсор (вертикальная черта, обозначающая текущую позицию).

Пункт меню F4… позволяет вводить команды управления ходом выполнения программы, которые будут изучаться на дальнейших занятиях. Он приводит к отображению подменю — меню следующего уровня (рис. 4.3). Пока что использовать его не надо. Если же выбор этого пункта меню произошёл случайно, то вернуться к основному меню можно с помощью пункта F10назад.

Подменю F4
Рис. 4.3. Меню следующего уровня, для выхода из которого надо выбрать F10назад.

Пункт меню ESCстереть предназначен для того, чтобы очистить содержимое редактора программы, то есть удалить весь текст, который был набран. Чтобы избежать случайного удаления текста программы, после выбора этого пункта меню появляется окно с запросом подтверждения: Стереть всю программу?. Если в этом окне нажать кнопку Нет, то действие будет отменено, а если Да, то редактор очистится.

Когда программа будет набрана, её можно выполнить.

Выполнение программы

Переход из режима программирования в режим выполнения программы осуществляется с помощью пункта меню TABвыполнение. При этом область редактора текста программы закрывается от внесения изменений, но текст программы по-прежнему отображается рядом с рабочем полем, на которое переносится фокус внимания. Естественно, новому режиму соответствует своя собственная строка меню (рис. 4.4).

Режим выполнения программы
Рис. 4.4. ГРИС в режиме выполнения программы.

Среда ГРИС Букашка предлагает три способа выполнения программы: обычный, быстрый и пошаговый.

Чтобы выполнить программу обычным способом, надо воспользоваться пунктом меню F1пуск. Исполнитель начнёт считывать программу, набранную в редакторе, и выполнять её команды. Выполнение команды сопровождается анимацией, демонстрирующей действия исполнителя. Строка с выполняемой в данный момент командой в области редактора выделяется цветом. Это позволяет сопоставлять действия исполнителя с выполняемой им командой.

На время выполнения программы строка меню изменяет состав своих пунктов меню. Выполнение программы можно в любой момент прервать, если воспользоваться пунктом меню F1стоп. Кроме того, можно изменить способ выполнения программы на пошаговый (он будет рассмотрен немного позже) с помощью пункта меню F2отладка.

Выполнение программы обычным способом наглядно, но может занимать слишком много времени. Чтобы сразу увидеть результат выполнения программы исполнителем, можно выполнить её быстро, для чего следует воспользоваться пунктом меню F5результат. При выполнении программы этим способом отсутствует анимация исполнителя и не выделяются выполняемые команды в редакторе. Зато картинка на рабочем поле возникает гораздо быстрее.

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

Отладка
Рис. 4.5. Пошаговое выполнение программы (отладка).

Для передачи выделенной команды исполнителю на выполнение надо воспользоваться пунктом меню F3выполнить. Исполнитель выполнит команду обычным способом, с анимацией, после чего он остановится, а выделение в области редактирования переместится на следующую команду. Для выполнения следующей команды надо снова воспользоваться пунктом F3выполнить, и так далее.

Если в какой-то момент принцип работы программы станет понятен, то для выполнения оставшихся команд без промежуточных остановок можно использовать пункт меню F2дальше. В другом случае, если в программе будет обнаружена ошибка и дальнейшее выполнение программы теряет смысл, можно прервать отладку с помощью пункта меню F1сброс.

Дополнительные сведения

После выполнения программы на рабочем поле остаётся рисунок, созданный исполнителем, а сам исполнитель останавливается в конечной точке своего маршрута. Чтобы выполнить программу ещё раз, надо очистить рабочее поле и вернуть исполнителя в исходное положение. Для этого предназначен пункт меню ESCсброс.

Чтобы ввести другую программу для исполнителя, надо из режима выполнения программы перейти в режим программирования. Вернуться в предыдущий режим ГРИС Букашка нельзя. Поэтому придётся сначала с помощью пункта меню TABкомандование перейти в режим непосредственного выполнения команд, а из него с помощью пункта меню TABпрограммирование — в режим программирования.

В режиме программирования можно набирать слова команд с клавиатуры по буквам. При этом легко допустить ошибку. Например, вместо прыжок может быть набрано слово прфжок. Для исполнителя это — неизвестная команда, которую он не умеет выполнять. Если в ходе выполнения программы будет обнаружена ошибка, то во-первых, выполнение такой программы будет остановлено, а во-вторых, среда ГРИС уведомит об обнаруженной ошибке в области сообщений (рис. 4.6.)

Синтаксическая ошибка
Рис. 4.6. Обнаружение ошибки в программе при выполнении.

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