Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

BernardoGodinho

Início do Pascal

Mensagens Recomendadas

BernardoGodinho    0
BernardoGodinho

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

Editado por nunopicado
GeShi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1090
nunopicado

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! :cheesygrin:


"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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
thoga31    594
thoga31

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!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.