Pole, náhodná čísla a třídění
Typ pole

Type
Pole = Array[min..max]of typ;

Platí, že min a max jsou celá čísla (nebo písmena v apostrofech: 'A'..'Z'). Typ je libovolný typ (Integer, Real...).

Pole1 : Array[0..100] of Integer; {Sto integerů}
Pole2 : Array['A'..'z'] of Char; {Jednoduchý kód}
Pole3 : Array[1..10,1..10]of Byte; {Pole 10×10 bajtů}

S polem se pracuje pomocí indexu:

Pole1[10]:= 11;
Pole3[4,7]:= 26;
For Znak:='A' to 'z' do Pole[Znak]:= Znak;

Náhodná čísla

Pokud potřebujeme vytvořit „náhodné" číslo, použijeme funkci Randommax );

Tato funkce vrátí nějaké celé číslo mezi nulou a číslem max.

WriteLn( Random( 1000 ));

vypíše některé číslo od nuly do 999 včetně. Nebude to 1000. Protože však Pascal čísla „tahá z klobouku” podle nějakého klíče, je radno čísla trochu promíchat příkazem Randomize. Teprve potom jsou „náhodná” čísla skutečně nepředvídatelná. Kdo nevěří ať zkusí následující:

Program Náhoda;
Var
i: Integer;
Begin
For i:=1 to 5 do WriteLn( i, ': ', Random( 10 ));
End.

Tenhle program stačí spustit dvakrát–třikrát a je jasné, že čísla jsou pokaždé stejná. Ale pokud ho upravíme:

Begin
Randomize; ....

je hned všechno jinak.

Příklad:
Program Losuj_a_seřaď;
{    Vylosuje čísla a seřadí je dle velikosti.  }

 Uses Crt;

 Const
  MAX = 99;

 Var
  Pole: Array[0..MAX]of Integer;

 Procedure Losuj;       { Vylosuje čísla }
  Var i: Integer;
  Begin
   For i:=0 to MAX do
    Pole[i]:= Random( 100 );
  End;

 Procedure Vypis;       { Vypíše pole na obrazovku }
  Var i: Integer;
  Begin
   For i:=0 to MAX do Begin
    GotoXY( 1+(i mod 10)*4, (i div 10)+1 );
    WriteLn( Pole[i]:2 );
   end;
  End;

 Procedure Serad; 	{ Bubble Sort              }
  Var                   { (to je třídění,          }
   i, j: Integer;       { žvýkačka je Bubble Gum!) }
   Pom : Integer;
  Begin
   For i:=0 to MAX do
    For j:= i+1 to MAX do
     If Pole[i]>Pole[j] then Begin
      Pom:= Pole[i]; Pole[i]:= Pole[j]; Pole[j]:= Pom;
     end;
  End;

 Begin
  ClrScr;
  Losuj;
  Vypis;
  WriteLn('Stiskni [Enter]'); ReadLn;
  Serad;
  Vypis;
  WriteLn('Stiskni [Enter]'); Readln;
 End.