Документация
Управляющие конструкции
Содержание
Основные команды
Управляющие конструкции
- комментарии
- циклы
- логические конструкции
- процедуры
- завершение программы
Примеры программ
Образование

Управляющие конструкции

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

Комментарии

# любой текст в этой строке игнорируется

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

Циклы

повтор(n){...команды...}
повторить команды между фигурными скобками n раз.

Пример:

# квадрат размером 2x2
повтор(4)
{
	вперед(2)
	направо()
}
                  

повтор(){...команды...}
повторять команды между фигурными скобками бесконечное число раз.

Пример:

# все время двигаться вперед
# (на самом деле робот остановится, когда врежется в стену)
повтор()
{
	вперед(1)
}

пока(условие){...команды...}
повторять команды между фигурными скобками, пока условие истинно. Условием может быть любая команда обзора (например, впередиСвободно)

Пример:

# двигаться вперед, 
# пока нет препятствий
пока(впередиСвободно())
{
	вперед(1)
}

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

Пример:

# все время двигаться вперед, пока нет препятствия
повтор()
{
	если(впередиПрепятствие())	{	
		прервать
	}
	иначе
	{	
		вперед(1)
	}
}
                  

Логические конструкции

если(условие){...команды...}
выполняет команды, заключенные между фигурными скобками, если условие истинно. Если условие ложно, то робот пропускает команды внутри фигурных скобок и начинает выполнять команды, расположенные после закрывающей фигурной скобки. Условием может быть любая команда обзора (например: впередиСвободно())

Пример:

# если слева ты увидел белую краску, то закрась ту клетку черной краской
если(слеваБелый())
{
	налево()    
	вперед(1)
	рисоватьЧерным()
	стопРисовать()
	назад(1)
	направо()
}
                  

если(условие){...команды...}иначе{...команды...}
если условие истинно, то выполняет команды, заключенные между первой парой фигурных скобок. В этом случае команды внутри блока иначе (второй блок команд) не выполняются. Если условие ложно, то робот выполняет команды, заключенные внутри второй пары фигурных скобок. После того как выполнился первый или второй блок команд, робот продолжает выполнять команды, расположенные после последней закрывающей скобки. Условием может быть любая команда обзора (например: впередиСвободно())

Пример:

# если слева ты увидел белую краску, то закрась ту клетку черной краской
# иначе двигайся вперед на несколько клеток
если(слеваБелый())
{
	налево()    
	вперед(1)
	рисоватьЧерным()
	стопРисовать()
	назад(1)
	направо()
}
иначе
{
	вперед(3)
}
                  

Логические
выражения

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

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

Пример:

если (слеваБелый())
{
    налево()    
    вперед(1)    
}

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

Операция
Сокр.
запись
Количество
аргументов
Описание
не ~ 1

Отрицание значения в аргументе.

Логическая таблица:
не истина = ложь
не ложь = истина

Пример:
не впередиСвободно()

и & 2

Принимает значение истина, только если оба аргумента истинны.

Логическая таблица:
истина и истина = истина
истина и ложь = ложь
ложь и истина = ложь
ложь и ложь = ложь

Пример:
впередиСвободно() и справаБелый()

или | 2

Принимает значение истина, если по крайней мере один из аргументов истина.

Логическая таблица:
истина или истина = истина
истина или ложь = истина
ложь или истина = истина
ложь или ложь = ложь

Пример:
впередиСвободно() или справаБелый()

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

Порядок следования операторов имеет значение (подобно операциям умножения и сложения чисел). Операция 'не' обладает самым высоким приоритетом, ниже следует 'и', еще ниже приоритет 'или'. Чтобы повлиять на порядок вычисления можно использовать круглые скобки.

Примеры:

				
пока(не впередиСвободно() и (слеваБелый() или справаБелый())){
    вперед(1)
}

если(вероятность() и не справаБелый())
{
    направо()
    назад(1)
}

если(истина и ложь){
    # эта команда никогда не выполняется
    вперед(1)
}
              

Процедуры

процедура имя(парам1, парам2, ... , парамN){...команды...}
определяет новую процедуру с именем, которое вам нужно. Процедура может не иметь параметров, а также иметь один или больше параметров, которым можно давать подходящие имена. Здесь они называются парам1, парам2, . . . , парамN. Эти переменные вы можете использовать в командах внутри фигурных скобок. Код процедуры не выполняется автоматически, вы должны написать 'вызов процедуры', чтобы выполнить команды в определении процедуры.
Совет: создавайте новую процедуру, когда вы замечаете, что одна и та же последовательность команд встречается более одного раза.

Пример:

# нарисовать прямоугольник
процедура прямоугольник(ширина, высота)
{
	рисоватьБелым()
	повтор(2)
	{
		вперед(высота)
		направо()
		вперед(ширина)
		направо()
	}
	стопРисовать()
}
                  

имя(арг1, арг2, . . . , аргN)
это вызов процедуры, которая имеет соответствующее имя и количество параметров равно числу аргументов. Аргументы: арг1, арг2, . . . , аргN - это конкретные значения, которые будут использоваться при выполнении процедуры.

Пример:

# эти команды выполняются
вперед(1)
прямоугольник(3,2) # вызов процедуры 'прямоугольник'
вперед(3)
прямоугольник(1,4) # еще один вызов процедуры с другими аргументами


# это определение процедуры 'прямоугольник'
процедура прямоугольник(ширина, высота)
{
	рисоватьБелым()
	повтор(2)
	{
		вперед(высота)
		направо()
		вперед(ширина)
		направо()
	}
	стопРисовать()
}                  

Завершение программы

закончить
эта команда приводит к завершению выполнения программы.

Пример:

# остановиться через 5 клеток, или раньше, если обнаружишь маяк с правой стороны
повтор(5)
{
	вперед(1)
	если(справаМаяк())
	{
		закончить # остановить выполнение программы
	}
}
# нормальное завершение программы
                  
RoboMind - Copyright © 2005 - 2016 - Research Kitchen