Voltar Lista de Tópicos

Editar | Versões | Fórum de Discussão

Prazos para Envio


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:

  1. Somar
  2. Subtrair
  3. Multiplicar
  4. 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!


Questões

Questão 1
Questão 2
Questão 3
Questão 4

Comentários...

Não há comentários ainda... Seja o primeiro!