함수의 수학적 정의는 다음과 같다.
수학에서 함수는 어떤 집합의 각 원소를 다른 집합의 유일한 원소에 대응시키는 이항관계다. - 위키피디아
함수 에 정의역의 한 원소 를 대입할 때 의 값은 에 따라 달라진다. 예를 들어 일 때 f(a)의 값은 다음과 같다.
이를 통해 함수에 대입하는 값(입력)에 따라 함수의 결과(출력)가 정해짐을 알 수 있다. 프로그래밍에서의 함수도 크게 다르지 않다.
함수(function), (중략) 는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미한다. - 위키피디아
프로그래밍에서 함수는 특정한 동작을 수행하는 코드 뭉치이다. 이 코드 뭉치는 입력과 출력을 가지며 입력에 따라 특정한 값을 출력한다. (참고 : 프로그래밍에서의 함수는 한 입력에 대한 출력이 2개 이상일 수 있다)
중복되는 코드를 함수로 묶으면 관리하기 용이하다. 예를 들어 아래 2-1. SayHello 코드 샘플에서 "Good Morning, <이름>" 형식으로 출력하려고 한다면 함수에서 std::cout 부분만 수정하면 된다. 함수로 중복되는 부분을 제거하지 않았다면 각각 수정해야 했을 것이다. 중복되는 부분이 있다면 함수로 분리해 관리하는 것이 훨씬 좋은 방법이다.
주요 언어에서 함수의 구현은 일반적으로 다음과 같다.
함수명 : 함수의 이름
매개변수 목록 : 함수 호출 시 전달될 인자를 받을 변수들의 목록
반환형 : 함수가 출력할 값의 자료형
함수를 호출하는 방법은 일반적으로 아래와 같다.
<함수명> ([인자1, 인자2, ... ]);
Hello, World! Hello, Choi!
3 2
문제 : 입력으로 주어진 두 수를 뒤집어서 더한 뒤 반환하는 함수를 작성하는 문제
핵심 1 : <주어진 수> % 10 = <주어진 수의 일의 자리 수>
핵심 2 : 3개의 정수를 뒤집어야 함. 이때 함수를 통해 중복 코드를 제거할 수 있음.