"Информатика (в 2 частях)", Павлов Д.И., Полежаева О.А., Коробкова Л.Н. и др./ Под ред. Горячева А.В.
Два исполнителя — это объекты, каждый из которых действует по своей системе команд. Одну задачу они могут решать по-разному: у них бывают разные начальные положения, возможности и ограничения. Чтобы получить нужный результат, нужно подобрать команды отдельно для каждого, распределить между исполнителями действия и определить их порядок. При проверке важно проследить не только за итогом, но и за каждым шагом.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Исполнитель — объект, который понимает и выполняет команды из заданного набора. Это может быть человек, робот или программа, если для него определены понятные действия. Сначала нужно выяснить, что именно умеет делать исполнитель. Иначе нельзя составить для него выполнимый алгоритм.
Система команд исполнителя — все команды, которые может выполнять данный исполнитель. Например, один робот может двигаться по клеткам, а другой — поворачивать и захватывать предметы. Перечень команд показывает, какими действиями можно решить задачу. Он помогает не включить в программу неизвестные исполнителю указания.
Программа — точная последовательность команд, предназначенная для конкретного исполнителя. Исполнитель выполняет команды по порядку, поэтому перестановка команд может изменить результат. Программу составляют с учётом доступных действий и начального состояния. Так замысел решения превращается в проверяемые шаги.
Два исполнителя — два объекта с отдельными системами команд, для которых составляются и выполняются свои программы. Они могут вместе решать одну задачу, но каждый действует только по своей программе. Это понятие нужно, чтобы различать действия объектов и учитывать их возможности. Так проще разделить общую работу на части.
Одну задачу приходится описывать разными программами, когда её выполняют разные исполнители. Причина в том, что наборы доступных команд могут отличаться: один объект умеет перемещать предмет, другой — только менять его положение поворотом. Кроме того, исполнители могут начинать работу в разных местах. Поэтому одинаковая последовательность команд не обязательно приведёт обоих к цели.
Чтобы сравнить исполнителей, сначала записывают их исходные положения, затем системы команд и ограничения, а после — требуемый результат. Исходное положение нужно учитывать, потому что оно определяет, какие действия приведут к цели. Системы команд показывают, какие способы решения доступны каждому. Сравнение результата помогает понять, одинаковую ли цель должны получить оба объекта.
Команда, понятная одному исполнителю, может быть неизвестна другому, потому что набор допустимых указаний у каждого свой. Даже знакомая команда бывает невыполнимой: например, шаг вперёд невозможен, если путь перекрыт или исполнитель упирается в границу. Поэтому недостаточно узнать название команды. Нужно проверить и её принадлежность системе команд, и условия выполнения.
Действия распределяют между исполнителями по их возможностям и по тому, какие результаты нужны дальше. Если один готовит объект, а другой завершает работу, сначала должен сработать первый. Иначе второй получит неподготовленный объект и не сможет выполнить свою часть. Значит, план должен указывать не только кто что делает, но и в какой очередности.
Правильность общей работы проверяют по каждой программе и по связи между действиями исполнителей. Сначала выясняют, разрешена ли каждая команда и можно ли выполнить её в текущем состоянии. Затем прослеживают изменения после каждого шага, включая переход от работы одного исполнителя к работе другого. В конце проверяют, получен ли требуемый результат без нарушения ограничений на промежуточных этапах.
| Характеристика | Исполнитель 1 | Исполнитель 2 |
|---|---|---|
| Исходное положение | Где и в каком состоянии начинает работу | Где и в каком состоянии начинает работу |
| Система команд | Все доступные ему команды | Все доступные ему команды |
| Допустимые действия | Что он может сделать по условию | Что он может сделать по условию |
| Ограничения при выполнении команд | Какие условия нельзя нарушать | Какие условия нельзя нарушать |
| Получаемый результат | Что должно измениться после работы | Что должно измениться после работы |
| Программа для решения общей задачи | Последовательность его команд | Последовательность его команд |
Заполните таблицу до составления программ: так различия исполнителей будут видны сразу. Сверяйте каждую команду с нужной колонкой и учитывайте, в каком состоянии исполнитель начинает работу.
Условие. Два исполнителя находятся в разных начальных точках и должны прийти в одну указанную точку. У каждого есть своя система команд перемещения. Нужно составить отдельную программу для каждого и учесть возможные препятствия.
Ответ. Получаются две программы, которые могут быть разными, хотя приводят к одной точке. Каждая команда в них должна быть допустима для своего исполнителя.
Условие. Один исполнитель должен подготовить объект, а второй — завершить построение. Требуется распределить действия и определить их порядок. Оба должны использовать только собственные команды.
Ответ. Работа делится на две части с чёткой очередностью. Второй исполнитель начинает только после того, как первый подготовил объект.
Условие. В программе первого исполнителя есть неизвестная ему команда, а программа второго заставляет его нарушить ограничение при движении. Нужно найти и исправить ошибки, не меняя цель задачи.
Ответ. Исправленные программы содержат только команды соответствующих исполнителей и не нарушают ограничений. Цель считается достигнутой, если это подтверждает проверка всех промежуточных шагов.
Ученик использует команду первого исполнителя в программе второго, потому что считает названия команд понятными всем объектам. Но у каждого своя система команд, и неизвестное указание выполнить нельзя. Сверьте каждую команду с перечнем для нужного исполнителя. Если её там нет, замените действие доступным способом.
При смешивании последовательностей действия одного исполнителя приписывают другому или выполняют не в том порядке. Так бывает, когда программу записывают как общий список, не отмечая, кому принадлежит команда. Разделите записи и подпишите исполнителей. Затем проверьте, что переходы между частями соответствуют плану работы.
Если забыть исходное положение, можно решить, что одна программа подходит всем. Однако одно и то же движение из разных точек приводит в разные места. Перед проверкой обозначьте старт каждого объекта. После этого проследите его путь отдельно.
Проверка только конечного результата не обнаруживает нарушения на промежуточном шаге. Например, исполнитель может в итоге оказаться у цели, хотя по дороге пересёк запрещённую границу. Проверьте состояние после каждой команды, а не только последней. Так выявляются ошибки, которые скрывает правильный на вид итог.
Для работы с двумя исполнителями нужны понятия алгоритма, команды, исполнителя, системы команд и программы. Если ученик уже умеет записывать последовательность действий и проверять её выполнение, ему проще разделить общую задачу на части. Позже эти идеи пригодятся при составлении алгоритмов для нескольких объектов и моделировании их совместной работы. Они также помогают понимать программы, в которых взаимодействуют разные устройства или программные объекты.
Можно ли одну программу использовать для обоих исполнителей?
Иногда можно, если оба исполнителя понимают все команды программы и могут выполнить их из своих начальных положений. Но чаще требуются разные программы из-за различий в системах команд, условиях и ограничениях.
Что делать, если один исполнитель не понимает нужную команду?
Нельзя включать эту команду в его программу. Нужно найти другой способ выполнить действие с помощью доступных команд или поручить действие второму исполнителю, если это возможно.
Как определить, кому поручить конкретное действие?
Сравните системы команд исполнителей и проверьте, кто может выполнить действие без нарушения ограничений. Затем учтите, какое исходное состояние нужно для этого действия и что должно быть готово заранее.
Важно ли, в каком порядке исполнители выполняют команды?
Да, порядок может влиять на результат: действие одного исполнителя иногда создаёт условия для работы другого. Сначала определите зависимости между действиями, а затем задайте последовательность их выполнения.
Как проверить правильность программы для двух исполнителей?
Проверьте, что каждая команда есть в системе команд того исполнителя, которому она назначена, и выполнима в текущем состоянии. Затем проследите весь порядок действий и убедитесь, что получен нужный результат.
24. Два исполнителя