Исполнитель Робот. Циклы.
Продолжаем изучение исполнителя Робот и сегодня поговорим о циклах. Давайте разберемся, что же такое цикл и как научить выполнять циклические алгоритмы нашего Робота.
Итак, что такое цикл? Представьте, что мы находимся на уроке физической культуры и перед нами стоит задача сделать 7 приседаний. Это задание можно оформить в виде линейного алгоритма и тогда оно будет выглядеть примерно так:
Т. е мы повторили команду сделай приседание 7 раз. А есть ли смысл писать 7 одинаковых команд? Может проще дать команду сделай 7 приседаний? Конечно проще и правильнее. Это и есть цикл. Вы можете сами вспомнить примеры циклов из жизни — их довольно много.
Таким образом линейный алгоритм, где повторяются одни и те же команды мы можем оформить в виде циклического алгоритма — примерно так:
Вот так, на придуманном нами языке мы оформили цикл. У исполнителя Робот тоже есть возможность записывать циклы. Причем, циклы бывают разные. Тот вариант, который мы только что рассмотрели называется цикл со счетчиком или цикл с параметром.
Виды циклов.
Цикл со счетчиком.
Цикл со счетчиком применяется когда заранее известно сколько повторений необходимо сделать. В примере выше с приседаниями именно такой случай.
Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:
нц количество повторений > раз
Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться. Команды, которые повторяются в цикле называют телом цикла.
Давайте рассмотрим это на примере.
Закрасим 7 клеток, как на рисунке. Рекомендую почитать про стартовую обстановку Робота и про его простые команды.
Задание на цикл со счетчиком
Изначально Робот находился в левой верхней клетке.
Давайте для начала решим задачу линейно. В этом случае мы будет закрашивать текущую клетку и перемещаться на 1 клетку вправо и программа будет выглядеть так:
использовать Робот
алг
нач
Как видим, команды закрасить и вправо повторяются 7 раз. Давайте теперь перепишем программу с использованием цикла. Кстати, чтобы вставить цикл в свою программу можно в меню Вставка выбрать пункт нц-раз-кц или нажать одну из комбинаций клавиш Esc, Р (русская буква Р) или Esc, H (латинская буква H). Причем клавиши надо нажимать последовательно — сначала Esc, отпустить ее и только потом Р или H.
Так вот, наша программа с циклом будет выглядеть так:
Если мы ее запустим, то увидим, что в результате получится тоже самое — 7 закрашенных клеток. Однако программа стала короче и значительно грамотней с алгоритмической точки зрения!
В качестве разминки и закрепления предлагаю самостоятельно написать программу для Робота, которая нарисует квадрат со стороной 7 клеток. Естественно, используя цикл. Жду решения в комментариях.
Цикл с условием.
При решении задачи 19 ГИА по информатике с Роботом использовать цикл со счетчиком не получится. Так как там поле, как правило, бесконечное и стены не имеют конкретной длины. Поэтому мы не сможем определить количество повторений для цикла со счетчиком. Но не беда — нам поможет цикл с условием.
Вернемся к физкультуре и изменим задачу. Ведь кто-то может и не сделать 7 приседаний, а другой способен сделать 27. Можно ли учесть это при создании цикла? Конечно. Только теперь мы будем использовать не счетчик (количество повторений), а условие. К примеру, пока не устал, делай приседания. В этом случае человек будет делать не конкретное число приседаний, а приседать до тех пор, пока не устанет. И наш цикл на абстрактном языке примет такой вид:
пока не устал
Слова не устал в нашем случае — это условие. Когда оно истинно, цикл выполняется. Если же оно ложно (устал) тело цикла не будет выполнено. У исполнителя Робот есть несколько условий
сверху свободно
снизу свободно
слева свободно
справа свободно
сверху стена
снизу стена
слева стена
справа стена
, но в условии задачи 19 ГИА указаны только первые 4. Так что будем пользоваться только ими.
Теперь давайте решим следующую задачу для Робота — нарисовать вертикальную линию от левой до правой границы поля использую цикл с условием. Изначально Робот находится в левом верхнем углу.
Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:
«Пока справа свободно делай шаг вправо и закрашивай клетку»
В результате Робот пробежит по всем клеткам вправо и будет их закрашивать до тех пор, пока справа не окажется стена.
Исходный код нашей программы для Робота будет примерно такой:
нц пока справа свободно
В результате выполнения этой программы мы увидим вот такую картину:
Задание для Робота цикл с условием
Как видим, не хватает только закрашенной первой клетки. Для этого перед циклом необходимо выполнить команду закрасить.
Решение задачи с циклом
Для закрепления прошу написать программу, которая будет делать рамку вокруг рабочего поля Робота независимо от его размера. Конечно же с использованием циклов с условием. В итоге должно получиться так:
Задача для самостоятельного решения
Решение жду в комментариях. И напоминаю, до ГИА осталось совсем немного времени, готовимся активнее.
Автор: Александр Чернышов
Оцените статью, это очень поможет развитию сайта.
Источник
Робот–Blockly
Что это?
Робот-Blockly — это версия исполнителя Робот (из системы Исполнители), программы для которого составляются из готовых блоков, как в Scratch. Это избавляет учеников от синтаксических ошибок, которые неминуемо возникают при ручном наборе текстовой программы. Программа подходит для вводного курса алгоритмизации в 5-6 классах.
Автор благодарит А.С. Башлакова (www.klyaksa.net) за полезные замечания и предложения по улучшению среды Робот-Blockly.
Публикации
- К.Ю. Поляков.
Управление исполнителем Робот с помощью Blockly (представлена на конференцию ИТО-Саратов-2020).
- К.Ю. Поляков.
Как создать свой набор задач для Робота-Blockly?20.10.2020.
- К.Ю. Поляков.
Редактор карт для Робота-Blockly12.12.2020.
Новости теперь и в
Telegram-канале
19 декабря 2020 г.
Исправлена ошибка при удалении карты в редакторе карт для Робота-Blockly.
12 декабря 2020 г.
Добавлен редактор карт для Робота-Blockly.
Лицензия
Учебная среда Робот-Blockly, включая все исходные тексты скриптов, стилевых файлов и веб-страниц, распространяется под лицензией Apache License, версия 2.0 (см. перевод на русский язык), и не может быть использована иначе как в соответствии с вышеупомянутой лицензией.
Учебная среда Робот-Blockly и методические разработки распространяются по принципу «Как есть» — «As Is». Это означает, что вы используете их на свой страх и риск и автор не несет никакой ответственности за ущерб, причиненный вам лично и вашему компьютеру в результате использования полученных на этом сайте программ и методик.
Все опубликованные ниже материалы могут быть свободно использованы в некоммерческих целях при условии сохранения авторства.
Робот-Blockly
Онлайн-версия Робот-Blockly состоит из нескольких страниц, каждая из которых содержит по 10-12 задач (уровней) возрастающей сложности. На сегодняшний день доступны разработки по следующим темам:
Готовые наборы задач
- Задачи из учебника для 5 класса
- Задачи из учебника для 5 класса с решениями
- Тема 1. Линейные алгоритмы
- Тема 2. Циклы ПОВТОРИТЬ N РАЗ
- Тема 3. Циклы ПОКА
- Тема 4. Условный оператор
- Тема 4а. Условный оператор и циклы
- Тема 5. Процедуры
- Тема 6. Переменные
- Тема 7. Процедуры с параметрами
Наборы задач для Робота других авторов
На скриншоте показана одна из задач для Робота по теме «Циклы ПОКА».
Слева вы видите поле Робота, справа — окно для составления программы из блоков. Над окном Blockly показано, сколько блоков ещё можно добавить в программу (количество блоков на каждом уровне ограничено).
Кнопки и над полем Робота говорят о том, что проверка решения будет проведена на нескольких разных полях. С помощью этих кнопок можно по очереди просмотреть все эти поля.
Задача Робота — посадить цветы во все грядки и прийти на Базу — в клетку, отмеченную знаком
. Для того чтобы посадить цветы на грядке, Робот должен встать на грядку
и выполнить команду посади. Робот не может проходить через стенки
.
Скорость анимации при движении Робота регулируется движком . Кнопка
позволяет выполнять программу в пошаговом режиме.
В верхней части экрана показаны ссылки на все уровни: . Цветными точками отмечены пройденные уровни, а серыми
— уровни, на которых программа запускалась, но задача не была решена. Задача считается решённой, если она правильно отработала на всех заданных полях (в том случае, если их несколько). Синий цвет
означает оптимальное решение («пять звёзд»), изумрудный
— хорошее решение (немного длиннее, чем оптимальное; «четыре звезды»); светло-голубой
— правильное решение, в котором слишком много блоков («три звезды»). Справа от списка уровней показано, сколько всего звёзд заработал ученик, решая задачи этого цикла.
Прохождение уровней, а также программы, написанные на каждом из них, запоминаются в пределах сессии. Это значит, что при новом запуске браузера эта информация будет удалена.
Программа в текстовой форме
Программа, составленная из блоков, автоматически переводится на один из поддерживаемых языков: Python, JavaScript, PHP, Dart, Lua. Это позволяет интересующимся детям увидеть, как выглядят программы на «серьезных» языках программирования.
Сохранение и загрузка программ
Для сохранения программы щелкните по кнопке , которая находится над окном программы. Вам будет предложено ввести имя файла и выбрать место его сохранения. Программа сохраняется в формате XML среды Blockly.
Чтобы загрузить программу из файла, щёлкните по кнопке , которая размещена там же. Вам будет предложено выбрать файл на диске.
Создание новых наборов задач
В оффлайн-версии учитель может строить свои собственные наборы задач (см. инструкцию).Для этого нужно внести правки в файл данных соответствующей темы.
Если у вас получился удачный набор задач и вы готовы поделиться им с коллегами, присылайте архив с файлами на электронный адрес [email protected] с пометкой Робот-Blockly.
Файлы данных размещены в каталоге js и имеют имена robot_ .js. Например, файл robot_linear.js содержит задания к теме 1 (линейные алгоритмы). Он подключается в заголовке веб-страницы robot_linear.html.
Карта, описывающая поле Робота для каждой задачи, задана как массив из 10 символьных строк, каждая из которых содержит по 10 символов. Например, для редактирования задачи уровня 1 нужно найти в начале файла данных слова Level 1 и исправить строки карты.
Точка обозначает пустую клетку, w — стену, x — грядку, p — клумбу с цветами. Положение Робота задаётся цифрой, которая зависит от направления: 0 — Робот смотрит на север, 2 — Робот смотрит на восток, 4 — Робот смотрит на юг, 6 — Робот смотрит на запад.
Подробно про составление своих наборов задач можно прочитать в руководстве: Как создать свой набор задач для Робота-Blockly?
Источник