Tablice
W bibliotece znajduj± siê szafki z kartotekami skatalogowanych ksi±¿ek. W ka¿dej szafce s± takie kartoteki. Tych szafek jest do¶æ du¿o. S± poustawiane obok siebie. Ka¿da szuflada ma swój numer, czy literê. S± w nich tylko kartoteki. Je¶li biblioteka jest du¿a, rega³ów z kartotekami mo¿e byæ wiele.
Tablice s± podobne do szuflad bibliotecznych. Tablica sk³ada siê z wielu 'schowków', poustawianych obok siebie w pamiêci. W tablicy znajduj± siê tylko zmienne i to zmienne jednego typu. Ka¿dy element tablicy ma swój indeks. Tablice mog± byæ wielowymiarowe, nie tylko w poziomie, ale i w pionie a nawet wg³±b.
Do czego s³u¿±? Przechowuj± grupy danych. Mog± zawieraæ listê liczb. Mog± zawieraæ kartoteki pracowników -ich nazwiska, imiona, b±d¼ ca³e rekordy z danymi.
Aby je zadeklarowaæ u¿ywa siê w sekcji var wyra¿enia: Array[{min}..{max}] of {...}
var tablica : Array[0..30] of Integer;
tablica_imion : Array[1..10] of string;
tab2 : Array[0..30, 1..3] of Integer; {tablica dwuwymiarowa}
A jak siê odwo³ywaæ w programie do tablic?
Tablica[1] := 1; {zwyk³e podstawienie}
for i:= 0 to 30 do {w pêtli...}
tablica[i] := 0; {wyzerowanie ca³ej tablicy}
tab2[i][1] := x; {dwuwymiarowa}
tab2[i, 1] := x; {drugi sposób}
{*****************************************}
{wczytanie i wy¶wietlenie 10 imion w pêtli}
for i:= 1 to 10 do {w pêtli...}
begin
Write('Podaj ', i, ' imiê: ');
ReadLn(tablica_imion[i]);
end;
WriteLn('Wpisane imiona:');
for i:= 1 to 10 do {w pêtli...}
begin
Write(tablica_imion[i]);
end;
£atwo zauwa¿yæ, ¿e do tablicy mo¿na siê odwo³ywaæ za pomoc± indeksu. I w³a¶ciwie o to chodzi w u¿ywaniu tablic. Pozwalaj± znacznie zaoszczêdziæ czasoch³onne wklepywanie kodu.
Przypu¶æmy, ¿e w tablicy liczb Integer, o nazwie tablica chcesz znale¼æ warto¶æ najwiêksz±. Jak to zrobiæ? Trzeba przej¶æ przez ca³± tablicê i sprawdziæ, czy kolejny element jest wiêkszy nich dotychczas najwiêkszy. Uwaga, na pocz±tku elementem dotychczas najwiêkszym musi byæ ten, który jest pierwszym elementem tablicy, nie 0. Dlaczego? Poniewa¿ gdy tablica bêdzie zawiera³a jedynie liczby ujemne, program uwa¿a³by, ¿e najwiêksz± dotychczasow± warto¶ci± jest 0, a tak nie bêdzie.
var tablica : Array[0..30] of Integer;
i, max : Integer;
begin
{tutaj mo¿na wype³niæ tablicê jakimi¶ warto¶ciami, np. losowymi}
Randomize; {Inicjowanie losowania}
for i:= 0 to 30 do {w pêtli...}
tablica[i] := Random(100) - Random(100); {losowanie w zakresie -99..+99}
max := tablica[0];
for i:= 1 to 30 do {w pêtli...}
begin
{Je¶li najwiêkszy dotychczas element jest mniejszy ni¿ badany...}
if max < tablica[i] then
max := tablica[i];{zmieñ dotychczas najwiêkszy}
end;
{tu mo¿esz wy¶wietliæ max}
WriteLn('Max: ', max);
end.