1. 프로그램에서, 함수 이란?
ㅇ 특정 기능을 수행하는 코드의 묶음 ☞ 부프로그램 서브루틴 함수 프로시저 비교 참조
- 일련의 수행 과정을 문장으로 표현하고,
- 이를 코드 블록으로 감싸서,
- 하나의 실행 단위화 한 것
ㅇ 함수는, 프로세스 추상화의 일종 임
- 복잡한 실행 절차를 구분지어 감싸 묶고, 이를 단순화시켜 이름을 붙인 것
※ 한편, 수학 함수와는 달리,
- 파라미터(입력),반환값(출력)이 없을 수도 있음
※ 한편, 특정 프로그래밍 언어 상의 함수 例)
- C 함수, 자바스크립트 함수, PHP 함수, 파이썬 함수 등 참조
2. 함수의 장점
ㅇ 프로그램 재사용으로 인한 절약
- 메모리 공간, 코딩 시간의 절약, 프로그램 크기를 줄임
ㅇ 가독성 증가
- 1개 호출문에 의해 실행
. 세부사항을 숨기면서 프로그램의 논리 구조를 강조함
.. 사용자는 함수 호출이름,매개변수,기능 정도 만을 알면 됨
ㅇ 유지보수 및 확장성 용이, 문제 해결성 및 분할성 제고, 사용 용이 등
3. 함수의 구성 요소
ㅇ 이름 (Name)
- 수행 동작에 이름을 부여함
ㅇ 매개변수/인수 (Parameter)
- 함수에게 전달하는 정보
ㅇ 출력 값 (Return Value)
- 함수 수행 결과의 반환
ㅇ 몸체 (Body)
- 변수 선언 및 실행부
ㅇ 참조 환경 (Reference Environment)
- 참조될 수 있는 모든 변수들의 집합으로 그려지는 환경
4. 함수의 선언/정의/호출/문법
※ ☞ 함수 선언, 함수 정의, 함수 호출, 함수 문법 참조
- 함수 선언 : 일련의 동작을 추상화시켜줌
- 함수 정의 : 수행 동작을 자세하게 기술
- 함수 호출 : 함수는 호출을 통해서 만 실행됨
5. 함수에서 매개변수 전달 방법의 종류
※ ☞ 매개변수 전달 기법 참조
- 값 전달 (call by value) : 실 매개변수의 값을 형식 매개변수에 전달
- 참조 전달 (call by reference) : 실 매개변수의 저장 장소를 전달
- 이름 전달 (call by name) : 실 매개변수의 이름을 전달
6. [참고사항]
ㅇ 고차 함수
- 함수를 인수(파라미터)로써 받을 수 있거나, 함수를 반환할 수 있는 함수
ㅇ 클로저
- 자기 자신이 정의된 환경으로부터, 함수 내 자유 변수의 식별자 결정을 하는 기능 구조
ㅇ 중첩 함수
- 함수 내 또다른 함수로써 정의되는 함수
ㅇ 메모이제이션
- 재귀적 함수 호출에서, 중복 계산이 없도록, 한 번 계산된 값을 저장해서,
프로그램이 빠르게 수행하는 기법
ㅇ 화살표 함수
- function 키워드 및 중괄호 {} 를 줄이려고 고안된 단축 문법
ㅇ 콜백 함수
- 함수(또는,객체)를 매개로 전달하고서, 그것으로하여금 역 호출 등을 하게 하는 기법
ㅇ 함수형 프로그래밍
- 함수들의 집합/조합으로써 프로그램을 구성