C - While Loop: Your Gateway to Repetitive Programming

안녕하세요, 미래의 코딩 슈퍼스타! 루프의 fascinering 세계로 뛰어들 준비가 되었나요? 오늘 우리는 프로그래밍에서 가장 기본적인 개념 중 하나인 C 언어의 while 루프를 탐구할 것입니다. 믿으세요, 이를 마스터하면 코딩에서 슈퍼파워를 터뜨린 것 같은 느낌을 받게 될 것입니다!

C - While loop

What is a While Loop?

먼저, while 루프가 무엇인지 이해해 보겠습니다. 당신이 비디오 게임을 하면서 레벨을 완료하기 위해 10명의 적을 물리쳐야 한다고 상상해 봅시다. 동일한 "공격" 코드를 10번 작성하는 대신, "적이 남아 있을 때까지 계속 공격하라"고 말할 수만 있다면 얼마나 좋을까요? 바로 이게 프로그래밍에서 while 루프가 하는 일입니다!

while 루프는 특정 조건이 참인 동안 코드 블록을 반복적으로 실행할 수 있게 해줍니다. 컴퓨터에게 "이 작업을 계속하다가 나가 말할 때까지 하라"고 말하는 것과 같습니다!

Syntax of C while Loop

C 언어의 while 루프의 기본 구조를 살펴보겠습니다:

while (condition) {
// 코드 반복
}

이렇게 간단합니다! condition은 각 반복 전에 검사됩니다. 만약 참이면, 중괄호 {} 안의 코드가 실행됩니다. 이 과정이 조건이 거짓이 될 때까지 반복됩니다.

Flowchart of C while Loop

while 루프가 어떻게 작동하는지 시각화하기 위해 플로차트를 보겠습니다:

┌─────────────┐
│   Start     │
└──────┬──────┘
│
▼
┌─────────────────┐
│ Check condition │
└────────┬────────┘
│
▼
┌───────────┐    No
┌───┤ Condition ├────────┐
│   │   true?   │        │
│   └───────────┘        │
│         │ Yes          │
│         ▼              │
│  ┌──────────────┐      │
│  │ Execute code │      │
│  └──────┬───────┘      │
│         │              │
└─────────┘              │
▼
┌──────────┐
│   End    │
└──────────┘

이 플로차트는 조건이 먼저 검사된다는 것을 보여줍니다. 만약 참이면, 코드가 실행되고 다시 조건을 검사합니다. 이 사이클이 조건이 거짓이 될 때까지 계속됩니다.

How while Loop Works in C?

과정을 단계별로 나누어 설명하겠습니다:

  1. 프로그램이 while 루프를 만나게 됩니다.
  2. 중괄호 안의 조건을 검사합니다.
  3. 조건이 참이면, 루프 안의 코드를 실행합니다.
  4. 코드가 실행된 후, 다시 단계 2로 돌아갑니다.
  5. 조건이 거짓이 되면, 루프를 건너뛰고 프로그램의 나머지 부분으로 이동합니다.

Example of while Loop in C

첫 번째 예제로 간단한 다운카운트 프로그램을 만들어 보겠습니다:

#include <stdio.h>

int main() {
int countdown = 5;

while (countdown > 0) {
printf("%d...\n", countdown);
countdown--;
}

printf("Blast off!\n");
return 0;
}

출력:

5...
4...
3...
2...
1...
Blast off!

이를 단계별로 설명하겠습니다:

  1. countdown = 5로 시작합니다.
  2. while 루프는 countdown > 0을 검사합니다 (참).
  3. 현재 다운카운트 값을 출력합니다.
  4. countdown을 1 감소시킵니다.
  5. 단계 2-4를 countdown이 0이 될 때까지 반복합니다.
  6. countdown이 0이 되면 조건이 거짓이 되고 루프를 나갑니다.
  7. 마지막으로 "Blast off!"를 출력합니다.

Using while as Conditional Loop

while 루프는 반복 횟수를 정확히 알 수 없는 경우에 완벽합니다. 사용자가 숫자를 추측하는 예제를 보겠습니다:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
srand(time(0));  // 난수 생성 시드 설정
int secret = rand() % 100 + 1;  // 1에서 100 사이의 난수
int guess = 0;
int attempts = 0;

printf("나는 1과 100 사이의 숫자를 생각하고 있습니다. 추측해 보세요?\n");

while (guess != secret) {
printf("추측을 입력하세요: ");
scanf("%d", &guess);
attempts++;

if (guess < secret) {
printf("너무 낮습니다! 다시 시도하세요.\n");
} else if (guess > secret) {
printf("너무 높습니다! 다시 시도하세요.\n");
}
}

printf("축하합니다! %d번의 시도로 숫자를 맞추셨습니다!\n", attempts);
return 0;
}

이 예제에서는 사용자가 얼마나 많이 시도할지 모르기 때문에 while 루프가 적합합니다. 루프는 추측이 비밀 숫자와 일치할 때까지 계속됩니다.

While Loop with break and continue

때로는 루프를 일찍 종료하거나 다음 반복으로 건너뛰고 싶을 수 있습니다. 이때 breakcontinue가 유용합니다.

break

break 문은 즉시 루프를 종료합니다. 예제를 보겠습니다:

#include <stdio.h>

int main() {
int i = 1;
while (1) {  // 무한 루프 생성
printf("%d ", i);
if (i == 5) {
break;  // i가 5에 도달하면 루프 종료
}
i++;
}
printf("\n루프 종료!\n");
return 0;
}

출력:

1 2 3 4 5
루프 종료!

continue

continue 문은 현재 반복의 나머지 부분을 건너뛰고 다음 반복으로 이동합니다. 예제를 보겠습니다:

#include <stdio.h>

int main() {
int i = 0;
while (i < 10) {
i++;
if (i % 2 == 0) {
continue;  // 짝수 번호를 건너뛰습니다
}
printf("%d ", i);
}
printf("\n루프 종료!\n");
return 0;
}

출력:

1 3 5 7 9
루프 종료!

More Examples of C while Loop

추가적인 예제를 통해 이해를 더욱固화시키겠습니다:

Example 1: Sum of Numbers

#include <stdio.h>

int main() {
int num, sum = 0;

printf("합을 구할 숫자를 입력하세요 (0을 입력하면 종료):\n");

while (1) {
scanf("%d", &num);
if (num == 0) {
break;
}
sum += num;
}

printf("합은: %d\n", sum);
return 0;
}

이 프로그램은 사용자가 0을 입력할 때까지 숫자를 계속 추가합니다.

Example 2: Fibonacci Sequence

#include <stdio.h>

int main() {
int n, first = 0, second = 1, next;

printf("피보나치 수열의 터미널 개수를 입력하세요: ");
scanf("%d", &n);

printf("피보나치 수열:\n");

int i = 0;
while (i < n) {
if (i <= 1) {
next = i;
} else {
next = first + second;
first = second;
second = next;
}
printf("%d ", next);
i++;
}

printf("\n");
return 0;
}

이 프로그램은 n 개의 피보나치 수열을 생성합니다.

while Vs. do while Loops

while 루프와 그 사촌인 do-while 루프를 간단히 비교해 보겠습니다:

Feature while Loop do-while Loop
조건 검사 시작 시 종료 시
최소 실행 횟수 0 (초기 조건이 거짓일 경우) 1 (항상 최소한 한 번 실행)
문법 while (condition) { ... } do { ... } while (condition);
가장 적합한 사용 사례 루프를 전혀 실행하지 않아도 되는 경우 루프를 최소한 한 번은 실행해야 하는 경우

do-while 루프의 주요 차이는 조건이 종료 시에 검사된다는 점입니다.

그리고 여기서, 내 코딩 제자! C 언어의 while 루프의 힘을 터뜨린 것 같은 느낌을 받게 되셨나요? 연습이 완벽함을 기억하세요, 그러면 곧 루프를 마스터하게 될 것입니다! 행복하게 코딩하세요! ??

Credits: Image by storyset