Дата публикации:
05.12.2021
Автор:
Цицилин Алексей Николаевич
Название работы:
Информатика. КуМир. Методические рекомендации для подготовки учащихся общеобразовательных учреждений к ОГЭ по информатике.
Работа:
Знакомство с исполнителем Робот
Робот – один из исполнителей алгоритмов, доступный в системе программирования КуМир. Чтобы открыть окно робота, нужно нажать на кнопку на панели инструментов, указанную ниже на скриншоте:
Должно открыться следующее окно:
Как вы видите, робот живет на прямоугольном поле, разделённом на ячейки. Сам робот – это маленький ромбик в центре этого поля. Это поле по-другому называется стартовой обстановкой робота и сейчас мы научимся, как еѐ менять.
Итак, заходим в меню Инструменты - Редактировать стартовую обстановку робота.
Должно открыться следующее окно:
Как видно из раздела помощь, чтобы добавить препятствия на поле робота, нужно щелкнуть по границе между ячейками, а чтобы переместить робота, необходимо щелкнуть на нѐм левой кнопкой мыши и перетащить в другое место.
Попробуем изменить обстановку следующим образом:
Теперь осталось сохранить эту обстановку.
Выбираем пункт меню Обстановка - Сохранить как стартовую
Теперь, если ещѐ раз открыть текущую обстановку робота, то мы увидим, что произошли изменения:
Обратите внимание, что если открыто синее поле, то вы изменяете стартовую обстановку робота. Если же поле зелёное, то это текущее поле для работы с роботом.
Не путайте их!
Вот основные команды робота:
вверх перемещает робота на одну клетку вверх вниз перемещает робота на одну клетку вниз влево перемещает робота на одну клетку влево вправо перемещает робота на одну клетку вправо закрасить закрашивает ячейку, в которой стоит робот
Как вы уже поняли, первые 4 команды нужны для перемещения робота по полю. Итак, попробуем эти команды в действии.
В КуМире напишем следующий текст (точки в стоках 4, 5, 6 ставятся автоматически):
Команда Использовать Робот позволяет указать системе КуМир, что мы будем работать с исполнителем робот. Если мы не напишем эту команду, КуМир не сможет распознать команды, которые мы будем вводить.
Запись алг нач
кон
также обязательна и обозначает: алгоритм, начало, конец. Все команды нашего алгоритма для робота мы будем писать между ключевыми словами нач и кон.
Итак, реализуем простейший алгоритм для робота.
Обратите внимание, что если команды написаны верно, то они подсвечиваются синим цветом.
(нельзя написать команды вниз, право или верх, будьте внимательны!).
Выполнить алгоритм вы можете двумя способами:
1. По шагам – выполнить одну команду алгоритма и остановиться
2. Непрерывно – выполнить все команды алгоритма сразу.
Обратите внимание, что выполнение алгоритма всегда начинается из той точки, в которой изначально стоял робот.
Попробуем выполнить следующий алгоритм:
Робот стоял в левом верхнем углу прямоугольника. После непрерывного выполнения алгоритма он закрасит 3 клетки и окажется в клетке, указанной на скриншоте.
Что же произойдет, если мы попытаемся шагнуть вверх из начального положения, то есть пойти в стенку?
Как видно на скриншоте выше, робот разбился, потому что он не умеет проходить сквозь стенки.
Алгоритмы, в которых робот разбивается (неважно о какую стену), считаются ошибочными.
Примеры решения задач
Допустим, имеется стартовая обстановка, как показано ниже на скриншоте:
Задача 1 :
Робот расположен на поле напротив вертикальной стены, слева от неѐ, размер поля и расстояние
до стены неизвестны. Необходимо дойти роботом до стены.
Очевидно, что невозможно решить эту задачу просто написав последовательно много команд
вправо, потому что робот либо разобьется о стену, либо не дойдет до неё. Угадать это невозможно, так как расстояние до стены неизвестно.
Но из условия задачи можно понять, что нам нужно идти роботом вправо до тех пор, пока не встретится стена. То есть нам нужно много раз выполнить команду вправо, но остановиться тогда, когда на пути встретится стена. В этом нам поможет цикл типа пока.
Обратите внимание, что у нас в алгоритме появилась новая алгоритмическая структура – цикл.
нц пока – начало цикла пока
справа свободно – условие, проверяющее, свободна ли клетка справа. Если стены между текущей клеткой и соседней справа нет, то условие верно (возвращает значение да), иначе - условие неверно (возвращает нет).
кц – конец цикла
Цикл выполняется следую щи м образом:
1. Проверяется условие справа свободно (т.е. есть справа стена или её нет)
2. Если условие верно, делаем команды, написанные между нц и кц. Если нет – переходим на команду, записанную после кц
3. Возвращаемся на проверку условия
Аналогично, можно решить задачи движения до стены сверху, стены слева и стены снизу на бесконечном поле. Для этого стоит лишь поменять команду условия.
Роботу доступны следующие проверки:
слева свободно справа свободно снизу свободно сверху свободно
эти команды также, как и команды движения, относятся к системе команд робота.
Обратит е внимание, что команды вверху свободно, низ свободно или любые другие,
отличающиеся от приведѐнных выше, будут неверными.
Задача 2: Обойти роботом прямоугольник изнутри и закрасить все клетки, прилегающие к стенкам
(начальное положение робота: верхний левый угол).
Начальное положение
Результат
Задача 3: Дана стартовая обстановка, представленная на скриншоте ниже. Пройти роботом по коридору, закрашивая только те клетки, у которых присутствует нижняя стенка.
Мы знаем, как реализовать алгоритм движения до правой стены. Напишем и выполним его.
Теперь подумаем, как закрасить клетки, у которых есть нижняя стенка. Если мы просто добавим в цикл команду закрасить, то робот закрасит нам все клетки.
А нам нужно закрашивать только с тем условием, что снизу есть стена. Посмотрим, как добавить такое условие в алгоритм:
Команда если-то-все называется условной (условным оператором) и позволяет по условию выполнять либо одно действие, либо другое.
Посмотрим внимательно на условие не снизу свободно? Что же оно означает?
Команда снизу свободно проверяет свободно ли снизу и если свободно возвращает да, иначе нет.
НЕ – это отрицание этой команды. То есть не снизу свободно проверяет есть ли снизу стена. И если стена есть (снизу несвободно), то возвращает да, иначе нет.
В итоге, команда закрасить выполняется только тогда, когда снизу стена. Это нам и было нужно.
Стартовая обстановка Задание
Приложение
Задание 15.1.
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды—это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть командазакрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды—это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условиемесли, имеющим следующий вид:
еслиусловието
последовательность команд
все
Здесьусловие—одна из команд проверки условия.Последовательность команд—это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связкии, или, не,например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать циклпока, имеющий следующий вид:
нц покаусловие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле имеется стена, состоящая из 5 последовательных отрезков, расположенных змейкой: вправо, вниз, влево, вниз, вправо, все отрезки неизвестной длины. Робот находится в самой левой клетке непосредственно под верхней горизонтальной стеной. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой Р).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные ниже первого и левее второго отрезков стены и левее четвёртого и ниже пятого отрезков стены. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок). Клетка X также должна быть закрашена.
При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Решение.
15.1Следующий алгоритм выполнит требуемую задачу.
использовать Робот
алг
нач
нц пока справа свободно
закрасить
вправо
кц
нц пока снизу свободно
закрасить
вниз
кц
закрасить
нц пока не (снизу свободно)
влево
кц
вниз
нц пока не (справа свободно)
закрасить
вниз
кц
закрасить
вправо
нц пока не (сверху свободно)
закрасить
вправо
кц
кон
Задание 15.2
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды—это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть командазакрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды—это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условиемесли, имеющим следующий вид:
еслиусловието
последовательность команд
все
Здесьусловие—одна из команд проверки условия.Последовательность команд—это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связкии, или, не,например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать циклпока, имеющий следующий вид:
нц покаусловие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле имеется стена, состоящая из 5 последовательных отрезков, расположенных змейкой: вниз, вправо, вверх, вправо, вниз. Все отрезки неизвестной длины. Робот находится в клетке, расположенной слева от верхнего края первой вертикальной стены. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой Р).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные левее первого и ниже второго отрезков стены и ниже четвёртого и левее пятого отрезков стены. Робот должен закрасить только клетки, удовлетворяющие данному условию. Клетка X также должна быть закрашена. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Решение.
15.2Следующий алгоритм выполнит требуемую задачу.
использовать Робот
алг
нач
нц пока не справа свободно
закрасить
вниз
кц
закрасить
вправо
нц пока не сверху свободно
закрасить
вправо
кц
нц пока сверху свободно
вверх
кц
нц пока справа свободно
закрасить
вправо
кц
нц пока не справа свободно
закрасить
вниз
кц
кон
Задание 15.3
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды—это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть командазакрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды—это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условиемесли, имеющим следующий вид:
еслиусловието
последовательность команд
все
Здесьусловие—одна из команд проверки условия.Последовательность команд—это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связкии, или, не,например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать циклпока, имеющий следующий вид:
нц покаусловие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле имеется лестница. Сначала лестница спускается вниз слева направо, потом поднимается вверх также слева направо. После подъема лестница переходит в вертикальную стену. Высота каждой ступени—1 клетка, ширина—1 клетка. Количество ступенек, ведущих вверх, и количество ступенек, ведущих вниз, неизвестно. Между спуском и подъемом ширина площадки—1 клетка. Робот находится в клетке, расположенной в начале спуска. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой Р) .
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно над лестницей, как показано на рисунке. Требуется закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Решение.
15.3.Следующий алгоритм выполнит требуемую задачу.
использовать Робот
алг
нач
вправо
вниз
нц пока справа свободно
закрасить
вправо
закрасить
вниз
кц
закрасить
вверх
нц пока справа свободно
вправо
закрасить
вверх
закрасить
кц
кон
2
3
4
5
6
7
8
9
10
11
Цицилин А.Н.
г.Семилуки
2021г.
Скачать работу
Робот – один из исполнителей алгоритмов, доступный в системе программирования КуМир. Чтобы открыть окно робота, нужно нажать на кнопку на панели инструментов, указанную ниже на скриншоте:
Должно открыться следующее окно:
Как вы видите, робот живет на прямоугольном поле, разделённом на ячейки. Сам робот – это маленький ромбик в центре этого поля. Это поле по-другому называется стартовой обстановкой робота и сейчас мы научимся, как еѐ менять.
Итак, заходим в меню Инструменты - Редактировать стартовую обстановку робота.
Должно открыться следующее окно:
Как видно из раздела помощь, чтобы добавить препятствия на поле робота, нужно щелкнуть по границе между ячейками, а чтобы переместить робота, необходимо щелкнуть на нѐм левой кнопкой мыши и перетащить в другое место.
Попробуем изменить обстановку следующим образом:
Теперь осталось сохранить эту обстановку.
Выбираем пункт меню Обстановка - Сохранить как стартовую
Теперь, если ещѐ раз открыть текущую обстановку робота, то мы увидим, что произошли изменения:
Обратите внимание, что если открыто синее поле, то вы изменяете стартовую обстановку робота. Если же поле зелёное, то это текущее поле для работы с роботом.
Не путайте их!
Вот основные команды робота:
вверх перемещает робота на одну клетку вверх вниз перемещает робота на одну клетку вниз влево перемещает робота на одну клетку влево вправо перемещает робота на одну клетку вправо закрасить закрашивает ячейку, в которой стоит робот
Как вы уже поняли, первые 4 команды нужны для перемещения робота по полю. Итак, попробуем эти команды в действии.
В КуМире напишем следующий текст (точки в стоках 4, 5, 6 ставятся автоматически):
Команда Использовать Робот позволяет указать системе КуМир, что мы будем работать с исполнителем робот. Если мы не напишем эту команду, КуМир не сможет распознать команды, которые мы будем вводить.
Запись алг нач
кон
также обязательна и обозначает: алгоритм, начало, конец. Все команды нашего алгоритма для робота мы будем писать между ключевыми словами нач и кон.
Итак, реализуем простейший алгоритм для робота.
Обратите внимание, что если команды написаны верно, то они подсвечиваются синим цветом.
(нельзя написать команды вниз, право или верх, будьте внимательны!).
Выполнить алгоритм вы можете двумя способами:
1. По шагам – выполнить одну команду алгоритма и остановиться
2. Непрерывно – выполнить все команды алгоритма сразу.
Обратите внимание, что выполнение алгоритма всегда начинается из той точки, в которой изначально стоял робот.
Попробуем выполнить следующий алгоритм:
Робот стоял в левом верхнем углу прямоугольника. После непрерывного выполнения алгоритма он закрасит 3 клетки и окажется в клетке, указанной на скриншоте.
Что же произойдет, если мы попытаемся шагнуть вверх из начального положения, то есть пойти в стенку?
Как видно на скриншоте выше, робот разбился, потому что он не умеет проходить сквозь стенки.
Алгоритмы, в которых робот разбивается (неважно о какую стену), считаются ошибочными.
Примеры решения задач
Допустим, имеется стартовая обстановка, как показано ниже на скриншоте:
Задача 1 :
Робот расположен на поле напротив вертикальной стены, слева от неѐ, размер поля и расстояние
до стены неизвестны. Необходимо дойти роботом до стены.
Очевидно, что невозможно решить эту задачу просто написав последовательно много команд
вправо, потому что робот либо разобьется о стену, либо не дойдет до неё. Угадать это невозможно, так как расстояние до стены неизвестно.
Но из условия задачи можно понять, что нам нужно идти роботом вправо до тех пор, пока не встретится стена. То есть нам нужно много раз выполнить команду вправо, но остановиться тогда, когда на пути встретится стена. В этом нам поможет цикл типа пока.
Обратите внимание, что у нас в алгоритме появилась новая алгоритмическая структура – цикл.
нц пока – начало цикла пока
справа свободно – условие, проверяющее, свободна ли клетка справа. Если стены между текущей клеткой и соседней справа нет, то условие верно (возвращает значение да), иначе - условие неверно (возвращает нет).
кц – конец цикла
Цикл выполняется следую щи м образом:
1. Проверяется условие справа свободно (т.е. есть справа стена или её нет)
2. Если условие верно, делаем команды, написанные между нц и кц. Если нет – переходим на команду, записанную после кц
3. Возвращаемся на проверку условия
Аналогично, можно решить задачи движения до стены сверху, стены слева и стены снизу на бесконечном поле. Для этого стоит лишь поменять команду условия.
Роботу доступны следующие проверки:
слева свободно справа свободно снизу свободно сверху свободно
эти команды также, как и команды движения, относятся к системе команд робота.
Обратит е внимание, что команды вверху свободно, низ свободно или любые другие,
отличающиеся от приведѐнных выше, будут неверными.
Задача 2: Обойти роботом прямоугольник изнутри и закрасить все клетки, прилегающие к стенкам
(начальное положение робота: верхний левый угол).
Начальное положение
Результат
Задача 3: Дана стартовая обстановка, представленная на скриншоте ниже. Пройти роботом по коридору, закрашивая только те клетки, у которых присутствует нижняя стенка.
Мы знаем, как реализовать алгоритм движения до правой стены. Напишем и выполним его.
Теперь подумаем, как закрасить клетки, у которых есть нижняя стенка. Если мы просто добавим в цикл команду закрасить, то робот закрасит нам все клетки.
А нам нужно закрашивать только с тем условием, что снизу есть стена. Посмотрим, как добавить такое условие в алгоритм:
Команда если-то-все называется условной (условным оператором) и позволяет по условию выполнять либо одно действие, либо другое.
Посмотрим внимательно на условие не снизу свободно? Что же оно означает?
Команда снизу свободно проверяет свободно ли снизу и если свободно возвращает да, иначе нет.
НЕ – это отрицание этой команды. То есть не снизу свободно проверяет есть ли снизу стена. И если стена есть (снизу несвободно), то возвращает да, иначе нет.
В итоге, команда закрасить выполняется только тогда, когда снизу стена. Это нам и было нужно.
Стартовая обстановка Задание
Приложение
Задание 15.1.
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды—это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть командазакрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды—это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условиемесли, имеющим следующий вид:
еслиусловието
последовательность команд
все
Здесьусловие—одна из команд проверки условия.Последовательность команд—это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связкии, или, не,например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать циклпока, имеющий следующий вид:
нц покаусловие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле имеется стена, состоящая из 5 последовательных отрезков, расположенных змейкой: вправо, вниз, влево, вниз, вправо, все отрезки неизвестной длины. Робот находится в самой левой клетке непосредственно под верхней горизонтальной стеной. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой Р).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные ниже первого и левее второго отрезков стены и левее четвёртого и ниже пятого отрезков стены. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок). Клетка X также должна быть закрашена.
При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Решение.
15.1Следующий алгоритм выполнит требуемую задачу.
использовать Робот
алг
нач
нц пока справа свободно
закрасить
вправо
кц
нц пока снизу свободно
закрасить
вниз
кц
закрасить
нц пока не (снизу свободно)
влево
кц
вниз
нц пока не (справа свободно)
закрасить
вниз
кц
закрасить
вправо
нц пока не (сверху свободно)
закрасить
вправо
кц
кон
Задание 15.2
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды—это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть командазакрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды—это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условиемесли, имеющим следующий вид:
еслиусловието
последовательность команд
все
Здесьусловие—одна из команд проверки условия.Последовательность команд—это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связкии, или, не,например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать циклпока, имеющий следующий вид:
нц покаусловие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле имеется стена, состоящая из 5 последовательных отрезков, расположенных змейкой: вниз, вправо, вверх, вправо, вниз. Все отрезки неизвестной длины. Робот находится в клетке, расположенной слева от верхнего края первой вертикальной стены. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой Р).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные левее первого и ниже второго отрезков стены и ниже четвёртого и левее пятого отрезков стены. Робот должен закрасить только клетки, удовлетворяющие данному условию. Клетка X также должна быть закрашена. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Решение.
15.2Следующий алгоритм выполнит требуемую задачу.
использовать Робот
алг
нач
нц пока не справа свободно
закрасить
вниз
кц
закрасить
вправо
нц пока не сверху свободно
закрасить
вправо
кц
нц пока сверху свободно
вверх
кц
нц пока справа свободно
закрасить
вправо
кц
нц пока не справа свободно
закрасить
вниз
кц
кон
Задание 15.3
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды—это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть командазакрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды—это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условиемесли, имеющим следующий вид:
еслиусловието
последовательность команд
все
Здесьусловие—одна из команд проверки условия.Последовательность команд—это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связкии, или, не,например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать циклпока, имеющий следующий вид:
нц покаусловие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле имеется лестница. Сначала лестница спускается вниз слева направо, потом поднимается вверх также слева направо. После подъема лестница переходит в вертикальную стену. Высота каждой ступени—1 клетка, ширина—1 клетка. Количество ступенек, ведущих вверх, и количество ступенек, ведущих вниз, неизвестно. Между спуском и подъемом ширина площадки—1 клетка. Робот находится в клетке, расположенной в начале спуска. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой Р) .
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно над лестницей, как показано на рисунке. Требуется закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Решение.
15.3.Следующий алгоритм выполнит требуемую задачу.
использовать Робот
алг
нач
вправо
вниз
нц пока справа свободно
закрасить
вправо
закрасить
вниз
кц
закрасить
вверх
нц пока справа свободно
вправо
закрасить
вверх
закрасить
кц
кон
2
3
4
5
6
7
8
9
10
11
Цицилин А.Н.
г.Семилуки
2021г.
Преимущества нашего сервиса
-
Все мероприятия на нашем портале проводятся строго в соответствии с действующим законодательством и ФГОС
-
Результаты олимпиад доступны моментально. Результаты участия в творческом конкурсе или публикации статей – в течение 1 рабочего дня
-
Участие в любом конкурсе – бесплатное. Вы оплачиваете изготовление документа только когда знаете результат
На портале «Солнечный Свет»
более
2000
тестов
97%
клиентов
свыше
1000000
участий
На нашем портале свыше
2 000 тестов, олимпиад
и викторин
Довольны порталом
и становятся
постоянными
клиентами
Наши олимпиады прошли
свыше 1 000 000 раз,
суммарно участвовало
300 000 человек
1
шаг
Участие
Пройдите тестирование по выбранной теме
2
шаг
Результат
Довольны результатом? Перейдите в свой личный кабинет
3
шаг
Диплом
Введите данные для оформления диплома победителя
Более 20-ти шаблонов и образцов
для ваших дипломов и свидетельств