Cicli |
Ripeti(n){...istruzioni...}
ripeti le istruzioni racchiuse tra le parentesi graffe per n volte.
Example:
# un rettangolo 2x2
Ripeti(4)
{
Avanti(2)
Destra
}
Ripeti{...istruzioni...}
Continua a ripetere le istruzioni fra le graffe.
Esempio:
# va solo avanti
# (e inevitabilmente colpir� un muro o un ostacolo)
Ripeti
{
Avanti(1)
}
RipetiFinoAChe(condizioni){...istruzioni...}
Ripete le istruzioni fra le parentesi graffe, fino a che diventa falsa l'istruzione tra le parentesi tonde(for example DavantiLibero)
Esempio:
# andra' sempre avanti,a'
# ma si ferma quando non potra' andare piu' avanti
RipetiFinoAChe(DavantiLibero)
{
Avanti(1)
}
Esci
ti permette di uscire fuori dal ciclo (e.g. a Ripeti ciclo), impedendo di eseguire il resto delle istruzioni delle parentesi graffe. Il robot continuera' ad eseguire le prossime istruzioni fuori dal ciclo
.
Esempio:
# va avanti fino a che puo'
Ripeti
{
Se(DavantiBloccato} {
Esci
}
Altrimenti
{
Avanti(1)
}
}
|
Struttura-se |
Se(condizione){...istruzioni...}
Eseguira' le istruzioni che ci sono fra le parentesi graffe se la condizione scritta tra le parentesi tonde e' vera.Altrimenti il robot passera' alle istruzioni scritte dopo.La condizione dev'essere l'istruzione tipo: DavantiBloccato e simili
Esempio:
# se alla tua sinistra c'e' bianco allora dipingi nero
Se(SinistraBianco)
{
Sinistra
Avanti(1)
DipingiNero
FermaDipingi
Indietro(1)
Destra
}
Se(condizione){...instructions...}Altrimenti{...istruzioni...}
Il robot eseguira' il primo blocco d'istruzioni sono la condizione e' vera, altrimenti eseguira' il secondo blocco d'istruzioni. La condizione dev'essere tipo:
DavantiBloccato e simili
Esempio:
# se vedi bianco a sinistra allora dipingi in nero
# altrimenti guida avanti per 3 passi
Se(SinistraBianco)
{
Sinistra
Avanti(1)
DipingiNero
FermaDipingere
Indietro(1)
Destra
}
Altrimenti
{
Avanti(3)
}
|
Espressioni
Logiche |
Le condizioni del Se- e RipetiFinoAChe sono chiamate espressioni logiche.Le espressioni logiche danno come risultato Vero or Falso.Vengono utilizzate per decidere le istruzioni.
Una logica espressione puo' essere data da le istruzioni di percezione, e.g.: SinistraBianco. Le istruzioni base posso essere composte inoltre anche da not, and, or.
Esempio:
Se(SinistraBianco)
{
Sinistra
Avanti(1)
}
Le condizioni posso anche essere combinate tra loro per indicare quando eseguire una determinata istruzioni.
Operazione |
Notazione
alternativa |
Numero degli
argomenti |
Spiegazione |
non |
~ |
1 |
Nega il valore degli argomenti :
Tavola delle verita' :
non vero = Falso
non falso = vero
Esempio:
non DavantiLibero |
e |
& |
2 |
Vero solo se entrambi gli argomenti sono veri
Tavola della verita':
vero e vero = vero
vero e falso = falso
falso e vero = falso
falso e falso = falso
Esempio:
DavantiLibero and DestraBianco
|
o |
| |
2 |
Quando uno dei due e' vero.
Truth table:
vero o vero = vero
vero o falso = vero
falso o vero = vero
falso o falso = falso
Esempio:
DavantiLibero o DestraBianco |
I valori vero e falso posso essere applicati diettamente alle istruzioni di percezione.
L'ordine degli operatori e' molto importante(come moltiplicare e aggiungere numeri). L'operazione non si lega maggiormenete, se seguita da e, e poi dao. Le parentesi possono essere utilizzate per influenzare l'ordine di valutazione.
Esempio:
RipetiFinoAChe(non DavantiLibero e (SinistraBianco o DestraBianco)){
Avanti(1)
}
Se(LancioMoneta e non DestraBianco)
{
Destra
Indietro(1)
}
Se(Vero e Falso){
# questa istruzione non sara' mai esguita
Avanti(1)
}
|
Procedure |
procedura nome(par1,
par2, ... , parN){...istruzioni...}
Definisce un nuovo blocco d'istruzioni con il nome desiderato.La procedura puo' avere zero o piu' parametri, e ed consigliato dare nomi utili al fine di ricordare cosa faccia quella procedura.Qui puoi usare n-parametri e sono le variabili che puoi utilizzare nelle istruzioni tra le parentesi graffe. Il codice di una procedura non viene eseguito automaticamente, ed e' necessario scrivere una "chiamata alla procedura" ogni volta che si desidera eseguire le istruzioni nella definizione
Suggerimento: creare una nuova procedura quando si utilizza una sequenza di istruzioni piu' di una volta.
Esempio:
# definisce come disegnare un rettangolo
procedura rettangolo(larghezza, altezza)
{
DisegnaBianco
Ripeti(2)
{
Avanti(altezza)
Destra
Avanti(larghezza)
Destra
}
FermaDipingi
}
nome(arg1, arg2, . .
. , argN)
E' la chiamata alla procedura, i cui parametri corrispondo ai valori degli argomenti. Gli argomenti arg1,arg2...argN sono particolari valori che vengono usati per definire una procedura
.
Esempio:
# saranno eseguite queste istruzioni
Avanti(1)
rettangolo(3,2) # chiamata alla procedura "rettangolo"
Avanti(3)
rettangolo(1,4) # un'altra chiamata alla procedura
# questa e' la procedura di "rettangolo"
procedura rettangolo(larghezza, altezza)
#in base alle varie chiamata, larghezza e altezza
#una volta avranno valore "3","2" come dice la prima chiamata
#nella seconda chiamata avranno valore "1","4"
{
DipingiBianco
Ripeti(2)
{
Avanti(altezza)
Destra
Avanti(larghezza)
Destra
}
FermaDipingere
}
|