Ⅰ. 목표지향 개념기반 수업지도안
| 차시 | 1차시 | 주제 | 교과의 네 영역과 문제 해결 절차, 함수 정의·호출·반환값 |
|---|---|---|---|
| 핵심 질문 | 함수는 어떻게 복잡한 문제를 작은 기능으로 나누고 다시 연결하게 하는가? | ||
| 전이 목표 | 학생은 새로운 문제를 입력·처리·출력과 작은 기능으로 분해하고 함수의 매개변수와 반환값을 활용해 해결 구조를 설계할 수 있다. | ||
| 성취기준 | 정보과학 교과의 디지털 문화·데이터·알고리즘과 프로그래밍·인공지능 영역을 이해하고 문제 해결 절차와 연결한다. 함수의 정의와 호출, 매개변수와 인수, 반환값을 설명하며 실행 결과를 진단하고 오류를 수정한다. | ||
| 평가 증거 | 코드별 복수정답형 10문항, OX 형성평가 10문항, 종합 진단평가 10문항 및 자동 생성 TXT 결과 | ||
수업 흐름
| 단계 | 교수·학습 활동 | 개념 초점 |
|---|---|---|
| 도입 | 교과 네 영역과 생활 속 문제 해결 사례를 연결하고 함수에 대한 사전 개념을 점검한다. | 연결, 구조 |
| 개념 형성 | 함수 정의·호출·매개변수·인수·반환값의 예와 비예를 비교한다. | 분해, 추상화 |
| 진단 실습 | 10개 코드를 실행하고 결과를 예측하며 코드별 확인 문제를 해결한다. | 적용, 진단 |
| 정리·전이 | 새로운 문제를 함수로 분해하고 OX 및 종합 진단평가로 이해를 점검한다. | 일반화, 전이 |
Ⅱ. 학습 목표와 학습할 개념
학습 목표
- 교과의 네 영역을 설명하고 서로의 관계를 말한다.
- 문제 해결 절차의 각 단계를 실제 사례에 적용한다.
- 함수를 정의하고 올바르게 호출한다.
- 매개변수와 인수, print와 return의 차이를 설명한다.
- 실행 결과를 예측하고 함수 오류를 진단한다.
학습할 개념
- 분해: 복잡한 문제를 작은 기능으로 나누기
- 추상화: 공통 기능을 함수로 표현하기
- 호출: 정의한 기능을 필요한 시점에 실행하기
- 인터페이스: 매개변수와 반환값으로 정보 전달하기
- 진단: 예상 결과와 실제 결과를 비교해 오류 찾기
교과의 네 영역
디지털 문화정보기술의 사회적 영향, 개인정보, 저작권과 책임을 다룹니다.
데이터데이터를 수집·정리·분석하고 의미를 발견합니다.
알고리즘과 프로그래밍문제를 단계적으로 설계하고 프로그램으로 구현합니다.
인공지능데이터와 규칙을 이용한 분류·예측·추천 원리를 탐구합니다.
문제 해결 절차
① 문제 이해목표 파악
② 조건 분석입력·출력
③ 알고리즘 설계처리 순서
④ 구현·실행함수 작성
⑤ 평가·개선오류 수정
Ⅲ. 수업 시작 멘트
“소크라테스는 질문으로 생각을 깨웠고, 데카르트는 복잡한 문제를 가능한 한 작은 부분으로 나누라고 했습니다. 뉴턴은 작은 원리가 거대한 우주의 움직임을 설명할 수 있음을 보여 주었고, 가우스는 복잡한 수 속에서 아름다운 질서를 발견했습니다. 오늘 우리가 만날 함수도 같습니다. 함수는 코드를 줄이는 요술 주머니가 아니라 생각을 정리하는 서랍입니다. 서랍 이름을 잘 붙이면 필요한 생각을 금방 꺼낼 수 있지만, 모든 것을 한 서랍에 넣으면 연필을 찾다가 우주의 나이를 계산하게 될지도 모릅니다. 이제 문제를 나누고, 함수를 호출하며, 생각의 질서를 만들어 봅시다.”
Ⅳ. 학습 내용
- 정보과학 교과 네 영역의 특징과 상호 연결
- 문제 이해 → 조건 분석 → 알고리즘 설계 → 구현 → 평가·개선
- 함수 정의와 호출의 실행 순서
- 매개변수와 인수의 대응 관계
- print와 return의 차이, None의 의미
- 여러 값 반환과 언패킹
- 입력 검증, 조기 반환, 조건 분류
- 함수 재사용, 개인정보 보호, 규칙 기반 추천, 오류 진단
Ⅴ. 학습 관련 소논문 주제 예시 5개
- 함수 분해 방식이 프로그램 가독성과 오류 수정 시간에 미치는 영향
- print 중심 코드와 return 중심 코드의 재사용성 비교
- 매개변수 설계 방식에 따른 함수 활용 범위 분석
- 입력 검증 함수가 프로그램 안정성에 미치는 영향
- 규칙 기반 추천 함수의 조건 변화와 결과 민감도 탐구
Ⅵ. 학습할 코드 10개
각 코드를 실행하고 예상 출력과 비교한 뒤, 코드 아래에서 옳은 설명 3개를 선택하세요.
예제 1
함수 정의와 호출 구별하기
def함수 호출순차 실행
def greet():
print("안녕하세요.")
print("수업을 시작합니다.")
greet()
print("수업을 마칩니다.")예상 출력
수업을 시작합니다. 안녕하세요. 수업을 마칩니다.
진단 질문
def greet():가 실행될 때 바로 “안녕하세요.”가 출력될까요?| 구문 | 설명 |
|---|---|
| def greet(): | greet라는 함수를 정의합니다. 정의만으로 함수 내부가 실행되지는 않습니다. |
| greet() | 정의된 함수를 호출합니다. 이때 함수 내부의 print()가 실행됩니다. |
핵심 함수는 먼저 정의하고, 필요한 시점에 호출하여 사용합니다.
예제 1 확인 문제
1. 예제 1의 함수 정의와 호출에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 2
print와 return의 차이 진단하기
return출력값 저장
def add_print(a, b):
print(a + b)
def add_return(a, b):
return a + b
x = add_print(3, 4)
y = add_return(3, 4)
print("x =", x)
print("y =", y)예상 출력
7 x = None y = 7
주의
print()로 화면에 값을 보였다고 해서 그 값이 함수의 결과로 반환되는 것은 아닙니다.핵심
print()는 화면 출력, return은 계산 결과 전달입니다. 반환값이 없는 함수는 기본적으로 None을 돌려줍니다.예제 2 확인 문제
2. 예제 2의 print와 return에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 3
매개변수와 인수 점검하기
매개변수인수자료형
def introduce(name, subject):
return f"{name} 학생은 {subject} 과목을 학습합니다."
message = introduce("민준", "정보")
print(message)진단
name과 subject는 함수 정의에 사용된 매개변수입니다.
"민준"과 "정보"는 함수를 호출할 때 전달한 인수입니다.
민준 학생은 정보 과목을 학습합니다.
확인 활동
인수의 순서를 바꾸어
인수의 순서를 바꾸어
introduce("정보", "민준")을 실행하고 문장이 어떻게 달라지는지 확인합니다.예제 3 확인 문제
3. 예제 3의 매개변수와 인수에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 4
여러 값을 반환하는 함수
튜플 반환언패킹데이터 영역
def analyze_scores(scores):
total = sum(scores)
average = total / len(scores)
highest = max(scores)
lowest = min(scores)
return total, average, highest, lowest
scores = [85, 92, 78, 96, 89]
total, avg, high, low = analyze_scores(scores)
print("합계:", total)
print("평균:", avg)
print("최고:", high)
print("최저:", low)문제 해결 연결
- 문제 이해: 점수의 특징을 요약한다.
- 데이터 분석: 합계·평균·최댓값·최솟값을 선택한다.
- 알고리즘: 네 값을 순서대로 계산한다.
- 함수 구현: 계산 결과를 한 번에 반환한다.
핵심 파이썬 함수는 쉼표로 구분하여 여러 값을 반환할 수 있으며, 호출할 때 여러 변수로 나누어 저장할 수 있습니다.
예제 4 확인 문제
4. 예제 4의 여러 반환값에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 5
입력값을 검증하는 함수
조건문조기 반환오류 예방
def safe_divide(a, b):
if b == 0:
return "0으로 나눌 수 없습니다."
return a / b
print(safe_divide(10, 2))
print(safe_divide(10, 0))예상 출력
5.0 0으로 나눌 수 없습니다.
잘못된 입력을 먼저 검사하여 함수 실행을 안전하게 종료합니다.
진단 질문
첫 번째
정답: 실행되지 않습니다.
첫 번째
return이 실행되면 아래쪽의 return a / b도 실행될까요?정답: 실행되지 않습니다.
return은 함수 실행을 즉시 끝냅니다.예제 5 확인 문제
5. 예제 5의 입력 검증 함수에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 6
데이터 영역: 미세먼지 상태 분류 함수
데이터 분류다중 조건문반환값
def classify_pm10(value):
if value <= 30:
return "좋음"
elif value <= 80:
return "보통"
elif value <= 150:
return "나쁨"
else:
return "매우 나쁨"
measurements = [22, 57, 103, 171]
for value in measurements:
result = classify_pm10(value)
print(value, "→", result)실행 결과
22 → 좋음 57 → 보통 103 → 나쁨 171 → 매우 나쁨
하나의 분류 규칙을 함수로 만들면 여러 데이터에 반복 적용할 수 있습니다.
문제 해결 절차 측정값 입력 → 구간 비교 → 상태 반환 → 반복 적용 → 결과 확인
예제 6 확인 문제
6. 예제 6의 미세먼지 분류 함수에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 7
디지털 문화 영역: 개인정보 가리기
개인정보 보호문자열 슬라이싱함수 재사용
def mask_name(name):
if len(name) <= 1:
return "*"
return name[0] + "*" * (len(name) - 1)
students = ["김민준", "이서연", "박준"]
for student in students:
print(mask_name(student))실행 결과
김** 이** 박*
개인정보를 그대로 공개하지 않고 일부 문자를 가리는 간단한 비식별화 활동입니다.
윤리 점검
이름 일부를 가리는 것만으로 완전한 익명성이 보장되지는 않습니다. 다른 정보와 결합되면 개인을 다시 알아볼 수 있으므로 데이터 공개 범위를 함께 검토해야 합니다.
이름 일부를 가리는 것만으로 완전한 익명성이 보장되지는 않습니다. 다른 정보와 결합되면 개인을 다시 알아볼 수 있으므로 데이터 공개 범위를 함께 검토해야 합니다.
예제 7 확인 문제
7. 예제 7의 개인정보 가리기 함수에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 8
인공지능 영역: 규칙 기반 추천 함수
인공지능 기초규칙 기반추천
def recommend_activity(temperature, rain):
if rain:
return "실내 코딩 활동"
elif temperature >= 28:
return "그늘에서 센서 관찰"
elif temperature <= 5:
return "실내 데이터 분석"
else:
return "야외 사물인터넷 실험"
print(recommend_activity(30, False))
print(recommend_activity(18, True))진단
이 코드는 학습 데이터를 이용한 기계학습이 아니라, 사람이 만든 조건을 따르는 규칙 기반 시스템입니다.
그늘에서 센서 관찰 실내 코딩 활동
확장 활동
습도, 미세먼지, 학생 선호도 등의 조건을 추가하고 추천 결과가 어떻게 달라지는지 살펴봅니다.
습도, 미세먼지, 학생 선호도 등의 조건을 추가하고 추천 결과가 어떻게 달라지는지 살펴봅니다.
예제 8 확인 문제
8. 예제 8의 규칙 기반 추천 함수에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 9
함수 오류를 찾아 수정하기
디버깅들여쓰기반환 위치
오류 코드
def count_even(numbers):
count = 0
for number in numbers:
if number % 2 == 0:
count += 1
return count
print(count_even([2, 4, 5, 8]))
수정 코드
def count_even(numbers):
count = 0
for number in numbers:
if number % 2 == 0:
count += 1
return count
print(count_even([2, 4, 5, 8]))
오류 원인
오류 코드의
오류 코드의
return count가 반복문 안에 있어 첫 번째 숫자를 처리한 직후 함수가 종료됩니다.수정 결과 짝수 2, 4, 8을 모두 확인하므로
3이 출력됩니다.예제 9 확인 문제
9. 예제 9의 오류 코드와 수정 코드에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
예제 10
종합 문제: 교실 환경 진단 프로그램
문제 분해함수 조합데이터알고리즘
def check_temperature(value):
if 20 <= value <= 26:
return "적정"
return "조절 필요"
def check_co2(value):
if value < 1000:
return "양호"
return "환기 필요"
def make_report(temperature, co2):
temp_result = check_temperature(temperature)
co2_result = check_co2(co2)
return {
"온도": temp_result,
"이산화탄소": co2_result
}
report = make_report(28, 1350)
for item, result in report.items():
print(item, ":", result)
실행 결과
온도 : 조절 필요 이산화탄소 : 환기 필요
문제 해결 절차
- 문제: 교실 환경 상태를 진단한다.
- 분해: 온도와 이산화탄소를 따로 판단한다.
- 추상화: 각 판단을 함수로 만든다.
- 통합: 보고서 함수에서 결과를 묶는다.
- 평가: 기준값과 실제 환경의 차이를 점검한다.
예제 10 확인 문제
10. 예제 10의 교실 환경 진단 프로그램에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
Ⅶ. 수업 끝 멘트
“시는 짧은 문장으로 긴 마음을 반환하고, 소설은 수많은 인물을 하나의 이야기 속에서 호출합니다. 희곡은 인물마다 역할을 나누고, 연극은 그 역할을 한 무대에서 연결하며, 음악은 서로 다른 음을 매개변수처럼 받아 하나의 화음을 돌려줍니다. 여러분의 꿈도 아직 완성되지 않은 함수입니다. 오늘 결과가 예상과 달라도 인생의 문법 오류는 아닙니다. 아직 디버깅 중일 뿐입니다. 실패라는 빨간 글씨가 나타나면 ‘프로그램 종료’가 아니라 ‘다음 줄을 더 멋지게 고쳐 보라’는 안내라고 생각하세요. 여러분의 꿈 함수는 언제든 다시 호출할 수 있고, 희망이라는 반환값은 생각보다 오래 남습니다.”
Ⅷ. 형성평가 OX 퀴즈 10개
각 2점, 총 20점입니다.
1. 함수는 특정 작업을 하나의 이름으로 묶은 코드이다.
2. def로 함수를 정의하면 함수 내부가 즉시 실행된다.
3. 함수 이름 뒤에 괄호를 붙이면 함수를 호출할 수 있다.
4. return은 값을 호출한 위치로 돌려보낼 수 있다.
5. print()는 항상 값을 함수 밖으로 반환한다.
6. 매개변수는 함수가 값을 전달받기 위한 이름이다.
7. 인수의 순서는 함수 결과에 영향을 줄 수 없다.
8. 함수는 여러 값을 반환할 수 있다.
9. return이 실행되면 함수는 계속 아래 문장을 실행한다.
10. 함수 분해는 문제 해결 과정을 더 명확하게 만들 수 있다.
Ⅸ. 진단평가 복수정답형 10개
보기 5개 중 옳은 것 3개를 모두 선택하세요. 각 3점, 총 30점입니다.
1. 정보과학 교과의 네 영역에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
2. 문제 해결 절차에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
3. 함수 정의와 호출에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
4. print와 return에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
5. 매개변수와 인수에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
6. 여러 반환값에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
7. 입력 검증과 조기 반환에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
8. 함수의 재사용성에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
9. 함수 오류 진단에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
10. 좋은 함수 설계에 관한 설명으로 옳은 것을 모두 고르시오.
옳은 것 3개를 선택하세요.
Ⅹ. 학번·이름 입력 및 제출
배점
코드별 평가 10문항 × 5점 = 50점
OX 10문항 × 2점 = 20점
진단평가 10문항 × 3점 = 30점
총점 100점
코드별 평가 10문항 × 5점 = 50점
OX 10문항 × 2점 = 20점
진단평가 10문항 × 3점 = 30점
총점 100점