Prática de Estrutura Condicional Múltipla
Introdução
Nesta etapa vamos desenvolver um programa que funcione como uma calculadora. Nosso objetivo é exercitar o uso de estruturas condicionais anihadas (estruturas condicionais dentro de outras estruturas)
Problema
Faça um programa que funcione como uma calculadora para as quatro operações: soma, subtração, multiplicação e divisão. Nossa calculadora deverá ler dois operandos e uma operação matemática, e escrever os operandos, a operação e o resultado. As operações admitidas são soma, subtração, multiplicação e divisão. Caso a operação seja de divisão, o programa deve verificar se o denominador é diferente de zero, caso o denominador seja zero, o programa deve escrever uma mensagem de erro informando que o denominador não pode ser zero. Caso a operação lida não seja nenhuma das aceitas, o programa deve emitir uma mensagem de operação desconhecida.
Fluxograma
No Fluxograma, estabelecemos as seguintes opções:
- Somar
- Subtrair
- Multiplicar
- Dividir
Cada operação possui um teste associado. Caso o teste da operação seja verdadeiro, a operação é executada e um texto é apresentado no formato "opr1 operacao opr2 = r" como saída. Por exemplo, caso a operação de soma seja selecionada para os operandos 3 e 4, a saída deve ser: "3 + 4 = 7".
Atenção!
Repare que no fluxograma, quando a operação de divisão é selecionada, fazemos um novo teste para verificar se o denominador é zero. Caso isso aconteça, enviamos um texto na saída informando o erro de divisão por zero.
Desenvolvendo o Programa
1 - Crie um novo arquivo no ambiente de desenvolvimento;
2 - Adicione a estrutura geral do programa contendo as bibliotecas e a função principal;
3 - Declare as variáveis de acordo com o fluxograma;
4 - Faça a etapa de entrada de dados apresentando um menu de operações e fazendo a leitura da operação; Exemplo de menu:
1 - Somar
2 - Subtrair
3 - Multiplicar
4 - Dividir
Informe a operação:
5 - Faça a entrada de dados dos dois operandos;
6 - Crie o primeiro teste para a operação de soma:
if (operacao == 1)
{
r = opr1 + opr2;
printf("%.4f + %.4f = %.4f\n", opr1, opr2, r);
}
Repare que as quatro marcações "%.4f" serão substituídas pelos valores dos operandos e o resultado. Execute e teste esse caso.
8 - Caso a operação não seja de soma, faça o teste para operação de subtração:
if (operacao == 1)
{
r = opr1 + opr2;
printf("%.4f + %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 2)
{
r = opr1 - opr2;
printf("%.4f - %.4f = %.4f\n", opr1, opr2, r);
}
}
Atenção!
Repare que ao cair no primeiro else, nós sabemos que a operação selecionada não é a de soma (diferente de 1), porém, precisamos ainda testar se a operação é a de subtração.
9 - Execute novamente e teste a subtração;
10 - Caso o teste da subtração falhe, sabemos que a operação pode ser de subtração ou divisão. Faça o teste para a multiplicação;
if (operacao == 1)
{
r = opr1 + opr2;
printf("%.4f + %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 2)
{
r = opr1 - opr2;
printf("%.4f - %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 3)
{
r = opr1 * opr2;
printf("%.4f x %.4f = %.4f\n", opr1, opr2, r);
}
}
}
11 - Execute para testar;
12 - Faça o último teste para a operação de divisão;
if (operacao == 1)
{
r = opr1 + opr2;
printf("%.4f + %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 2)
{
r = opr1 - opr2;
printf("%.4f - %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 3)
{
r = opr1 * opr2;
printf("%.4f x %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 4)
{
r = opr1 / opr2;
printf("%.4f / %.4f = %.4f\n", opr1, opr2, r);
}
}
}
}
13 - Nesse momento, não estamos tratando o caso do denominador zero. Adicione uma condicional para esse caso dentro do bloco que trata a divisão.
if (operacao == 1)
{
r = opr1 + opr2;
printf("%.4f + %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 2)
{
r = opr1 - opr2;
printf("%.4f - %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 3)
{
r = opr1 * opr2;
printf("%.4f x %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 4)
{
if(opr2 == 0.0)
{
printf("O denominador não pode ser zero!");
} else {
r = opr1 / opr2;
printf("%.4f / %.4f = %.4f\n", opr1, opr2, r);
}
}
}
}
}
14 - Execute o programa e teste o caso da divisão por zero. Certifique-se de que a mensagem de erro está sendo impressa na saída.
15 - Caso o usuário digite uma operação desconhecida, nenhuma das condições será satisfeita. Para capturar esse caso, podemos simplesmente colocar uma cláusula else na condicional da divisão. Adicione o seguinte código:
if (operacao == 1)
{
r = opr1 + opr2;
printf("%.4f + %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 2)
{
r = opr1 - opr2;
printf("%.4f - %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 3)
{
r = opr1 * opr2;
printf("%.4f x %.4f = %.4f\n", opr1, opr2, r);
} else {
if(operacao == 4)
{
if(opr2 == 0.0)
{
printf("O denominador não pode ser zero!");
} else {
r = opr1 / opr2;
printf("%.4f / %.4f = %.4f\n", opr1, opr2, r);
}
} else {
printf("Operação Inválida!");
}
}
}
}
Se o else da condicional da divisão for executado, sabemos que a operação informada não é nenhuma das quatro apresentadas no menu. Portanto, informamos que a operação é inválida.
Faça um último teste!