Zasady deklarowania i użytkowania zmiennych typu tablicowego.

Od tej lekcji przechodzimy do bardziej skomplikowanych typów zmiennych. Zaczniemy od tablic. Z punktu widzenia użytkownika tablica jest po prostu ciągiem jednolitych "szufladek" przechowujących (to ważne) dane tego samego typu. Każda szufladka (którą w naszym przypadku można z grubsza utożsamiać z kartą katalogową) jest identyfikowana numerem - tzw. indeksem - który musi być typu porządkowego (trudno bowiem wyobrazić sobie element tablicy o numerze półtora). Tablice deklarowane są za pomocą słowa kluczowego array (tablica), zaś składnia deklaracji jest następująca:

nazwa_tablicy : array[indeks_dolny..indeks_górny] of typ;

W nawiasach kwadratowych musisz umieścić dwie stałe określające najmniejszy i największy dopuszczalny indeks tablicy. Pamiętaj, że wartości użyte w deklaracji muszą być znane w momencie kompilacji programu (najczęściej podawane są jawnie, ewentualnie w postaci prostych wyrażeń dopuszczalnych w definicjach stałych). Pascal wymaga określenia rozmiaru tablicy w chwili kompilacji i nie dopuszcza użycia tzw. tablic dynamicznych (o rozmiarze określanym podczas wykonania). Oba indeksy mogą mieć dowolne wartości, ale muszą być tego samego typu porządkowego, a górny indeks nie może być mniejszy od dolnego. Zwykle tablice indeksuje się od 1, jak np. tablicę autorów książek:

var
Autorzy : array[1..1000] of string[30];

ale całkowicie legalne są również deklaracje:

var
Sinusy : array[0..359] of real;
Odchylka : array[-10..10] of real;

Nie dość tego, tablice wcale nie muszą być indeksowane liczbami. Jeśli np. chcesz zliczyć częstość występowania w tekście poszczególnych znaków alfabetu, możesz użyć efektownej konstrukcji.

var
Liczniki : array['a'..'z'] of word;

Przykłady tablic z opisem:

TYPE
TMACIERZ = ARRAY [ 1..10] OF INTEGER;

TMACIERZ jest typem tablicowym o 10 komórkach, które mogą przechowywać 10 liczb całkowitych

TYPE
TWEKTOR = ARRAY [1..200 ] OF REAL;

TWEKTOR jest typem tablicowym o wymiarach 1 x 200, który może przechowywać 200 liczb rzeczywistych. Jeśli tablica jest jednowymiarowa, to w matematyce nazywamy ją wektorem.

TYPE
TEKRAN = ARRAY [1..80 , 1..25 ] OF CHAR;

TEKRAN jest typem tablicowym o wymiarach 80 x 25, który może przechowywać 2000 znaków

B : ARRAY [ 1..6, 1..9 ] OF CHAR;

W języku Pascal macierz B jest tablicą dwuwymiarową o indeksach 1..6 (czyt. od 1 do 6) oraz 1..9 (czyt. od 1 do 9), zawiera 6 wierszy i 9 kolumn. Każdy element tablicy B przechowuje wartość typu znakowego CHAR (litery te są znakami). Aby wyświetlić zawartość elementu tablicy B z 5 wiersza i 7 kolumny, należy posłużyć się instrukcją write( B [ 5 , 7 ] ). Natomiast żeby wstawić jakiś znak do tablicy B w 5 wierszu i 7 kolumnie, użyjemy instrukcji B [ 5 , 7 ] := '@'.

var
TYTUL : ARRAY [1..750] of STRING[30];

Tablica TYTUL jest tablicą jednowymiarową o indeksach 1..750 (czyt. od 1 do 750), czyli zawiera 750 komórek w jednym wierszu. Każdy element tablicy przechowuje wartość typu String o długości 30 znaków.

Wyobraźmy sobie taką macierz, która przechowuje liczby rzeczywiste oraz ma 4 wiersze i 2 kolumny. Macierz tą oznaczamy literą C.

Postać tablicy C w języku Pascal:

C : ARRAY [ 1..4, 1..2 ] OF REAL;

Tablica C jest tablicą dwuwymiarową o indeksach 1..4 (czyt. od 1 do 4) oraz 1..2 (czyt. od 1 do 2), czyli zawiera 4 wiersze i 2 kolumny. Każdy element tablicy C przechowuje wartość typu rzeczywistego REAL.

Aby wyświetlić liczbę z tablicy C (np. z 4 wiersza i 2 kolumny), należy posłużyć się instrukcją write( C [ 4, 2] ). Natomiast żeby wstawić liczbę do tablicy C w 4 wierszu i 2 kolumnie, użyjemy instrukcji C [ 4 , 2 ] := 1.20.

Uwaga: w językach programowania zamiast przecinka oddzielającego część całkowitą od ułamkowej (liczba 1,20) stosuje się kropkę (1.20). W arkuszu kalkulacyjnym (Excel w wersji polskiej) stosuje się przecinek. Warto o tym pamiętać, żeby uniknąć błędów podczas tworzenia programów w językach Pascal i innych.

Poruszanie się po tablicach.

PROGRAM zeruj;    {program zerujący tablicę 4 wyrazową}
VAR
TABLICA : ARRAY [1..4 ] OF INTEGER;
    {deklaracja tablicy typu całkowitego o zakresie od 1 do 4}
i : INTEGER;       {deklaracja zmiennej I typu całkowitego do obsługi pętli i indeksów komórek}

BEGIN
   FOR i := 1 TO 4 DO TABLICA[i] := 0;
    {pętla for przechodząca po poszczególnych komórkach i nadająca wartość 0}
END.

Do poruszania się po tablicach najczęściej wykorzystuje się pętle For, która służy do przejścia po wszystkich komórkach tabeli. To takiej pętli wstawiamy polecenie jakie ma wykonać program. Jeżeli tych poleceń jest więcej to zamykamy je w bloku Begin - End;. Zmienna i przyjmuje kolejne wartość z zakresu od 1 do 4. Następnie wywołujemy kolejne komórki TABLICA[i] i przypisujemy im wartość := 0 (zero).

PROGRAM zeruj;

VAR
TABLICA : ARRAY [1..4 , 1..2 ] OF INTEGER;
i , j : INTEGER;

BEGIN

   FOR i := 1 TO 4 DO
   FOR j := 1 TO 2 DO TABLICA[ i , j ] := 0;

END.

Do poruszania się po tablicach dwuwymiarowych również służą zagnieżdżone pętle For w pętli. W tym programie zmienna i odpowiada za ilość wierszy a zmienna j za ilość kolumn. Tak samo jak w przypadku tablic jednowymiarowych tak samo i tu po drugiej pętli umieszczamy polecenia, które program powinien wykonać. Jeżeli jest ich więcej to bierzemy je wszystkie w blok Begin - End.

Zapamiętaj:

Zadania do wykonania.

Zadanie 1.

Napisz program wypełniający tablicę jednowymiarową 10-elementową liczbami całkowitymi, Na końcu programu wypisz zawartość tablicy.

Zadanie 2.

Napisz program wczytujący do tablicy 10 kobiecych imion. Na końcu wypisz imiona w odwrotnej kolejności.

Zadanie 3.

Napisz program wczytujący do tablicy 10 liczb rzeczywistych. Na końcu programu proszę wypisać sumę wszystkich elementów tablicy.

Zadanie 4.

Napisz program wypełniający tablicę dwuwymiarową 5x3. Na końcu podaj sumę wszystkich elementów z tablicy.

Zadane 5.

Napisz program, który wypełni tablicę dwuwymiarową 5x4. Na końcu podaj sumę wszystkich liczb parzystych.


powrót