고등학교 정보교과서 3. 문제 해결과 프로그래밍 (3) 프로그래밍 Programming ④ 제어 구조의 활용 #1 - 씨마스
제어 구조
알고리즘은 컴퓨터가 일을 하는 순서를 결정하는 제어 구조인 순차 구조, 선택 구조, 반복 구조를 사용하여 구현할 수 있죠.
제어 구조를 사용하여 성적표를 바탕으로 평균 내신 등급을 계산하는 프로그램을 작성해봅시다.
문제(요구사항) 이해 및 분석
프로그램을 작성하기 위해 문제를 정확히 정의하고 분석합니다.
과목별 단위 수와 석차 등급을 입력하면 평균 내신 등급을 계산하여 출력한다.
알고리즘 설계
원하는 결과를 내기 위한 작업을 설계합니다.
평균 내신 등급 = (과목별 단위 수 * 석차 등급의 합) / 전체 단위 수
- 과목별 단위 수 * 석차 등급의 합을 저장하는 변수 sum를 정의하고 0으로 초기화한다.
- 전체 단위 수를 저장할 변수 totalUnit을 정의하고 0으로 초기화한다.
- 전체 과목 수를 입력받는다.
- 전체 과목 수 만큼 반복하여 과목 당 단위 수, 석차 등급을 입력받는다.
- 입력받은 단위 수를 변수 totalUnit과 더한다.
- 입력받은 과목 당 단위 수 * 석차 등급을 계산하여 변수 sum과 더한다.
- sum / totalUnit을 계산하여 평균 내신 등급을 구한다.
- 계산된 평균 내신 등급에 따라 다른 메세지를 출력한다.
다이어그램(Diagram)으로 표현합니다.
반복 구조
과목별 단위 수와 석차 등급을 입력받는 작업은 전체 과목 수만큼 반복해서 실행되야 하므로, 반복 구조를 사용하여 구현할 수 있습니다.
for
반복 변수를 0부터 마지막 수 - 1 까지 1씩 증가시키며 반복문 안의 명령들을 반복합니다.
for 반복변수 in range(수) :
명령
for i in range(5) : # i = 0, 1, 2, 3, 4
print(i)
range(a, b, c)
숫자들을 만들어주는 함수입니다.
range(3) : 0부터 시작하여 1씩 증가하여 3 - 1 = 2까지의 숫자 > 0, 1, 2
range(1, 5) : 1부터 시작하여 1씩 증가하여 5 - 1 = 4까지의 숫자 > 1, 2, 3, 4
range(1, 10, 3) : 1부터 시작하여 3씩 증가하여 10 - 1 = 9까지의 숫자 > 1, 4, 7
리스트(List)를 대상으로 모든 요소를 방문하는 반복문은 아래와 같이 사용합니다.
list = []
for item in list :
print(item)
while
특정 조건이 참인 경우 반복하여 실행합니다.
while 조건 :
명령
i = 0
while i < 3 :
print(i)
항상 참인 조건을 작성한다면 무한 반복을 구현할 수 있죠.
무한 반복문에서 특정 조건일 경우 빠져나가는 break 키워드를 사용합니다.
while true : # 무한반복
break # 반복문 나가기
선택 구조
평균 내신 등급에 따라 다른 결과를 출력하는 작업은 어떤 조건이 참과 거짓일 경우 각각 다른 명령을 실행하는 선택 구조로 구현할 수 있습니다.
if-else
if 조건 :
참일 경우 명령
else :
거짓일 경우 명령
if sum < 3 :
print('sum less than 3')
else :
print('sum more than 3')
if-elif-else
조건이 두개 이상인 경우, elif 구문을 추가하여 구현합니다.
elif의 조건은 이전의 조건들이 모두 거짓이라는 확신이 있습니다.
if 조건A :
조건A가 참인 경우 명령
elif 조건 B :
조건A가 거짓이고 조건B가 참인 경우 명령
else :
조건A와 조건B 모두 거짓인 경우 명령
if sum < 3 :
print('sum is less than 3')
elif sum < 5 :
print('sum is between 3 and 5')
else :
print('sum is more than 5')
구현하기
전체 코드보기
# 평균 내신 등급 프로그램
print('============ 평균 내신 등급 프로그램 ============')
sum = 0
totalUnit = 0
totalSub = int(input('전체 과목 수 입력 > '))
for i in range(totalSub) :
print(i + 1, '번째 과목')
unit = int(input('단위 수 입력 > '))
grade = int(input('등급 입력 > '))
totalUnit += unit
sum += unit * grade
avgGrade = sum / totalUnit
print('평균 내신 등급 : ', avgGrade)
level = ''
if avgGrade <= 3 :
level = '상위권'
elif avgGrade <= 6 :
level = '중위권'
else :
level = '하위권'
print('수준은 ', level, '입니다')
'정보교과서' 카테고리의 다른 글
[고등학교 정보교과서] 3-3-5. 배열 #1 - 씨마스 (0) | 2024.04.18 |
---|---|
[고등학교 정보교과서] 3-3-4. 제어 구조 활용 #2 - 씨마스 (0) | 2024.04.17 |
[고등학교 정보교과서] 3-3-3. 파이썬 연산자와 입출력 - 씨마스 (1) | 2024.04.15 |
[고등학교 정보교과서] 3-3-2. 변수와 자료형 - 씨마스 (1) | 2024.04.14 |
[고등학교 정보교과서] 3-3-1. 파이썬(Python)과 환경설정 - 씨마스 (1) | 2024.04.13 |