sBotics Wiki

Tutorial do Simulador usado pela OBR

Ferramentas do usuário

Ferramentas do site


programacao

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
programacao [2025/04/02 02:07] adminprogramacao [2025/04/15 16:34] (atual) – edição externa 127.0.0.1
Linha 30: Linha 30:
  
 Isto é, BlockEduc é um conversor/facilitador de rEduc que é um conversor/facilitador de C#. Todo código feito em BlockEduc é convertido em rEduc que é convertido em C# para ser executado pelo simulador (que internamente só processa C#). Isto é, BlockEduc é um conversor/facilitador de rEduc que é um conversor/facilitador de C#. Todo código feito em BlockEduc é convertido em rEduc que é convertido em C# para ser executado pelo simulador (que internamente só processa C#).
 +
 +> **Não pretendemos fazer conversores para linguagens mais fáceis pois o intuito do sBotics é iniciar pessoas a educação de robótica, e queremos que o usuário esteja progredindo em dificuldade e habilidade.**
  
 No geral, sempre aconselhamos utilizar o **[[rEduc]]** para seus programas, porém caso não tenha familiaridade com programação em texto ou já saiba programação avançada, não há problemas em utilizar [[BlockEduc]] e [[csharp|C#]], basta entender que cada uma das linguagens vai trazer vantagens e desvantagens, como menor controle das rotinas no caso do BlockEduc e uma curva de aprendizado difícil no caso do C#. No geral, sempre aconselhamos utilizar o **[[rEduc]]** para seus programas, porém caso não tenha familiaridade com programação em texto ou já saiba programação avançada, não há problemas em utilizar [[BlockEduc]] e [[csharp|C#]], basta entender que cada uma das linguagens vai trazer vantagens e desvantagens, como menor controle das rotinas no caso do BlockEduc e uma curva de aprendizado difícil no caso do C#.
Linha 37: Linha 39:
 > **Para pessoas mais estudadas de programação:** O sBotics roda na mesma "thread" que o programa do usuário pelo Unity. Antigamente utilizávamos programação em múltiplas threads mas era extremamente ineficiente e causava muitos memory leaks. > **Para pessoas mais estudadas de programação:** O sBotics roda na mesma "thread" que o programa do usuário pelo Unity. Antigamente utilizávamos programação em múltiplas threads mas era extremamente ineficiente e causava muitos memory leaks.
  
-Como isso afeta a programação? ([[csharp|C#]])+Como isso afeta a programação? (em [[csharp|C#]])
   * "Enquanto verdadeiro": Enquanto verdadeiro indiscriminado trava o sBotics, pois ele fica esperando o robô terminar algo que nunca termina para prosseguir executando o simulador.   * "Enquanto verdadeiro": Enquanto verdadeiro indiscriminado trava o sBotics, pois ele fica esperando o robô terminar algo que nunca termina para prosseguir executando o simulador.
   * Esperar é importante: Na robótica real, os comandos levam tempo para serem executados. Agora, no sBotics, você **precisa** usar um comando chamado "esperar" para simular esse tempo de espera. Isso permite que o sBotics continue funcionando enquanto o robô executa suas ações.   * Esperar é importante: Na robótica real, os comandos levam tempo para serem executados. Agora, no sBotics, você **precisa** usar um comando chamado "esperar" para simular esse tempo de espera. Isso permite que o sBotics continue funcionando enquanto o robô executa suas ações.
Linha 50: Linha 52:
  
 ==== Esgotamento de Memória ==== ==== Esgotamento de Memória ====
-Quando o simulador fecha aleatóriamente sem nenhuma explicação, **muito provavelmente** é por que o simulador consumiu mais memória do que é permitido e a aplicação foi encerrada a força. Neste casoverifique +Quando o simulador fecha aleatóriamente sem nenhuma explicação, **muito provavelmente** é por que o simulador consumiu mais memória do que é permitido e a aplicação foi encerrada a força. Verifique o uso indiscriminado de variáveis e considere reutilizar variáveis que não estão sendo utilizadas mais. Além dissoo simulador vai ficando pesado conforme o usuário vai utilizando então é sempre recomendável reiniciar o programa pelo menos 1x por hora.
  
 ==== Busy Waiting ==== ==== Busy Waiting ====
-Caso o programa "pare de responder", e fique com a infame frase "sBotics não está respondendo",+{{ naorespondendo.png?300}} 
 +Caso o programa "pare de responder", e fique com a infame frase "sBotics não está respondendo", é muito provavelmente pois alguma estrutura de repetição foi utilizada ou de forma indevida (no C# sem nenhum esperar) ou simulador não foi capaz de concluir os comandos da estrutura de repetição no tempo padrão do loop do simulador (pois seu programa está muito pesado). Neste caso, considere colocar um ''%esperar%'' de 100ms nas suas estruturas de repetição para dar mais tempo para o programa "respirar".
  
-==== Busy Waiting ==== +{{ crashhandler.png?300}} 
-Caso o programa "pare de responder"+==== Crash Handler ==== 
 +Caso você veja uma janela como a do lado com este símbolo ou o símbolo do sBotics, é porque o simulador estava prestes a ter um crash / fechar (por um dos motivos já citados) e o "gerenciador de crashesfoi ativado. Porém muito provavelmente indica apenas um esgotamento de memória ou programa muito pesado. 
  
 ==== Como Resolvo? ==== ==== Como Resolvo? ====
 Para resolver problemas com seu código, separe seu código sempre em tarefas, funções e blocos que você pode comentar ou retirar para testar casos isoladamente. Assim você poderá ter uma melhor noção do que está acontecendo e aonde. Na grande maioria dos casos, problemas que resultam em crashes vêm de programação ineficiente, que está com muitos loops e cálculos desnecessários. Verifique as suas estruturas de repetição (enquanto, para, repetir, etc) e se certifique que as funções sendo realizadas estão eficientes, e caso uma funcionalidade seja muito pesada considere sempre colocar um ou mais "''%%esperar%%''" dentro daquela repetição. Para resolver problemas com seu código, separe seu código sempre em tarefas, funções e blocos que você pode comentar ou retirar para testar casos isoladamente. Assim você poderá ter uma melhor noção do que está acontecendo e aonde. Na grande maioria dos casos, problemas que resultam em crashes vêm de programação ineficiente, que está com muitos loops e cálculos desnecessários. Verifique as suas estruturas de repetição (enquanto, para, repetir, etc) e se certifique que as funções sendo realizadas estão eficientes, e caso uma funcionalidade seja muito pesada considere sempre colocar um ou mais "''%%esperar%%''" dentro daquela repetição.
programacao.1743559638.txt.gz · Última modificação: 2025/04/15 16:34 (edição externa)