여러분 안녕하세요. 세이버입니다.
12강에서는 11강에 이어서 조건문 중 하나인 switch 함수를 소개해드릴 겁니다..
조건문에 대한 개념이 부족하신 분들은 11강을 보고 오심을 추천드립니다.
세이버의 C언어 강의 11강_조건문(if 함수) : https://poci.tistory.com/13
세이버의 C언어 강의 11강_조건문(if 함수)
여러분 안녕하세요. 세이버입니다. 이번 강에서 다룰 주제는 조건문입니다. 조건문을 배우시면 이제 어느 정도 퀄리티 있는 프로그램 코드를 작성하실 수 있으실 겁니다. 그럼 강의 시작합니다. 1. 조건문이란 무..
poci.tistory.com
1. switch 함수
switch를 영어사전으로 검색해보면 여러 뜻들이 나옵니다.
제 개인적인 생각으로 '3. (철로의) 선로 변환기'가 switch 함수와 적합하다고 생각합니다.
그래서 예시도 선로 변환기로 들겠습니다.
이렇게 여러 가지 선로가 겹쳐있다고 가정해봅시다.
선로 변환기의 역할은 '어느 방향의 선로를 이을 것인가?'입니다.
선로변환기(중간에 초록 부분)에서 어느 쪽을 선택하냐에 따라 위, 아래, 중간 선로 중 하나로 이어지게 됩니다.
switch 함수도 이와 마찬가지로 어떤 조건이 성립하냐에 따라 실행하는 코드 영역이 달라지는 함수입니다.
switch 함수의 구조는 다음과 같습니다.
switch 함수의 구조
switch(변수)
{
case 값1:
실행할 코드
break;
case 값2:
실행할 코드
break;
}
switch 함수의 구조는 조금 특이하므로 숙지해두시길 바랍니다.
break는 아직 배우지 않은 것이라 설명은 나중에 하겠습니다.
참고로 위와 같은 구조 때문에 여러 서적에서 switch 함수를 switch-case 함수라고도 합니다.
switch 함수는 () 안에 변수를 넣습니다.
() 안의 변수가 값1이면 값1의 영역을, 값2이면 값2의 영역을 실행하는 동작 방식을 가지고 있습니다.
실습으로 넘어가 보도록 하겠습니다.
이렇게 switch 함수를 사용할 수 있습니다.
사용자가 1을 입력하면 num에 1이 저장되어 13줄의 case 1을 만족해 14줄이 실행되고, 22를 입력하면 num에 2가 저장되어 17줄의 case 2를 만족해 18줄이 실행되는 구조입니다.
그러면 case에 없는 숫자, 예를 들어 4를 입력하면 어찌 될까요????
당연히 아무것도 출력이 되지 않습니다.
그러면 4를 출력하게 하려면 어떻게 해야 할까요?? case 4를 추가하면 됩니다.
그러면 모든 숫자에 대한 값을 출력하려면 모든 숫자에 대응하는 case를 만들어야 하나요????
네...아쉽지만 그래야 합니다...
switch 함수의 단점은 case에 조건을 사용할 수 없다는 것입니다. (num>=10과 같은)
그래서 case가 많아지는 경우 약간 노가다를 해야 한다는 단점이...
반대로 case가 적은 경우에는 가독성이 높아진다는 장점이 있습니다.
switch 함수의 문제점은 또 있습니다.
프로그래머는 사용자가 1에서 5까지만 입력하기를 원하는데, 실수로 6을 입력했다고 가정합시다.
프로그래머는 6에 대한 case를 지정하지 않았을 것이고, 프로그램에는 오류가 발생하게 될 것입니다.
여기서 프로그래머는 어떻게 해야 이 방법을 해결할 수 있을까요??
모든 숫자에 case를 지정할 수도 없고...
2. default
이럴 때 사용되는 것이 default입니다.
default의 뜻을 검색해보면
이렇게 나오는데, 컴퓨터에서의 default의 뜻은 초기 상태입니다..
switch 함수에서의 default는 어떤 case도 없는 상태를 뜻합니다.
즉, 모든 case에 일치하지 않는 값은 default 영역에서 처리된다는 의미입니다.
num에 1~3이 아닌 다른 수가 들어가면 default 부분의 26줄 printf 함수가 동작하게 됩니다.
이렇게 default를 사용함으로써 프로그래머가 지정하지 않은 값을 입력하였을 때 생기는 오류를 방지할 수 있습니다.
직접 코드를 타이핑해봄으로써 실행결과를 확인해주세요.
3. break
이번장에서는 break에 대해서 알아보겠습니다.
break는 '중단시키다'라는 뜻이 있습니다.
자동차의 브레이크도 이 뜻에 걸맞게 자동차가 주행하는 걸 중단시키는 역할을 합니다.
C언어의 break도 이와 마찬가지로 프로그램의 흐름을 중단시키는 역할을 합니다.
후에 배울 반복문에서는 break를 만나면 반복문을 종료하는 역할을 합니다.
(이건 반복문을 소개할 때 따로 언급해드리겠습니다.)
switch 함수에서의 break는 각 case를 구분시켜주는 용도로 사용합니다.
위와 같이 switch 함수는 case를 위에서부터 조건에 맞는 case를 찾을 때까지 내려가는 구조입니다.
그런데 문제는 조건에 맞는 case를 찾아 실행을 하는 순간 그 밑의 case들을 모두 실행하다는 것입니다,
이렇게 break를 주석화하고 실행해보겠습니다.
2를 입력해서 case 2 부분이 실행되었지만, break가 없기 때문에 밑에 있는 case 3과 default 부분도 실행되었습니다.
break를 명시하지 않으면 다른 case까지 실행되어 원하지 않는 값이 출력되기에 꼭 명시해야 합니다.
이번 강은 여기서 마치겠습니다.
이제 여러분들은 조건문을 배웠으니 프로그래밍 실력이 월등히 높아졌을 것입니다.
다음 강에서는 반복문에 대해서 소개해드리도록 하겠습니다.
오늘도 수고하셨습니다.
정리
- swtich 함수 : 조건에 맞는 case를 찾아 실행하는 함수
- 장점 : 가독성이 높아짐
- 단점 : case가 많아질수록 가독성이 줄어든다.
- default를 이용하여 모든 case에도 맞지 않은 경우를 처리할 수 있다.
- break를 이용하여 case들을 구분시켜줘야 한다.
강의가 유익하셨거나 마음에 드셨으면 구독과 좋아요, 댓글 부탁드립니다.
궁금하신 점이나 질문은 댓글이나 메일을 남겨주세요.
'C언어' 카테고리의 다른 글
세이버의 C언어 강의 14강_반목문이란 무엇인가 Part 2 (while 함수) (0) | 2019.03.12 |
---|---|
세이버의 C언어 강의 13강_반목문이란 무엇인가 Part 1 (for 함수) (0) | 2019.03.05 |
세이버의 C언어 강의 11강_조건문(if 함수) (0) | 2019.02.17 |
세이버의 C언어 강의 10강_주석이란 무엇인가 (0) | 2018.11.11 |
세이버의 C언어 강의 9강_연산자란 무엇인가(part 2) (0) | 2018.11.11 |