본문 바로가기

바닐라 코드/Java Script

14. while, for 반복문

1. 반복문이란?

반복문은 동일한 작업을 여러 번 실행하거나 조건에 따라 작업을 반복하는 데 사용됩니다. 이는 코드의 중복을 줄이고 가독성을 높이는 데 매우 유용합니다.

예시로, 상품 목록을 출력하거나 특정 횟수만큼 데이터를 처리할 때 반복문을 사용할 수 있습니다.


2. 반복문의 종류

2.1. while 반복문

  • 특징: 조건을 먼저 확인하고, 조건이 truthy인 동안 본문을 실행합니다.
  • 문법:
  • while (condition) { // 반복문 본문 }

예시 1: 기본적인 while 반복문

let i = 0;
while (i < 3) {
    console.log(i); // 0, 1, 2 출력
    i++;
}

설명:

  • i < 3이 true인 동안 반복문 본문을 실행합니다.
  • 조건이 false가 되면 반복문이 종료됩니다.

예시 2: 조건 축약

let i = 3;
while (i) {
    console.log(i); // 3, 2, 1 출력
    i--;
}

설명:

  • 숫자 0은 falsy로 평가되므로, i가 0이 되면 반복문이 종료됩니다.

2.2. do...while 반복문

  • 특징: 본문을 최소 1회 실행한 후 조건을 확인합니다.
  • 문법:
  • do { // 반복문 본문 } while (condition);

예시

let i = 0;
do {
    console.log(i); // 0, 1, 2 출력
    i++;
} while (i < 3);

설명:

  • 조건에 상관없이 본문을 최소 1번 실행합니다.

2.3. for 반복문

  • 특징: 초기화 → 조건 확인 → 본문 실행 → 단계(step) 순서로 동작합니다.
  • 문법:
  • for (begin; condition; step) { // 반복문 본문 }

예시 1: 기본적인 for 반복문

for (let i = 0; i < 3; i++) {
    console.log(i); // 0, 1, 2 출력
}

동작 과정:

  1. 초기화: 반복문 진입 시 한 번 실행 (let i = 0).
  2. 조건 확인: i < 3이 false일 경우 반복문 종료.
  3. 본문 실행: console.log(i) 실행.
  4. 단계 수행: i++ 실행 후 다시 조건 확인.

예시 2: 구성 요소 생략

let i = 0;
for (; i < 3; i++) {
    console.log(i); // 0, 1, 2 출력
}

설명:

  • for문의 구성 요소(초기화, 조건, 단계)는 생략 가능하지만, ;는 필수입니다.

3. 반복문 제어

3.1. break로 반복문 중단

  • 특징: 조건과 상관없이 반복문을 즉시 종료합니다.

예시: 사용자가 숫자를 입력할 때 합계 계산

let sum = 0;

while (true) {
    let value = +prompt("숫자를 입력하세요.", "");
    if (!value) break; // falsy 값 입력 시 종료
    sum += value;
}

console.log("합계:", sum);


3.2. continue로 다음 반복으로 이동

  • 특징: 현재 이터레이션을 종료하고 다음 반복으로 이동합니다.

예시: 홀수만 출력

for (let i = 0; i < 10; i++) {
    if (i % 2 === 0) continue; // 짝수는 건너뜀
    console.log(i); // 1, 3, 5, 7, 9 출력
}


4. 중첩 반복문과 레이블

4.1. 레이블과 break

  • *레이블(label)**을 사용해 여러 중첩 반복문을 한 번에 제어할 수 있습니다.
  • 문법:
  • labelName: for (...) { for (...) { if (condition) break labelName; // 특정 레이블의 반복문 종료 } }

예시

outer: for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        let input = prompt(`(${i}, ${j})의 값`, "");
        if (!input) break outer; // 'outer' 레이블 종료
    }
}
console.log("완료!");

4.2. 레이블과 continue

예시

outer: for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        if (i + j > 3) continue outer; // 'outer' 레이블의 다음 반복으로 이동
        console.log(`(${i}, ${j})`);
    }
}


5. 반복문의 선택 기준

반복문 특징 사용 시기

while 조건을 먼저 확인한 후 반복 실행 반복 횟수가 명확하지 않을 때
do...while 본문을 최소 1회 실행 후 조건 확인 반복이 최소 1번은 실행되어야 할 때
for 초기화, 조건, 단계를 한 줄에 표현 가능 반복 횟수가 명확하고 조건이 명확할 때

6. 주의 사항

  1. 무한 반복문 방지:
    while (true) {
        if (stopCondition) break;
    }
    
    
  2. 종료 조건을 명확히 설정해야 무한 반복을 방지할 수 있습니다.
  3. 구성 요소 생략 시 주의:
  4. for문에서 구성 요소를 생략해도 ;는 필수입니다.
  5. break와 continue:
  6. 반복문 외부에서 사용 시 문법 오류가 발생합니다.

7. 요약

  • 반복문의 종류와 사용법:
    • while: 조건을 먼저 확인.
    • do...while: 본문 실행 후 조건 확인.
    • for: 초기화, 조건, 단계를 포함.
  • 제어문:
    • break: 반복문 즉시 종료.
    • continue: 다음 반복으로 이동.

실무 예제: 데이터를 배열로 분류하기

문제: 배열에서 짝수와 홀수를 나누어 다른 배열에 저장하는 코드 작성.

코드:

const numbers = [1, 2, 3, 4, 5, 6];
const evens = [];
const odds = [];

for (i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) {
        evens.push(numbers[i]);
    } else {
        odds.push(numbers[i]);
    }
}

console.log("짝수:", evens); // [2, 4, 6]
console.log("홀수:", odds); // [1, 3, 5]

'바닐라 코드 > Java Script' 카테고리의 다른 글

16. 함수  (1) 2024.12.24
15. switch문  (0) 2024.12.23
13. nullish 병합 연산자 (??)  (0) 2024.12.18
12. 논리연산자  (0) 2024.12.17
11. if와 '?'  (0) 2024.12.16