c언어 제어문 - 1. 선택문 if, if ~ esle, if ~ else if ~ else 까지

지난 글에서는 scanf를 활용을 통한 C언어의 데이터 입력방법에 대해서 공부했습니다. 지금까지는 차례대로 실행되는 프로그램을 만들었다면 이제는 조건에 따라서 실행시키거나 실행시키지 않는 문법(조건문) 중에서도 선택문에 대해서 공부해보겠습니다. 

 

선택문 if문

영어 if의 뜻은 "(만약)~ 면" 이라는 뜻을 가지고 있습니다. c언어에서의 if문을 사용할때도 조건식을 만들고 조건을 만족할때 실행할 수 있는 실행문으로 구성되어 만들어지게 됩니다. "내 얼굴이 공유라면 연예인을 하겠다"에서 " 내 얼굴이 공유라면"의 조건문이 있고 "연예인을 하겠다"는 실행문이 됩니다. 

 

만약 얼굴이 공유라면 조건이 참이되어 실행문인 "연예인을 하겠다"를 실행시키지만 얼굴이 공유가 아니라서 실행문을 실행하지 않습니다.. 

 

if ( 조건식 )

 실행문;
}

if문의 사용은 if ()의 괄호 사이에 "~크다면, ~ 작다면, ~와 같다면, ~와 다르다면" 등등의 조건에 해당하는 조건을 설정하고 중괄호( { ) 로 시작해 실행문을 작성하고 중괄호 ( } )로 if문의 조건식을 끝내줍니다. 

 

위에 소스코드2개를 보면 모두 변수 a의 값을 1로 초기화 했습니다. 먼저 왼쪽에 있는 소스코드를 보겠습니다. 왼쪽에는 "변수 a가 1과 같으면" 이라는 조건을 제시하고 해당 조건이 맞다면 실행문에 있는 printf 함수가 실행되어 실행된 화면에는 "a 와 1은 같습니다." 라는 문구가 표시되게 됩니다. 

 

두번째 소스에서의 조건문은 "변수 a가 0이 같으면"이라고 제시하고 있지만 a와 0이 다르기 때문에 if문속 실행문이 실행되지 않고 건너뛰게 되어 아랫줄의 "if문 속 실행문이 생략됨"의 문구가 표시되어지게 됩니다. 

 

선택문 if ~ else

위의 선택문에서는 조건을 만족할 때에만 실행되었습니다. 그렇다면 조건을 만족하지 못할 때에는 어떻게 해야 될까?? if에서는 else를 사용해 조건이 만족하지 않았을때 실행할 수 있도록 해줍니다. 

 

위에 예시로 들었던 if문 하나를 사용했을때
"내 얼굴이 공유라면 연예인을 하겠다" 라는 조건이 있어서 얼굴이 공유가 아니라면 평생 조건이 실행되지 않습니다. 

하지만 if ~ else를 사용하면 얼굴이 공유가 아닐때의 실행문을 만들어 사용할 수 있습니다. 
"내 얼굴이 공유라면 연예인을 하겠다 그렇지 않다면 개그맨을 하겠다" 라는 식을 만들 수 있습니다. 
if ( 얼굴 == 공유 ){
 연예인을 한다 
}else{
 개그맨을 한다.
}

if문 하나를 사용할때에는 참인 경우에만 실행하게 되지만 if else를 사용하게 되면 참과 거짓 둘중에 하나는 무조건 실행되어지게 됩니다. 

 

선택문 if ~ else if ~ if

위에서는 참일 때(if) 또는 참과 거짓(if ~ else)일때의 선택문을 확인해봤습니다. 그렇다면 3개 이상의 실행문 중 하나를 선택해야 할때는 어떻게 사용하게 될까? 바로 if ~ else if ~ else문을 사용하는 방법이 있습니다. 

 

얼굴이 공유라면 잘생겼다.      if( 얼굴 == 공유)

얼굴이 평범하면 평범합니다.      else if ( 얼굴 == 평범)

그렇지 않다면 당신은 오징어 입니다.         else

 

이렇게의 선택을 해야할때에는 else if를 활용해서 조건을 계속 추가해줄 수 있습니다.

#include <stdio.h>

int main(void) {

	char face[20] = "오징어";

	if (!strcmp(face,"공유")) {
		printf("잘생겼다");
	}
	else if(!strcmp(face,"평범")){
		printf("평범합니다.");
	}
	else {
		printf("당신은 오징어 입니다.");
	}

	return 0;
}

위의 소스코드를 가지고 한번씩 확인 해보는 것도 좋습니다. 위에 소스는 문자열을 비교하는 실행문이지만 if ~ else if ~ else 의 동작이 어떻게 되는지 까지만 확인하고 넘어가줍니다. 문자열의 비교는 !strcmp("오징어","오징어") <<와 같은 식으로 작성합니다. 

 

문자열 보다 쉽게 확인할 수 있도록 숫자를 비교하는 if문의 소스코드를 같이 첨부합니다. 

#include <stdio.h>

int main(void) {

	int a = 1;

	if (a < 1) {
		printf("a는 0입니다.");
	}
	else if (a > 1) {
		printf("a는 1보다 큽니다.");
	}
	else {
		printf("a는 1입니다.");
	}

	return 0;
}

소스 코드를 확인하시고 if ~ else if ~ else의 동작이 어떻게 돌아가는지 else if를 하나씩 추가해보면서 확인하시면 공부에 도움이 됩니다. 

댓글

Designed by JB FACTORY