As variáveis são estruturas importantes em qualquer programação, independentemente da linguagem que se utilize para implementar os códigos ou programas. Elas podem ser entendidas como uma caixinha, onde os dados são armazenados temporariamente ou em definitivo e que são manipuladas durante a execução do programa. As variáveis devem ser inicializadas antes de usadas, mas, cabe aqui uma ressalva, dependendo da linguagem de programação isso não é necessário, o compilador da linguagem pode fazer isso automaticamente. Neste caso, onde serão implementados os códigos em linguagem C/C++ isso não ocorre, ou seja, deve-se iniciar as variáveis sempre que utilizadas pela primeira vez.
As variáveis são inicializadas quanto ao tipo e quanto ao valor, isso significa que terá de ser definida qual o uso que iremos atribuir a ela. As variáveis podem ser do tipo inteira, decimal, caractere, string, data e somente decimal positiva, assim, dependendo do tipo de dados que serão armazenados, tem-se um tipo definido para ela. Assim, as variáveis podem ser (TABELA 1).
Fonte: Autoria própria
Isso define que tipos de dados a variável poderá armazenar. Agora, as variáveis também podem ser inicializadas quanto aos valores. Exemplos:
Fonte: Autoria própria
Uma outra forma de definir uma variável é com o comando #define.
Fonte: Autoria própria
Desta forma, fica compreendido que sempre que se usar uma variável devemos saber com clareza o que vamos armazenar em seu interior.
A seguir, serão apresentados os comandos básicos e a estrutura de programação do Arduino e, que serão usados nas atividades de 1 a 15, implementadas para que os alunos possam aprender e exercitar a programação e a eletrônica básica.
Basicamente, o Arduino possui a seguinte estrutura de blocos:
Fonte: Autoria Própria
Esta é uma estrutura básica de implementação com a IDE (Arduino). Ela possui dois blocos padrões, uma é a função void setup(), que permite a configuração do ambiente relacionado às entradas e saídas de dados, em relação as portas analógicas e digitais. A outra, é a função void loop(), que executa em loop eterno os comandos e estruturas que estiverem em seu bloco de comando { comando } e, representa início e fim de bloco.
A primeira linha do código é reservada para a identificação do nome do programa e o que ele faz, as // indicam linha de comentário, o que vier após elas não será executado pelo programa. Essas // podem ser usadas durante todo o código, como forma de documentar o que cada comando ou função faz.
Após a primeira linha é possível inserir bibliotecas que permitirão ao compilador gerenciar outras funções. Essas bibliotecas são carregadas no IDE do Arduino para manipulação de Display, Sensores e Atuadores, dependendo da aplicação.
Entre a primeira linha e a função void setup(), serão inseridas as variáveis que serão utilizadas no durante o programa, ou seja, as variáveis são inicializadas quanto ao tipo e, se necessário, quanto ao valor, conforme discutido anteriormente.
Agora, serão tratadas as estruturas de condição, em C/C++ com em outras existem 2 estruturas básicas que são o if simples ou conjugado com if…else e a estrutura switch…case. Cada estrutura tem a sua aplicação própria, mas depende sempre do analista ou programador o seu uso. Muitos programadores preferem a estrutura switch…case para tratar com menus, sendo a estrutura if…else para tratamento com condições especificas, como intervalos, e seleções mais complexas.
Será iniciada pela mais simples: switch…case. A estrutura switch…case controla o fluxo dentro do programa, permitindo que os programadores especifiquem comandos diferentes para serem executados em situações diferentes, de acordo com os objetivos específicos. Essas especificidades serão tratadas individualmente na condição case. Em particular, uma instrução switch compara o valor de uma variável com os valores especificados nas suas instruções case.
Quando uma condição for verdadeira na estrutura case ela é executada, ou seja, uma série de comandos correspondentes àquela condição verdadeira é executada e ao término a estrutura finalizada. Portanto, essa estrutura executa somente uma opção dentre as possíveis existentes.
Estrutura de condição SWITCH…CASE:
Figura 4 – Estrutura de condição/case
Fonte: Autoria Própria
Entendendo os parâmetros existentes na estrutura:
- var: uma variável cujo valor será comparado com várias condições (cases). Permitem dados do tipo: int ou char.
- label1, label2: constantes. Permitem dados do tipo: int, char.
- var: variável a ser comparada com os diferentes casos, case.
- label1, label 2, …: um valor a ser comparado com a variável var.
- default: instrução padrão caso nenhum caso seja verificado.
Exemplo da estrutura switch…case:
Figura 5 – Exemplo de estrutura de decisão switch
Fonte: Autoria Própria
Observação: o comando break interrompe o case e o switch após todos os comandos serem executados para aquela condição verdadeira.
A próxima estrutura de repetição que iremos abordar é o if…else e suas variações. Essa estrutura é muito utilizada em programação por programadores experientes, uma vez que sua estrutura apesar de parecer complicada, é bem simples de implementar.
Será iniciado com a estrutura mais simples que é somente o if. A instrução if verifica uma condição e executa um comando ou uma série de comandos (instrução ou conjunto de instruções), se a condição for ‘verdadeira’. A sua estrutura é bem simples:
Fonte: Autoria Própria
Os colchetes podem ser omitidos após uma instrução if. Se isso ocorrer, a próxima linha (definida pelo ponto e vírgula) se tornará a única instrução condicional. Mas, para evitar problemas de sintaxe, principalmente quando se está aprendendo é interessante colocar os colchetes.
Exemplo:
Figura 7 – Exemplo de estrutura IF
Fonte: Autoria Própria
Operadores de comparação:
Figura 8 – Operadores de Comparação
Fonte: Autoria Própria
Agora, aprimorando a função if, utilizaremos o comando else. O comando else sempre deve vir acompanhado do comando if.
A estrutura if … else permite maior controle sobre o fluxo de código (comandos), do que a instrução if básica, permitindo assim, que vários testes sejam agrupados. Uma cláusula else (caso exista) será executada se, e somente se, a condição na instrução if for falsa, caso contrário ela não será executada, ou seja, se isso faz um conjunto de comandos, caso contrário, faz outra sequência de comandos.
Após, um else pode-se continuar com outras estruturas if…else, de modo que vários testes possam ser executados ao mesmo tempo. Cada teste prosseguirá para o próximo, até que uma condição seja verdadeira. Quando um teste verdadeiro é encontrado, seu bloco de instrução é executado e o programa pula para a linha seguindo toda a construção if … else. Se nenhuma condição for verdadeira, o bloco padrão, caso existe será executado, caso contrário a estrutura if…else será finalizada.
Exemplo 1: Estrutura simples IF…ELSE
Figura 9 – Exemplo de estrutura IF – ELSE
Fonte: Autoria Própria
Exemplo 2: Estrutura composta IF…ELSE
Figura 10 – Exemplo de estrutura IF – ELSE
Fonte: Autoria Própria
Agora, será trabalhado o comando de repetição for, este comando traz em seu escopo uma facilidade de implementação, quando comparado com outras estruturas de repetição.
O comando for é usado para repetir um bloco de comandos existentes entre chaves (delimitação do escopo do for). Um contador de incremento é geralmente usado para incrementar e finalizar o loop (a repetição). A instrução for é útil para qualquer operação repetitiva e é frequentemente usada em combinação com vetores e matrizes, para manipulação com muitos dados.
Estrutura básica do for:
Fonte: Autoria Própria
Exemplo de uma estrutura for:
Figura 12 – Exemplo de estrutura FOR
Fonte: Autoria Própria
Se necessário podem existir vários for, um dentro do outro, desde que, o programador tenho a lógica estruturada.