Rekordy 1
Definicja.
Typ strukturalny nazywamy typem
rekordowym, jeżeli zawiera pewną ilość
składowych, które mogą być różnych typów.
Dostęp do składowych zmiennej typu
rekordowego uzyskuje się przez podanie
nazwy zmiennej, po której piszemy kropkę i
następnie nazwę odpowiedniej składowej typu.
Taką formę zapisu nazywa się
wybraną
składową
(
selected component
).
Rekordy 2
W notacji EBNF mamy definicje:
record_type_definition ::= record
component_list
end record
component_list ::= component_declaration
{component_declaration}
component_declaration ::= component_identifier
: subtype_mark
subtype_mark :: type_name | subtype_name
selected_component ::=
record_variable.component_identifier
Rekordy 3
Słowniczek
Record type definition
– definicja typu
rekordowego
Component list
– lista składowych
Component declaration
– deklaracja składowej
Component identifier
– identyfikator składowej
Subtype mark
– oznaczenie typu
Selected component
– wybrana składowa
Rekordy 4
Przykład.
type Complex is
record
Re : Float;
Im : Float;
end record;
..
Liczba : Complex;
Liczba.Re := 0.0;
Liczba.Im := 1.0;
Rekordy 5
W ogólnym przypadku ilość operatorów
zdefiniowanych wstępnie dla typu rekordowego
jest ograniczona do dwóch operatorów
relacyjnych:
• operatora równości
=
• operatora nierówności /=
Definicja.
Dwa rekordy są równe jeżeli wszystkie
składowe w jednym rekordzie są równe
odpowiednim składowym w drugim rekordzie.
Nazwy składowych umieszczone na liście
składowych rekordu
muszą być unikalne
wewnątrz definicji typu rekordowego
.
Rekordy 6
Nadawanie wartości domyślnych przy definicji
rekordu
Nadawanie wartości domyślnych przy deklaracji
typu rekordowego jest
wyłącznie
własnością tych
typów. Inne typy i podtypy nie mają tej własności.
Agregaty rekordowe
Literały rekordowe nazywamy agregatami
rekordowymi.
Definicja.
Zespół wartości składowych rekordu
ujęty w nawiasy okrągłe nazywamy agregatem
rekordowym.
Rekordy 7
Przykład.
type Osoba is record
Pierwsze_Imie : String (1 .. 10) :=
(others => ' ');
Drugie_Imie : String (1 .. 10) :=
(others => ' ');
Nazwisko : String (1 .. 20) := (others
=> ' ');
end record;
Student : Osoba;
Rekordy 8
Student := (Pierwsze_Imie => "Anna ",
Drugie_Imie => "Maria ",
Nazwisko => "Zdolna ");
Ten agregat rekordowy jest agregatem, w
którym wartości są
związane przez nazwę
z
odpowiednimi składowymi rekordu. W tym
przypadku mówimy o
agregacie nazywanym
.
W takim agregacie kolejność nadawania
wartości składowym rekordu
nie musi
być
taka sama jak w definicji typu rekordowego.
Rekordy 9
Drugi rodzaj agregatu nosi nazwę
agregatu
pozycyjnego
.
Student := ("Anna ",
"Maria ",
"Zdolna ");
W tym przypadku
musi
być taka sama kolejność
nadawania wartości jak w definicji typu
rekordowego.
Program.
Rekordy
Rekordy 10
Literatura podstawowa
Morawski, M., A. M. Zajączkowski.
(2003).
Wstęp do programowania w języku
Ada’95. Rozdział 5.3.