#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
float calcula (float a, float b, char c)
{
float resultado;
switch (c)
{
case '+' :
resultado = (a+b);
break;
case '-' :
resultado = (a-b);
break;
case '*' :
resultado = (a*b);
break;
case '/' :
resultado = (a/b);
break;
default :
return (0);
break;
}
return (resultado);
}
int main ()
{
float op1, op2, resposta;
char sinal, opcao;
setlocale(LC_ALL, "Portuguese");
do {
system("cls");
printf ("\nDigite o primeiro valor: ");
scanf ("%f", &op1);
printf ("\nDigite o segundo valor: ");
scanf ("%f", &op2);
printf ("\nDigite a operação (+ - * /): ");
sinal = getch();
resposta = calcula (op1, op2, sinal);
printf ("\nResultado: %.2f", resposta);
printf ("\n\n Deseja continuar (s/n): ");
scanf (" %c", &opcao);
} while (opcao == 'S' || opcao == 's');
}
A partir da análise do código, observe e responda as perguntas, enviando suas respostas como anexo, mas não se esqueça de identificar cada resposta numerando-as de acordo com cada pergunta sendo respondida.
1. Qual a finalidade do software que pode ser gerado a partir desse código?
2. Quantas estruturas de controle existem no código? E quais os comandos utilizados em cada uma?
3. Quantas estruturas de dados são utilizadas no código para que possa funcionar como esperado? São de que tipo?
4. Existe um pequeno defeito no código que gera um problema previsível no momento da execução do mesmo que é a divisão por zero, que por definição matemática, não possui resposta. Dê uma sugestão que possa auxiliar na solução deste problema.
Soluções para a tarefa
Resposta:
Explicação:
esse programa é uma calculadora
1. A finalidade do software gerado a partir desse código é de ser uma calculadora.
A partir da análise do código é possível perceber que ele tem o intuito de ser uma calculadora, pois ele funciona da seguinte forma:
- Ele faz a leitura de dois números com ponto flutuante, número reais, do teclado.
- Logo depois ele faz a leitura de um caractere do teclado que indica qual operação deseja realizar.
- A função que realiza a operação desejada a partir dos dois números é chamada e retorna o valor para variável 'resposta'.
- Por fim, ele escreve na tela a resposta. E isso é feito em loop até que seja escrito a opção 'S' ou 's'.
2. Existem duas estrutras de controle no código, a estrutura de repetição "do... while" e a estrutura condicional "switch...case".
Estruturas de controle são aquelas que controlam o fluxo de execução de um código, como é o caso das estruturas de repetição e estruturas condicionais, que definem quando e quantas vezes um código será executado.
O "do" difere das demais estruturas de repetição pois ele executa o código dentro dele pelo menos uma vez, e depois é realizado a comparação se deve ou não continuar executando.
Já o "switch" difere do "if" a medida que ele escolhe uma variável e define o fluxo que o código irá seguir a partir de várias possibilidades que essa variável pode alcançar.
3. Existem cinco estruturas de dados no código. São seis do tipo float que armazenam os números que é realizado a operação e a resposta. E três do tipo char que armazenam a opção e o sinal da operação.
Estruturas de dados são aquelas utilizadas para armazenar dados, seja dados que são inseridos do teclado ou calculados pelo próprio algoritmo. Também podemos chamar elas de variáveis.
Na maioria das linguagens de programação existem os seguintes tipos primitivos de dados:
- char: usado para armazenar um caractere. As variáveis c, sinal e opção do algoritmo são um exemplo.
- float: usado para armazenar número de ponto flutuante, o que equivale aos número reais. As variáveis a, b, resultado, op1, op2 e resposta são um exemplo no algoritmo.
- int: usado para armazenar números inteiros. Não há no algoritmo.
- bool: usado para armazenar valores lógicos, booleanos. Como true ou false.
4. Podemos solucionar o problema da divisão por zero, colocando uma estrutura condicional no case "/". Essa condicional deve ser inserida antes de realizar a operação em si e terá o formato do pseudocódigo exibido abaixo:
...
CASO '/':
SE (b!= 0) ENTÃO
resultado = (a/b)
SENÃO
ESCREVA("Não existe divisão por 0")
...
Leia mais sobre algoritmos em
https://brainly.com.br/tarefa/20790680
https://brainly.com.br/tarefa/28035640
https://brainly.com.br/tarefa/11952923
https://brainly.com.br/tarefa/47906908
#SPJ2