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