Struktury - definiowanie własnych typów danych
Struktury – najważniejsze informacje
StrukturaStruktura jest złożonym typem danych, który definiuje programista. Przechowywane przez nią informacje nie muszą mieć tego samego typu. Oznacza to, że jedna struktura może przechowywać łańcuch znaków, liczbę zmiennoprzecinkową oraz wartość logiczną.
W języku C++ strukturę definiujemy następująco:
Zaczynamy od słowa kluczowego struct, które informuje kompilator, że będziemy tworzyć właśnie strukturę. Następnie podajemy nazwę struktury – w tym przypadku jest nią uczen. Struktura uczen będzie przechowywać trzy wartości: dwie pierwsze są zmiennymi typu string, a ostatnia to liczba typu double. Struktury składają się z pólpól, z których każde ma swoją nazwę (inaczej niż w przypadku tablic, gdzie poszczególnym elementom odpowiadają indeksy), typ oraz wartość.
Zwróćmy uwagę na znaki kończące opis struktury: zamykający nawias klamrowy oraz średnik. Łatwo o nich zapomnieć podczas definiowania pierwszych struktur.
Po stworzeniu struktury mamy nowy typ danych o nazwie uczen – możemy teraz tworzyć zmienne na jego podstawie.
Aby skorzystać ze struktury, definiujemy zmienną o typie struktura. Robimy to tak samo jak w przypadku definiowania zmiennych znakowych, numerycznych czy logicznych:
W rezultacie powstała zmienna uczen1. Składa się ona z trzech pól (imie, nazwisko, sredniaOcen) i jest gotowa na przyjęcie danych.
Aby uzyskać dostęp do poszczególnych pól struktury, podamy nazwę zmiennej, a następnie wpiszemy znak kropki oraz nazwę interesującego nas pola. Oto przykład operacji zapisywania danych w strukturze:
Ponieważ definicja struktury wprowadza nowy typ danych, możemy zadeklarować wiele zmiennych tego typu. Wpiszmy dane kolejnego ucznia do nowej zmiennej o nazwie uczen2:
Dotychczas porównywaliśmy struktury z tablicami. W rzeczywistości obie struktury danych możemy wykorzystywać w programach jednocześnie. Informacje dotyczące każdego ucznia zapisane są w strukturze typu uczen. Do szkoły chodzi wielu uczniów, możemy więc utworzyć tablicę, która będzie przechowywać struktury typu uczen:
W ten sposób powstała tablica opisująca dziesięciu uczniów za pomocą osobnych struktur. Dane związane z każdym uczniem oznaczone są w tablicy unikatowymi indeksami.
Z informacjami przechowywanymi w poszczególnych strukturach możemy się zapoznać, stosując opisaną wcześniej notację z użyciem kropki. Oto przykład wypisywania danych ze struktury:
Przedstawiony program wyświetli imiona wszystkich uczniów opisanych w tablicy szkola.
Struktury – zastosowanie
Struktury stosujemy w sytuacji, gdy chcemy opisać obiekt, na którego charakterystykę składają się liczne cechy (często tak różne, że nie można ich opisać za pomocą zmiennych tego samego typu).
Dobrym przykładem jest lista kontaktów w smartfonie bądź w komunikatorze. Każdy wpis może zawierać m.in. imię lub nazwisko, identyfikator, adres e‑mail, adres zamieszkania, numer telefonu, a także zaznaczenie, czy jest to numer prywatny. Każdy przechowywany kontakt zawiera te same typy informacji, ale oczywiście ich wartości są różne. Do zapisania takich zestawów informacji doskonale nadają się właśnie struktury. A ponieważ liczba kontaktów bywa duża, warto sięgnąć po tablicę, aby je uporządkować.
Do utworzenia książki adresowej moglibyśmy również użyć tablicy dwuwymiarowej, ale musielibyśmy zapisywać dane tego samego typu. Zapewne zdecydowalibyśmy się na tablicę zawierającą ciągi znaków. Struktury dają o wiele większą swobodę podczas przechowywania informacji.
Poniżej znajduje się przykład definicji tablicy dwuwymiarowej. Założyliśmy, że tablica będzie mieścić maksymalnie 50 kontaktów, z których każdy będzie zawierał 10 pozycji z informacjami.
Słownik
jedna mająca nazwę składowa w strukturze; element struktury
złożony typ danych, który pozwala na przechowanie wielu typów danych w jednym miejscu, rozróżniając je za pomocą klucza; elementem struktury może być inna struktura