[C] 5. If / switch문 (흐름과 제어)

Wonder_Land🛕·2022년 7월 13일
0

[C]

목록 보기
5/18
post-thumbnail
  1. if문
  2. if ~ else 문
  3. if ~ else if ~ else 문
  4. switch문
  5. Q&A
  6. 마치며

1. if문

  • if문 : 어떤 조건을 만족하는 경우, 명령문을 수행하기 위해 사용

if문에 대한 결과로는 True와 False가 있으며, True를 반환할 경우 명령문을 실행하고, False를 반환할 경우 명령문을 실행하지 않습니다.

if (조건식)
{
	...
} 

다음은 if문을 활용한 예시입니다.
변수 grade가 80이 넘으면 문구를 출력하는 예제입니다.

#include <stdio.h>

int main(void) {
	int grade = 80;

	if (grade >= 80)
	{
		printf("축하합니다. 합격입니다!");
	}
	return 0;
}

[Result]
축하합니다. 합격입니다!


2. if ~ else문

  • if ~ else문
    : 어떤 조건을 만족하는 경우의 명령문만족하지 않았을 경우의 명령문상호 배타적으로 수행하고자 할 때 사용

if문에 대한 결과로는 True와 False가 있으며, True를 반환할 경우 명령문1을 실행하고, False를 반환할 경우 else문을 실행합니다.

if (조건식) //True일 때 실행
{
	...
} 
else	//False일 때 실행
{
	...
}

다음은 if ~ else문을 활용한 예시입니다.
변수 grade가 80점 이상이면 합격, 아니라면 불합격입니다.

#include <stdio.h>

int main(void) {
	int grade = 80;

	if (grade >= 80)
	{
		printf("합격");
	} 
	else
	{
		printf("불합격");
	}
	return 0;
}

[Result]
합격

  • if문의 명령문과 else문의 명령문은 상호 배타적으로 동작하기 때문에, else문의 명령문은 실행되지 않습니다.
  • if문의 명령문과 else문의 명령문 가독성을 위해 역시 동일한 수준의 들여쓰기를 유지해야 합니다.

3. if ~ else if ~ else문

  • if ~ else if ~ else문
    : 2개 이상의 다중 조건을 처리하고자 할 때 사용

if문과 else if문에 대한 결과로는 True와 False가 있으며, if문에서 True를 반환할 경우 명령문1을 실행하고, False를 반환할 경우 else if문을 실행합니다.
else if 문에서 True를 반환할 경우 명령문2를 실행하고, False를 반환할 경우 else문을 실행합니다.

(1) 형식

if (조건식1)
{
	...
} 
else if (조건식2)
{
	...
}
else
{
	...
} 

여기서 else if문은 여러 번 사용할 수 있습니다.

#include <stdio.h>

int main(void) {
	int grade = 80;

	if (grade >= 90)
	{
		printf("A");
	} 
	else if (grade >= 80)
	{
		printf("B");
	}
	else if (grade >= 70)
	{
		printf("C");
	}
	else
	{
		printf("F");
	}
	return 0;
}

if문, elif문, else문의 각 명령문은 상호 배타적으로 동작합니다.


4. switch문

우선 switch문은 if문과 거의 비슷합니다.

다음 코드에서는 변수 option에 의해 if문이 실행됩니다.
1일 때, 2일 때, 다른 경우일 때를 나눠서 실행하게 됩니다.

#include <stdio.h>

int main(void) {
	int option;
	scanf("%d", &option);

	if (option == 1)
	{
		printf("1번 기능");
	}
	else if (option == 2)
	{
		printf("2번 기능");
	}
	else if (option == 3)
	{
		printf("3번 기능");
	}
  	else
    {
    	printf("기타 기능");
    }
	return 0;
}

그런데 만약에 경우가 10가지가 넘는다면 어떡할까요?

그러면 우리는 if문을 10번 사용해야 합니다.
코드를 어떻게 작성하느냐에 따라 다르겠지만 사실 이쯤되면 엄청나게 길고 복잡해지는 코드가 될 수 있죠.

그렇기 때문에
변수에 대해 비교문이 반복되는 경우에는 보다 깔끔한 switch을 사용할 수 있습니다.

  • switch문
switch (변수)
{
  case1:
    ...
    break;
  case2:
    ...
    break;
  .
  .
  .
  default:
      ...
      break;
}
  • 이 때, swith문에 사용되는 변수는 반드시 정수 데이터(정수값, 문자)를 보관해야 합니다.
    (다른 자료형인 경우는 오류가 발생합니다.)

  • 은 무조건 상수여야 합니다.
    (다른 변수들이 오면 오류가 발생합니다.)

  • default문은 if문의 else와 같은 역할입니다.

  • break문이 없다면 각 case들은 상호 배타적으로 실행되지 않습니다.
    (만약 위의 예제에서 break문이 없다면 case1 ~ default문 전체가 다 실행됩니다.)

따라서 위의 if문을 활용한 예시를
switch문으로 변환하면

#include <stdio.h>

int main(void) {
	int option;
	scanf("%d", &option);

	switch (option)
	{
	case 1:
		printf("1번 기능");
		break;
	case 2:
		printf("2번 기능");
		break;
	case 3:
		printf("3번 기능");
		break;
	default:
		printf("기타 기능");
		break;
	}

	return 0;
}

와 같이 할 수 있습니다.

물론 엄청나게 긴 코드는 아니기 때문에 차이가 있나 싶지만,
가독성이나 이해하기에는 보다 더 낫습니다.

(if문과 switch문의 내부적인 차이를 이해하기에는 이 글의 원본인 여기를 참고해주세요.)


5. Q&A

-


6. 마치며

-

[Reference] : 위 글은 다음 내용을 참고, 인용하여 만들어졌습니다.

profile
아무것도 모르는 컴공 학생의 Wonder_Land

0개의 댓글