조건문 - if
조건문 - if
if 조건문을 배워보기 전
- 프로그래밍에서는 특정 조건, 혹은 특정 변수의 데이터에 따라 다른 출력, 혹은 다른 동작을 해야 할 때가 많다. 현실에서도 많은 조건들에 따라 사람이 행동하듯 우리는 프로그램에게
~~상황에서는 ~~라는 동작을 해야 해.
라고 알려주는 셈이다. 과장을 조금 더 보태면모든 프로그램은 변수와 if문만을 가지고 작성할 수도 있다
라는 말이 있을 정도로 형태는 차이가 있을 수 있지만 거의 대부분의 프로그래밍 언어에서 가장 빠르게 접하고, 자주 사용되는 문법일 것이다. 이번 포스팅에서는if
문에 대해 알아보고, 간단한 예제 코드를 작성하는 시간을 가져보겠다
전설의 프로그래머 밈
- 프로그래밍을 배워보지 않은 사람도 한번 쯤은 접해봤을 전설의 밈이 하나 있다.
- 위의 밈은 프로그래밍적 사고를 아주 정확히 나타내줄 수 있는 밈인데..아내가
마트에서 우유를 사오는데 아보카도가 있다면 6개를 사오라
고 하는 내용이다.이렇게까지 할 필요 없음에도 필자는 괴짜에 가깝기 때문에 굳이코드화 해보자면 대충 아래와 같이 표현할 수 있을 것이다.
// 남편의 두뇌
int main()
{
// 아보카도가 있는가 = Yes
bool IsAvocadoExist = true;
// 아보카도가 있다면
if (IsAvocadoExist == true)
{
// 우유를 6개 산다
BuyMilk(6);
}
else // 아니라면
{
// 우유를 한개 산다
BuyMilk(1);
}
}
- if문은 사용 방법이 아주 심플하기 때문에 더할 나위 없이 깔끔한 코드가 작성된다. 조건을 충족하는지 판단하고 충족할때와 그 예외의 상황 처리도 할 수 있는데, 그 흐름을 살펴보자면 아래 그림과 같다
- 조건에 따라 동작이 달라진 다는 것은, 작업의 흐름 상에서 분기가 갈리는 것과 같다. 그렇기 때문에 조건문은
분기문
으로 불리기도 한다. 자세한 사용 방법은 다음 챕터에서 살펴보자.
어떻게 사용하는가
- if문의 사용 방법은 아주 쉽다.
if
+ (조건식
) + {로직
}으로 이뤄지며, 추가적으로 예외의 상황에 사용될else
를 붙여 사용할 수 있다. 조건식이true
, 즉 참일 때 if문 내부의 구문이 실행되며, 아래는 if문의 사용 방법을 알아보기 위한 예시 코드이다.
예시 코드
int main()
{
int A = 5;
int B = 16;
// A, B 두 변수의 합이 20 초과라면
if (A + B > 20)
{
// 이 구문을 실행하고
std::cout << "두 변수의 합은 20보다 크다";
}
else if (A + B == 20) // 20과 같다면
{
// 이 구문을 실행하고
std::cout << "두 변수의 합은 20이다";
}
else // 위의 두 조건이 모두 만족하지 않는다면 (20 미만이라면)
{
// 이 구문을 실행한다.
std::cout << "두 변수의 합은 20보다 작다";
}
}
결과
-
의도한 결과대로 5와 16의 합은 21이기 때문에 가장 첫 조건식인
if(A + B > 20) {}
의 구문이 실행되었을 것이다. 값을 바꿔서 실행해 본다면, 각 조건식에 맞는 결과를 확인할 수 있다. 다만 예시에서는else if
를 사용했는데, 이는 단순히if
를 여러번 사용하는 것 과는 차이점이 있다. 아래의 예시를 보고 판단해보겠다
예시 코드 2
int main()
{
int A = 50;
// A변수의 값이 20 초과라면
if (A > 20)
{
// 이 구문을 실행하고
std::cout << "A변수의 데이터는 20보다 크다";
}
else if (A > 25) // 25 초과라면
{
// 이 구문을 실행하고
std::cout << "A 변수의 데이터는 25보다 크다";
}
else if (A > 30) // 30 초과라면
{
// 이 구문을 실행한다
std::cout << "A 변수의 데이터는 30보다 크다";
}
}
- 코드를 살펴보면, A의 데이터는 50이고, 조건식들은 차례대로 20초과, 25초과, 30초과 라는 조건을 가지고 있다. 즉, 모든 조건이 충족된다는 말인데 결과는 어떻게 출력될지 확인해보자
- 모든 조건식이 참이기 때문에 모든 구문이 실행될 것 같지만 맨 위의 구문만이 실행되는 것을 확인할 수 있다. 이로서 알 수 있는 것은
else if
문을 사용해 여러 조건을 추가하고, 여러 조건이 충족될 경우 위에 있는 구문이 우선적으로 채택된다는 점이다.
사용시 주의점
- 당연히도 if문 내부에서 추가 if문을 사용해 여러 조건을 추가할 수 있다. 분명 if문 내부에서 if문을 다중으로 사용하는 것은 흔한 일이고 사용할 수 밖에 없는 상황이란 것도 있지만, 자칫 잘못하면
언어는 다르지만아래와 같은 형태가 만들어지는 불상사를 초래할 수도 있다.
- 미관상…도 그렇고 코드 가독성 면에서도 큰 이점을 보기 힘들기 때문에, 아래와 같이 연산자를 사용해 여러 조건식을 한번에 걸거나
int main()
{
int A = 50;
// A변수의 값이 20 초과, 60 이하임을 모두 만족할 때 (AND)
if (20 < A && A <= 60)
{
// 구문 실행
}
// A 변수의 값이 30과 같거나, 40과 같거나, 50과 같을 때(OR)
// 즉, 조건을 하나라도 만족할 때
if (A == 50 || A == 40 || A == 30)
{
// 구문 실행
}
}
- 조건이 충족되지 않는다면 로직(함수)을 종료시키는 등의 처리를 한다면 가독성을 향상시킬 수 있다.
void Sum(int a, int b)
{
// a가 0 이하, b가 0 이하인 조건 중 하나라도 만족한다면
if (a <= 0 || b <= 0)
{
// 함수를 중단한다
return;
}
std::cout << a + b;
}
int main()
{
// 실행되긴 하지만 내부 로직에서 중단된다
Sum(-5, 10);
// 실행된다
Sum(3, 17);
}
댓글 남기기