Function   함수

(2018-12-31)

Function Declaration, 함수 선언, Function Definition, 함수 정의, Function Call, 함수 호출

1. 프로그램에서, 함수 이란?

  ㅇ 특정 기능을 수행하는 코드의 묶음  ☞ 부프로그램 서브루틴 함수 프로시저 비교 참조

  ※ 한편, 수학 함수와는 달리, 파라미터(입력),반환값(출력)이 없을수도 있음

  ※ 여러 프로그래밍 언어 상의 함수 例) ☞ C 함수, 자바스크립트 함수 등 참조

  
2. 함수 사용 장점프로그램 재사용으로 인한 절약
     - 메모리 공간, 코딩 시간의 절약, 프로그램 크기를 줄임 

  ㅇ 가독성 증가 
     - 1개 호출문에 의해 실행
        . 세부사항을 숨기면서 프로그램논리 구조를 강조함
           .. 사용자는 함수 호출이름,매개변수,기능 정도 만을 알면 됨

  ㅇ 유지보수확장성 용이, 문제 해결성 및 분할성 제고, 사용 용이 등


3. 함수의 구성 요소

  ㅇ 이름 (Name)
     - 수행 동작에 이름을 부여함
  ㅇ 매개변수 (Parameter)
     - 함수에게 전달하는 정보
  ㅇ 출력 값 (Return Value)
     - 함수 수행 결과의 반환
  ㅇ 몸체 (Body)
     - 변수 선언 및 실행부
  ㅇ 참조 환경 (Reference Environment)
     - 참조될 수 있는 모든 변수들의 집합으로 그려지는 환경


4. 함수선언/정의, 구성 요소, 호출 문법함수 선언
     - 대상에 이름을 부여함 (실제 수행할 동작 등을 그 이름과 관련시킴)
        . 컴파일러에게, 인터페이스 형식(파라미터) 및 자료형에 대한 정보를 제공
           .. 즉, 아직 구체적인 몸체가 포함되지 않은채 일련의 동작을 추상화시켜줌

  ㅇ 함수 정의 
     - 수행 동작을 자세하게 기술 (코드로 구현하는 것)
        . 구체적인 몸체가 이때 포함됨
     - 이때, 실제 명령문들이 오직 한번 만 작성되며, 다른 함수들로부터 은닉되어짐

  ㅇ 함수 호출
     - 함수는 호출을 통해서 만 실행됨
        . 함수 호출시에는, `함수명`과 피호출 함수로 전달할 `실 매개변수`를 명시해야 함

  ㅇ 함수 문법 例)
     
// 함수 선언/정의
function 함수명 (형식 매개변수1, 형식 매개변수2, ...) {
   함수 본문
}

// 함수 호출
함수명 (실 매개변수1, 실 매개변수2, ...);
5. 함수에서 매개변수 전달 방법 종류 ㅇ 값 전달 (Call by Value) - 실 매개변수의 값을 형식 매개변수에 전달하는 방법 - 가장 일반적인 데이터 전달 방법으로, 함수 간의 독립성 유지에 적합한 방식 ㅇ 참조 전달 (Call by Reference) / 주소 전달 (Call by Address) - 실 매개변수주소(l-value, Address)를 형식 매개변수에 넘겨주는 방법 - 실 매개변수형식 매개변수가 동일 변수 임 . 例) 주소포인터 타입의 매개변수로 직접 전달 . 例) 배열의 경우, 배열 이름이 배열 주소이므로 자연스레 주소 전달이 이루어짐 ㅇ 이름 전달 (Call by Name) 6. 특별한 함수 응용 例) ㅇ 고차 함수 - 함수를 인수(파라미터)로써 받을 수 있거나, 함수를 반환할 수 있는 함수클로저 - 자기 자신이 정의된 환경으로부터, 함수자유 변수식별자 결정을 하는 기능 구조 ㅇ 중첩 함수 - 함수 내 또다른 함수로써 정의되는 함수메모이제이션 - 재귀적 함수 호출에서, 중복 계산이 없도록, 한 번 계산된 값을 저장해서, 프로그램이 빠르게 수행하는 기법 ㅇ 화살표 함수 - function 키워드 및 중괄호 {} 를 줄이려고 고안된 단축 문법콜백 함수 - 함수(또는,객체)를 매개로 전달하고서, 그것으로하여금 역 호출 등을 하게 하는 기법


[부프로그램/함수/프로시저] 1. 부 프로그램 2. 함수 3. 매개 변수 4. 콜백 함수 5. 블록 구조 6. 클로저

 
        최근수정     요약목록     참고문헌