학습 목표
- 제어 구조의 종류를 나열할 수 있음
- 순차 구조의 특징을 설명할 수 있음
- 프로그래밍 에러의 종류를 설명할 수 있음
주요 용어
- 제어 구조
- 프로그램의 실행 흐름을 결정하는 구조
- 순차 구조
- 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조
- 프로그래밍 에러
- 설계 미숙, 결함 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 문제 상황
- 데이터 타입 변환
- 한 데이터의 타입을 다른 데이터 타입으로 전환하는 과정
강의록
제어 구조의 이해
제품 생산 공정

구조적 프로그래밍 패러다임
- 절차적 프로그래밍 패러다임의 하위 개념
goto문을 사용하지 않고 프로그램을 3가지 제어 구조만으로 구성하는 프로그래밍 패러다임- 순차(sequence) 구조
- 선택(selection) 구조
- 반복(iteration) 구조
- 프로그램 실행 흐름이 간결하고 작은 규모로 조직화하기 쉬움
순차 구조

- 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조
- 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조
- 일단 첫 단계를 시작하면 마지막 단계까지 수행
- ex) 설계 → 생산 → 조립
선택 구조

- 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 결정하는 구조
- 실행 여부는 조건에 따라 결정
- ex) 검사 → (정상? 배송 : 불량? 재생)
반복 구조

- 특정 영역의 명령문을 여러 번 재실행하는 구조
- 반복 횟수를 조건에 따라 결정
- ex) (조건 만족?) 설계 → … → 배송
순차 구조
- 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조
- 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조
- 일단 첫 단계를 시작하면 마지막 단계까지 수행
- ex) 설계 → 생산 → 조립
삼각형 출력 하기
-
다음과 같이 삼각형 모양으로
*을 출력하는 프로그램을 작성하시오.
1 2 3 4
print(" *") print(" ***") print(" *****") print("*******")
원뿔 계산 프로그램 개선
-
사용자로부터 반지름과 높이를 입력 받고 계산

사용자 입력
input- 사용자로부터 데이터를 입력받는 함수
- 입력 데이터를 문자 데이터 타입으로 반환
- 함수의 파라미터는 입력 안내문의 목적으로 사용
1 2
rad = input() rad = input("반지름을 입력하세요:") # 입력 대기 후 입력값 반환
- 사용자로부터 데이터를 입력받는 함수
원뿔 계산 프로그램 개선 1
-
사용자로부터 반지름과 높이를 입력 받고 계산
1 2 3 4 5 6 7 8
# 반지름 사용자 입력 rad = input("반지름을 입력하세요:") # 높이 사용자 입력 hei = input("높이를 입력하세요:") # 부피 계산 (TypeError 발생: 문자열 연산 불가) vol = 1/3 * 3.14 * rad ** 2 * hei print(vol)
- 부피 =
1/3 * π * r² * h - 겉넓이 =
π * r² + π * r * h
프로그래밍 에러
- 설계 미숙, 결함 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 문제
- 구문 오류 (Syntax Error)
- 문법 체계에 적합하지 않는 명령문 입력 시 발생
- 실행 오류 (Runtime Error)
- 논리적으로 실행 불가능한 명령문 작성 시 발생
- 의미 오류 (Semantic Error)
- 의미적으로 잘못 해석되는 명령문 작성 시 발생
- 구문 오류 (Syntax Error)
데이터 타입 변환
- 데이터 타입을 다른 타입으로 전환해야 함
- 문자열 타입으로 변환
str함수
- 정수 타입으로 변환
int함수
- 소수 타입으로 변환
float함수
- 문자열 타입으로 변환
1
rad = int(input("반지름을 입력하세요"))
1
2
3
4
5
6
7
8
9
# 문자열 30을 정수 30으로 변환
rad = int("30")
# input으로 받은 문자열을 정수로 변환
rad = input("반지름을 입력하세요")
rad = int(rad)
# 한 줄로 작성
rad = int(input("반지름을 입력하세요"))
원뿔 계산 프로그램 개선 2
-
사용자로부터 반지름과 높이를 입력 받고 계산
1 2 3 4 5 6 7 8 9 10 11 12 13
# 반지름 사용자 입력 (정수로 변환) rad = int(input("반지름을 입력하세요:")) # 높이 사용자 입력 (정수로 변환) hei = int(input("높이를 입력하세요:")) # 부피 & 겉넓이 계산 vol = 1/3 * 3.14 * rad ** 2 * hei suf = 3.14 * rad ** 2 + 3.14 * rad * hei # 결과 출력 print(vol) print(suf)
print 함수의 확장
- 여러 개의 데이터를 단일 함수로 출력 가능
- 콤마(
,)로 파라미터를 구분하여 입력
- 콤마(
- 데이터 사이에 공백 (기본 값)이 자동으로 추가
sep옵션을 변경하여 공백 변경 가능
1
print("원뿔의 부피는 ", vol, "입니다.", sep="")
원뿔 계산 프로그램 개선 3
-
print 함수는 여러 개의 데이터를 출력 가능
1 2 3 4 5 6 7 8 9 10 11 12 13
# 반지름 사용자 입력 (정수로 변환) rad = int(input("반지름을 입력하세요:")) # 높이 사용자 입력 (정수로 변환) hei = int(input("높이를 입력하세요:")) # 부피 & 겉넓이 계산 vol = 1/3 * 3.14 * rad ** 2 * hei suf = 3.14 * rad ** 2 + 3.14 * rad * hei # 결과 출력 print(vol) print(suf)
연습 문제
-
다음은 어떤 제어 구조에 대한 설명인가?
1
특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 조건에 따라 결정하는 구조
a. 선택 구조
-
number 변수에 저장되어 있는 정수를 사용하여 “상자에사과가n개들어있습니다.”라는 메시지를 출력하려고 한다. 올바른 명령문은? (단, n은 number 변수에 저장된 정수를 의미한다.)
a.
print("상자에", "사과가", number, "개", 들어있습니다.", sep="") -
‘논리적으로 실행 불가능한 명령문 작성 시 발생’ 오류를 무엇이라고 하는가?
a. 실행 오류
학습 정리
- 파이썬은 구조적 프로그래밍 패러다임을 지원하며 goto 문을 사용하지 않고 프로그램을 구성할 수 있는 순차, 선택, 반복 구조를 제공함
- 순차 구조는 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조
- 선택 구조는 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 조건에 따라 결정하는 구조
- 반복 구조는 특정 영역의 명령문을 조건에 따라 여러 번 재실행하는 구조
- input 함수는 사용자로부터 데이터를 입력 받아, 문자 데이터 타입으로 반환
- 프로그래밍 에러는 설계 미숙, 결함 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 현상이며 구문 오류, 실행 오류, 의미 오류로 구분 됨
- 데이터 타입을 다른 데이터 타입으로 전환하기 위해 str, int, float 함수를 사용함
print함수는 여러 개의 데이터를 단일 print 함수로 출력 가능하며, 콤마(,)로 파라미터를 구분하여 입력함