Перейти к содержимому

Как сделать лестницу в кумире

  • автор:

Практическая работа по информатике. Исполнитель Робот

Практическая работа по информатике. Исполнитель Робот

Часто на уроках и в задании 20.1 ОГЭ по информатике требуется исполнителем «Робот» спускаться или подниматься по лестнице. Надо понимать, что спуск или подъем по лестнице осуществляется одним циклом. Как правило, чтобы проверить работоспособность алгоритма необходимо добавлять ступени на лестнице. Алгоритм должен выполнятся независимо от количества ступеней, например, как для двух ступеней, так и для двадцати.

ЗАДАЧА

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

Исполнитель Робот лестница

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные на ступенях лестницы. Требуется закрасить только клетки, удовлетворяющие данному условию.

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

исполнитель робот лестница результат конечный результат

Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого количества ступеней. При исполнении алгоритма Робот не должен разрушиться.

РЕШЕНИЕ

Данную задачу будем решать в среде программирования КуМир. Откроем программу и перейдем в меню Робот — > Редактировать обстановку

исполнитель робот редактировать обстановку

Строим лестницу. тЛевой кнопкой мыши щелкаем по стенкам клетки. Ромб (робот) перемещаем в нужное место, зажав левую кнопку мыши

Исполнитель Робот лестница

Выходим из режима редактирования меню Робот — > Редактировать обстановку. Далее напишем на первой строчке команду «использовать Робот».

исполнитель робот команда использовать робот

Сначала вспомним некоторые команды для исполнителя Робот.

№ п/п Команда Обозначение
1 нц начало цикла
2 кц конец цикла
3 закрасить закрашиваетcя клетка
4 вверх, вниз, влево, вправо движение робота
5 нач, кон начало и конец программы

В задании сказано, что

Алгоритм должен решать задачу для произвольного размера поля и любого количества ступеней

Это означает, что Робот должен передвигаться с помощью цикла «Пока». Рассуждаем так: снизу под роботом стена, значит снизу не свободно. На 4 строчке редактора пишем команду

Внутри цикла необходимо последовательно выполнить команды:

вправо вниз закрасить вправо закрасить влево вниз закрасить вправо закрасить

Пути движения робота

Полностью готовая программа выглядит так:

использовать Робот алг нач нц пока снизу не свободно вправо вниз закрасить вправо закрасить влево вниз закрасить вправо закрасить кц кон

Для проверки алгоритма добавим ещё несколько ступеней и проверим результат

Исполнитель Робот итоговый результат

Итак, алгоритм закрашивает клетки при любом количестве ступеней лестницы.

0 67 769 просмотров

Вам также может быть интересно

Практическая работа по информатике. Среда программирования КуМир. Решение математической задачи

Практические работы 0 4 769 просмотров

Среда программирования КуМир Решение математической задачи Поезд, двигаясь равномерно со скоростью 93 км/ч, проезжает

Расчёт заработной платы сотрудников кафе

Практические работы 0 4 711 просмотров

Электронные таблицы в Microsoft Excel Расчёт заработной платы сотрудников кафе Данную практическую работу можно

Алгебра логики. Таблица истинности

Уроки 0 25 283 просмотров

Построить таблицу истинности для логического выражения. Информатика в 8 классе. Тема: «Основы алгебры логики».

ОГЭ по информатике задание 18

ОГЭ 0 6 543 просмотров

ОГЭ по информатике задание 18 Тема: «Осуществление поиска информации в Интернете» Приведены запросы к

Информатика. Нужно составить алгоритм. Программа «Кумир»

На бесконечном поле имеется лестница. Сначала лестница спускается вниз, потом под-нимается вверх. После подъема лестница пере-ходит в вертикальную стену. Высота каждой ступени — 1 клетка, ширина — 1 клетка. Коли-чество ступенек, ведущих вверх, и количество ступенек, ведущих вниз, неизвестно. Между спуском и подъемом ширина площадки — 1 клетка. Робот находится в клетке, расположен-ной в начале спуска. Напишите для Робота алго-ритм, закрашивающий все клетки, расположен-ные непосредственно над лестницей, как показа-но на рисунке. Конечное расположение Робота может быть произвольным.

Голосование за лучший ответ

Программисты у нас там → https://otvet.mail.ru/programming/

Евгения КураковаПрофи (682) 5 лет назад

нужно решение а) г) д)

ᛟᏔҨŁ₣ᛟ Искусственный Интеллект (280544) Программисты у нас там → https://otvet.mail.ru/programming/

Похожие вопросы

Информатика. КуМир. Методические рекомендации для подготовки учащихся общеобразовательных учреждений к ОГЭ по информатике.. Работа №41747

Информатика. КуМир. Методические рекомендации для подготовки учащихся общеобразовательных учреждений к ОГЭ по информатике.

Знакомство с исполнителем Робот
Робот – один из исполнителей алгоритмов, доступный в системе программирования КуМир. Чтобы открыть окно робота, нужно нажать на кнопку на панели инструментов, указанную ниже на скриншоте:
Должно открыться следующее окно:
Как вы видите, робот живет на прямоугольном поле, разделённом на ячейки. Сам робот – это маленький ромбик в центре этого поля. Это поле по-другому называется стартовой обстановкой робота и сейчас мы научимся, как еѐ менять.
Итак, заходим в меню Инструменты — Редактировать стартовую обстановку робота.
Должно открыться следующее окно:
Как видно из раздела помощь, чтобы добавить препятствия на поле робота, нужно щелкнуть по границе между ячейками, а чтобы переместить робота, необходимо щелкнуть на нѐм левой кнопкой мыши и перетащить в другое место.
Попробуем изменить обстановку следующим образом:
Теперь осталось сохранить эту обстановку.
Выбираем пункт меню Обстановка — Сохранить как стартовую
Теперь, если ещѐ раз открыть текущую обстановку робота, то мы увидим, что произошли изменения:
Обратите внимание, что если открыто синее поле, то вы изменяете стартовую обстановку робота. Если же поле зелёное, то это текущее поле для работы с роботом.
Не путайте их!
Вот основные команды робота:
вверх перемещает робота на одну клетку вверх вниз перемещает робота на одну клетку вниз влево перемещает робота на одну клетку влево вправо перемещает робота на одну клетку вправо закрасить закрашивает ячейку, в которой стоит робот
Как вы уже поняли, первые 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г.

Исполнитель Робот. Решение задач.

Нажмите, чтобы узнать подробности

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

Просмотр содержимого документа
«Исполнитель Робот. Решение задач.»

использовать Робот
алг
нач
. нц пока снизу стена и справа свободно
. . вправо
. кц
. нц пока справа стена
. . вверх
. . нц 3 раз
. . . вправо
. . . закрасить
. . кц
. кц
кон

использовать Робот
алг
нач
. | Поднимаемся вверх по первой лестнице до верхней площадки и красим клетки
. нц пока справа стена
. . закрасить
. . вверх
. . закрасить
. . вправо
. кц
. | Закрашиваем клетку на верхней площадке
. закрасить
. вправо
. | Проверяем условие, что лестница еще не закончилась, спускаемся по ней
. | и красим клетки
. нц пока снизу свободно
. . закрасить
. . вниз
. . закрасить
. . вправо
. кц
кон

Исходное поле Робота:

Сначала идет горизонтальная стена, ее длина неизвестна. Далее идет лесенка вниз, высота ступеньки – 1 клетка, длина ступеньки – 2 клетки. Количество ступенек неизвестно. Далее идет лесенка вверх, высота ступеньки – 1 клетка, длина ступеньки – 2 клетки. Количество ступенек неизвестно. Необходимо закрасить клетки над ступеньками обоих лесенок. Как показано на 2 рисунке.

использовать Робот
алг
нач
. | Двигаемся вдоль нижней стены до начала лесенки
. нц пока снизу стена
. . вправо
. кц
. вниз
. |Спускаемся вниз по первой лестнице до нижней площадки и красим клетки
. нц пока слева стена
. . закрасить
. . вправо
. . закрасить
. . если справа свободно
. . . то вправо
. . все
. . если снизу свободно
. . . то вниз
. . все
. кц
. | Поднимаемся по второй лесенке и красим клетки
. нц пока справа стена
. . вверх
. . вправо
. . закрасить
. . вправо
. . закрасить
. кц
кон

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *