Download presentation
Presentation is loading. Please wait.
1
Subtype Enumeration type
ADA Data Structures Subtype Enumeration type
2
SUBTYPE Definition : A subset of the values associated
with the original type. Example : SUBTYPE Natural IS Integer RANGE 0..Integer’Last; SUBTYPE Positive IS Integer RANGE 0..Integer’Last;
3
More Examples SUBTYPE SmallInt IS Integer RANGE -50. .50;
SUBTYPE NonNegFloat IS Float RANGE Float’Last; SUBTYPE CapLetter IS Character RANGE ‘A’. .’Z’; X, Y, Z : SmallInt; NextChar : CapLetter; Hours_Worked : NonNegFloat;
4
Constraint Error X := 26; Y := 28; Z := X + Y; Compilation Error ?
SUBTYPE SmallInt IS Integer RANGE ; X, Y, Z : SmallInt; X := 26; Y := 28; Z := X + Y; Compilation Error ? At Run Time, Error will be raised. Why ?
5
Compatibility Rules for Types and Subtypes
Do not allow to mix the types of operands Examples: v1 : Integer; V2 : Float; V1+V2 leads to compilation error
6
More Compatibility Example : V1 : Integer; V2 : SmallInt;
SUBTYPE SmallInt IS Integer RANGE ; V1 : Integer; V2 : SmallInt; V1 + V2 is Compatible.
7
More Compatibility Two values are compatible if they have
the same type name or one value’s type is a subtype of the other value’s type.
8
Interesting Things X : Integer; Y : Natural; Think about X := Y; and
Y := X;
9
No Compilation Error X := Y; is always valid. But
Y := X; is not always valid at execution time. When ?
10
Ada Standard Library With Ada.Numerics; Example get the value of Pi as
Ada.Numerics.Pi do not need to declare Pi as constant float ...
11
Enumeration Type Defined by a list of values taking the form of identifiers. Useful in representing a fixed set of values that are not numerical such as days of the week, class year (freshman, sophomore, junior, senior) , etc...
12
Defining Enumeration Type
Form TYPE enumeration-type ( identifier-list)
13
Examples TYPE Days IS (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday); Declaration Some_Day : Days; Today : Days; Valentine_Day : Days;
14
More Examples Assignment Statements Today := Friday;
Some_Day := Monday;
15
Type Attributes and Operations
Six important Attributes First Last Pos position for a given value Val value for a given position Pred predecessor of a given value Succ successor of a given value
16
Attribute Query Type’attribute-name Type’attribute-name(value) Example
Days’First Days’Succ(Friday) Days’Pos(Sunday)
17
Input/Output for Enumeration Types
Within Ada.Text_IO, a generic package called “Enumeration_IO” must be used. But it can not be used immediately. Instances must be created
18
Format PACKAGE instance IS
NEW Ada.Text_IO.Enumeration_IO (Enum => type);
19
Get Examples PACKAGE Day_IO IS NEW Ada.Text_IO.Enumeration ( Enum => Dats ); Day_IO.Get ( Item => Some_day); Day_IO.Get ( Item => Valentine_Day);
20
Put Examples Day_IO.Put
( Item => Some_Day, width => 5, Set => Lower_case);
21
Example Program with Enumeration Type
with Ada.Text_IO; Procedure Colors Is Type English_Colors Is (white, black, red); Type French_Colors is (blanc, noir, rouge); Package Eng_Color_IO is New Ada.Text_IO.Enumeration_IO (Enum => English_Colors); Package Fr_Color_IO is New Ada.Text_IO.Enumeration_IO (Enum => French_Colors);
22
Eng_Color : English_Colors; Fr_Color : French_Colors; position : Natural; Begin -- Ada.Text_IO.Put (Item =>" The first English color is "); Eng_Color_IO.Put(Item => English_Colors'First); Ada.Text_IO.New_Line; Ada.Text_IO.Put (Item => " Enter an English color : "); Eng_Color_IO.Get(Item => Eng_Color); position := English_Colors'Pos(Eng_Color); Fr_Color := French_Colors'Val(position); Ada.Text_IO.Put (Item => " The equavilent French Color is "); Fr_Color_IO.Put (Item => Fr_Color, Set =>Ada.Text_IO.Lower_Case); end Colors;
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.