Ir ao conteúdo
  • Cadastre-se
odair020

Pascal Alguém poderia me ajudar com esse exercício de Pascal?

Posts recomendados

O que você já fez até agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@KXSY basicamente nada cara, fiz um esboço mas nem compilando ele está.

 
Program atividade_09 ;
var
S, N : char;

function mediaaluno(media : integer): string;
var media: real;
begin
  Writeln('Entre com as suas quatro notas');
  Readln(n1,n2,n3,n4);
  Writeln(n1, n2, n3, n4);
  media:= (n1 + n2 + n3 + n4)/4
  writeln('Sua media é de', media);
 end.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@odair020 Vou te ensinar uma coisa quase universal de todas as linguagens da programação, quando nós declaramos a palavra program em pascal, isso instrui ao compilador que a partir dali tudo aquilo e um procedimento.

program MeuPrograma;	(* Isso e um procedimento principal *)
uses 
  crt;
  
(* procedimento dentro do procedimento principal *)
procedure MostraNumero;
begin
  writeln('33');
end;    (* Todo procedimento interno ao procedimento principal deve terminar com ; *)
  
begin   (*Começo do nosso procedimento *)
  writeln('Oi.');
  MostraNumero;
  readln;
end.    (*Fim do nosso procedimento *)

nós declaramos procedimentos dentro do procedimento principal, então MostraNumero ali e interno de MeuPrograma.

 

20 minutos atrás, odair020 disse:

@KXSY basicamente nada cara, fiz um esboço mas nem compilando ele está

adicionado 0 minutos depois

Program atividade_09 ;
var
S, N : char;

function mediaaluno(media : integer): string;
var media: real;
begin
  Writeln('Entre com as suas quatro notas');
  Readln(n1,n2,n3,n4);
  Writeln(n1, n2, n3, n4);
  media:= (n1 + n2 + n3 + n4)/4
  writeln('Sua media é de', media);
 end.

  

a dica básica aqui e declare 4 variáveis leia as quatro e depois tire a media.

 

23 minutos atrás, odair020 disse:

media:= (n1 + n2 + n3 + n4)/4

seu raciocínio está certo só falta acerta na logica.

Tente fazer algo assim funcionar primeiro.

program MeuProgram;
uses
  crt;
  
var
 n1,n2,n3,n4,media:integer;
 
begin
  writeln('Digite uma nota');
  readln(n1);
  {....}
  writeln('Digite uma outra nota');
  readln(n4);
  (*Aqui você tira a media *)
  writeln('A nota media e:',media);
  readln();
end.

Depois eu ajudo você a colocar em uma função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não estou conseguindo sair do lugar com isso aí

adicionado 2 minutos depois

beleza vou tentar aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

@odair020 Mais você praticamente já resolveu o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@KXSY só não saquei muito  bem como implantar cerrinho no código

adicionado 8 minutos depois
Program exercicio9 ;
var
 n1,n2,n3,n4,media : integer;
 
 begin
 writeln('Digite a primeira nota');
 Readln(n1);
 writeln('Digite a segunda nota');
 readln(n2);
 writeln('Digite a terceira nota');
 readln(n3);
 writeln('Digite a quarta nota');
 readln(n4);
 media:=(n1+n2+n3+n4)/4;
 writeln('A media do aluno e:',media);
 readln();
 end.

ficou assim agora mas no calculo está dando erro

adicionado 12 minutos depois

modifiquei aqui, a primeira parte foi, troquei o tipo da variavel da media pra real

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá aí

program MeuProgram;
uses
  crt;
  
var
 n1,n2,n3,n4:integer;
 media:real;
 
begin
  writeln('Digite uma nota');
  readln(n1);
  writeln('Digite uma outra nota');
  readln(n2);
  writeln('Digite uma outra nota');
  readln(n3);
  writeln('Digite uma outra nota');
  readln(n4);
  media:=(n1+n2+n3+n4)/4;
  writeln('A media das notas e:',media:2:2);
  readln();
end.

Não é a resposta, mais sim a metade do problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@KXSY sim, a partir daqui a coisa fica mais complicada 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em que parte?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@KXSY no procedure e function, não sei muito bem como usar

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta seguir o meu código

program MeuPrograma;
uses 
  Crt;
  
var
  n1,n2,resultado:integer;

(* Cria um procedimento simples *)  
procedure MeuProcedimento(n1,n2,n3:integer);
begin
  writeln('Numeros passados ',n1,' ',n2,' ',n3);
  readln;
end;

(* Cria uma função simples *)
function MinhaFuncao(n1,n2:integer):integer;
begin
  writeln(n1,'+',n2,'=',n1+n2);
  MinhaFuncao:=n1+n2;
end;

begin
  writeln('Digite dois numeros.');
  readln(n1,n2);
  MeuProcedimento(n1,n2,(n1+n2)*n2);
  writeln;  { Salta uma linha }
  resultado:=MinhaFuncao(n1,n2);
  writeln('Para reforçar o resultado foi ',resultado);
  readln;
end.

ApostilaPascal.pdf

Lê essa apostila ai, na pagina 47.

execute nesse site que fica mais fácil de entender  https://www.onlinegdb.com/

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@KXSY vou tentar aqui

 

adicionado 10 minutos depois
1 minuto atrás, odair020 disse:

@KXSY vou tentar aqui

 

Program exercicio9 ;
 uses
   Crt;
   
   
var
 n1,n2,n3,n4: integer;
 media: real;
 
 function notaaluno(n1,n2,n3,n4:integer): integer;
 begin
 writeln('Digite a primeira nota');
 Readln(n1);
 writeln('Digite a segunda nota');
 readln(n2);
 writeln('Digite a terceira nota');
 readln(n3);
 writeln('Digite a quarta nota');
 readln(n4);
 media:=(n1 + n2 + n3 + n4)/4;
 writeln('A media do aluno e:',media);
 readln();
 end;
 
 procedure mediaaluno(n1,n2,n3,n4:integer): integer;
 begin

algo parecido com isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Program teste1 ;
var
not1, not2, not3, not4 : real;
opcao : char;
retorno : string;
procedure medialuno( media : real);
begin
  if(media >= 6.0) then
  writeln('Você foi aprovado!')
  else
  writeln('Sentimos muito mas você foi reprovado');
end;
function calcmedia (n1, n2, n3, n4 : real) : real;
var
med: real;
retorno1 : real;
begin
  writeln('ENTRE COM A PRIMEIRA NOTA');
  readln(n1);
  writeln('ENTRE COM A SEGUNDA NOTA');
  readln(n2);
  writeln('ENTRE COM A TERCEIRA NOTA');
  readln(n3);
  writeln('ENTRE COM A QUARTA NOTA');
  readln(n4);
  med:=(n1+n2+n3+n4)/4;
  writeln('A média do aluno é:',med);
  retorno1 := (med)
end;
Begin
  repeat
    retorno := calcmedia (not1, not2, not3, not4);
    writeln('Deseja realizar outro calculo de media?(S/N)');
    readln(opcao);
  until(opcao = 'N') or (opcao = 'n');
End.

fiz algumas alterações e o código ficou assim, porém ainda não consegui deixá-lo em perfeito funcionamento

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

@odair020, alguns pontos:

 

1#

Prefira nomenclaturas mais objetivas para o métodos. Ex.: CalculaMedia() e VerificaAprovacao();

 

 

 

2#

Seguindo o enunciado, essa function que calcula a nota NÃO receberá parâmetros. Todas as variáveis necessárias serão locais mesmo. As notas não precisam ser declaradas como globais.

 

o recomendado é assim: todas as variáveis que o método utilizar, OU vem pelo parâmetro, OU são declaradas localmente (inclui ambos, é claro. Assim como podem não utilizar variáveis...), ou seja, NÃO* é interessante utilizar variáveis globais dentro das funções.

 


De global basicamente seria:

var
  opcao :char;

 

 

 

3#

Para retornar o valor da function, usa-se a própria funcion. Ex.:

 CalculaMedia := mediaNotas;

Ou seja: a função, além de fazer o que tem que fazer, também funciona meio como uma "variável". Quando ela terminar, nela mesma vai ter o valor que foi atribuído...

 

Lá no programa principal você "pega" essa resposta e utiliza como quiser. Ex.:

VerificaAprovacao(CalculaMedia()); //a função é invocada, vai retornar um valor, que vai ser utilizado como pâmetro na procedure

 

Ou pode utilizar uma variável para receber esse valor:

var
  opcao      :char;
  mediaNotas :real;
mediaNotas := CalculaMedia(); //a função é executada, retorna um valor e depois será atribuído a variável
VerificaAprovacao(mediaNotas); //aqui normal: invoca a procedimento passando por parâmetro a variável

Obs. 1: essa variável mediaNotas não é a mesma mediaNotas que está dentro da function. São variáveis distintas. Apenas deixei com o mesmo nome propositalmente para demonstrar que pode. Uma é global e outra local. Como estão com o mesmo nome, lá na função o Pascal vai utilizar a "mais próxima", que no caso é a local.

 

Obs. 2: de fato as variáveis não precisam ter o mesmo nome, como citado, apenas utilizei para demonstrar que pode. Poderia ser assim:

media := CalculaMedia();
VerificaAprovacao(media);

Dá na mesma. Apenas acharia interessante ser igual, pois elas, para o nossa abstração do contexto, representam a mesma coisa, logo faria sentido ter a mesma nomenclatura.

 

 

 

4#

Só para ficar claro: um procedure e function são basicamente a mesma coisa. A diferença nelas está em que a function "além de ser como uma procedure", também sempre retornará algo em si mesma.

 

 

***

 

Por aí vai.

 

Qualquer dúvida é só perguntar.

 

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas

Program teste1 ;
var
not1, not2, not3, not4 : real;
opcao : char;
retorno : real;
procedure medialuno( media : real);
begin
  if(media >= 6.0) then
  writeln('Você foi aprovado!')
  else
  writeln('Sentimos muito mas você foi reprovado');
end;
function calcmedia (n1, n2, n3, n4 : real) : real;
var
med: real;
retorno1 : real;
begin
  writeln('ENTRE COM A PRIMEIRA NOTA');
  readln(n1);
  writeln('ENTRE COM A SEGUNDA NOTA');
  readln(n2);
  writeln('ENTRE COM A TERCEIRA NOTA');
  readln(n3);
  writeln('ENTRE COM A QUARTA NOTA');
  readln(n4);
  med:=(n1+n2+n3+n4)/4;
  writeln('A média do aluno é:',med);
  calcmedia:=(med);
end;
Begin
  repeat
    retorno := calcmedia (not1, not2, not3, not4);
    medialuno(retorno);
    writeln('Deseja realizar outro calculo de media?(S/N)');
    readln(opcao);
  until(opcao = 'N') or (opcao = 'n');
End.

Fiz algumas alterações e ficou assim agora, só gostaria de saber como deixar com menos zeros na resposta final

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou analisando seu código... já já respondo.

adicionado 14 minutos depois

@odair020, uma dica bacana. Releia o enunciado e veja se seu código está seguindo TODAS as orientações.

 

Veja, o que está descrito lá é chamado de "enunciado". Isso é como um "contrato entre você, o Programador, e um cliente". Você deve seguir exatamente o que está sendo pedido. Sacou?

 

 

Vamos analisar os pontos que sugeri:

 

21 horas atrás, Simon Viegas disse:

1#

Prefira nomenclaturas mais objetivas para o métodos. Ex.: CalculaMedia() e VerificaAprovacao()

 

🆗 Você ainda deixou os nomes dos métodos estranhos. Eu ainda acho que deveria usar nomenclaturas melhores, mas tudo bem.

 

 

 

***

 

21 horas atrás, Simon Viegas disse:

2#

Seguindo o enunciado, essa function que calcula a nota NÃO receberá parâmetros. Todas as variáveis necessárias serão locais mesmo. As notas não precisam ser declaradas como globais.

 

o recomendado é assim: todas as variáveis que o método utilizar, OU vem pelo parâmetro, OU são declaradas localmente (inclui ambos, é claro. Assim como podem não utilizar variáveis...), ou seja, NÃO* é interessante utilizar variáveis globais dentro das funções.

 


De global basicamente seria:


var
  opcao :char;

 

📛 Aqui está errado! A function NÃO RECEBE PARÂMETROS. As variáveis que vai utilizar devem ser declaradas dentro da função (variáveis locais).

 

Lembre-se de remover essa variáveis lá da var global, pois não vão ser mais necessárias.

 

 

 

***

 

21 horas atrás, Simon Viegas disse:

3#

Para retornar o valor da function, usa-se a própria funcion.

 

🆗 Agora está certo. A própria função recebe o valor.

📛 Mas ainda está errando por ter deixado a variável retorno1. Simplesmente apague essa variável.

📛 Está faltando imprimir as 4 notas. Isso é exigido pelo enunciado.

 

 

 

***

 

Corrige aí e posta o novo código.

 

No aguardo.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas Simon tentei fazer as alterações porém deu erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o código e onde está com erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!