|
Comando Se |
|
|
Para controlar eventos complexos, um robô deve ser capaz de tomar decisões, escolhendo entre as ações disponÃveis a mais adequada, considerando seus objetivos e a leitura dos sensores. Estas decisões dependem do resultado de expressões lógicas, tais resultados determinam qual a próxima ação a ser tomada. A linguagem LEGAL fornece uma estrutura de controle para tomada de decisões e uma para a repetição controlada de comandos. O comando se seleciona um entre dois Bloco Comandos para execução. A estrutura deste comando consiste da palavra reservada se em companhia das palavras reservadas então e senão. Tendo em vista que o comando senão é opcional, a forma mais simples da desta estrutura condicional é a seguinte: se <expressão relacional> então [ Bloco de comandos é executado se a condição for verdadeira ]
Se a <expressão relacional> for verdadeira o programa executa o Bloco Comandos localizados abaixo do comando então então. Se a condição for falsa, o comando se não terá nenhuma ação e o bloco não é executado. No programa a seguir a luz um é acesa quando o botão enter for pressionado. # Exemplo: # O programa fica em loop infinito verificando se botão enter # está pressionado, se estiver liga a luz 1 Por favor Repita sempre [ se bt enter=1 então [ ligue L1 ] ] Obrigado
Quando usamos o comando senão a estrutura do condicional está assim definida:
se expressão condicional então [ Bloco de comandos que é executado se a condição for verdadeira ] senão [ Bloco de comandos que é executado se a condição for falsa ]
Se a condição for verdadeira, o Bloco Comandos próximo ao então é executado e o LEGAL pula o Bloco Comandos que está abaixo do comando senão. Alternativamente, se a condição for falsa, a execução é desviada diretamente para o Bloco Comandos do comando senão. No próximo exemplo o MC2.5 acende a luz um e apaga a luz dois quando o botão enter for pressionado. Invertendo o estado destas quando o botão é solto. # Exemplo: # Toda vez que o botão enter é pressionado a Luz 1 acende, # desligando quando ele é solto. Por favor Repita sempre [ se bt enter=1 então [ ligue L1 desligue L2 ] senão [ desligue L1 ligue L2 ] ] Obrigado
As estruturas formadas com o comando se podem estar aninhadas. Em outras palavras, toda uma estrutura de decisão, com os comandos se, então e senão, pode aparecer dentro de um Bloco Comandos então ou senão de uma outra estrutura. O alinhamento de estruturas se pode resultar em seqüências de decisões complexas e poderosas. Como no exemplo, a seguir: # Exemplo: # Comandos condicionais aninhados. Por favor Repita sempre [ se s4>s8 então # Se o s4 receber mais luz que s8 [ se bt enter=1 então # se botão enter está pressionado [ ligue L1 desligue L2 desligue L4 ] senão [ ligue L2 ] ] senão [ desligue L1 desligue L2 ligue L4 ] ] Obrigado
Neste exemplo, a primeira decisão está baseada nos valores dos sensores S4 e S8. Se S4 for maior que S8, o programa desta a segunda condição:
Caso o valor de S4 for menor ou igual a S8 a luz 4 é acesa. |