Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comando paraCada() #74

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Conversation

SteffanoP
Copy link
Contributor

@SteffanoP SteffanoP commented Apr 12, 2021

Originalmente postado por @alessonrenato em #26

Como requisitado no issue #21 essa é uma tentativa de implementar o paraCada (foreach) na biblioteca. Testes de compilação foram positivos no UNO, MEGA e NANO.

PS: Necessita de testes práticos.
PS2: Pode causar instabilidades se não usada com cuidado pelo consumo de recursos de memória. Talvez explicar tal fato na documentação pode ser relevante.


A Pull Request foi atualizada com a versão mais recente do repo (1278b9c), por meio dessa nova versão será possível testar com as Actions Lint e Compile do exemplo para o novo comando e consequentemente a implantação do comando a biblioteca de forma experimental, visto que, há planos para comandos avançados para a Brasilino.h.

EDIT (19/04/21): Foi necessário criar uma nova instrução para o pré-processador, visto que a instrução de @alessonrenato não estava funcionando nas versões mais recentes do repositório, tal fato pode ser observado no commit (cf3c756), que por meio do teste Arduino Compile #19 deu bronca. Então construí um novo modelo

Descrição das mudanças

Implantação do comando paraCada()

Foi utilizado uma das soluções sugeridas por @ErickSimoes em #21, no qual cria uma instrução for no pré processador baseado nesta solução.

Diferentemente da solução de nosso amigo do Stackoverflow, foi implantado a instrução for completando o comando each resultando em foreach, porém traduzido em paraCada(). Além disso, suprimi o valor do tamanho, para que a instrução do pré-processador obtenha o tamanho do array que será trabalhado pelo comando paraCada().

Exemplificação do comando

Já existia um arquivo de exemplo da PR #26, porém adaptei para algo mais atual da biblioteca Brasilino.h e para as novas implementações.

Documentação

Com a #26 foi implementado a documentação na TABELA_DE_INSTRUCOES.md, porém, agora, está documentado em keywords.txt.

Benefícios

  • Implanta um novo comando para a biblioteca Brasilino.h que é exclusivo para a mesma, ou seja, não está presente na Arduino.h;
  • Funciona para quaisquer Vetores (Arrays) unidimensionais;
  • As variáveis criadas na instrução (Macro) são invisíveis ao usuário;

Possíveis Desvantagens

  • Não funciona para Vetores (Arrays) multidimensionais;
  • Se utiliza do comando typeof() que é uma extensão do GNU, logo, poderá haver compiladores que não funcionem, pois a extensão GNU não é padrão da linguagem C.

Problemas Relacionados

Ideia apresentada em #21.

É uma variante da PR #26, autorizada pelo autor para alterações, implementações e revisão. Logo se realizada Merge, a PR #26 deve ser fechada/arquivada.

Resolves #21.

@SteffanoP SteffanoP mentioned this pull request Apr 12, 2021
*Compile especial, focado para placas com interface serial nativa
@renlopes
Copy link
Contributor

Pode iniciar a revisão

@SteffanoP SteffanoP changed the title Comando Experimental paraCada() Comando paraCada() Apr 19, 2021
@SteffanoP
Copy link
Contributor Author

Atualizei a implementação para funcionar com compiladores de placas Arduino. PR pronta para Review!

@SteffanoP SteffanoP marked this pull request as ready for review April 19, 2021 04:56
@SteffanoP
Copy link
Contributor Author

SteffanoP commented Apr 27, 2021

@OtacilioN @ErickSimoes @ThiagoAugustoSM vocês podem revisar a PR?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implementar um equivalente ao foreach
2 participants