Italo Lelis > Arduino 101

Aula 2 - Conceitos de C++

Como havia sido dito no tópico anterior, a linguagem de programação utilizada pela Arduino IDE compartilha várias funções em comum com a linguagem C++. Neste tópico, serão apresentadas algumas funções que o Arduino possui em comum com o C++.

Caso você já tenha alguma familiaridade com a linguagem C++, você pode pular para o próximo tópico.

Declarar Comentários

Você deve ter percebido que nos códigos de exemplo algumas explicações do funcionamento da função eram colocados após o operador //. O operador // é utilizado para declarar comentários em uma única linha (isto é, todo o texto que estiver posicionado após o operador não será interpretado pelo compilador, inclusive funções e operadores).

  digitalWrite(13, HIGH);   // Este trecho do código não será executado
  delay(1000);
  // digitalWrite(13, HIGH); // Esta linha também não será executada

Caso você deseje criar um comentário de várias linhas, você pode utilizar os operadores /* e */ indicando, respectivamente, o início e o fim do comentário.

  digitalWrite(13, HIGH);
  
  /* Este trecho
  de texto não
  será executado */
  
  delay(1000);

Operadores Lógicos

Na linguagem de programação do Arduino IDE, é possível fazer comparação entre variáveis, comparando a magnitude de duas variáveis, analisando se duas variáveis possuem o mesmo valor, etc. Para isso, você deverá utilizar um dos operadoradores lógicos abaixo.

O primeiro tipo de operadores a serem apresentados são os comparadores de igualdade e magnitude. Ao utilizar um desses operadores lógicos, será retornado TRUE caso a comparação seja verdadeira ou FALSE caso a comparação seja falsa.

- COMPARADORES DE IGUALDADE E MAGNITUDE -

a == b    Igualdade
          10 == 10   TRUE
          10 == 20   FALSE

a != b    Diferença
          10 != 10   FALSE
          10 != 20   TRUE

a > b     Maior que
          10 > 10    FALSE
          20 > 30    FALSE
          30 > 20    TRUE

a => b    Maior ou igual a
          10 >= 10   TRUE
          20 >= 30   FALSE
          30 >= 20   TRUE

a < b     Menor que
          10 < 10    FALSE
          20 < 30    TRUE
          30 < 20    FALSE

a <= b    Menor ou igual a
          10 <= 10   TRUE
          20 <= 30   TRUE
          30 <= 20   FALSE

Além desses, temos os operadores do tipo comparação booleana. Esses operadores checam a validade das expressões. Por exemplo, o operador && (AND) analisa se ambas as operações retornam True e o operador || (OR) analisa se ao menos uma operação retorna True. Se a condição se satisfazer, o operador irá retornar True. Se a condição não for satisfeita, o operador retornará False.

- COMPARADORES LÓGICOS -
a && b    AND (E)
          False && False   FALSE
          False && True    FALSE
          True  && False   FALSE
          True  && True    TRUE

a || b    OR  (OU)
          False && False   FALSE
          False && True    TRUE
          True  && False   TRUE
          True  && True    TRUE

Caso você queira fazer mais de uma comparação, pode utilizar parênteses. As comparações serão feitas primeiramente nos parênteses mais internos.

===== Passo-a-Passo =====
(50 < 40) || ((10 < 20) && (15 >= 12))
(50 < 40) || ((TRUE) && (TRUE))
  (FALSE) || (TRUE)
         TRUE

if, else if e else

if ()

Ao criar um código, as vezes você quer que um procedimento seja executado somente se uma condição qualquer seja satisfeita. Para fazer isso, pode ser utilizado o comando if. O comando if é um comando que irá realizar o conteúdo dentro das chaves {} somente se a condição que estiver especificada for satisfeita.

if (CONDIÇÃO)
{
  //Código a ser executado
}

Para especificar condições para o if, pode-se utilizar os operadores lógicos apresentados no tópico anterior. Por exemplo:

if (20 > 10)
{
  digitalWrite(13, HIGH);
}

// O LED da porta 13 será ligado caso a condição "20 > 10" seja satisfeita 

Pode-se utilizar mais de um if no código, da forma que for conveniente. Se necessário, pode-se utilizar um comando if dentro de outro.

else ()

Em algumas situações, deseja-se que um comando seja realizado caso a condição do if não se concretize. Para que não precise criar outro comando if com a condição inversa, utiliza-se comumente o comando else. O comando else irá executar o conteúdo dentro das chaves {} se o if superior mais próximo não for executado.

if (20 < 10)
{
  digitalWrite(13, LOW);
}

else
{
  digitalWrite(13, HIGH);
}

/* Como a condição do if não foi realizada, os
   comandos dentro do else serão executados */

Todo else necessita de um if que venha antes dele. Além disso, não pode haver nenhum comando entre o if e o else. Se isso acontecer, ocorrerá erro de compilação do código.

if (20 < 10)
{
  digitalWrite(13, LOW);
}

digitalWrite(13, LOW);

else
{
  digitalWrite(13, HIGH);
}

/* Já que existe um comando entre o if e o else,
   o else não possui um if correspondente.
   Por isso, o código não irá compilar. */

else if ()

Em algumas outras situações, você deseja que o if só seja executado se um if anterior não for verdadeiro. Para isso, pode-se utilizar o comando else if. O comando else if executa o código dentro das chaves {} se o if anterior não for executado e a condição apresentada for verdadeira.

if (20 < 10)
{
  digitalWrite(13, LOW);
}

else if (20 > 10)
{
  digitalWrite(13, HIGH);
}

else
{
  digitalWrite(13, LOW);
}

/* Já que o primeiro if não foi executado,
   será analisado se a condição do else if
   é satisfeita. Já que a condição é satisfeita,
   os comandos dentro do else if são executados
   e o else é ignorado. */

Pode-se utilizar quantos comandos else if forem necessários, desde que se obedeça a ordem: if, else if, ..., else if, else. A utilização do else quando o else if for utilizado é opcional.

for ()

Se for necessário executar algum comando um número i de vezes, deve-se utilizar o comando for. O comando for necessita dos seguintes parâmetros:

for (int i = 0; i < MAXIMO; i++)
{
  //Comandos a serem executados
}

Nesse caso, substitui-se MAXIMO pela quantidade de vezes que deseja que o código dentro das chaves {} seja repetido.

Atividade: Imprimir de 1 a 100

  • for
  • while
  • functions
  • declarar variáveis

  • Declarar bibliotecas (outro tópico)