Mudanças entre as edições de "MCO018703 2018 2 AULA06"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com '=Objetivo= *Aprender sobre o comando de repetição ''while'' controlado por condição; *Saber usar o comando ''while'' e ''do while''. =Introdução= Nesta sessão vamos est...')
 
 
(48 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=Objetivo=
+
=Lista de Exercício=
  
*Aprender sobre o comando de repetição ''while'' controlado por condição;
+
[1] Quantos pinos digitais tem o Arduino UNO/ZEDUINO?
*Saber usar o comando ''while'' e ''do while''.
 
  
=Introdução=
+
[2] Quando nos referimos aos níveis lógicos digitais quanto que vale HIGH e LOW no Arduino UNO em Volts?
  
Nesta sessão vamos estudar sobre o comando ''while'' e ''do while''. Nesta estrutura de repetição, o bloco de instruções é executado no mínimo uma vez, já que a condição que controla o laço pode ser testada no início ou no final do comando. A diferença entre o comando ''while'' e o ''do while'' é justamente o local onde a condição que controla o laço é testada. No comando ''while'' a condição é testada antes do bloco de instruções, e caso a condição seja falsa a repetição não será executada. No ''do while'' o bloco de comandos é executado pelo menos uma vez de forma obrigatória, independente do resultado da expressão lógica. [1]
+
[3] O que é TRUE e FALSE?
  
==O comando ''while()'': teste da repetição no começo ==
+
[4] O que é INPUT e OUTPUT?
  
 +
[5] Quais o tipos de variáveis utilizados pela linguagem C do Arduino?
  
;O comando '''while''' tem a seguinte forma geral
+
[6] Se x=10 e y=3 qual o valor x para as expressões abaixo depois da execução:
  
while (condição) declaração;
+
:a) x++;
 +
:b) x--;
 +
:c) x+=y;
 +
:d) x-=y;
 +
:e) x*=y;
 +
:f) x/=y;
  
ou
+
[7] Agora, se x=1 e y=0 diga se é FALSE (falso) ou TRUE (verdadeiro) para as expressões abaixo:
  
while (condição)
+
:a) (x == y)
  {
+
:b) (x != y)
  declaração1;
+
:c) (x < y)
  declaração2;
+
:d) (x  > y)
}
+
:e) (x <= y)
 +
:f) (x >= y)
  
 +
[8] Verifique as expressões abaixo e veja se é FALSE (falso) ou TRUE (verdadeiro):
  
Podemos ver que a estrutura ''while'' testa uma condição. Se esta for verdadeira<br>
+
:a) (FALSE && FALSE)
a declaração é executada e faz-se o teste novamente, e assim por diante.<br>
+
:b) (FALSE && TRUE)
 +
:c) (TRUE && FALSE)
 +
:d) (TRUE && TRUE)
 +
:e) (FALSE || FALSE)
 +
:f) (FALSE || TRUE)
 +
:g) (TRUE || FALSE)
 +
:h) (TRUE || TRUE)
 +
:i) !(FALSE)
 +
:j) !(TRUE)
 +
:k) !(TRUE && FALSE)
  
O comando ''while'' permite implementar ''loops'' com controle no início:
+
[9] Se os comandos e funções abaixo fosse utilizados para piscar um LED, como você completaria o esqueleto de um programa em Arduino?
  
<syntaxhighlight lang=c>
+
;Comandos:
#include <stdio.h>
 
main()
 
{
 
  int contador;
 
 
 
  contador=0;
 
  while (contador<5) { 
 
    printf("valor do contador =  %d\n", contador);
 
    contador=contador+1;
 
  }
 
}
 
</syntaxhighlight>
 
  
 +
<pre>
 +
    delay(1000);
 +
    delay(1000);
 +
    digitalWrite(2, LOW);
 +
    digitalWrite(2, HIGH);
 +
    pinMode(2, OUTPUT);
 +
</pre>
  
Variação do exemplo anterior:
+
;Código Fonte:
  
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
#include <stdio.h>
+
void setup() {
main()  
+
   // put your setup code here, to run once:
{
+
 
   int contador;
 
 
  contador=0;
 
  while (contador<5) { 
 
printf("valor da expressão =  contador < 5 é %d\n", contador<5); 
 
        printf("valor do contador =  %d\n", contador);
 
        contador=contador+1;
 
  }
 
  printf("NO FINAL a expressão  contador < 5 é %d\n", contador<5);
 
 
}
 
}
</syntaxhighlight>
 
  
 +
void loop() {
 +
  // put your main code here, to run repeatedly:
  
Vamos ver a correspondência do comando ''while'' com um fluxograma:
+
}
 +
</syntaxhighlight>
  
{| border="1" cellpadding="5" cellspacing="0"
+
[10] Monte o circuito abaixo tomando cuidado com as ligações, não esquecendo de verificar qual o pino escolhido como saída.
! style="color:white;background: #1E90FF;" | Fluxograma
 
! style="color:white;background: #1E90FF;" | C
 
! style="color:white;background: #1E90FF;" | Comentário
 
|-
 
| |[[imagem:fluxo5.jpg|200px]]
 
||<syntaxhighlight lang=c>while(contador<5) {
 
  printf("Entre com x\n");
 
  scanf("%f",&x);
 
  soma=soma+x;
 
  contador = contador + 1;
 
}</syntaxhighlight>|| O comando ''while()'' aplicado sobre um bloco de instruções.<br>Note que se for uma instrução simples,<br>as chaves podem ser omitidas.
 
|}
 
  
'''NOTE''' que no exemplo anterior o contador inicialmente DEVE conter um valor válido.
+
[[imagem:Fig003_MCO18703.jpg|center]]
  
==Comando ''do while'': controle do ''loop'' no final==
+
[11] Altere o código fonte para acrescentar mais um LED ao circuito. Faça uma animação acendendo e apagando os LEDs em tempos diferentes.
  
;O comando ''do while'' tem a seguinte forma geral
+
[12] Agora, se os comando e funções abaixo fossem utilizados para fazer uma leitura de uma porta digital pelo Monitor Serial do Arduino, como ficaria o esqueleto do programa?
  
do {
+
;Comandos
    declaração1;
 
    declaração2;
 
} while (condição);
 
  
Nesta variação o comando ''do while()'' permite a repetição de uma ou mais instruções, com controle do ''loop'' no final.<br>
+
<pre>
Isto permite que o bloco seja executado pelo menos uma vez.
+
    Serial.println(botao);
 +
    int botao = digitalRead(4);
 +
    pinMode(4,INPUT);
 +
    Serial.begin(9600);
 +
</pre>
  
 +
;Código Fonte:
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
#include <stdio.h>
+
void setup() {
main()  
+
   // put your setup code here, to run once:
{
 
   int contador;
 
 
 
  contador=0;
 
  do { 
 
    printf("valor do contador =  %d\n", contador);
 
    contador=contador+1;
 
  } while (contador<5);
 
}
 
</syntaxhighlight>
 
  
 
+
}
{| border="1" cellpadding="5" cellspacing="0"
 
! style="color:white;background: #1E90FF;" | Fluxograma
 
! style="color:white;background: #1E90FF;" | C
 
! style="color:white;background: #1E90FF;" | Comentário
 
|-
 
| |[[imagem:fluxoDoWhile-Eraldo.jpg|200px]]
 
||<syntaxhighlight lang=c>
 
contador = 0;
 
do {
 
        scanf("%d",&x);
 
        soma=soma+x;
 
        if (soma>150)
 
          y=z+x;
 
        contador++;
 
} while(contador<5);
 
</syntaxhighlight>|| Note que instruções ''while'' e ''if'' são tratadas como instruções normais<br>
 
que podem ser aninhadas normalmente em outros comandos.
 
|}
 
  
=Loop Infinito=
+
void loop() {
 +
  // put your main code here, to run repeatedly:
  
É possível implementar loops infinitos com qualquer uma das instruções acima.
 
 
Exemplo com comando ''while'':
 
 
<syntaxhighlight lang=c>
 
main()
 
{
 
  while(1) {
 
        /* Este bloco se executará infinitamente */
 
  }
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
+
[[imagem:Fig043_MCO018703.jpg|300px|center]]
=Exercícios=
 
 
 
#Elabore um programa que lê um número inteiro e imprime todos os números pares entre 0 e este número.
 
#Elabore um programa que lê um número inteiro e imprime todos os números impares entre 1 e este número.
 
#Elabore um programa que lê um número inteiros relativos a quantos elementos que computar da sequecia fibonacci, em que o segundo elemento é sempre a soma dos dos primeiros, por exemplo: (1+0=1, 1+1=2, 2+1=3, 2+3=5, 3+5=8, =5+8=13, 8+13=21 e assim por diante). Lembre que os dois primeiros elementos considerados são 1).
 
 
 
 
 
=Referências=
 
 
 
[1] http://linguagemc.com.br/comando-do-while/
 
 
 
  
  

Edição atual tal como às 20h03min de 11 de setembro de 2018

Lista de Exercício

[1] Quantos pinos digitais tem o Arduino UNO/ZEDUINO?

[2] Quando nos referimos aos níveis lógicos digitais quanto que vale HIGH e LOW no Arduino UNO em Volts?

[3] O que é TRUE e FALSE?

[4] O que é INPUT e OUTPUT?

[5] Quais o tipos de variáveis utilizados pela linguagem C do Arduino?

[6] Se x=10 e y=3 qual o valor x para as expressões abaixo depois da execução:

a) x++;
b) x--;
c) x+=y;
d) x-=y;
e) x*=y;
f) x/=y;

[7] Agora, se x=1 e y=0 diga se é FALSE (falso) ou TRUE (verdadeiro) para as expressões abaixo:

a) (x == y)
b) (x != y)
c) (x < y)
d) (x > y)
e) (x <= y)
f) (x >= y)

[8] Verifique as expressões abaixo e veja se é FALSE (falso) ou TRUE (verdadeiro):

a) (FALSE && FALSE)
b) (FALSE && TRUE)
c) (TRUE && FALSE)
d) (TRUE && TRUE)
e) (FALSE || FALSE)
f) (FALSE || TRUE)
g) (TRUE || FALSE)
h) (TRUE || TRUE)
i) !(FALSE)
j) !(TRUE)
k) !(TRUE && FALSE)

[9] Se os comandos e funções abaixo fosse utilizados para piscar um LED, como você completaria o esqueleto de um programa em Arduino?

Comandos
    delay(1000);
    delay(1000);
    digitalWrite(2, LOW);
    digitalWrite(2, HIGH);
    pinMode(2, OUTPUT);
Código Fonte
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

[10] Monte o circuito abaixo tomando cuidado com as ligações, não esquecendo de verificar qual o pino escolhido como saída.

Fig003 MCO18703.jpg

[11] Altere o código fonte para acrescentar mais um LED ao circuito. Faça uma animação acendendo e apagando os LEDs em tempos diferentes.

[12] Agora, se os comando e funções abaixo fossem utilizados para fazer uma leitura de uma porta digital pelo Monitor Serial do Arduino, como ficaria o esqueleto do programa?

Comandos
    Serial.println(botao);
    int botao = digitalRead(4);
    pinMode(4,INPUT);
    Serial.begin(9600);
Código Fonte
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}
Fig043 MCO018703.jpg



Icone voltar.png Icone menu.png Icone prox.png