Elaborar um programa em Pascal,que leia o nome de um aluno, suas as 3 notas obtidas durante um semestre com seus respectivos pesos, calcule a média ponderada semestral do aluno e imprima uma mensagem informando o nome, a média do aluno e se ele foi APROVADO DIRETO ( 8<= média \leq 10 ), se ele está em EXAME FINAL ( 3<= média<8), ou se foi REPROVADO DIRETO (média ❤️).

Passo 1

O enunciado pede que eu escreva um programa em Pascal que:
  • leia o nome de um aluno;
  • leia as três notas obtidas no semestre e os respectivos pesos de cada nota;
  • calcule a média ponderada semestral do aluno;
  • imprima o nome do aluno, a média e uma mensagem de situação conforme a média:
    • APROVADO DIRETO quando \,8 \le \text{média} \le 10é,
    • EXAME FINAL quando \,3 \le \text{média} < 8é,
    • REPROVADO DIRETO quando \,\text{média} < 3é.
Informações relevantes fornecidas:
  • Existem exatamente 3 notas, cada uma com um peso.
  • Os intervalos de decisão (aprovado/exame/reprovado) foram dados explicitamente com as desigualdades acima.
  • Posso assumir que a questão está bem formulada (ou seja, serão fornecidos números válidos para notas e pesos), mas vou tratar rapidamente o caso em que a soma dos pesos seja zero para evitar divisão por zero.

Passo 2

Definindo as variáveis que o programa precisa e seus tipos (explicando cada uma):
  • \text{nome}: guarda o nome do aluno — use tipo string.
  • \text{n}_1,\\ \text{n}_2,\\ \text{n}_3: as três notas — use tipo real (números com vírgula).
  • \text{p}_1,\\ \text{p}_2,\\ \text{p}_3: os três pesos correspondentes — use tipo real (podem ser inteiros, mas real é mais geral).
  • \text{somaPesos}: soma dos pesos, tipo real.
  • \text{media}: média ponderada, tipo real.
Por que usar real? Porque notas e pesos podem ser fracionários (por ex. 7{,}5), então real é o tipo adequado.

Passo 3

Fórmula da média ponderada (a parte matemática central). Vou explicar bem devagar:
A média ponderada de três notas \text{n}_1,\\ \text{n}_2,\\ \text{n}_3 com pesos \text{p}_1,\\ \text{p}_2,\\ \text{p}_3 é dada por
\text{média} \;=\; \frac{\text{n}_1\cdot\text{p}_1 \;+\; \text{n}_2\cdot\text{p}_2 \;+\; \text{n}_3\cdot\text{p}_3}{\text{p}_1 \;+\; \text{p}_2 \;+\; \text{p}_3}.é
Explicando cada termo:
  • No numerador, multiplicamos cada nota pelo seu peso e somamos essas parcelas — isso dá importância proporcional às notas segundo o peso.
  • No denominador, somamos todos os pesos para normalizar (dividir) a soma ponderada e obter a média.
Exemplo concreto (para fixar): se \text{n}_1=7, \text{p}_1=2; \text{n}_2=8, \text{p}_2=3; \text{n}_3=6, \text{p}_3=1,
então \text{somaPesos} = 2+3+1 = 6 e
\text{média} = \frac{7\cdot2 + 8\cdot3 + 6\cdot1}{6} = \frac{14 + 24 + 6}{6} = \frac{44}{6} \approx 7{,}33.é
Com isso, pelo critério, esse aluno estaria em EXAME FINAL ( 3 \le 7{,}33 < 8).

Passo 4

Lógica de decisão (como testar a média e escolher a mensagem). Vou explicar as comparações e porque a ordem importa.
Queremos:
  • APROVADO DIRETO quando \,8 \le \text{média} \le 10é.
  • EXAME FINAL quando \,3 \le \text{média} < 8é.
  • REPROVADO DIRETO quando \,\text{média} < 3é.
Observações:
  • As desigualdades são mutuamente exclusivas e cobrem os valores típicos de média entre 0 e 10, exceto valores acima de 10 (caso estranho) ou negativos (inválidos). Podemos tratar esses casos com uma mensagem adicional se quiser.
  • Em código Pascal, essas condições são testadas com operadores relacionais e operadores lógicos. Por exemplo, a condição para APROVADO DIRETO é:
    \;(\text{media} \ge 8)\\ \text{and}\\ (\text{media} \le 10).
  • É comum usar uma estrutura if … else if … else para testar em sequência: primeiro verificar APROVADO DIRETO, depois EXAME FINAL, e por fim REPROVADO DIRETO. Assim evitamos sobreposição nas condições.

Passo 5

Tratamento de caso especial: soma dos pesos igual a zero.
  • Se \text{p}_1+\text{p}_2+\text{p}_3 = 0, a fórmula da média faz divisão por zero, o que é inválido. Então convém checar:
    \text{somaPesos} = \text{p}_1+\text{p}_2+\text{p}_3 e se \text{somaPesos} = 0 apresentar uma mensagem de erro e encerrar ou pedir novos dados.
  • Como o enunciado assume boa formulação, esse caso é improvável, mas é uma boa prática evitá-lo.

Passo 6

Estrutura geral do programa (em palavras, passo a passo que o Pascal seguirá):
  1. Ler o nome do aluno.
  2. Ler as três notas e, para cada nota, ler também o peso correspondente (poder ler nota e peso numa mesma linha ou em linhas separadas).
  3. Calcular \text{somaPesos} = \text{p}_1+\text{p}_2+\text{p}_3.
  4. Se \text{somaPesos} = 0, mostrar erro e encerrar.
  5. Calcular \text{média} = \dfrac{\text{n}_1\cdot\text{p}_1 + \text{n}_2\cdot\text{p}_2 + \text{n}_3\cdot\text{p}_3}{\text{somaPesos}}é.
  6. Imprimir o nome do aluno e a média (por exemplo com duas casas decimais).
  7. Testar as condições e imprimir a mensagem correspondente: APROVADO DIRETO, EXAME FINAL ou REPROVADO DIRETO.
  8. (Opcional) Se a média estiver fora do intervalo esperado (por exemplo maior que 10), imprimir aviso.

Passo 7

Algumas dicas de implementação prática em Pascal:
  • Use variáveis do tipo real para notas, pesos, somaPesos e média.
  • Para ler o nome com espaços, use readln(nome).
  • Para formatar a média com duas casas decimais ao imprimir, use a sintaxe de formato do writeln como: writeln(media:0:2).
  • Use if … else if … else para as comparações, lembrando de usar parênteses nas comparações compostas:
    • if (media >= 8) and (media <= 10) then …
    • else if (media >= 3) and (media < 8) then …
    • else if (media < 3) then …
  • Coloque mensagens claras para o usuário na entrada, para facilitar testes manuais.

Passo 8

Agora apresento o programa em Pascal pronto (código final). Ele implementa tudo o que expliquei: leitura do nome, leitura das três notas e três pesos, cálculo da média ponderada, verificação de soma de pesos e impressão do resultado com a situação do aluno.

Resposta

program MediaPonderadaAluno;
var
nome: string;
n1, n2, n3: real;
p1, p2, p3: real;
somaPesos, media: real;
begin
writeln(‘Digite o nome do aluno:’);
readln(nome);
writeln(‘Digite a nota 1 e o peso 1 (separados por espaço):’);
readln(n1, p1);
writeln(‘Digite a nota 2 e o peso 2 (separados por espaço):’);
readln(n2, p2);
writeln(‘Digite a nota 3 e o peso 3 (separados por espaço):’);
readln(n3, p3);
somaPesos := p1 + p2 + p3;
if somaPesos = 0.0 then
begin
writeln(‘Erro: a soma dos pesos eh zero. Nao e possivel calcular a media.’);
halt(1);
end;
media := (n1 * p1 + n2 * p2 + n3 * p3) / somaPesos;
writeln;
writeln('Aluno: ', nome);
writeln('Media: ', media:0:2);
if (media >= 8.0) and (media <= 10.0) then
writeln(‘Situacao: APROVADO DIRETO’)
else if (media >= 3.0) and (media < 8.0) then
writeln(‘Situacao: EXAME FINAL’)
else if (media < 3.0) then
writeln(‘Situacao: REPROVADO DIRETO’)
else
writeln(‘Situacao: media fora do intervalo esperado.’);
end.

Exercícios relacionados