파라미터
파라미터(parameter) 또는 매개변수(媒介變數)는 수학과 통계학에서 어떠한 시스템이나 함수의 특정한 성질을 나타내는 변수를 말한다. 모수(母數)라고도 한다. 일반적으로는 θ라고 표현되며, 다른 표시는 각각 독특한 뜻을 지닌다. 함수의 수치를 정해진 변역에서 구하거나 시스템의 반응을 결정할 때는 독립변수는 변하지만 매개변수는 일정하다. 다른 매개변수를 이용해 함수의 다른 수치를 다시 구하거나 시스템의 다른 반응을 볼 수도 있다.[1]
목차
개요[편집]
컴퓨터 프로그래밍에서 파라미터(parameter, 매개변수)란 변수의 특별한 한 종류로서, 함수 등과 같은 서브루틴의 입력값(input)으로 제공되는 여러 데이터 중 하나를 가리키기 위해 사용된다. 여기서 서브루틴의 인풋으로 제공되는 여러 데이터들을 전달인자(argument)라고 부른다. 보통 매개변수의 목록은 서브루틴의 정의 부분에 포함되며, 매번 서브루틴이 호출될 때 마다 해당 호출에서 사용된 전달인자들을 각각에 해당하는 매개변수에 대입시켜 준다.
보통 수학에서 사용되는 것과 마찬가지로, 전달인자는 (log(37)에서 37과 마찬가지로) 실제로 함수 또는 루틴에 전달되는 값을 의미하며, 반대로 매개변수는 함수의 내부에서 해당 함수(앞의 예에서 log)로 전달된 값을 가리키기 위한 변수를 의미한다.
대부분의 경우 매개변수는 call by value의 형태로 동작하게 되며, 이 경우 서브루틴 내부에서 매개변수는 전달 인자를 복사한 독립적인 지역변수의 형태로 동작하게 된다. 반면 call by reference의 경우에는 서브루틴 내부에서의 동작이 이를 호출한 부분에서의 전달인자에 까지 영향을 주게 된다.
매개변수가 어떻게 정의되는지와 전달인자가 서브루틴의 매개변수에 어떻게 전달되는지에 대한 구문은 각각의 프로그래밍 언어에 따라 정의되지만, 이것이 각각의 컴퓨터 시스템 내부에서 실제로 어떻게 구현되는지에 대해서는 해당 시스템의 호출 규약에 달려있다.[2]
특징[편집]
매개변수와 인수[편집]
함수의 매개변수(parameter)란 함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수이다. 또한, 함수의 인수(argument)란 함수가 호출될 때 함수로 값을 전달해주는 변수를 가리킨다. 대부분의 함수는 하나 이상의 매개변수를 가지며, 매개변수가 없는 함수도 존재한다.
매개변수 전달 방식[편집]
함수로 전달된 인수에 저장된 값을 매개변수에 전달할 때 다음 바익 중 하나를 선택할 수 있다.
- 값 전달 방식
- 참조 전달 방식
값 전달(passing by value)[편집]
기본적으로 함수의 인수는 값 전달(passing by value) 방식으로 매개변수로 전달된다.
인수를 함수에 전달하면, 새롭게 생성된 매개변수에 전달받은 값이 복사되어 저장된다.
이처럼 매개변수에 저장된 값은 전달받은 데이터의 복사본으로, 함수 안에서 변경되어도 함수 밖의 원본 데이터에는 영향을 주지 않는다.
function increment($para){ $para++; // $value의 값을 복사하여 increment() 함수에 인수로 전달함. } $value = 1; increment($value);
위의 예제에서 매개변수 $para는 함수가 호출될 때 생성되며, 전달받은 값인 1을 2로 증가시킨다.
하지만 함수 밖에 존재하는 변수 $value의 값은 변하지 않는다.[3]
참조 전달[편집]
함수 내부에서 함수 밖의 데이터를 조작하기 위해서는 해당 변수를 전역 변수로 선언할 수도 있다.
하지만 참조 전달(pass by reference)을 이용하면 더욱 유연한 코드를 작성할 수 있다.
참조 전달은 인수로 전달받은 값을 복사하는 것이 아닌, 전달받은 원본 데이터에 대한 참조 변수를 매개변수에 전달한다.
따라서 참조 전달은 원본 데이터의 복사된 값을 가지는 것이 아니라 원본 데이터를 그대로 참조하게 된다.
그래서 함수 내부에서 값을 변경하면, 함수 밖의 원본 데이터도 같이 바뀌게 된다.
참조 전달을 사용하기 위해서는 함수를 선언할 때 매개변수 앞에 '&'기호를 붙여주면 된다.
function increment(&$para) // 인수로 전달되는 값의 원본을 참조함. { $para++; } $value = 1; increment($value);
위의 예제에서는 참조 전달 방식을 사용하였기 때문에 함수 밖에 존재하는 변수 $value의 값이 같이 변경되었다.[3]
활용[편집]
단일 파라미터 메소드[편집]
1. 메소드의 구조상에서 타입의 위치에 void를 넣는다.
2. 다음으로 메소드 이름을 지어준다다.
3. 입력값을 저장하기위한 파라미터를 입력값의 형식에 맞게 타입을 정하고 변수명을 설정한다.
// 단일 파라미터 메소드 정의 public static void NAME(TYPE VAR) { ... }
이렇게 정의된 단일 파라미터는 아래와 같은 형식으로 호출 된다.
입력된 X값은 파라미터, 즉 입력 변수인 VAR에 대입이 된다.[4]
// 단일 파라미터의 호출 // 입력값 X는 파라미터 VAR로 대입됨 NAME(X);
다중 파라미터 메소드[편집]
여러 입력값을 받아서 수행하는 메소드의 경우, 즉 파라미터가 2개 이상인 메소드는 아래와 같이 정의 한다.
public static void NAME(TYPE VAR1, TYPE VAR2) { … }
단일 파라미터 메소드와 비교해 보면, 단지 파라미터가 한개 더 추가되었을 뿐이다.
3개, 4개, 그 이상의 경우도 마찬가지로 파라미터만 추가로 선언해주면 된다.
이렇게 정의된 메소드는 아래와 같이 호출한다. 여기서 입력값 X는 위에 정의된 파라미터 VAR1로 대입되고, Y 또한 VAR2로 대입 된다.[4]
NAME(X, Y);
각주[편집]
참고자료[편집]
- 〈매개변수〉
- 〈매개변수(컴퓨터 프로그래밍)〉
- 〈매개변수와 인수〉
- 〈매소드와 파라미터〉
같이 보기[편집]