RoboMind Dokumentacija
Dokumentacija
Programske strukture
Pregled
Uvod
Osnovni ukazi
Programske strukture
- komentar
- zanke
- pogojni stavki
- procedure
- konec
Primeri skript

Programming structures

Tukaj boš našel pravilno zapisane strukture, ki so dovoljene za definiranje obnašanja robota.

Komentarji

# poljuben tekst, ki bo preskočen

Ves tekst, kateri se nahaja po lojtrici, '#', ne bo obravnavan kot ukaz. Robot bo nadeljeval izvajanje ukazov v naslednji vrstici skripe. Uporabi to možnost za označevanje delov skripte, ki so samo zate, ali kot dokumentacija

Zanke

Ponovi(n){...ukazi...}
Ponovi ukaze znotraj zavitih oklepajev natanko n krat.

Primer:

# kvadrat 2x2
Ponovi(4)
{
	naprej(2)
	desno
}
                  

Ponovi{...ukazi...}
Ponavljaj ukaze znotraj zavitih oklepajev neskončno krat.

Primer:

# pojdi samo naprej
# (prej ali slej pa se bo zaletel v zid)
Ponovi
{
	naprej(1)
}

PonoviDokler(Pogoj){...ukazi...}
Ponavlja ukaze znotraj zavitih oklepajev, tako dolgo dokler pogoj drži. Pogoj mora biti vidni/Poglej ukaz (naprimer JeSpredajProsto)

Primer:

# nadaljuje vožnjo naprej, 
# a se ustavi takoj ko ne more iti več naprej
PonoviDokler(JeSpredajProsto)
{
	naprej(1)
}

Prekini
Omogoča ti, da izskočiš iz zanke (npr.: Ponovi segmenta) tako da preneha izvajat ukaze znotraj zavitih oklepajev. Robot bo nadeljeval z izvajanjem ukazov po zavitem zaklepaju zanke.

Primer:

# nadaljuje vožnjo naprej dokler ne more iti več naprej
Ponovi
{
	Če(JeSpredajOvira)	{
		Prekini
	}
	Sicer
	{	
		naprej(1)
	}
}
                  

Pogojni stavek

Če(Pogoj){...ukazi...}
Izvajal bo ukaze znotraj zavitih oklepajev, camo če bo pogoj veljaven. Sicer bo robot nemudoma začel izvajat ukaze za zavitim zaklepajem. Pogoj mora biti vidni/Poglej ukaz (naprimer JeSpredajProsto)

Primer:

# Če zagledaš belo barvo na levi strani, jo spremeni v črno
Če(JeLevoBelo)
{
	levo
	naprej(1)
	barvajČrno
	nehajBarvat
	nazaj(1)
	desno
}
                  

Če(Pogoj){...ukazi...}Sicer{...ukazi...}
Izvajal bo ukaze znotraj prvega para zavitih oklepajev, camo če bo pogoj veljaven. Nato ne bo izvajal ukaze znotraj Sicer bloka (drugi par zavitih oklepajev). Ko pogoj ni veljaven, bo robot samo izvajal ukaze znotraj drugega para zavitih oklepajev. Ko bo končal z ivajanjem ukazov znotraj enega od ukaznih blokov (para zavitih oklepajev), bo nadaljeval z branjem ukazov po zadnjem zavitem zaklepaju.
Pogoj mora biti vidni/Poglej ukaz (naprimer: JeSpredajProsto)

Primer:

# Če zagledaš belo barvo na levi strani, jo spremeni v črno
# sicer zapelji par korakov naprej
Če(JeLevoBelo)
{
	levo
	naprej(1)
	barvajČrno
	nehajBarvat
	nazaj(1)
	desno
}
Sicer
{
	naprej(3)
}
                  

Logični
izrazi

Pogoji od Če- ter PonoviDokler- struktur so tako imenovani logični izrazi. Rezultat takega izraza je lahko vrednost je(res/pravilno/1) ali ni(ni res/narobe/0), ki je nato uporabljen za vstop v ustrezni del kode za nadaljevanje izvajanja.

Logični izraz je lahko vidni/Poglej ukaz, npr.: JeSpredajProsto. Osnovni ukazi so lahko tudi tvorjeni z binarnimi operatorji negiraj, in, ali.

Primer:

Če(JeLevoBelo)
{
    levo
    naprej(1)    
}

Pogoj pa je lahko tudi za boljšo preglednost definiran s pomočjo sledečih operatorjev ali nihovih kombinacij.

Operacija
Alternativi
zapis
Število
argumentov
Razlaga
negiraj ! 1

Negira rezultat argumenta :

Resničnostna tabela:
negiraj je = ni
negiraj ni = je

Primer:
negiraj JeSpredajProsto

in && 2

Resnično samo če sta oba argumentna resnična.

Resničnostna tabela:
je in je = je
je in ni = ni
ni in je = ni
ni in ni = ni

Primer:
JeSpredajProsto in rightIsWhite

ali || 2

Resnično ko je vsaj en od argumentov resničen.

Resničnostna tabela:
je ali je = je
je ali ni = je
ni ali je = je
ni ali ni = ni

Primer:
JeSpredajProsto ali rightIsWhite

Vrednosti je ter ni sta lahko tudi uporabljena kot, da bi bila vidni/Poglej ukaz.

Vrstni red operatorjev je pomemben (podobno kot pri deljenju ter odštevanju). Operacija negiraj veže najmočneje, sledi in, ter nato ali. Oklepaje lahko uporabiš za vplivanje na vrstni red preverjanja.

Primeri:

				
PonoviDokler(negiraj JeSpredajProsto in (JeLevoBelo ali JeDesnoBelo)){
    naprej(1)
}

Če(vržiKovanec in negiraj JeDesnoBelo)
{
    desno
    nazaj(1)
}

Če(je in ni){
    # this instruction is never executed
    naprej(1)
}
              

Procedura

Procedura ime(par1, par2, ... , parN){...ukazi...}
definira novo proceduro z poljubnim imenom. Procedura ima lahko 0 ali poljubno število parametrov, katerim lahko daš tudi uporabna imena. Tukaj so poimenovana par1, par2, . . . , parN. Te spremenljivke lahko uporabiš znotraj ukazov med zavitima oklepajema. Koda znotraj procedure ne bo izvedena samodejno, napisati moraš 'klicanje procedure' vsakič ko želiš izvesti ukaze znotraj njene definicije (Glej sledeče napotke).
Nasvet: ustvari proceduro vsakič, ko uporabljaš enako zaporedje ukazov večkrat.

Primer:

# definiranje kako izrisat kvadrat
Procedura kvadrat(dolžina, širina)
{
	barvajBelo
	Ponovi(2)
	{
		naprej(dolžina)
		desno
		naprej(širina)
		desno
	}
	nehajBarvat
}
                  

ime(arg1, arg2, . . . , argN)
Je način kako pokličeš proceduro s pripadajočim imenom in enakim številom parametrov kot imaš argumentov. Argumenti tukaj klicani kot arg1, arg2, . . . , argN, so realne vrednosti ki bodo uporabljene znotraj definicije procedure.

Primer:

# Ti ukazi bodo izvedeni
naprej(1)
kvadrat(3,2) # klik funkcije 'kvadrat' 
naprej(3)
kvadrat(1,4) # ponoven klic z drugimi argumenti


# to je definicija funkcije 'kvadrat'
Procedura kvadrat(dolžina, širina)
{
	barvajBelo
	Ponovi(2)
	{
		naprej(dolžina)
		desno
		naprej(širina)
		desno
	}
	nehajBarvat
}                  

Konec

Konec
Bo povzročilo da se bo celotni program nehal izvajat ko bo izveden ta ukaz.

Primer:

# Končaj po 5-ih korakih, ali prej če opaziš sondo na desni strani
Ponovi(5)
{
	naprej(1)
	Če(JeDesnoSonda)
	{
		Konec # ustavi izvajanje celotnega programa
	}
}
# normalni konec programa
                  
RoboMind - Copyright © 2005 - 2016 - Research Kitchen - Prevod: Miha Kočar