프로그래밍[Univ]/프로그래밍 언어론

[프로그래밍 언어론] Data Type part 2 - Ordinal Type : 순서 타입

Cloud Travel 2011. 10. 27. 22:25
* Ordinal Type : 특정 타입이 취할 수 있는 값이 주어진 것. 즉 사용자가 지정해준 변수 값 많을 취한 수 있다.

1. Enumeration Types (열거 방식)
 - 타입이 취할 수 있는 값을 일일이 열거 해주는 방식
  ex) (in C) enum colors { red, blue, green, yellow } // 각각의 요소는 숫자 인덱스로 지정되있다.
                                                                            // red = 1 , blue = 2 , green = 3 , yellow = 4 
                 colors mycolor = red; // mycolor은 red, blue green, yellow만 취할 수 있다.
                 mycolor++;                // 각각의 요소에 숫자가 부여 되있으므로 ++시 다음요소 값 이동 
                                                 // 즉 mycolor값은 blue가 된다.
 - 열거 타입의 설계 이슈 
 ⓐ 상수 사용을 한번으로 제한 할 것인가?
  ex) (in C) enum boolean1{T,F} enum boolean2{F,T,U}  // T or F에 해당하는 상수는 무엇인가?
        (in Pascal) 상수 사용을 한번으로 제한해준다.
        (in Ada) 상수 사용을 여러번 사용가능하고, 중복 사용된 상수값 사용시 타입을 선언하여 혼동을 막는다.
        TYPE letters is {'A', 'B', 'C'}
        TYPE vowels is {'A'}
         // A의 사용에 대한 혼동을 막기 위해서 사용시 (letters)A, (vowels)A등으로 타입을 명시해준다.
 - 가독성과 신뢰성을 지원해주기 위해서 사용한다.


2. Subrange Type (열거된 것의 부분 방식) 
 - 특정 타입에서 일부분만을 가지는 방식
  ex) TYPE sub_int = 0 ... 100;
         // subrange의 타입은 부모타입과 같은 타입으로 지정된다. > 변수간의 호환성을 위해서
         // 위의 pose의 경우 int형으로 0~100까지의 값을 가진 하나의 부분 타입이 나온다.
 - 특별한 설계 이슈는 없으며, Enumeration Type에서의 설계이슈와 같다.