C++: Tablice jednowymiarowe
Tablica jednowymiarowa w C++ jest strukturą danych, która pozwala przechowywać sekwencję elementów tego samego typu w uporządkowany sposób. W pamięci komputerowej tablica jest reprezentowana jako ciągły blok, gdzie każdy element tablicy zajmuje sąsiadujące miejsce w pamięci.
Deklaracja tablicy jednowymiarowej
Składnia deklaracji tablicy jednowymiarowej w C++ jest stosunkowo prosta. Podstawowa forma deklaracji wygląda następująco:
typ_danych nazwa_tablicy[rozmiar];
Gdzie typ_danych
określa typ przechowywanych w tablicy elementów, nazwa_tablicy
to identyfikator, którym będziemy się posługiwać przy odwoływaniu się do tablicy, a rozmiar
to liczba elementów, które tablica ma przechowywać.
Prosty przykład:
int liczby[5];
Deklarujemy tablicę przechowującą liczby całkowite o wielkości 5. Innymi słowy stworzyliśmy właśnie kontenerek z 5 szufladami. Do kazdej z nich możemy schować jedną liczbę całkowitą.
Inicjalizacja tablicy przy deklaracji
Tworzac tablicę, możemy ją od razu wypełnić. Oto prosty przykład, który przedstawia taką właśnie czynność dla tablicy przechowującej liczby zmiennoprzecinkowe.
float temperatury[7] = {3.5, 4.5, 7.0, 8.5, 2.1, -1.0, 4.3};
Oczywiście w tablicach możemy przechowywać różne elementy, nie tylko liczby. Spójrzmy na przykład tworzenia tablicy znaków.
char znaki[10] = {'H', 'e', 'l', 'l', 'o', '\0'};
Ważne jest, aby pamiętać, że rozmiar tablicy, ustalony w momencie jej deklaracji i nie może być zmieniony w trakcie działania programu.
Możemy również utworzyć tablicę, nie podając jej wymiaru, natomiast podając jej pełną zawartość:
int liczby = {1,2,3,4,5,4,3,2,1};
Nie podaliśmy wielkości tablicy wewnątrz nawiasów kwadratowych. Zostanie ona ustawiona na 9, czyli dokładnie tyle, ile liczb podaliśmy wewnątrz nawiasów klamrowych. Każda z liczb, napisanych po przecinku, znajdzie się w oddzielnej komórce w tablicy.
Możemy również podać wielkość tablicy i jednocześnie podać jej niepełną zawartość, np.:
char dane[5]={'a','b'};
Utworzyliśmy tablicę pięcioelementową o nazwie dane, ale wpisaliśmy do niej tylko 2 znaki. Zapisane one zostaną w dwóch pierwszych komórkach tablicy, pozostałe 3 pozostaną puste.
Dostęp do elementów tablicy
Komórki w tablicy mają swoje określone adresy. Są to numery, zwane indeksami. Indeksy tablicy rozpoczynają się od 0. Oznacza to, że pierwszy element tablicy ma indeks 0, drugi element indeks 1, i tak dalej.
Odczytywanie wartości
Aby odczytać wartość z tablicy, należy podać nazwę tablicy oraz indeks elementu w nawiasach kwadratowych. Na przykład, aby odczytać trzeci element tablicy liczby
, użyjemy liczby[2]
.
int liczby[5] = {10, 20, 30, 40, 50};
int trzeciElement = liczby[2]; // Odczytuje wartość 30
Modyfikowanie wartości
Aby zmodyfikować wartość elementu w tablicy, również używamy indeksowania. Przykładowo, aby zmienić wartość drugiego elementu w tablicy liczby
na 25, wykonamy następującą operację:
liczby[1] = 25; // Modyfikuje drugi element tablicy na wartość 25
Iteracja przez tablicę
Iteracja przez tablicę to proces przechodzenia po kolei przez wszystkie jej elementy. W języku C++ możemy wykorzystać różne rodzaje pętli do iteracji, w tym pętle: for
, while
oraz do-while
.
Użycie pętli for
Przykład wykorzystania pętli for
int liczby[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
cout << "Element " << i << ": " << liczby[i] << endl;
}
Użycie pętli while
Przykład wykorzystania pętli while
int i = 0;
while (i < 5) {
cout << "Element " << i << ": " << liczby[i] << endl;
i++;
}
Użycie pętli do-while
Przykład wykorzystania pętli do-while
int j = 0;
do {
cout << "Element " << j << ": " << liczby[j] << endl;
j++;
} while (j < 5);
Każda z tych pętli ma za zadanie, dzięki wykorzystaniu licznika, którego wartość startuje od zera, przejść przez wszystkie jej elementy, a ich zawartość wypisać na ekran.
Operacje na tablicach
Przechowywanie danych w postaci tablic niesie za sobą pewne korzyści. Można w tych danych czegoś szukać, coś liczyć, sumować, sortować, odwracać ich kolejność i wiele więcej.
Spróbujmy w przykładowej tablicy znaleźć jakąś konkretną wartość.
Szukanie elementów
Do znalezienia konkretnego elementu w tablicy wykorzystamy pętlę. Przejdzie ona przez wszystkie elementy tablicy, następnie każdy z nich porówna z poszukiwaną wartością.
int liczby[] = {10, 20, 30, 40, 50};
int szukanaWartosc = 30;
bool znaleziono = false;
for (int i = 0; i < 5; i++) {
if (liczby[i] == szukanaWartosc) {
cout << "Znaleziono wartość " << szukanaWartosc << " na pozycji " << i << endl;
znaleziono = true;
break;
}
}
if (!znaleziono) {
cout << "Nie znaleziono wartości " << szukanaWartosc << " w tablicy." << endl;
}
Rozpoczynamy od deklaracji tablicy liczby wraz z zainicjowaniem jej elementów. Szukaną wartością niech będzie 30.
Tworzymy sobie dodatkową zmienną o nazwie znaleziono, w której będziemy przechowywali aktualny status naszych poszukiwań. Na starcie będzie ona miała wartość false, gdyż jeszcze nic nie znaleźliśmy.
Następnie mamy pętlę, która przechodzi nam przez wszystkie elementy tablicy. Instrukcja warunkowa sprawdza, czy aktualny element tablicy ma poszukiwaną przez nas wartość.
Jeżeli tak:
- wypisujemy komunikat, że wartość została znaleziona i pod jakim adresem komórki w tablicy
- zmienną znaleziono ustawiamy na true
- kończymy działanie pętli
Jeżeli po przejrzeniu całej tablicy nie znaleźliśmy poszukiwanej wartości, wypisany zostanie stosowny komunikat.
Określanie wielkości tablicy
Aby uzyskać rozmiar tablicy, wykorzystamy funkcję sizeof
. Podaje ona jednak rozmiar tablicy w bajtach. Aby obliczyć ilość elementów tablicy musimy wielkość całej tablicy w bajtach podzielić przez wielkość pojedynczej komórki, przedstawioną również za pomocą bajtów.
int liczby [10];
int rozmiar = sizeof (liczby) / sizeof (int);
lub
int liczby [10];
int rozmiar = sizeof(liczby) / sizeof(liczby[0]);
Rozmiar tablicy, a więc ilość elementów jakie może przechować, obliczamy dzieląc wielkość (w bajtach) całej tablicy przez wielkość (w bajtach) pojedynczego elementu bądź typu elementu.
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |