Presentation is loading. Please wait.

Presentation is loading. Please wait.

Subtype Enumeration type

Similar presentations


Presentation on theme: "Subtype Enumeration type"— Presentation transcript:

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;


Download ppt "Subtype Enumeration type"

Similar presentations


Ads by Google