programa {
funcao inicio() {
inteiro op
real a, b, area
real PI = 3.141592653589793
faca{
escreva("---- Áreas de Figuras Geométricas ----\n")
escreva("1 - Retângulo\n2 - Triângulo retângulo\n3 - Círculo\n4 - SAIR\nSua opção: ")
leia(op)
escolha (op){
caso 1 :
escreva("\nDigite o valor do lado A: ")
leia (a)
escreva("\nDigite o valor do lado B: ")
leia (b)
area = a* b
escreva("\nA área do retângulo é: ", area)
pare
caso 2:
escreva ("\nDigite o valor da base: ")
leia (a)
escreva("\nDigite o valor da altura: ")
leia (b)
area = (b * a)/2
escreva ("\nA área do triângulo retângulo é: ", area)
pare
caso 3:
escreva ("\nDigite o valor do raio: ")
leia (a)
area = PI * (a*a)
escreva("\nA área do círculo é: ", area)
pare
caso 4:
escreva("\nPrograma finalizado!")
pare
caso contrario: escreva("\nOpção inválida!\n")
}
enquanto (op != 4)
}
}
programa {
funcao inicio() {
inteiro op
real a, b, area
real PI = 3.141592653589793
faca{
escreva("---- Áreas de Figuras Geométricas ----\n")
escreva("1 - Retângulo\n2 - Triângulo retângulo\n3 - Círculo\n4 - SAIR\nSua opção: ")
leia(op)
escolha (op){
caso 1 :
escreva("\nDigite o valor do lado A: ")
leia (a)
escreva("\nDigite o valor do lado B: ")
leia (b)
area = a* b
escreva("\nA área do retângulo é: ", area)
pare
caso 2:
escreva ("\nDigite o valor da base: ")
leia (a)
escreva("\nDigite o valor da altura: ")
leia (b)
area = (b * a)/2
escreva ("\nA área do triângulo retângulo é: ", area)
pare
caso 3:
escreva ("\nDigite o valor do raio: ")
leia (a)
area = PI * (a*a)
escreva("\nA área do círculo é: ", area)
pare
caso 4:
escreva("\nPrograma finalizado!")
pare
caso contrario: escreva("\nOpção inválida!\n")
}
enquanto (op != 4)
}
}
Passo 1
O enunciado me deu um programa em pseudocódigo (estilo Portugol) que mostra um menu repetido para o usuário e calcula áreas de figuras geométricas conforme a opção escolhida. As perguntas implícitas do exercício são: entender o que o programa faz, verificar se está correto, explicar passo a passo o funcionamento e sugerir melhorias para que funcione bem na prova/numa implementação real.
Informações relevantes do enunciado (pegar do código enviado):
- Variáveis declaradas:
(inteiro), (real), (real), (real) — essas estão no cabeçalho do programa. - Constante aproximada de
definida como . - Estrutura de repetição do tipo “faça…enquanto” com condição de parada
. - Menu com quatro opções:
-
— Retângulo: lê e e calcula . -
— Triângulo retângulo: lê (base) e (altura) e calcula . -
— Círculo: lê (raio) e calcula . -
— Sair: encerra o programa.
-
- Existe um tratamento para opção inválida (caso contrario) que escreve “Opção inválida!”.
- O código usa comandos típicos: escreva, leia, escolha/caso, pare.
Passo 2
Vamos entender o papel de cada variável e tipo — isso ajuda a não errar na prova.
- A variável
é do tipo inteiro ( ). Ela guarda a opção do menu. Por que inteiro? Porque as opções do menu são números inteiros (1, 2, 3, 4). - As variáveis
e são do tipo real ( ). Elas guardam medidas (comprimentos, raios) que podem ser números com casas decimais. - A variável
é do tipo real porque o resultado da área pode ser fracionário. - A constante
é um real com valor aproximado de . Usamos uma aproximação como .
Dica prática para prova: escolha tipos coerentes com os dados que você espera. Medidas ->
. Índices/opções ->
.
Passo 3
Explicar a estrutura de repetição usada: “faça…enquanto”.
- “faça { … } enquanto (
)” significa: - Executa o bloco de código dentro do “faça” pelo menos uma vez (é uma do-while).
- Ao final de cada execução verifica a condição
. - Se a condição for verdadeira, repete o bloco; se for falsa (ou seja,
), sai do loop.
- Portanto o menu aparece sempre pelo menos uma vez e só para quando o usuário digita
.
Exemplo rápido: se o usuário digita
, faz a opção 2, retorna ao menu; se depois digita
, o programa imprime “Programa finalizado!” e termina porque
faz a condição do “enquanto” ficar falsa.
Passo 4
Explicar o comando “escolha/caso” (switch-case) e “pare”:
- O comando “escolha (op) { caso 1: … caso 2: … caso contrario: … }” direciona a execução para o bloco correspondente ao valor de
. - O comando “pare” serve para interromper o processamento do “escolha” naquele caso (equivalente a “break”). Sem o “pare” pode haver comportamento de “fall-through” dependendo da linguagem; no pseudocódigo do enunciado, foi usado “pare” em cada caso principal para sair imediatamente do bloco do caso.
- No caso “caso contrario” o programa imprime mensagem de opção inválida.
Lembre-se: na prova, quando descrever o comportamento, explique que o fluxo salta para o caso correspondente a
e que “pare” evita executar casos abaixo.
Passo 5
Analisar passo a passo o cálculo da área do retângulo (caso
) e ensinar a fórmula com exemplos.
- Fórmula do retângulo: a área é base vezes altura. No código a base é
e a altura é . Em notação:
- Exemplo concreto para fixar: suponha
e . - Então
.
- Então
- Observação prática: verifique sempre se as unidades (m, cm, etc.) são compatíveis antes de multiplicar — na prova pode aparecer isso.
Passo 6
Analisar o cálculo da área do triângulo retângulo (caso
) e explicar a fórmula com detalhes.
- Fórmula do triângulo retângulo (base
altura dividido por ):
No código a base foi lida em
e a altura em
, então o autor escreveu:
- É a mesma fórmula, só a ordem dos fatores mudou (produto é comutativo).
- Exemplo: se
(base) e (altura), então
- Dica de prova: escreva a fórmula explícita e substitua passo a passo, não troque a operação por algo ambíguo.
Passo 7
Analisar o cálculo da área do círculo (caso
) e explicar por que a expressão está correta.
- Fórmula do círculo (área em função do raio
):
No código o raio foi salvo em
, então o cálculo foi:
- É equivalente a
. Exemplo: se ,
- Observação: para provas, você pode usar
ou dependendo do pedido; informe qual aproximação está usando.
Passo 8
Verificação de casos especiais e validações que faltam no código original — o que pode dar errado na prova/num programa real.
- Não há validação de entradas: o programa aceita valores negativos ou zero para medidas. Medidas físicas (comprimentos, raios) geralmente devem ser
. Proposta: verificar se e antes de calcular, e avisar o usuário caso contrário. - O programa assume que a leitura (leia) sempre retorna um número válido. Em implementações reais é preciso tratar entradas não numéricas, mas em pseudocódigo de prova normalmente você descreve a validação simples.
- Para a opção inválida, o código imprime a mensagem, mas é bom garantir que o fluxo volte ao menu sem efeitos colaterais.
- Pequena melhoria de clareza: usar nomes diferentes para o raio (
) ou base/altura para evitar confusão no raciocínio durante a prova. Mas não é obrigatório — apenas deixe claro quais variáveis representam o que.
Passo 9
Sugestões de melhorias práticas e explicação do porquê (isso ajuda a mostrar conhecimento na prova):
- Validar entradas:
- Para retângulo e triângulo, exigir
e . - Para círculo, exigir
(raio positivo). - Em pseudocódigo:
- se
então escreva(“Valor inválido”) senão calcula.
- se
- Para retângulo e triângulo, exigir
- Mostrar o resultado com um número razoável de casas decimais (ex.: 2 casas) para facilitar leitura.
- Deixar mensagens claras dizendo o que o usuário deve informar (ex.: "Digite o valor do raio (em metros): ").
- Se quiser sair imediatamente ao escolher
, pode usar um comando de saída; o “pare” no caso já faz isso no esquema atual.
Por que validar? Porque em prova/implementação um valor negativo para raio dá área negativa se você não checar, o que é fisicamente impossível.
Passo 10
Explicar como provar, passo a passo, que o programa está correto para cada opção (estratégia de verificação para a prova).
- Para cada opção:
- Identifique as variáveis de entrada (
, ou só ). - Escreva a fórmula matemática correta (coloque em notação, por exemplo
). - Substitua um exemplo numérico simples e calcule manualmente passo a passo.
- Compare com o que o programa retorna.
- Identifique as variáveis de entrada (
- Faça isso para um caso típico e um caso limite (ex.:
, negativo) para mostrar conhecimento dos comportamentos esperados.
Passo 11
Apresentar um pseudocódigo corrigido e um pouco melhorado, incluindo validação básica e mensagens claras. Esse será o modelo que você pode escrever rapidamente na prova ou transformar em código em qualquer linguagem.
Observações antes do código:
- Mantive a estrutura original (menu em loop) para que você reconheça o padrão.
- Adicionei checagens simples de entrada e mensagens de erro amigáveis.
- Mantive
com a mesma precisão do enunciado.
Passo 12
Aqui está o pseudocódigo corrigido e comentado (use isso como resposta final para submeter ou estudar). Ele resume tudo o que expliquei e já é um texto que você pode reescrever na sua linguagem de prova/avaliação.
Resposta
programa {
funcao inicio() {
inteiro op
real a, b, area
real PI = 3.141592653589793
faca {
escreva("---- Áreas de Figuras Geométricas ----\n")
escreva("1 - Retângulo\n2 - Triângulo retângulo\n3 - Círculo\n4 - SAIR\nSua opção: ")
leia(op)
escolha (op) {
caso 1:
escreva("\nDigite o valor do lado A: ")
leia(a)
escreva("\nDigite o valor do lado B: ")
leia(b)
se (a <= 0 ou b <= 0) {
escreva("\nValores inválidos: A e B devem ser maiores que zero.\n")
} senao {
area = a * b
escreva("\nA área do retângulo é: ", area, "\n")
}
pare
caso 2:
escreva("\nDigite o valor da base: ")
leia(a)
escreva("\nDigite o valor da altura: ")
leia(b)
se (a <= 0 ou b <= 0) {
escreva("\nValores inválidos: base e altura devem ser maiores que zero.\n")
} senao {
area = (a * b) / 2
escreva("\nA área do triângulo retângulo é: ", area, "\n")
}
pare
caso 3:
escreva("\nDigite o valor do raio: ")
leia(a)
se (a <= 0) {
escreva("\nValor inválido: o raio deve ser maior que zero.\n")
} senao {
area = PI * (a * a)
escreva("\nA área do círculo é: ", area, "\n")
}
pare
caso 4:
escreva("\nPrograma finalizado!\n")
pare
caso contrario:
escreva("\nOpção inválida!\n")
pare
}
} enquanto (op != 4)
}
}