단원 홈
3단원 · 7차시

흐름을 지휘하다
제어 구조의 복합 활용

선택과 반복은 따로 쓸 때보다 함께 쓸 때 강해집니다. 반복 속의 선택, 선택 속의 반복 — 흐름을 자유자재로 지휘하면, 3차시에 즐겼던 그 게임도 직접 만들 수 있어요.

성취기준 12정03-07
if · elif · elsefor · while 중첩 구조break복합 활용
🎯 학습 목표
  • 선택 구조(if·elif·else)와 반복 구조(for·while)를 활용한 프로그램을 작성할 수 있다.
  • 반복 속의 선택, 중첩 반복 등 제어 구조를 복합적으로 활용할 수 있다.
  • 복합 제어 구조로 실생활의 문제(게임, 판정, 집계)를 해결하는 프로그램을 완성할 수 있다.
🤔

생각 열기 — 교차로의 컴퓨팅

교차로의 신호등
신호등의 하루 — "만약 보행 버튼이 눌렸다면 → 초록불"(선택)을 "꺼질 때까지 영원히"(반복). 제어 구조 두 개가 도시의 흐름을 지휘한다. 출처: Wikimedia Commons

신호등 제어기의 알고리즘을 말로 풀면 이렇습니다 — "전원이 꺼질 때까지 반복한다: 차량 신호를 켠다, 만약 보행 버튼이 눌렸으면 일정 시간 뒤 보행 신호로 바꾼다, 아니면 차량 신호를 유지한다." 반복 안에 선택이 들어 있죠? 자판기, 엘리베이터, 게임, 1단원의 스마트홈 규칙까지 — 세상의 모든 자동화는 이런 제어 구조의 조합으로 만들어집니다.

💬 함께 생각해 보기

3차시의 업다운 게임을 떠올려 보세요. 그 게임의 규칙을 "반복한다 / 만약 ~라면" 두 가지 표현만 써서 말로 설명할 수 있나요? — 오늘 수업이 끝나면 그 설명이 그대로 코드가 됩니다!

1

선택 구조 — 갈림길의 문법

if, elif, else로 만드는 판단

선택 구조 조건? A 실행 B 실행 거짓 반복 구조 계속? 몸체 실행 다시! 아니오→끝

두 가지 기본 흐름 — 갈라지는 선택, 되돌아오는 반복. 오늘은 이 둘을 겹쳐 쓴다!

⚠️ elif의 순서가 운명을 가른다

위 코드에서 if score >= 70:맨 위로 옮기면 어떻게 될까요? 95점도 "C"가 됩니다! 조건은 위에서부터 차례로 검사되고, 하나가 참이 되는 순간 나머지는 건너뛰니까요. 미션의 "A+"를 어디에 넣어야 하는지, 이제 보이죠?

2

반복 구조 — 횟수의 for, 조건의 while

언제까지 반복할지 아는가, 모르는가

구분for 반복while 반복
반복 기준정해진 횟수나 모음의 원소조건이 참인 동안 계속
어울리는 일"30명 모두에게", "10번 반복""정답을 맞힐 때까지", "잔액이 남아 있는 동안"
예시for i in range(10):while life > 0:
3

복합 활용 — 구조를 겹치면 프로그램이 된다

성취기준의 심장: 반복 속의 선택, 반복 속의 반복

진짜 프로그램은 제어 구조 하나로 만들어지지 않아요. 2차시 버블 정렬의 코드를 다시 떠올려 보세요 — 반복(바퀴) 속의 반복(이웃 훑기) 속의 선택(크면 교환), 3중 구조였습니다! 이제 그 구조를 우리가 직접 만들 차례예요.

🛠️ 활동 1 — 대망의 미션: 업다운 게임을 내 손으로!

3차시에서 플레이했던 업다운 게임 — 오늘은 제작자가 됩니다. while(반복) + if/elif/else(선택) + break(탈출)가 모두 들어간 복합 구조의 완성판이에요. 실행해서 직접 플레이해 보세요!

  1. 미션 ①: 기회를 7번으로 제한하세요 — 7번 안에 못 맞히면 "게임 오버! 정답은 ○○"을 출력하고 끝내기. (힌트: while tries < 7:로 바꾸고, 반복이 끝난 뒤 정답 여부를 어떻게 알 수 있을까요?)
  2. 미션 ②: 범위를 1~1000으로 넓히면 이진 탐색 전략으로 최대 몇 번이면 충분할까요? 계산해 보고(3차시!) 실제로 도전해 보세요.
  3. 미션 ③ (도전): 역할을 뒤집어 보세요 — 내가 숫자를 정하고 컴퓨터가 맞히는 게임은 어떤 구조가 될까요? 의사코드로 설계해 보세요. (3차시의 '컴퓨터 전략 구경하기'가 힌트!)
💡 이 게임 안에 이 단원의 절반이 들어 있다

방금 만든 스무 줄이 채 안 되는 게임에는 변수와 자료형(4차시), 표준입출력(5차시), 선택·반복·탈출의 복합(오늘), 그리고 이진 탐색 전략(3차시)까지 담겨 있어요. 차시들이 부품이 되어 하나의 작품으로 조립되는 것 — 이것이 9차시 프로젝트의 예고편입니다!

확인 문제

바로바로 채점! 해설까지 꼭 읽어 보세요.

📝

7차시 확인 문제

4문항 · 즉시 채점

1for i in range(3): print("안녕")의 실행 결과는?

2x = 85일 때 if x >= 90: print("A") / elif x >= 80: print("B") / else: print("C")의 출력은?

3반복문을 즉시 빠져나오게 하는 명령은?

4"사용자가 정답을 맞힐 때까지 계속 입력받기"에 가장 자연스러운 제어 구조는?

🚀

더 알아보기

교육과정 너머, 궁금한 만큼 깊이!

심화무한 루프 — 사고인가 설계인가

while True:는 조건이 영원히 참이라 무한 루프가 됩니다. 탈출 장치(break) 없이 쓰면 프로그램이 멈추지 않는 대표적인 버그죠. (이 실행기에서 무한 루프에 빠지면 페이지를 새로고침하세요!)

그런데 놀랍게도, 세상의 중요한 프로그램들은 일부러 무한 루프로 돌아갑니다. 게임은 "입력 확인 → 상태 갱신 → 화면 그리기"를 초당 60번 영원히 반복하는 게임 루프이고, 웹 서버도 "요청 기다리기 → 응답하기"의 무한 반복이에요. 1단원 아두이노의 loop() 함수가 기억나나요? 무한 루프는 잘 쓰면 사고가 아니라 심장 박동입니다.

그 심장을 직접 뛰게 해 보세요 — break(정지 버튼)가 있는 무한 루프는 사고가 아니라 설계입니다.

① 입력 확인 ② 상태 갱신 ③ 화면 그리기 ↩ 다시 ①로
🏃
프레임: 0while True: 의 심장은 아직 멈춰 있어요.
복습이제 다시 보는 버블 정렬 — 3중 구조 완전 해부

2차시에서는 "흐름만 따라가라"고 했던 버블 정렬 코드, 이제는 완전히 읽을 수 있습니다!

한 달 전엔 마법이었던 코드가 지금은 read & write 가능한 글이 되었어요 — 그것이 성장의 증거!

놀이패턴의 예술 — 중첩 반복으로 그리는 그림

중첩 반복은 6차시의 픽셀 아트와 만나면 '생성 예술'이 됩니다. 규칙이 만드는 무늬를 감상하세요!

심화continue와 else — 반복문의 숨은 조연들

break의 형제들도 알아 두면 코드가 우아해져요.

  • continue — 이번 회차만 건너뛰고 다음 반복으로. "결석한 학생은 건너뛰고 계속 채점"
  • 반복문의 else — break 없이 반복이 끝까지 돌면 실행되는 특별한 블록. 3차시 이진 탐색 코드의 마지막 else: print("데이터에 없습니다…")가 바로 이것이었어요 — "찾기를 다 했는데도 break(발견)가 없었다면 = 없는 것"이라는 우아한 논리!
남은 원소가 있나? 몸체 앞부분 몸체 뒷부분 continue 뒷부분 건너뛰고 바로 다음 회차로 다음 원소 아니오 (목록 끝) else 블록 실행 반복 끝 break — 즉시 탈출 (else 건너뜀!)

세 조연의 길 — continue는 위로 점프, break는 옆으로 탈출, else는 '끝까지 돈' 흐름에서만 실행

📌

한눈에 정리

  • 선택: if → elif → else, 위에서부터 차례로 — 조건의 순서가 결과를 좌우
  • 반복: 횟수가 정해지면 for, 조건이 핵심이면 while, 탈출은 break
  • 복합이 진짜 힘 — 반복 속의 선택(짝수 골라내기), 반복 속의 반복(구구단·버블 정렬)
  • 업다운 게임 = while + if/elif/else + break + 입출력 + 자료형의 합주
  • 제어 구조를 겹쳐 쓸 줄 알면, 이제 어떤 알고리즘도 코드로 옮길 수 있다!