|
Структури за програмиране
Тук ще намериш граматическите структури на които се определя поведението на робота.
Коментари |
# свободен текст който не се счита част от програмата
Целият текст който се появява след хеш, '#', няма да се тълкува като част от инструкциите.
Роботът ще продължи да чете следващия ред в скрипта. Използвайте тази възможност
да анотирате части от скрипта, само за себе си, или като документация за това как тези
части работят
|
Цикли |
повторение(n){...инструкции...}
повтаря инструкциите между къдравите скоби точно n пъти.
Пример:
# квадрат 2 по 2
повторение(4)
{
напред(2)
надясно
}
повторение{...инструкции...}
просто продължава да повтаря иструкциите мехду къдравите скоби завинаги.
Пример:
# просто върви напред
# (но в крайна сметка ще удари стената)
повторение
{
напред(1)
}
докато(условие){...инструкции...}
повтаря инструкциите между къдравите скоби докато условието продължава да държи.
Това условие трябва да бъде възприятие/виждане инструкция (например напредСвободно)
Пример:
# продължава напред,
# но спира, когато не може да отиде по-далеч
докато(напредСвободно)
{
напред(1)
}
скъсване
позволява да се скочи от цикъла (e.g. a повтори раздел)
так че спира изпълнението на инструкции между къдравите скоби. Роботът ще продължи
изпълнението на инструкциите останали след затварящата къдрава скоба на цикъла.
Пример:
# продължавай напред, докато не може да отиде по-далеч
повторение
{
ако(напредПрепяствие) {
скъсване
}
иначе
{
напред(1)
}
}
|
Ако-структури |
ако(условие){...инструкции...}
ще изпълнява инструкциите между къдрявите скоби, само ако условието
продължава да държи. Иначе робота веднага продължава с инструкцията написаната след
къдравата скоба. Условието трябва да бъде възприятие / виждане тип инструкция.
(например: напредСвободно)
Пример:
# ако видиш бяла боя от ляво, направи я черна
ако(влявоБяло)
{
наляво
напред(1)
оцветиЧерно
сприОцветяване
назад(1)
надясно
}
ако(условие){...инструкции...}иначе{...инструкции...}
ще изпълнява инструкциите между първата двойка къдрави скоби,
само ако условието продължава да държи. Тогава няма да изпълнява инструкциите на
другия иначе блок (вторият чифт инструкции). Когато условието не
държи, роботът ще изпълнява инструкциите между втория чифт къдрави скоби.
След като извърши една от инструкционите блокове,
ще прочете инструкциите след последната къдрава скоба. Условието трябва да бъде
възприятие / виждане тип инструкция. (например: напредСвободно)
Пример:
# ако видиш бяла боя от ляво, направи я черна
# иначе върви няколко крачки напред
ако(влявоБяло)
{
наляво
напред(1)
оцветиЧерно
сприОцветяване
назад(1)
надясно
}
иначе
{
напред(3)
}
|
Логически
изрази |
Условията от ако- и повториДокато-структури са логически изрази. Такъв израз ще доведе до стойност вярно or грешно, която след това се използва за да се премине на съответната част на кода за да възобнови изпълнението.
Логически израз може да бъде възприятие инструкция, e.g.: вярно. Основни указания могат да се състоят с булеви оператори ~, &, |.
Пример:
ако(влявоБяло)
{
наляво
напред(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)
ако(вдясноФар)
{
край # спира изпълнението на програмата
}
}
# нормалното приключване на програмата
|
|
|