Computer Science/프로그래밍 언어론

프로그래밍 언어론 - 포괄 부프로그램

Beomsu Koh 2023. 5. 30.

프로그래밍 언어론 - 포괄 부프로그램

다양한 타입의 매개변수를 허용하는 부프로그램을 의미한다.

  • Ada 예를 통한 이해 : 두 예가 거의 유사 → 이때 포괄 부프로그램을 사용

Ada

  • generic이라는 예약어를 이용해서 포괄 부프로그램을 생성
generic
type Element is private;
procedure exchange(x, y: in out Element);
procedure exchange (x, y: in out Element) is
    temp: Element;
begin
    temp := x;
    x := y;
    y := temp;
end exchange;
  • integer, float, character 타입의 데이터를 교환하는 swap이라 불리는 3개의 부프로그램이 정의
procedure swap is new exchange (integer); 
procedure swap is new exchange (float); 
procedure swap is new exchange (character);
  • 호출
swap(a, b);

예제 : 포괄 부 프로그램을 사용하는 Ada

with TEXT_IO;
use TEXT_IO;

procedure gene is
    package INT_IO is new TEXT_IO.INTEGER_IO (integer);
    use INT_IO;
    
    a, b: integer;
    c, d: character;
    
    -- 제네릭 프로시저로 두 요소를 교환하는 프로시저 정의
    generic
        type Element is private;
        procedure exchange(x, y: in out Element);
        
    procedure exchange(x, y: in out Element) is
        temp: Element;
    begin
        temp := x;
        x := y;
        y := temp;
    end exchange;
    
    -- 제네릭 프로시저를 이용하여 swap 프로시저 정의
    procedure swap is new exchange (integer);
    procedure swap is new exchange (float);
    procedure swap is new exchange (character);
    
begin
    a := 10;
    b := 20;
    swap(a, b); -- 정수형 데이터 교환 수행
    put(a);
    put(" ");
    put(b);
    NEW_LINE;
    
    c := 'i';
    d := 'j';
    swap(c, d); -- 문자형 데이터 교환 수행
    put(c);
    put(" ");
    put(d);
end gene;

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

댓글