Lekcja 3 - Tablice
Tablice
Zmienne, które tworzyliśmy do tej pory, mogły przechować jedną wartość. Wyobraź sobie sytuację, w której chcesz wyświetlić użytkownikowi listę proponowanych produktów. Jeśli produktów będzie 5, musisz zadeklarować 5 zmiennych, używając znanych Ci typów. Każda zmienna musi mieć inną nazwę.
int product1 = "Spodnie";
int product2 = "Bluzka";
int product3 = "Sukienka";
int product4 = "Spódnica";
int product5 = "Buty";
Czy istnieje na takie sytuacje jakieś lepsze rozwiązanie? A co kiedy mamy do czynienia ze 100 produktami?
C# pozwala na deklarację tzw. tablicy – to zmienna, która potrafi przechować większą ilość elementów. Tablica może przechowywać tylko elementy tego samego typu. Nie możemy zadeklarować tablicy, która będzie przechowywała liczby i tekst.
Jak deklarujemy tablicę?
int[] products = new int[5];
Podobnie jak zwykłą zmienną, podajemy typ. Dodatkowo, za typem wstawiamy dwa nawiasy kwadratowe i nazwę zmiennej.
Różnicę widzimy po prawej stronie znaku przypisania. Zamiast bezpośrednio przypisywać wartość, używamy słowa kluczowego new, typu i pary nawiasów kwadratowych. Między nawiasami podajemy wielkość tablicy, czyli to ile elementów będzie mogła ona przechować.
Dodawanie Danych do Tablicy
Zadeklarowana tablica nie posiada jeszcze dodanych wartości. Jak dodać wartość do tablicy? Tablica posiada tzw. indeksy, czyli specjalne identyfikatory, które wyróżniają każdą wartość dodaną do tablicy. Tablica o wielkości 5 ma 5 indeksów i może przechować 5 elementów.
Aby przypisać element do konkretnego indeksu tablicy posługujemy się notacją z dwoma nawiasami kwadratowymi.
products[0] = "Buty";
products[1] = "Spodnie";
Uwaga: Dlaczego w pierwszym indeksie podajemy 0?
Ponieważ indeksy są numerowane właśnie od liczby 0. Tablica, która o wielkości 5 elementów posiada indeksy od 0 do 4.
Co się stanie, jeśli spróbujemy przypisać element do indeksu, który nie istnieje? Program zgłosi błąd.
products[-1] = "Spodnie"; // Nie indeksu mniejszego niż 0.
products[6] = "Buty"; // Nie ma indeksu większego od 4.
Deklaracja tablicy razem z danymi
Możemy podczas deklaracji tablicy od razu dodać do niej dane.
int[] numbers = new int[3]
{
33,
0,
-18
};
Za nawiasem kwadratowym otwieramy wtedy nawiasy klamrowe i wymieniamy w nich wartości, oddzielając je przecinkiem. Znak średnika przenosi się wtedy za nawiasy klamrowe.
Rozmiar Tablicy
Czy po zadeklarowaniu tablicy możemy zmienić jej rozmiar? Nie. Tablica po zadeklarowaniu nie może zmienić swoich rozmiarów i jest to podyktowane ich konstrukcją w pamięci.
Więcej na ten temat tutaj.
Odczytywanie elementu z tablicy
Odczytywanie danych z tablicy jest analogiczne do przypisywania, z tym, że tablica znajduje się teraz po prawej stronie operatora. Po lewej wstawiamy zwykłą zmienną.
string product1 = products[0];
string product2 = products[2];
Zmiana elementu tablicy
Jak podmienić istniejącą wartość na nową, podobnie jak w przypadku przypisania, wystarczy nową wartość przypisać do istniejącego indeksu.
products[0] = "Buty";
products[0] = "Spodnie";
W powyższym przykładzie przypisaliśmy wartość "Buty" do indeksu 0, następnie podmieniliśmy ją na nową wartość "Spodnie".
Rozmiar Tablicy
Aby sprawdzić rozmiar tablicy, musimy po nazwie tablicy wpisać kropkę i słowo Length. Takie wywołanie zwróci rozmiar tablicy.
int[] products = new int[10];
int size = products.Length;
Zmienna size będzie zawierała wartość 10, czyli rozmiar tablicy.
Usuwanie Wartości
Nie można tak po prostu usunąć wartości, ponieważ rozmiar tablicy nie może być zmieniony. Możemy natomiast nadpisać wartość wartością pustą w przypadku typu string lub zerem w przypadku typu liczbowego.
products[0] = "Buty";
products[0] = null; // Nadpisanie Wartości
Zadanie 1
Utwórz tablicę o nazwie products i dodaj do niej nazwy 3 produktów. Nazwy produktów mogą być dowolne.
Następnie utwórz 3 zmienne, do których przypiszesz poszczególne produkty. Zmienne wyświetl w konsoli.
Zadanie 2
W pliku istnieje tablica z produktami, zamień produkt o nazwie "Spodnie" na "Koszule".
Wyświetl wszystkie produkty w konsoli.
Zadanie 3
Utwórz tablicę z 3 liczbami o nazwie points. Uzupełnij tablicę dowolnymi liczbami. Utwórz zmienną typu int o nazwie avg i przypisz do niej średnią punktów z tablicy. Podziel sumę wszystkich liczb przez rozmiar tablicy.
Pamiętaj o zmianie kolejności działań za pomocą nawiasów okrągłych.