학교/웹디자인
subprogramming
ian_hodge
2016. 12. 10. 18:38
- subprogramming의 기초
- 각 subprogramming은 하나의 입구가 있따.
- 섭 프로그램이 실행되는 동안은 caller가 중지된다
- 섭 프로그램이 종료되면 무언가를 return한다
- 기초
- subprogramming definition:인터페이스와 행동으로 되어있음
- formal parameter:섭 프로그램의 헤더에 써있는 더미들, default 값을 설정 할 수
- actual parameter:호출되면 사용되는 실제 값, 구분은 position 으로 함/키워드로도 할 수 있음
- model of parameter parssing
- in mode: caller 가 calle에게 call값을 줌
- out mode:clee가 caller에게 return 값을 줌
- in out mode: 둘다 하는거
- pass by value
- 실제 값과 값은 값이 새롭게 생성되어 전달(copy형태)
- 추가 공간 필요,
- pass by result
- callee의 결과 값만 전달
- 만일 같은 변수가 두개들어오면, 뭐로 결과를 줘야할지 모름 그래서 프로그래머가 어느방향이 우선일지 정해줘야함
- pass by reference
- 주소값을 전달해줌
- 직접 값에 접근하는 속도는 느리며, 값이 변경될 수 잇음
- pass by name
- claee의 파라미터가 caller의 파라미터 이름으로 변경되며, assignment할때, binding이 발생함
- 유연하지만 복잡함
- multidimention array
- 넘기기 전에 몇개인지 알아야함
- 그래서 대안으로 주소를 넘기고, row/col수를 따로넘김
- subprogram name
- shallow binding:가장 최근에 호출된 곳에서 값을 가져와 사용함
- deep binding:구조적으로 가장 상위의 것을 가져와 사용함
- ad hoc binding:자신을 호출하기 직전 값을 사용함,즉 자신의 이름이 나오기 직전
- calling subprogram indirectly
- gui환경 같은경우 subprogram에 무엇이 올지 정확히 모르는 경우가 많음
- 이럴 경우 포인터를 이용함, 이떄 delegate로 명시함
- overload subprogram
- 같은 이름의 다른 subprogram
- generic/polymorphic subprogram: 파라미터로 다른 값을 받음,C++의 template, java의 <String>
- ad hoc의 형태를 띔
- closures
- closure은 sub program이며, 참조 환경이 바로 선언한 그곳이다
- 이름없이 바로 거기서 선언한 함수라 보면됨
- coroutines
- 서브 프로그램이 시작 부분이 아닌 여러곳에서 시작 가능
- 자기자신과 다른 사람을 호출 할 수 있음
- resume 을 써줌