본문 바로가기

메봇 강좌

3.3.반복문

이번 강좌에선 반복문에 대해서 알아보도록 하겠습니다.

 

반복문이란 소괄호 안의 내용(조건식)이 true, 즉 참이면 그것이 false가 될 때 까지 중괄호 안의 코드를 게속 실행하는 것을 말합니다.

 

- while(){} -

while문은 if문과 유사합니다. 소괄호 안의 내용(조건식)이 true인 동안 중괄호의 내용을 게속 실행합니다.

예를 들어, 

var a = 10;

while( a > 0 ){

  replier.reply(a);

  a--;

}

이라고 한다면, a가 10부터 시작해서 0보다 큰 동안에는 채팅방에 a의 값을 출력한 뒤, a의 값에서 1을 빼는 것을 반복합니다.

 

 

- do{}while() -

do while 문은 while문과 유사하지만, 코드를 먼저 한번 실행한 뒤, 조건식을 검사해서 다시 실행할지 결정한다는 점에서 다릅니다.

예를 들어,

var a = 10;

do{

  replier.reply("호우!");

}while( a > 100 )

이라고 한다면 do부분을 먼저 실행하므로 채팅방에 호우! 를 출력한 뒤, while부분의 조건식을 검사한 뒤, a가 100보다 크지 않으므로 끝냅니다.

만약에 while문이였다면 아무것도 하지 않았겠지만 do while문의 경우 무조건 코드를 한번은 실행한다는 점에서 차이를 볼 수 있겠습니다.

 

 

- for(;;){} -

for문은 살짝 복잡합니다. 소괄호 안을 ; 로 나눠서 왼쪽에는 초깃값을, 중앙에는 조건식을, 오른쪽에는 증감식을 집어넣습니다. 그리고 난 뒤 조건식이 true이라면 중괄호 안의 코드를 실행한 뒤 증감식을 실행합니다.

무슨 말이냐고요?

예를 들어 봅시다.

만약에

for( var a = 0 ; a < 10 ; a++ ){

  replier.reply(a);

}

이라고 한다면 초깃값 a가 0이므로 조건식이 true입니다. 그러므로 채팅방에 a의 값을 출력한 뒤, 증감식을 실행하여 a의 값을 1 증가시킵니다.

 

 

위의 반복문들 중 자신이 편한 것을 사용하면 되겠습니다.

 

아래는 반복문들 안에서 쓰이는 도구들입니다.

 

- break -

break문은 반복문을 강제로 종료시킬 때 사용합니다.

예를 들어,

var a = 10;

while( a > 0 ){

  replier.reply(a);

  if( a == 3 ) break;

  a--;

}

이라고 한다면 a가 3이 될 때 까지 게속 채팅방에 a의 값을 출력하다가, 3이 되면 break문이 실행되어 반복문을 종료시킵니다.

 

여기서 또 의문이 생기신 분들이 많으실 겁니다.

"아니, 도데체 if문 뒤에 중괄호가 어디로 사라진거죠?"

 

제어문이나 반복문의 경우, 실행시킬 코드가 단 한줄이라면 중괄호를 생략하고 바로 이어서 쓸 수 있습니다.

 

예를 들어, 

if( msg == "핑" ){

  replier.reply("퐁");

}else{

  replier.reply("핑이 아니네요");

}

을 줄이려고 한다면

if( msg == "핑" ){

replier.reply("퐁");

}else replier.reply("핑이 아니네요");

으로 줄일 수 있겠습니다.

또,

if( msg == "핑" ){

  replier.reply("퐁");

}

을 줄이려고 한다면,

if( msg == "핑" ) replier.reply("퐁");

으로 줄일 수 있겠습니다.

 

for 문을 예로 들자면, 만약

for( var a = 0 ; a < 10 ; a++ ){

  replier.reply(a);

}

을 줄이려고 한다면

for( var a = 0 ; a < 10 ; a++ ) replier.reply(a);

이라고 줄일 수 있겠습니다.

 

이해가 잘 안되실 수도 있겠지만 이해가 잘 안되더라도 그냥 중괄호 쓰면 되니 괜찮습니다.

 

 

- continue -

continue문은 제어문에 따라 하는 일이 다릅니다.

 

while문이나 do while문의 경우 자신의 뒤에 오는 코드들을 싹 다 건너뛰고 조건식을 다시 검사한 뒤, 조건식이 true일 때 다시 처음부터 실행합니다.

예를 들어,

var a = 10;

var b = 5;

while( a > 0 ){

  replier.reply(a);

  a--;

  if( a > 5 ) continue;

  b--;

}

이라고 한다면, a가 5보다 큰 동안은 continue문이 b--의 실행을 게속 건너뛰게 하고 있다가, a가 5이하가 되는 순간 b--의 실행을 더 이상 막지 않게 되면서 a와 b의 값이 나란히 1씩 줄어들어 결과적으로는 a와 b모두 0이 되면서 끝납니다.

 

또, for문의 경우 자신의 뒤에 오는 코드들을 건너뛴다는 점에서는 while문과 같지만, 조건식으로 이동하는 것이 아니라 증감식으로 이동하여 증감식을 실행시킵니다.

예를 들어,

var b = 5;

for( var a = 0 ; a < 10 ; a++ ){

  replier.reply(a);

  if( a < 5 ) continue;

  b++;

}

라고 한다면, continue문이 b++를 건너뛰게 만들다가, a가 5가 되는 순간 더 이상 막지 않으면서 a와  b가 나란히 1씩 커지면서 결과적으로는 둘 다 10이 되면서 끝납니다.

 

질문이 있으신 분께선 댓글로 질문해 주시면 되겠습니다.

 

다음 강좌에서는 여러가지 객체의 사용법에 대해 알아보겠습니다.

 

'메봇 강좌' 카테고리의 다른 글

4.2.날짜 객체 사용법  (3) 2020.04.05
4.1수학객체 사용법  (1) 2020.03.30
3.2.제어문  (0) 2020.03.28
3.1.변수선언, 연산자  (4) 2020.03.26
2.1. 핑퐁 봇 만들어보기  (10) 2020.03.26