Документація
Програмні структури
Overview
Основні команди
Програмні структури
- comment
- loops
- if-structures
- procedures
- end
Приклади скриптів
Навчання

Програмні структури

Here you'll find the grammatical structures that are allowed to define the behaviour of the robot.

Comments

# free text that will not be evaluated

All text that appears after a hash, '#', will not be interpreted as instructions. The robot will proceed to read the next line in the script. Use this possibility to annotate parts of the script, just for yourself, as documentation about how these parts work

Loops

повторити(n){...instructions...}
repeats the instructions between curly brackets exactly n times.

Example:

# a square of 2x2
повторити(4)
{
	вперед(2)
	праворуч()
}
                  

повторити(){...instructions...}
just keeps repeating the instructions between curly brackets for ever.

Example:

# just goes forward
# (but eventually will stay hitting a wall)
повторити()
{
	вперед()

}

повторитиПоки(condition){...instructions...}
repeats the instructions between curly brackets as long as the condition holds. This condition must be a perception/seeing instruction (for example попередуПусто)

Example:

# keeps going forward, 
# but stops when it can't go any further
повторитиПоки(попередуЗайнято)
{
	вперед(1)

}

припинити
allows you to jump out of the loop (e.g. a repeat() section) so it stops performing the instructions between curly brackets. The robot will resume performing the instructions left after the closing curly bracket of the loop.

Example:

# keep going forward, until yu can't go any further
повторити()
{
	якщо(попередуЗайнято())	{	
		припинити
	}
	інакше
	{	
		вперед(1)
	}
}
                  

If-structures

якщо(condition){...instructions...}
will perform the the instructions between curly brackets, only if the condition holds. Else the robot immediatly steps to the instructions written after the closing curly bracket.The condtion must be a perception/seeing instruction (for example: попередуПусто())

Example:

# if you see white paint on your left, make it black
якщо(ліворучБіле())
{
	ліворуч()    
	вперед(1)
	фарбуватиЧорним()
	зупинитиФарбування()
	назад(1)
	праворуч()
}
                  

якщо(condition){...instructions...}інакше{...instructions...}
will perform the the instructions between the first pair of curly brackets, only if the condition holds. Then it will not perform the instructions of the else block (second pair of instructions). When the condition does not hold, the robot will only perform the instructions in between the second pair of curly brackets. After it performed one of the instruction blocks, it will read the instructions after the last curly bracket.The condtion must be a perception/seeing instruction (for example: попередуПусто())

Example:

# if you see white paint on your left, make it black
# else drive a few steps forward
якщо(ліворучБіле())
{
	ліворуч()    
	вперед(1)
	фарбуватиЧорним()
	зупинитиФарбування()
	назад(1)
	праворуч()
}
інакше
{
	вперед(3)
}
                  

Logical
expressions

The conditions of if- and repeatWhile-structures is a so-called logical expression. Such an expression will result in the value істинно or хибно, which is then used to decide to step to the appropriate part of the code to resume execution.

A logical expression can be a perception instruction, e.g.: істинно(). Основні команди may also be composed with the boolean operators ~, &, |.

Example:

якщо(ліворучБіле())
{
    ліворуч()    
    вперед(1)    
}

The condition can however also be refined to more indicate more precisely when the corresponding instructions should be executed by using (a combination of) the following operators.

Operation
Alternative
notation
Number of
arguments
Explanation
не ~ 1

Negates the value of the argument :

Truth table :
~ істинно = хибно
~ хибно = істинно

Example:
~ попередуПусто()

і & 2

Only true when both arguments are true.

Truth table:
істинно & істинно = істинно
істинно & хибно = хибно
хибно & істинно = хибно
хибно & хибно = хибно

Example:
попередуПусто() & праворучБіле()

або | 2

True when at least one of the arguments is true.

Truth table:
істинно | істинно = істинно
істинно | хибно = істинно
хибно | істинно = істинно
хибно | хибно = хибно

Example:
попередуПусто() | праворучБіле()

The values істинно and хибно can also be applied directly as if it was a perception instruction.

The order of the operators is of importance (just like multiplying and adding numbers). The operation ~ binds strongest, followed by &, followede by |. Brackets can be used to influence the order of evaluation.

Examples:

				
повторитиПоки(не попередуПусто() і (ліворучБіле() або праворучБіле())){
    вперед(1)
}

якщо(випадково() і не праворучБіле())
{
    праворуч()
    назад(1)
}

якщо(істинно і хибно){
    # this instruction is never executed
    вперед(1)
}
              

Procedures

процедура name(par1, par2, ... , parN){...instructions...}
defines a new procedure with the name you want. The procedure can have zero or more parameters, which you may also give useful names. Here they are called par1, par2, . . . , parN. These are the variables you can use in the instruction beteen curly brackets. The code in a procedure will not be performed automatically, you have to write a 'procedure call' every time you want to perform the instructions in the definition (See next instruction).
Tip: create a new procedure when when you you use a sequence of instructions more than once.

Example:

# define how to draw a rectangle
процедура rectangle(width, height)
{
	фарбуватиБілим()
	повторити(2)
	{
		вперед(height)
		праворуч()
		вперед(width)
		праворуч()
	}
	зупинитиФарбування()
}
                  

name(arg1, arg2, . . . , argN)
is the call to the procedure with the corresponding name and the same amount parameters as you have arguments. The argument, here called arg1, arg2, . . . , argN, are the particular values that will be used in the procedure definition.

Example:

# these instructions will be performed
вперед(1)
rectangle(3,2) # a call to the 'rectangle' procedure
вперед(3)
rectangle(1,4) # another call with other arguments


# this is the definition of 'rectangle'
процедура rectangle(width, height)
{
	фарбуватиБілим()
	повторити(2)
	{
		вперед(height)
		праворуч()
		вперед(width)
		праворуч()
	}
	зупинитиФарбування()
}                  

End

кінець
will cause the entire program to stop when this instruction is performed.

Example:

# stop after 5 steps, or earlier when you encouter a beacon on the right
повторити(5)
{
	вперед(1)
	якщо(праворучМаяк())
	{
		кінець # stops execution of the program
	}
}
# normal end of the program
                  
RoboMind - Copyright © 2005 - 2016 - Research Kitchen