| |
NQC - язык программирования роботов LEGO | |
Настоящее не является официальным документом или веб-сайтом LEGO®.
LEGO® и Spybotics® являются торговыми марками LEGO Group.
Автор данного сайта никак не связан ни с компанией LEGO Group, ни с ее подразделениями или представительствами.
Все права на торговые марки и зарегистрированные торговые знаки являются собственностью их владельцев.
Автор не несет ответственности за повреждение компьютеров, потерю данных и иной прямой или косвенный ущерб,
могущий возникнуть в результате использования сведений из данного обзора.
Copyright © Magus 2003; изображения ©LEGO 2002, если не указано иного.
All rights reserved.
NQC, что означает Not Quite C ("Не совсем Си") - простой специализированный язык программирования высокого уровня, созданный Дейвом Баумом для написания программ для некоторых роботов LEGO. В настоящее время NQC позволяет программировать роботов семейства Mindsorms (RCX и RCX2), а также CyberMaster, Scout и Spybotics. Встроенное программное обеспечение роботов LEGO ("firmware"), содержит интерпретатор байтовых кодов, которые, собственно, и являются той программой, которую робот выполняет. Компилятор NQC транслирует исходный текст программы, написанный на NQC, в байткоды LEGO. NQC, как следует из названия, похож на язык С, поэтому, по сравнению с MindScript или LASM, гораздо быстрее осваивается теми, у кого уже есть некоторый опыт в программировании. Очень простой прикладной программный интерфейс (API) NQC, в отличие от очень мощного но объемного API MindScript'а, позволяет быстро начать писать собственные программы. Краткое введение в NQC для программистовПрограммисту, писавшему программы на С или С++, обычно достаточно просто пролистать руководство по NQC, либо посмотреть образцы программ, чтобы начать писать свои собственные. Поэтому далее будут отмечены только некоторые особенности NQC, отличающие его от других языков программирования. ЗадачиРоботы LEGO могут выполнять несколько задач одновременно (например, управлять двигателями и в то же время отслеживать состояние датчиков). Число задач определяется типом робота: RCX поддерживает 10 задач, Spybotics - 8, Scout - 6, CyberMaster - 4. Задачи определяются через ключевое слово task. Программа должна иметь по крайней мере одну задачу с именем main, которая и будет выполнятся при начале работы программы. Запуск задачи производится командой start, остановка - stop. ФункцииФункции используются для облегчения программирования: таким образом группы операторов, объединенные в функцию, могут быть вызваны при необходимости. В отличие от подпрограмм, функции имеют тип inline, то есть при компиляции программы текст функции будет вставляться в каждое место ее вызова. Функции могут быть переданы аргументы, однако, в отличие от большинства языков программирования, в NQC функции НЕ возвращают значения (поэтому же, кстати, определяются через ключевое слово void). ПодпрограммыВ отличие от функций, программа содержит только по одной копии кода для каждой из подпрограмм, благодаря чему может быть более компактной. Однако использование программ связано с рядом ограничений: Переменные и константыВсе переменные в NQC одного типа - 16-битовые знаковые целые, декларируются, соответственно, через ключевое слово int. Аналогично, константы могут быть только числовыми - целыми или шестнадцатеричными. Число переменных в программе зависит от типа робота: программы для Scout могут иметь до 10 переменных, для остальных роботов - до 32. Глобальные переменные определяются вне блоков кода и доступны для всех задач, функций и подпрограмм. Локальные переменные определяются внутри блока кода и доступны только внутри этого же блока. Если переменной не требуется быть глобальной, ее следует сделать настолько локальной, насколько возможно. МассивыМассивы поддерживаются только RCX2 и Spybotics и имеют следующие ограничения:
|