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

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

2016.12.03 11:27

우지냥 조회 수:87

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

번호 제목 글쓴이 날짜 조회 수
92 [CR] 함수 기능 정리 [2] 마사카 2017.01.06 4091
91 프바CR구축법[링기반] [4] 시크릿 2016.02.21 3788
90 (초심자 관점) 2. CR 구축 방법 [8] file 하얀달 2017.01.15 3755
89 CR 운영자 명령어 웨이1 2017.01.03 2306
88 (초심자 관점) 1. APMSETUP7 다운 방법 [1] 하얀달 2017.01.15 1636
87 cr 구축법 [1] 김돌돌 2016.12.23 1508
86 [CR] 인던 추가방법 웨이1 2017.01.03 1446
85 [CR]프바 GM 설정하는방법 시크릿 2016.02.21 1422
84 프바 몹추가 팁 김돌돌 2016.12.23 991
83 서버 느리게하는 요소 김돌돌 2016.12.23 961
82 CR 아이템 추가 웨이1 2017.01.03 931
81 CR 기본 구축방법 (링크) [1] 가을이야기 2016.03.30 923
80 [CR] 게임 운영자 명령어( 비밀명령어 포함* ) 강의 행복e 2016.07.27 916
79 [CR] Chapter. 3-1 꼭 알아둬야할 CR의 문제점 우지냥 2016.12.03 790
78 스크립트 지식 웨이1 2017.01.03 688
77 가독성 높은 스크립트 짜기! 김돌돌 2016.12.24 642
76 npc생성 웨이1 2017.01.03 591
75 CR 스크립트 if 문 [1] 웨이1 2017.01.03 566
74 Chapter. 1-1 CR이라는 구동기에 대한 이해 가을이야기 2016.03.30 541
73 [CR] Chapter. 1-1 CR이라는 구동기에 대한 이해( 무료 ) 우지냥 2016.12.03 507
72 아이템 추가( item_db.txt ) 강의 [1] Joy 2016.04.23 481
71 맵블럭 오류 [1] 웨이1 2017.01.03 451
70 Chapter. 1-2 통합파일의 구조체 [1] 가을이야기 2016.03.30 447
69 [CR] Chapter. 1-2 통합파일의 구조체( 무료 ) 우지냥 2016.12.03 441
68 마법 추가( magic_db.txt ) 강의 Joy 2016.04.23 440
67 [CR] 애매한 함수들의 13가지 비밀 [1] 행복e 2016.08.01 406
66 CR 변수 웨이1 2017.01.03 389
65 맵 연결포트 강의입니다. 김돌돌 2016.12.23 389
64 아이템 체크 사용자 정의 함수 웨이1 2017.01.03 384
63 복사방지에 대한 스크립트 이해 가을이야기 2016.03.30 379
62 링클래식 APM GM 설정 오류 해결법 [1] file 마렬 2020.05.14 353
61 [CR] 아이템 추가( item_db.txt ) 강의보기 행복e 2016.07.27 348
60 [CR] 원거리 공격마법 만들기 우지냥 2016.12.03 345
59 [CR] ㅇㅇㅇㄹ // cr 초간단 강의 onpclogin 우지냥 2016.12.18 342
58 [CR] 그림과 함께 하는 랭킹적용(랭킹자료포함) [4] file 행복e 2016.11.30 341
57 [CR] Bind Failed 오류 발생 시 누스 2018.08.28 338
56 cr shop_db 참고 웨이1 2017.01.03 330
55 소지품 확인 사용자 정의 함수 웨이1 2017.01.03 286
54 [CR] 전설 // 허접한 강의(전반적인 스크립트 설명) 우지냥 2016.12.03 280
53 [CR] were92 // CR을 업그레이드 하는방법 file 행복e 2016.08.01 266
52 유저가 접속안했을때 아이피 쉽게 알아낼수있는 간단한 TIP입니다 file 우지냥 2016.12.08 265
51 [CR] [스크립트] '스크립트'의 가장 기초적인 설명 로이로이로이로이 2016.10.25 260
50 몬스터 추가( mob_db.txt )강의 Joy 2016.04.23 253
49 [CR] (입문) 제2장 * CR 스크립트의 종류를 알고 넘어가자! 행복e 2016.07.27 244
48 [CR] Chapter. 2-1 데이터베이스[ 엔피씨 ]강의 우지냥 2016.12.03 239
47 [CR] 맵 연결/포트연결( warp_db.txt ) 강의 보기 [1] 행복e 2016.07.27 209
46 [CR] 간단한 3가지의 변수 임시,계정,서버변수에 대한 정보. 행복e 2016.07.27 202
45 [CR] CR 무장 팁 행복e 2016.07.27 200
44 [CR] 동화 // 간략하고 짧은 강의 우지냥 2016.12.03 199
43 스크립트 팁 - 가독성 좋게해주는 팁 우지냥 2016.12.08 188