ISSAC.Min

[C++ Basic] 조건문(Switch) 본문

Programming Language/C++ Basic

[C++ Basic] 조건문(Switch)

ISSAC.M 2019. 4. 21. 21:20
반응형

 1. 조건문(witch)


현재 C++에서는 여러가지 조건문을 지원하며 앞의 포스팅을 통하여 if-else 문에 대해서 알아보았다. 오늘 포스팅은 조건문 중 하나인 Switch 문에 대해서 이야기해보고자 한다.


일반적으로 대부분의 문법을 통하여 똑같은 알고리즘을 구현할 수 있다. 예를 들어 if-else문에서의 알고리즘을 Switch문에서도 사용가능하단 이야기이다. 또한 앞에서 포스팅했던 반복문인 while문도 for문으로 표현이 가능하다.



간단한 예제로 사용자에게 1 ~ 5까지의 정수형을 입력받고 각 입력에 맞는 출력을 해주는 프로그램을 보자.


<if-else문의 사용>

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
#include <iostream>
 
using namespace std;
 
int main() {
    int num;
    cout << "Enter an integer from 1 to 5 : ";
    cin >> num;
 
    if (num == 1) {
        cout << "This number is 1" << endl;
    }
    else if(num == 2) {
        cout << "This number is 2" << endl;
    }
    else if(num == 3) {
        cout << "This number is 3" << endl;
    }
    else if(num == 4) {
        cout << "This number is 4" << endl;
    }
    else if(num == 5) {
        cout << "This number is 5" << endl;
    }
    else {
        cout << "Not a number of ranges" << endl;
    }
    return 0;
}
cs



<switch문의 사용>

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
#include <iostream>
 
using namespace std;
 
int main() {
    int num;
    cout << "Enter an integer from 1 to 5 : ";
    cin >> num;
 
    switch (num) {
    case 1:
        cout << "This number is 1" << endl;
        break;
    case 2:
        cout << "This number is 2" << endl;
        break;
    case 3:
        cout << "This number is 3" << endl;
        break;
    case 4:
        cout << "This number is 4" << endl;
        break;
    case 5:
        cout << "This number is 5" << endl;
        break;
    default:
        cout << "Not a number of ranges" << endl;
        break;
    }
    return 0;
}
cs


앞에서 말했듯이 위의 두 코드는 결과가 동일하게 출력된다. if-else문과 switch문을 비교해 보았을때 switch문이 가독성이 훨씬 좋아보인다. 이게 switch문을 쓰는 가장 큰 이유 중 하나이다. 


그렇다면 본격적으로 switch문에 대해서 파헤쳐보자.


 2. switch문의 구성


    switch (num) {
    case 1:
        cout << "This number is 1" << endl;
        break;
    case 2:
        cout << "This number is 2" << endl;
        break;
    case 3:
        cout << "This number is 3" << endl;
        break;
    case 4:
        cout << "This number is 4" << endl;
        break;
    case 5:
        cout << "This number is 5" << endl;
        break;
    default:
        cout << "Not a number of ranges" << endl;
        break;
    }


switch문의 간단 구동 방식을 알아보면 switch(   ) 빈칸에 구동 변수가 입력되어야하고 이 구동 변수를 각 case    : 와 비교하여 만약에 맞다면 아래의 명령식을 실행시킨다. 그리고 만약 각 case    : 에서 같은 변수값이 존재하지 않는다면 default 명령식을 실행시킨다.


그렇다면 case 안에 포함되어있는 break란 것은 무엇일까?


또한 default는 무엇을 의미할까?


 3. break 명령문


조건문안에는 break란 문법을 사용(조건문만에서 사용가능 x)할 수 있는데 아래의 예시를 먼저 보자.


<break을 사용하지 않았을 때>


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
#include <iostream>
 
using namespace std;
 
int main() {
    int num;
    cout << "Enter an integer from 1 to 5 : ";
    cin >> num;
 
    switch (num) {
    case 1:
        cout << "This number is 1" << endl;
    case 2:
        cout << "This number is 2" << endl;
    case 3:
        cout << "This number is 3" << endl;
    case 4:
        cout << "This number is 4" << endl;
    case 5:
        cout << "This number is 5" << endl;
    default:
        cout << "Not a number of ranges" << endl;
    }
    return 0;
}
cs


위의 코드는 break를 제외한 코드이며 사용자 입력으로 1을 입력해보면



위와 같이 case 1: 뒤에 있는 모든 명령식이 출력된다.

그렇다면 break를 case 3:에 포함시켜보자.


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
#include <iostream>
 
using namespace std;
 
int main() {
    int num;
    cout << "Enter an integer from 1 to 5 : ";
    cin >> num;
 
    switch (num) {
    case 1:
        cout << "This number is 1" << endl;
    case 2:
        cout << "This number is 2" << endl;
    case 3:
        cout << "This number is 3" << endl;
        break;
    case 4:
        cout << "This number is 4" << endl;
    case 5:
        cout << "This number is 5" << endl;
    default:
        cout << "Not a number of ranges" << endl;
    }
    return 0;
}
cs


앞과 동일하게 사용자 입력으로 1을 입력해보면



위와 같이 break를 걸어주었던 case 3:까지만 출력이 된다. 


switch문에서 break의 역활은 컴파일러에 이 switch문은 실행 되었다고 맞침표를 찍어주는 일을 한다.


즉, 앞의 예시 중 break가 없었던 코드에서는 switch문이 끝났다는 명령을 컴파일러에게 말해주지 않았기 때문에 위의 case의 명력식들도 같이 출력된 것이다. 


 4. default 명령어


default 명령어는 단어의 뜻대로 기본값 이다. 아래의 예시를 보면


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
#include <iostream>
 
using namespace std;
 
int main() {
    int num;
    cout << "Enter an integer from 1 to 5 : ";
    cin >> num;
 
    switch (num) {
    case 1:
        cout << "This number is 1" << endl;
        break;
    case 2:
        cout << "This number is 2" << endl;
        break;
    case 3:
        cout << "This number is 3" << endl;
        break;
    case 4:
        cout << "This number is 4" << endl;
        break;
    case 5:
        cout << "This number is 5" << endl;
        break;
    default:
        cout << "Not a number of ranges" << endl;
        break;
    }
    return 0;
}
cs


앞에 if-else 문과 비교했던 그 코드이다. 만약 사용자 입력으로 1~5사이의 정수가 아니고 다른 수를 입력하게 되면 어떻게 될까?



결과는 위와 같이 default 값이 출력된다.


switch문에서 default의 역활은 switch문이 조건에 맞지 않는 구동 변수을 받을때 default 값을 출력한다.


 5. 실습



반응형