Št 22 Feb 2007
Pole je premenná, ktorán sa skladá z viacerých premenných rovnekého typu, ale má jedno meno. Vizuálne sa pole piatich prvkov dá predstaviť nasledovne:
/—code pascal
1 hodnota 1
2 hodnota 2
3 hodnota 3
4 hodnota 4
5 hodnota 5
\—
Polia sa deklarujú takmer rovnako, ako ostatné premenné, je treba navbiac zadať počet prvkov, ktoré dané pole má.
/—code pascal
program Polia;
var
a: array[1..5] of Integer;
begin
end.
\—
Ku konkrétnemu prvku pola sa pristupuje “cez hranaté zátvorky”.
/—code pascal
program Polia;
var
a: array[1..5] of Integer;
begin
a[1] := 12;
a[2] := 23;
a[3] := 34;
a[4] := 45;
a[5] := 56;
end.
\—
Je oveľa jednoduchšie potom v cykloch pristupovať k premenným v poli. Napríklad nasledujúci príklad ukazuje, ako načítať 5 hodnôt do pola:
/—code pascal
program Polia;
var
a: array[1..5] of Integer;
i: Integer;
begin
for i := 1 to 5 do
Readln(a[i]);
end.
\—
V poliach sa často vyhľadáva, prípadne sa polia triedia. Na vyhľadávanie sa dá použiť napríklad lineárne vyhľadávanie – postupne sa prechádza pole, kým sa daný prvok nenájde, prípadne v utriedených poliach sa dá použiť efektívnejšie binárne vyhľadávanie – pozriem sa do polovice – je číslo menšie, alebo väčšie a podľa toho postupujem ďalej v tej polovici, kde môže byť. Na triedenie pola existuje viacero postupov, napríklad bubble sort, command and conquer. “Popis triedenia na referaty.sk.”:http://referaty.atlas.sk/ostatne/informatika/1934/pascal—algoritmy-na-triedenie-pola.
=== Triedenie polí .{color:green}===
Niekedy je potrebné utriediť prvky v poli. Dá sa to urobiť napríklad systémom buble-sort. Na triedenie existuje viacero systémov, nie len buble sort. Buble sort presúva veľké čísla na koniec pola.
Nutné su dva cykly, jeden na prechod cez každé číslo v poli, druhý na jeho porovnanie s ostatnými. Ak je číslo vačšie, ako nasledujúce, tak sa vymenia. Je teda potrebná jedna pomocná premenná na túto výmenu.
/—code pascal
program BubleSort;
var
a: array[1..5] of Integer;
i, j, tmp: Integer;
begin
a[1] := 23;
a[2] := 45;
a[3] := 12;
a[4] := 56;
a[5] := 34;
for i := 1 to 4 do
for j := 1 to 4 do
if a[j] > a[j + 1] then begin
tmp := a[j];
a[j] := a[j + 1];
a[j + 1] := tmp;
end;
for i := 1 to 5 do
writeln(a[i]);
readln;
end.
\—
=== Dvojrozmerné polia .{color:green}===
Polia môžu mať aj dva rozmery, nie len jeden. V podstate ide o tabulku a nie len o riadok.
/—code pascal
X 1 2 3
1 1 2 3
2 4 5 6
3 7 8 9
\—
2D polia sa deklarujú nasledovne:
/—code pascal
program Polia2D;
var
a: array [1..3,1..3] of Integer;
begin
end.
\—
Na prístup k prvkom 2D pola sa používajú dve čísla v hranatých zátvorkach. 2D polia samozrejme aj potrebujú dva cykly miesto jedného, napríklad na ich čítanie
/—code pascal
program Polia2D;
var
r, c: Integer;
a: array [1..3,1..3] of Integer;
begin
for r := 1 to 3 do
for c := 1 to 3 do
Readln(a[r,c]);
end.
\—
“Použitý zdroj o Pascale”:http://www.learn-programming.za.net/programming_pascal_learn04.html
Október 2nd, 2009 at 21:32 e
No, zdravím.
To je pekné, škoda, že mne je to nanič. Ja potrebujem buď naplniť pole okamžite pri kompilácii (statické pole), ale to asi v PS nejde.
A neviem príst na spôsob, ako načítať textový súbor s maticou WxH, kde sú čísla treba dať do dvojrozmerného poľa. Ak by si vedel ako na to, poraď.
Díkes
Jano
Október 6th, 2009 at 14:41 e
nuz pri kompilacii pokial sa pamatam sa to v pascale neda,
ale nic nebrani hned za prvym begin-om dat inicializaciu.
a z textoveho suboru neviem, aky by mohol byt problem.
jednym for cyklom by som cital riadky textu zo suboru a druhym by som si z toho riadku bral jednotlive cisla a naplnal nimi to pole.