50
1 Chapter 10 – 부 부부부부 Outline 10.1 부부 10.2 부부부부 부부부 부부부부 10.3 부부 부부부부 부부 10.4 부부부부부 부부 10.5 부부부 부부 부부 10.6 부부 부부 10.7 부부부

Chapter 10 – 부 프로그램

  • Upload
    nan

  • View
    133

  • Download
    6

Embed Size (px)

DESCRIPTION

Chapter 10 – 부 프로그램. Outline 10.1 개요 10.2 매개변수 평가와 전달기법 10.3 형식 매개변수 명세 10.4 부수효과와 이명 10.5 연산자 중복 정의 10.6 포괄 기능 10.7 코루틴. 10.1 개요. 부프로그램 (subprogram, procedure) 일련의 행위나 계산을 추상화하는 기법으로 제공 실행과 분리해서 선언할 수 있는 블록 ( 호출 요구 ) 함수 (function) : 함수 이름으로 값 반환 - PowerPoint PPT Presentation

Citation preview

Page 1: Chapter 10 –  부 프로그램

1

Chapter 10 – 부 프로그램

Outline10.1 개요10.2 매개변수 평가와 전달기법10.3 형식 매개변수 명세10.4 부수효과와 이명10.5 연산자 중복 정의 10.6 포괄 기능10.7 코루틴

Page 2: Chapter 10 –  부 프로그램

2

10.1 개요

• 부프로그램 (subprogram, procedure)– 일련의 행위나 계산을 추상화하는 기법으로 제공– 실행과 분리해서 선언할 수 있는 블록 ( 호출 요구 )– 함수 (function) : 함수 이름으로 값 반환– 서브루틴 (subroutine),프로시저 (procedure) : 매개변수로 값 반환

• 부프로그램의 일반적 특성

– 각 프로시저는 단일 진입점을 갖음– 호출프로그램 (caller)은 피호출 프로그램 (callee)의 실행동안 중단– 부프로그램 종료 시 제어는 호출자에게 되돌아감

• 프로시저의 구성

– 프로시저 이름– 매개변수 (parameter) 리스트– 환경 (environment) – 몸체 (body)

procedure 프로시저 이름 ( 매개변수리스트 )

선언부 (declarations)

몸체 (body)

end 프로시저 이름

Page 3: Chapter 10 –  부 프로그램

3

10.1 개요

• 매개변수 (parameter)

• 매개변수 결합 (parameter association)

• 위치 매개변수 결합 (positional parameter association)

– 리스트에 나타난 위치로 바인딩

– 짧은 매개변수 리스트에 적합

• 이름 매개변수 결합 (named parameter association)

– 이름으로 바인딩

– 매개변수 리스트가 길 때 적합

– 일부 매개변수 값을 디폴트로 줄 때 적합

Page 4: Chapter 10 –  부 프로그램

4

10.1 개요

• 함수 (Function)– 함수 이름으로 값을 반환

– 함수의 투명성 제공 ( 환경 변화 없이 )

- 함수 값 반환 방법

• 함수이름에 값 배정

• RETURN 문으로 결과 값 반환

• 함수 반환 값으로 허용되는 자료형

– FORTRAN, ALGOL 60 : 스칼라형 ( 실수 , 정수 , 논리형 등 )

– Pascal : 스칼라형 , 포인터

– PL/I : 스칼라형 , 포인터 , 문자열

– Ada : 모든 자료형 ( 배열 , 레코드 등 포함 ): 반환문의 직교성

– C, C++ : 스칼라형 , 포인터 ( 반환문의 직교성을 갖도록 제공 )

Page 5: Chapter 10 –  부 프로그램

5

10.1 개요

• 프로시저에서 사용 식별자 – 형식 매개 변수

– 지역 변수

– 비지역 변수

• 프로시저에 관해서 고려할 사항– 비지역 변수 값을 바인딩하는 환경은 ?

– 실 매개 변수의 평가방법은 ?

– 형식 매개 변수와 실 매개 변수의 바인딩 방법은 ?

Page 6: Chapter 10 –  부 프로그램

6

10.2매개변수 평가와 전달기법

• 형식 매개 변수와 실매개 변수

– 실 매개 변수

• 호출 프로그램으로 전달하기 위하여 사용된 식 또는 이름

– 형식 매개 변수

• 부프로그램이 실행될 때 , 실 매개 변수를 대신하여 사용되는 이름

• 일반적으로 지역 변수 ( 또는 상수 ) 역할

• 매개 변수 명세 제공

– 최근 경향

– 형식매개변수 이름 , 자료형 , 바인딩 방법 등등

Page 7: Chapter 10 –  부 프로그램

7

10.2매개변수 평가와 전달기법

• 형식 매개 변수와 실 매개 변수의 사용 예

– 형식 매개 변수 - 피호출자 (callee)

– 실 매개 변수 - 호출자 (caller)

SUBROUTINE P(A , B) [Fortran] procedure P(A , B) [Algol] P : PROCEDURE(A , B) ; [PL/I]

▽ A P B [APL]

CALL P(X , Y * Z) P(X , Y * Z) CALL P(X , Y * Z) ; X P Y × Z

Page 8: Chapter 10 –  부 프로그램

8

10.2매개변수 평가와 전달기법

• 형식 매개 변수와 실 매개 변수의 대응 방법

– 위치 대응• 형식 매개 변수와 실 매개 변수가 순서대로 대응

• 예 ) procedure TEST(A, B : in REAL; C : in INTEGER);

call TEST(0.1, 100.0, 50);

– 이름 대응

• 실 매개 변수에서 대응되는 형식 매개 변수 이름 사용

• Ada 언어 예 : 위치 대응 , 이름 대응 병행 사용

( 위 procedure 선언문에서 다음 경우 모두 동일 )

TEST (A => 0.1, C => 50, B => 100.0);

TEST (0.1, C => 50, B => 100.0);

TEST (0.1, 100.0, 50);

Page 9: Chapter 10 –  부 프로그램

9

10.2매개변수 평가와 전달기법

• 참조 호출 (Call by reference, - by address, - by location)

• 실 매개 변수 주소를 대응되는 형식 매개 변수에 보내는 방법

procedure p (x, y) call p (a, b)

• 기법 적용

– caller는 실 매개 변수의 주소를 계산하여 callee에게 전달

a

b

x

y

Page 10: Chapter 10 –  부 프로그램

10

10.2매개변수 평가와 전달기법

• 예제 ) 참조 호출 기법의 사용 예

• p(x[i], y) 호출시 목적 코드

procedure p(a, b) {call by reference} begin a b * 4 end

x[i] 주소 ADDR1 y 주소 ADDR2

LDIND ADDR2 MULT @4 STIND ADDR1

Page 11: Chapter 10 –  부 프로그램

11

10.2매개변수 평가와 전달기법

• 값 호출 (call by value)– 형식 매개 변수의 지역 변수화– 실 매개 변수 값을 대응 지역 변수로 복사– 특징 - 실 매개 변수 값 불변

call p (a, b) procedure p (x, y)

• 기법 적용– caller는 실 매개 변수 주소 ( 또는 값 ) 전달– callee는 r-value를 형식 매개 변수의 기억 장소에 복사– 이후 다른 지역 변수와 동일하게 취급

a

b

x

y

Page 12: Chapter 10 –  부 프로그램

12

• 값 호출 기법의 예제

목적 코드

procedure p(a, b) {call by value} begin a b * 4 end

10.2매개변수 평가와 전달기법

실매개 변수값을 지역 변수인 형식 매개 변수에 복사

몸체부에 대한 코드

LDIND ADDR1STORE aLDIND ADDR2STORE b

LOAF bMULT @4STORE a

Page 13: Chapter 10 –  부 프로그램

13

10.2매개변수 평가와 전달기법

• 결과 호출 기법 (call by result) – 피호출자가 반환 직전에 형식 매개 변수의 값을 대응되는

실 매개 변수에 복사 후 반환

– 형식 매개 변수 - 지역 변수 취급

– 형식 매개 변수의 초기 값 미정의 (callee에서 정의 )

• 값 - 결과 호출 기법 (call by value-result)– 값 호출 기법과 결과 호출 기법을 함께 사용한 방법

– 기법 적용

callee 실행 시작 - 값 호출 기법 적용

callee 실행 끝 - 결과 호출 기법 적용

Page 14: Chapter 10 –  부 프로그램

14

10.2매개변수 평가와 전달기법

• 표 10.1 매개 변수 전달 기법에 따른 프로그램 예

procedure PRINTinteger yprocedure INCR(x)

integer xbegin y 1 x x + 2end

beginy 0INCR(y)write y

end

• 프로그램 실행 후 인쇄 값 (y)

call by reference 적용 : 3

call by value-result 적용 : 2

Page 15: Chapter 10 –  부 프로그램

15

10.2매개변수 평가와 전달기법

• 이름 호출 기법 (Call by name)– 형식 매개 변수의 이름이 사용될 때마다 그에 대응되는 실 매개 변수

자체가 사용된 것으로 간주 ( 필요한 r-value 또는 l-value를 매번 계산 )

– 기법 적용

• caller - 실 매개 변수의 r-value와 l-value 계산 routine

(THUNK ) 작성

• callee – 필요시 THUNK를 이용하여 필요한 값 ( r-value, l-value)

계산

– 단점

• 구현 난해

• 프로그램 판독성 난해

Page 16: Chapter 10 –  부 프로그램

16

10.2매개변수 평가와 전달기법

• 이름 전달 기법 예제

call EXCHG(J, N(J)) 의 해석

procedure EXCHG(X, Y) integer TEMP begin TEMP X X Y Y TEMP end

Integer TEMP begin TEMP J J N(J) N(J) TEMPend

호출 시 J 의 값 J0 로 가정

참조 호출 : J0 N(J0 )

이름 호출 : J N(J0)

N(N(J0 )) J0

Page 17: Chapter 10 –  부 프로그램

17

10.2매개변수 평가와 전달기법

• 예제 10.2매개변수의 전달에 아래 기법이 각각 사용되었다고 가정할 때 , 출력되는 값을

구하여라 .

1. Call by value2. Call by name3. Call by reference

P : PROCEDURE ;

DECLARE A(3), I ; /* A 는 세 개의 원소를 갖는 배열 */

I = 1 ; /* = 은 배정 연산자 */

A(1) = 2 ;

A(2) = 4 ; /* A(I) 가 실 매개 변수 */

CALL Q( A(I) ) ;

END P ;

Q : PROCEDURE( B );/* 형식 매개 변수 B 는 */ /* 실매개변수 A(I) 에 대응됨 A(I) = 3 ; /* 식별자 A 와 I 는 /* I = 2 ; /* 프로시져 P 에서 상속 */ PUT LIST(B) ; /* B 의 값을 인쇄 */END Q ;

Page 18: Chapter 10 –  부 프로그램

18

10.2매개변수 평가와 전달기법

• 예제 10.3매개변수의 전달이 아래 기법이 각각 사용되었다고 가정할 때 , 출력되는 값을구하여라 .

1. Call by reference2. Call by value3. Call by name

P : PROCEDURE ;

DECLARE A ;

A = 1 ;

CALL Q(A) ;

END P ;

Q : PROCEDURE(B) ; DECLARE A,B ; A = 2 ; PUT LIST(B) ; END Q ;

Page 19: Chapter 10 –  부 프로그램

19

begin integer k integer array v procedure P(a) integer a begin a a + 1 v[k] 5 k 3 a a + 1 end v[3] 6 v[4] 8 k 4 call P( v[k] )end

10.2매개변수 평가와 전달기법

• 예제 10.4 다음 Algol 형태의 프로그램에서 매개 변수 전달 방법이 아래 (a), (b), (c), (d) 및 (e) 기법으로 사용되었을 경우 , 프로그램이 실행된 후의 v[3]과 v[4]의 최종값을 구하여라 .

( 단 , 미확정될 수도 있음 )

(a)call by value

(b)call by reference

(c) call by result

(d) call by value result

(e) call by name

Page 20: Chapter 10 –  부 프로그램

20

10.3 형식 매개 변수 명세

• 실 매개 변수와 형식 매개 변수의 정적 형 검사 형식 매개 변수 명세표 요구

• 형식 매개 변수 명세

- 자료형 , 전달 기법 , 초기값 , 대응 관계 등

• 각종 언어의 형식매개 변수 명세

Pascal : 자료형 , 전달 기법

( 값 전달 기본 , var 선언 - 참조 전달 , 값 - 결과 전달 ) Algol 60 : 전달 기법 ( 이름전달 기본 , value 선언 - 값 전달 ) Ada : 전달 기법 - 예약어 in( 값 전달 ), out( 결과 전달 ), in out ( 값 - 결과 전달 )

in - 지역 상수 취급 ( 지역 변수 취급 안함 ) 형식 매개 변수 자료형 선언

형식 매개 변수의 디폴트 ( 초기 ) 값 선언 가능 ( 지역 상수인 in mode 도 가능 ) Ada 함수는 투명성을 위해 in 모드만 가능

Page 21: Chapter 10 –  부 프로그램

21

10.4 부작용과 이명

• 프로그래밍 언어의 유해한 특징

– GOTO 문

– 포인터 사용 : 이명 발생 유도

– 부수효과 (side effect)

– 이명 (aliasing)

Page 22: Chapter 10 –  부 프로그램

22

10.4 부작용과 이명

• 부수 효과 (side effect)

– 단위 프로그램간의 의사 소통 방법

• 비지역 변수 접근

• 부수효과 이용

– 참조 전달기법 , 이름 전달기법

• 실 매개 변수 값 변화 ( 부수효과 )

• 예기치 못한 결과 발생 ( 심각한 오류 발생 )

– 단점

• 프로그램 판독성 저하

• 심각한 오류 발생

• 함수의 투명성 상실

Page 23: Chapter 10 –  부 프로그램

23

10.4 부수 효과와 이명• 이 명 (aliasing)

– 동일한 기억 장소를 함께 사용하고 있는 다른 이름

– 한 변수 값 변화 동일장소 사용하는 다른 변수의 값 변화

이명의 효과 (aliasing effect)– 초기 언어 : 효율적 기억 장소 사용을 위해 이명 허용

예 ) Fortran의 EQUIVALENCE, Cobol의 REDEFINES, C의 union 등

* x, y가 서로 이명 관계

procedure p(x,y) ; x := x + 1 ; y := x + y ; end p

call p(a,a)

프로시저 호출에서 발생되는 이명 예 ( 참조호출 )

그림 10.3 이명

그림 10.4 포인터 변수와 일반 변수와의 이명

Page 24: Chapter 10 –  부 프로그램

24

10.5 연산자 중복 정의

• 중복 정의 (overloading) – 한 개체 ( 식별자 , 함수 이름 , 연산자 ) 가 두 가지 이상의 개념

갖음

참조 ) 영역 구멍 (hole in scope) 개념과 대조

– 사용 이유

• 자연스러운 원래의 일반적인 표기 사용을 지원

• 동일한 이름이나 연산자를 중복 사용하여 하나의 프로그램으로 합쳐도 혼동되지 않음 ( 문맥에 의한 구별 )

– 중복정의 사용시 구별법

• 의미 확정을 문맥에서 알 수 있으면 컴파일러가 수행

• 문맥으로 구별이 될 수 없는 경우

사용자가 제약 사항을 명시 ( 자격 부여 )

– 사용자 중복 정의 제공 ( 최근 언어 )

Page 25: Chapter 10 –  부 프로그램

25

10.5 연산자 중복 정의

• Ada사용 예 ) “*” 연산자를 행렬 곱셈에 중복 정의 ( 사용자 정의 )

– 이항 연산자 (binary operator)“*”를 행렬 곱셈 연산자로 정의

– 자료형 MATRIX는 별도 선언

– MATRIX 형 검사 - Ada 시스템에서 수행

– A := B * C ;

B, C가 MATRIX 형 - 위 함수 정의대로 수행

B, C가 integer 형 - 정수 곱셈 문맥으로

검사

B, C가 real 형 - 실수 곱셈

function "*"(X, Y : MATRIX) return MATRIX ;

Page 26: Chapter 10 –  부 프로그램

26

10.5 연산자 중복 정의

• 중복 정의 연산자를 결정하기 위한 방법

– 자료형 정보를 파스 트리의 각 노드에 붙인 것을 가정

( 동적 또는 정적으로 결정 )

– 트리의 단 노드들의 자료형 확정 간 노드의 자료형 결정

COMPLEX C

INTEGER I

REAL R . . C = 2 * I + R

(complex)

(complex)=

+ (real)

* (integer)

C

2(integer)

I(integer)

R (real)

Page 27: Chapter 10 –  부 프로그램

27

10.5 연산자 중복 정의• 표 10.2 Ada 에서의 중복 표현 해결 예

procedure MAIN is...package P is function F(X : REAL) return RANGE ; -- P.F function G(X : DOMAIN) return REAL ; -- P.G function K(X : DOMAIN) return BOOLEAN ; -- P.Kend P; function F(X : BOOLEAN) return RANGE ; -- MAIN.F function G(X : DOMAIN) return BOOLEAN ; -- MAIN.G function K(X : DOMAIN) return REAL ; -- MAIN.K S : DOMAIN ; T : RANGE ; U : BOOLEAN ; V : REAL ; use P; ... begin T := F(V) ; -- P.F(V) 를 의미 T := F(U) ; -- MAIN.F(U) 를 의미 T := F(K(S)) ; -- MAIN.F(P.K(S)) 인지 P.F(MAIN.K(S)) 인지 모호함 T := F(G(S)) ; -- MAIN.F(MAIN.G(S)) 인지 P.F(P.G(S)) 인지 모호함end

Page 28: Chapter 10 –  부 프로그램

28

10.6 포괄 기능 (Generic Functions)

• 포괄 프로시저 (generic procedure)

하나 이상의 요소를 매개변수로 받아들여 실 프로시저를

생성할 수 있는 프로시저 틀 (procedure templates)

– 컴파일 시간에 실 매개 변수가 대체되어 실 프로시저를 발생

– 코딩의 오류 감소

– 프로그램의 길이 축소

– 추상화 개념 제공

– ELI, Simula, CLU ( 자료형에 따른 프로시저들 생성 )

Page 29: Chapter 10 –  부 프로그램

29

10.6 포괄 기능 (Generic Functions)

• Ada 의 부프로그램이나 패키지에서 사용되는 포괄 설비

– 매크로 (macro) 의 확장된 개념

– 프로그램 생성 틀 ( 자체가 호출될 수 없음 )

– 실 프로시저 : 번역시 정적 생성 (instantiation)

Page 30: Chapter 10 –  부 프로그램

30

10.6 포괄 기능 (Generic Functions)• 표 10.3 Ada에서의 포괄 프로시저 예

• 포괄 프로시저를 사용하여 실 프로시저를 생성시키는 방법

• 프로시저의 사용

generic type ITEM is private; procedure SWAP(X, Y : in out ITEM) is TEMP : ITEM ; begin TEMP := Y ; Y := X ; X := TEMP ; end ;

procedure SWAPINTEGER is new SWAP(INTEGER) ;procedure SWAPREAL is new SWAP(FLOAT) ;

SWAPINTEGER(A, B) ;SWAPREAL(P, Q) ;

Page 31: Chapter 10 –  부 프로그램

31

10.6 포괄 기능 (Generic Functions)

• 포괄 프로시저 SWAP에 중복 표현을 함께 사용

EXCHG (A, B) 의 해석• A, B 의 자료형에 따라 정수형 , 문자형 , 실수형 , 부울형

SWAP

프로시저 결정

• 포괄 기능 제공 설계 고려 사항

• 포괄기능 사용 가능 연산은 ?• Ada - procedure, function, package

procedure EXCHG is new SWAP(INTERGER) ;

procedure EXCHG is new SWAP(FLOAT) ;

procedure EXCHG is new SWAP(BOOLEAN) ;

procedure EXCHG is new SWAP(CHARACTER) ;

Page 32: Chapter 10 –  부 프로그램

32

10.7 코루틴 (Coroutines)

• 코루틴

– 호출된 프로그램의 수행이 완전히 끝나기 전에 타 프로시저

( 호출 프로시저 포함 ) 로 제어를 넘겼다가 재개 (resume) 할 수

있는 프로시저

Resume A

B

Resume B

Resume B

Resume B

A

Resume A

Page 33: Chapter 10 –  부 프로그램

33

10.7 코루틴 (Coroutines)

• 특징– 코루틴은 제어를 넘겨 받으면 프로시저의 일부만 실행

– 제어의 반환은 실행 일시 정지

– 후에 제어를 받으면 정지된 위치에서 실행 재개 (resume) – 프로시저들간의 관계가 주종 관계가 아님

• coroutine A에서 resume B 문장 실행 시 수행 작업

(1) A의 resume 문장 다음 위치를 A 의 제어 장소에 기억

(2) coroutine B의 실행 위치를 알기 위하여 B 의 제어 장소의 값 참조

(3) B의 제어 장소의 참조된 값으로 제어 분기

• 코루틴은 이산 체계 시뮬레이션 언어의 범주에서 취급

• 경우에 따라 자연스러운 알고리즘 제공

• 기존 언어에서 시뮬레이션으로 간단히 해결

Page 34: Chapter 10 –  부 프로그램

34슬라이드 쇼가 끝났습니다 .

Page 35: Chapter 10 –  부 프로그램

35

용 어 정리

Page 36: Chapter 10 –  부 프로그램

36

부프로그램 (subprogram)

용어 국제 표준 규격 15.06.03

subprogram   부프로그램

A module that has an identifier and that is invoked into the control flow from another

program or by another module by means of a specific language construct and from

which the control flow returns to the invoking program or module

식별자를 가지고 있고 특정 언어 구성자를 이용하여 다른 모듈에 의해서 호출되거

나 ,

다른 프로그램에서의 제어 흐름 (control flow) 속으로 호출되는 모듈로서 그

모듈에서부터 제어 흐름은 호출한 프로그램이나 모듈로 변환된다 .

Page 37: Chapter 10 –  부 프로그램

37

매개 변수 (parameter)

용어 국제 표준 규격 15.03.13parameter (in programming language) 매개 변수 (

프로그래밍 언어에서 )

A language construct for passing data objects or data values between modules.

모듈 간에 자료 객체나 자료값을 넘겨주기 위한 언어 구성자

Page 38: Chapter 10 –  부 프로그램

38

매개 변수 결합 (parameter association)

용어 국제 표준 규격 15.03.16

parameter association 매개 변수 결합

The association between formal parameters and their corresponding actual parameters

in a call or generic instantiation.

호출 또는 포괄 인스턴스화 (generic instantiation) 할 때 형식 매개 변수와 그에

대응되는 실매개 변수 간의 결합

Page 39: Chapter 10 –  부 프로그램

39

위치 매개 변수 결합 (positional parameter association)

용어 국제 표준 규격 15.06.19

positional parameter association 위치 매개 변수 결합

In a subprogram call, the correspondence of an actual parameter with a formal

parameter in the same position in the declaration of the subprogram.

<Note> Contrast with named parameter association.

부프로그램 호출에서 , 부프로그램의 선언에서 주어진 위치에 따라 형식 매개 변수와

실매개 변수를 대응시키는 방법

< 주 > 이름 매개 변수 결합과 대조를 이룸

Page 40: Chapter 10 –  부 프로그램

40

이름 매개 변수 결합 (named parameter association)

용어 국제 표준 규격 15.06.18named parameter

associationassignment by name

이름 매개 변수 결합

In a subprogram call, the explicit naming of the formal parameters corresponding to

actual parameters to establish parameter association.

<Note> 1. In named parameter association, actual parameters can be given in any

order.

2. Contrast with positional parameter association.

부프로그램 호출에서 , 매개 변수 결합을 이루기 위해 실매개 변수에 대응하는 형식

매개 변수의 명시적인 이름을 부여하는 방법

< 주 > 1. 이름 매개 변수 결합에서 실매개 변수는 어떤 순서로나 주어질 수 있다 .

2. 위치 매개 변수와 대조를 이룸

Page 41: Chapter 10 –  부 프로그램

41

함수 (function)

용어 국제 표준 규격 15.06.12function

(in programming language)함수

( 프로그래밍 언어에서 )

A subprogram, usually with formal parameter, that produces a data value which it

returns to the place of the invocation.

<Note> A function may also produce other changes through the use of parameters.

불려진 곳으로 반환되어지는 자료값을 생성하는 부프로그램 , 통상 형식매개변수를

가진다 .

< 주 > 함수는 또한 매개변수의 사용을 통해 다른 변화를 생성할 수도 있다 .

Page 42: Chapter 10 –  부 프로그램

42

실매개 변수 (actual parameter)

용어 국제 표준 규격 15.03.14 actual parameter actual argument 실매개 변수

A parameter, such as an expression, * identifier, or other language construct, used in a

call or generic instantiation for association of a data object with a corresponding

declaration.

<Note> The corresponding declaration is called formal parameter.

식 , 식별자 또는 이외의 언어 구성자들로서 된 매개 변수인데 호출 또는 포괄

인스턴스화 될 때 , 이들 자료 객체와 대응된 선언과의 결합을 위하여 사용된다 .

< 주 > 대응된 선언을 형식 매개 변수라 부른다 .

Page 43: Chapter 10 –  부 프로그램

43

형식 매개 변수 (formal parameter)

용어 국제 표준 규격 15.03.15formal parameterdummy argument 형식 매개 변수

A parameter, define in the declaration of certain modules, that is associated with an

actual parameter in a call or generic instantiation.

어떤 모듈에서 선언하여 정의된 매개 변수인데 , 호출 또는 포괄 인스턴스화 될 때

실매개 변수와 결합된다 .

Page 44: Chapter 10 –  부 프로그램

44

참조 호출 기법 (call by reference, address, location)

용어 국제 표준 규격 15.06.08 call by reference call by address call by location

참조호출주소호출위치호출

A call in which the calling * module provides to the called module the addresses of the

parameters to be passed.

<Note> In a call by reference, the called module has the ability to change the values of

the parameters stored by the calling module.

호출 모듈이 넘겨질 매개 변수의 주소를 호출된 모듈에 제공하는 호출

< 주 > 참조 호출에서는 , 호출된 모듈이 호출 모듈이 저장한 매개 변수의 값을 바꿀 수

있는 능력을 가지고 있다 .

Page 45: Chapter 10 –  부 프로그램

45

값 호출 (call by value)

용어 국제 표준 규격 15.06.09

call by value 값 호출

A call in which calling * module provides to the called module the actual values of the

parameters to be passed.

<Note> In a call by value, the called module cannot change the values of the

parameters stored by or for the calling module.

호출 모듈이 넘겨질 매개 변수의 실제값을 호출된 모듈에 제공하는 호출

< 주 > 값 호출에서는 , 호출 모듈이 저장하거나 호출 모듈이 사용하도록 저장된 실매개

변수의 값을 호출된 모듈이 바꿀 수 없다 .

Page 46: Chapter 10 –  부 프로그램

46

부작용 (side effect)

용어 국제 표준 규격 15.08.03

side effect 부수효과 , 부작용

Any indirect consequence caused by the execution of an expression, statement, or

subprogram.

<Note> Side effect may be intended, for example, to change the data value of a

parameter passed by a function.

식 , 문장 , 부프로그램의 실행에 의해 야기되는 어떤 간접적인 결과

< 주 > 예를 들어 함수에 의해 전달된 매개 변수와 자료값을 바꾸는 것과 같이

의도적으로 부작용을 사용할 수 있다 .

Page 47: Chapter 10 –  부 프로그램

47

이 명 (aliasing)

용어 국제 표준 규격 15.03.19

alias 이명

An alternate identifier for a language construct.

언어 구성자에 대한 대체 식별자

Page 48: Chapter 10 –  부 프로그램

48

중복 정의 (overloading)

용어 국제 표준 규격 15.01.08

to overload 중복 정의하다과적하다 .

To assign more than one meaning to a lexical token.

<Example> The lexical token “+” can mean integer addition, real addition, set union,

concatenation, etc.

하나의 어휘 토큰에 두 개 이상의 의미를 할당하다 .

< 예 > 어휘 토큰 “ +” 에 정수의 덧셈 , 실수의 덧셈 , 결합 , 집합 , 문자열 연결 등을 의미할

수 있다 .

Page 49: Chapter 10 –  부 프로그램

49

포괄적인 (generic)

용어 국제 표준 규격 15.06.28

generic 포괄적인

Pertaining to a language construct that serves as a template for creating an actual

language construct for applicable data types in compliance with the rules of strong

typing.

언어 구성자의 속성으로 강자료형의 규칙에 따라서 적용 가능한 자료형을 위한 실언어 구성자를 생성하기 위한 틀로 제공한다 .

Page 50: Chapter 10 –  부 프로그램

50

코루틴 (coroutines)

용어 국제 표준 규격 15.06.04

coroutine 포괄적인

A subprogram that, when called again after an execution, resumes at the location to

which its previous execution returned.

어떤 실행 후에 다시 호출되었을 때 , 이전의 실행이 반환된 위치에서 실행을 제거하는

부프로그램