AULA 10 - Introdução à Linguagem C - FIC
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!!!!!