Czym jest tablica?

Podstawowym założeniem, na jakim opiera się koncepcja tablicy, jest możliwość przechowywania wielu wartości tego samego typu. Przypuśćmy, że chcemy w naszym programie przechowywać wyniki pomiarów temperatury powietrza z ostatnich dwóch tygodni. Pierwsze, co w tej sytuacji przychodzi na myśl, to po prostu zdefiniowanie osobnych zmiennych. A gdybyśmy chcieli ulepszyć nasz program i przechowywać wyniki pobrane o trzech różnych porach dnia? Wtedy potrzebowalibyśmy już zmiennych.

W ten sposób nasz program stawałby się coraz bardziej zagmatwany, a definiowanie kolejnych zmiennych byłoby niepotrzebnie pracochłonne. Natomiast gdybyśmy użyli tablicy, bylibyśmy w stanie zadeklarować dowolną liczbę zmiennych tego samego typu przy pomocy jednej instrukcji. Dodatkowo wykorzystując indeksowanie, moglibyśmy wygodnie je modyfikować.

Aby lepiej zrozumieć tę koncepcję, przeanalizujmy poniższy pseudokod. Załóżmy przy tym, że pierwszy element tablicy ma indeks .

Linia 1. tab otwórz nawias kwadratowy 5 zamknij nawias kwadratowy ← otwórz nawias klamrowy zamknij nawias klamrowy prawy ukośnik prawy ukośnik zadeklarowanie 5 minus elementowej tablicy. Linia 3. tab otwórz nawias kwadratowy 0 zamknij nawias kwadratowy ← 2. Linia 4. tab otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← 3. Linia 5. tab otwórz nawias kwadratowy 2 zamknij nawias kwadratowy ← tab otwórz nawias kwadratowy 0 zamknij nawias kwadratowy plus tab otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 6. tab otwórz nawias kwadratowy 3 zamknij nawias kwadratowy ← 2 asterysk tab otwórz nawias kwadratowy 0 zamknij nawias kwadratowy. Linia 7. tab otwórz nawias kwadratowy 4 zamknij nawias kwadratowy ← tab otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 9. i ← 0. Linia 11. Dopóki i otwórz nawias ostrokątny 5 wykonuj. Linia 12. wypisz otwórz nawias okrągły tab otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły prawy ukośnik prawy ukośnik wypisze 2 3 5 4 3.

Tablica jest zazwyczaj strukturą statyczną i jej rozmiar nie zmienia się w trakcie działania programu, jednak istnieją również warianty dynamiczne. Przy deklaracji statycznej tablicy należy określić, ile elementów ma ona przechowywać, czyli podać jej rozmiar. Aby odwołać się do konkretnego elementu, wykorzystujemy indeksowanie, czyli odwołanie postaci nazwa_tablicy[indeks]. Dzięki temu jesteśmy w stanie w wygodny sposób modyfikować i wykorzystywać zawartość tablicy.

RH03edOb0ukFM
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!

Niestety, tablice nie są w pełni zunifikowane – w zależności od wykorzystywanego języka programowania, do pierwszej komórki tablicy odwołujemy się, stosując indeks bądź . Co za tym idzie, podczas pisania pseudokodu warto zaznaczyć, z jakiego typu indeksowania korzystamy.

Tablica wielowymiarowa

Załóżmy, że chcemy w naszym programie zaimplementować symulację gry w szachy. Plansza do gry jest kwadratem zbudowanym z  pól, po których mogą poruszać się figury. Do przechowywania informacji o rodzaju figury i jej pozycji na szachownicy moglibyśmy wykorzystywać więc -elementową tablicę jednowymiarową, lecz indeksowanie byłoby tu dosyć problematyczne.

O wiele lepszym pomysłem w takiej sytuacji będzie użycie tablicy dwuwymiarowej. Jej zadeklarowanie jest równie proste, co w przypadku jednego wymiaru. Spójrzmy na poniższy przykład:

Linia 1. tab otwórz nawias kwadratowy 2 zamknij nawias kwadratowy otwórz nawias kwadratowy 3 zamknij nawias kwadratowy ← otwórz nawias klamrowy zamknij nawias klamrowy prawy ukośnik prawy ukośnik zadeklarowanie tablicy rozmiaru 2x3. Linia 2. i ← 0. Linia 4. Dopóki i otwórz nawias ostrokątny 2 wykonuj. Linia 5. j ← 0. Linia 7. Dopóki j otwórz nawias ostrokątny 3 wykonuj. Linia 8. tab otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy ← i plus j. Linia 9. wypisz otwórz nawias okrągły tab otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły. Linia 10. j ← j plus 1. Linia 12. wypisz otwórz nawias okrągły cudzysłów lewy ukośnik n cudzysłów zamknij nawias okrągły. Linia 13. i ← i plus 1. Linia 15. prawy ukośnik prawy ukośnik Nasz program wypisze dwukropek. Linia 16. prawy ukośnik prawy ukośnik 0 1 2. Linia 17. prawy ukośnik prawy ukośnik 1 2 3.

Aby odwołać się do konkretnej wartości, wykorzystujemy następujący zapis: nazwa_tablicy[indeks_wiersza][indeks_kolumny].

RyoHN4gQR3q4p
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Ciekawostka

Aby zadeklarować tablicę o dowolnej liczbie wymiarów wystarczy dodać odpowiednią liczbę nawiasów. Np. za zadeklarowanie tablicy czterowymiarowej w pseudokodzie odpowiadałaby instrukcja: tab[3][3][4][4]  {}.

Przykładowe zastosowania tablic

Tablice są bardzo uniwersalną strukturą danych, dzięki czemu mogą być wykorzystywane na różne sposoby. Jednym z takich zastosowań jest reprezentacja tekstu w postaci tablicy znaków. Można też za pomocą tablicy dwuwymiarowej reprezentować połączenia między wierzchołkami grafu. Nazywamy ją macierzą sąsiedztwamacierz sąsiedztwa grafumacierzą sąsiedztwa.

RwkKregcyVia4
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Poza tym tablice nie ograniczają się do przechowywania podstawowych typów danych takich jak liczby całkowite lub zmiennoprzecinkowe. Możemy również utworzyć tablicę zawierającą struktury albo chociażby listy. Mamy dużą dowolność.

Słownik

macierz sąsiedztwa grafu
macierz sąsiedztwa grafu

dwuwymiarowa tablica kwadratowa, w której wartość przechowywana w wierszu i oraz kolumnie j oznacza liczbę połączeń w grafie wychodzących z wierzchołka i do wierzchołka j