BernardoGodinho Posted April 29, 2015 at 11:10 PM Report Share #582169 Posted April 29, 2015 at 11:10 PM (edited) 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 April 29, 2015 at 11:19 PM by nunopicado GeShi Link to comment Share on other sites More sharing options...
nunopicado Posted April 29, 2015 at 11:21 PM Report Share #582171 Posted April 29, 2015 at 11:21 PM 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 More sharing options...
thoga31 Posted April 30, 2015 at 12:52 AM Report Share #582176 Posted April 30, 2015 at 12:52 AM 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 More sharing options...
BernardoGodinho Posted May 2, 2015 at 11:24 PM Author Report Share #582339 Posted May 2, 2015 at 11:24 PM Obrigado aos dois, cumprimentos Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now