2022. 2. 7. 18:02ㆍIoT Embeded 강의
제어문에 관하여 정리하겠습니다. 제어문은 프로그램의 흐름을 제어하는 역할을 하는데 비슷한 일을 여러 번 반복하는 반복문과 선택적으로 어떤 기능을 수행하도록 하는 조건문으로 나누어 집니다. 제어문을 배운 이후에는 프로그램을 이용해 다양한 기능을 수행하도록 설계할 수 있습니다.
#조건문의 기본 문법
여러분이 만약에 택배 물품들을 분류한다고 생각해봅시다. 여러 분류 기준 중에서 무게에 따라 택배 물품을 분류한다고 하면 조건문을 이용해 무게에 따라 박스들을 분류할 수 있습니다.
if (박스무게가 30kg이상)
{
가장 아래 줄에 배치한다.
}
else if (박스무게가 15kg이상)
{
2번째 줄에 배치한다.
}
else if(박스 무게가 1kg이상)
{
3번째 줄에 배치한다.
}
else
{
소물품 보관함에 보관한다.
}
특정 무게 범위에 속한 택배 박스를 조건에 맞게 배치하는 행동을 설정하여 창고에 분류할 수 있습니다. 이처럼 프로그램 내에서도 조건문을 이용하여 특정 조건을 만족하면 어떤 기능을 수행하도록 만들 수 있습니다.
1. if~else 문
if else 는 단어 그대로 만약 어떤 조건을 만족한다면 아래 기능을 수행하라는 명령어 입니다. 기본적인 형태는 다음과 같습니다.
1) 단순 if 조건문
if (조건식)
{
명령어
}
위의 식에서 조건식은 어떤 조건을 나타내는 문장으로 관계, 논리연산자를 이용해 정의할 수 있습니다. 예를 들어 'x가 10보다 크면' 이라는 식은 'x>10'과 같이 쓸 수 있습니다. 조건식의 간단한 예들을 적어두겠습니다.
ex) x == 10, x<25 , x>10 && x<25(10<x<25) , x<10 || x>25 (x<10 이거나 x>25)
위의 예시를 보면 숫자를 입력했을 때, 12를 넣으면(if 조건식) "명령문이 실행됩니다."라는 문장이 printf 함수(if 조건문 내의 함수)에 의해 출력됩니다.
2) if~else
if의 조건식을 만족하지 않는 경우 else 의 명령문이 수행됩니다.
3) if elseif
if, else if 의 조건을 만족하는 경우 각각의 명령문이 실행됩니다. else if 는 여러 번 쓸 수 있습니다. 유의할 점은 if조건식이 참이면서 다음에 오는 else if 의 조건식도 참인 경우에 else if 는 실행되지 않습니다. 왜냐하면 if 가 거짓인 경우에만 다음 else if 로 넘어가기 때문입니다. 만약 if elseif 문을 사용하지 않고 단순if문을 여러개 쓴다면 각 if문의 조건이 참이면 모두 실행됩니다.
- if else if 문과 단순 if문 반복의 차이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#include <stdio.h>
int main()
{
int x = 10;
if (x < 20)
{
printf("if Activatied\n");
}
else if (x <30)
{
printf("else if 1 Activatied\n");
}
else if (x <50)
{
printf("else if 2 Activatied\n");
}
else
{
printf("Not Activatied\n");
}
if (x < 20)
{
printf("if 1 Activatied\n");
}
if (x < 30)
{
printf("if 2 Activatied\n");
}
if (x < 50)
{
printf("if 3 Activatied\n");
}
return 0;
}
|
cs |

4) if elseif else
if, else if 의 조건을 만족하지 않는 경우 else의 명령문이 수행됩니다.
2. switch~ case 문
switch (변수)
{
case 값1:
명령문;
break;
case 값2:
명령문;
break;
default:
명령문;
switch 문은 조건에 맞는 값이 나오면 그 case에 속한 명령어를 실행하는 제어문입니다. if문과 비슷하지만 차이점이 존재하고 쓰는 용도도 조금 다릅니다. if문은 조건식의 참,거짓(만족하느냐) 여부에 따라 명령문이 실행되지만 switch 문은 switch 의 변수 값이 case 값에 대응되게 명령문이 실행됩니다.
위의 예시를 보면 먼저 태어난 달을 'month'라는 변수에 입력하도록 printf, scanf_s 함수를 이용하여 작성했습니다. 제가태어난 달을 2월이라고 하면 숫자 2를 입력하게 됩니다. 입력 시 month에 '2' 라는 값이 들어가게 됩니다. switch 변수가 현재 switch(month)로 'month' 로 잡혀있는 것을 볼 수 있습니다. 현재 month는 '2'이므로 case의 값이 '2'인 case 2: 밑에 명령어가 실행되게 됩니다.
예시들을 보면 if문과 switch 문의 기능이 비슷해보이지만 쓰는 상황은 조금 다릅니다. if 문에는 조건식이 들어가므로 좀 더 복잡한 조건 형태를 부여할 수 있습니다. 반면에 switch 는 case에 어떤 값을 넣기 때문에 단순한 조건 형태입니다. 정리하자면 if문은 논리연산자를 조합한 매우 복잡하고 다양한 조건문을 이용하여 분기할 수 있는 반면, switch 문은 값에 의한 분기만 가능합니다. 따라서 위의 예시처럼 단순한 값에 의해 분기가 이루어지는 경우, 또 분기 수가 3개 이상 되는 경우에는 switch 문을 쓰는 것이 바람직합니다.
'IoT Embeded 강의' 카테고리의 다른 글
Over flow (오버플로우)와 Under flow(언더플로우) (0) | 2022.02.08 |
---|---|
반복문의 기본 문법 (0) | 2022.02.08 |
C언어 에러 종류 (0) | 2022.02.04 |
컴퓨터의 구조와 CPU동작 원리 (0) | 2022.02.04 |
디지털 논리회로 (0) | 2022.01.29 |