프로그래밍이란 기본적으로 내 생각을 컴퓨터가 이해할 수 있도록 입력하고 동작하게 만드는 일입니다. 프로그래밍을 하기 위해서는 생각이 논리적이로 명확하게 정리되어 있어야 합니다. '생각의 흐름은 명쾌한가?', '누락되거나 중복되는 내용은 없는가?', '이 프로그램은 결과를 올바르게 계산해 낼 것인가?'에 대해서 먼저 종이와 연필로 그려보는 것이 프로그래밍에 큰 도움이 됩니다. 생각이 명료하면 프로그래밍이 즐겁습니다. 프로그래밍 언어를 통해 명령을 내리기만 하면 되기 때문입니다.
대부분의 프로그래밍 언어에서 조건문과 반복문을 사용할 수 있습니다. 조건문은 조건이 '참(True)'일 때 처리하는 명령과 '거짓(False)'일 때 처리하는 명령을 달리 가져갑니다. 반복문은 일정 범위 또는 특정한 조건을 만족하는 동안 명령을 반복해서 수행합니다.
R도 if/else, for, while과 같은 조건문과 반복문을 제공합니다. 우선, R에서 조건문을 사용하는 방법과 활용 예를 살펴보겠습니다. 조건문을 사용하기 위한 문법은 아래와 같습니다.
if (조건식) {
조건식이 참일 때 실행되는 명령
} else {
조건식이 거짓일 때 실행되는 명령
}
R에서의 조건문은 중괄호({ })로 둘러쌉니다. 조건을 판단하기 위한 연산자로는 '같다(==)', '같지 않다(!=)', '크거나 같다(>=)', '크다(>)', '작거나 같다(<=)', '작다(<)'가 있습니다. 조건문의 중첩 역시 가능합니다.
이제 R의 조건문을 사용해 간단한 프로그램을 만들어 보겠습니다. 콜라츠의 추측은 1937년 이 추측을 제기한 로타르 콜라츠의 이름을 딴 것으로 3n+1추측 또는 우박 추측으로 불립니다. 어떤 임의의 자연수를 뽑아 그 수가 짝수면 2로 나누고, 홀수면 3을 곱한다음 1을 더합니다. 이 과정을 반복하면 결국 1이 된다는 것입니다. Collatz라는 함수를 만들어 자연수 10이 과연 몇 번 만에 1이 되는지 프로그래밍 해보겠습니다. 함수를 정의 하는 방법은 '헤론의 공식으로 삼각형의 넓이를 구하는 함수 정의하기' 포스팅을 참고하시기 바랍니다.
Collatz <- function(n) { if (n %% 2 == 0) { return (n/2) } else { return (3*n + 1) } }
함수를 정의 했습니다. 한 번 실행해 보겠습니다.
> Collatz(10) [1] 5 > Collatz(5) [1] 16 > Collatz(16) [1] 8 > Collatz(8) [1] 4 > Collatz(4) [1] 2 > Collatz(2) [1] 1
6번 만에 만에 1이 되는 군요. 그런데 1이 될 때까지 함수를 계속 입력해야 하는 것이 불편합니다. 한 번만 입력하면 몇 번만에 1이 되는지 횟수와 숫자가 변해가는 과정도 보여주고 싶습니다. 다음 포스팅에서 반복문을 사용하여 구현해 보겠습니다. 사진: 위키피디아