• Kurs C++ - strona główna
  • Kurs C++ - kontakt z autorem
  • Kurs C++ - mapa witryny
  • Kurs C++ - prawa autorskie
  • Kurs C++ - Kanał RSS
Informatyka krok po kroku
Użytkownik niezalogowany

Witaj nieznajomy

Reklamy
Randki

Lekcja 21

Struktury - część 1 - grupowanie danych za pomocą struktur

utworzono: 2005-02-09 zmodyfikowano: 2005-02-09 Autor: mgr inż. Marcin Nabiałek

Wprowadzenie

W zasadzie przedstawiłem Ci już wszystkie "zwyczajne" typy danych jakie występują w języku C++. Za pomocą poznanych typów danych możesz używać w swoich programach zarówno liczb, liter, jak i napisów, czyli w zasadzie mogłoby się wydawać, że wszystkiego, co może Ci być potrzebne w Twoich programach

Warto jednak w tym momencie zastanowić się do czego ma służyć programowanie i języki programowania, z których jednym jest język C++. Okazuje się, że programy najczęściej mają służyć do rozwiązywania problemów mających związek z rzeczywistością i do modelowania, symulowania rzeczywistości.

Jak wiadomo w rzeczywistości nie wszystko jest liczbą, literą czy napisem. Tak naprawdę prawie wszystko z czym spotykamy się na co dzień składa się co najmniej z kilku elementów. Nawet zwykła książka zawiera tytuł, pewną liczbę stron, spis treści, rozdziały i strony.

To samo, gdybyśmy chcieli w mniej lub bardziej dokładny sposób opisać danego człowieka. Każdy człowiek ma nazwisko, imię (imiona), wiek, adres zamieszkania, wzrost itd.

Gdybyśmy chcieli napisać program, który umożliwiałby zapisywanie danych o pewnej grupie ludzi, to mogłoby się okazać to nie takie wygodne. Bo tak naprawdę, w jaki sposób należałoby przedstawić pojedynczego człowieka w naszym programie?

Oczywiście do przedstawienia nazwiska w języku C++ wystarczyłby typ napisowy, dla imienia również typ napisowy, dla wzrostu typ całkowitoliczbowy itd. Jednak dopiero połączenie tych kilku atrybutów jakimi są imię, nazwisko, wzrost itd. umożliwiłoby w pełni opisanie cech charakterystycznych dla danego człowieka.

Struktury - idealne rozwiązanie

Jak się już zapewne domyślasz, rozwiązaniem takiego problemu są struktury - typ języka C++, który był już wprowadzony w języku C, jednak w prostszej postaci. Struktury umożliwiają bowiem przechowywanie kilku informacji o jednym elemencie (obiekcie), dzięki czemu operowanie na jednym obiekcie (w tym przypadku człowieku czy książce) bardziej odzwierciedla rzeczywistość.

Zastanówmy się jednak, w jaki sposób można by przechowywać informacje o człowieku, gdyby w języku C++ struktur nie było. Gdybyśmy mieli w programie tylko jednego człowieka, wystarczyłoby utworzyć zmienną typu string, która przechowywałaby imię, kolejną zmienną typu string, która przechowywałaby nazwisko, zmienną typu int, która przechowywałaby wiek itd. Czyli rozwiązanie byłoby dość proste.

Z kolei, gdybyśmy chcieli w programie mieć możliwość przechowywania danych o kilku osobach, należałoby utworzyć kilka tablic. Pierwsza tablica przechowywałaby zmienne typu string - nazwiska. Druga przechowywałaby zmienne typu string - imiona. Kolejna zmienne typu int - wiek człowieka itd. Wszystkie tablice powinny mieć taki sam rozmiar. Wówczas gdybyśmy chcieli poznać informacje o pierwszym wprowadzonym człowieku, wybralibyśmy pierwszy element z tablicy przechowującej nazwiska, pierwszy element z tablicy przechowującej imiona, pierwszy element z tablicy przechowującej wiek itd.

Jak się zatem okazuje, bez struktur dałoby się zrealizować w sumie wszystkie wymagane operacje, jednak wówczas nasz program nie odzwierciedlałby tak dobrze rzeczywistości. Co bowiem miałaby w rzeczywistości znaczyć tablica nazwisk ludzi, tablica imion, czy tablica wieku ludzi?

W przypadku gdy o jednym obiekcie (w tym przypadku człowieku) chcielibyśmy przechowywać znacznie więcej informacji i byłyby one znacznie bardziej skomplikowane (np. kod DNA), mogłoby się okazać, że nawet dla nas - autorów programu, wszystko stałoby się niejasne i za bardzo zagmatwane.

dodajdo

1 | 2 | 3 | 4 | 5 | 6 | > | |>

Użytkowanie Serwisu oznacza zgodę na wykorzystywanie plików cookie. Szczegółowe informacje