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

[프로그래밍 언어론] Sub Program part 1 - Base, Design Issues

Cloud Travel 2011. 11. 12. 11:47
* Sub Program : 명령형 언어중에서 가장 구현, 제공이 힘든 부분이다.

* 특성
 - Single entry Point : 서브프로그램을 호출하면 그 서브프로그램의 시작지점이 항상 일정하다.
                                (Sub-Program 구현부)
  cf) 이거랑 비교대는 것으로 서브프로그램을 호출할때, 그 상태의 경우에 따라서 시작지점이 달라지는 것도 있다.

 - caller와 callee : caller는 서브프로그램을 호출하는 것이고, callee는 호출 되는 서브프로그램을 말한다.
 - caller가 발생하면, 호출한 위치에서 프로그램은 잠시 멈춘후(Suspended) callee를 실행한다.
   > callee가 종료되면(sub-program의 return발생), 프로그램은 이어서 실행을 한다.
   > 즉, 명령형언어의 sub program에서는 suspended와 return이 발생한다.

* Sub Program의 정의 

   


 - 서브프로그램은 Header + Body로 이뤄져 있다.
 - call : 서브프로그램을 호출하는 행동을 의미한다.
 - Parameter profile : 서브프로그램을 작동하는데 필요한 파라미터의 수, 순서, 타입을 정의 해놓은 것
  > 위의 그림에서 parameter profile은 int형 변수 2개가 a, b의 순서로 온다.의 의미를 가지고 있다.
 - Sub-Program의 종류
 : procedure과 function으로 나뉘어 진다.
  > 프로시저 : 매개변수화된 계산을 정의하는 문장의 집합(프로시저 호출로 매개변수가 변한다. ( ex) sort )
  > 함수 : 프로시저와 모습은 비슷하나 수학 함수가 모델이다.( ex) power(2,3) )
 - Prototype : return type + parameter profile / 위 그림에서 해더는 프로토타입이다.
 - 파라미터의 종류
  > formal parameter : 더미로 서브프로그램이 발생하면 서브프로그램의 지역변수로 생성되는 것
  > actual parameter : 실제 넘기는 값으로 메인프로그램에서 가지고 있는 변수
  ※ formal parameter와 actual parameter의 맵핑 방법
   ⓐ 순서대로 매핑하는 방법
      

  ⓑ 특정 actual parameter를 특정 formal parameter로 전달
     

    - 장점 : 순서대로 넣지 않아도 된다.
    - 단점 : 정확한 formal parameter 이름을 알아야한다.
  ⓒ formal parameter의 default값 정의
     


* Sub-Program 의 설계 이슈
 1. parameter passing method 
 2. parameter type check
 3. subprogram의 local variable allocation method => static? dynamic?
 4. 부프로그램 안에서 또다른 부프로그램을 정의가능한가? 또 그것을 호출 가능한가?
 5. 부프로그램 안에서 정의된 부프로그램의 파라미트의 타입을 체크할 것인가?
 6. 4.5.에 의해서 생긴 참조환경은 어떻게 설정해줄 것인가?
 7. 부프로그램은 오버로드가 가능한가?
 8. 하나의 서브프로그램의로 여러개 기능이 가능한가?