본문으로 건너뛰기

절차적 프로그래밍 언어활용

개요

  • 절차적 프로그래밍 언어

    프로그램이 정해진 순서에 따라 기술되는 언어

  • 특징

    • 컴퓨터 처리구조와 유사함
    • 실행 속도가 빠름
    • 구조적 프로그래밍이 가능함
  • 종류

    • C
    • ALGOL
    • FORTRAN
    • COBOL

종류별 특징

C

  • 저급프로그래밍부터 고급 프로그래밍까지 언어 활용이 가능함
  • 컴파일러 방식
  • 이식성이 좋음(컴퓨터 기종에 관계없이 프로그래밍 작성 가능)
  • UNIX 일부가 C언어로 구현됨
  • 시스템 프로그래밍 언어에 널리 사용됨
  • 포인터를 제공함

n의 factorial 구하는 함수

#include <stdio.h>

void prime_factorization(int n); // 프로토타입

int main(void){
int n;
printf("n:");
scanf("%d", &n);

prime_factorization(n);
return 0;
}

void prime_factorization(int n) {
int i;

printf("%d = ", n);

// 2부터 n의 제곱근까지 반복 (효율성을 위한 최적화)
for (i = 2; i * i <= n; i++) {
while (n % i == 0) {
printf("%d ", i);
n /= i;
}
}

// n이 소수인 경우
if (n > 1) {
printf("%d", n);
}

printf("\n");
}
실행 결과
n:7
7 = 7

n:20
20 = 2 2 5

n:33
33 = 3 11

ALGOL(Algorithmic Language)

  1. 과학기술 계산용 언어
  2. PASCAL, C의 모태가 되는 언어
  3. ALGOL계 언어의 총칭

n x m의 2차원 배열 중 절대값이 가장 큰 요소를 찾아, 그 절대값을 val에, 첨자를 c와 r에 저장하는 함수

PROCEDURE Absmax(a) Size:(n, m) Result:(val) Subscripts:(i, k);
VALUE n, m; ARRAY a; INTEGER n, m, c, r; REAL val;
COMMENT The absolute greatest element of the matrix a, of size n by m
is transferred to val, and the subscrips of this element to c and r;

BEGIN
INTEGER p, q;
val: = 90; c := r := 1;
FOR p := 1 STEP 1 UNIT n DO
FOR q := 1 STEP 1 UNTIL m DO
IF abs (a[p, q]) > val THEN
BEGIN
val := abs(a[p, q]);
c := p; r := q
END
END Absmax
실행 결과
a = [
[10, -5, 3],
[-2, 8, -1],
[4, 7, -6]
]

val = 10
c = 1
r = 1
a = [
[0.5, -1.2, 2.3],
[-3.1, 4.7, -0.9],
[1.8, -2.5, 3.6]
]

val = 4.7
c = 2
r = 2
a = [
[-12, 5, 9],
[2, -7, 11],
[3, -4, -8]
]

val = 12
c = 1
r = 1

COBOL(Common Business-Oriented Language)

  • 사무처리용 언어
  • 4개의 DIVISION으로 구성됨
  • 사용이 쉬음
DIVISION내용
IDENTIFICATION
DIVISION
- 코드 개체 식별
- 클래스나 인페이스 정의
ENVIRONMENT
DIVISION
- CONFIGURATION SECTION과 INPUT-OUTPUT SECTION을 포함
- CONFIGURATION SECTION : 통화기호, 문자 집합과 같은 변수기능지정
- INPUT-OUTPUT SECTION : 파일 관련 정보 포함
DATA
DIVISION
- 여섯 개의 섹션으로 나뉘며 각기 다른 항목들을 선언
- 파일레코드, 정적변수, 매개변수와 반환값의 텍스트 기반 사용자 인터페이스 등
PROCEDURE
DIVISION
- 레이블과 단순한 함수로 사용

FORTRAN (Formula Translation)

  1. 과학기술 계산용 언어
  2. 수학과 공학 공식이나 수식의 형태로 프로그래밍이 가능함
  3. 산술연산, 삼각함수 및 지수함수 사용 가능
  4. 벡터, 행렬계산기능이 내장되어 있음
  5. 기후 및 기상예측, 자원탐사, 양자 및 동역학 계산 등 모든 산업분야의 과학계산 문제 해결
program test
real r1, r2, val
r1 = 1.
r2 = 2.
val = sum_all(r1, r2)
write(*,*) val
stop
end

real function sum_all(x,y)
sum_all=x+y
return
end
실행 결과
r1 = 3.14
r2 = 2.71

결과: 5.85


C를 활용한 절차적 프로그램

자료형과 연산자

  • 자료형

    • 정수형: int(4byte), short(2byte), long(4byte)

      int와 long의 차이점이 궁금했다
      #include <stdio.h>
      #include <limits.h>

      int main(void) {
      int a = INT_MAX; // int형의 최댓값
      long b = LONG_MAX; // long형의 최댓값

      printf("int의 최댓값: %d\n", a);
      printf("long의 최댓값: %ld\n", b);

      return 0;
      }

      int의 최댓값: 2147483647
      long의 최댓값: 9223372036854775807
    • 부동소수점형: float(4byte), double(8byte)

    • 문자형: char(1byte)

  • 연산자


사용자 정의 자료형

배열

동일한 자료를 연속하여 저장하는 구조

포인터

변수의 주소를 저장할 수 있는 자료구조

#include <stdio.h>

int main(void){
int i = 10;
int *ptr;
ptr = &i;
}

구조체

서로 다른 자료를 저장할 수 있는 자료구조

#include <stdio.h>

struct st {
int id;
char name[50];
}

int main(void){
struct st test[3]
int i;
}

조건문

조건에 따라 실행을 선택할 수 있음

if (pw == PW){
printf("%d번 시도: 성공\n", count)
return 1;
}

반복문

조건이 참일 동안 반복하여 실행할 수 있음

int fac(int n){
int i, result = 1;
for (i = 1; i <= n; i++){
result *= i;
}
return result;
}