본문 바로가기

정보교과서

[고등학교 정보교과서] 3-3-4. 제어 구조 활용 #1 - 씨마스

고등학교 정보교과서 3. 문제 해결과 프로그래밍 (3) 프로그래밍 Programming ④ 제어 구조의 활용 #1 - 씨마스

고등학교 정보교과서 3. 문제 해결과 프로그래밍 (3) 프로그래밍 Programming ④ 제어 구조의 활용 #1 - 씨마스

 


 

제어 구조

알고리즘은 컴퓨터가 일을 하는 순서를 결정하는 제어 구조인 순차 구조, 선택 구조, 반복 구조를 사용하여 구현할 수 있죠.

제어 구조를 사용하여 성적표를 바탕으로 평균 내신 등급을 계산하는 프로그램을 작성해봅시다.

 

문제(요구사항) 이해 및 분석

프로그램을 작성하기 위해 문제를 정확히 정의하고 분석합니다.

과목별 단위 수와 석차 등급을 입력하면 평균 내신 등급을 계산하여 출력한다.

 

알고리즘 설계

원하는 결과를 내기 위한 작업을 설계합니다.

평균 내신 등급 = (과목별 단위 수 * 석차 등급의 합) / 전체 단위 수

 

  1. 과목별 단위 수 * 석차 등급의 합을 저장하는 변수 sum를 정의하고 0으로 초기화한다.
  2. 전체 단위 수를 저장할 변수 totalUnit을 정의하고 0으로 초기화한다.
  3. 전체 과목 수를 입력받는다.
  4. 전체 과목 수 만큼 반복하여 과목 당 단위 수, 석차 등급을 입력받는다.
  5. 입력받은 단위 수를 변수 totalUnit과 더한다.
  6. 입력받은 과목 당 단위 수 * 석차 등급을 계산하여 변수 sum과 더한다.
  7. sum / totalUnit을 계산하여 평균 내신 등급을 구한다.
  8. 계산된 평균 내신 등급에 따라 다른 메세지를 출력한다.

다이어그램(Diagram)으로 표현합니다.

Algorithm 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, '입니다')

 

728x90