Desenvolva um algoritmo que possua um registro que receberá o nome do aluno, notas de 3 (três) avaliações e a média final do mesmo. Mediante as notas informadas realize o cálculo da média do aluno e ao final do exercício informe o nome, média e se o aluno foi aprovado (média >= 7), está de exame (média < 7 e >=4) ou foi reprovado (média < 4). (Utilize a estrutura REGISTRO).
“Temos o destino que merecemos. O nosso destino está de acordo com os nossos méritos.”
“Temos o destino que merecemos. O nosso destino está de acordo com os nossos méritos.”
Passo 1
O enunciado pede que se desenvolva um algoritmo que use um registro para armazenar os dados de um aluno e calcule a média a partir de três notas, mostrando ao final o nome do aluno, a média e a situação dele segundo os seguintes critérios:
- Aprovado: média maior ou igual a
. - Exame: média menor que
e maior ou igual a . - Reprovado: média menor que
.
Informações fornecidas pelo enunciado:
- Entrada: nome do aluno e as três notas (três avaliações).
- Deve existir um campo para a média final dentro do registro.
- Saída: nome, média e situação (aprovado/exame/reprovado).
Passo 2
Definindo o que é um registro e quais campos ele precisa ter (sem resolver ainda).
- Um registro é uma estrutura que agrupa vários campos relacionados a um mesmo objeto. Aqui o objeto é o aluno.
- Campos necessários (cada um explicado):
-
: campo do tipo texto para guardar o nome do aluno. -
, , : campos numéricos que guardam as três notas do aluno. -
: campo numérico que guardará a média final calculada.
-
Comentário didático: usar um registro facilita manter todos os dados do aluno juntos. Em linguagens com suporte nativo, o registro pode ser chamado de
record, struct ou registro.Passo 3
Fórmula da média e explicação passo a passo.
- Fórmula usada para a média aritmética simples de três notas:
- O que cada símbolo significa:
-
, , são os valores numéricos das três avaliações. -
é o valor da média aritmética das três notas.
-
- Observações práticas:
- Somar as três notas primeiro e depois dividir por
. - Se as notas estiverem numa escala de
a , a média também ficará nessa escala. - Fazer a divisão por
pode resultar em número com casas decimais; guarde como real/float.
- Somar as três notas primeiro e depois dividir por
Passo 4
Como determinar a situação (condição) do aluno a partir da média.
- As condições são verificadas em ordem lógica (de cima para baixo) para evitar erros de classificação:
- Se
então a situação é “APROVADO”. - Senão, se
então a situação é “EXAME”. - Senão, a situação é “REPROVADO”.
- Se
- Explicação das desigualdades:
- O primeiro teste usa
para incluir exatamente a média entre os aprovados. - O segundo teste usa
para incluir entre os de exame, e como vem depois de falhar no primeiro teste automaticamente garante que . - O terceiro caso cobre todas as médias menores que
.
- O primeiro teste usa
Passo 5
Validações e detalhes práticos (boas práticas para a prova)
- Verificar se as notas inseridas estão num intervalo plausível (por exemplo, entre
e ). Se não estiverem, avisar e pedir a nota novamente. - Decidir quantas casas decimais exibir na média (por exemplo, mostrar com duas casas decimais).
- Tratar nomes com espaços (ler a linha inteira).
- Em uma prova, se pedirem pseudocódigo, usar nomes claros para os campos e escrever a ordem de leitura, cálculo e impressão.
Passo 6
Exemplo numérico passo a passo (para fixar).
- Suponha que as notas sejam:
, , . - Calcular a média:
- Verificar situação:
-
? Não. -
? Sim. Logo situação = “EXAME”.
-
- Resultado esperado: mostrar o nome, a média (por exemplo
) e a situação “EXAME”.
Passo 7
Apresentação do algoritmo (pseudocódigo/Pascal-style) — aqui está o passo a passo operacional que você pode escrever na prova. Ele mostra a definição do registro, leitura, cálculo, decisão e saída.
Program outline (pseudocódigo):
- Definir o registro do aluno com campos: nome, nota1, nota2, nota3, media.
- Ler o nome e as três notas.
- Calcular a média com a fórmula da Passo 3.
- Aplicar as condições do Passo 4 para determinar a situação.
- Imprimir o nome, a média (formatada) e a situação.
Resposta
type
TAluno = record
Nome: string;
Nota1: real;
Nota2: real;
Nota3: real;
Media: real;
end;
TAluno = record
Nome: string;
Nota1: real;
Nota2: real;
Nota3: real;
Media: real;
end;
var
Aluno: TAluno;
Situacao: string;
Aluno: TAluno;
Situacao: string;
begin
{ Leitura dos dados }
Write('Nome do aluno: ');
ReadLn(Aluno.Nome);
Write('Nota 1: ');
ReadLn(Aluno.Nota1);
Write('Nota 2: ');
ReadLn(Aluno.Nota2);
Write('Nota 3: ');
ReadLn(Aluno.Nota3);
{ Leitura dos dados }
Write('Nome do aluno: ');
ReadLn(Aluno.Nome);
Write('Nota 1: ');
ReadLn(Aluno.Nota1);
Write('Nota 2: ');
ReadLn(Aluno.Nota2);
Write('Nota 3: ');
ReadLn(Aluno.Nota3);
{ Cálculo da média }
Aluno.Media := (Aluno.Nota1 + Aluno.Nota2 + Aluno.Nota3) / 3;
Aluno.Media := (Aluno.Nota1 + Aluno.Nota2 + Aluno.Nota3) / 3;
{ Determinação da situação }
if Aluno.Media >= 7.0 then
Situacao := ‘APROVADO’
else if Aluno.Media >= 4.0 then
Situacao := ‘EXAME’
else
Situacao := ‘REPROVADO’;
if Aluno.Media >= 7.0 then
Situacao := ‘APROVADO’
else if Aluno.Media >= 4.0 then
Situacao := ‘EXAME’
else
Situacao := ‘REPROVADO’;
{ Saída }
WriteLn('Nome: ', Aluno.Nome);
WriteLn('Média: ', FloatToStrF(Aluno.Media, ffFixed, 8, 2)); { duas casas decimais }
WriteLn('Situação: ', Situacao);
end.
WriteLn('Nome: ', Aluno.Nome);
WriteLn('Média: ', FloatToStrF(Aluno.Media, ffFixed, 8, 2)); { duas casas decimais }
WriteLn('Situação: ', Situacao);
end.