Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - C++

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ę
Aby widzieć ocenę lekcji - Zaloguj się