Jump to content

Início do Pascal


BernardoGodinho
 Share

Recommended Posts

Ola a todos, sempre tive curiosidade em relação á programação, e á cerca de uma semana comecei a tentar aprender Pascal, vi uns vídeos no youtube e pesquisei no google ate que encontrei este forum, percebi que é um forum bem ativo pelas publicações e pelas respostas das mesmas. Até hoje fiz dois "programas" que acho que sejam mais complexos (para mim) um que faz as tabuadas ate ao numero que quiseres mos:

var
n1,n2:integer;
i:integer;

begin
writeln ('TABUADAS INFINITAS') ;
writeln('digite o 1º valor');
readln(n1);
writeln ('ate que valor quer a tabuada vá?');
readln(n2);


while i < n2+1 do begin
writeln(n1, 'X', i,'=',n1*i);

i:= i+1;

end;
end.

e outro que faz a media dos alunos

program semnome;

var
nota: array [1..100] of real;
i:integer;
total,media,disc:real;
nome:string;
begin

i := 1;
writeln('escreva seu nome');
readln(nome);
writeln('quantas disciplinas tem?');
readln(disc);
while i< disc+1 do begin
writeln('digite a ',i,'ª nota');
readln(nota[i]);
total:=total+nota[i];
i:= i+1;
end;
ClrScr;

media:= total/disc;
if media >= 10 then begin
writeln('o aluno/a ',nome,' tem media de ',media,' e foi aprovado.');
end else begin
writeln('o aluno/a ',nome,' tem media de ',media,' e foi reprovado.');
end;
end.

e a minha duvida se dá para declarar o array de 1 ate infinito? ou outro comando que possa fazer o mesmo efeito

Edited by nunopicado
GeShi
Link to comment
Share on other sites

Até ao infinito, tecnicamente, não é possível...

Se for para lhe dares limites, tens de os dar mesmo.

Podes é usar arrays dinâmicos, ou seja, não defines limites nenhuns na declaração, e vais definindo dentro do programa conforma o necessário.

var
  Nota: Array of Real;

begin
  SetLength(Arr,0); // O array começa sem posição alguma
  . 
  .
  .
  Setlength(Arr,Length(Arr)+1); // Adiciona uma casa - neste momento, o array passa a ter 1 posição
  . 
  .
  .
  Setlength(Arr,Length(Arr)+1); // Adiciona uma casa - neste momento, o array passa a ter 2 posições
  . 
  .
  .
  Setlength(Arr,Length(Arr)+1); // Adiciona uma casa - neste momento, o array passa a ter 3 posições

E por aí fora, enquanto fores precisando de mais posições, até que esgotes a memória da máquina.

Nota que podes também reduzir-lhe o tamanho, mas nesse caso, perderm-se os valores das casas eliminadas (claro), pelo que deves ter cuidado

Agora, eu diria que precisas, mais do que mexer com arrays dinâmicos, aprender a trabalhar com ficheiros.

Não te adianta ter um array com infinitas posições se quando fechas o programa, todos os dados se perdem. O ideal é ires gravando num ficheiro, e ires usando esse ficheiro como suporte de dados, em vez do array.

A propósito...

Se tens interesse pela programação, aprende antes de mais a indentar o código...

Vais agradecer no futuro (próximo), quando tiveres que ler o teu próprio código à procura de um erro.

Quanto a mim, agradeço já, que ler código não indentado até faz chorar o coraçã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 comment
Share on other sites

Queria acrescentar apenas o motivo pelo qual não se pode declarar um array até ao infinito em Pascal. 😉

Quando declaramos uma variável em Pascal, o programa irá reservar espaço em memória quando o programa arranca (ou noutros momentos, mas para efeitos desta conversa vou deixar esse pormenor de parte).

Ora, simplesmente não há espaço para albergar um array infinito. Portanto, é preciso definir os seus limites.

Existem algumas linguagens que permitem arrays infinitos, mas isso deve-se ao facto de essas variáveis não seguirem o mesmo paradigma do Pascal - o qual é imperativo. Essas linguagens fazem tipicamente avaliação de expressões em vez de execução de instruções. Um exemplo é Haskell.

Cumprimentos.

Knowledge is free!

Link to comment
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
 Share

×
×
  • 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.