Przeczytaj
Struktura to zagregowanie danych o różnych typach, powiązanych ze sobą w logiczny sposób. Np. jeżeli tworzymy strukturę Samolot
, będzie ona mogła zawierać informacje o producencie, pojemności, miejscach dla pasażerów itd. – nie jesteśmy ograniczeni do jednego typu danych, tak jak w wypadku tablic.
Jak wygląda struktura?
Każda ze składowych części struktury nazywana jest polempolem. Przykładową strukturę możemy przedstawić za pomocą następującego pseudokodu:
Pola takiej struktury możemy traktować jako zmienne, przy czym są one zebrane w jednej strukturze. Oznacza to, że możemy ich wartości zarówno odczytywać, jak i modyfikować – tak jak wartości zwykłych zmiennych. Sama struktura również może być traktowana jak każda inna zmienna, zatem możemy umieścić ją w liście, tablicy itp.
Dokładny sposób odwołania do pól struktury zależy od języka programowania, jednak dla uproszczenia w pseudokodzie zastosujemy zapis struktura.pole
.
Zacznijmy od ucznia:
Teraz można ustawić poszczególne pola struktury:
Bardzo ważnym aspektem struktur jest fakt, że są one wielokrotnego użytku. Możemy np. stworzyć drugiego ucznia i nadać mu inne wartości pól struktury, bez utraty danych pierwszego z uczniów. Przeanalizujmy zapis w pseudokodzie:
Dwie utworzone przez nas struktury opisują zupełnie innych uczniów, zatem wynikiem działania programu będzie:
Zastosowanie struktur
Struktury są w programowaniu bardzo potężnym narzędziem i nie sposób wypisać wszystkich ich zastosowań.
Razem z ich bardziej rozbudowanymi wersjami, czyli klasami, struktury stanowią fundament niemal każdej większej aplikacji. Mogą służyć do przechowywania m.in.:
elementów interfejsu użytkownika, takich jak przyciski, napisy czy obrazy; takie struktury zawierają np. pozycję na ekranie, kolor, ścieżki do plików graficznych;
danych o użytkownikach – przykładowe pola to loginy, imiona, adresy IP, hasła czy poziomy uprawnień;
danych o plikach – pola mogą zawierać treść, daty modyfikacji, właścicieli, nazwy czy rozszerzenia;
bohaterów w grach komputerowych – tutaj pola mogą służyć do przechowywania postaci, tekstur, modeli czy bardziej zaawansowanych danych, takich jak sposób zachowania (który sam także może być strukturą).
Struktury mogą zawierać się w innych strukturach, jednak ich definicja będzie znacznie różniła się w poszczególnych językach. Przykładowe rozwiązanie, które jest niezależne od języka programowania, przedstawia następujący pseudokod:
Stworzyliśmy prostą strukturę przechowującą kolory trzech wierzchołków trójkąta. Jeżeli chcemy odwołać się do któregoś elementu, możemy użyć tej samej składni, co dla zwykłych struktur:
Dlaczego warto używać struktur?
Oczywiście, program napisany bez użycia struktur może działać podobnie jak ten, w którym je wykorzystano. Istnieje jednak kilka powodów, dla których warto wybierać struktury.
Pierwszym z nich jest fakt, że struktury poprawiają czytelność kodu. Łatwiejsze jest operowanie na liście np. trzystu uczniów, niż na czterech różnych listach z imionami, nazwiskami, datami urodzenia i uzyskanymi średnimi ocen.
Drugim powodem jest wydajność. Użycie jednej listy uczniów zwiększy nie tylko czytelność kodu, ale również zmniejszy obciążenie komputera. Bardziej wydajne jest przechowywanie w pamięci i operowanie tylko na jednej liście, niż na kilku z nich.
Trzecim powodem jest uniknięcie redundancjiredundancji. Jest to problematyczne zjawisko, kiedy „kopiujemy kod” – innymi słowy, ten sam kod z minimalnymi zmianami występuje w kilku różnych miejscach programu. Możemy temu zapobiec, grupując powtarzające się zmienne do struktur. Dla przykładu, jeżeli piszemy aplikację graficzną, bardzo dobrym pomysłem byłoby stworzenie struktury dla koloru. Będzie to znacznie prostsze, niż tworzenie – za każdym razem – trzech zmiennych przechowujących składowe koloru czerwonego, zielonego i niebieskiego.
Słownik
jedna składowa zmienna w strukturze; element struktury
niepożądane zjawisko, w którym ten sam lub bardzo podobny kod powtarza się w kilku miejscach, podczas gdy mógłby zostać zastąpiony strukturą, funkcją lub pętlą