wookss blog

프로시저와 함수의 차이, 매개변수 전달 방식 본문

Study/프로그래밍

프로시저와 함수의 차이, 매개변수 전달 방식

wooklab 2013. 5. 21. 00:28
반응형

프로시저와 함수의 차이를 Ada 예를 통해 설명하여라.

부프로그램은 일반적으로 프로시저(procedure)와 함수(function)로 구분한다.

프로시저

값을 반환하지 않고 부작용을 만듦.

함수

값을 반환하고 부작용은 없어야 함.

(부작용을 만든다는 것 : 매개변수나 프로시저 외부에서 정의된 변수의 값을 수정하는 것.)

FORTRANAda와 같은 언어는 프로시저와 함수를 위해 다른 예약어를 사용하는데, Ada는 프로시저를 정의 할 때, procedure라는 예약어를 사용한다. 그리고 Ada함수 정의 형식은 function라는 예약어를 사용한다.

Ada의 프로시저 정의의 예약어 사용

Ada의 함수 정의 형식의 예약어 사용

procedure incre(x, y: in out integer) is

begin

x := x+1;

y := y+1;

end incre;

function 함수이름 (매개변수) return 반환값타입 is

begin

return 반환값;

end 함수이름;

 

 

 

 

 

매개변수 전달 방식에 따른 전달 값 표현

 

다음 C문장으로 작성된 프로그램이 있다.

sub(int x, int y)
{

x = x+1;

y = y+1;

}

int main(void)

{

int data[5] = {1, 2, 3, 4, 5};

int a=1;

sub(a, data[a]);

sub(a, data[a]);

// adata의 값은?

}

다음 각각의 매개변수 전달 방식에 따라 동작할 경우에 변수 adata의 값을 나타내어라.

(1) 값 전달

a=1, data[a]= 1, 2, 3, 4, 5

(2) 참조 전달

a=3, data[a]= 1, 3, 4, 4, 5

(3) 이름 전달

a=3, data[a]= 1, 2, 4, 5, 5

 

 

반응형