close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

[CR] 주작 // switch문 추가 강의

2016.12.03 11:27

우지냥 조회 수:82

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번 주제를 동시에 쓰셔서 더욱 많은 응용을 하실 수 있습니다.
 
질문은 댓글로 남겨주시면 실시간으로 답변 달아드리겠습니다.

번호 제목 글쓴이 날짜 조회 수
91 링클래식 APM GM 설정 오류 해결법 [1] file 마렬 2020.05.14 341
90 시간마다 나오는 공지를 수정하려면! 하늘별풍선 2020.05.06 160
89 [CR] Bind Failed 오류 발생 시 누스 2018.08.28 330
88 (초심자 관점) 2. CR 구축 방법 [8] file 하얀달 2017.01.15 3721
87 (초심자 관점) 1. APMSETUP7 다운 방법 [1] 하얀달 2017.01.15 1614
86 [CR] 함수 기능 정리 [2] 마사카 2017.01.06 4080
85 CR 운영자 명령어 웨이1 2017.01.03 2292
84 CR 스크립트 if 문 [1] 웨이1 2017.01.03 557
83 CR 변수 웨이1 2017.01.03 379
82 스크립트 지식 웨이1 2017.01.03 680
81 아이템 체크 사용자 정의 함수 웨이1 2017.01.03 378
80 npc생성 웨이1 2017.01.03 586
79 cr shop_db 참고 웨이1 2017.01.03 324
78 맵블럭 오류 [1] 웨이1 2017.01.03 443
77 CR 아이템 추가 웨이1 2017.01.03 923
76 소지품 확인 사용자 정의 함수 웨이1 2017.01.03 280
75 [CR] 인던 추가방법 웨이1 2017.01.03 1439
74 가독성 높은 스크립트 짜기! 김돌돌 2016.12.24 634
73 서버 느리게하는 요소 김돌돌 2016.12.23 954
72 프바 몹추가 팁 김돌돌 2016.12.23 983
71 cr 구축법 [1] 김돌돌 2016.12.23 1490
70 맵 연결포트 강의입니다. 김돌돌 2016.12.23 381
69 머리 염색 NPC 강의 옹동봉 2016.12.22 149
68 [CR] ㅇㅇㅇㄹ // cr 초간단 강의 onpclogin 우지냥 2016.12.18 336
67 [CR] cr에서 숫자값을 저장할 수 있는 함수 우지냥 2016.12.18 122
66 스크립트 팁 - 가독성 좋게해주는 팁 우지냥 2016.12.08 182
65 유저가 접속안했을때 아이피 쉽게 알아낼수있는 간단한 TIP입니다 file 우지냥 2016.12.08 259
64 [CR] Chapter. 3-1 꼭 알아둬야할 CR의 문제점 우지냥 2016.12.03 780
63 [CR] 동화 // 조건의종류 우지냥 2016.12.03 105
62 [CR] 동화 // 조건문의 기초 [1] 우지냥 2016.12.03 98
61 CR] 동화 // 변수란 무엇인가? 우지냥 2016.12.03 120
60 [CR] 동화 // 간략하고 짧은 강의 우지냥 2016.12.03 191
59 [CR] 원거리 공격마법 만들기 우지냥 2016.12.03 337
58 [CR] 전설 // 이전 강의에 이은 2번째 강의! 우지냥 2016.12.03 181
57 [CR] 전설 // 허접한 강의(전반적인 스크립트 설명) 우지냥 2016.12.03 273
56 [CR] 이영아 // callfunc 우지냥 2016.12.03 162
55 [CR] Chapter. 2-2 데이터베이스[ 엔피씨 ]강의 우지냥 2016.12.03 111
54 [CR] Chapter. 2-1 데이터베이스[ 엔피씨 ]강의 우지냥 2016.12.03 231
53 [CR] Chapter. 1-2 통합파일의 구조체( 무료 ) 우지냥 2016.12.03 435
52 [CR] Chapter. 1-1 CR이라는 구동기에 대한 이해( 무료 ) 우지냥 2016.12.03 499
51 [기타] 레이더즈 // IPv4 Address 구조강좌.. file 우지냥 2016.12.03 119
50 [CR] 레이더즈 // 상점NPC만들기.. 우지냥 2016.12.03 175
49 [CR] 주작 // CALLFUNC "SLOTCHECK" 우지냥 2016.12.03 82
48 [CR] 주작 // CALLFUNC "ITEMCOUNT 우지냥 2016.12.03 83
47 [CR] 주작 // [기타] 해당 좌표의 아이템 읽어오기 우지냥 2016.12.03 143
» [CR] 주작 // switch문 추가 강의 우지냥 2016.12.03 82
45 [CR] 그림과 함께 하는 랭킹적용(랭킹자료포함) [4] file 행복e 2016.11.30 333
44 [CR] [스크립트] '스크립트'의 가장 기초적인 설명3 로이로이로이로이 2016.10.25 141
43 [CR] [스크립트] '스크립트'의 가장 기초적인 설명2 로이로이로이로이 2016.10.25 154
42 [CR] [스크립트] '스크립트'의 가장 기초적인 설명 로이로이로이로이 2016.10.25 259