4. 같은 일 반복하기 (반복문)/4.3 최소 한 번은 실행하기 (do...while)

4.3.2 while과의 차이점 - 언제 확인하느냐가 중요해요!

thejavascript4kids 2025. 7. 2. 05:35

📘 4.3.2 while과의 차이점 - 언제 확인하느냐가 중요해요!

여러분, 안녕하세요.

어릴 때 할머니와 함께 시장에 갔던 기억이 있습니다. 할머니는 두 가지 다른 방식으로 과일 가게를 이용하셨어요.

첫 번째 방식은 멀리서 과일들을 쭉 살펴보시고 "오늘 과일이 신선해 보이나?"를 확인한 후에 가게에 들어가시는 것이었어요. 두 번째 방식은 일단 가게에 들어가서 직접 과일을 만져보고 나서 "이 과일들이 괜찮나?"를 판단하시는 것이었죠.

프로그래밍에서도 이런 두 가지 방식이 있습니다. while문과 do...while문이 바로 그것이에요. 둘 다 반복이라는 같은 일을 하지만, 언제 조건을 확인하느냐에 따라 완전히 다른 결과를 만들어냅니다.

오늘은 이 두 방식의 차이점을 자세히 알아보겠습니다.

🧠 새로운 단어들과 친해지기

오늘 만날 개념들을 차근차근 살펴보겠습니다.

단어 설명
사전 조건 확인 뭔가를 하기 전에 먼저 "해도 될까?"를 확인하는 방식이에요.
사후 조건 확인 일단 뭔가를 해보고 나서 "계속해도 될까?"를 확인하는 방식이에요.
실행 보장 어떤 상황이든 반드시 한 번은 실행된다는 약속이에요.
조건 확인 시점 언제 조건을 확인하는지를 말해요.

✨ 핵심 개념 이해하기

while문과 do...while문의 차이점을 이해하는 것은 마치 두 가지 다른 생활 습관을 비교하는 것과 같습니다. 둘 다 반복이라는 같은 목적을 가지고 있지만, 언제 조건을 확인하느냐에 따라 완전히 다른 결과를 만들어낼 수 있어요.

마치 도서관 이용하기 같은

제가 자주 가던 동네 도서관에서 본 두 가지 패턴을 생각해보세요.

신중한 사람의 방식 (while문):
문 밖에서 유리창을 통해 안을 들여다보고, "사람이 너무 많지 않나? 내가 앉을 자리가 있나?"를 먼저 확인한 후에 들어가는 방식입니다.

적극적인 사람의 방식 (do...while문):
일단 도서관에 들어가서 상황을 직접 파악하고, 그 다음에 "여기서 공부할 만한가?"를 판단하는 방식입니다.

// 신중한 방식 (while)
while (도서관이_적당하다) {
    console.log("도서관에 들어가서 공부합니다");
    공부하기();
    상황_다시_확인하기();
}

// 적극적인 방식 (do...while)
do {
    console.log("일단 도서관에 들어가봅시다");
    공부하기();
    상황_파악하기();
} while (계속_공부할_만하다);

🎯 각각 언제 사용할까요?

while문을 사용하는 상황:

  • 조건이 맞을 때만 실행하고 싶을 때
  • 한 번도 실행 안 될 수 있는 상황
  • 미리 확인이 가능한 경우

do...while문을 사용하는 상황:

  • 최소 한 번은 꼭 실행해야 할 때
  • 실행해봐야 조건을 알 수 있는 경우
  • 사용자 입력을 받는 상황

⚙️ 문법 구조 비교

두 반복문의 문법을 나란히 놓고 비교해보면 차이점이 명확해집니다.

// while문: 조건이 앞에 있습니다
while(조건) {
    // 조건이 참일 때만 실행됩니다
}

// do...while문: 조건이 뒤에 있습니다  
do {
    // 무조건 한 번은 실행됩니다
} while(조건);
항목 while문 do...while문
조건 확인 시점 실행 실행
최소 실행 횟수 0번 1번
세미콜론 불필요 필수
조건 위치 앞쪽 뒤쪽

🧪 직접 해보면서 배우기

실제 예시를 통해 두 반복문의 차이점을 명확히 확인해보겠습니다.

🔹 Ex1) 조건이 처음부터 참인 경우

조건이 처음부터 참일 때는 두 반복문이 같은 결과를 보여줍니다.

// 조건이 처음부터 참인 경우 (num = 1, 조건: num <= 3)
console.log("=== 조건이 참인 경우 ===");

// while문으로 1부터 3까지 출력하기
let whileNum = 1;
console.log("while문 시작합니다");
while(whileNum <= 3) {                                  // 조건을 먼저 확인합니다
    console.log("while로 출력:", whileNum);
    whileNum++;
}
console.log("while문 끝!");

// do...while문으로 1부터 3까지 출력하기  
let doWhileNum = 1;
console.log("do...while문 시작합니다");
do {                                                    // 일단 먼저 실행합니다
    console.log("do...while로 출력:", doWhileNum);
    doWhileNum++;
} while(doWhileNum <= 3);                               // 나중에 조건을 확인합니다
console.log("do...while문 끝!");
// 결과: 둘 다 1, 2, 3을 출력해요 (결과가 같아요)

🔹 Ex2) 조건이 처음부터 거짓인 경우

여기서 진짜 차이점이 드러납니다!

// 조건이 처음부터 거짓인 경우 (num = 10, 조건: num < 5)
console.log("=== 조건이 거짓인 경우 ===");

// while문으로 테스트
let whileFalse = 10;
console.log("while문 시작합니다");
while(whileFalse < 5) {                                 // 조건을 먼저 확인합니다 (거짓!)
    console.log("while로 출력:", whileFalse);           // 이 줄은 실행되지 않습니다!
    whileFalse++;
}
console.log("while문 끝! (아무것도 실행 안 됨)");

// do...while문으로 테스트
let doWhileFalse = 10;
console.log("do...while문 시작합니다");
do {                                                    // 일단 먼저 실행합니다
    console.log("do...while로 출력:", doWhileFalse);    // 이 줄은 한 번 실행됩니다!
    doWhileFalse++;
} while(doWhileFalse < 5);                              // 나중에 조건을 확인합니다 (거짓!)
console.log("do...while문 끝! (한 번은 실행됨)");
// 결과: while은 아무것도 출력 안 함, do...while은 10을 출력해요

🔹 Ex3) 실제 상황 - 메뉴 시스템

// 게임 메뉴 상황을 시뮬레이션해보기
console.log("=== 메뉴 시스템 비교 ===");

let menuChoice = "";
let menuCount = 0;

// while문으로 메뉴 시스템 (문제가 있을 수 있습니다)
while(menuChoice !== "종료" && menuCount < 3) {        // 조건을 먼저 확인합니다
    if (menuCount === 0) menuChoice = "게임시작";
    else if (menuCount === 1) menuChoice = "설정";
    else menuChoice = "종료";

    console.log("while 메뉴: " + menuChoice);
    menuCount++;
}

// 변수 초기화
menuChoice = "";
menuCount = 0;

// do...while문으로 메뉴 시스템 (더 자연스럽습니다)
do {                                                    // 일단 메뉴를 보여줍니다
    if (menuCount === 0) menuChoice = "게임시작";
    else if (menuCount === 1) menuChoice = "설정";
    else menuChoice = "종료";

    console.log("do...while 메뉴: " + menuChoice);
    menuCount++;
} while(menuChoice !== "종료" && menuCount < 3);        // 나중에 조건을 확인합니다
// 결과: do...while이 더 자연스러워요 (메뉴는 최소 한 번은 보여줘야 하니까요)

🧠 자주 하는 실수와 주의할 점

두 반복문을 사용할 때 주의해야 할 몇 가지 사항들을 알아보겠습니다.

❌ 실수 1: 세미콜론 빼먹기

// ❌ 세미콜론이 없어서 문법 오류입니다!
do {
    console.log("실행 중...");
} while (true)  // 세미콜론이 없음!

// ✅ 올바른 방법
do {
    console.log("실행 중...");
} while (true);  // 세미콜론 필수!

❌ 실수 2: 상황에 맞지 않는 반복문 선택

// ❌ 메뉴에 while 사용 (메뉴가 안 나올 수 있습니다)
let choice = "";
while(choice === "시작") {  // 처음에 choice가 ""이라 실행 안됩니다
    console.log("메뉴를 선택하세요");
}

// ✅ 메뉴에 do...while 사용
let choice = "";
do {
    console.log("메뉴를 선택하세요");  // 최소 한 번은 보여줍니다
    choice = "시작";  // 사용자 선택 시뮬레이션
} while(choice !== "종료");

✏️ 직접 해보기 - 쉬운 연습 문제들

배운 내용을 연습해보겠습니다. 마치 요리를 배울 때 재료의 순서가 중요하듯이, 조건을 확인하는 순서도 중요하다는 것을 느껴보세요.

Ex1) 두 반복문의 차이를 확인해보자

// while문으로 테스트 (조건이 거짓인 경우)
let a = 5;
while(a < 5) {                                          // 조건을 먼저 확인합니다 (거짓!)
    console.log("A:", a);                               // 실행되지 않습니다
    a++;
}

// do...while문으로 테스트 (조건이 거짓인 경우)
let b = 5;
do {                                                    // 일단 먼저 실행합니다
    console.log("B:", b);                               // 한 번 실행됩니다!
    b++;
} while(b < 5);                                         // 나중에 조건을 확인합니다 (거짓!)
// 결과: "B: 5"만 출력되고 "A:"는 출력되지 않아요

Ex2) 카운트다운을 두 방식으로 만들어보자

// while문 버전
let count1 = 3;
while(count1 > 0) {                                     // 조건을 먼저 확인합니다
    console.log("while 카운트다운:", count1);
    count1--;
}

// do...while문 버전  
let count2 = 3;
do {                                                    // 일단 먼저 실행합니다
    console.log("do...while 카운트다운:", count2);
    count2--;
} while(count2 > 0);                                    // 나중에 조건을 확인합니다
// 결과: 둘 다 3, 2, 1을 출력해요 (조건이 처음부터 참인 경우)

📚 복습하기 - 지난 시간에 배운 내용도 기억해요!

새로운 것을 배우면서도 이전에 배운 것들을 잊지 않는 것이 중요해요.

🔄 4.3.1 복습: do...while문의 기본 개념

문제: do...while문의 가장 큰 특징을 설명해보세요!

정답과 설명:

  • 최소 한 번 실행: 조건이 거짓이어도 반드시 한 번은 실행돼요
  • 세미콜론 필수: do...while문 끝에는 반드시 세미콜론을 붙여야 해요!

🔄 4.2.1 복습: while문의 조건 확인 시점

문제: while문과 do...while문에서 조건을 확인하는 시점의 차이점을 설명해보세요!

정답과 설명:

  • while문: 실행 에 조건 확인 → 거짓이면 0번 실행
  • do...while문: 실행 에 조건 확인 → 거짓이어도 1번은 실행

🔄 4.1.1 복습: 반복문 선택 기준

문제: 다음 상황에서 어떤 반복문이 가장 적합한지 말해보세요!

// 상황 1: 1부터 100까지 숫자 출력
// 상황 2: 사용자가 "종료"를 입력할 때까지 메뉴 보여주기
// 상황 3: 파일에 데이터가 있는 동안 읽기

정답과 설명:

  • 상황 1: for문 (정확한 횟수를 알고 있음)
  • 상황 2: do...while문 (메뉴는 최소 한 번 보여줘야 함)
  • 상황 3: while문 (데이터가 없으면 읽지 않아야 함)

이렇게 지난번에 배운 내용들도 계속 활용하면서 새로운 것을 배우는 거예요! 😊


지금까지 while문과 do...while문의 차이점에 대해 함께 알아보았습니다. 두 반복문 모두 소중한 도구이지만, 언제 조건을 확인하느냐에 따라 완전히 다른 결과를 만들어낼 수 있어요.

마치 할머니가 시장에서 과일을 고르실 때 두 가지 다른 방식을 사용하셨듯이, 우리도 상황에 맞는 올바른 반복문을 선택하는 것이 좋은 프로그래밍의 첫걸음입니다.

다음 시간에는 또 다른 흥미로운 자바스크립트 이야기를 함께 나누어보겠습니다. 여러분의 학습 여정이 계속해서 의미 있고 즐거우시길 바라요! 🌟

✅ 학습 완료 체크리스트

이번 시간에 배운 내용들을 모두 이해했는지 확인해보세요!

학습 내용 이해했나요?
while과 do...while의 차이점
조건 확인 시점의 중요성
상황별 적합한 반복문 선택
자주 하는 실수들
실전 예제 이해

📂 마무리 정보

오늘 배운 4.3.2 내용이 여러분의 자바스크립트 지식에 잘 자리 잡았나요? 다음 시간에는 더 흥미진진한 내용으로 만나요!

기억할 점: 오늘 배운 내용을 꼭 연습해보시고, 궁금한 점이 있으면 언제든 다시 돌아와서 읽어보세요.


🚀 더 체계적인 JavaScript 학습을 원하신다면?
이 포스팅에서 다룬 내용을 실제로 실습해보세요!
무료 JavaScript 학습 플랫폼에서 단계별 학습과 실시간 코드 실행을 통해
더욱 효과적이고 재미있게 학습하실 수 있습니다.
📝 실시간 코드 실행 📊 학습 진도 관리 👥 체계적 커리큘럼
📚 171개 체계적 학습레슨 · 📋 855개 4지선다 연습문제 · 🆓 완전 무료 · ⚡ 즉시 시작