오늘은 이어서 제어문 중에

WHILE ~ WEND, DO ~ LOOP, SELECTCASE ~ CASE ~ CASEELSE ~ ENDSELECT

를 공부해볼게요!


코드는 대부분 영단어를 쓰니까 이쯤 되니 이름만 봐도 대충 어떤건지 감이 온데이.


그래도 축약어가 많고 실제로 작동하는 방법은 따로 익혀야 해요!


'피는 것은 속세의 그대란 불꽃'을 '하나비단'으로 줄여부르는 그런 거 말이지?


(그건 좀 다른 것 같은데......)


예를 들면 PRINTV의 V는 변수를 뜻하는 Variable, PRINTS의 S는 문자열을 뜻하는 String의 두문자랍니다.

emuera는 조금 이해하기 힘든 영문자 표현도 나오긴 하지만요.


먼저 WHILE ~ WEND 제어문을 살펴볼까요?

WHILE ~ WEND 반복 제어문은 REPEAT처럼 블록 안의 코드를 반복해서 실행하는데 조금 모양이 달라요.


WHILE 뒤에 오는 조건식이 참인 경우에 한해 무한히 아래 블록의 코드를 실행해요!

여기서 조건식을 쓰는 방법은 IF 분기 제어문하고 똑같아요.


<, >, <=, >= 같은 비교 연산자를 써서 그 내용이 맞은 경우, 조건식의 숫자나 변수, 식중함수가 반환한 값이 0이 아닌 경우 반복합니다.

아래 코드 중 COUNT ++는 COUNT += 1과 같은 뜻이에요.



만약에 COUNT = 0 대신 COUNT = 4가 써있어서

WHILE 문이 시작하기도 전에 조건식이 틀리면 우짜나?


WHILE 반복 제어문은 그런 경우 반복 코드를 한번도 실행하지 않고 넘어가요.


자, 결과를 보면...


 

COUNT ++로 매번 반복할 때마다 COUNT의 숫자가 커져서 3 이상이 되어 처음으로 되돌아간 순간,

WHILE COUNT < 3이 틀린 내용이 되므로 더 이상 반복하지 않는거죠!


그때그때 조건을 다시 확인한다...

emuera도 고생하는구마.


emuera는 이게 일이니까요!

이것보다 더 심한 예제도 있는데 볼래요? 므흐흐



또 첨 보는 게 많은데!

그리고 이건 쿨한 미소녀 유닛 곡이잖아!


TWAIT는 정해진 시간만큼 살짝 기다렸다가 시간이 지나면 다음 코드를 실행하는 명령이에요.

그리고 CLEARLINE과 REUSELASTLINE은 각각 정해진 줄 수를 화면에서 지우고, 이전의 줄을 재사용하는 명령입니다.


이 두 가지를 반복문 내에서 조합하면 아래와 같이......!




늘어난다!

윽수로 쿨한 미소녀 느낌이네 이거!


IF ELSE 조건 제어문으로 100번째 마지막 반복일 때는 '몇천'을 출력하고,

TOERASE 변수를 0으로 바꿔서 WHILE 반복을 종료하고 CLEARLINE 명령으로 줄을 지우지 않는 것도 코드를 보면 이해하시겠죠?


그럼!


(사실은 듣고 나서야 이해했데이)


그럼 다음은 DO ~ LOOP를 볼까요~

DO ~ LOOP 반복 제어문은 기본적으로는 WHILE ~ WEND와 비슷해요.

조건이 일치한다면 무한히 코드를 반복해서 실행하는 점은 같습니다!


완전히 똑같은 게 필요하지는 않을텐데, 어떤 게 다르길래?


WHILE과 달리 조건식을 코드 밑의 LOOP 뒤에 적고, 조건을 판정하는 것도 LOOP에 도달했을 때라는 점이 달라요.

그렇기 때문에 LOOP 뒤의 조건식이 틀리더라도 단 한 번은 내용을 실행하는 게 중요한 포인트에요.



이런 코드를 적더라도



이렇게 한번은 실행하고 나서 조건식이 틀린 걸 판정하고 더 이상 반복하지 않는답니다!

그 외의 사용법은 크게 다르지 않아요.


그런데 하나하나 IF ELSE 조건문으로 반복 중에 코드 흐름을 변경해주는 건 쓰다가 헷갈릴 것 같데이


거기서!

바로 여기서! 소개하기로 하고 미뤄뒀던 반복 제어문 공통 기능을 소개할게요.


BREAK와 CONTINUE에요!


BREAK는 그 자리에서 바로 반복문을 탈출하는 명령이에요.


첫사랑 버터플라이의 가사의 감동이 죽어버리고 있지 않나...


실행결과는 이렇게 되네요.



나비를 키우는 게임이라도 만들끼가?


아, 그건 말 꺼낸 사람이 만든다는 규칙이 있는데요.


취소데이.


한 가지 더,

CONTINUE는 반복문의 처음으로 돌아가서 그 뒤의 내용은 실행하지 않은 채 반복하는 명령이랍니다.

모모코쨩 선배의 대표곡으로 예시를 들어볼게요.



꼬로꼬로 꼬로가루~

삼! 각! 게!


뭐 사실 이 정도 적은 반복 횟수와 짧은 내용은 CONTINUE를 쓰지 않아도 충분하지만요...


모모코쨩 선배가 귀여우니까요! 므흐흐흐

그렇지! 나오쨩, 여기 모모코쨩 선배의 비장의 레슨웨어 컬렉션이......


흐응.


 

아.


아리사 씨. 이따 모모코랑 얘기 좀 해.

나오 씨, 열심히 해~


......마 기운 내라.


결과를 볼게요.


진짜로 굴러가고 있네!


여기서 "굴러가는 삼각형" 부분 전에 LCOUNT가 0인 경우,

CONTINUE로 코드 실행을 중단해서 처음에는 출력하지 않는 걸 볼 수 있죠!


그럼 오늘의 마지막 차례, SELECTCASE 조건 제어문을 볼까요?


SELECTCASE는 IF 조건 제어문과 서로 비슷한 역할을 하지만 다른 관계인데, 우선 IF를 볼게요.


프리스타일 톱 아이돌 재밌는 곡이지!


흠... 내용은 이미 배운 INPUT 숫자 입력과 IF ELSEIF의 조합이구마. 단순한데?


SELECTCASE 를 이용하면 이걸 다르게 쓸 수도 있다는 사실!

위의 코드와 실제 동작은 다른 점이 없어요.



오? 이쪽이 더 쓸 때 보기 쉬운 것 같기도 하고


어떤 한 가지 변수의 내용, 조건식의 내용에 따라 실행 결과를 달리 해야 할 때,

특히, 같은 실행 결과여야 하는 조건이 여러 가지가 있을 떄 SELECTCASE를 사용하면 편하답니다.


이런 코드도 쓸 수 있어요!



오! 3 TO 5라고 썼으니까 사이의 4도 포함하는구마, 좋은데~


그렇죠? 상황에 따라 적절한 제어문을 골라서 읽고 쓰기 쉬운 코드를 만들자구요.


(보충 분량)

또 SELECTCASE는 문자열형 변수를 판단하거나, CASE IS ~ 와 같이 IF 조건문과 유사한 비교 조건식을 사용할 수도 있어요.

SELECTCASE LCOUNT 밑에

CASE IS < 5 라고 적는다면 IF LCOUNT < 5 와 마찬가지인 동작을 하게 되네요!


 

여러 종류의 제어문을 동시에 사용한 예제를 볼게요!


여기서 CHARATU는 문자열의 ~번째 문자를 반환하는 식중함수에요.

또 INPUTS는 INPUT과 비슷하지만 숫자가 아닌 입력된 문자열을 RESULTS에 저장하는 명령이에요!



가시나 이건 언제 꺼내나 싶었다


므흐흐~


위쪽 코드에서는 REPEAT 반복 제어문이 진행되는 동안 COUNT까지 반복하는 FOR 반복문을 넣어서

반복하는 횟수가 COUNT가 늘어날 때까지 늘어나는구나.


이그잭틀리!


그리고 FOR문 중에 CASE IS... 이건 IF 쪽이 더 편하지 않나?


예시를 들다 보니 그만......


결과는 이렇네.




오늘은 여기까지! 다음 강의에서는 CALL, JUMP, GOTO 명령과 함수에 대해 알아볼게요.


빠이염~