Tablice w C# są strukturami danych, które pozwalają na przechowywanie wielu elementów tego samego typu w uporządkowany sposób. Umożliwiają one dostęp do danych za pomocą indeksów, co pozwala na efektywne przetwarzanie dużych zbiorów danych.
Deklaracja i inicjalizacja tablicy
Aby zadeklarować tablicę, należy określić jej typ oraz użyć nawiasów kwadratowych []
:
typ[] nazwaTablicy;
Przykład:
int[] liczby; // Deklaracja tablicy liczb całkowitych
Inicjalizacja tablicy polega na przypisaniu jej rozmiaru lub wartości początkowych:
liczby = new int[5]; // Inicjalizacja tablicy o rozmiarze 5
Można również połączyć deklarację z inicjalizacją:
int[] liczby = new int[5];
Inicjalizacja z wartościami początkowymi
Tablicę można od razu wypełnić wartościami:
int[] liczby = new int[] {1, 2, 3, 4, 5};
Lub jeszcze prościej:
int[] liczby = {1, 2, 3, 4, 5};
Zapisywanie danych do tablicy
Elementy tablicy są indeksowane od 0 do n-1
, gdzie n
to rozmiar tablicy.
Przykład:
int[] liczby = new int[5];
liczby[0] = 10;
liczby[1] = 20;
liczby[2] = 30;
liczby[3] = 40;
liczby[4] = 50;
Użycie pętli do zapisu danych:
for (int i = 0; i < liczby.Length; i++)
{
liczby[i] = (i + 1) * 10;
}
Właściwość Length
w tablicach
Właściwość Length
jest wbudowaną właściwością tablic w C#, która zwraca liczbę elementów w tablicy. Dzięki niej możemy łatwo dowiedzieć się, ile elementów zawiera tablica, bez konieczności ręcznego liczenia czy zapamiętywania jej rozmiaru.
Przykład:
int[] liczby = new int[5];
Console.WriteLine(liczby.Length); // Wyświetli 5
Użycie Length
w pętlach
Właściwość Length
jest często używana w pętlach, aby przejść przez wszystkie elementy tablicy, niezależnie od jej rozmiaru.
Przykład: Iterowanie przez tablicę za pomocą pętli for
for (int i = 0; i < liczby.Length; i++)
{
Console.WriteLine($"Indeks {i}: {liczby[i]}");
}
Dlaczego używamy liczby.Length
zamiast stałej liczby?
- Elastyczność: Jeśli zmienimy rozmiar tablicy, nie musimy modyfikować warunku w pętli. Kod automatycznie dostosuje się do nowej długości tablicy.
- Bezpieczeństwo: Unikamy błędów typu
IndexOutOfRangeException
, które mogą wystąpić, gdy próbujemy uzyskać dostęp do indeksu poza zakresem tablicy. - Czytelność: Użycie
Length
jasno wskazuje, że pętla ma iterować przez całą tablicę.
Odczyt danych z tablicy
Aby odczytać wartości z tablicy, używamy indeksów tak samo jak przy zapisie.
Przykład:
Console.WriteLine(liczby[0]); // Wyświetli 10
Console.WriteLine(liczby[1]); // Wyświetli 20
Odczyt wszystkich elementów przy użyciu pętli:
for (int i = 0; i < liczby.Length; i++)
{
Console.WriteLine(liczby[i]);
}
Odczyt kontrolowany przez instrukcję if
Możemy kontrolować odczyt danych z tablicy za pomocą instrukcji warunkowych.
Przykład: Wyświetlanie tylko liczb większych od 25
for (int i = 0; i < liczby.Length; i++)
{
if (liczby[i] > 25)
{
Console.WriteLine(liczby[i]);
}
}
Szukanie elementu w tablicy
Aby znaleźć konkretny element w tablicy, przeszukujemy ją, porównując każdy element z poszukiwaną wartością.
Przykład: Szukanie liczby 30 w tablicy
int szukana = 30;
bool znaleziono = false;
for (int i = 0; i < liczby.Length; i++)
{
if (liczby[i] == szukana)
{
znaleziono = true;
Console.WriteLine($"Znaleziono liczbę {szukana} na indeksie {i}.");
break; // Opcjonalnie przerywamy pętlę po znalezieniu
}
}
if (!znaleziono)
{
Console.WriteLine($"Liczba {szukana} nie została znaleziona w tablicy.");
}
Praktyczny przykład
Poniżej znajduje się kompletny program demonstrujący wykorzystanie tablic w praktyce.
using System;
class Program
{
static void Main()
{
// Deklaracja i inicjalizacja tablicy
int[] liczby = new int[5];
// Zapisywanie danych do tablicy (wprowadzanie przez użytkownika)
for (int i = 0; i < liczby.Length; i++)
{
Console.Write($"Podaj liczbę dla indeksu {i}: ");
liczby[i] = int.Parse(Console.ReadLine());
}
// Odczyt danych z tablicy (wyświetlanie wszystkich elementów)
Console.WriteLine("\nZawartość tablicy:");
for (int i = 0; i < liczby.Length; i++)
{
Console.WriteLine($"Indeks {i}: {liczby[i]}");
}
// Odczyt kontrolowany przez instrukcję if (wyświetlanie liczb parzystych)
Console.WriteLine("\nLiczby parzyste w tablicy:");
for (int i = 0; i < liczby.Length; i++)
{
if (liczby[i] % 2 == 0)
{
Console.WriteLine($"Indeks {i}: {liczby[i]}");
}
}
// Szukanie elementu w tablicy
Console.Write("\nPodaj liczbę do wyszukania: ");
int szukana = int.Parse(Console.ReadLine());
bool znaleziono = false;
for (int i = 0; i < liczby.Length; i++)
{
if (liczby[i] == szukana)
{
znaleziono = true;
Console.WriteLine($"Znaleziono liczbę {szukana} na indeksie {i}.");
break;
}
}
if (!znaleziono)
{
Console.WriteLine($"Liczba {szukana} nie została znaleziona w tablicy.");
}
}
}
Wyjaśnienie programu
- Deklaracja tablicy: Tworzymy tablicę
liczby
o rozmiarze 5. - Zapisywanie danych: Użytkownik wprowadza 5 liczb, które są zapisywane do tablicy.
- Odczyt danych: Wyświetlamy wszystkie wprowadzone liczby wraz z ich indeksami.
- Odczyt kontrolowany: Wyświetlamy tylko liczby parzyste z tablicy.
- Szukanie elementu: Użytkownik podaje liczbę do wyszukania, a program sprawdza, czy znajduje się ona w tablicy.
Dodatkowe informacje
- Indeksowanie: Pamiętaj, że indeksy w tablicach zaczynają się od 0.
- Dostęp poza zakresem: Próba dostępu do elementu poza zakresem tablicy spowoduje błąd
IndexOutOfRangeException
. - Tablice wielowymiarowe: C# obsługuje również tablice wielowymiarowe, np. tablice dwuwymiarowe (matryce).
- Metody pomocnicze: Klasa
Array
oferuje wiele metod, takich jakSort()
,IndexOf()
, czyLength
, które ułatwiają pracę z tablicami.
Ćwiczenia
- Sumowanie elementów: Napisz program, który sumuje wszystkie elementy w tablicy liczb całkowitych.
- Średnia arytmetyczna: Oblicz średnią arytmetyczną wartości w tablicy.
- Maksimum i minimum: Znajdź największą i najmniejszą wartość w tablicy.
- Odwracanie tablicy: Napisz program, który odwraca kolejność elementów w tablicy.
- Tablica znaków: Stwórz tablicę typu
char[]
i wypisz jej zawartość w odwrotnej kolejności.