4-1-라.if문 연습

if 문은 컴퓨터에게 지능을 부여하는 아주 재미있는 명령이다. 무조건 명령들을 순서대로 실행하기만 하는 것이 아니라 조건에 따라 명령을 실행할지를 결정하거나 여러 개의 명령 중 하나를 선택적으로 실행한다. 가장 기본적인 제어문이고 문법도 아주 간단 명료하므로 이해하기도 쉽다. if문에 대한 몇 가지 연습을 해 보도록 하자.

정수 하나를 입력받고 짝수인지 홀수인지를 판별하여 메시지를 출력해 보자. 어떤 수가 다른 수의 배수인지를 판별할 때는 % 나머지 연산자를 사용한다. 이 연산자에 대해서는 다음 장에서 배우겠지만 좌변을 우변으로 나눈 후 그 나머지를 계산하는데 배수 여부를 판별할 때 흔히 사용된다. 예를 들어 i가 3의 배수인지 알고 싶다면 i % 3이 0인지를 보면 되는데 i를 3으로 나눈 나머지가 0이라면 3의 배수라고 판단할 수 있다.

짝수인지를 판단할 때는 2로 나눈 나머지가 0인지를 보면 된다. 따라서 입력받은 수가 짝수인지 알고 싶다면 if문 다음에 (i % 2 == 0)이라는 조건문을 사용한다. 짝수인 경우와 홀수인 경우에 메시지를 다르게 출력하고자 하므로 if else 구문을 사용해야 한다. 정답은 다음과 같다.

 

: if5

#include <Turboc.h>

 

void main()

{

     int i;

 

     printf("정수를 입력하세요 : ");

     scanf("%d",&i);

     if (i % 2 == 0) {

          printf("%d는 짝수입니다.\n",i);

     } else {

          printf("%d는 홀수입니다.\n",i);

     }

}

 

이번에는 문자열 "Programmer"를 출력하되 정수 하나를 입력 받아서 이 값이 1이면 (20,10)에, 2이면 (40,10)에, 그 외의 숫자이면 (60,10)에 출력하도록 해 보자. 수직 좌표는 10으로 고정되어 있고 1이면 왼쪽, 2는 중앙, 그 외는 오른쪽에 출력하는 것이다. 입력받은 정수값을 평가하여 1인지 2인지 또는 그 외의 수인지를 판별해야 하므로 if else if else 구문을 사용해야 한다.

 

: if6

#include <Turboc.h>

 

void main()

{

     int i;

 

     printf("문자열을 출력할 위치를 입력하세요 : ");

     scanf("%d",&i);

     if (i == 1) {

          gotoxy(20,10);

     } else if (i == 2) {

          gotoxy(40,10);

     } else {

          gotoxy(60,10);

     }

     printf("Programmer\n");

}

 

각 조건을 만족할 때 gotoxy로 문자열을 출력할 위치만 옮긴다. 실제 문자열을 출력하는 printf 문은 조건과 상관없이 실행되어야 할 명령이므로 if문이 완전히 종료되고 난 다음에 따로 호출한다. 입력값에 따라 출력할 문자열이 달라지는 것은 아니므로 printf문이 if 조건문의 명령이 될 필요는 없다. 즉 다음과 같이 작성할 필요가 없는 것이다.

 

     if (i == 1) {

          gotoxy(20,10);

          printf("Programmer\n");

     } else if (i == 2) {

          gotoxy(40,10);

          printf("Programmer\n");

     } else {

          gotoxy(60,10);

          printf("Programmer\n");

     }

 

물론 매 조건마다 출력할 문자열도 다르다면 이렇게 해야겠지만 말이다. 만약 마지막 else문에 그 외의 나머지 모든 숫자가 아니라 i가 3인 경우만으로 제한하고 싶다면 else 다음에 if (i == 3) 조건문을 추가하면 된다. 이렇게 조건문을 작성하면 1, 2, 3 이외의 수를 입력했을 경우 아무 조건도 만족되지 않으므로 if문 전체가 무시되어 아무런 출력도 일어나지 않을 것이다.

다음은 두 개의 정수를 입력받은 후 두 값의 대소 관계를 비교해 보자. 두 값의 대소 관계는 크다, 작다, 같다 세 가지 종류가 있으므로 이번에도 if else if else 문을 사용해야 한다.

 

: if7

#include <Turboc.h>

 

void main()

{

     int i,j;

 

     printf("첫 번째 정수를 입력하세요 : ");

     scanf("%d",&i);

     printf("두 번째 정수를 입력하세요 : ");

     scanf("%d",&j);

 

     if (i > j) {

          printf("%d보다 %d가 더 작습니다.\n",i,j);

     } else if (i < j) {

          printf("%d보다 %d가 더 큽니다.\n",i,j);

     } else {

          printf("%d와 %d는 같은 수입니다.\n",i,j);

     }

}

 

마지막 else문이 만족할 때는 앞쪽 두 조건이 이미 거짓으로 평가된 후이며 이 때는 i와 j가 확실히 같다고 판단할 수 있으므로 별도의 if (i == j) 조건을 점검할 필요가 없다. 실습 내용이 조금 단조로운 감이 있는데 현재 여러분들은 기본적인 입출력 명령과 if 문만 배웠기 때문이다. 조건문에 사용할 수 있는 다양한 연산자나 반복적인 조건 판단 방법 등을 배우게 되면 훨씬 더 재미있고 실용적인 예제들을 만들 수 있을 것이다.