From 6d7f9ddeb3a057e923e3bc7a240cf07c45d0421f Mon Sep 17 00:00:00 2001 From: Alesson Renato Lopes Valenca Date: Tue, 12 Feb 2019 02:47:49 -0300 Subject: [PATCH] paraCada (foreach) --- TABELA_DE_INSTRUCOES.md | 4 +++ examples/paraCada/paraCada.ino | 59 ++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 examples/paraCada/paraCada.ino diff --git a/TABELA_DE_INSTRUCOES.md b/TABELA_DE_INSTRUCOES.md index b108d53..7175d84 100644 --- a/TABELA_DE_INSTRUCOES.md +++ b/TABELA_DE_INSTRUCOES.md @@ -19,6 +19,10 @@ Estruturas de controle são estruturas do tipo condicional, que irão analisar u | se | Analisa se a condição dentro do parâmetro é verdadeira e executa uma ação. | se(a == b) {
// ação caso "a = b"
} | | senao | Executa uma ação se o parâmetro da condição ``se`` for falso. | se(a == b) {
// ação caso "a = b"
}
senao {
// ação caso "a ≠ b"
} | | para | Executa um bloco de instruções enquanto uma condição for satisfeita. É utilizado um contador para incrementar, ou decrementar, e terminar o loop. | para(x = 0; x < 2; x = x+1) {
/\* executa este bloco enquanto "x" for menor que 2 \*/
} | +| paraCada | Executa uma varredura em um vetor/matriz enquanto não se chegar ao fim do mesmo ou ser forçada uma quebra de laço + | paraCada(celula,vetor){ + /*executa esse bloco ate o fim do vetor ser atingido */ } + | | contarAte | Aplicação da função ``para`` onde se escolhe o número de iterações. | contarAte(5) {
/\* executa este bloco de instruções 5 vezes \*/
} | | enquanto | Esta função executa continuamente enquanto o teste do parâmetro for verdadeiro. | enquanto(x == 2) {
/\* ações a serem executadas enquanto o parâmetro for verdadeiro, ou seja, enquanto "x = 2" \*/
} | | comparar....caso | Compara o parâmetro da função com os casos definidos. No exemplo, "x" é comparado com os valores 1 e 2. É utilizado a instrução ``sair`` para que não se realize os próximos testes se algum já for o verdadeiro. | comparar(x) {

caso 1:
/\* ação caso "x = 1" \*/
sair;

caso 2:
/\* ação caso "x = 2" \*/
sair;

padrao:
/\* executa se não for nenhum dos casos \*/
sair;
} | diff --git a/examples/paraCada/paraCada.ino b/examples/paraCada/paraCada.ino new file mode 100644 index 0000000..245e597 --- /dev/null +++ b/examples/paraCada/paraCada.ino @@ -0,0 +1,59 @@ +/* + paraCada(A,B) + Um melhoramento da função para(for) que auxilia o programador a percorrer um vetor ou matriz de dados até os seu fim. + + Uso: + + paraCada(A,B) + { + imprima(A); + } + + Variáveis: + A (Variável a ser preenchida com os valores do vetor/matriz que está sendo lido. É + necessário que tenha o mesmo tipo do vetor). + B (Vetor/matriz a ser percorrido durante o laço). + + O laço irá executar até o fim do vetor/matriz ser atingido ou uma condição de quebra seja + forçada. + + Este exemplo de código está em domínio público. + + criado em 28 de abril de 2018 + modificado em 12 de fevereiro de 2019 + Desenvolvido por Alesson Renato. + Contribuição a biblioteca Brasilino. + + Este exemplo é baseado em código aberto referente a linguagem C++. +*/ + +// Inclue a biblioteca Brasilino +#include + +// A funcao configurar executa uma vez quando a placa é ligada ou quando o botão de reset é pressionado +funcao configurar() { + // Inicializa a comunicação serial com a placa + iniciarSerial(); +} + +// A funcao repetir executa para sempre +funcao repetir() { + // Cria a variável celula que armazenará o conteudo das celulas do vetor, cria posição que demonstrará a posição ca leula atual e por fim cria um vetor com valores inteiros + inteiro celula posicao=1; vetor[10]{10,9,8,7,6,5,4,3,2,1}; + // Chama a função paraCada que guardará em celula um valor de posição do vetor que cada iteração + paraCada(celula,vetor){ + // Escreve Posicao na serial + escreverSerial("Posicao:"); + // Escreve a posição lida atual + escreverSerial(posicao); + // Escreve um espaço entre os valores e a palavra Valor: + escreverSerial(" Valor:"); + // Escreve o valor contido na celula atual e pula uma linha + escreverSerialn(celula); + esperar(0.5); // espera meio segundo + posição++; // atualiza posição +} +/* + OBS: O exemplo foi criado usando o tipo de dado inteiro, contudo a função é compatível com + qualquer tipo de dado primitivo ou composto compatível com a linguagem C++ +*/