Какой блок в среде программирования используется для повторения действий роботом
Перейти к содержимому

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

  • автор:

Циклы в Scratch

Виды циклов в Scratch, создание циклов, пример использования циклов.

Виды циклов в Scratch

Циклы используются для повторения определенной части программы. Существует 3 вида циклов: повторять всегда, повторить… раз, повторять пока не…

Цикл «Повторять всегда»

Циклы в Scratch

Цикл повторять всегда нужен для постоянной работы нашего проекта. Этот цикл работает бесконечно, вновь и вновь повторяет программу, которая находится внутри цикла.

Цикл «Повторить… раз»

Виды циклов в Scratch

Цикл повторить … раз работает до тех пор, пока программа внутри цикла не реализуется столько раз, сколько указано в названии цикла.

Цикл «Повторять пока не…»

Виды циклов в Scratch

Цикл повторять пока не … выполняется до тех пор, пока условие в его заголовке не станет истинным. Когда именно условие станет правдой — неизвестно, поэтому и количество повторов цикла мы не знаем.

Данный цикл может повторяться бесконечно, если условие не выполнится. Или наоборот, не выполниться ни разу, если условие сразу истинно.

Создание циклов в Scratch

  1. В левом боковом меню находим оранжевый пункт Управление и нажимаем на него. Циклы повторить… раз и повторить всегда находятся в начале меню, повторять пока не… — в конце.

Создание цикла в Scratch

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

Создание цикла в Scratch

Пример использования циклов в Scratch

Для примера рассмотрим программирование игры Fruit Ninja и цикл повторять пока не

В оригинальной игре фрукты пропадали как только касались низа. Мы сделаем нечто подобное, но только с немного другие условием. Пускай игра будет работать, пока спрайт не коснётся стены.

  1. Добавим команду для движения Идти шагов. Впишем 8, это не слишком много, но и не слишком мало.

Пример использования циклов в Scratch

  1. При помощи логических операторов получаем вот такую команду:

Пример использования циклов в Scratch

  1. Теперь нам нужно добавить второе условие Если, и мы сможем полноценно заняться разрезанием фруктов. В этом нам помогут блоки из вкладки Видео распознавание, в котором есть блок Видео движение на спрайт. Также нам понадобится логический оператор сравнения. В итоге получается кусок программы:

Пример использования циклов в Scratch

  1. Нужно сделать так, чтобы наш фрукт превращался в нарезанный. Для этого добавим всего лишь одну команду.

Пример использования циклов в Scratch

  1. Добавляем команду для подсчета очков. Для этого создаем переменную, делаем программу для обнуления очков при старте, а также дополняем нынешнюю блоком Изменить переменную на 1.

Пример использования циклов в Scratch

  1. Объединяем кусочки и получаем следующий набор блоков:

Пример использования циклов в Scratch

§ 10. Алгоритмическая конструкция повторение

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

Как правило, человек составляет программы, в которых каждая команда в отдельности и весь алгоритм в целом выполняются за конечное число повторений.

Алгоритмическая конструкция повторение (цикл) определяет последовательность действий, выполняемых многократно. Эту последовательность действий называют телом цикла.

Существует несколько возможностей управлять тем, сколько раз будет повторяться тело цикла.

Алгоритмическая конструкция цикл с параметром (цикл со счетчиком) — способ организации цикла, при котором количество повторов зависит от начального и конечного значений параметра цикла.

Таким образом, цикл с параметром организует выполнение команд тела цикла заранее известное число раз (пример 10.1).

Параметр цикла определяет нумерацию действий в цикле. Параметр цикла может принимать только целые значения. Часто нумерацию начинают с 1 и заканчивают числом N (пример 10.2). В этом случае цикл выполнится N раз. Если нумерация установлена двумя произвольными числами N 1 (начальное значение) и N 2 (конечное значение), то цикл выполнится ( N 2 – N 1 + 1) раз.

Алгоритмическая конструкция цикла с параметром может изображаться на блок-схеме следующим образом (значение параметра изменяется от 1 до N ):

В данной конструкции в прямоугольнике(ах) записываются повторяющиеся команды алгоритма (тело цикла), которые выполняются N раз (Да). При этом после каждого выполнения команд тела цикла происходит проверка, который раз выполняется цикл. На блок-схеме переход на проверку условия изображается в виде стрелки, выходящей из тела цикла и возвращающейся к проверке. Как только команды тела цикла выполнятся N раз (Нет), цикл завершается (пример 10.3). Если N  0, то команда тела цикла не выполнится ни разу.

10.2. Использование команды цикла с параметром для исполнителя Робот

Чтобы составлять алгоритмы с циклами для компьютерного исполнителя Робот, нужно знать, как записывается команда цикла.

Для записи цикла с параметром используется команда for . Формат записи команды :

for var i:= N1 to N2 do 1

Строка for var i:= N1 to N2 do является заголовком цикла . Эту строку можно прочитать следующим образом: «Для переменной i от N 1 до N 2 делай». Если N 2  N 1, то команды тела цикла выполнятся ( N 2 – N 1 + 1) раз, иначе цикл не выполнится ни разу.

Операторные скобки — пара слов, определяющих в языке программирования блок команд, воспринимаемый как единое целое, как одна команда.

Слова begin и end; являются операторными скобками в языке Pascal . Если тело цикла состоит из одной команды, операторные скобки можно опустить.

Пример 10.4. Решим задачу с2 из встроенного задачника.

Робот должен закрасить клетки поля, перемещаясь вправо. Для закрашивания всех 10 клеток поля нужно в цикле выполнить 10 раз команды:

Данные команды образуют тело цикла.

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

Пример 10.5. Решим задачу с7 из встроенного задачника.

На поле исполнителя Робот присутствуют стены. При обходе стен Робот выполняет следующие команды:

Чтобы решить задачу, Робот должен повторить эти команды 5 раз. Оформим данные команды как вспомогательный алгоритм kvadrat и вызовем его в цикле.

В рассмотренном примере тело цикла состоит из одной команды kvadrat , поэтому операторные скобки begin end ; можно не использовать.

Понятие цикла используется в различных сферах человеческой деятельности.

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

Цикло м называют тот или иной круг наук: гуманитарный цикл наук, физико-математический цикл.

Циклом является законченный ряд каких-либо произведений, чего-либо излагаемого, исполняемого: цикл лекций, цикл стихотворений.

Понятие цикла используется в математике, химии, биологии, геологии, музыке, литературе, информатике и других науках.

Пример 10.1. Приготовление пельменей.

    1. Вскипятить воду.
    2. Для i = 1..10 повторять:
      1. 2.1.
        Достать пельмень из упаковки.
      2. 2.2.
        Бросить пельмень в кипящую воду.

      В данном примере параметр цикла i изменяется от 1 до 10. Действия «достать пельмень из упаковки» и «бросить пельмень в кипящую воду» выполняются 10 раз и составляют тело цикла.

      Блок-схема данного алгоритма будет выглядеть следующим образом:

      Пример 10.2. Вычислим a n (например, 3 5 = 243). Алгоритм возведения числа в степень может быть описан следующим образом:

        1. Ввести значения a и n .
        2. Определить начальное значение результата r = 1.
        3. Для i = 1.. n повторять:
          1. 3.1.Умножить результат на a .

          Пример 10.3. В фольклорных произведениях часто встречается многоголовый Змей Горыныч (количество голов может быть, например, 7). Алгоритм победы над Змеем Горынычем может быть описан следующим образом:

            1. Найти Змея Горыныча.
            2. Для i = 1.. 7 повторять:
              1. 2.1. Отрубить голову Змею Горынычу.

              Блок-схема данного алгоритма:

              Н. М. Кочергин. «Змей Горыныч». 1960-е гг.

              Пример 10.4. Начальная обстановка:

              Программа для исполнителя Робот:

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

              Вязовов Сергей Михайлович, заведующий кафедрой информатики МАОУ «Лицей №14 имени Заслуженного учител Российской Федерации А.М.Кузьмина» г.Тамбова

              Графическая среда NXT-G используется для программирования микрокомпьютера NXT. Данный софт имеет интуитивно понятный интерфейс, создание программ управления роботами напоминает создание блок-схем и осуществляется с помощью специальных блоков, размещаемых на LEGO-балках вдоль оси последовательности действий. Порядок выполнения программы определяется порядком следования блоков. Подключение новых компонентов выполняется путем их «перетаскивания» с палитры программирования на LEGO-балку.

              Каждый из иконок-блоков обладает набором уникальных характеристик, определяющих поведение робота. В NXT-G имеются блоки: для арифметических операций (сложения, вычитания, умножения и деления), для таймеров, для переменных, для сравнения числовых значений (меньше, равно, больше). Присутствуют блоки, отвечающие за звуковые эффекты роботов или за возможность бесконечного повторения установленных действий и за их завершение по определенным событиям. В программе возможно создание своих собственных компонентов, каждый из которых будет являться последовательностью стандартных блоков, объединенных вместе.

              Среди основных достоинств среды визуального программирования – наглядность и простота в использовании, позволяющая быстро освоить программное обеспечение без особых усилий. Однако диапазон функциональных возможностей NXT-G весьма ограничен и требует для работы значительных ресурсов персонального компьютера. Последнее в свою очередь является существенной преградой при разработке сложных проектов.

              1. РАБОЧЕЕ ПОЛЕ NXT-G

              Для создания новой программы для NXT необходимо выполнить команду File – New.

              Рабочее пространство разработки программы для NXT выглядит следующим образом:

              Создание программы для NXT представляет собой перемещение необходимых блоков (с точки зрения логики работы программы) из основной или расширенной палитры блоков на рабочее поле, а также настройка блоков.

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

              2. ГРУППА БЛОКОВ «COMMON»

              Блок «Move» — блок управления движением. Используется для программирования синхронной работы двух или трех сервомоторов. Однако, его можно использовать и для управления движением только одного мотора.

              Блок «Display» — вывод информации на экран блока NXT.

              Часто требуется вывести значение того или иного параметра на экран программируемого блока NXT, для проверки отслеживания состояния датчиков и переменных. Блок «Display» позволяет выводить текстовые сообщения, картинки или графические объекты (точка, линия, окружность).

              3. БЛОК ОЖИДАНИЯ СОСТОЯНИЯ – «WAIT»

              Параметрами блока «Wait» являются значения датчиков или таймер.

              Для соревнований «Hello, robots!» нам понадобится датчик освещённости, датчик цвета (работающий в режиме датчика освещённости), ультразвуковой датчик и кнопка.

              Датчик освещённости – Light Sensor

              Обратите внимание, что датчик определяет уровень отражённого от объекта (поверхности) света. Чем значение ближе к 100, тем больше света отражено (то есть цвет поверхности ближе к идеальному белому). И наоборот, чем ближе к 0, тем больше света было поглощено (то есть цвет поверхности ближе к идеальному чёрному).

              Датчик цвета – Color Sensor

              Кроме параметров настройки, датчик цвета в режиме Light Sensor работает точно также, как и датчик Light Sensor.

              Ультразвуковой датчик – Ultrasonic Sensor

              Ультразвуковой датчик используется для определения расстояния до объектов. Его можно использовать для поиска банок в соревнованиях «Кегельринг» и «Биатлон».

              При такой настройке сенсора (как на рисунке выше), предыдущий блок будет выполняться до тех пор, пока расстояние до объекта не окажется меньшем 111 см.

              Кнопка – Touch Sensor

              В робототехнических соревнованиях часто используют кнопку для старта робота. В других видах соревнований кнопка может быть использована для обнаружения объектов или препятствий.

              4. Блок цикла «LOOP»

              Цикл «Loop» позволяет обеспечить многократное выполнение одной и той же группы блоков.

              В качестве параметра «Control», определяющего число итераций цикла (количество повторений блоков) может выступать одно из следующих значений:

              Forever – бесконечное количество итераций цикла (цикл никогда не завершится).

              Sensor – работа цикла продолжается до тех пор, пока не будет получено заданное состояние датчика.

              Time – цикл работает в течение заданного количества секунд.

              Count – реализации цикла со счётчиком – задаётся точное количество итераций цикла.

              Logic – в цикл как параметр передаётся логическое значение, в зависимости от которого цикл либо продолжает свою работу, либо завершает. Возможно сравнение логического значения как с истиной, так и с ложью.

              5. Блок «SWITCH» — Выбор

              Блок «Switch» позволяет реализовать ту или иную группу блоков, в зависимости от значений принятых параметров. В качестве принимаемых параметров могут быть:

              1. Состояние сенсора
              2. Значение логического, числового или текстового типов

              Языки программирования: на каком языке говорит робот?

              Языки программирования: на каком языке говорит робот?

              Язык, на котором говорит робот (не важно, игрушка, робот-пылесос или медицинское оборудование), – это машинный код, набор знаков двоичной системы. Он сложен и малопонятен для человека. Писать на нем программы, то есть закладывать поведение робота, иррационально. Поэтому коммуникация между роботом и человеком происходит по такой схеме:

              1. Человек пишет программу на языке программирования.

              2. Написанный текст – код программы – проходит через «переводчиков»: компиляторы, интерпретаторы или трансляторы. Они преобразуют язык программирования в машинный код, понятный роботу.

              Представьте, что вы хотите что-то объяснить итальянцу через переводчика. Ваш русский язык – это язык программирования, итальянский – это машинный код, ну а переводчик, соответственно, – транслятор, компилятор или интерпретатор.

              Как работает интерпретатор

              3. Переведенная в машинный код программа попадает в «мозг» роботу. Роль «мозга» может играть схема, чип, микроконтроллер, микрокомпьютер или компьютер. Чем сложнее задачи будет решать робот, тем совершеннее должен быть его «мозг».

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

              Робот от Boston Dynamycs

              Низкоуровневые и высокоуровневые языки программирования

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

              Языки низкого уровня появились в начале 50-х гг. XX века, с их помощью программировать стало легче, чем на машинном коде. Используются они и сегодня и просто незаменимы в тех случаях, когда робот должен подчиняться строгому контролю. Но при работе с ними есть сложность. Для одного и того же действия, выполняемого роботами разной конструкции, нужно писать отдельную программу. Захват для роботоруки и робота-экскаватора будет выглядеть по-разному.

              С языками высокого уровня – более развитыми и удобными для человека – такой проблемы нет. Особенности конструкции роботов не играют значимой роли, и одну и ту же команду выполнит любой из них. Но программы на таких языках весят гораздо больше, поэтому их пишут только для устройств с большим объемом памяти.

              Мы можем договариваться с микроконтроллером через транслятор, и тогда, скорее всего, придется программировать на низкоуровневом языке. Если у микроконтроллера будет плата типа Arduino, то можно перейти на более «человеческий» высокоуровневый язык. Однако робот с несколькими типами управления запросто может оказаться полиглотом: его создатель будет сочетать разные языки для выполнения разных задач.

              Программирование и робототехника для детей

              Мы подобрали пять языков, которые в тренде у робототехников.

              Топ-5 языков программирования в робототехнике

              Чтобы рассказать подробно о нашей пятерке лидеров, понадобится написать не одну книгу. Поэтому мы решили отметить основные особенности – этого достаточно, чтобы вы имели общее представление о языке и поняли, почему он оказался в топе.

              Для наглядности покажем, как выглядит программа, написанная на разных языках. С нее начинается любое обучение программированию – на мониторе или на ЖК-экране контроллера должна появиться надпись Hello, world.

              Assembly («Ассемблер»)

              Относится к языкам низкого уровня, который максимально приближен к машинному коду. С появлением микроконтроллеров подобных Arduino язык стал применяться реже, поскольку микроконтроллеры поддерживают управление роботами на более высоком уровне, используя C/C++ и другие языки.Однако не стоит списывать со счетов «Ассемблер» – он в буквальном смысле незаменим, если требуется абсолютный контроль. Объяснить роботу особое условие другим языком в некоторых случаях просто не получится.

              global _main extern _printf section .text _main: push message call _printf add esp,4 ret message: db 'Hello, World', 10,0

              Java

              Идея использования Java заключается в применении одного и того же кода на разных роботах благодаря виртуальной машине Java. На самом деле это не всегда работает и приводит к медленному исполнению программы, которая пытается донести код до робота. Ведь виртуальная машина сначала должна создать «образ» того, как будет работать данная программа на определенном роботе. Это занимает достаточное количество времени, а само исполнение происходит с задержкой. При этом язык довольно популярен в робототехнике из-за своей универсальности, а некоторые производители даже делают микроконтроллеры специально для программирования на Java.

              Язык часто применяют для роботов, связанных с веб-технологиями. Например, в системе «умный дом» (правда, в этом случае используют JavaScript, но принцип похож) или в машине, которая снимает видео и транслирует его в интернет.

              Саймон Риттер – евангелист Java и один из создателей, является лучшим специалистом по использованию Java-технологии в мире робототехники. Он разработал Robotics Software Development Kit и регулярно показывает новые роботизированные системы.

              class HelloWorldApp < public static void main(String[] args) < System.out.printIn("Hello World!"); //Prints the string to the console. >>

              MATLAB

              Среди инженеров-робототехников популярен язык MATLAB со своей средой и его родственники с интерпретаторами с открытым исходным кодом, например Octave.

              Чтобы запрограммировать игрушечную машинку, высокоуровневый MATLAB не нужен. А вот для разработки компьютерного зрения будет в самый раз. Программы, написанные на этом языке, могут обрабатывать большое количество информации и давать точный результат.

              classdef hello methods function greet(this) disp('Hello, World') end end end

              Python

              Язык высокого уровня Python ценят за простоту и экономию времени, например при определении и приведении типов переменных.

              Кроме того, существует огромное количество уже готовых написанных скриптов – кодов выполнения программы. Когда нужно реализовать некоторые базовые функции, можно воспользоваться готовым решением. Также язык допускает простые привязки со скриптами, написанными на C/C++. Это означает, что на этих языках могут быть реализованы части кода, требующие высокой производительности. Таким образом Python стал универсальным практически в любой области.

              Популярность языка в робототехнике в последние годы только растет. Он, к примеру, часто используется для программирования на Raspberry Pi. Этот микрокомпьютер просто создан для экспериментов и разработки IoT-устройств. Тем более для Python существует множество библиотек, где есть готовые решения для базовых программ. Благодаря несложному и интуитивно понятному синтаксису даже дети и новички могут легко создавать роботов на Python.

              print("Hello World")

              C/C++

              «Си» сочетает удобство написания высокоуровневых языков и контроль низкоуровневых. Лучше многих других языков транслируется в машинный код, но обладает непростым синтаксисом и не прощает ошибок. Даже одна неверная строчка нового кода может нарушить работу уже действующих программ. Кстати, программы в универсальном робототехническом языке (сокращенно GRL – Generic Robot Language) компилируются на таких языках команд, как С.

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

              C++ используется для:

              • разработки программного обеспечения;
              • создания операционных систем, различных программ, драйверов устройств;
              • реализации приложений на встраиваемых системах, высокопроизводительных серверах, в играх.

              В «Робиксе» мы используем платы Arduino, которые программируются на языке C++ с дополнениями. Поэтому на занятиях по робототехнике наши ученики знакомятся еще и с логикой программирования «Си плюс-плюс».

              на языке С:
              #include int main(void)
              на языке С++
              #include int main()

              Неважно, чем вы занимаетесь: программированием микроконтроллеров на «Ассемблере» или написанием программ на «Питоне», каждый из этих языков хорош для определенных манипуляций. Они имеют разный синтаксис и учитывают разные условия.

              Представим, что сегодня мы с вами роботы. Перед нами стоит задача-программа: «Встать с кровати и выйти в дверной проем».

              Если бы писали программу на Python, то для нас, роботов, она выглядела бы так:

              Встать с кровати

              На C++ она выглядела бы совершенно по-другому:

              (Создать объект «комната»)

              (Создать объект «кровать»)

              (Создать объект «Я»)

              Кадр из фильма «Двухсотлетний человек»

              Вместо заключения

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

              Робототехника для школьников

              Легче всего простейшие алгоритмы и логика языков даются в детстве. В «Робиксе» мы обучаем основам программирования даже дошкольников. Наши ученики начинают со Scratch, знакомясь с программированием в игровой форме, и дальше осваивают более сложные языки Python и C++. Ребята с увлечением создают собственные игры, роботов, а заодно готовятся к «взрослому» миру, где языки программирования в ряде отраслей уже давно перешли в разряд must have, а дальше их, может, и вовсе заменит искусственный интеллект. И понимание алгоритмов работы компьютера, умение ориентироваться в механике, электронике и сопутствующих технологиях – хороший набор навыков для профессии будущего.

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

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