sBotics Wiki

Tutorial do Simulador usado pela OBR

Ferramentas do usuário

Ferramentas do site


reduc

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
reduc [2025/04/01 23:57] – [Exemplo] adminreduc [2025/04/15 16:34] (atual) – edição externa 127.0.0.1
Linha 1: Linha 1:
 ====== rEduc ====== ====== rEduc ======
  
-A linguagem rEduc foi criada para facilitar a programação de robôs em linguagens mais complexas (no caso do sBotics, [[csharp|C#]]). Ela reúne as estruturas básicas e tipos de dados que um usuário pode precisar para programar seus robôs. +A linguagem rEduc foi criada para facilitar a programação de robôs em linguagens mais complexas (no caso do sBotics, [[csharp|C#]]). Ela reúne as estruturas básicas e tipos de dados que um usuário pode precisar para programar seus robôs. Ao "compilar" rEduc, o simulador converte o código em C# para que o robô consiga executar o que foi programado sem o usuário precisar ter conhecimentos de programação avançada em C#.
  
 Neste tutorial apresentaremos as principais estruturas desta linguagem. Neste tutorial apresentaremos as principais estruturas desta linguagem.
 +
 +> **Aviso!** rEduc também tem uma versão em inglês, porém neste tutorial estamos tratando da versão pt-BR do rEduc, a mais utilizada por usuários do sBotics.
  
 ===== Inicialização ===== ===== Inicialização =====
Linha 95: Linha 97:
  
 ==== Conversões Entre Tipos ==== ==== Conversões Entre Tipos ====
-asdasdasdas+Tipos podem ser convertidos utilizando as funções ''%%VirarTexto()%%'', ''%%VirarNumero()%%'' e ''%%VirarBooleano()%%''. Estas funções farão as conversões dos seguintes tipos: 
 + 
 +  * ''%%VirarTexto(numero)%%'': Transforma o número informado em texto (Ex.: ''%%5%%'' virar ''%%"5"%%''); 
 +  * ''%%VirarNumero(texto)%%'':Transforma o texto informado em número (Ex.: ''%%"5"%%'' virar ''%%5%%''); 
 +  * ''%%VirarBooleano(numero)%%'':Transforma o número informado em booleano (Ex.: ''%%1%%'' virar ''%%verdadeiro%%''). 
 + 
 +Na conversão em booleano, caso o número informado seja 1 ou acima a conversão sairá como ''%%verdadeiro%%'', e 0 ou abaixo para ser ''%%falso%%''.
 ===== Controladores de fluxo ===== ===== Controladores de fluxo =====
  
Linha 154: Linha 162:
 **Teste** **Teste**
  
-A estrutura teste da linguagem rEduc representa um comando de seleção. A utilização desta estrutura faz com que o valor de uma variável do tipo **texto** fornecida seja avaliado e dependendo de seu valor uma determinada sequência de comandos é realizada. No código abaixo a variável testada foi chamada de variavel e caso o seu valor seja igual a valor1 a sequência de comandos denominada no código como comandos1 será executada, caso seu valor seja igual a valor2 o conjunto comandos2 será executado. Caso seu valor não seja nenhum dos apresentados a sequência de comandos denominada de comandos3 será executada.+A estrutura teste da linguagem rEduc representa um comando de seleção. A utilização desta estrutura faz com que o valor de uma **variável do tipo texto** fornecida seja avaliado e dependendo de seu valor uma determinada sequência de comandos é realizada. No código abaixo a variável testada foi chamada de variavel e caso o seu valor seja igual a valor1 a sequência de comandos denominada no código como comandos1 será executada, caso seu valor seja igual a valor2 o conjunto comandos2 será executado. Caso seu valor não seja nenhum dos apresentados a sequência de comandos denominada de comandos3 será executada.
  
 <code> <code>
-teste ( variavel de texto ) {+teste ( variavelDeTexto ) {
     caso valor1: comandos1     caso valor1: comandos1
     caso valor2: comandos2     caso valor2: comandos2
Linha 256: Linha 264:
  
   numero exemplodois = UmMaisAlgo(5)   numero exemplodois = UmMaisAlgo(5)
 +  
 +===== Valores-Padrão de Parâmetros (Funções e Tarefas) =====
 +Conceito mais avançado, porém tarefas e funções podem possuir valores-padrão para os parâmetros se informados após o símbolo ''%%=%%''. Isto é, os parâmetros mais a direita (e **precisam** estar mais a direita na hora de escrever a função) podem possuir um valor padrão que caso não seja(m) informado(s) será(ão) utilizado(s).
 +
 +<code>
 +tarefa Frente com numero velocidade = 200 {
 + Motor("meu-motor-esquerdo", velocidade)
 + Motor("meu-motor-direito", velocidade)
 +}
 +</code>
 +
 +Isto poderá ser chamado como:
 +
 +  # Normalmente
 +  Frente(500)
 +
 +  # Sem o parâmetro, que utilizará o valor padrão de 200 como definido
 +  Frente()
 ===== Comandos ===== ===== Comandos =====
-asdasdasdasd+Comandos gerais para a linguagem rEduc, desde operações matemáticas a controle do robô etc podem ser encontrados aqui: [[https://code.sbotics.net/programming/platforms/c0db56ec-619f-498f-9fbb-7835735f0f5e/languages/4224cf8e-f00c-4cc5-bd08-f0d22fad011d/functions|Comandos]]. 
 + 
 +Para aprender outros conceitos gerais de [[Programação]] e sobre [[Componentes]], basta acessar as outras páginas associadas da wiki.
  
 ===== Exemplo ===== ===== Exemplo =====
 +{{ line-follower.gif }}
 +
 Segue abaixo um código de exemplo de um simples seguidor de linha para o robô "Trekker" padrão do sBotics usando rEduc. Segue abaixo um código de exemplo de um simples seguidor de linha para o robô "Trekker" padrão do sBotics usando rEduc.
  
 <code> <code>
 +# Funções de Controle
 +tarefa Frente com numero velocidade = 200{
 +        TravarMotor("l", falso) # Destrava o motor da esquerda
 +        TravarMotor("r", falso) # Destrava o motor da direita
  
 +        Motor("l", velocidade)
 +        Motor("r", velocidade)
 +}
 +
 +tarefa Direita com numero velocidade = 200{
 +        Motor("r", 0)
 +        TravarMotor("r", verdadeiro) # Trava o motor da direita
 +
 +        TravarMotor("l", falso) # Destrava o motor da esquerda
 +        Motor("l", velocidade*2)
 +}
 +
 +tarefa Esquerda com numero velocidade = 200{
 +        Motor("l", 0)
 +        TravarMotor("l", verdadeiro) # Trava o motor da esquerda
 +
 +        TravarMotor("r", falso) # Destrava o motor da direita
 +        Motor("r", velocidade*2)
 +}
 +
 +tarefa Tras com numero velocidade = 200{
 +        TravarMotor("l", falso) # Destrava o motor da esquerda
 +        TravarMotor("r", falso) # Destrava o motor da direita
 +
 +        Motor("l", 0-velocidade)
 +        Motor("r", 0-velocidade)
 +}
 +
 +numero contador = 0
 +tarefa LedFinal {
 +    para contador de 1 ate 5 passo 1 farei {
 +        LigarLuz("led", 255, 0, 0)
 +        Esperar(50)
 +        LigarLuz("led", 0, 255, 0)
 +        Esperar(50)
 +        LigarLuz("led", 0, 0, 255)
 +        Esperar(50)
 +    }
 +}
 +
 +inicio
 +    AbrirConsole()
 +    
 +    enquanto (verdadeiro) farei {
 +        EscreverLinha("Escrevendo no Console")
 +        se((Cor("rc") == "Preto") e (Cor("lc") != "Preto")) entao {
 +            LigarLuz("led", 0, 0, 255)
 +            Direita(300)
 +        } senao se((Cor("rc") != "Preto") e (Cor("lc") == "Preto")) entao {
 +            LigarLuz("led", 255, 0, 0)
 +            Esquerda(300)
 +        } senao se((Cor("rc") == "Preto") e (Cor("lc") == "Preto")) entao {
 +            LigarLuz("led", 0, 255, 0)
 +            Frente()
 +        } senao se((Cor("rc") == "Vermelho") ou (Cor("lc") == "Vermelho")) entao {
 +            Frente(0)
 +            LedFinal()
 +        } senao { 
 +            LigarLuz("led", 255, 0, 255)
 +            Frente()
 +        }
 +
 +    }
 +
 +fim
 </code> </code>
 +
 +Caso seja um usuário avançado que deseja realizar tarefas mais difíceis e ter um controle total sobre seu robô, cogite alterar para [[csharp|C#]].
  
reduc.1743551829.txt.gz · Última modificação: 2025/04/15 16:34 (edição externa)