Tablice w C#

Myślę, że każdy interesujący się programowaniem na początku swojej drogi natrafił na tablice. Jest to zagadnienie całkowicie podstawowe ale bardzo ważne. Same tablice są bardzo przydatne ponieważ umożliwiają nam przechowywanie większej ilości danych pod jedną wspólną nazwą. Tablica więc to taka struktura danych, która składa się z wielu podstawowych zmiennych. I dzięki odpowiedniej składni użytkownik ma możliwość dostępu do danych składowych. 

Wśród zagadnień, które trzeba rozważyć w przypadku tablic to:

  • deklarowanie
  • inicjalizacja
  • wielowymiarowość
  • dostęp do danych przechowywanych w tablicy
  • tablice a pętle

Deklarowanie tablic w C#

Deklaracja polega na podaniu typu przechowywanych danych oraz rozmiaru tablicy. Jeżeli chcemy zadeklarować tablicę dziesięciu liczb typu całkowitego będzie ona wyglądała jak poniżej:

int [] nazwa tablicy = new int[10];

Podobnie będzie dla innych typów, również obiektów takich jak klasa itp.

Inicjalizacja

Ten proces wiąże się z zapełnieniem tablicy danymi. Można to przeprowadzić podczas deklaracji lub później. Poniżej są przykłady deklaracji i inicjalizacji dziesięcioelementowej tablicy liczb całkowitych.

int [] nazwaTablicy = new int[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

lub prościej

int [] nazwaTablicy = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

Inicjalizując i deklarując jednocześnie tablicę nie trzeba podawać jej rozmiaru. Możliwy jest więc również zapis:

int [] nazwaTablicy = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

Nie można natomiast inicjalizować tablicy mniejszą liczbą elementów niż ta podana w nawiasie kwadratowym. Poniższy zapis zakończy się błędem kompilacji.

int [] nazwaTablicy = new int[10] {1, 2, 3, 4, 5};//błąd

Wielowymiarowość

W przypadku tablic wielowymiarowych można mówić o tablicach w których mamy wiele wymiarów naszej tablicy,  czyli taka która będzie np. prostokątna, trójwymiarowa. Można też mówić o tablicy tablic.

Przykład deklaracji tablicy 2-wymiarowej liczb całkowitych

int[,] pole = new int[3, 3];

Przykład inicjalizacji tablicy 2-wymiarowej

int[,] pole = new int[,]
{
{0, 1, 2},
{3, 4, 5},
{6, 7, 8}
};

W przypadku tablicy tablic deklaracja wyglądałaby następująco:

int[][] pole = new int[3][];

i później np.

pole[0] = new int[2];
pole[1] = new int[5];
pole[2] = new int[3];

Co dało by następującą strukturę:

lub wykorzystując deklarację i inicjalizację

int[][] pole = new int[][]
{
new int[] {0, 1},
new int[] {2, 3, 4, 5, 6},
new int[] {7, 8, 9}
};

Co dałoby następującą strukturę:

Dostęp do danych przechowywanych w tablicy.

Dostęp do zawartości tablicy realizujemy przez jej indeks. Tablice indeksujemy od zera. Maksymalny indeks tablicy to więc jej rozmiar minus jeden.  W kodzie programu zapisujemy to jako nazwaTablicy.Length – 1.

I tak dla tablicy

int [] nazwaTablicy = new int[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

element pierwszy to nazwaTablicy[0] i wynosi on 1 a ostatni nazwaTablicy[9] i wynosi on 10.

Tablice a pętle

Pętle, a szczególnie pętla for, są bardzo czeto stosowane do zapełniania, odczytu danych z tablicy. Jeśli będzie to tablica 1-wymiarowa będziemy mieć jedną pętle for, jeśli 2-wymiarowa dwie pętle for itd.

Przykład odczytu danych z tablicy jednowymiarowej z udziałem pętli for:

int [] nazwaTablicy = new int[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

for (int i = 0; i < nazwaTablicy.Length; i++)
     Console.Write (nazwaTablicy[i]);

Przykład wprowadzania kolejnych liczb do tablicy dwuwymiarowej z udziałem pętli for:

int[,] nazwaTablicy = new int[3,3];

for (int i = 0; i < nazwaTablicy.GetLength(0); i++)
     for (int j = 0; j < nazwaTablicy.GetLength(1); j++)
          nazwaTablicy[i,j] = i * 3 + j;

Metoda GetLength() zwraca długość wybranego wymiaru.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *