switch문이 무엇인지 모르시는 분들은 동일 게시판의 해컴님이 쓰신 강의를 보시고 오시기 바랍니다.
글로 된 강의지만 이해하여 도움이 되셨으면 좋겠습니다.
-------------------------------------------------------------------------------------------
switch문은 많은 쓰임을 가지고 있습니다.
먼저 switch문을 알려드리기 전에 goto문과 label에 대해서 따로 강의하고 싶지만
일단은 위를 조금이라도 이해하고 계신 분들을 대상으로 강의하겠습니다.
먼저 해컴님의 강의를 보고 오신 분이라면 switch라고 하는 선택문이 어떨 때 쓰이는지,
어떠한 형식으로 쓰이는지 대충 감을 잡고 오셨을 것이라고 생각됩니다.
저는 추가적으로 switch문이 가지는 유용성에 대해서 살펴볼 것입니다.
1. case문은 조건을 실행하는 것이 아닌, 조건으로의 이동이다.
위의 말만 보고는 조금 이해가 안 되시는 분들을 위해 if문과 비교해서 설명하도록 하겠습니다.
if문의 경우에는 { } (중괄호) 안에 있는 내용을 실행하는 것을 의미합니다.
(if문에 대한 지식이 부족한 분들은
조건문 기초 강의를 보고 오시는 것을 추천드립니다.)
하지만 switch문은 if문과는 다르게 해당 label로 이동하는 것을 의미합니다.
아래의 예를 들어 살펴보도록 하죠
switch(@list)
{
case 1:
(@list 변수가 1일 때 실행될 내용)
break;
case 2:
(@list 변수가 2일 때 실행될 내용)
break;
}
대충 이런식으로 해컴님의 강의를 보신 분들은 switch문의 사용법과 형태에 대해서 이해하고 있을 것입니다.
위를 if문으로 억지로 변경하자면 아래와 같습니다.
if(@list == 1) { @list 변수가 1일 때 실행될 내용 }
else if(@list == 2) { @list 변수가 2일 때 실행될 내용 }
위의 switch문과 if문이 보기에 같아보이시나요?
물론 이 경우에는 둘 다 완벽하게 똑같은 동작을 합니다.
하지만 위에서 말했듯이 switch문은 조건을 실행하는 것이 아니라 조건으로의 이동입니다.
위의 break는 switch문의 종료를 의미하는 구문입니다.
그렇다면 위의 switch문을 자세히 설명해보면, @list 변수가 1일 때 case 1: 이라는 곳으로 이동하여
break를 만나 switch가 끝나는 지점인 } (중괄호 닫힘) 으로 이동된다고 해석할 수 있겠네요.
이 차이를 인식하는 것이 왜 중요하냐면, switch문을 아래와 같이 응용할 수 있습니다.
EX)
switch(@list)
{
case 1:
("1" 메시지를 띄운다)
case 2:
("2" 메시지를 띄운다)
break;
}
자 위의 예제에서 @list 변수가 1일 경우에는 위에서 설명했듯이 case 1: 이라는 곳으로 이동하여
"1"이라는 메시지를 띄우게 되죠?
하지만 switch문을 끝내는 구문인 break가 없기 때문에 switch문은 끝나지 않고 다음 라인을 읽게 됩니다.
그렇다면 다음 라인인 case 2:를 읽어들인다는 얘기가 되죠. 여기까지 이해 되시나요?
그러고도 아직 break문을 만나지 못했으니 "2"라는 메시지를 띄우게 되겠군요.
그리고 그 다음줄에서 break문을 만나서 switch문이 종료가 되겠네요.
그렇다면 결론적으로 @list 변수가 1일 경우에는 "1"의 메시지만을 띄우는 것이 아니라
"1"메시지와 "2" 메시지가 둘 다 뜬다는 것을 이해 하셨나요?
이런 식으로 switch문을 더 다양한 경우에 적용해서 응용할 수 있습니다.
2. default에 대한 설명
switch문을 공부 하시면서 "그렇다면 어떠한 경우에도 해당되지 않는 경우에는 어떻게 되는거지?"
라고 의문을 품으셨다면 칭찬해 드리고 싶네요.
제가 쓴 조건문 기초 강의를 보고 오셨으면 else문과 else if에 대해서 이해하고 계실겁니다.
default라는 것은 if문의 else와 성격이 비슷하다고 보시면 됩니다.
switch문 내부에서 어떠한 경우에도 해당되지 않을 경우에는 switch문은 자동으로 종료가 됩니다.
하지만 해당되지 않을 경우마다 자신이 원하는 바를 처리해주고 싶을 때 사용하는 것이 default 입니다.
예제를 볼까요?
EX)
switch(@list)
{
case 1:
(@list 변수가 1일 때 실행될 내용)
break;
case 2:
(@list 변수가 2일 때 실행될 내용)
break;
default:
????????
break;
}
예제를 문제처럼 낸 것 같은데 위의 ??????에 들어갈 내용은 과연 무엇일까요?
정답은 바로 @list 변수가 1도 아니고 2도 아닐 때 실행될 내용 입니다.
else 문과 성격이 많이 비슷하다는 것을 인지하시겠나요?
default를 알고 계신다면 더 많은 부분에 응용이 가능합니다.
-------------------------------------------------------------------------------------------
물론 1번 주제와 2번 주제를 동시에 쓰셔서 더욱 많은 응용을 하실 수 있습니다.
질문은 댓글로 남겨주시면 실시간으로 답변 달아드리겠습니다.