Zrozumienie i wdrażanie typów danych macierzy w Delphi

Tablice pozwalają nam odwoływać się do szeregu zmiennych o tej samej nazwie i używać liczby (indeksu) do wywoływania poszczególnych elementów w tej serii. Tablice mają zarówno górną, jak i dolną granicę, a elementy tablicy są przyległe w tych granicach.

Elementy tablicy są wartościami tego samego typu (ciąg, liczba całkowita, rekord, obiekt niestandardowy).

W Delphi istnieją dwa typy tablic: tablica o stałym rozmiarze, która zawsze ma ten sam rozmiar - tablica statyczna - i tablica dynamiczna, której rozmiar może się zmieniać w czasie wykonywania.

Tablice statyczne

Załóżmy, że piszemy program, który pozwala użytkownikowi wprowadzać pewne wartości (np. Liczbę spotkań) na początku każdego dnia. Chcielibyśmy przechowywać informacje na liście. Możemy nazwać tę listę Spotkania, a każdy numer może być zapisany jako Spotkania [1], Spotkania [2] itd.

Aby skorzystać z listy, musimy ją najpierw zadeklarować. Na przykład:

 var Spotkania: tablica [0..6] Integer; 

deklaruje zmienną o nazwie Spotkania, która zawiera jednowymiarową tablicę (wektor) z 7 wartości całkowitych. Biorąc pod uwagę tę deklarację, Nominacje [3] oznaczają czwartą liczbę całkowitą w Nominacjach. Liczba w nawiasach nazywana jest indeksem.

instagram viewer

Jeśli utworzymy tablica statyczna ale nie przypisuj wartości do wszystkich jego elementów, nieużywane elementy zawierają losowe dane; są jak niezainicjowane zmienne. Poniższego kodu można użyć do ustawienia wszystkich elementów w tablicy Spotkań na 0.

 dla k: = 0 do 6 do Spotkania [k]: = 0; 

Czasami musimy śledzić powiązane informacje w tablicy. Na przykład, aby śledzić każdy piksel na ekranie komputera, należy odwołać się do jego współrzędnych X i Y za pomocą znaku wielowymiarowy tablica do przechowywania wartości.

Dzięki Delphi możemy deklarować tablice o wielu wymiarach. Na przykład poniższa instrukcja deklaruje dwuwymiarową tablicę 7 na 24:

 var DayHour: array [1..7, 1..24] Real; 

Aby obliczyć liczbę elementów w tablicy wielowymiarowej, należy pomnożyć liczbę elementów w każdym indeksie. Deklarowana powyżej zmienna DayHour odkłada na bok 168 (7 * 24) elementów w 7 wierszach i 24 kolumnach. Aby pobrać wartość z komórki w trzecim wierszu i siódmej kolumnie, użylibyśmy: DayHour [3,7] lub DayHour [3] [7]. Poniższego kodu można użyć do ustawienia wszystkich elementów w tablicy DayHour na 0.

 dla i: = 1 do 7 do
dla j: = 1 do 24 do
DayHour [i, j]: = 0;

Dynamiczne tablice

Możesz nie wiedzieć dokładnie, jak duża jest tablica. Możesz chcieć mieć możliwość zmiana rozmiaru tablicy w czasie wykonywania. Tablica dynamiczna deklaruje swój typ, ale nie rozmiar. Rzeczywisty rozmiar tablicy dynamicznej można zmienić w czasie wykonywania za pomocą SetLength procedura.

 var Studenci: tablica ciągów; 

tworzy jednowymiarowy dynamiczny układ ciągów. Deklaracja nie przydziela pamięci dla Studentów. Aby utworzyć tablicę w pamięci, wywołujemy procedurę SetLength. Na przykład, biorąc pod uwagę powyższą deklarację,

 SetLength (studenci, 14); 

przydziela tablicę 14 ciągów, indeksowanych od 0 do 13. Tablice dynamiczne są zawsze indeksowane liczbami całkowitymi, zawsze zaczynając od 0 do jednego mniej niż ich rozmiar w elementach.

Aby utworzyć dwuwymiarową tablicę dynamiczną, użyj następującego kodu:

 var Matrix: tablica tablicy Double;
zaczynać
SetLength (Matrix, 10, 20)
koniec;

która przydziela miejsce na dwuwymiarową tablicę podwójnych wartości zmiennoprzecinkowych 10 na 20.

Aby usunąć przestrzeń pamięci dynamicznej tablicy, przypisz zero zmiennej zmiennej tablicowej, np .:

 Matryca: = zero; 

Bardzo często twój program nie wie w czasie kompilacji, ile elementów będzie potrzebnych; liczba ta nie będzie znana przed uruchomieniem. Dzięki tablicom dynamicznym możesz przydzielić tylko tyle miejsca, ile jest wymagane w danym momencie. Innymi słowy, rozmiar tablic dynamicznych można zmieniać w czasie wykonywania, co jest jedną z kluczowych zalet tablic dynamicznych.

Następny przykład tworzy tablicę wartości całkowitych, a następnie wywołuje funkcję Kopiuj, aby zmienić rozmiar tablicy.

 var
Wektor: tablica liczb całkowitych;
k: liczba całkowita;
zaczynać
SetLength (Vector, 10);
dla k: = Niska (Vector) do Wysoka (Vector) do
Wektor [k]: = i * 10;
...
// teraz potrzebujemy więcej miejsca
SetLength (Vector, 20);
// tutaj tablica Vector może pomieścić do 20 elementów // (ma już ich 10) koniec;

Funkcja SetLength tworzy większą (lub mniejszą) tablicę i kopiuje istniejące wartości do nowa tablica. Funkcje Niski i Wysoki zapewniają dostęp do każdego elementu tablicy bez konieczności sprawdzania w kodzie prawidłowych wartości indeksu dolnego i górnego.