구조적 프로그래밍
구조적 프로그래밍 패러다임
Section titled “구조적 프로그래밍 패러다임”프로그래밍 패러다임은 제품 생산 공정처럼 순차, 선택, 반복, 구조로 표현될 수 있다.
명령형 프로그래밍 패러다임의 하위 개념
- 제어 흐름만으로 구성하는 프로그래밍 패러다임
- 순차(sequence)구조
- 선택(selection)구조
- 반복(iteration)구조
- 제어 흐름을 블록 단위로 계층화하고 지역화
- 프로그램 실행 흐름이 간결하고 작은 규모로 조직화가 용기
- 프로그램 예측 가능성과 검증 가능성을 보장
순차 구조의 이해
Section titled “순차 구조의 이해”실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조
설계 → 생산 → 조립
- 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조
- 다버깅 용이
프로그램 오류
Section titled “프로그램 오류”설계, 결함 논리적 실수 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 상황
- 구문 오류 (syntax error) 문법 체계에 적합하지 않는 명령문 입력 시 발생 프로그램이 실행되기 전, 인터프리터/컴파일러가 탐지
- 실행 오류 (runtime error) 실행되지만 실행 중에 잘못된 상황 발생으로 프로그램이 중단되는 오류
- 의미 오류 (semantic error) 프로그래머의 의도와 다른 잘못된 결과를 생성 논리적/의미적으로 잘못 해석되는 명령문 작성 시 발생
데이터 타입 변환
Section titled “데이터 타입 변환”한 데이터를 다른 데이터 타입으로 변환
데이터 타입 변환 내장 함수
- 문자열 : str()
- 정수 : int()
- 소수 : float()
print 함수의 확장
Section titled “print 함수의 확장”여러 개의 데이터 단일 함수로 출력 가능
- 파라미터로 데이터를 콤마(,)로 구분하여 입력
- 데이터 사이에 공백(default)이 자동으로 추가
- sep 옵션을 변경하여 공백 변경 가능
print(“상자에”, “사과가”, number, “개”, “들어있습니다.”) → 상자에 사과가 5 개 들어있습니다.
print(“상자에”, “사과가”, number, “개”, “들어있습니다.”, sep="") → 상자에사과가5개들어있습니다.
원뿔의 부피&겉넓이 계산 프로그램
Section titled “원뿔의 부피&겉넓이 계산 프로그램”rad = int(input('반지름을 입력하세요 :'))hei = int(input('높이를 입력하세요 :'))sla = pow(rad ** 2 + hei ** 2, 0.5)#부피 & 겉넓이 출력vol = 1 / 3 * 3.14 * rad ** 2 * heisuf = 3.14 * rad ** 2 + 3.14 * rad * slaprint("원뿔의 부피는 : ", str(vol) + "입니다.", sep='|')print("원뿔의 겉넓이는 : ", str(suf) + "입니다." )특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 조건의 참, 거짓에 따라 결정하는 구조
- 동일한 입력에 대해 항상 같은 행동을 하는 게 아닌 상황에 따라 다르게 행동하게 만드는 지능의 시작
- 오류 처리, 예외 상황 대응 등 프로그램의 안정성을 책임
if rad >= 0 and hai >= 0 # 모선 계산 sla = pow(rad ** 2 + hei ** 2, 0.5) #부피 & 겉넓이 출력 vol = 1 / 3 * 3.14 * rad ** 2 * hei suf = 3.14 * rad ** 2 + 3.14 * rad * sla print("원뿔의 부피는", str(vol) + "입니다.") print("원뿔의 겉넓이는", str(suf) + "입니다.")불리언식과 비교 연산자
Section titled “불리언식과 비교 연산자”- 비교 연산자를 사용하여 결과가 불리언(Boolean) 타입으로 생성되는 표현식
- 비교 연산자의 종류
| 연산자 | 수학적 표현 | 의미 |
|---|---|---|
< | < | 작다. |
<= | ≤ | 작거나 같다. |
> | > | 크다. |
>= | ≥ | 크거나 같다. |
== | = | 같다. |
!= | ≠ | 같지 않다. |
연산자 우선 순위
Section titled “연산자 우선 순위”표현식에 사용된 여러 연산자의 연산 순서를 결정
① 괄호 내부의 수식 ② 거듭제곱(**) 연산자 ③ 곱셈, 실수 나눗셈, 정수 나눗셈, 모듈로 연산자 (왼쪽에서 오른쪽 순서로 적용) ④ 덧셈, 뺄셈 연산자 - (왼쪽에서 오른쪽 순서로 적용) ⑤ 비교 연산자(<, <=, >, >=, ==, !=) ⑥ 할당 연산자
불리언 타입
Section titled “불리언 타입”논리값인 참(Frue)과 거짓(False)의 값만 표현할 수 있는 데이터 타입
논리 연산자
Section titled “논리 연산자”참, 거짓을 구별할 수 있는 명제를 대상으로 명제의 집합을 위해 고안한 연산자
- 명제 : 참과 거짓 중 하나의 진리값만을 갖는 서술문
- 불리언식에 작용하여 또 하나의 불리언 값을 산출하는 연산체계
두 개의 논리값을 연산하여 참 또는 거짓을 결과로 생성하는 연산자
- and(논리곱), or(논리합), not(논리부정), 연산자 가용
- 왼쪽에서 오른쪽의 방향으로 결합
and 연산자
Section titled “and 연산자”두 논리값이 모두 True 일 때 True이고 어느 하나가 False일 경우 False를 반환
or 연산자
Section titled “or 연산자”두 논리값이 모두 False일 때 False이고 어느 하나가 True일 경우 True 반환
not 연산자
Section titled “not 연산자”단항 연산자로 논리값을 반전하여 False는 True로 True는 False로 반환
불리언식의 논리 연산 결과가 이미 결정되면, 전체 연산 결과를 도출하기 전 나머지 피연산자를 평가하지 않는 기법
대상 연산자: and, or
- A and B : A가 False이면, B의 평가를 생략
- A or B : A가 True면 B의 평가를 생략
이분 선택 구조의 구문 형식과 제어의 흐름
Section titled “이분 선택 구조의 구문 형식과 제어의 흐름”if 불리언식 : 명령문 집합1 else : 명령문 집합2