Python Basics I: 거북이 그래픽
코스 개요
이 코스는 프로그래밍의 가장 기초적인 개념을 시각적인 거북이 그래픽을 통해 배웁니다. 학생들은 코드를 작성하면 즉시 화면에서 결과를 볼 수 있어, 추상적인 개념을 구체적으로 이해할 수 있습니다. 이 단계에서 배우는 개념들은 모든 프로그래밍 언어의 공통 기반이 됩니다.
예상 소요 시간: 16~32시간
소요 시간은 학생의 학년, 사전 경험, 학습 속도에 따라 크게 달라집니다. 또한 기본 개념만 익히고 넘어가는 경우와 추가 실습 문제나 창의적 프로젝트를 더 진행하는 경우에 따라서도 차이가 납니다. 위 시간은 평균적인 범위이며, 자녀의 페이스에 맞추어 유연하게 진행하시기 바랍니다.
어떤 능력을 키우게 되나요?
복잡한 도형을 작은 단계로 분해하여 해결하는 문제 해결 능력을 훈련합니다. 반복되는 패턴을 찾아 규칙화하는 과정은 데이터에서 의미 있는 패턴을 발견하는 능력의 기초가 됩니다. AI 시대에 가장 중요한 역량인 "데이터를 보고 규칙을 찾아내는 능력"을 시각적으로 체험하게 됩니다.
어떤 원리를 배우나요?
- (데이터 저장 - 변수) 변수는 데이터를 저장하는 가장 기본적인 방법입니다. 색상, 크기, 각도 같은 값(데이터)을 저장하고 재사용하는 법을 배웁니다. 이는 모든 데이터 처리의 출발점입니다.
- (데이터 패턴 - 반복문) 반복되는 패턴을 코드로 표현하면서, 규칙적인 데이터를 효율적으로 생성하고 처리하는 원리를 익힙니다. 이것이 빅데이터 처리의 기본 원리입니다.
AI 시대 사고력: 컴퓨팅 (문제해결) | 데이터 기반 | 확률적 사고력
컴퓨팅 사고력 (Computational Thinking)
| 스킬 | 설명 | 활동 예시 |
|---|---|---|
| 🧩 분해 | 복잡한 문제를 작은 단계로 나누기 | 한글 'ㄱ'을 "앞으로 → 오른쪽 회전 → 앞으로"로 분해 |
| 🔄 패턴 인식 | 반복되는 규칙 찾기 | 사각형 = "앞으로+회전"을 4번 반복 |
| 💡 추상화 | 불필요한 세부사항 제거하고 핵심만 추출 | 색상을 변수로 저장하여 재사용 |
| 📝 알고리즘 | 문제 해결의 단계적 절차 설계 | 별 그리기: 5번 반복(앞으로 → 144도 회전) |
수학적 연결고리
| 수학 개념 | 프로그래밍 적용 | 학습 효과 |
|---|---|---|
| 각도와 기하학 | right(90), left(120) |
다각형의 외각 합 = 360° 이해 |
| 수열 | range(1, 10, 2) → 1, 3, 5, 7, 9 |
등차수열의 첫째항, 공차 개념 |
| 변수와 대입 | x = 100, forward(x) |
대수학의 변수 개념 |
| 규칙과 공식 | forward(i * 10) |
일차함수 y = ax 관계 |
문제 해결 프로세스
flowchart LR
A[1. 이해하기<br/>문제 분석] --> B[2. 계획하기<br/>알고리즘 설계]
B --> C[3. 실행하기<br/>코드 작성]
C --> D[4. 검토하기<br/>디버깅]
D -.->|오류 발견| B
💻 코드 예시 & 시각화
예시 1: 사각형 그리기 - 반복문의 힘
반복문 없이 (비효율적)
from turtle import *
forward(100)
right(90)
forward(100)
right(90)
forward(100)
right(90)
forward(100)
right(90)
반복문 사용 (효율적)
from turtle import *
for i in range(4): # 4번 반복
forward(100) # 앞으로 100
right(90) # 오른쪽 90도
실행 결과:
예시 2: 별 그리기 - 각도의 수학
from turtle import *
for i in range(5): # 5번 반복
forward(100) # 앞으로 100
right(144) # 오른쪽 144도 (360÷5×2=144)
왜 144도일까? (수학적 원리)
실행 결과:
예시 3: 나선형 패턴 - 변수 i 활용
i 값에 따른 변화:
i=0: forward(0) → 움직이지 않음
i=1: forward(5) → 5픽셀
i=2: forward(10) → 10픽셀
i=3: forward(15) → 15픽셀
...
i=49: forward(245) → 245픽셀
실행 결과 (나선형):
예시 4: 조건문 - 색상 바꾸기
from turtle import *
colors = ["red", "blue", "green", "yellow"]
for i in range(4):
pencolor(colors[i]) # i번째 색상 선택
forward(100)
right(90)
플로우차트:
flowchart TD
A[시작] --> B{i = 0, 1, 2, 3}
B --> C[색상 변경<br/>pencolor]
C --> D[forward 100<br/>right 90]
D --> E{i < 4?}
E -->|예| B
E -->|아니오| F[끝]
예시 5: 함수 정의 - 재사용 가능한 코드
from turtle import *
def draw_square(size):
"""크기를 입력받아 사각형을 그리는 함수"""
for i in range(4):
forward(size)
right(90)
# 함수 호출 - 다양한 크기의 사각형
draw_square(50) # 작은 사각형
draw_square(100) # 중간 사각형
draw_square(150) # 큰 사각형
실행 결과 (동심 사각형):
1. 거북이 조련사가 되어보자
A. import - 라이브러리 불러오기
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 다른 사람이 만든 코드를 가져와 사용하기 |
| 핵심 개념 | 모듈화, 코드 재사용, 라이브러리 |
import는 이미 만들어진 도구 상자를 열어보는 것과 같습니다. Python은 수천 개의 라이브러리를 제공하며, 거북이(turtle) 라이브러리는 그 중 하나입니다. 학생들은 모든 것을 처음부터 만들 필요가 없다는 것을 배웁니다. 이것은 현대 소프트웨어 개발의 핵심 원칙인 코드 재사용을 소개합니다.
C-H. 이동과 회전 (shape, forward, turn, 한글 자음)
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 거북이를 움직여 도형 그리기 |
| 핵심 개념 | 좌표 기하학, 순차 실행, 알고리즘 |
forward()와 right()/left() 함수로 거북이를 정확한 거리와 각도로 이동시킵니다. 학생들은 한글 자음(ㄱ, ㄴ, ㄷ)을 그리면서 복잡한 모양을 단순한 단계로 분해하는 방법을 배웁니다. 이것은 알고리즘적 사고의 핵심입니다 - "큰 문제를 작은 단계로 나누기". 각도 계산을 통해 기하학적 사고도 자연스럽게 발달합니다.
2. 예술가의 도구들
A. 변수 선언 (Variables)
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 데이터에 이름을 붙여 저장하기 |
| 핵심 개념 | 메모리, 데이터 저장, 추상화 |
변수는 데이터를 담는 상자에 이름표를 붙이는 것입니다. color = "red"라고 하면 "red"라는 값을 color라는 이름으로 저장합니다. 학생들은 컴퓨터가 메모리에 데이터를 저장하고 나중에 꺼내 쓸 수 있다는 것을 배웁니다. 이 개념은 프로그래밍의 가장 기본적이고 중요한 개념 중 하나입니다.
B-D. 색상 설정과 변수 재사용
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 배경색, 펜 색상 설정 및 변수 활용 |
| 핵심 개념 | 속성 변경, 코드 효율성, DRY 원칙 |
bgcolor()와 pencolor() 함수로 시각적 요소를 제어합니다. 색상을 변수에 저장하면 여러 곳에서 같은 값을 재사용할 수 있습니다. 만약 색상을 변경하고 싶으면 한 곳만 수정하면 됩니다 - 이것이 DRY(Don't Repeat Yourself) 원칙입니다.
3. 숫자 마법사
range() 함수 이해하기
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 숫자 시퀀스 생성하기 |
| 핵심 개념 | 수열, 반복 범위, 매개변수 |
range() 함수는 숫자들의 순서(시퀀스)를 생성합니다. range(5)는 0, 1, 2, 3, 4를 만들고, range(1, 6)은 1, 2, 3, 4, 5를 만듭니다. 세 번째 인자(step)를 사용하면 range(0, 10, 2)로 0, 2, 4, 6, 8과 같은 패턴을 만들 수 있습니다. 학생들은 수학적 수열 개념을 프로그래밍으로 표현하는 방법을 배웁니다.
4. 갈림길에 선 거북이
조건문 (If, Else, Elif)
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 조건에 따라 다른 코드 실행하기 |
| 핵심 개념 | 분기, 의사결정, 프로그램 흐름 제어 |
조건문은 프로그램이 "생각하고 결정"할 수 있게 해주는 핵심 구조입니다. if문은 "만약 ~라면"이라는 조건을 검사하고, else는 "그렇지 않으면"을 처리합니다. elif(else if)는 여러 가지 경우를 순차적으로 검사할 때 사용합니다. 이 구조를 이해하면 학생들은 문제를 경우의 수로 분류하는 체계적 사고 방식을 익히게 됩니다.
5. 지치지 않는 거북이
For 루프 기초와 응용
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 정해진 횟수만큼 반복 실행하기 |
| 핵심 개념 | 반복, 자동화, 들여쓰기 |
for 루프는 "이것을 N번 해라"라는 명령입니다. for i in range(4):는 그 아래 코드를 4번 반복합니다. 학생들은 들여쓰기(indentation)가 어떤 코드가 반복되는지 결정한다는 것을 배웁니다. 사각형(4번 전진, 90도 회전)이나 별(5번 전진, 144도 회전) 같은 패턴을 효율적으로 그릴 수 있습니다. 반복문은 컴퓨터의 가장 강력한 능력을 활용하는 것으로, 자동화의 힘을 이해하게 됩니다.
6. 화려한 만화경 패턴
반복 변수 i 활용하기
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 반복할 때마다 변하는 값 활용하기 |
| 핵심 개념 | 반복 변수, 동적 계산, 패턴 생성 |
반복 변수 i는 현재 몇 번째 반복인지 알려줍니다. 이 값을 계산에 사용하면 반복할 때마다 다른 결과를 만들 수 있습니다. 예를 들어, forward(i * 10)은 10, 20, 30, ... 점점 더 긴 선을 그립니다. 학생들은 규칙적으로 변하는 패턴을 수학적으로 표현하는 방법을 배웁니다. 이 개념은 나선형, 동심원, 막대 그래프 등 다양한 시각적 패턴을 만드는 데 활용됩니다.
7. 나만의 함수 만들기
함수 정의와 호출
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 재사용 가능한 코드 블록 만들기 |
| 핵심 개념 | 추상화, 모듈화, 매개변수 |
함수는 특정 작업을 수행하는 코드 묶음에 이름을 붙인 것입니다. def draw_square():로 사각형 그리는 함수를 정의하고, draw_square()로 호출합니다. 학생들은 같은 코드를 여러 번 쓰지 않아도 된다는 것을 배웁니다. 매개변수(parameter)를 사용하면 draw_square(100), draw_square(50)처럼 다른 크기의 사각형을 그릴 수 있습니다. 함수는 프로그래밍의 가장 중요한 추상화 도구입니다.
8. 나만의 우주 만들기
나선형 패턴 프로젝트
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 반복 변수로 복잡한 패턴 생성하기 |
| 핵심 개념 | 알고리즘 설계, 수학적 패턴, 실험 |
나선형은 반복 변수를 활용한 대표적인 프로젝트입니다. 각도를 90도가 아닌 91도로 바꾸면 전혀 다른 패턴이 만들어집니다. 학생들은 작은 변화가 큰 결과 차이를 만든다는 것을 시각적으로 확인합니다. "만약 ~를 바꾸면 어떻게 될까?"라는 실험적 사고를 장려합니다. 학생들은 자신만의 패턴을 만들며 창의성과 논리적 사고를 동시에 발휘합니다.
이 코스를 마치면...
학습 성과
학생들은 다음 능력을 갖추게 됩니다:
- 거북이 그래픽으로 다양한 도형과 패턴을 그릴 수 있음
- 문제를 작은 단계로 분해하는 알고리즘적 사고
- 변수, 조건문, 반복문, 함수의 핵심 개념 이해
- 시각적 출력을 통해 추상적 개념을 구체화하는 경험
- 오류를 두려워하지 않고 디버깅하는 자세
- 더 복잡한 프로젝트로 나아갈 탄탄한 기초