AULA 12 - Microcontroladores - Técnico: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
imported>Fargoud
 
(7 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 117: Linha 117:
--------
--------


===Exercícios===
===Exemplos===


  /*************************************************************************/
  /*************************************************************************/
Linha 238: Linha 238:
===Exercícios===
===Exercícios===


#Um certo Centro Acadêmico está tentando realizar um plebiscito para escolha do logotipo do curso, dentre 3 propostas. Faça o programa que implementa a “urna eletrônica”, a qual vai contabilizar os votos dos estudantes e professores em cada logotipo, os votos brancos e nulos; calcular os percentuais de votos válidos em cada logotipo e imprimir qual foi o logotipo vencedor.
#Faça o programa que lê dois números inteiros e conta quantos números existem entre os dois.[[ExercInstruções1 |Resposta]]
#Faça um programa-calculadora de 4 funções, ou seja, o usuário entra com dois números e estes são somados, subtraídos, multiplicados ou divididos.
#Faça o programa que lê os parâmetros A e B da reta Y = A.X + B e gera 100 pontos, entre x=0 e x=10, de 0.01 em 0.01. [[ExercInstruções2|Resposta]]
 
#Faça um programa-calculadora de 4 funções, ou seja, o usuário entra com dois números e estes são somados, subtraídos, multiplicados ou divididos. [[ExercInstruções3 |Resposta]]
# Escreva o programa que apresenta um menu de produtos ao usuário. O usuário deve escolher qual produto quer comprar, a quantidade do mesmo, ou digitar "0", para sair. A cada item comprado, o programa mostra o valor parcial da compra. Ao final, o programa mostra o valor total comprado. [[solucao1 |Solução]]
#Um certo Centro Acadêmico está tentando realizar um plebiscito para escolha do logotipo do curso, dentre 3 propostas. Faça o programa que implementa a “urna eletrônica”, a qual vai contabilizar os votos dos estudantes e professores em cada logotipo, os votos brancos e nulos; calcular os percentuais de votos válidos em cada logotipo e imprimir qual foi o logotipo vencedor. [[ExercInstruções4 |Resposta]]
#PARA O ARDUINO!!!! Crie o programa Arduino que vai acionar 6 leds individualmente pelas portas digitais 2 a 7. Utilize o monitor serial para que, quando digitado o número de uma destas portas, o estado do led correspondente seja trocado. Além disto, o programa aceita os valores 0, para apagar todos os leds ao mesmo tempo, e 1, para acendê-los. [[ExercInstruções6 |Resposta]]
#PARA O ARDUINO, DE NOVO!!! Crie um ''bargraph'' no Arduino, com 5 leds, em uma escala de 0 a 10. Isto é, dependendo do valor lido no monitor Serial, o número proporcional de leds vai acender. O primeiro led é para valores até 2; o segundo led acende para valores até 4; e assim por diante.[[ExercInstruções7 |Resposta]]
-----------------------
-----------------------
[[  MCO1870321| << Página do curso]]
[[  MCO1870321| << Página do curso]]
Linha 247: Linha 251:
! style="background: #cdc5bf;" | [[AULA 11 - Microcontroladores - Técnico| << Aula 11 - Instruções IF, IF-ELSE e WHILE ]]  
! style="background: #cdc5bf;" | [[AULA 11 - Microcontroladores - Técnico| << Aula 11 - Instruções IF, IF-ELSE e WHILE ]]  
! style="background: #cdc5bf;" | AULA 12 - Microcontroladores  
! style="background: #cdc5bf;" | AULA 12 - Microcontroladores  
! style="background: #cdc5bf;" | [[AULA 13 - Microcontroladores - Técnico| Aula 14 - Funções >> ]]
! style="background: #cdc5bf;" | [[AULA 13 - Microcontroladores - Técnico| Aula 13 - Funções >> ]]
|}
|}

Edição atual tal como às 19h27min de 17 de maio de 2017

A INSTRUÇÃO DO-WHILE

A forma geral da declaração do-while é:

do 
  comando;
while(expressão_de_teste);   
   

A interpretação é: "Faça comando enquanto expressão_de_teste for verdadeira".

O comando do-while faz quase o mesmo que o while, com a diferença que no primeiro, o loop é executado pelo menos uma vez, já que o teste da expressão é feito no final da interação.

Ou seja, se expressão_de_teste for falsa já na primeira iteração, comando é executado uma vez e em seguida a execução continua fora do loop, na próxima linha de comando.

Caso expressão_de_teste seja verdadeira, comando será executado até que esta se torne falsa.

Exercício:

Adapte o programa do número mágico, para uso com estrutura do-while.


A INSTRUÇÃO FOR

A forma geral da declaração for é:

for(inicialização;teste;incremento)
   comando;

Em sua forma mais simples, inicialização é uma instrução de atribuição (p.e.: i = 0) e é sempre executada uma única vez antes do laço ser inicializado.

O teste é uma instrução condicional que controla o laço.

Comando será executado até que teste seja falso.

A expressão de incremento (ou decremento) define a maneira como a variável de controle do laço será alterada a cada iteração.

Ex:

  for( i = 0; i < 5; i++)               ->   Para i de 0 até 4: 
       j++;                             -> incrementa j a cada interação e incrementa i
  for(i = 5; i > 0; i--)	         ->  Para i de 5 até 0:
    j = j * 2;                          -> novo valor de j é j * 2  e decrementa i
  for(;;)  
  { ... }                              ->  Loop eterno
  for(i = 0; i< 5; i++)                ->  É equivalente a   for (i = 0; i< 5; j++, i++);
        j++; 

Exercícios

  1. Faça um programa que imprima os números de 1 a 10, utilizando:
    • comando while,
    • comando do-while,
    • comando for.
  2. Faça um programa que imprima os números de 0 a 9, de 2 em 2, utilizando o comando for.
  3. Faça um programa que imprima o fatorial de um número solicitado ao usuário, utilizando o comando while.


A INSTRUÇÃO SWITCH

A forma geral da declaração switch é:

switch (exp_int)
{    case rotulo1: 
          comando1   
     case rotulo2: 
          comando2
     case rotulo3: 
          comando3
      ...
     default:
          comandon
}
* Os comandos comando1, comando2, etc e a declaração default são opcionais no bloco.

Este comando testa o valor da expressão inteira exp_int, comparando-a com rotulo1, rotulo2, etc, até encontrar um rótulo que se iguale.

Quando encontra, começa a executar de cima para baixo os comandos comando1, comando2, etc, até o final do bloco.

Se não encontra, executa o comando do bloco default, isto é, comandon.

Exemplo:

 switch (i)
 {   case 1:  j = j + 5;
     case 2:  
     case 3:  j = j + 3;   
 }  


         Valor de i                       Comandos executados
          1                                           j = j + 5;   e  j = j + 3;
          2 ou 3                                      j = j + 3;
          qualquer outro                              nenhum.

Utiliza-se a instrução break para que apenas o comando referente a cada rótulo seja executado.

Exemplo:

  switch ( i )
  { case 1:   j = j + 5;
              break;
    case 2:   
    case 3:   j = j + 3;
              break;
    default:  j = j+ 1;    
  }
         Valor de i                     Comandos executados
          1                                         j = j + 5;
          2 ou 3                                    j = j + 3;
          qualquer outro                            j = j + 1;

Exemplos

/*************************************************************************/
/**** Programa que imprime números de 1 a 10 utilizando laço do-while ****/
/************************************************************************/
#include <stdio.h>
void main(void)
{   int contador = 1;
    do
    {  printf("%d\n", contador);
       contador++;
    }
    while (contador <= 10);
}
/*************************************************************************/
/***    Programa que imprime números de 1 a 10 utilizando laço for   *****/
/*************************************************************************/
#include <stdio.h>
void main(void)
{    int contador;
     for( contador = 1; contador <= 10; contador++)
        printf("%d\n", contador);
}


/*************************************************************************/
/****   Programa que imprime números de 0 a 9, de 2 em 2             *****/
/************************************************************************/
#include <stdio.h>
void main(void)
{    int i;
     for ( i = 0; i <= 9; i+=2)
         printf("%d\n", i);
}


/*************************************************************************/
/*****    Programa que calcula o fatorial de um número             *******/
/************************************************************************/
#include <stdio.h>
#include <conio.h>
void main(void)
{     int numero, j;
      char ch;
      double fat=1;
      for(;;)
      { fat=1;
        printf("Entre com um número positivo:  \n");
        scanf("%d", &numero);
        if(numero== 0 || numero == 1)
            printf("O fatorial de %d é: %.0f\n", numero, fat);
        else
        {    j = numero; 
             while(j)
             {   fat  *=  j;
                   j--;
              }
              printf("O fatorial de %d é: %.0f\n", numero, fat);
        }
      }  
}       


/*************************************************************************/
/***     Programa que gera a tabuada de 2 a 9                       ******/
/************************************************************************/
#include <stdio.h>
void main(void)
{   int i, j, k;
    printf("\n");
    for (k = 0; k <= 1; k++)
    {   printf("\n");
         for( i = 1; i < 5; i++)
            printf("TABUADA DO %3d  ", i+4*k+1);
         printf("\n");
         for( i = 1; i <= 9; i++)
         {    for( j = 2 + 4 *k; j <= 5 + 4*k; j++)
                 printf("%3d x %1d = %3d\t", j, i, j*i);
              printf("\r");
          }
    }     
} 


/*******************************************************************/
/****  Programa da feira  de frutas  (uso do switch-case)       ****/
/******************************************************************/
#include <stdio.h>
#include <conio.h>
void main(void)
{  int i, opcao;
     printf("\n");
     for(i = 1; i <= 53; i++)
       printf("*");
     printf("\n*****\t\tPROGRAMA DA FEIRA!!\t\t*****\n");
     for(i = 1; i <= 53; i++)
      printf("*");
     printf("\n\n\t\t Escolha sua opção: \n");
     printf("\n\n\t\t(1) Uva; \n");
     printf("\n\t\t(2) Maça; \n");
     printf("\n\t\t(3) Banana; \n");
     printf("\n\t\t(4) Laranja; \n");
     scanf("%d",&opcao);
     switch(opcao)
     {  case 1:  printf("O cacho de uvas custa R$1.00");
                      break;
        case 2:  printf("A unidade de maças custa R$0.50");
                      break;
        case 3:  printf("O kilo de bananas custa R$0.70");
                      break;
        case 4:  printf("A duzia de laranjas custa R$0.90");
                      break;
        default: printf("Desculpe, mas não temos esta fruta!!");
     }
}

Exercícios

  1. Faça o programa que lê dois números inteiros e conta quantos números existem entre os dois.Resposta
  2. Faça o programa que lê os parâmetros A e B da reta Y = A.X + B e gera 100 pontos, entre x=0 e x=10, de 0.01 em 0.01. Resposta
  3. Faça um programa-calculadora de 4 funções, ou seja, o usuário entra com dois números e estes são somados, subtraídos, multiplicados ou divididos. Resposta
  4. Escreva o programa que apresenta um menu de produtos ao usuário. O usuário deve escolher qual produto quer comprar, a quantidade do mesmo, ou digitar "0", para sair. A cada item comprado, o programa mostra o valor parcial da compra. Ao final, o programa mostra o valor total comprado. Solução
  5. Um certo Centro Acadêmico está tentando realizar um plebiscito para escolha do logotipo do curso, dentre 3 propostas. Faça o programa que implementa a “urna eletrônica”, a qual vai contabilizar os votos dos estudantes e professores em cada logotipo, os votos brancos e nulos; calcular os percentuais de votos válidos em cada logotipo e imprimir qual foi o logotipo vencedor. Resposta
  6. PARA O ARDUINO!!!! Crie o programa Arduino que vai acionar 6 leds individualmente pelas portas digitais 2 a 7. Utilize o monitor serial para que, quando digitado o número de uma destas portas, o estado do led correspondente seja trocado. Além disto, o programa aceita os valores 0, para apagar todos os leds ao mesmo tempo, e 1, para acendê-los. Resposta
  7. PARA O ARDUINO, DE NOVO!!! Crie um bargraph no Arduino, com 5 leds, em uma escala de 0 a 10. Isto é, dependendo do valor lido no monitor Serial, o número proporcional de leds vai acender. O primeiro led é para valores até 2; o segundo led acende para valores até 4; e assim por diante.Resposta

<< Página do curso

<< Aula 11 - Instruções IF, IF-ELSE e WHILE AULA 12 - Microcontroladores Aula 13 - Funções >>