doWhile, while 반복문

·2022년 11월 16일

제어문: if조건문, switch문, for반복문 while반복문 등

개발을 하다 보면 여러 동작을 반복해야 하는 경우가 종종 생깁니다.
상품 목록에서 상품을 차례대로 출력하거나 숫자를 1부터 10까지 하나씩 증가시키면서 동일한 코드를 반복 실행해야 하는 경우같이 말이죠.

while 반복문

  • 각 반복이 시작하기 전에 조건을 확인합니다.
  • 조건이 참인 동안 반복(0은 거짓임)
  • 조건은 while에 의해 평가되고, 평가 후엔 불린값으로 변경됩니다.
<script>
let 식별자 = 초기값;
while(조건){ <- 종료될 수 있는 조건 필요
     조건이 만족될 때 까지의 실행문;
     증감식; <- 이 값이 없으면 초기갑으로 무한 반복
    }
</script>

‘무한’ 반복문은 보통 while(true)를 써서 만듭니다. 무한 반복문은 여타 반복문과 마찬가지로 break 지시자를 사용해 멈출 수 있습니다.


<script>
let i = 0; //초기값
while (i < 10) { //조건
  console.log(i);
  i++; //증가의 값. 이 값이 없으면 초기값으로 무한 반복
}
</script>
결과
0
1
2
3
4
5
6
7
8
9

<script>
let e = 0;
while (e < 3) {
  console.log(e);
  e++;
}
</script>
결과
0
1
2

<script>
let i = 0;
while (true) { // ==1
  console.log(i++);
  if (i === 5) {
    console.log(`이곳은 if문 안 입니다 ${i}`);
    break;
  }
  console.log(`변수 i: ${i}`);
}
</script>
결과

<script>
let i = 0;
while (true) {// ==1
  i++;
  if (i === 5) {
    console.log(`이곳은 if문 안 입니다 ${i}`);
    break;
  }
  console.log(`변수 i: ${i}`);
}
</script>
결과
변수 i: 1
변수 i: 2
변수 i: 3
변수 i: 4
이곳은 if문 안 입니다 5

구구단 8단

<script>
let total = 0;
let num = 1;
while (num <= 9) {
  total = 8 * num;
  console.log(` 8 x ${num} = ${total}`);
  ++num;
}
</script>
결과
 8 x 1 = 8
 8 x 2 = 16
 8 x 3 = 24
 8 x 4 = 32
 8 x 5 = 40
 8 x 6 = 48
 8 x 7 = 56
 8 x 8 = 64
 8 x 9 = 72

1부터 1000까지의 합

<script>
let sum = 0;
let i = 1;
while (i <= 1000) { // 반복문
  sum += i;
  i++; // 증감 값
}
console.log(`1부터 1000까지의 합은 ${sum} 입니다`);
</script>
결과
1부터 1000까지의 합은 500500 입니다

1~30까지의 숫자 중 2의 배수이자 6의 배수인 경우만 출력

<script>
let i = 1;
while (i <= 30) {
  if (i % 2 === 0 && i % 6 === 0) console.log(i);
  i++;
}
</script>

구구단 2~9단 모두 출력

<script>
let i = 2; // 2단부터 시작
let k = 1; // 1~9까지 곱하는 값

while (i <= 9) { // 2~단
  console.log(`--- ${i}단 ---`);

  while (k <= 9) {
    console.log(`${i} * ${k} = ${i * k}`);
    k++;
  }
  i++;
  k = 1; // 곱하는 값 재할당
}
</script>

1부터 몇까지 더해야 3000을 넘길 수 있는지

  • 1+2+3+4.. -> 3000
<script>
let i = 1;
let total = 0;
while (true) { // 무한
  total += i;
  total = i + total;
  if (total > 3000) {
    break; // 구문을 벗어남

  i++;
}

console.log(`1부터 ${i}까지 더하면 ${total}으로 3000을 넘는다`);
</script>

doWhile 반복문

  • 각 반복이 끝난 후에 조건을 확인합니다.
  • 조건문의 결과와 상관없이 무조건 do 블록의 코드가 적어도 1번은 실행
  • do 코드 실행 후 while 조건문을 판단하여, 조건문의 결과가 true이면 do 블록의 코드를 다시 실행. 이 과정을 반복합니다.
<script>
let 초기값;

do{
    실행문;
    증감값;
} while(조건);
</script>

예제 1

<script>
let k = 1;
do {
  const text = k + "번 째 반복문";
  console.log(text);
  k++;
} while (k <= 5);
</script>
결과 
1번 째 반복문
2번 째 반복문
3번 째 반복문
4번 째 반복문
5번 째 반복문

while과 doWhile의 차이점

<script>
// doWhile
let i = 1;
do {
  const text = i + "번 째 반복문<br>";
  document.write(text);
  i++;
}
while (i < 1); 
결과
1번 째 반복문 // i는 1보다 작지 않음에도 실행문을 한 번 실행함.

// while
let j = 1;
while(j < 1)  {
  const text = j + "번 째 반복문<br>";
  document.write(text);
  j++;
}
결과
출력되지 않음 // j는 i보다 작지 않기때문에 출력되지 않음.
</script>

참고 블로그

profile
저녁놀 마을 사람

0개의 댓글