학습자료 알고리즘과 프로그래밍 · 03

반복 — 똑똑하게 되풀이

반복은 같은 일을 여러 번 할 때, 복붙 대신 되풀이할 부분을 한 번만 적고 'N번 해'라고 묶는 거예요. 반복문은 늘 두 부분 — 몸통(되풀이할 일)과 횟수(몇 번 할지)로 되어 있어요.

펼치면 순차, 접으면 반복 — 슬라이더로 횟수를 바꿔 봐요

왼쪽 코드를 펼치면 같은 명령이 줄줄이, 접으면 '몇 번 반복'과 몸통 한 줄로 짧아져요. 슬라이더로 횟수를 바꿔 보세요.

코드
결과
횟수: 5

같은 일을 여러 번 할 때, 되풀이할 부분(몸통)을 한 번만 적고 '몇 번 할지'만 정하는 것 — 이게 반복(loop)이에요. 반복은 차례대로 하던 순차를 한 덩어리로 접은 것이고요.


한 번 더, 또 한 번 더 — 반복이 도는 걸 따라가 봐요

'한 번 더'를 누를 때마다 반복이 한 바퀴 돌아요. 몇 번째인지 세어 보고, 언제 멈추는지 지켜보세요.

지금 0번째 / 모두 3번
'한 번 더'를 눌러 반복을 한 바퀴씩 돌려 보세요.

반복은 몸통을 한 번 하고 → 횟수를 하나 세고 → 다 셀 때까지 되풀이해요. 컴퓨터는 정확히 세고 정해진 횟수에서 딱 멈춰요.

이렇게 한 번씩 돌리는 '한 번 더'는, 나중에 막대를 줄 세울 때 누를 '다음 비교'와 똑같은 한 걸음이에요.


펼친 순차와 반복문 짝짓기 — 같은 결과를 찾아요

위 명령을 똑같은 결과로 줄여 쓴 반복문은 어느 것일까요? 몸통과 횟수를 잘 살펴보세요.

펼쳐 쓴 명령
손뼉을 친다
손뼉을 친다
손뼉을 친다
손뼉을 친다

펼친 줄 수 = 반복 횟수, 한 줄에 적힌 명령 = 몸통. 둘이 맞아야 같은 결과예요.


운동장 다섯 바퀴 — 펼치면 길고, 접으면 짧아요

운동장을 도는 같은 일을, 펼친 순차접은 반복문으로 나란히 적었어요. '5바퀴'와 '10바퀴'를 바꿔 보면?

펼친 순차
접은 반복문
5번 반복 {
한 바퀴 뛴다
}

횟수를 바꿀 때 펼친 쪽은 줄을 더 적어야 하지만, 접은 반복문은 숫자 하나만 고치면 돼요. 그래서 여러 번 할수록 반복이 편하고 실수도 적어요.

그런데 '지칠 때까지 뛴다'면 몇 바퀴인지 미리 정할 수 없어요. '언제 멈출까'를 정하는 건 갈림길(만약 ~라면) — 다음에 배울 이야기예요.

한 걸음 더 — 횟수 반복과 조건 반복, 중첩 반복, 무한 반복, 학술어

본문만으로 챕터는 완결돼요.

아래는 한 걸음 더 들어가고 싶은 친구를 위한 보너스예요.

1. 두 가지 반복 — 횟수 반복과 조건 반복

지금까지 본 반복은 "몇 번 할지"를 미리 아는 반복이었어요(별 5번, 운동장 10바퀴).

이걸 횟수 반복이라고 해요.

그런데 "언제까지 할지"는 아는데 몇 번인지는 모를 때도 있어요.

예를 들어 "물이 끓을 때까지 기다린다"는 몇 초인지 미리 모르죠.

이렇게 어떤 일이 일어날 때까지 되풀이하는 걸 조건 반복이라고 해요.

  • 횟수 반복: "5번 반복 { ... }" — 몇 번인지 정해져 있어요.
  • 조건 반복: "물이 끓을 때까지 반복 { 기다린다 }" — 횟수 대신 멈출 조건이 있어요.

둘 다 "되풀이"라는 점은 같고, 멈추는 방법이 다를 뿐이에요.

2. 반복 안의 반복 — 중첩 반복(구구단 맛보기)

반복 몸통 안에 또 반복을 넣을 수도 있어요.

구구단을 떠올려 봐요.

단을 2단부터 9단까지 반복 { 곱하는 수를 1부터 9까지 반복 { "단 × 수 = 답"을 적는다 } }

바깥 반복이 단(2~9단, 여덟 번)을 돌고, 그 한 바퀴마다 안쪽 반복이 곱하는 수(1~9, 아홉 번)를 다 돌아요.

그래서 줄은 8 × 9 = 72줄이 적혀요.

이렇게 반복 속의 반복을 중첩 반복(nested loop)이라고 불러요.

바깥이 한 번 돌 때 안쪽은 끝까지 한 바퀴 도는 게 핵심이에요.

3. 끝나지 않는 반복 — 무한 반복 조심하기

반복에 멈출 방법이 없으면 컴퓨터는 영원히 멈추지 않아요.

이걸 무한 반복(infinite loop)이라고 해요.

반복 { 별 하나를 그린다 }

이렇게 "몇 번"도 "언제까지"도 없으면, 컴퓨터는 별을 끝없이 그려요(화면이 멈춘 듯 보이기도 해요).

사람은 지치면 알아서 멈추지만 컴퓨터는 안 멈춰요 — 그래서 반복에는 반드시 멈출 횟수나 멈출 조건이 있어야 해요.

"언제 멈출까"를 정하는 일이 결국 다음에 배울 갈림길(조건)과 이어져요.

4. 학술어 — 반복(iteration)

본문에서 "되풀이"라고 부른 이 블록을 컴퓨터 과학에서는 반복(iteration)이라고 불러요.

반복 한 바퀴 도는 것을 "한 번의 반복(iteration)"이라고도 해요.

적는 방식도 두 가지로 나눠 불러요.

  • REPEAT n TIMES(엔 번 반복) — 횟수 반복. 예: REPEAT 5 TIMES.
  • REPEAT UNTIL (조건)(~될 때까지 반복) — 조건 반복. 예: REPEAT UNTIL 물이 끓음.

순차가 명령을 차례대로 하나씩 했다면, 반복은 그중 한 덩어리를 여러 바퀴 돌리는 방식이에요.

프로그램이 같은 일을 효율적으로 처리하는 가장 기본 도구라, 반복을 알면 짧은 코드가 어떻게 많은 일을 해내는지 읽을 수 있어요.


직접 해 보기 — 코딩 로봇

배운 반복을 진짜 코드처럼 써 볼 차례예요. 같은 명령이 줄줄이 이어지면 반복 블록으로 묶어 로봇을 별까지 데려다주세요. 반복 스테이지 4개를 이 자리에서 바로 풀 수 있어요.

순차·조건·내 블록까지 다른 월드도 풀고 싶다면 학습게임의 코딩 로봇에서 이어서 할 수 있어요 — 여기서 얻은 별은 거기서도 그대로 이어져요.


자가진단

외운 사실이 아니라 개념을 적용하는 문제예요. 답을 고르면 바로 정답·오답과 해설을 알려줘요. 틀려도 괜찮아요 — ↻ 다시로 얼마든지 다시 풀 수 있어요.

Q1 · 개념같은 명령을 여러 번 해야 할 때, 반복을 쓰면 좋은 까닭으로 가장 알맞은 것은 무엇일까요?
Q2 · 구분다음 반복문에서, 몇 번 할지(횟수)를 정하는 부분과 되풀이되는 일(몸통)이 알맞게 짝지어진 것은?
6번 반복 {
공을 하나 던진다
}
Q3 · 추적별을 그리는 반복문이에요. 이대로 실행하면 별은 모두 몇 개 그려질까요?
4번 반복 {
별 하나를 그린다
}
Q4 · 디버깅화면에 별을 딱 5개 그리고 싶었어요. 그런데 아래 반복문을 실행했더니 별이 5개가 안 나와요. 무엇을 고쳐야 별이 5개가 될까요?
4번 반복 {
별 하나를 그린다
}

핵심 정리

반복 = 되풀이할 부분을 한 번 적고 묶기
펼친 순차
별 하나를 그린다
별 하나를 그린다
별 하나를 그린다
접은 반복문
N번 반복 {
별 하나를 그린다
}
  • 반복은 같은 일을 여러 번 할 때, 되풀이할 부분을 한 번 적고 묶는 거예요(순차를 접은 것).
  • 반복문은 늘 두 부분 — 몸통(되풀이할 일) + 횟수(몇 번).
  • 횟수만 바꾸면 결과가 늘거나 줄어요 — 펼친 줄을 다시 적지 않고 숫자 하나로요.