Робот как исполнитель алгоритма
Информатика. 7 класс
Электронное приложение к учебному пособию
Напишите нам
белый — основные материалы, обязательные для изучения;
голубой — примеры, иллюстрирующие основные материалы;
желтый — определения основных понятий;
светло-зеленый — исторические сведения, информация об ученых, внесших вклад в развитие информатики, и другие интересные факты.
В учебном пособии используются следующие условные обозначения:
— вопросы и задания для проверки знаний;
— раздел «Упражнения» содержит задания, при выполнении которых используется компьютер;
— раздел «Упражнения» содержит задания для выполнения в тетради;
— раздел «Упражнения» содержит задания, при выполнении которых может быть использована информация, размещенная на Национальном образовательном портале;
* — задание или пример для любознательных.
§ 9. Исполнитель Робот
9.1. Роботы в жизни человека
Человек с древности мечтал об искусственном создании, которое могло бы выполнять его приказы. Сегодня мечта стала реальностью — в жизни людей появились роботы. Они способны выполнять практически любую работу, доступную человеку, а также делать многие вещи, которые людям выполнить сложно или невозможно. Роботы используются на производстве и в быту, могут работать в сфере услуг и развлечений. Есть роботы, похожие на человека, а есть совсем непохожие.
Робот — автоматическое устройство, которое действует по заранее составленной программе.
Робот получает информацию о внешнем мире от датчиков (аналогов органов чувств живых организмов) и предназначен для осуществления различных операций.
Мир роботов очень разнообразен. В быту современного человека используются автоматические стиральные и посудомоечные машины, роботы-пылесосы. С помощью роботов можно выращивать растения или управлять домом.
Робот может быть материальным или виртуальным. Виртуальный робот — специальная программа, выполняющая определенные действия.
Роботы являются исполнителями. Для исполнителей обычно определяют среду обитания и систему команд.
Общим для всех роботов является то, что человек может ими управлять. Робот получает команды от оператора и выполняет их по одной или действует автономно по предварительно составленной программе.
9.2. Среда обитания и система команд исполнителя Робот
Между некоторыми клетками, а также по периметру поля находятся стены. Робот может передвигаться по полю и закрашивать указанные клетки. Большой желтый квадрат означает начальное положение Робота, маленький — конечное.
Поле Робота, на котором определено положение стен, начальное и конечное положение исполнителя, называют обстановкой.
Для подключения исполнителя Робот в программе прописывается команда uses Robot. Готовые задания с обстановками для Робота хранятся в задачнике, встроенном в систему программирования, и вызываются командой task. Эта же команда использовалась для исполнителя Чертежник.
Методическая разработка урока информатики на тему «Разработка алгоритмов для исполнителя Робот». 9-й класс
Класс: 9
Планируемые образовательные результаты:
Решаемые учебные задачи:
Опорные понятия:
Новые понятия:
Средства ИКТ, используемые на уроке:
Электронное приложение к учебнику:
Ход урока
I. Организационный момент
Приветствие обучающихся, проверка присутствующих, их готовности к уроку.
II. Актуализация знаний
Эвристическая беседа. Вопросы для обсуждения:
— Как часто в повседневной жизни нам приходится сталкиваться с алгоритмами?
— Кто (что) является исполнителями алгоритмов?
— Приведите примеры алгоритмов и их исполнителей.
III. Целеполагание, мотивация к учебной деятельности
— Рассмотрим утверждения, которые приведены в таблице (приложение 1).
— Отметьте знаками «+» и «–» верные (неверные), на ваш взгляд утверждения. Если информация вам незнакома, поставьте знак «?».
Утверждения:
— В ходе занятия мы будем решать задачи, которые помогут подтвердить или опровергнуть ваши ответы.
— В конце занятия мы повторно рассмотрим таблицу «Верные – неверные утверждения» и у каждого из вас будет возможность не только убедиться в правильности или неправильности своих суждений, но и исправить знак «?».
III. Открытие нового знания
— Вы уже знакомы с исполнителем Робот. Он действует на клетчатом поле (прямоугольная область, которая разделена на клетки). Между клетками могут быть установлены стены. Используя команды, мы можем Роботом управлять: перемещать его по полю, закрашивать клетки.
Система команд исполнителя Робот
Простые команды-приказы: вверх, вниз, влево, вправо, закрасить.
Логические команды – команды проверки условия: сверху свободно, снизу свободно, слева свободно, справа свободно.
Команда ветвления:
если то
все
Если в одном условии требуется использовать несколько команд, то применяют логические связки: И, ИЛИ, НЕ.
если (слева свободно) и (справа свободно) то
вниз
закрасить
все
Команда цикла:
нц пока
кц
— Рассмотрим подробно таблицу «Система команд исполнителя Робот» в учебнике (§ 2.3, п. 2.3.2, с. 77-78).
Последовательное построение алгоритма
Разработка алгоритма методом последовательного уточнения для исполнителя Робот.
Задача. На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится в одной из клеток, примыкающих к стене сверху. На рисунке указан один из возможных вариантов расположения Робота.
Робот должен закрасить все клетки, примыкающие к стене сверху. Так, для приведенного выше рисунка должны быть закрашены клетки:
Конечное положение Робота значения не имеет.
Решение.
Составим план действий Робота в обобщенном виде.
Шаг 1. Перейти к левому (правому) краю стены.
Шаг 2. Вернуть Робота в крайнюю клетку, примыкающую к стене сверху.
Шаг 3. Закрасить все клетки, примыкающие к стене сверху.
Детализация плана действий Робота.
1. Перейти к левому краю стены:
нц пока снизу стена влево кц |
Положение Робота после выполнения этого алгоритма
2. Вернуть Робота в крайнюю клетку, примыкающую к стене сверху.
вправо
Положение Робота после выполнения этого алгоритма
3. Закрасить все клетки, примыкающие к стене сверху:
нц пока снизу стена
закрасить
вправо
кц
Положение Робота после выполнения этого алгоритма и программа для Робота
Программа для Робота
использовать Робот
алг
нач
нц пока снизу стена
влево
кц
вправо
нц пока снизу стена
закрасить
вправо
кц
кон
Вывод. Метод последовательного построения алгоритма состоит из следующих действий:
IV. Закрепление нового материала
Практическая работа.
Задача № 1. На бесконечном поле имеется горизонтальная стена. Длина стены неизвестна. От правого конца стены вверх отходит вертикальная стена также неизвестной длины. Робот находится в углу между вертикальной и горизонтальной стеной. На рисунке указан один из возможных способов расположения стен и Робота.
Напишите алгоритм для Робота, закрашивающий все клетки, расположенные выше горизонтальной стены и левее вертикальной стены и прилегающие к ним. Робот должен закрасить только клетки, удовлетворяющие заданному условию. Например, для приведенного рисунка Робот должен закрасить следующие клетки.
Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться.
Детализация плана действий Робота.
1. Закрасить все клетки, расположенные выше горизонтальной стены и прилегающие к ней:
нц пока снизу стена закрасить влево кц |
Положение Робота после выполнения этого алгоритма
2. Вернуть Робота в исходное положение:
нц пока справа свободно
вправо
кц
Положение Робота после выполнения этого алгоритма
3. Закрасить все клетки, расположенные левее вертикальной стены и прилегающие к ней:
нц пока справа стена
закрасить
вверх
кц
Положение Робота после выполнения этого алгоритма и программа для Робота
Задача № 2. Робот находится в верхней клетке узкого горизонтального коридора. Ширина коридора – одна клетка, длина коридора может быть произвольной.
Напишите для Робота алгоритм, закрашивающий все клетки внутри коридора и возвращающий Робота в исходную позицию. При исполнении алгоритма Робот не должен разрушиться.
Детализация плана действий Робота.
1. Закрасить клетку, в которой он находится (исходное положение):
2. Закрасить все клетки внутри коридора:
нц пока справа свободно
вправо
закрасить
кц
Положение Робота после выполнения этого алгоритма
3. Вернуть Робота в исходное положение:
нц пока слева свободно
влево
кц
Положение Робота после выполнения этого алгоритма
Задача № 3. На бесконечном поле имеется лестница. Сначала лестница слева направо спускается вниз, затем поднимается вверх. Высота каждой ступени – одна клетка, ширина – две клетки. Робот находится на первой ступеньке лестницы, в левой клетке. Количество ступеней, ведущих вниз, и количество ступеней, ведущих вверх, неизвестно.
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно над ступенями лестницы. Например, для приведенного рисунка Робот должен закрасить следующие клетки
Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться.
Детализация плана действий Робота.
1. Закрасить верхнюю ступеньку:
закрасить
вправо
закрасить
Положение Робота после выполнения этого алгоритма
2. Спускаться вниз (на ступеньку) и закрашивать все клетки, расположенные непосредственно над ступенями лестницы:
нц пока справа свободно
вправо
вниз
закрасить
вправо
закрасить
кц
Положение Робота после выполнения этого алгоритма
3. Подняться вверх (на ступеньку) и закрасить все клетки, расположенные непосредственно над ступенями лестницы:
нц пока не справа свободно
вверх
вправо
закрасить
вправо
закрасить
кц
Положение Робота после выполнения этого алгоритма
Задача № 4. На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно над горизонтальной стеной у её правого конца. На рисунке указан один из возможных способов расположения стен и Робота.
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно выше горизонтальной стены и правее вертикальной стены. Проходы должны остаться незакрашенными. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки.
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться.
Детализация плана действий Робота.
1. Закрасить все клетки слева до прохода в горизонтальной стене:
нц пока снизу стена
закрасить
влево
кц
Положение Робота после выполнения этого алгоритма
2. Перейти через проход до горизонтальной стены:
нц пока снизу свободно
влево
кц
Положение Робота после выполнения этого алгоритма
3.Двигаться влево до вертикальной стены и закрашивать все клетки, расположенные непосредственно выше горизонтальной стены:
нц пока слева свободно
закрасить
влево
кц
Положение Робота после выполнения этого алгоритма
4. Закрасить все клетки справа от вертикальной стены до прохода:
нц пока слева стена
закрасить
влево
кц
Положение Робота после выполнения этого алгоритма
5. Перейти через проход до вертикальной стены:
нц пока слева свободно
вверх
кц
Положение Робота после выполнения этого алгоритма
6. Закрасить все клетки справа от вертикальной стены:
нц пока слева стена
закрасить
вверх
кц
Положение Робота после выполнения этого алгоритма
Задача № 5. На бесконечном поле имеются две вертикальные стены и одна горизонтальная, соединяющая нижний конец левой и верхний конец правой вертикальных стен. Длины стен неизвестны. Робот находится в клетке, расположенной справа от верхнего края левой вертикальной стены, рядом со стеной. На рисунке указан один из возможных способов расположения стен и Робота.
Напишите для Робота алгоритм, закрашивающий все клетки, примыкающие к вертикальным стенам слева. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки.
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться.
Детализация плана действий Робота.
Положение Робота после выполнения этого алгоритма
2. Закрасить все клетки слева от вертикальной стены:
нц пока справа стена
закрасить
вниз
кц
Положение Робота после выполнения этого алгоритма
3. Двигаться вправо до конца горизонтальной стены:
нц пока справа свободно
вправо
кц
Положение Робота после выполнения этого алгоритма
4. Закрасить все клетки слева от вертикальной стены:
нц пока справа стена
закрасить
вниз
кц
Положение Робота после выполнения этого алгоритма
V. Рефлексия учебной деятельности
— Рассмотрим таблицу «Верные – неверные утверждения», которую вы заполняли в начале занятия.
— Какие изменения вы хотели бы внести? Ответ обоснуйте.
Продолжи одно или несколько предложений:
Робот как исполнитель алгоритма
Запущенная программа Кумир выглядит так.
Первым делом мы должны раскомментировать первую строку нашей программы, убрав символ |
Таким образом, программа станет выглядеть так:
Удалив символ |, мы тем самым указали Кумиру на то, что будем работать с исполнителем Робот. Если этого не сделать, то при написании программы мы столкнемся с ошибкой «Нет такого алгоритма». Поэтому очень важно при создании новой программы раскомментировать первую строку. Теперь все готово для дальнейшей работы.
Но перед началом, нам необходимо задать стартовую обстановку Робота и познакомиться с простыми командами исполнителя Робот.
Стартовая обстановка Робота
Что такое стартовая обстановка?
Наш Робот находится в некой среде — это клетчатое поле, размер которого известен. Так же на этом поле могут находится стены и закрашенные клетки, а сам Робот может находится в любой клетке. Так вот — стартовая обстановка задает положение Робота на поле и расположение всех остальных элементов — стен, закрашенных клеток. И перед тем, как писать алгоритм для Робота необходимо задать стартовую обстановку. Насколько это важно давайте рассмотрим на примере. Пусть есть две стартовые обстановки:
Стартовая обстановка 1
Стартовая обстановка 2
Отличаются они только тем, что в стартовой обстановке 2 справа от Робота находится стена.
Если наша программа начнется с команды, которая переместит Робота на одну клетку вправо (о простых командах Робота), то в первом случае (стартовая обстановка 1) Робот выполнит эту команду, а во втором программа завершится аварийно, так как Робот не может ходить сквозь стены. Получается, что одна и та же программа в первом случае работает, а во втором приводит к ошибке. Именно поэтому так важно задавать стартовую обстановку для Робота.
Как задать стартовую обстановку?
Запустив среду Кумир в меню Инструменты выбираем пункт Редактировать стартовую обстановку Робота
Откроется окно с синим фоном. Это и есть стартовая обстановка Робота. И мы ее можем изменить.
Находим сохраненную ранее обстановку и загружаем ее. После этого убедимся, что загрузили правильную стартовую обстановку, щелкнув по кнопке Показать окно Робота
Если в окне с зеленым фоном (текущая обстановка Робота) вы увидите вашу обстановку, то можно переходить к написанию алгоритма, используя простые команды Робота.
Исполнитель Робот. Простые команды.
У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота. Всего их 5:
Результат выполнения этих команд понятен из их названия:
вверх — переместить Робота на одну клетку вверх
вниз — переместить Робота на одну клетку вниз
влево — переместить Робота на одну клетку влево
вправо — переместить Робота на одну клетку вправо
закрасить — закрасить текущую клетку (клетку в которой находится Робот).
Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):
вверх — Escape, Up (стрелка вверх)
вниз — Escape, Down (стрелка вниз)
влево — Escape, Left (стрелка влево)
вправо — Escape, Right (стрелка вправо)
закрасить — Escape, Space (пробел)
Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно.
Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!
Запускаем Кумир, настраиваем его. Можно начинать писать программу? Конечно нет! Мы же не задали стартовую обстановку! Делаем это. Предлагаю использовать вот такую:
Вот теперь все готово. Начинаем писать программу. Пока она выглядит так
Удаляем символ «|» и называем наш алгоритм «Квадрат»
Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить. Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.
Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов
В результате мы должны увидеть вот такую картину
Если такое окно Робота у вас не появилось, то на панели инструментов щелкните « Показать окно Робота» или в меню Робот выберите пункт » Показать окно Робота». Продолжаем дальше.
Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:
Потом пойдем влево, закрашивая нижнюю границу квадрата
У нас осталась одна незакрашенная клетка. Закрасим ее
Все готово! В итоге наша программа выглядит так:
А результат ее работы вот так
Итак, сегодня мы с вами написали программу, используя простые команды Робота. Рекомендую попрактиковаться самостоятельно — придумать себе задание и написать программу. Это могут быть самые различные фигуры, узоры, буквы. К примеру, попробуйте написать программу, рисующую букву П, Р, Ш, Щ, М. А если получится и захотите поделиться — комментируйте и прикрепляйте результат к комментарию.
Исполнитель Робот. Циклы.
Итак, что такое цикл? Представьте, что мы находимся на уроке физической культуры и перед нами стоит задача сделать 7 приседаний. Это задание можно оформить в виде линейного алгоритма и тогда оно будет выглядеть примерно так:
Т. е мы повторили команду сделай приседание 7 раз. А есть ли смысл писать 7 одинаковых команд? Может проще дать команду сделай 7 приседаний? Конечно проще и правильнее. Это и есть цикл. Вы можете сами вспомнить примеры циклов из жизни — их довольно много.
Таким образом линейный алгоритм, где повторяются одни и те же команды мы можем оформить в виде циклического алгоритма — примерно так:
Вот так, на придуманном нами языке мы оформили цикл. У исполнителя Робот тоже есть возможность записывать циклы. Причем, циклы бывают разные. Тот вариант, который мы только что рассмотрели называется цикл со счетчиком или цикл с параметром.
Виды циклов.
Цикл со счетчиком.
Цикл со счетчиком применяется когда заранее известно сколько повторений необходимо сделать. В примере выше с приседаниями именно такой случай.
Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:
нц количество повторений > раз
Давайте рассмотрим это на примере.
Закрасим 7 клеток, как на рисунке. Рекомендую почитать про стартовую обстановку Робота и про его простые команды.
Изначально Робот находился в левой верхней клетке.
Давайте для начала решим задачу линейно. В этом случае мы будет закрашивать текущую клетку и перемещаться на 1 клетку вправо и программа будет выглядеть так:
использовать Робот
алг
нач
Как видим, команды закрасить и вправо повторяются 7 раз. Давайте теперь перепишем программу с использованием цикла. Кстати, чтобы вставить цикл в свою программу можно в меню Вставка выбрать пункт нц-раз-кц или нажать одну из комбинаций клавиш Esc, Р (русская буква Р) или Esc, H (латинская буква H). Причем клавиши надо нажимать последовательно — сначала Esc, отпустить ее и только потом Р или H.
Так вот, наша программа с циклом будет выглядеть так:
Если мы ее запустим, то увидим, что в результате получится тоже самое — 7 закрашенных клеток. Однако программа стала короче и значительно грамотней с алгоритмической точки зрения!
В качестве разминки и закрепления предлагаю самостоятельно написать программу для Робота, которая нарисует квадрат со стороной 7 клеток. Естественно, используя цикл. Жду решения в комментариях.
Цикл с условием.
Вернемся к физкультуре и изменим задачу. Ведь кто-то может и не сделать 7 приседаний, а другой способен сделать 27. Можно ли учесть это при создании цикла? Конечно. Только теперь мы будем использовать не счетчик (количество повторений), а условие. К примеру, пока не устал, делай приседания. В этом случае человек будет делать не конкретное число приседаний, а приседать до тех пор, пока не устанет. И наш цикл на абстрактном языке примет такой вид:
Слова не устал в нашем случае — это условие. Когда оно истинно, цикл выполняется. Если же оно ложно (устал) тело цикла не будет выполнено. У исполнителя Робот есть несколько условий
Теперь давайте решим следующую задачу для Робота — нарисовать вертикальную линию от левой до правой границы поля использую цикл с условием. Изначально Робот находится в левом верхнем углу.
Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:
« Пока справа свободно делай шаг вправо и закрашивай клетку»
В результате Робот пробежит по всем клеткам вправо и будет их закрашивать до тех пор, пока справа не окажется стена.
Исходный код нашей программы для Робота будет примерно такой:
нц пока справа свободно
В результате выполнения этой программы мы увидим вот такую картину:
Как видим, не хватает только закрашенной первой клетки. Для этого перед циклом необходимо выполнить команду закрасить.
Для закрепления прошу написать программу, которая будет делать рамку вокруг рабочего поля Робота независимо от его размера. Конечно же с использованием циклов с условием. В итоге должно получиться так: