Rekord a struktura

Rekord pozwala na przechowywanie danych z zachowaniem pewnej abstrakcyjnej struktury. Rekord składa się z różnych typów danych połączonych w całość. Przykładowo, wyobraźmy sobie, że jesteśmy właścicielami firmy i chcemy napisać program, który ułatwi nam zarządzanie pracownikami. Program będzie działał, wykorzystując dane osobowe, takie jak imię, nazwisko, PESEL czy adres zamieszkania.

Moglibyśmy wszystkie potrzebne informacje przechowywać w oddzielnych tablicach. Wtedy w i-tej komórce każdej tablicy znajdowałyby się dane i-tego pracownika. Jednak taki sposób przechowywania danych jest niewygodny i mało intuicyjny. Skorzystajmy zatem z rekordu, często nazywanego również strukturą.

Ważne!

Struktura i rekord koncepcyjnie odpowiadają temu samemu modelowi danych. Przyjęło się jednak, że słowo rekord jest powiązane głównie z bazami danych, natomiast słowo struktura - z programowaniem.

Przeanalizujmy poniższy pseudokod:

Linia 1. Struktura Pracownik otwórz nawias klamrowy. Linia 2. imie prawy ukośnik prawy ukośnik 1 kropka skladowa. Linia 3. nazwisko prawy ukośnik prawy ukośnik 2 kropka skladowa. Linia 4. pesel prawy ukośnik prawy ukośnik 3 kropka skladowa. Linia 5. wynagrodzenie prawy ukośnik prawy ukośnik 4 kropka skladowa. Linia 6. zamknij nawias klamrowy. Linia 8. Pracownik p. Linia 9. p kropka imie ← cudzysłów Jan cudzysłów. Linia 10. p kropka nazwisko ← cudzysłów Kowalski cudzysłów. Linia 11. p kropka pesel ← cudzysłów 99122819456 cudzysłów. Linia 12. p kropka wynagrodzenie ← 5600. Linia 14. wypisz otwórz nawias okrągły p kropka wynagrodzenie asterysk 0 kropka 5 zamknij nawias okrągły prawy ukośnik prawy ukośnik wypisze 2800.

Definiując strukturę, musimy na samym początku zaznaczyć, jakie będą jej składowe. Każda z nich powinna mieć unikalną nazwę, za pomocą której będziemy mogli się odwoływać do jej konkretnej zawartości. Mówimy wtedy, że składowe są etykietowalne.

Firma może zatrudniać bardzo dużą liczbę pracowników, dlatego deklarowanie każdego z nich oddzielnie nie jest dobrym pomysłem. Możemy jednak utworzyć tablicę stuelementową o typie struktury Pracownik. Przeanalizujmy zatem jeszcze jeden pseudokod:

Linia 1. Pracownik pracownicy otwórz nawias kwadratowy 100 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy zamknij nawias klamrowy. Linia 3. pracownicy otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka wynagrodzenie znak równości 10000. Linia 4. pracownicy otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości pracownicy otwórz nawias kwadratowy 0 zamknij nawias kwadratowy. Linia 6. wypisz otwórz nawias okrągły pracownicy otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kropka wynagrodzenie plus pracownicy otwórz nawias kwadratowy 1 zamknij nawias kwadratowy kropka wynagrodzenie zamknij nawias okrągły. Linia 7. prawy ukośnik prawy ukośnik wypisze 20000.

Dzięki takiemu rozwiązaniu możemy w łatwy sposób utworzyć dużą liczbę zmiennych o typie wymyślonej struktury. Jest to bardzo wygodny i czytelny sposób pracy nad danymi, które posiadają pewną wewnętrzną abstrakcyjną strukturę.

Zagnieżdżanie struktur i tablice jako składowe

Struktury są bardzo elastyczne, jeśli chodzi o możliwe typy ich składowych. Mogą nimi być nawet tablice czy choćby inne struktury. Dzięki temu możemy tworzyć bardziej zaawansowane obiekty, które ułatwią nam pracę nad danymi.

Przeanalizujmy przykład takiej struktury:

Linia 1. Struktura Dane podkreślnik osobowe otwórz nawias klamrowy. Linia 2. imie. Linia 3. nazwisko. Linia 4. pesel. Linia 5. zamknij nawias klamrowy. Linia 7. Struktura Pracownik otwórz nawias klamrowy. Linia 8. Dane podkreślnik osobowe dane prawy ukośnik prawy ukośnik struktura jako składowa. Linia 9. godziny podkreślnik pracy otwórz nawias kwadratowy 50 zamknij nawias kwadratowy prawy ukośnik prawy ukośnik tablica jako składowa. Linia 10. wynagrodzenie. Linia 11. zamknij nawias klamrowy. Linia 13. Pracownik p. Linia 14. p kropka dane kropka imie ← cudzysłów Jan cudzysłów. Linia 15. p kropka godziny podkreślnik pracy otwórz nawias kwadratowy 2 zamknij nawias kwadratowy ← 8. Linia 16. p kropka wynagrodzenie ← 3350.

Aby dostać się do konkretnej składowej zagnieżdżonej struktury, najpierw musieliśmy sprecyzować, że odwołujemy się do pola dane o typie Dane_osobowe, a następnie do składowej imie. Osiągnęliśmy to za pomocą instrukcji p.dane.imie <-- "Jan".

Za to w przypadku tablicy musieliśmy podać konkretny indeks komórki. W powyższym pseudokodzie skorzystaliśmy z tablicy statycznej, zatem w definicji struktury musimy podać jej rozmiar. Dzięki temu każda zmienna o typie Pracownik będzie zawierać 50‑elementową tablicę.

Przykładowe zastosowania

Struktura jest uniwersalna i może być wykorzystywana do różnych celów. Tak jak w zaprezentowanym wcześniej przykładzie, nadaje się ona do pracy na obiektach mających pewne etykietowalne własności.

bg‑azure

Zastanów się, jakie inne zastosowania może mieć struktura.

REF9Hdc7Cq6oh
Inne zastosowania Dzięki temu możemy w wygodny sposób reprezentować pracowników firmy, sprzedawane samochody czy chociażby zawodników ulubionej drużyny sportowej.

Struktury mogą być także wykorzystywane do implementacji bardziej zaawansowanych struktur danych, takich jak lista czy drzewo. W liście dwukierunkowej każdy element przechowuje swoje wartości oraz wskaźnik do poprzednika i następnika. Wykorzystując strukturę, jesteśmy w stanie zaimplementować to w dosyć wygodny sposób.

Linia 1. Struktura Element podkreślnik listy podkreślnik dwukierunkowej otwórz nawias klamrowy. Linia 2. wartosc podkreślnik 1. Linia 3. wartosc podkreślnik 2. Linia 4. poprzednik. Linia 5. następnik. Linia 6. zamknij nawias klamrowy.

Natomiast w przypadku drzewa binarnegodrzewo binarnedrzewa binarnego każdy węzeł przechowuje swoją wartość, wskaźnik do ojca oraz synów – lewego i prawego. Tutaj również wykorzystanie struktury wydaje się dosyć intuicyjne i naturalne.

Linia 1. Struktura Wezel podkreślnik drzewa podkreślnik binarnego otwórz nawias klamrowy. Linia 2. wartosc. Linia 3. lewy podkreślnik syn. Linia 4. prawy podkreślnik syn. Linia 5. ojciec. Linia 6. zamknij nawias klamrowy.
bg‑azure

Zastanów się, czy widzisz jakieś zastosowanie struktury dla siebie.

Słownik

drzewo binarne
drzewo binarne

specjalny rodzaj drzewa, w którym każdy węzeł może mieć maksymalnie dwóch synów