1. 프로그램 제어 논리
- 문제를 해결하기 위해 컴퓨터 프로그램으로 처리하는 제어 구조
- 순차논리, 선택논리, 반복논리
2. 순차논리 (Sequential Logic)
- 위에서 아래로 명령문을 순차적으로 수행하는 구조
- 프로그램을 작성할 때 어느 명령문을 먼저 또는 나중에 실행되어야 하는지를 고려하여 문장을 작성하여야 한다.
프로그램은 주어진 문제를 논리적인 절차로 표현해야 한다.
문제를 해결하기 위해서는 입력 자료가 무엇인지 자료에 대한 처리 절차,
구하려는 출력이 무엇인지를 생각해 보야아 한다.
'입력 - 처리(연산) - 출력'
순차논리에 대한 예제 1
가로가 30이고, 세로가 20인 직사각형의 면적을 구하는 프로그램을 작성하시오.
( 이 문제에 대해서 print('직사각형의 면적 : ', 30 * 20) 와 같이 작성한다면 프로그래밍적 사고방식으로 좋은 방법은 아님 )
① 입력 자료와 변수 설정
입력 자료 | 변수명 | 초기값 |
가로 | width | 30 |
세로 | height | 20 |
② 연산 처리
처리 자료 | 변수명 | 계산식 |
면적 | area | width * height |
③ 출력 형식과 변수
출력 자료 | 출력 형식 | 변수명 |
면적 | "면적 = " | area |
# 입력
width = 30
height = 20
# 연산
area = width * height
# 출력
print('가로 =', width)
print('세로 =', height)
print('면적 =', area)
순차논리에 대한 예제 2
신장(cm)와 체중(kg)을 정수 값으로 입력 받아 표준체중(kg)과 비만도(%)를 구하는 프로그램을 작성하시오.
단, 비만도는 소수 셋째 자리에서 반올림하여 둘째 자리로 표시하시오.
표준체중(kg) = (신장 - 100) * 0.9
비만도(%) = ( ( 체중 - 표준체중) / 표준체중 ) * 100
① 입력 자료와 변수 설정
입력 자료 | 변수명 | 식 |
신장 | height | int(input("당신의 신장(cm)은?")) |
체중 | weight | int(input("당신의 체중(kg)은?")) |
② 연산 처리
처리 자료 | 변수명 | 계산식 |
표준체중 | stdWeight | ( height - 100 ) * 0.9 |
비만도 | bmi | ( ( weight - stdWeight ) / stdWeight) * 100 |
③ 출력 자료와 변수 설정
출력 자료 | 출력 형식 | 변수명 |
표준체중 | "표준체중(kg) : " | stdWeight |
비만도 | "비만도(%) : " | bmi |
# 입력
height = int(input("당신의 신장(cm)은? "))
weight = int(input("당신의 체중(kg)은? "))
# 연산
stdWeight = (height - 100) * 0.9
bmi = ((weight - stdWeight) / stdWeight) * 100
# 출력
print("신장 :" + str(height) + "(cm)")
print("체중 :" + str(weight) + "(kg)")
print("표준체중 :" + str(stdWeight) + "(kg)")
print("비만도 :" + str(round(bmi, 2)) + "(%)")
3. 제어문 (Control Statement)
- if문, for문, while문
- 프로그램의 실행 흐름이 순차적으로 실행되지 않고 조건에 따라 실행 흐름이 변경되는 문장
- 조건에 따라 실행 흐름이 분기되어 수행하는 문장 : 선택문(분기문) → if문
- 조건에 따라 특정 문장을 반복 수행하는 문자 : 반복문 → for문, while문
선택문 (분기문)
- 주어진 조건식을 판단하여 그 결과에 따라 수행할 문장으로 선택(분기)된다.
- 조건식은 참(True) 또는 거짓(False) 값으로 산출되는 식으로 주로 관계식과 논리식으로 구성된다.
기본 if문
- 조건식을 판별해서 참(True)일 때만 실행할 문장을 수행하고, 거짓(False)일 경우에는 if문을 벗어나는 문장구조
if 조건식 :
실행할 문장
# 파이썬에서는 들여쓰기가 매우 중요하다. '실행할 문장'은 if문 다음 줄에서 꼭 들여쓰기를 해서 작성해야 한다.
기본 if문 예제 1
하나의 정수를 입력 받아 그 수가 음수일 경우에만 '음수'라고 출력해 보자.
num = int(input("정수를 입력하세요 : "))
if num < 0 : # 조건식 : num에 저장된 값이 음수라면
print(num, ': 음수') # 조건식이 참(True)일 때 실행되는 문장
print('프로그램 종료')
if ~else문
- 조건식을 판별해서 참(True)일 때는 '실행할 문장 1'을 수행하고, 거짓(False)일 경우에는 '실행할 문장2'를 실행하는 문장구조
if 조건식 :
실행할 문장 1
else :
실행할 문장 2
if ~else문 예제 1
num = int(input('양수를 입력하세요 :'))
if num % 2 == 0 : # 만약 변수 num에 저장된 값을 2로 나누었을 때 나머지가 0이라면
print(num, ': 짝수') # 나머지가 0일 때 수행
else :
print(num, ': 홀수') # 나머지가 0이 아닐 때 수행
블록문 (블록구조)
- 블록문은 조건식이 참/거짓일 때 수행해야 할 문장이 여러 문장일 경우 하라의 덩어리(묶음)로 표기하여 블록 내부에 있는 문장을 순차적으로 처리하는 구조이다. ( C언어, Java에서는 { } 기호를 사용한다. )
다중 선택 if문 (if ~elif문)
- 판단해야 할 조건식이 2개 이상일 때 사용할 수 있는 선택(분기)문이다.
- elif는 else if의 줄임 말로 또 다른 조건식을 표시하여 비교한다.
if 조건식 1 :
명령문 1
elif 조건식 2 :
명령문 2
.
.
.
elif 조건식 n :
명령문 n
else :
명령문 n+1
다중 선택 if문 예제 1
변수 num에 배정받은 값이 속하는 범위를 출력하는 프로그램을 작성하시오.
num = int(input('정수를 입력하세요 :'))
if num < 10 :
print(num, ': 10미만입니다.')
elif num < 100 :
print(num, ': 100미만입니다.')
elif num < 1000 :
print(num, ': 1000미만입니다.')
else :
print(num, ': 1000이상입니다.')
다중 선택 if문 예제 2
한 과목의 점수를 입력 받아 점수에 따라 등급을 출력하는 프로그램을 작성하시오. ( A 등급 : 90이상 100이하,
B등급 : 80이상 90미만, C등급 : 70이상 80미만, D등급 : 60이상 70미만, F등급 : 60미만 )
# 입력
score = int(input('점수를 입력하세요 : '))
# 연산
if score >= 90 :
grade = 'A'
elif score >= 80 :
grade = 'B'
elif score >= 70 :
grade = 'C'
elif score >= 60 :
grade = 'D'
else:
grade = 'F'
# 출력
print('점수 :', score)
print('등급 :', grade)
다중 선택 if문 예제 3
직급코드와 총소득을 입력하였을 때 아래 표와 같이 총소득에 대한 직급별 세율을 적용하여 세금을 구한 후, 총 소득에서 세금을 감한 실수령액을 구하는 프로그램을 작성하시오. 단 직급코드는 1부터 3까지의 정수를 입력 받는다.
( 실수령액 = 총소득 - 세금 )
직급 | 직급코드 | 세율 |
과장 | 1 | 8% |
차장 | 2 | 12% |
부장 | 3 | 18% |
① 입력 자료와 변수 설정
입력자료 | 변수명 | 식 |
직급코드 | code | code = int(input('직급코드( 1: 과장, 2: 차장, 3: 부장) : ')) |
총소득 | income | income = int(input('총 소득(원) : ')) |
② 연산 처리
조건식 | 처리자료 | 변수명 | 계산식 |
code == 1 | 직급 | position | position = '과장' |
세금 | tax | tax = income * 0.08 | |
code == 2 | 직급 | position | position = '차장' |
세금 | tax | tax = income * 0.12 | |
code == 3 | 직급 | position | position = '부장' |
세금 | tax | tax = income * 0.18 |
③ 출력 자료와 변수 설정
출력자료 | 출력형식 | 계산식 |
실수령액 | '실수령액(원) : ' | income - tax |
# 입력
code = int(input('직급코드(1: 과장, 2:차장, 3: 부장): '))
income = int(input('총 소득(원): '))
# 연산
if code == 1 :
position = '과장'
tax = income * 0.08
elif code == 2 :
position = '차장'
tax = income * 0.12
elif code == 3 :
position = '부장'
tax = income * 0.18
# 출력
pay = income - tax # 실수령액 연산 (총소득 - 세금)
print('직급: ', position)
print('총 소득(원): ', income)
print('세금(원): ', int(tax))
print('실수령액(원): ', int(pay))
내포된 if문 (중첩된 if문, nested if문)
- elif 키워드를 이용하여 다중 선택을 사용할 수 있지만, if문 안에 다른 if문이 포함되어 있는 중첩된 구조로 다중 선택을 사용할 수 있다.
if 조건식1 :
if 조건식2 :
명령문1
else :
명령문2
else :
명령문3
'Data Analysis > Python' 카테고리의 다른 글
[Python] 기초 파이썬 - 반복문 (1) | 2024.02.25 |
---|---|
[Python] 기초 파이썬 - 자료형과 연산자 (1) | 2024.02.25 |