Попробуем разобраться с заданием ОГЭ №15 по информатике. Данное задание делится на два. То есть, тут есть выбор. Оба задания связаны с темой “Алгоритмизация и программирование”. В данной статье рассмотрим задание в среде программирования — Кумир.
Для начала надо понять как можно там работать и какие команды существуют. Прежде всего в программе Кумир существуют разные исполнители. У каждого из них свои команды, предназначение. В нашем случае нужно будет работать с таким исполнителем, как Робот.
У него не так много своих команд:
- вверх — движение вверх на одну клетку;
- вниз — движение вниз на одну клетку;
- вправо — движение вправо на одну клетку;
- влево — движение влево на одну клетку;
- закрасить — закрасить текущее местоположение (клетку).
Существуют общие команды среды программирования, среди них создание цикла и алгоритмов. Рассмотрим создание циклов:
Сам цикл начинается с команды “нц” — начать цикл, а заканчивается “кц” — конец цикла.
Цикл можно повторять определённое количество раз.
Цикл по природе своей повторяет, написанное внутри него, определённое количество раз.
В нашем случае нужен будет именно цикл с предусловием. Рассмотрим условия цикла поближе:
- пока сверху свободно — до тех пор, пока свободно сверху совершаются действия;
- пока сверху не свободно — до тех пор, пока сверху стена совершаются действия;
- пока снизу свободно — до тех пор, пока свободно снизу совершаются действия;
- пока снизу не свободно — до тех пор, пока снизу стена совершаются действия;
- пока справа свободно — до тех пор. пока свободно справа совершаются действия;
- пока справа не свободно — до тех пор, пока справа стена совершаются действия;
- пока слева свободно — до тех пор, пока свободно слева совершаются действия;
- пока слева не свободно — до тех пор, пока слева стена совершаются действия.
Конструкцию “не свободно” можно заметить на “стена”.
Эти условия можно сочетать за счёт оператора “И”. Например, “пока сверху свободно и слева стена”.
Попробуем рассмотреть задание и решить его.
Пример
На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной стены соединён с верхним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно под горизонтальной стеной у её правого конца. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»). Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно ниже горизонтальной стены и правее вертикальной стены. Проходы должны остаться не закрашенными. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого рисунка Робот должен закрасить следующие клетки (см. рис.). При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Решение
Откроем среду программирования — Кумир. Нас встретит следующий интерфейс программы. Нам необходимо создать такую же обстановку робота и написать программу, чтобы он успешно прошёл путь и закрасил нужные клетки.
Для начала нам необходимо создать стартовую обстановку (поле для нашего робота), как на примере из задания. Зайдём во вкладку “Робот” → “Новая обстановка”.
Далее укажем необходимое количество строк и столбцов, предварительно посчитав сколько их в образце. После того, как записали нужное количество, нажимаем “ОК”.
После этого необходимо расставить “стены” как на примере (точно так же). Для построения стены просто нажимаем на линию, где хотим построить стену. На кнопки “плюс” и “минус” также можно управлять размерами обстановки.
Также установим начальное положение робота как на образце, для этого перетащим его. После создания стен нажимаем “Робот” → “Редактировать обстановку” (чтобы перестать её редактировать, т.к. уже находимся в режиме редактирования).
Теперь можем уже создавать алгоритм. Выберем исполнителя Робот. Зайдём во вкладку “Вставка” и нажмём на “использовать Робот”. После этого Кумир начнёт воспринимать его команды. Команду можно написать и самостоятельно.
Все наши команды должны быть оформлены через циклы. Без них задание считается проваленным (0 баллов). Поэтому будем использовать циклы. Пройдём первую часть, воспользуясь циклом:
Пройдём пробел за счёт цикла:
Далее воспользуемся ещё одним циклом:
Продолжим следующим циклом:
Теперь снова нужно пройти пробел:
Осталось закончить алгоритм, закрасив оставшуюся часть:
Посмотрим на проделанную работу.
В задании может быть условие, чтобы вернуть робота в начальное положение, а может быть сказано, что не требует возвращения. Тогда он остаётся там, где остановился после алгоритма. Если нужно вернуть, тогда также придётся возвращать его с помощью циклов.
Сохранение
Чтобы сохранить программу, нужно зайти во вкладку “Программа” → “Сохранить как..”.
Для сохранения рабочей обстановки зайдём во вкладку “Робот” → “Сохранить обстановку..”.
Рекомендации по работе
- Обязательно использовать циклы;
- Можно лишь раз использовать команду без цикла (но лучше не надо);
- Проверка работы сначала осуществляется на вашей обстановке, а потом уже на другой с такой же структурой, но с другими размерами. Поэтому очень важно использовать циклы.
- Для запуска программы нажимаем на стрелочку “Play“. Кумир работает как интерпретатор, то есть выполняет команды построчно.
Понравилась статья? Хочешь разбираться в информатике, программировании и уметь работать в разных программах? Тогда ставь лайк, подпишись на канал и поделись статьей с друзьями!
Читайте также:
#информатика #огэ #разбор #задания #решение #экзамен
Исполнитель Робот
Среда программирования КуМир
Часто на уроках и в задании 20.1 ОГЭ по информатике требуется исполнителем «Робот» спускаться или подниматься по лестнице. Надо понимать, что спуск или подъем по лестнице осуществляется одним циклом. Как правило, чтобы проверить работоспособность алгоритма необходимо добавлять ступени на лестнице. Алгоритм должен выполнятся независимо от количества ступеней, например, как для двух ступеней, так и для двадцати.
ЗАДАЧА
На бесконечном поле имеется горизонтальная стена, бесконечно продолжается влево и заканчивается лестницей, которая спускается слева направо. Высота каждой ступени — две клетки, ширина — две клетки. Робот находится на горизонтальной стене для спуска по лестнице. На рисунке указан один из способов расположения лестницы и Робота( Робот обозначен символом ◊).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные на ступенях лестницы. Требуется закрасить только клетки, удовлетворяющие данному условию.
Например, для приведенного выше рисунка Робот должен закрасить клетки:
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого количества ступеней. При исполнении алгоритма Робот не должен разрушиться.
РЕШЕНИЕ
Данную задачу будем решать в среде программирования КуМир. Откроем программу и перейдем в меню Робот — > Редактировать обстановку
Строим лестницу. тЛевой кнопкой мыши щелкаем по стенкам клетки. Ромб (робот) перемещаем в нужное место, зажав левую кнопку мыши
Выходим из режима редактирования меню Робот — > Редактировать обстановку. Далее напишем на первой строчке команду «использовать Робот».
Сначала вспомним некоторые команды для исполнителя Робот.
№ п/п | Команда | Обозначение |
1 | нц | начало цикла |
2 | кц | конец цикла |
3 | закрасить | закрашиваетcя клетка |
4 | вверх, вниз, влево, вправо | движение робота |
5 | нач, кон | начало и конец программы |
В задании сказано, что
Алгоритм должен решать задачу для произвольного размера поля и любого количества ступеней
Это означает, что Робот должен передвигаться с помощью цикла «Пока». Рассуждаем так: снизу под роботом стена, значит снизу не свободно. На 4 строчке редактора пишем команду
нц пока снизу не свободно.
Внутри цикла необходимо последовательно выполнить команды:
вправо
вниз
закрасить
вправо
закрасить
влево
вниз
закрасить
вправо
закрасить
Полностью готовая программа выглядит так:
использовать Робот
алг
нач
нц пока снизу не свободно
вправо
вниз
закрасить
вправо
закрасить
влево
вниз
закрасить
вправо
закрасить
кц
кон
Для проверки алгоритма добавим ещё несколько ступеней и проверим результат
Итак, алгоритм закрашивает клетки при любом количестве ступеней лестницы.
Изучаем Алгоритмику Мой КуМир
Исполнитель Робот
Вспомогательные алгоритмы
Метод последовательного уточнения
Исполнитель Робот Вспомогательные алгоритмы
Исполнитель Робот
Исполнитель: Робот.
Среда исполнителя: Робот работает на клетчатом поле (между клетками могут быть расположены стены) и умещается целиком в одной клетке. Попытка переместить Робота через стену приводит к поломке Робота. Возможное исходное положение Робота на клетчатом поле обозначается ромбиком.
Окно Робота открывается с помощью команды меню Окна → Робот.
Размеры поля устанавливается в пункте меню Робот → Новая обстановка.
Редактировать стартовую обстановку (исходное положение, дополнительные стены и др.) можно командой меню Робот → Редактировать обстановку.
Обстановку можно сохранить в файл (Робот → Сохранить обстановку), а затем открыть (Робот → Загрузить обстановку).
Исполнитель Робот
Система команд исполнителя Робот:
Команда
Комментарии
вверх
Робот перемещается на одну клетку в указанном направлении
вниз
вправо
влево
закрасить
Робот закрашивает текущую клетку
Программа для Робота должна начинаться с команды подключения исполнителя:
использовать Робот
Исполнитель Робот
Задание 1. Создайте программу, по которой Робот напишет своё имя.
использовать Робот алг Слово нач . нц 4 раз . . закрасить; вниз . кц . вправо . вверх; вверх . нц 2 раз . . вверх; закрасить . кц . |. . . . . . . . . кон
Исполнитель Робот
Задание 2. Для каждого рисунка запишите программу для Робота.
Вспомогательные алгоритмы
Алгоритмический язык КуМир допускает использование вспомогательных алгоритмов ( процедур ). Оформляется такой алгоритм как обычный. Вызов вспомогательного алгоритма из основной программы осуществляется по его имени.
Процедура — самостоятельная часть программы, имеющая оригинальное имя, по которому её можно вызывать из любой части программы.
Основная программа всегда одна, в программе на языке КуМир она располагается выше процедур.
Процедуры используют в случаях, когда одни и те же действия необходимо выполнить несколько раз в разных местах программы, возможно, при различных исходных данных. Также в качестве процедуры целесообразно выделять и однократно выполняемые действия, когда они представляют собой логически независимую часть программы, это позволяет сложную задачу разбить на несколько простых.
Вспомогательные алгоритмы
Любую картинку на поле Робота можно мысленно заключить в прямоугольник. При создании процедуры удобно начинать рисовать из верхнего левого угла такого прямоугольника и в этой же точке заканчивать. Тогда вы всегда будете знать, где у вас будет находиться Робот после очередного вызова процедуры.
Задание 1. Составьте программу Квадрат , по которой Робот закрашивает клетки согласно рисунку и возвращается в исходное положение.
Вспомогательные алгоритмы
Задание 2. Используя программу Квадрат как вспомогательный алгоритм, составьте алгоритм Главный , по которому Робот закрасит клетки согласно рисунку.
использовать Робот
алг Главный | основной алгоритм
нач
. Квадрат | вызов процедуры
. вправо ; вправо | переход на
. вниз ; вниз | новое место
. Квадрат | вызов процедуры
. нц 6 раз | переход на
. . вправо | новое место
. кц
. | Допишите строки
кон
алг Квадрат | процедура Квадрат
нач
. | Допишите строки
кон
Вспомогательные алгоритмы
Задание 3. Составьте программу Фрагмент , по которой Робот закрашивает один элемент рисунка (выделен пунктирной линией). Используя эту программу в качестве процедуры, составьте алгоритм, по которому Робот нарисует нужный орнамент.
Вспомогательные алгоритмы
Задание 4. Используя процедуру Элемент , нарисуйте элементы в четырёх углах поля. Для этого заполните пропуски в программе Орнамент .
Исходное положение Робота установите самостоятельно.
использовать Робот
алг Орнамент
нач
. Элемент
. нц . . . раз вправо кц
. Элемент
. нц . . . раз вниз кц
. Элемент
. нц . . . раз влево кц
. Элемент
кон
алг Элемент
нач
. вправо ; вниз
. закрасить
. вверх ; вверх
. закрасить
. вниз ; вправо
. закрасить
. влево ; влево
. закрасить
кон
Метод последовательного уточнения
Задание 1. Составьте программу, по которой Робот напишет число 2020. Для изображения отдельных цифр составьте процедуры согласно правилу: Робот начинает движение от верхнего левого угла прямоугольника, внутрь которого можно вписать цифру, и там же заканчивает свою работу.
использовать Робот алг Главный нач . вниз ; вправо . Два . нц 4 раз вправо . кц . Ноль . | . . . . . . . кон
алг Два нач
. | . . . . . . . кон
алг Ноль нач
. | . . . . . . . кон
Метод последовательного уточнения
Задание 2. Составьте отдельные процедуры для букв «С», «О», «Р», «Т» по правилу: Робот начинает движение от верхнего левого угла прямоугольника, внутрь которого можно вписать букву, и там же заканчивает свою работу.
Используя процедуры, последовательно получите слова:
СОРТ, РОСТ, ТОРТ, РОТ.
Метод последовательного уточнения
Задание 3. Создайте две процедуры для рисования отдельных элементов орнамента (на рисунке они выделены пунктирной линией).
Используя процедуры, создайте орнамент.
В презентации использованы материалы учебного пособия
Информатика. Изучаем алгоритмику. Мой КуМир. 5-6 классы / Е. А. Мирончик, И. Д. Куклина, Л. Л. Босова. — М.: БИНОМ. Лаборатория знаний, 2018.
На предыдущих уроках мы установили среду Кумир, настроили ее для дальнейшей работы и научились задавать стартовую обстановку Робота. Теперь перейдем непосредственно к составлению алгоритмов для Робота с использованием простых команд.
Если вам больше нравится информация в формате видеоуроков, то на сайте есть видеоурок Робот. Простые команды.
У любого исполнителя должна быть система команд (СКИ — система команд исполнителя). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.
Простые команды Робота
У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота. Всего их 5:
- вверх
- вниз
- влево
- вправо
- закрасить
Результат выполнения этих команд понятен из их названия:
- вверх — переместить Робота на одну клетку вверх
- вниз — переместить Робота на одну клетку вниз
- влево — переместить Робота на одну клетку влево
- вправо — переместить Робота на одну клетку вправо
- закрасить — закрасить текущую клетку (клетку в которой находится Робот).
Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):
- вверх — Escape, Up (стрелка вверх)
- вниз — Escape, Down (стрелка вниз)
- влево — Escape, Left (стрелка влево)
- вправо — Escape, Right (стрелка вправо)
- закрасить — Escape, Space (пробел)
Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно. К примеру, чтобы ввести команду вверх, нужно нажать Escape, отпустить ее и после этого нажать стрелку вверх. Это нужно помнить.
Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!
Запускаем Кумир, настраиваем его. Можно начинать писать программу? Конечно нет! Мы же не задали стартовую обстановку! Делаем это. Предлагаю использовать вот такую:
Стартовая обстановка Робота
Вот теперь все готово. Начинаем писать программу. Пока она выглядит так
Первая программа для Робота
Удаляем символ «|» и называем наш алгоритм «Квадрат»
Алгоритм квадрат
Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить. Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.
Первые шаги
Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов
выполнить программу
В результате мы должны увидеть вот такую картину
Первый результат
Если такое окно Робота у вас не появилось, то на панели инструментов щелкните «Показать окно Робота» или в меню Робот выберите пункт «Показать окно Робота«. Продолжаем дальше.
Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:
вниз
закрасить
вниз
закрасить
Потом пойдем влево, закрашивая нижнюю границу квадрата
влево
закрасить
влево
закрасить
У нас осталась одна незакрашенная клетка. Закрасим ее
вверх
закрасить
Все готово! В итоге наша программа выглядит так:
использовать Робот
алг Квадрат
нач
закрасить
вправо
закрасить
вправо
закрасить
вниз
закрасить
вниз
закрасить
влево
закрасить
влево
закрасить
вверх
закрасить
кон
А результат ее работы вот так
Результат работы программы
Итак, сегодня мы с вами написали программу, используя простые команды Робота. Рекомендую попрактиковаться самостоятельно — придумать себе задание и написать программу. Это могут быть самые различные фигуры, узоры, буквы. К примеру, попробуйте написать программу, рисующую букву П, Р, Ш, Щ, М. А если получится и захотите поделиться — комментируйте и прикрепляйте результат к комментарию.
Автор:
Сегодня
на уроке мы вспомним:
· что
такое Робот;
· как
работать с программой Кумир;
· и
разберём типовые задания ОГЭ по информатике по данной теме.
Работать
с исполнителем алгоритма Робот мы будем в среде программирования Кумир.
Робот –
это условный исполнитель. Он умеет перемещаться по лабиринту, который начерчен
на плоскости, разбитой на клетки. По сторонам клеток могут стоять стены, через
которые Робот пройти не может, но он способен проверить, есть ли рядом стена.
Также Робот может закрашивать клетки.
Робот
может выполнять 5 команд.
Выполняя
команды вправо, влево, вниз и вверх, Робот
смещается на одну клетку в указанном направлении.
Команда
Закрасить предназначена для закрашивания
клетки, в которой находится Робот.
Если
исполнителю необходимо сделать выбор действия, то для этого используется
конструкция ветвления.
Как
мы помним, форма ветвления может быть полной и неполной.
Полная
форма ветвления начинается со слова ЕСЛИ, после него указывается условие,
от которого зависит выполнение команд. Далее идёт служебное слово то и
список команд, которые исполнитель должен выполнить, если указанное условие
выполняется. Затем записывается служебное слово иначе и команды, которую
будут выполнены, если заданное условие окажется ложным. А в конце формы
ветвления записывается слово всё.
В
неполной форме ветвления отсутствует слово иначе и список команд, идущих
после него. В таком случае, если условие оказывается ложным, то никакие команды
не выполняются.
В
условиях можно использовать логические связки И,
ИЛИ, НЕ.
Давайте
вспомним, какие команды-проверки Робот знает:
слева
свободно;
справа
свободно;
сверху
свободно;
снизу
свободно;
клетка
закрашена;
клетка
чистая;
слева
стена;
справа
стена;
сверху
стена;
снизу
стена;
Вспомним,
как записывать циклы для исполнителя Робот.
Тело
цикла записывается между служебными словами НЦ и КЦ, означающих начало цикла и
конец цикла.
Итак,
запускаем программу Кумир.
Сразу
открывается окно для набора программы Робота.
Чтобы
отслеживать перемещения Робота при работе программы, нужно задать исполнителю
Робот стартовую обстановку. Это значит установить Робота в необходимую позицию,
расставить стены, закрасить нужные клетки и так далее.
Назначить
стартовую обстановку можно несколькими способами:
· Загрузить
стартовую обстановку из заранее созданного файла, имеющего определённое расширение .fil.
· Отредактировать
имеющуюся стартовую обстановку.
· Создать
новую стартовую обстановку.
В
пункте меню «Робот» нажимаем на пункт «Новая обстановка». В появившемся окне
указываем количество строк и столбцов.
На
панели кнопок для быстрого доступа нажимаем на кнопку «Робот». Наведя курсор мыши
на появившуюся стартовую обстановку и покрутив колёсико мышки, можно увеличить
или уменьшить масштаб. Чтобы изменить количество столбцов и строк, нужно нажать
на кнопки с плюсом и минусом.
Далее
задаём необходимые значения для стартовой обстановки:
· Для
перемещения Робота в новую позицию, щёлкаем по нему левой кнопкой мыши и не
отпуская её переносим Робота в нужное место.
· Для
добавления/удаления стены, щёлкаем левой кнопкой мыши по границе клетки.
· Щелкаем
по клетке левой кнопкой мыши, чтобы её закрасить или очистить.
· Для
добавления/удаления точки в клетке щёлкаем по клетке, удерживая клавишу Ctrl на
клавиатуре.
После
того, как стартовая обстановка отредактирована, необходимо зайти в пункт меню
«Робот» и убрать галочку с пункта «Редактировать обстановку…».
Теперь
можно создавать алгоритм для исполнителя Робот.
Ну
что же, давайте разберём типовые задания ОГЭ по информатике по созданию и
выполнению программ для исполнителя Робот.
На
бесконечном поле есть горизонтальная и две вертикальные стены (в форме
перевёрнутой неправильной буквы П). Левый конец горизонтальной стены соединён с
нижним концом левой вертикальной стены. Правый конец горизонтальной стены
соединён с нижним концом правой вертикальной стены. Длины стен неизвестны.
Робот находится в клетке, расположенной непосредственно слева от левой
вертикальной стены у её верхнего конца.
На
рисунке указан один из возможных способов расположения стен и Робота.
Напишите
для Робота алгоритм, закрашивающий
все
клетки, расположенные непосредственно левее левой вертикальной стены, клетки,
расположенные непосредственно ниже горизонтальной стены,
и
клетки, расположенные непосредственно правее правой вертикальной стены, а также
2 клетки, касающиеся одним углом с углами П-образной стены. Робот должен
закрасить только клетки, удовлетворяющие данному условию.
На
первый взгляд задание может показаться сложным и непонятным. Но следует просто
продумать путь, по которому должен пройти Робот, чтобы закрасить нужные клетки.
А затем прописать этот путь с помощью команд и циклов. Важно
как можно больше использовать циклы.
Обратите
внимание, что в условии задания указано, что длины стен неизвестны, то
есть необходимо составить алгоритм так, чтобы он работал со стенами, расположенными
как на рисунке, но длины стен могут отличаться от исходных данных. Поэтому в
данном задании мы не можем просто написать последовательность команд
перемещения и окрашивания клеток, исходя из длин стен, представленных на
рисунке. Так как если хотя бы одну стену увеличить на одну клеточку, то
алгоритм уже не сработает.
Поэтому
нам необходимо использовать цикл пока, который повторяет действия после
проверки условия.
Изучив
задание, создадим стартовую обстановку. Не лишним будет её сохранить.
В
пункте меню «Вставка» нажимаем на пункт «Использовать Робот». Появившуюся
команду можно набирать и самому. Но чтобы сэкономить время, лучше все команды
вставлять через пункт меню «Вставка».
Итак,
смотрим на рисунок. Робот должен пройтись вдоль стен и закрасить все клетки,
которые он приходит. Для этого нам достаточно провести Робота вдоль левой
вертикальной стены вниз, затем вдоль горизонтальной стены вправо и вдоль правой
вертикальной стены вверх.
Чтобы
переместить Робота вниз до конца стены и при этом закрасить клетки запишем цикл
ПОКА, в котором будем проверять, есть ли справа стена.
Проверяем,
что получилось.
Теперь
нужно закрасить клетку и сдвинуть Робота вправо, чтобы он находился под
горизонтальной стеной и далее можно было опять воспользоваться циклом.
Записываем
цикл, в котором проверяем, есть ли сверху стена, и, пока она есть, закрашиваем
клетки и передвигаем Робота вправо.
Закрашиваем
клетку и сдвинуть Робота вверх, чтобы он находился слева от вертикальной стены
И
записываем снова цикл, в котором закрашиваем клетки и проверяем, есть ли слева
стена.
Запускаем
алгоритм. Всё получилось.
Обратите
внимание, что в условиях циклов, мы писали «не свободно» или «стена»,
что, по сути, одно и тоже.
А
теперь давайте изменим длину стен и проверим, сработает ли созданная программа.
Не забудьте сохранить алгоритм.
На
бесконечном поле имеются две одинаковые горизонтальные параллельные стены,
расположенные друг под другом и отстоящие друг от друга более чем на
1
клетку. Левые края стен находятся на одном уровне. Длины стен неизвестны. Робот
находится в клетке, расположенной слева от конца верхней стены. На рисунке
указан один из возможных способов расположения стен и Робота.
Напишите
для Робота алгоритм, закрашивающий все клетки, расположенные ниже
горизонтальных стен.
Робот
должен закрасить только клетки, удовлетворяющие данному условию.
Конечное
расположение Робота может быть произвольным. Алгоритм должен решать задачу для
произвольного размера поля и любого допустимого расположения стен внутри
прямоугольного поля.
При
исполнении алгоритма Робот не должен разрушиться. Алгоритм может быть выполнен
в среде формального исполнителя или записан в текстовом редакторе. Сохраните
алгоритм в текстовом файле.
Внимательно
прочитайте текст задания.
Создаём
стартовую обстановку.
Пишем
цикл для перемещения Робота под стену.
Затем
цикл, в котором проверяется, есть ли стена сверху, и, пока она есть, клетки
закрашиваются.
Теперь
сдвигаем Робота влево.
И
пишем цикл перемещения Робота до нижней стены.
Клетки
нужно закрасить под стеной. Поэтому сдвигаем Робота вправо, затем вниз и влево.
И
теперь осталось написать цикл для закрашивания клеток под нижней стеной.
На
бесконечном поле имеется лестница. Сначала лестница спускается вниз справа
налево, затем спускается вниз слева направо. Высота каждой ступени – 1
клетка, ширина – 2 клетки. Робот находится справа от верхней ступени
лестницы. Количество ступенек, ведущих влево, и количество ступенек, ведущих
вправо, неизвестно. На рисунке указан один из возможных способов расположения
лестницы и Робота.
Напишите
для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно
над ступенями лестницы, спускающейся слева направо. Требуется закрасить только
клетки, удовлетворяющие данному условию.
Конечное
расположение Робота может быть произвольным. Алгоритм должен решать задачу для
произвольного размера поля и любого допустимого расположения стен внутри
прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться,
выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального
исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом
файле.
Создаём
стартовую обстановку.
Как
видим по заданию, Робот должен двигаться вниз по лестнице справа налево, пока
не дойдёт до стыка лестниц. При этом клетки не закрашиваем.
Записываем
цикл ПОКА, в котором проверяем, свободно ли снизу, если да, то нужно обогнуть
угол лестницы. Так как нам известны высота и ширина ступени, то можно смело
записывать, что Робот должен спуститься один раз вниз, а затем пройти два раза
влево.
Теперь
необходимо спустить Робота вниз по спуску вправо и закрасить клетки. Записываем
цикл, в котором будем проверять, есть ли слева стена. В теле цикла прописываем
закрашивание клетки, после этого перемещаем Робота вправо и снова закрашиваем
клетку. Далее огибаем угол. Записываем перемещение Робота вправо, ничего не
закрашивая, а затем перемещение вниз.
На
первый взгляд кажется, что рисунок сложный, а на практике алгоритм оказался
небольшим.
В
конце урока попробуйте ответить на следующие вопросы:
Что
такое Робот?
Как
записывается цикл с постусловием?
Чем
полная форма ветвления отличается от неполной?
Как
переместить Робота в новую позицию?
Внимательно
посмотрев урок, вам не составит труда ответить на вопросы.