프로그래밍을 처음 배우다 보면 꼭 만나게 되는 개념이 있습니다. 바로 함수(Function)와 프로시저(Procedure)입니다.
겉으로 보기엔 둘 다 특정 작업을 수행하는 코드 블록이라는 점에서 비슷해 보이지만, 그 목적과 사용 방식에는 중요한 차이가 있습니다.
이번 글에서는 함수와 프로시저가 각각 무엇인지, 어떤 차이가 있는지 쉽고 명확하게 설명해드리겠습니다.
함수(Function)와 프로시저(Procedure)란?
- 함수(Function)는 특정 연산이나 처리를 수행하고, 그 결과값을 반환하는 코드 블록입니다.
- 프로시저(Procedure)는 특정 동작을 실행하지만, 결과값을 반환하지 않는 코드 블록입니다.
즉, 둘 다 명령을 수행한다는 점은 같지만, 함수는 수행 결과를 돌려주고, 프로시저는 동작만 실행하고 끝나는 것이지요.
첫째, 결과값 반환 여부
함수와 프로시저를 구분하는 가장 큰 기준은 바로 결과값을 반환하는가, 하지 않는가입니다.
- 함수는 반드시 결과값을 반환합니다.
예를 들어,sum(5, 3)
이라는 함수를 호출하면, 8이라는 결과값이 반환됩니다.
사용자는 이 반환값을 다른 계산에 활용하거나 화면에 출력할 수 있습니다. - 프로시저는 결과값을 반환하지 않고, 단순히 동작만 실행합니다.
예를 들어,jump(50)
이라는 프로시저를 호출하면 캐릭터가 50만큼 점프하는 동작을 수행하며, 반환되는 값은 없습니다.
둘째, 사용 목적의 차이
- 함수의 목적은 입력값에 따라 계산을 수행하고, 그 결과를 돌려주는 것입니다.
그래서 함수는 주로 계산, 결과 처리, 데이터 변환 등에 사용됩니다. - 프로시저의 목적은 동작이나 명령을 수행하는 것입니다.
예를 들어, 캐릭터를 이동시키거나 메시지를 출력하는 등 결과값이 필요 없는 작업에 적합합니다.
셋째, 프로그래밍 언어에 따른 차이
프로그래밍 언어마다 함수와 프로시저를 다루는 방식은 조금씩 다릅니다.
- Pascal이나 SQL과 같은 언어에서는 함수와 프로시저를 명확히 구분하여 선언하고 사용합니다.
- Python, JavaScript 등 현대의 많은 언어에서는 반환값이 없는 함수를 만들어 프로시저처럼 사용하는 경우가 많습니다.
이런 경우에는 엄밀히 말하면 함수지만, 결과를 반환하지 않으므로 프로시저와 같은 역할을 하게 됩니다.
예시로 이해하는 함수와 프로시저
구분 | 함수(Function) | 프로시저(Procedure) |
---|---|---|
결과값 반환 | O (반드시 반환) | X (일반적으로 반환하지 않음) |
사용 목적 | 계산된 결과를 반환 | 동작을 실행 |
예시 | sum(5, 3) → 8 |
jump(50) → 캐릭터가 점프 |
언어 차이 | 대부분의 언어에서 구분 | 현대 언어에서는 함수로 통합되기도 함 |
쉬운 예로 비유해보면?
- 함수는 마치 계산기처럼 입력값을 넣으면 결과값이 나오는 도구입니다.
- 프로시저는 커피 자판기처럼 동작만 수행하고 결과값은 돌려주지 않습니다.
엔트리(Entry)에서는 어떻게 사용할까?
교육용 코딩 플랫폼 엔트리에서는 별도의 프로시저 개념은 없지만,
반환값이 없는 함수를 만들어 사용하면 사실상 프로시저 역할을 하게 됩니다.
예를 들어,
함수 이름: 점프(높이)
내용: 캐릭터가 지정한 높이만큼 점프
이렇게 만들어 놓고 점프(50)
이라고 호출하면,
결과값을 반환하지 않기 때문에 동작만 수행하는 프로시저처럼 동작하게 됩니다.
마무리 정리
- 함수는 값을 반환하는 코드 블록입니다.
- 프로시저는 동작만 실행하고 끝나는 코드 블록입니다.
- 현대 언어에서는 반환값이 없는 함수가 프로시저 역할을 하기도 합니다.
프로그래밍을 배우는 초보자라면, 이 차이를 잘 이해하고 상황에 맞게 활용하는 습관을 들이면
더 깔끔하고 유지보수가 쉬운 프로그램을 만들 수 있습니다!