공부해봅시당

[프로그래밍 패러다임] 절차적 프로그래밍 본문

STUDY/CS

[프로그래밍 패러다임] 절차적 프로그래밍

tngus 2023. 6. 10. 07:47

절차적 프로그래밍이란?

명령형 프로그래밍 패러다임 중 하나인 절차적 프로그래밍(Procedural Programming)은 프로시저(함수)를 활용한 프로그래밍 개념

명령형 프로그래밍

'프로그램의 상태'와 '상태를 변경시키는 구문'의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종
컴퓨터가 수행할 명령들을 순서대로 써 놓은 것

How to solve it > 어떻게 그것을 해결할 것인가에 관심이 있음

거의 대부분의 컴퓨터 하드웨어는 명령형으로 구현됨
거의 모든 컴퓨터 하드웨어들은 기계어를 실행하도록 설계되어 있는데, 보통 명령형으로 써져 있음

포트란, ALGOL, C언어 등이 명령어 프로그래밍 언어의 일종임

(출처: https://code-lab1.tistory.com/244)

 

절차적 프로그래밍 패러다임을 '순차적으로 처리하는 프로그래밍 방식이다'라고 해석하는 것은 명백한 오류임

 

순차적 vs 절차적 프로그래밍

순차적 프로그래밍

  • '순차적'으로 처리되는 방식을 뜻하는 순차적 프로그래밍 또한 존재함
  • 프로그래밍 패러다임에서 가장 처음 등장한 패러다임
  • 말 그대로, 순차적으로 위에서 아래로 흘러가는 프로그래밍 구조

절차적 프로그래밍

  • 절차적 프로그래밍에서의 절차는 프로시저를 이용한다는 의미
  • 프로시저란 특정 행동 혹은 목표를 수행하기 위한 일련의 작업이자 순서
  • 최종 기능(목표)를 달성하기 위해, 작은 규모의 함수(function)를 활용

 

따라서, 절차지향이 아닌, 절차적(혹은 프로시저) 프로그래밍이 정확한 명칭

 

 

 

절차적 프로그래밍의 특징

프로시저(함수)를 호출함으로서, 추상화와 코드의 재사용성을 목표로 하는 패러다임

절차적 프로그래밍의 2가지 패러다임 특징 및 프로세스

  • 특정 기능을 담당하는 프로시저(함수) 생성
  • 이를 활용해 순차적으로 일련의 작업 진행

 

주요 특징

큰 기능(목표)을 처리하기 위해, 작은 단위의 기능(프로시저, 함수)을 구조화함

  • 반복하여 활용될 가능성이 있는 기능(프로시저, 함수)을 묶어 구조화
  • 이는, 특정 기능을 재활용할 수 있다는 장점이 있음

프로그램의 흐름을 쉽게 이해할 수 있으므로, 코드의 가독성이 높아짐

  • 담당하는 기능만 호출하여 결과를 확인할 수 있으므로, 매우 직관적
  • 다만, 기능을 수행하기 위해선 해당 프로시저를 직접 호출해야 함

컴퓨터의 처리구조와 유사해 실행 속도가 빠름

 

 

한계점

기능(프로시저)을 만드는 '구조화' 과정에서 시간이 다소 소요됨

  • 기능을 구현하기 위한 함수를 만들고, 인자를 전달하는 등 과정이 복잡함
  • 정해진 순서대로 입력을 해야하므로 순서를 바꾸면 결과값을 보장할 수 없음
  • 코드가 길어지면 가독성이 무척 떨어지며 이해가기 힘듦
  • 대형 프로젝트에 부적합함

순차적으로 입력하는 것은 필수이므로, 의도하지 않은 오류가 생길 가능성이 높음

  • 절차적 프로그래밍 또한 순차적인 단계에 따라 실행되는 구조
  • 순서가 바뀌거나, 코드 상 오류가 있을 경우 큰 문제가 발생될 수 있음 > 유지보수가 어려움

 

절차적 프로그래밍의 종류

C

  • 고급 프로그래밍 언어이면서 저급 프로그래밍 언어의 특징을 모두 갖춤
  • 컴파일러 방식의 언어
  • 이식성이 좋아 컴퓨터 기능에 관계업이 프로그램 작성 가능

ALGOL

  • 수치 계산이나 논리 연산을 위한 과학 기술 계산용 언어
  • PASCAL과 C언어의 초제가 됨

COBOL

  • 사무 처리용 언어
  • 영어 문장 형식으로 구성되어 이해와 사용이 쉬움

FORTRAN

  • 과학 기술 계산용 언어
  • 수학과 공학 분야의 공식이나 수식과 같은 형태로 프로그래밍 가능

 

 

예) 자판기에서 음료수를 구입하려는 사람

자판기에서 음료를 구입하는 과정에 대한 예제

모든 기능(프로시저)는 Global Data(데이터)를 중심으로 구현됨

순서, 기능 측면에 오류가 생길 경우, 올바르지 않은 결과가 도출됨

 

순서, 기능에 따른 올바른 프로시저(Procedural)의 순차적 과정과 오류

 

절차적 프로그래밍을 보완한 새로운 패러다임이 바로 객체지향 프로그래밍입니다


출처

https://iosdevlime.tistory.com/62

 

[CS/Basic] 절차적 프로그래밍은 '절차지향'이 아니다!

앞선 포스팅에서 '객체'에 대한 개념에 대해 짚고 넘어갔으니.. 이후 명령형 프로그래밍 패러다임 범주에 포함된 절차적 프로그래밍(Procedural Programming, PP) 객체지향 프로그래밍(Object-Oriented Program

iosdevlime.tistory.com

https://code-lab1.tistory.com/244

 

[프로그래밍 언어론] 명령형(Imperative)프로그래밍과 선언형(Declarative)프로그래밍

명령형(Imperative) 프로그래밍 명령형 프로그래밍이란 프로그램의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다. 쉽게 설명하자면, 컴퓨터가 수

code-lab1.tistory.com

https://st-lab.tistory.com/151

 

객체지향(OOP)과 절차적 프로그래밍(PP)

오늘은 프로그래밍에서 중요한 개념 중 하나인 객체지향 프로그래밍(Object Oriented Programming)과 절차적 프로그래밍(Procedure Programming)에 대해 알아보고자 합니다. 대개 객체지향 프로그래밍 언어를

st-lab.tistory.com

https://kevinkim95-dev.tistory.com/2

 

[프로그래밍 언어] 절차적 프로그래밍 vs 객체지향 프로그래밍

절차적 프로그래밍(Procedural Programming) 객체지향 프로그래밍에 대조되는 것으로 생각하여 절차지향 프로그래밍으로 알고 있는 사람이 많은데, "절차지향 프로그래밍 = 절차적 프로그래밍" 이며, "

kevinkim95-dev.tistory.com