if 분기문 C++ 자습서 26

if 분기문 C++

if 구문, if 문, if 분기문, if 브랜치 등 다양한 이름으로 불리우는 if문에 대해서 알아보겠습니다.

if 문은 프로그램이 진행 흐름을 분기하도록 합니다. Flow Chart 라는 것을 들어본 적이 있다면 if 문은 Flow Chart 의 흐름을 제어하기 위한 도구입니다.

프로그래밍은 if 문을 사용하기 시작하면 상당히 강력해집니다. 어떤 주어진 데이터에 대하여 선택적으로 코드를 실행시킬 수 있음을 의미합니다.

우선 if문을 일상의 언어로 표현해 보겠습니다.

돈이 1500원 있다. 1500원으로 택시는 탈 수 없다. 1500원으로 마을버스는 탈 수 있다. 마을버스를 타고 간다.

[의사코드]

돈 = 1000

if(돈 > 4000)
   택시를 탄다
if(돈 > 2000)
   지하철을 탄다.
if(돈 > 1000)
   마을버스를 탄다

[실행결과]
마을버스를 탄다

다소 대충 만든 의사코드이지만 그럴 듯한 일상의 비유입니다.

교통편을 이용하는데 돈의 양에 좌우되는 것은 늘 일상에서 겪는 일입니다. 현실에서는 돈을 써버리면 잔고에서 – 마이너스가 되므로 두번 실행할 수는 없습니다. 물론 프로그래밍에서도 잔고를 삭제할 수 있습니다. 최근에 많은 인기를 얻고 있는 암호화폐도 분산된 노드의 장부에 비트코인을 사용한 만큼 차감하는 방법을 사용하고 있습니다.

딱히 암호화폐 뿐만 아니라 우리의 은행 잔고도 컴퓨터에 저장되어 있습니다. 전자적 돈이라는 것은 결국 어떤 실체가 있는게 아니라 컴퓨터안에 기록되 있는 숫자로 보관되므로 인터넷 뱅킹을 할 때 전산적으로 처리되는 것 입니다.

전산상에서의 일들은 모두 어딘가에서 입력을 받고 조건을 검사하고 업데이트(갱신)하는 일들로 이루어져 있습니다. 컴퓨터를 다시 보면 무엇인가 조건들을 끓임없이 처리하는 기계죠.

그러니 if 문은 거의 모든 상황에서 쓰이기 마련입니다.

아래는 if 문의 문법입니다.

어딘가 for 문이나 while 문과 닮아보입니다. 표현식 검사를 하는 부분에서 while 문하고 거의 똑같아 보이죠. 차이점은 while 문의 표현식 검사는 루프를 계속 진행할지 여부를 결정하는 것이고 if 문의 표현식 검사는 해당 구문 { } – (중괄호 묶음) 을 한번 실행할 지 결정합니다. if 문은 true of false 에 따라 한번 진행한다는 부분과 while 문은 false 가 될때까지 계속 같은 body 를 실행한다는 부분이 차이라고 볼 수 있습니다.

if(표현식 검사)
    구문(body)

아래의 예제는 while 문과 함께 사용한 if 문 예제입니다. if 문을 혼자 사용하기도 하지만 while 이나 for 루프 등 루프와 함께 사용하면 매우 유용합니다.

아래 예제에서는 전체 글자수를 세면서 그 안에 공백문자(스페이스)의 글자수를 따로 세고 있습니다. 이렇게 루프를 돌면서 if 에 걸리게 해놓으면 여러가지 다양한 일들을 손쉽게 프로그래밍으로 처리할 수 있습니다.

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main() {

	char text[50] = { 0, };

	cout << "문장을 입력하세요." << endl;
	cin.getline(text, 50);

	int i = 0;
	int space = 0;

	while (text[i] != '\0')
	{
		if (text[i] == ' ')
			space++;
		cout << text[i];
		i++;
	}

	cout << "\n공백문자 수: " << space << endl;
	cout << "글자수 : " << i << endl;

	return 0;
}

[실행결과]

문장을 입력하세요.
test is good
test is good
공백문자 수: 2
글자수 : 12

if 문으로 소수 구하기

if문은 소수를 계산하는데도 사용할 수 있습니다.

아래 예제는 소수를 구하는 코드입니다. 가장 원초적인 코드로 소수는 자기자신과 1만으로 나누어 떨어져야 합니다. 예를 들어 3은 소수입니다. 4는 2로 나누어지므로 소수가 됩니다.

이와 같은 조건들을 if 문으로 구현할 수 있습니다. 꼭 한가지 방법만 있는 것은 아닙니다.

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main() {

	int rangePrime = 0;

	int i, j;

	cout << "소수의 범위를 입력하시오 : ";
	cin >> rangePrime;

	for (i = 0; i < rangePrime; i++)
	{
		// 0과 1에는 볼일이 없음.
		if (i == 0 || i == 1) continue;

		for (j = 2; j <= i; j++)
		{
			if (i % j == 0)
			{
				break;
			}
		}
		if (i == j)
		{
			cout << i << " is Prime Number." << endl;
		}
	}

	return 0;
}


[실행결과]

소수의 범위를 입력하시오 : 50
2 is Prime Number.
3 is Prime Number.
5 is Prime Number.
7 is Prime Number.
11 is Prime Number.
13 is Prime Number.
17 is Prime Number.
19 is Prime Number.
23 is Prime Number.
29 is Prime Number.
31 is Prime Number.
37 is Prime Number.
41 is Prime Number.
43 is Prime Number.
47 is Prime Number.

요약

if 분기문 C++ 사용법에 대해서 알아봤습니다. 어떤 조건에 따라 분기한다는 개념. if 문의 표현식 조건의 값인 true 와 false 에 따라 분기합니다. 즉 if 문은 두갈래 길에서 선택하는 것과 같습니다.

더 많은 선택지에서 결정하는 방법도 있습니다. switch 나 if else 를 중첩해서 사용하는 방식입니다.

그전에 먼저 if 분기에 대한 개념을 확실히 잡는 것이 좋습니다.

결국 따지고 보면 if 문이나 for 루프나 goto 문으로 제어되는 것과 같습니다. 표현식 검사 후에 if 문은 한번 실행한 명령어로 되돌아가지 않고 for, while 반복문은 true의 경우 동일한 지점으로 돌아가는 것 입니다.

if 문 while 문 이렇게 구분하는 것은 컴퓨터 코드니까 그런 것인데 로직상으로는 한번이냐 여러번이냐 이런 본질적 차이에도 가끔은 주목해볼 필요가 있습니다.

참고문서

if 분기문 C++ | if else 문 | 관계연산자 | 논리연산자

C++ If…else (With Examples) (programiz.com)

C++ If … Else (w3schools.com)

Leave a Comment