суббота, 28 мая 2011 г.

NXT-G: Создание и использование собственных блоков в среде NXT-G. Часть I

Переведено и опубликовано с разрешения nxtprograms.com (translated and posted by permission by nxtprograms.com).

Что такое MyBlock?
В среде программирования NXT-G все блоки, установленные вместе с ней и доступные для создания программ для Lego Mindstorms NXT, расположены в двух палитрах инструментов Common (Базовая) и Complete (Полная).
Помимо стандартных блоков, среда NXT-G позволяет создавать свои собственные блоки, называемые MyBlocks (Мои Блоки). Эти блоки отличаются от остальных голубым цветом и после создания доступны в палитре Custom (Специальная). Каждый такой блок – последовательность других блоков, которые объедены в отдельный блок для упрощения использования этой последовательности в программе. В других языках программирования есть подобные сущности называемые «подпрограммами», «процедурами» или «функциями».


Рисунок 1: MyBlock отличается от остальных голубым цветом и после создания доступен в палитре Custom.


Когда используют MyBlock?

Основная причина, по которой используются собственные блоки, - это многократное использования одной и той же последовательности действий несколько раз в одной программе или даже в разных, без необходимости повтороного создания такой же последовательности блоков. При использовании собственных блков, вам необходимо создать последовательность только один раз, и затем вы можете использовать ее сколько угодно раз в ваших программах – просто вставьте созданный MyBlock в нужное место. Еще одно преимущество – та последовательность действий, которую вы помещаете в MyBlock, располагается в памяти NXT блока только один раз для каждой вашей программы, вне зависимости от того сколько раз в этой программе вы использовали этот блок. Таким образом, это позволяет вам экономить память, доступную для программ в довольно ограниченном объеме в NXT блоке. Ну и наконец, вы можете использовать собственные блоки для того, чтобы просто разбить большую программу на кусочки для упрощения программирования. Даже если вы не планируете использовать эти кусочки повтороно, работа с маленькими программами в позволит вам сохранить и время и нервы из-за особенностей среды NXT-G.

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

Создание вашего первого собственного блока

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

Создание MyBlock

Первым шагом для создания MyBlock является написание программы, в которой используется последовательность нужных блоков. Рисунок 2 показывается программу состоящую из пяти блоков, которые обеспечивают движение робота вперед, воспроизведение двух звуковых сигналов и, затем, снова движение вперед. Три блока, выделенных в середине, ответственны за воспроизведение сигналов (блок Ожидание/Wait используется для паузы между сигналами). Мы преобразуем последовательность этих трех блоков в MyBlock с именем BeepBeep, что обеспечит нам повторное использование этой последовательности снова.

Рисунок 2: Последовательность блоков может выделена и преобразована в MyBlock для более легкого повтороного использования.

Как только вы получили рабочую программу, включающую поведение вашего будущего MyBlock, обведите прямоугольником выделения последовательность блоков, из которой будет состоять ваш собственныый блок, как это показано на Рисунке 2. Каждый выделенный блок при этом будет при этом обведен голубой рамкой. Чтобы сделать MyBlock из выделенных блоков, на панели инструментов выберите и нажмите «Create My Block» (“Создать собственный блок”) так, как показано на Рисунке 3, это приведет к появлению окна «My Block Builder» (“Конструктор собственных блоков”), изображенного на Риснуке 4.

Рисунок 3: После выделения блоков, нажмите «Create My Block» в панели инструментов для создания собственного блока.

«Конструктор собственных блоков» состоит из двух шагов. Первый шаг, изображенный на Рисунке 4, позволяет просмотреть содержимое собственного блока в области «Selected Blocks» (“Выделенные блоки”). На этом шаге вы должны задать имя для вашего блока в поле «Block Name» (“Название блока”) – в нашем случае BeepBeep. Выбирайте название для вашего блока так, чтобы оно ясно описывало его предназначение, но в то же время было коротким. Хотя длинные названия и не запрещаются, они будут обрезаны, когда блок будет отображаться в вашей программе, и поэтому их будет сложно читать. Вы можете также описать назначение вашего блока в поле «Block Description» («Описание блока»), хотя это и не обязательно Эта информация будет печататься вместе с последовательностью включенных блоков, если вы захотите распечатать содержимое вашего блока, используя команду «Print» (“Печать”) в меню «File» (“Файл”). Вы можете оставить это поле незаполненным и просто описать назначение вашего блока позже, рядом с последовательностью блоков, составляющих ваш MyBlock, используя инструмент «Comment» (“Комментарий”).

Нажмите кнопку «Next» (“Продолжить”), чтобы перейти ко второму шагу «Конструктора соственных блоков», который позволит определить иконку, для создания собственного отображения вашего блока. Нажатие кнопки «Finish» (“Завершить”) после первого шага позволит пропустить выбор иконки и тогда для вашего блока выберется стандартное отображание.

Рисунок 4: На первом шаге «My Block Builder» здайте имя вашего блока и опишите его назначение.

Второй шаг «Конструкторая собственных блоков» показан на Рисунке 5, он позволяет определить иконку, для создания собственного отображения вашего блока. Вы можете выбрать иконку из списка и перетащить ее на белую область в верхней части окна. Затем, перетаскивая иконку с помощью мышки (или с помощью кнопок управления курсором на клавиатуре) по полю, вы можете задать позицию иконки на отображении блока. Вы можете также изменять размер иконки, если будете тащить за черные уголки выделяющего прямоугольника. Если вы хотите, то можете выбрать больше чем одну иконку из списка и наложить их друг на друга для создания более оригинального отображения вашего блока. На Рисунке 5 две копии музыкальной ноты (вторая иконка в списке) используются для создания изображения, намекающего на то, что назначение блока – воспроизведение двух звуков. Нажмите «Finish» («Завершить»), чтобы закончить работу «Конструкторая собственных блоков» и создать ваш собственный блок.

Рисунок 5: На шаге «Icon Builder» (“Конструктор иконки”) вы можете задать отображение для вашего собственного блока.

Та измененная программа, что получиться после создания вашего MyBlock, показана на Рисунке 6. Три блока, составлющие теперь блок BeepBeep, замещены одним голубым MyBlock c изображением названия и иконки, которые вы выбрали для вашего блока. Такая программа будет делать все те же самые действия, которые делала раньше (двигаться вперед, воспроизвести два сигнала и двигаться снова вперерд), но теперь часть программы содержится внутри вашего собственного блока.

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


Рисунок 6: Лишнее пустое пространство, полученное после создания MyBlock, может быть уменьшено сокращением перекладины крепления блоков.


Просмотр и редактирование содержимого собственного блока

Как только блок BeepBeep создан, блоки, составляющие его, пропадают из основной программы (их не видно, но они все еще часть программы) – это можно увидеть на Рисунке 7. Чтобы просмотреть или изменить содержимое созданного блока, вы можете дважы нажать на нужном MyBlock, что приведет к открытию его содержимого в новой вкладке редактора NXT-G, как это показано на Рисунке 8. Это похоже на то, как будто вы открыли еще одну NXT-G программу, но при этом вкладка BeepBeep помечается двумя голубыми полосками, чтобы показать что это не обычная программа, а содержимое вашего собственного блока.

Рисунок 7: Чтобы просмотреть или изменить содержимое MyBlock, дважды кликните по нему.


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

Чтобы изменить содержимое MyBlock, просто добваляйте и изменяйте блоки и их последовательность в данной вкладке также как в обычной программе. Любые изменения сделанные в этой вкладке будут влиять на каждое вхождение вашего блока во всех программах, которые используют его, после того как эта программа (программы) скомпилирована и загружена заново на NXT блок.

Заметьте: После изменения содержимого вашего блока, любая программа, использующая его должна быть заново загружена на NXT блок, для того чтобы изменения вступили в силу, иначе программа останется неизмененной и будет использовать старое содержимое данного блока. Типичная ошибка после изменения MyBlock – это загрузка его собственного содержимого на NXT блок (из-за того что активная вкладка – вкладка блока, а не программы) вместо загрузки программы, испольщующей это блок, что не затронет поведение программ где этот блок используется.

Вставка вашего блока в программу

После создания MyBlock, NXT-G автоматически изменит изначальную программу для использования этого MyBlock вместо первичной последовательности блоков, как это показано на Рисунке 7 выше. Сейчас вы можете также повторно использовать этот MyBlock, вставляя его в другие места в этой же программе или в другие программы. Для того чтобы вставить новый блок в программу, выберите Custom палитру (см. Рисунок 9). Блоки созданные вами содержаться в самом верхнем меню блоков в Сustom палитре. Рисунок 10 показывает блок BeepBeep совместно с другими семью блоками, созданными мной. Блоки перечислены в этом меню в алфавитном порядке, согласно их названию. Если вы используете несколько пользовательских профилей в NXT-G, каждый профиль будет содержать собственный список блоков, созданных в этом пользовательском профиле.

Рисунок 9: Чтобы вставить MyBlock а программу, выберите Custom палитру.


Рисунок 10: Самое верхнее меню в Custom палитре содержит все созданные вами блоки.

Собственные блоки выбранные в Custom палитре могут быть вставлены в программу таким же образом как и обычные блоки. Измененная программа на Рисунке 11 сейчас использует BeepBeep блок дважды. Если сравнивать такую программу с ее альтернативой, где то, что находится в блоке BeepBeep, вставлено непосредственно в программу дважды, то программа, использующая блок BeepBeep, короче, легче для чтения и занимает меньше места в NXT блоке.

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

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

4 комментария:

  1. Прошу исправить ошибку в переводе: custom - переводится как самодельный, а не как специальный.

    ОтветитьУдалить
  2. У слова custom несколько переводов, в том числе и "специальный".
    На самом деле это смысл палитры не меняет, потому что в ней помимо MyBlocks есть WebDownloads, а самодельные там блоки будут или нет - я не знаю.

    ОтветитьУдалить
  3. Хотелось бы уже и часть II почитать...

    ОтветитьУдалить
    Ответы
    1. Да и мы не против продолжить перевод, все упирается в свободное время.

      Удалить

Related Posts Plugin for WordPress, Blogger...