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

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
Sem resumo de edição
imported>Fargoud
 
(16 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 40: Linha 40:


   for(i = 5; i > 0; i--)         ->  Para i de 5 até 0:
   for(i = 5; i > 0; i--)         ->  Para i de 5 até 0:
j = j * 2;                       -> novo valor de j é j * 2  e decrementa i
    j = j * 2;                         -> novo valor de j é j * 2  e decrementa i


   for(;;)   
   for(;;)   
Linha 59: Linha 59:




8.8 - O COMANDO SWITCH
=A INSTRUÇÃO SWITCH=


A forma geral da declaração switch é:
A forma geral da declaração ''switch'' é:


switch (exp_int)
switch (''exp_int'')
              {    case rot1:  
{    case ''rotulo1'':  
                                    cmd1   
          ''comando1'' 
                    case rot2:  
      case ''rotulo2'':
                                    cmd2
          ''comando2''
                    ...
      case ''rotulo3'':  
                    default:
          ''comando3''
                                    cmdn
      ...
                }
      default:
          ''comandon''
}


* Os comandos cmd1, cmd2, etc e a declaração default são opcionais no bloco.
* 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 rot1, rot2, etc, até encontrar um rótulo que se iguale. Quando encontra, começa a executar de cima para baixo os comandos cmd1, cmd2, etc, até o final do bloco. Se não encontra, executa o comando do bloco default, cmdn.
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.  


Ex:    switch (i)
Quando encontra, começa a executar de cima para baixo os comandos ''comando1'', ''comando2'', etc, até o final do bloco.  
            {  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.
Se não encontra, executa o comando do bloco ''default'', isto é, ''comandon''.
Ex:    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
Exemplo:   
                    1                                          j = j + 5;
                2 ou 3                                      j = j + 3;
          qualquer outro                                j = j + 1;


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




Exercícios
          '''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'''
/****    Programa que imprime números de 1 a 10 utilizando laço do-while                ****/
          1                                         j = j + 5;
/************************************************************************/
          2 ou 3                                    j = j + 3;
#include <stdio.h>
          qualquer outro                            j = j + 1;
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                           *****/
 
/*************************************************************************/
===Exemplos===
#include <stdio.h>
 
void main(void)
/*************************************************************************/
{    int contador;
/**** Programa que imprime números de 1 a 10 utilizando laço do-while ****/
    for( contador = 1; contador <= 10; contador++)
/************************************************************************/
#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);
         printf("%d\n", contador);
}
}




/*************************************************************************/
/*************************************************************************/
/****       Programa que imprime números de 0 a 9, de 2 em 2                                   *****/
/****   Programa que imprime números de 0 a 9, de 2 em 2             *****/
/************************************************************************/
/************************************************************************/
#include <stdio.h>
#include <stdio.h>
void main(void)
void main(void)
{    int i;
{    int i;
       for ( i = 0; i <= 9; i+=2)
       for ( i = 0; i <= 9; i+=2)
           printf("%d\n", i);
           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;
/*****    Programa que calcula o fatorial de um número            *******/
        printf("Entre com um número positivo:  \n");
/************************************************************************/
        scanf("%d", &numero);
#include <stdio.h>
        if(numero== 0 || numero == 1)
#include <conio.h>
            printf("O fatorial de %d é: %.0f\n", numero, fat);
void main(void)
        else
{    int numero, j;
        {    j = numero;  
      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)
               while(j)
               {  fat  *=  j;
               {  fat  *=  j;
Linha 166: Linha 176:
               }
               }
               printf("O fatorial de %d é: %.0f\n", numero, fat);
               printf("O fatorial de %d é: %.0f\n", numero, fat);
        }
        }
      }   
      }   
}       
}       
 


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




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


1) 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.
-------------


2) 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.
===Exercícios===


#Faça o programa que lê dois números inteiros e conta quantos números existem entre os dois.[[ExercInstruções1 |Resposta]]
#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 236: 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 >>