Tópicos Abordados na Aula IF/ELSE
Sáb maio 04, 2019 5:52 pm
Salve Pessoal,
Na aula de hoje iniciamos o capítulo 2 após cerimonia de entrega das condecorações e premiação do kit do arduino, que podem ser vistas com mais detalhes nos tópicos anteriores.
No capítulo 2 vamos aprender vários comandos de controle do fluxo do programa, e trabalhar mais com a lógica da programação. Esse conteúdo deveria ser diluído em mais aulas, mas diante da nossa realidade tenho que apresentar tudo de uma vez, e lá foi IF, IF ELSE e IF ELSE IF, abaixo vou tentar simplificar melhor para facilitar o entendimento.
O conteúdo desse tópico está na apostila nos ítens 2.1.1 , 2.1.2 e 2.1.3.
Item 2.1.1 a função IF. Veja os raciocínios abaixo que vai facilitar o entendimento.
2.1.1.1 - Basicamente essa função analisa SE a CONDIÇÃO for VERDADEIRA, executa o BLOCO DE INSTRUÇÕES, se a condição for falsa pula todos os comandos do bloco.
2.1.1.2 - Quando chamar a função IF a condição deverá estar entre parenteses ( ) e o bloco de instruções entre chaves { }
2.1.1.3 - Cada instrução no bloco deverá terminar com ; (ponto e virgula) assim como no controle dos pinos.
2.1.1.4 - Formato da função:
IF (condição) { // Chamada da função e entre parenteses a condição, que na verdade é um teste lógico, se verdadeiro executa o bloco que vem após as chaves
bloco de instruções ; // Instruções que serão processadas se o teste der verdadeiro
} //Chaves encerrando o bloco,
2.1.1.5 - Na condição pode seu usado testes lógicos simples como o estado de um pino, o nível de sinal de um sensor, resultado de uma conta, valor de uma variável. Também pode ser composto por uma condição de varíos testes usando os operadores lógicos &&, || , ^ conforme necessidade. O que deixa o comando muito poderoso para tomadas de decisão.
Na sala usamos o programa abaixo para ler uma tecla e acender um led, acompanhe:
Se pararmos para analisar esse programa, lembrando que a função loop() vai executá-lo infinitamente, ele funciona assim:
10. testa se a tecla foi pressionada:
a) Se não foi, vai direto para o digitalWrite(led,LOW); e reafirma que o led deverá permanecer apagado. Para o observador o led mantém-se apagado
b) Se a tecla foi pressionada a condição é TRUE e vai rodar o comando digitalWrite(led, HIGH); e led vai acender o led,
c) Quando sair do bloco roda o comando digitalWrite(led,LOW); que vai apagar o led novamente, para o observador o led fica aceso com meio brilho, pois na real está piscando muito rápido.
Muitas situações podem ser resolvidas usando somente o IF, mas pode haver uma situação como essa em que se deseja manter o led aceso sem intermitências, então para isso serve o super IF/ELSE, veja como fica o mesmo programa escrito de outra forma:
2.1.2 - A função IF / ELSE , abaixo os comentários:
2.1.2.1 - O programa funciona de forma similar ao IF, testa se a condição entre parenteses é TRUE, se for executa as instruções que estiverem no bloco entre as chaves { }
2.1.2.2 - Caso a condição seja FALSE, vai executar o bloco que estiver após a instrução ELSE, dentro das chaves que a sucedem. Veja o código abaixo:
Vamos analisar o programa acima,
1o. Testa se a tecla foi pressionada, a condição testada é if(!digitalRead(tecla))
a) se der TRUE vai executar digitalWrite(led, HIGH); e o led vai acender,
b) se der FALSE vai executar os comando após o ELSE , ou seja, nesse caso, digitalWrite(led,LOW); e o led vai apagar
c) coma aplicação da função IF/ELSE as condições possíveis são TRUE e led fica aceso ou FALSE e o led fica apagado.
Na aula de hoje iniciamos o capítulo 2 após cerimonia de entrega das condecorações e premiação do kit do arduino, que podem ser vistas com mais detalhes nos tópicos anteriores.
No capítulo 2 vamos aprender vários comandos de controle do fluxo do programa, e trabalhar mais com a lógica da programação. Esse conteúdo deveria ser diluído em mais aulas, mas diante da nossa realidade tenho que apresentar tudo de uma vez, e lá foi IF, IF ELSE e IF ELSE IF, abaixo vou tentar simplificar melhor para facilitar o entendimento.
O conteúdo desse tópico está na apostila nos ítens 2.1.1 , 2.1.2 e 2.1.3.
Item 2.1.1 a função IF. Veja os raciocínios abaixo que vai facilitar o entendimento.
2.1.1.1 - Basicamente essa função analisa SE a CONDIÇÃO for VERDADEIRA, executa o BLOCO DE INSTRUÇÕES, se a condição for falsa pula todos os comandos do bloco.
2.1.1.2 - Quando chamar a função IF a condição deverá estar entre parenteses ( ) e o bloco de instruções entre chaves { }
2.1.1.3 - Cada instrução no bloco deverá terminar com ; (ponto e virgula) assim como no controle dos pinos.
2.1.1.4 - Formato da função:
IF (condição) { // Chamada da função e entre parenteses a condição, que na verdade é um teste lógico, se verdadeiro executa o bloco que vem após as chaves
bloco de instruções ; // Instruções que serão processadas se o teste der verdadeiro
} //Chaves encerrando o bloco,
2.1.1.5 - Na condição pode seu usado testes lógicos simples como o estado de um pino, o nível de sinal de um sensor, resultado de uma conta, valor de uma variável. Também pode ser composto por uma condição de varíos testes usando os operadores lógicos &&, || , ^ conforme necessidade. O que deixa o comando muito poderoso para tomadas de decisão.
Na sala usamos o programa abaixo para ler uma tecla e acender um led, acompanhe:
- Código:
#define led 10 //led ligado no pino 10
#define tecla 9 //tecla ligada no pino 9
void setup(){
pinMode(led, OUTPUT); //Configura o pino do led como saída
pinMode(tecla, INPUT_PULLUP); //Configura o pino da tecla como entrada pullup
}
void loop(){ //Programa principal
if(!digitalRead(tecla)){ //Testa se a tecla foi pressionada, sem apertar TRUE, com o operador ! (NOT) fica em FALSE
digitalWrite(led, HIGH); //Se a tecla for pressionada dá TRUE esse comando é executado, e acendendo o led.
} // Fim do bloco, no caso de um comando
digitalWrite(led,LOW); // Se a condição deixar de ser verdadeira, vai apagar o led
}
Se pararmos para analisar esse programa, lembrando que a função loop() vai executá-lo infinitamente, ele funciona assim:
10. testa se a tecla foi pressionada:
a) Se não foi, vai direto para o digitalWrite(led,LOW); e reafirma que o led deverá permanecer apagado. Para o observador o led mantém-se apagado
b) Se a tecla foi pressionada a condição é TRUE e vai rodar o comando digitalWrite(led, HIGH); e led vai acender o led,
c) Quando sair do bloco roda o comando digitalWrite(led,LOW); que vai apagar o led novamente, para o observador o led fica aceso com meio brilho, pois na real está piscando muito rápido.
Muitas situações podem ser resolvidas usando somente o IF, mas pode haver uma situação como essa em que se deseja manter o led aceso sem intermitências, então para isso serve o super IF/ELSE, veja como fica o mesmo programa escrito de outra forma:
2.1.2 - A função IF / ELSE , abaixo os comentários:
2.1.2.1 - O programa funciona de forma similar ao IF, testa se a condição entre parenteses é TRUE, se for executa as instruções que estiverem no bloco entre as chaves { }
2.1.2.2 - Caso a condição seja FALSE, vai executar o bloco que estiver após a instrução ELSE, dentro das chaves que a sucedem. Veja o código abaixo:
- Código:
#define led 10 //led ligado no pino 10
#define tecla 9 //tecla ligada no pino 9
void setup(){
pinMode(led, OUTPUT); //Configura o pino do led como saída
pinMode(tecla, INPUT_PULLUP); //Configura o pino da tecla como entrada pullup
}
void loop(){ //Programa principal
if(!digitalRead(tecla)){ //Testa se a tecla foi pressionada, sem pressionar é TRUE, com o operador ! (NOT) fica em FALSE
digitalWrite(led, HIGH); //Se a tecla for pressionada fica TRUE o comando é executado, acendendo o led.
} else { // Fim do bloco if, e inicia o else quando a condição inicial nao e atendida
digitalWrite(led,LOW); // Caso a tecla não está pressionada executa esse comado apagando o led
} // Fim do bloco else
} // Fim da função loop()
Vamos analisar o programa acima,
1o. Testa se a tecla foi pressionada, a condição testada é if(!digitalRead(tecla))
a) se der TRUE vai executar digitalWrite(led, HIGH); e o led vai acender,
b) se der FALSE vai executar os comando após o ELSE , ou seja, nesse caso, digitalWrite(led,LOW); e o led vai apagar
c) coma aplicação da função IF/ELSE as condições possíveis são TRUE e led fica aceso ou FALSE e o led fica apagado.
Permissões neste sub-fórum
Não podes responder a tópicos
|
|