Jump to content

Duvidas de Iniciante, Média de 6 numeros


speedofthesea

Recommended Posts

speedofthesea

Boas , recentemente tenho estado a ler umas coisas, a ver se gostava de programar e decidi aprender pascal.

Já exprimentei programar em BASIC e gostei e por isso decidi avançar para pascal já que, segundo li por ai é uma linguagem que é ensinada nas universidades como introdução á programação.

Isto tudo porque queria ver se é programação(Eng Informática) que quero seguir.

Ora, comecei por ler alguns pdf e assim para alem de alguns exercícios de algoritmos e dai fiz o meu primeiro programa em pascal.

A media de 6 numeros.

Program media;
Var
N1,N2,N3,N4,N5,N6 :Real;
M : Real;
Begin
     Writeln('Escreva o primeiro valor');
     Readln(N1);
     Writeln('Escreva o segundo valor');
     Readln(N2);
     Writeln('Escreva o terceiro valor');
     Readln(N3);
     Writeln('Escreva o quarto valor');
     Readln(N4);
     Writeln('Escreva o quinto valor');
     Readln(N5);
     Writeln('Escreva o sexto valor');
     Readln(N6);
     M:=(N1+N2+N3+N4+N5+N6)/6;
     Writeln('A media e de:');
     Writeln(M);
     Readln();
End.

A minha duvida é como torno o resultado em numeros decimais (3.5) em vez de notação cientifica.

Obrigado.

Link to post
Share on other sites
thoga31

O método indicado é o correcto.

Para arredondar, precisas de indicar dois parâmetros: o espaço mínimo ocupado e o arredondamento.

valor:espaço_mínimo:arredondamento

Por exemplo,

writeln(M:10:1);

Vai devolver algo como -------3.8, sendo os "-" espaços. Ou seja, o valor M ocupa no mínimo 10 "espaços", os não necessários ficam ao início como espaços em branco, e o arredondamento é de 1 casa decimal.

Contudo, se não quiseres espaço mínimo, defines esse parâmetro a zero, isto porque, no caso de o espaço definido não for suficiente para albergar o valor numérico resultante, o programa toma a "liberdade" de "criar" espaços "extra".

Por isso, uma formatação básica para arredondamento é:

valor:0:arredondamento

No teu caso:

writeln(M:0:1);

O output resultante será algo como, por exemplo, 3.6 (como zero espaços não chegam para albergar o valor numérico M, o programa "criou" os espaços "extra" necessários - três).

Espero ter ajudado. :D

Cumpz, Thoga31.

P.S. - és iniciante? se quiseres um tutorial do P@P: http://wiki.portugal-a-programar.org/pascal:tutorial_2010:indice

sobre o assunto que tratei agora: http://wiki.portugal-a-programar.org/pascal:tutorial_2010:parte_1#arredondamentos

:thumbsup:

Knowledge is free!

Link to post
Share on other sites
thoga31

Usando um for loop dava para diminuir o número de linhas consideravelmente.

Ok, dava. Mas para um iniciante, fazer o que ele fez sem um ciclo for é normal. :D

Já agora, a solução com ciclo for, deixo-a de livre vontade: :thumbsup:

program media;
uses crt;
var n : array[1..6] of real;
    media : real;
    i : 0..6;

begin
     for i:=1 to 6 do begin
         write('Escreva ',i,'o valor: ');
         readln(n[i]);
         media:=media+n[i];
     end;
     media:=media/6;
     writeln;
     writeln('A media e: ',media:0:1);
     readln;
end.

Knowledge is free!

Link to post
Share on other sites
nunopicado

         media+=n[i];

Thoga, em que compilador é que andas a trabalhar pá?

Ou eu ando muito desactualizado, ou então andamos os dois a beber uns canecos a mais... :thumbsup:

Não seria mais:

         inc(media,n[i]);

Há algum de pascal que permita usar a expressão '+='?

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to post
Share on other sites
thoga31

Thoga, em que compilador é que andas a trabalhar pá?

Ou eu ando muito desactualizado, ou então andamos os dois a beber uns canecos a mais... :D

Não seria mais:

         inc(media,n[i]);

Há algum de pascal que permita usar a expressão '+='?

Eu utilizo o Dev-Pascal. Em Compiler Options > Pascal compiler, tens uma que diz assim:

Support operators like C (*=, +=, ...)

Se escolheres o Free Pascal como Current Compiler, nem será necessária essa opção seleccionada! :D

Eu nem conhecia o procedimento inc(). :thumbsup:

Cumpz. :thumbsup:

EDIT:

vou editar o código para o colocar segundo o "modelo tradicional": media := media+n; :D

Knowledge is free!

Link to post
Share on other sites
nunopicado

LOLOL

Eu bem me parecia que aquilo vinha do C... Não sabia que o DEV tinha essa possibilidade.  :thumbsup:

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to post
Share on other sites
thoga31

LOLOL

Eu bem me parecia que aquilo vinha do C... Não sabia que o DEV tinha essa possibilidade.  :thumbsup:

Por algumas razões adoro o Dev ao invés de outros. Além de operadores tipo C, pode-se alterar a variável de controlo dentro de um ciclo FOR, coisa que o Free Pascal começa logo a apontar... :D

Knowledge is free!

Link to post
Share on other sites
nunopicado

Pessoalmente não gosto do Dev, mas não há duvida que essas características são intessantes...

Mas, a nível de programação, quem me tinha o delphi... lol

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to post
Share on other sites
thoga31

Mas, a nível de programação, quem me tinha o delphi... lol

Lol, estou curioso quanto ao delphi, mas nunca o instalei. Também é pago :thumbsup: , e eu não sou a favor da pirataria. :nono:

Knowledge is free!

Link to post
Share on other sites
thoga31

Boas,

Curiosamente, eu também nunca tinha ouvido falar no inc(). Isso é mesmo o quê ? Incrementar !?

Yah! De certeza que é inspirado no inc do assembly.

Knowledge is free!

Link to post
Share on other sites
nunopicado

Lol, estou curioso quanto ao delphi, mas nunca o instalei. Também é pago :thumbsup: , e eu não sou a favor da pirataria. :nono:

Procura o Delphi 7 PE.

É gratuito, e embora já acuse um pouco os anos e seja uma versão limitada a nível de componentes já incluidos, continua a ser a versão do Delphi mais usada até hoje...

É muito bom!

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to post
Share on other sites
nunopicado

Boas,

Curiosamente, eu também nunca tinha ouvido falar no inc(). Isso é mesmo o quê ? Incrementar !?

Sim. Há dois procedimentos:

INC

inc(x);  // incrementa a variável X em 1, ou seja, x:=x+1;
inc(x,7); // incrementa a variável X com o valor passado no segundo parâmetro, neste caso, x:=x+7;

e o DEC, que é exactamente igual no uso, mas em vez de + é -

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to post
Share on other sites
speedofthesea

Surgiu-me duas duvidas se me poderem esclarecer.

1. é possivel usar dois ou mais procedure no mesmo programa , correcto?

2. Queria tambem saber o porque do user thoga usar :

 readln(n[i]);
         media:=media+n[i];

Mais própriamente o porque do n[1].

Cumps

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.