Manual

do

Maker

.

com

Eletrônica digital com Arduino - Introdução a linguagem C - parte 4

Eletrônica digital com Arduino - Introdução a linguagem C - parte 4

Agora iniciaremos as condicionais. Condicionais são palavras reservadas que usamos na linguagem para que o programa reaja conforme uma condição. Na vida real, é como dizer:

  • tenho 1 real
  • SE possível, traga 3 pães da padaria
  • SENÃO, traga 2.

As condições descritas são SE e SENÃO. Suponhamos que no programa haja uma variável chamada temperatura que guarda o valor de temperatura medido e queremos que SE a temperatura for maior que 19 graus, exiba uma mensagem "temperatura elevada", SENÃO exibe a mensagem "tudo sobre controle". Seria algo como:

if (temperatura > 19){
printf("temperatura elevada");
}
else{
printf("tudo sobre controle");
}

Simples assim. Repare que if corresponde a condição SE e else corresponde a condição SENÃO. Repare que toda a instrução para uma dada condição fica entre chaves:

SE (condição pretendida){
faça isso;
e isso;
e isso;
}
SENÃO {
faça isso;
mais isso;
}

Os laços são blocos de repetição de código, ou seja, enquanto uma condição não for atendida, ele repete suas instruções conforme determinado. Existem 3 formas de fazer a repetição; com o laço while, com o laço for ou com uma função recursiva. Como só falaremos de função quando estivermos com a mão-na-massa com Arduino, descreverei apenas os loops for e while.

A palavra while significa 'enquanto' em português. É como dizer:

ENQUANTO (condição a ser atendida){
faça isso;
e isso;
}

Suponhamos uma variável x com valor 0 que tenha que chegar ao valor 10, de um em um:

int x = 0;
while (x < 11){
// pega o valor de x e soma mais um a ele
x = x+1;
}
printf("chegou aos 10!");

A mensagem "chegou aos 10" só será exibida quando X for igual a 11. O while monitora a variável como se estivesse perguntando:

  • "x é igual a 11?"
  • "não, x é igual a 9"
  • "então acrescente 1 a x"
  • "agora x é igual a 11?"
  • "não, x é igual a 10"
  • "então acrescente 1 a x"
  • "x é igual a 11?"
  • "sim"

Nesse momento acabou a tarefa do while e o programa passa para a próxima instrução do código, que é exibir a mensagem "chegou aos 10".

O exemplo pode parecer um pouco confuso pois incrementamos a variável até 11, mas isso fará bastante sentido mais adiante, quando estivermos mexendo com código real. É bom enxergar desde já essa possibilidade.

Para for, a apresentação é um pouco mais confusa, pois toda a condição de incremento é feita diretamente entre os parênteses. Seguindo um exemplo semelhante:

int x;
for (x =0; x<11; x++){
printf("x ainda nao eh igual a 10n");
}
printf("agora x eh igual a 10!n");

Ou seja, dentro dos parênteses de for está explicitamente dito: "para x = 0; até x menor que 11; some mais um a x"

Quando a condição for atendida, o laço termina e o programa vai para a próxima instrução. No caso, exibe a mensagem "agora x eh igual a 10".

Esses exemplos serão melhor compreendidos na prática.

No próximo post veremos como interagir com o usuário, pegando valores de entrada para o programa. Isso quer dizer que enquanto o programa estiver em execução, o usuário poderá passar valores para o programa utilizar em algum momento. Teremos também um código prático para essa tarefa.

Se você está achando esses exemplos muito básicos, ótimo! Significa que você avançará bem no desenvolvimento. Como citei anteriormente, esse treinamento todo é para iniciar uma pessoa que nunca viu nada de programação nem de Arduino e o objetivo final é que façamos um robô básico controlado pela porta USB do computador. Teremos videos da construção de todos os projetos até concluirmos o robô.

Até o próximo post!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.