Mudanças entre as edições de "AULA 7 - Programação 1 - Graduação"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 51: Linha 51:
  
 
==Uso do continue para prosseguir no início do ''loop''==
 
==Uso do continue para prosseguir no início do ''loop''==
----
+
 
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
#include <stdio.h>

Edição das 15h49min de 27 de fevereiro de 2015

Objetivos

  • Uso do break e do while.
  • Uso da biblioteca matemática.

Uso de break para sair de loops

Em exercícios anteriores, a finalização de um loop normalmente se dá pela expressão de controle de loop associado a instrução usada.
É possível sair de um loop na "força bruta" usando a instrução break:

#include <stdio.h>
main()
{
  int i,j;

  for (i=0;i<10;i++) {
     if (i==5)
       break;
  }
  printf("valor de i=%d\n", i);
}


Note que o break sempre sai do loop mais próximo a ele.


#include <stdio.h>
main()
{
  int i,j;

  for (i=0;i<3;i++) {
     for (j=0;j<4;j++) {
         if (j==1) { 
             break;
         }
         printf("valor de j = %d\n", j);
     }
     if (i==2)
         break;
     printf("valor de i = %d\n", i);
  }

}

Uso do continue para prosseguir no início do loop

#include <stdio.h>
main()
{
  int i,j;

  for (i=0;i<3;i++) {
     if (i==1) { 
         continue;
     }
     printf("valor de j = %d\n", j);
     for (j=0;j<4;j++) {
         if (j==1) { 
             continue;
         }
         printf("valor de j = %d\n", j);
     }
  }

}

Usando funções da biblioteca matemática


Para usar as funções matemáticas da biblioteca padrão, fazer os seguintes passos:

  • No arquivo-fonte incluir o header math.h da biblioteca matemática:
 
#include <stdio.h>
#include <math.h>

main()
{
 
  float x,y; /* declaração de duas variáveis reais */

  printf ("Entre com o valor de x ");
  scanf("%f",&x);

  y = sqrtf(x);
  printf ("Raiz de x = %lf", y);
}

NOTA: a maior parte de parâmetros e valores de retorno das funções matemáticas são reais de dupla precisão (double).

  • Compilar e linkar o arquivo da forma:
 gcc ex1.c -o ex1 -lm

EXERCÍCIOS

  1. Faça uma versão "politicamente incorreta" do programa de adivinhação da aula passada, Faça um loop infinito com o do while() e use uma instrução goto para sair do loop.
    /* rand example: guess the number */
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main ()
    {
          int iSecret, iGuess;
     
          /* initialize random seed: */
          srand ( time(NULL) );
     
          /* generate secret number: */
          iSecret = rand() % 10 + 1;
    
          do {
              printf ("Guess the number (1 to 10): ");
              scanf ("%d",&iGuess);
              if (iSecret<iGuess) 
                  printf ("The secret number is lower\n");
              else {
                  if (iSecret>iGuess) 
                     printf ("The secret number is higher\n");
              }
              if (iSecret==iGuess) /* se acertou salta para FIM */
                  goto FIM;
          } while(1); 
     
    FIM:  printf ("Congratulations!\n");
          return 0;
    }
    
  2. Ainda sobre o exercício 1, implemente uma versão usando o comando while().
    /* rand example: guess the number */
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main ()
    {
          int iSecret, iGuess;
     
          /* initialize random seed: */
          srand ( time(NULL) );
     
          /* generate secret number: */
          iSecret = rand() % 10 + 1;
    
          /* coloca um valor em iGuess que nunca será inserido pelo usuário */
          iGuess = -1;
    
          while (iSecret!=iGuess) {
              printf ("Guess the number (1 to 10): ");
              scanf ("%d",&iGuess);
              if (iSecret<iGuess) 
                  printf ("The secret number is lower\n");
              else {
                  if (iSecret>iGuess) 
                     printf ("The secret number is higher\n");
              }
          } 
     
          printf ("Congratulations!\n");
          return 0;
    }
    
  3. Ainda sobre o exercício 1, implemente uma versão usando loop infinito e o comando break;
    /* rand example: guess the number */
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main ()
    {
          int iSecret, iGuess;
     
          /* initialize random seed: */
          srand ( time(NULL) );
     
          /* generate secret number: */
          iSecret = rand() % 10 + 1;
    
          do {
              printf ("Guess the number (1 to 10): ");
              scanf ("%d",&iGuess);
              if (iSecret<iGuess) 
                  printf ("The secret number is lower\n");
              else {
                  if (iSecret>iGuess) 
                     printf ("The secret number is higher\n");
              }
              if (iSecret==iGuess) /* se acertou sai do loop */
                  break;
          } while(1); 
     
          printf ("Congratulations!\n");
          return 0;
    }