Home [파이썬 프로그래밍 기초] 5강 - 순차 구조
Post
Cancel

[파이썬 프로그래밍 기초] 5강 - 순차 구조

💡해당 게시글은 방송통신대학교 정재화 교수님의 '파이썬 프로그래밍 기초' 강의를 개인 공부 목적으로 메모하였습니다.



학습 목표




  • 제어 구조의 종류를 나열할 수 있음
  • 순차 구조의 특징을 설명할 수 있음
  • 프로그래밍 에러의 종류를 설명할 수 있음



주요 용어


  • 제어 구조
    • 프로그램의 실행 흐름을 결정하는 구조
  • 순차 구조
    • 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조
  • 프로그래밍 에러
    • 설계 미숙, 결함 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 문제 상황
  • 데이터 타입 변환
    • 한 데이터의 타입을 다른 데이터 타입으로 전환하는 과정



강의록


제어 구조의 이해

제품 생산 공정

image.png

구조적 프로그래밍 패러다임

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

순차 구조

image.png

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

선택 구조

image.png

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

반복 구조

image.png

  • 특정 영역의 명령문을 여러 번 재실행하는 구조
    • 반복 횟수를 조건에 따라 결정
    • ex) (조건 만족?) 설계 → … → 배송

순차 구조

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

삼각형 출력 하기

  • 다음과 같이 삼각형 모양으로 *을 출력하는 프로그램을 작성하시오.

    image.png

    1
    2
    3
    4
    
      print("   *")
      print("  ***")
      print(" *****")
      print("*******")
    

원뿔 계산 프로그램 개선

  • 사용자로부터 반지름과 높이를 입력 받고 계산

    image.png

사용자 입력

  • 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)
      • 의미적으로 잘못 해석되는 명령문 작성 시 발생

데이터 타입 변환

  • 데이터 타입을 다른 타입으로 전환해야 함
    • 문자열 타입으로 변환
      • 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)
    
  • 여러 개의 데이터를 단일 함수로 출력 가능
    • 콤마(,)로 파라미터를 구분하여 입력
  • 데이터 사이에 공백 (기본 값)이 자동으로 추가
  • 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. 다음은 어떤 제어 구조에 대한 설명인가?

    1
    
     특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 조건에 따라 결정하는 구조
    

    a. 선택 구조

  2. number 변수에 저장되어 있는 정수를 사용하여 “상자에사과가n개들어있습니다.”라는 메시지를 출력하려고 한다. 올바른 명령문은? (단, n은 number 변수에 저장된 정수를 의미한다.)

    a. print("상자에", "사과가", number, "개", 들어있습니다.", sep="")

  3. ‘논리적으로 실행 불가능한 명령문 작성 시 발생’ 오류를 무엇이라고 하는가?

    a. 실행 오류



학습 정리


  • 파이썬은 구조적 프로그래밍 패러다임을 지원하며 goto 문을 사용하지 않고 프로그램을 구성할 수 있는 순차, 선택, 반복 구조를 제공함
  • 순차 구조는 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조
  • 선택 구조는 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 조건에 따라 결정하는 구조
  • 반복 구조는 특정 영역의 명령문을 조건에 따라 여러 번 재실행하는 구조
  • input 함수는 사용자로부터 데이터를 입력 받아, 문자 데이터 타입으로 반환
  • 프로그래밍 에러는 설계 미숙, 결함 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 현상이며 구문 오류, 실행 오류, 의미 오류로 구분 됨
  • 데이터 타입을 다른 데이터 타입으로 전환하기 위해 str, int, float 함수를 사용함
  • print 함수는 여러 개의 데이터를 단일 print 함수로 출력 가능하며, 콤마(,)로 파라미터를 구분하여 입력함

[데이터베이스 시스템] 4강 - SQL

[파이썬 프로그래밍 기초] 6강 - 선택 구조