Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Listeiro 037 em (última atualização em 23/04/2012)   [ 2278 hits ]

Login: Listeiro 037, 190550 pontos

Download:


Descrição

Este programa feito em Pascal preenche um array (vetor) de números inteiros de um intervalo dado (de 1 até VALOR) com valores inteiros aleatórios deste intervalo.

Não sei como está agora, mas Pascal era primeira linguagem de cursos técnicos e universitários ao se ensinar algoritmos no 1º ciclo.

Tinha ganho vida nova através do Object Pascal presente no Delphi. Que ultimamente não tenho visto muita coisa por aí...

Ele consegue ser compilado com gpc (GNU Pascal) e fpc (Free Pascal).

Há uma pequena "gambiarra" no código:

Pelo menos foi assim que consegui fazer funcionar em ambos os compiladores.

$ gpc alea001.pas -o alea001 # para usar gpc

ou

$ fpc alea001.pas # para usar fpc

Ambos os compilados são enormes se comparado com o compilado em C.

A vantagem de se usar gpc é que dá pra usar o gdb (GNU Debugger). Basta colocar a opção "-ggdb" no comando de compilação do gpc.

Há também um debugger próprio do Free Pascal, mas o gdb é mais popular.

Não tenho a menor ideia se funciona em Turbo Pascal, nem garantia no Dev-Pascal :-)


[ Download: alea001.pas ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

Program alea001;

{$ifndef __GPC_RELEASE__} Uses Crt; {$endif}   {  <----- Gambiarra para funcionar com "gpc" }

{
   Para testar se não há números repetidos, usar por exemplo:
   alea001 | sort -n --key=2
}

Const
   VALOR = 52;

Var
   vec         : Array [1..VALOR] of Integer;
   i, j, k, n      : Integer;

Begin

   Randomize;

   i := 1;
   n := VALOR;

   While i<=n Do Begin
      vec[i] := -1;
      Inc(i);
   End;

   i := 1; j := 0;

   While i<=n Do Begin

      j := 1 + Random(n);
      k := 1;

      While (k<=i) And (vec[k]<>j) Do Inc(k);

      If k=i+1 Then Begin
         vec[i] := j;
         Inc(i);
      End;

   End;

   i := 1;

   While i<=n Do Begin
      WriteLn (i, #9, vec[i]);
      Inc(i);
   End;

   WriteLn;

End.



Scripts recomendados
   Script Linux recomendado Media dos Alunos
   Script Linux recomendado Eleições 2006
   Script Linux recomendado Calculadora básica no Lazarus
   Script Linux recomendado Menu
   Script Linux recomendado Coleta de dados de alunos em Pascal

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.