AULA 10 - Introdução à Linguagem C - FIC

De IFSC
Ir para navegação Ir para pesquisar

COMANDOS DE CONTROLE DE FLUXO

Considera-se comando válido em C, qualquer expressão válida, seguida por um ponto-e-vírgula (;), ou expressão entre chaves ({}).

Ex:

a = 5;

Neste capítulo, entretanto, trataremos de comandos de controle de fluxo.

Pode-se dividir os comandos de controle de fluxo do C, em três categorias: instruções condicionais (if e switch), comandos de controle de loop (while, for e do-while) e instrução de desvio incondicional (goto).


O COMANDO IF

A forma geral da declaração if é:

if(condição_de_teste)
   comando;

A interpretação é: Se a condição_de_teste for verdadeira (não-zero), executa comando. Caso contrário, a execução é transferida para a instrução seguinte ao comando if.


Ex:

if (x==5) y=3; 

Se comando contiver mais de uma instrução, o bloco deve ser colocado entre chaves ( {} ):

if(condição_de_teste)
{ comando1;
comando2;
comando3;
 ...
}


O COMANDO IF-ELSE

A forma geral da declaração if-else é:

if(condição_de_teste)
 comando1;
else comando2;

A interpretação é: "Se a condição_de_teste for verdadeira (não-zero), executa comando1, Senão, executa comando2".

Ex:

if ( x < 6)
   y = 1;
else
   y = 2;

Os comandos if e if-else podem ser aninhados!!!

Isto ocorre quando uma série de testes sucessivos tem que ser feita, para fazer-se a escolha da instrução a ser executada.

A sintaxe pode ser tal como:

 if(condição1)
   if(condição2)
      comando1; //instrução executada quando condição1 e condição2 forem V
    else
      comando2; //instrução executada quando condição1 for V e condição2 for F
 else
   if(condição3)
      comando3; //instrução executada quando condição1 for F e condição3 for V
   else
      comando4; //instrução executada quando condição1 e condição3 forem F

Exemplo:

Escreva o programa que lê dois valores reais, x e y, e calcula a soma, subtração, multiplicação ou divisão entre eles, dependendo da opção de operação escolhida pelo usuário.

Uma maneira simples seria:

#include <stdio.h>
#include <stdlib.h>
int main()
{ float x, y;
int opcao;
   printf("Entre com o valor de x:>  ");
   scanf("%f",&x);
   printf("\nEntre com o valor de y:>  ");
   scanf("%f",&y);
   printf("\n\nDigite \n(1) para somar; \n(2) para subtrair; ");
   printf("\n(3) para multiplicar e \n(4) para dividir, \nx e y : > ");
   scanf("%d",&opcao);
   printf("\n*********************\n");
   if(opcao == 1) printf("x + y = %f\n", x+y);
   if(opcao ==2 ) printf("\nx - y = %f\n", x-y);
   if (opcao ==3) printf("\nx * y = %f\n", x*y);
   if (opcao ==4) printf("\nx / y = %f\n", x/y);
   if(opcao < 1 || opcao > 4)  printf("\n Opcao invalida!!! ");
   printf("\n*********************\n");
   return 0;

}


Uma maneira um pouco mais elegante de resolver esta questão seria:

#include <stdio.h>
#include <stdlib.h>
int main()
{ float x, y;
char opcao;
   printf("Entre com o valor de x:>  ");
   scanf("%f",&x);
   printf("\nEntre com o valor de y:>  ");
   scanf("%f",&y);
   printf("\n\nDigite \n\t\'s\'omar; \n\ts\'u\'btrair; ");
   printf("\n\t\'m\'ultiplicar ou \n\t\'d\'ividir, \nx e y : > ");
   opcao = getche();
   printf("\n*********************\n");
   if(opcao == 's'||opcao =='S')
       printf("x + y = %f\n", x+y);
   else
       if(opcao == 'u'||opcao =='U')
           printf("\nx - y = %f\n", x-y);
       else
          if (opcao == 'm'||opcao =='M')
               printf("\nx * y = %f\n", x*y);
          else
                 if (opcao == 'd'||opcao =='D')
                     printf("\nx / y = %f\n", x/y);
                 else
                       printf("\n Opcao invalida!!! ");
   printf("\n*********************\n");
   return 0;
}

Exercício:

Um professor de educação física especificou a tabela abaixo que define o tempo de treinamento para alunos do sexo feminino e masculino, jovens ou adultos. Escreva o programa que implementa a tabela abaixo, isto é, lê a idade e sexo do usuário e devolve o tempo de treinamento recomendado.


TEMPO DE TREINO Sexo FEMININO Sexo MASCULINO
≤ 30 anos t = 15’ t = 45’
> 30 anos t = 25’ t = 60’


Mas há que se ter cuidado com o que é interno, o que é externo e a qual if pertence cada else e com a endentação!!!!!