두 숫자를 입력 받아서 더하고 출력하는 단순한 기능을 개발해보자.
먼저 1 + 2
를 수행하고, 그 다음으로 10 + 20
을 수행할 것이다.
package method;
public class Method1 {
public static void main(String[] args) {
// 계산 1
int a = 1;
int b = 2;
System.out.println(a + " + " + b + " 연산 수행");
int sum1 = a + b;
System.out.println("결과1 출력 : " + sum1);
// 계산 2
int x = 10;
int y = 20;
System.out.println(x + " + " + y + " 연산 수행");
int sum2 = x + y;
System.out.println("결과2 출력 : " + sum2);
}
}
int a = 1;
int b = 2;
System.out.println(a + " + " + b + " 연산 수행");
int sum1 = a + b;
int x = 10;
int y = 20;
System.out.println(x + " + " + y + " 연산 수행");
int sum2 = x + y;
계산 1, 계산 2 둘 다 변수를 두 개 선언하고, 어떤 연산을 수행하는지 출력하고, 두 변수를 더해서 결과를 구한다.
만약 프로그램의 여러 곳에서 이와 같은 계산을 반복해야 한다면? 같은 코드를 여러번 반복해서 작성해야 할 것이다. 더 나아가서 어떤 연산을 수행하는지 출력하는 부분을 변경하거나 또는 제거하고 싶다면 해당 코드를 다 찾아다니면서 모두 수정해야 할 것이다.
이런 문제를 어떻게 깔끔하게 해결할 수 있을까? 잠깐 아주 간단하게 수학의 함수를 알아보자.
숫자를 2개 입력하면 해당 숫자를 더한 다음에 그 결과를 출력하는 아주 단순한 함수이다. 이 함수의 이름은 add
이다.
add(a, b) = a + b
add
이고 a
, b
라는 두 값을 받는 함수이다. 이 함수는 a + b
연산을 수행한다.add(1, 2) -> 결과 : 3
add(5, 6) -> 결과 : 11
add(3, 5) -> 결과 : 8
a + b
라는 연산을 수행한다.만약 두 수의 평균을 구해야 한다면 매번 (a + b) / 2
라는 공식을 사용해야 할 것이다.
이것을 함수로 만들어두면 다음과 같이 사용하면 된다.
avg(a, b) = (a + b) / 2
avg(4, 6) -> 결과 : 5
avg(10, 20) -> 결과 : 15
avg(100, 200) -> 결과 : 150
수학의 함수의 개념을 프로그래밍에 가지고 온다면 어떨까? 필요한 기능을 미리 정의해두고 필요할 때 마다 호출해서 사용할 수 있기 때문에 앞서 고민한 문제들을 해결할 수 있을 것 같다.
프로그램 언어들은 오래 전 부터 이런 문제를 해결하기 위해 수학의 함수라는 개념을 차용해서 사용한다.