Typy danych – podstawy 1
W Adzie wszystkie dane muszą być określonego typu.
Definicja 1.
Typ danych (
data type
) jest to zbiór
wartości i operacji, które można wykonywać na tych
wartościach
Mamy ty analogię ze strukturami w matematyce.
Przykład 1.
Przestrzeń wektorowa
I podział typów
• Typy zdefiniowane wstępnie
• Typy definiowane przez programistę
Typy standardowe określone są w pakiecie Standard
i są to jedyne typy zdefiniowane wstępnie w Adzie.
Typy danych – podstawy 2
II podział typów
• Typy elementarne – typy skalarne i typy
wskaźnikowe
• Typy strukturalne
Dana typu elementarnego jest niepodzielna.
Przykład 2.
Typy standardowe: Boolean,
Integer, Float, typy wyliczeniowe.
Dana typu strukturalnego ma składowe.
Przykład 3.
Typ standardowy String, typy
tablicowe, typy rekordowe.
Typy danych – podstawy 3
Najczęściej deklaracja typu ma postać
type
Nazwa_Typu
is
Opis_Typu;
Nazwa_Typu jest identyfikatorem.
Opis_Typu określa jakie wartości może
przyjmować dana deklarowanego typu.
Nie wszystkie dane muszą należeć do typu,
który posiada nazwę.
Można spotkać dane typów anonimowych
takich jak tablice, zadania i obiekty chronione.
Każda deklaracja typu określa nowy typ różny
od istniejących.
Podtypy 1
Podtyp deklarujemy następująco:
subtype
Nazwa_Podtypu
is
Typ_Skalarny
range
Dolne..Gorne;
Typ_Skalarny nazywamy typem bazowym
Na podtyp przenoszone są operacje określone
dla typu bazowego.
Zbiór wartości jakie mogą przyjmować dane
podtypu jest określony przez zakres (
range
)
określony przez wartości wyrażeń Dolne i
Gorne, które muszą być typu bazowego.
Podtypy 2
Jeżeli dana przyjmie wartość spoza zakresu
typu, albo podtypu, zostaje zgłoszony
wyjątek
(
exception
) Constraint_Error.
Powoduje to zakończenie programu, albo
przejście do obsługi wyjątku
(
exception
handling
).
Typy wyliczeniowe 1
Uproszczony schemat EBNF
enumeration_type
::=
type
identifier
is
enumeration_type_definition
enumeration_type_definition
::= (identifier{,identifier})
Słowniczek
• enumeration_type
– typ wyliczeniowy,
• enumeration_type_definition
– definicja
typu wyliczeniowego
Typy wyliczeniowe 2
Przykład 4.
type
Kolor
is
(Czerwony, Zielony, Niebieski,
Fioletowy, Zolty);
type
Kolor_RGB
is
(Czerwony, Zielony,
Niebieski);
W tym przypadku jednoznaczność odwołań
zapewniają następujące wyrażenia
kwalifikowane:
Kolor’(Czerwony), Kolor_RGB’(Czerwony)
Bardziej rozsądne wydaje się jednak zdefiniowanie
podtypu
subtype
Kolor_RGB
is
Kolor
range
Czerwony..Niebieski;
Typy wyliczeniowe 3
Atrybuty typów wyliczeniowych
‘First – pierwszy element
‘Last
– ostatni element
‘Pred
– poprzednik (
predecessor
)
‘Succ
– następnik (
successor
)
‘Pos – pozycja – liczba porządkowa (
position
)
‘Val – wartość (
value
)
Porządek elementów typu wyliczeniowego
jest wyznaczony przez kolejność tych
elementów na liście definicyjnej typu i w
związku z tym dane typów wyliczeniowych
mogą być porównywane.
Typy wyliczeniowe 4
Mamy następujące operatory relacyjne:
= /= < <= > >=
Przykład 5.
Atrybuty_Typu_Wyliczeniowego
Zadania. Literatura
Zadania.
Ada_Zadania_2_Typy_Wyliczeniowe.pdf
Literatura podstawowa
Morawski, M., Zajączkowski, A. M.
(2003).
Wstęp do programowania w języku
Ada’95.
Rozdziały 3.1..3.4.