안녕하세요, 여행벌입니다.

오늘은 제어문의 한 종류인 반복문(while)에 대해서 다뤄보겠습니다.


반복문이란

 반복문을 이용하면 코드를 원하는 횟수만큼 반복하여 실행할 수 있습니다.

 특정 코드를 100회 수행해야 되는 경우에 같은 코드를 100번 적어야 한다면 굉장히 비효율적으로 시간 낭비겠죠? 이럴 때 반복문을 이용한다면 쉽게 특정 코드를 100번 수행할 수 있습니다. 반복문은 크게 while 문과 for 문으로 구분할 수 있습니다. 이번 포스팅에서는 while 문에 대해서 익혀보도록 하겠습니다.

while 문

 while문은 조건식을 만족할 때까지 코드를 여러 회 반복하여 실행할 수 있습니다.

 기본 형태는 다음과 같습니다.

while(조건식){
    자바스크립트 코드;
    증감식;
}

 while 문은 조건식을 만족한다면 { } 안에 있는 코드를 수행합니다. 반복문에서는 항상 증감식이 포함되어야 하는데요! 증감식의 역할은 우리가 원하는 만큼 코드를 수행했다면 조건식을 false로 바꿔주는 역할을 합니다.

 

 예시를 통해서 익혀보겠습니다.

let i = 0;
while(i < 10){
    console.log(`${i + 1}번 째 입니다.`);
    i++;
}

 이 while 문에서 조건식은 i < 10 이 됩니다. 처음에는 i = 0 이므로 조건식이 true가 되고 while 문이 수행됩니다. 하지만, i 를 변경해주는 i++(증감식) 코드가 없다면 while 문은 항상 조건식을 만족하므로 무한루프에 빠져 무한히 수행하게 됩니다. 그렇기 때문에 반복문은 항상 증감식이 필요합니다.

  i 가 0이므로 조건식을 만족하고 (i + 1)번 째입니다. 즉 1번째 입니다가 출력됩니다. 그 후 i 는 1로 바뀌고 같은 과정을 반복하다 i가 10이 되는 순간 조건식이 거짓(false)가 되면서 while 문이 수행을 멈춥니다.

 

 이번에는 조건문(if)와 반복문(while)을 같이 사용해보겠습니다.

let i = 0;
while(i < 10){
    if(i % 2 == 0)
        console.log(`${i}는 짝수입니다.`);
    else
        console.log(`${i}는 홀수입니다.`);
    i++;
}

 위와 마찬가지로 i를 0부터 1씩 증가시켜 10보다 작다면 while 문 코드를 수행할 것입니다. 이때, 조건문(if) 를 이용해 짝수라면 짝수를 출력해주고, 홀수라면 홀수를 출력해주는 코드를 구현해보았습니다.

do-while 문

 while 문의 경우에는 조건식의 만족 여부를 먼저 검사한 후 중괄호에 있는 코드의 실행 여부를 결정합니다.  하지만 do-while 문은 반드시 한 번 코드를 먼저 실행하고 조건식을 검사합니다.

기본 형태는 다음과 같습니다. while 문과 비슷한 것을 확인할 수 있습니다.

do{
    자바스크립트 코드;
    증감식;
}while(조건식)

 예시를 통해서 익혀보겠습니다.

 위에서 while 문 예시로 다뤘던 코드를 i = 10으로 바꿔서 do while 문에서 실행해보겠습니다.

let i = 10;
do{
    console.log(`${i + 1}번 째 입니다.`);
    i++;
}while(i < 10)

 조건식을 만족하지 않으므로 코드가 실행되면 안 됩니다. 하지만, do-while 문은 반드시 한 번 코드를 먼저 실행하므로 결과는 다음과 같습니다.

 do-while 문은 while 문과 작동 원리가 동일합니다. 다만 반드시 한 번 코드를 먼저 실행하는 점만 다릅니다. 상황에 맞는 반복문을 사용하시면 될 것 같습니다. 아이디를 입력받아 아이디가 틀리다면 계속 입력을 다시 받는 경우를 생각해보면 일단 아이디를 한 번은 입력을 받아야 됩니다. 따라서 do-while 문이 더 적합한 상황이라고 볼 수 있습니다. if 문과 switch 문처럼 while 문과 do-while 문도 동일한 작업을 수행할 수 있습니다. 하지만, 상황에 맞춰서 더 필요한 제어문을 이용하시면 될 것 같습니다.


이상으로 반복문 중 while 문 포스팅을 마치도록 하겠습니다.

 

+ Recent posts