if 문 중첩, switch ~ case문, break, defalut
일상 생활에서도 다양하고 복잡한 선택의 순간이 있듯이 프로그램도 마찬가지 입니다.
따라서 if 문을 자유롭게 응용하는 능력이 반드시 필요합니다.
if 문을 중접해서 사용하는 방법과 주의할 점을 살펴보고 다중 선택에 알맞은 switch ~ case문에 대해 살펴보자.
if 문 중첩
어떤 조건을 검사하기 전에 선행조건이 있다면 if문 안에 if문을 넣어 사용합니다.
#include<stdio.h>
int main(void)
{
int a = 20;
int b = 10;
if (a > 10) //
{
if (b >= 0)
{
b = 1;
}
else
{
b = -1;
}
}
printf("b : %d\n", b); //대입이 수행되면 두 값이 같음
return 0;
}
if 문을 중첩해서 쓰는 이유
이유1) 선행조건이 있으면 불필요한 조건 검사를 하지 않습니다.
이유2) 선행조건이 없어도 실행 효율을 위해 의도적으로 중첩해 사용할 수 있습니다.
분할 정복 기법
비교 항목이 많은 경우 여러번 중첩해서 쓰면 실행 시간을 줄이는데 도움이됨
switch ~ case문
등수에 따라 상금을 차등 지급하는 경우
1등 300만, 2드 200만, 3등 100만을 지급한다.
여기서 상금의 지급 조건은 등수이고 해당 등수는 상수 1,2,3 입니다.
이렇게 여러 개의 상수 중에서 조건에 해당하는 하나를 골라 실행하는 것이 swich~case문입니다.
#include<stdio.h>
int main(void)
{
int rank = 2, m = 0;
switch (rank) //rank의 값이 얼마인지 확인
{
case 1: //rank가 1이면
m = 300; //m= 300을 수행하고
break; //블록을 벗어남
case 2: //반복
m = 200;
break;
case 3:
m = 100;
break;
default:
m = 10;
break;
}
printf("m : %d\n", m);
return 0;
}
규칙1) 조건식은 정수식만 사용합니다.
규칙2) 기본적으로 case는 break를 포함합니다.
break는 해당 블록을 탈출하는데 사용
하지만 break 생략이 가능
필요에 따라 생략할 수 있습니다. break를 사용하면 적절한 시점에 블록을 탈출하여 필요한
부분만 선택적으로 실행할 수 있습니다.
그러나 반드시 사용해야 하는 것은 아닙니다.
하지만 웬만하면 안하는 게 좋은거 같다.
'코딩 > c언어' 카테고리의 다른 글
6-2 반복문 활용 (0) | 2021.05.02 |
---|---|
반복문 6-1 while 문 , for문 , do ~ while (0) | 2021.05.02 |
선택문 5-1 if 문 (0) | 2021.05.01 |
4.2 그 외 유용한 연산자 (0) | 2021.04.28 |
산술 연산자, 관계 연산자, 논리 연산자 (0) | 2021.04.27 |