식별자, 자료형을 배우고 나면 본격적으로 이제 함수를 배우기 시작하실 겁니다.
그런데... 한국말이 이렇게 어려웠던 적이 있었나.. 싶을 정도로 함수에서 이상한 용어들이 등장합니다.
어떤 교수님은 매개변수라 그러시고, 어떤분은 파라미터, 누구는 인자, 인수 다들 각기 다른 용어를 사용해서 우리의 머릿속을 헤집어 놓습니다. 그 덕분에 정작 개념은 안잡히고 머리는 어지럽고,, 개발자하지 말까... 포기하고 싶은 순간이 찾아오는데요. 저도 같은 시기를 겪어서 이번 포스팅을 시작으로 개발 언어별로 공통적으로 사용되는 개념을 정리해보고자 합니다.
정리하자면 이번 편에서 우리가 정리하고갈 용어목록은 아래와 같습니다.
매개변수, 매개인수, parameter(파라미터), Argument(아규먼트), 전달인자, 인수...
알고보면 별것도 아닌데 불리는 이름이 참 많습니다.
본격적인 정리에 앞서 해당 용어들이 사용되는 함수의 구조부터 살펴보겠습니다.
| 함수(Function)란?
함수는 저희가 초등학교 때부터 배운 친구로서 간단합니다.
쉽게 말해 값을 넣으면 그러면 자기가 계산을 해서 결과값을 뱉어주는 아이를 말합니다. 아래 그림과 같지요.
이 친구도 부르는 프로그래밍별로 부르는 이름이 천차만별인데요.
함수(function) = 서브루틴(subroutine) = 루틴(routine) = 메서드(method) = 프로시저(procedure) 모두 같다고 보시면 됩니다. 물론, 자세히 따지고 들어가면 조금씩 차이가 있지만 우선 그 이야기는 나중에 하도록 하겠습니다.
| 함수의 구조
1. 함수에서 값을 호출한다.
2. 함수가 호출되어 계산을 수행한다.
3. 계산의 결과값을 반환해준다.
| 함수의 구조_반환값이 있는 경우
C/C++에서 함수의 반환값이 있는 경우 계산의 결과값을 함수가 호출된 위치로 반환해준다.
반환값이 있는 함수를 만들기 위해서는 함수의 자료형으로 원하는 반환값의 자료형을 작성해준다.
| 함수의 구조_반환값이 없는 경우
C/C++에서 함수의 반환값이 따로 없는 경우 반환하지 않고 계산만 해준다.
반환값이 없는 함수를 만들기 위해서는 함수의 자료형을 void로 지정해준다.
| 함수의 장점
위에 설명처럼 함수는 계산을 따로 해주는 아이여서 하나의 큰 프로그램을 여러 부분으로 분리함으로써 구조적 프로그래밍을 가능하게 해줍니다. 또한, 함수를 정의해두면 해당 계산이 필요할때마다 함수만 호출해주면 되므로 같은 코드를 여러번 쓸 필요도 없어집니다. 그리고 함수의 기능과 내부 구현을 분리하여 결과적으로 캡슐화가 이루어집니다.
함수에 대해 알아보면서 함수는 값을 주고 받는 아이라는 것을 알게 되었습니다.
그런데 여기서 나오는 값이 바로 여러가지 이름으로 불리는 문제의 그 친구입니다.
그림 하나로 딱 정리하겠습니다.
| 매개변수(Parameter, 파라미터)
변수의 한 종류로서 함수의 선언과 정의 부분에 본인이 받을 값을 정의하는 변수라고 생각하시면 됩니다.
매개변수는 영어로는 Parameter(파라미터)라고 불리며, 개발자에 따라 매개인수, 인수라고도 부릅니다.
결론, 매개변수 = Parameter(파라미터) = 매개인수 = 인수
| 전달인자(Argument, 아규먼트)
매개변수와 혼동해서 쓰시는 분도 계시는데 엄밀히 따지면 전달인자는 함수 호출시 전달되는 실제값을 의미합니다.
전달인자는 영어로는 Argument(아규먼트)라고 불리며, 개발자에 따라 매개인자, 인자라고도 부릅니다.
결론, 전달인자 = Argument(아규먼트) = 매개인자 = 인자
용어를 통일해서 하나만 사용하면 좋은데, 애초에 프로그래밍 언어가 영어에서 넘어오다보니 사람마다 해석에 따라 부르는 이름이 여러가지인 것 같습니다. 배우는 입장에서는 누군가 정리해주면 딱 좋을텐데, 교수님들께서는 그렇지 않으시죠. ㅠㅠ... 초보 개발자들은 프로그래밍도 프로그래밍이지만 이런 용어부터가 큰 벽이지 않나 싶네요.
그 동안 매개변수, 전달인자에 대해 헷갈리셨던 분들께서는 이 글을 통해 고민을 해소하셨길 바라며, 글을 마치겠습니다.
감사합니다. ^^
| 참고 사이트
'코딩 | 개념 정리 > Common Concept' 카테고리의 다른 글
프로그래밍 공통 개념 뽀개기 5탄_주석 (0) | 2022.05.08 |
---|---|
프로그래밍 공통 개념 뽀개기 4탄_자료형(Data Type) (0) | 2021.09.21 |
프로그래밍 공통 개념 뽀개기 3탄_식별자(Identifier) (0) | 2021.09.20 |
프로그래밍 공통 개념 뽀개기 2탄_포인터(pointer) (0) | 2021.09.19 |