언어특성 활용, 라이브러리

2022. 6. 8. 18:15정처기(필기)/프로그래밍언어활용

더보기

(1) 절차적 프로그래밍 언어

1. 절차적 프로그래밍 언어 개념

- 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍 언어(명령형 프로그래밍)

- 크게 복잡하지 않고 유지보수하기 쉽다. 

- 순차적으로 진행되기 때문에 프로그램의 흐름을 파악하기 쉽다.

- 모듈화를 하거나 구조화를 할 수 있다.

 

 

2. 절차적 프로그래밍 언어 종류

종류 설명
알골 최초로 재귀 호출이 가능
C언어 유닉스 운영체제에서 개발한 프로그래밍 언어
포트란 벡터, 행렬 계산 기능 등이 내장되어 있는 과학 기술 전문 언어
산술 기호, 삼각함수 등을 사용

 

더보기

(2) 객체지향 프로그래밍 언어

1. 객체지향 프로그래밍 언어 개념

- 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위인 "객체" 중심의 프로그래밍 언어

 

2. 프로그래밍 언어 기능

  • 자료 추상화 : 불필요한 정보는 숨기고 중요한 정보만 표현
  • 상속 : 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능
  • 다중 상속 : 클래스가 2개 이상의 클래스로부터 상속받을 수 있게 하는 기능
  • 다형성 : 어떤 한 요소에 여러 개념을 넣어 놓는 기법
  • 동적 바인딩 : 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩
  • 접근제어자 : 지정된 클래스, 변수, 메소드를 외부에서 접근할 수 있도록 권한을 설정하는 기능

 

3. 객체지향 프로그래밍 언어 종류

종류 설명
C++ C문법에 객체지향 프로그래밍 개념과 일반화 프로그래밍을 위한 템플릿 기능이 추가
직접 신경써야 하는 것들이 많기 때문에 개발이 어려움
C# C#은 자바와 달리 불완전 코드와 같은 기술을 통하여 플랫폼 간 상호 운용성 확보
자바 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드라는 특수한 바이너리 형태로 변환
메모리 관리를 위해 가비지 컬렉터를 사용
델파이 기본적인 문법은 파스칼 문법에 여러 기능들이 추가되어 존재
높은 생산성과 간결한 코드가 대표적인 장점, C++와 비슷한 수준의 저수준 시스템 프로그래밍 도 가능

 

 

더보기

(3) 스크립트 언어

1. 스크립트 언어 개념

- 소스 코드를 컴파일 하지 않고도 실행할 수 있는 프로그래밍 언어

- 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다. 

 

 

2. 스크립트 언어 종류

  • PHP : 동적 웹 페이지를 만들기 위해 설계
  • 펄(Perl) : 인터프리터 방식의 프로그래밍 언어
  • 파이썬(Python) : 인터프리터 방식이자 객체 지향적이며, 배우기 쉽고 이식성이 좋은 것이 특징
  • 자바스크립트 : 객체 기반의 스크립트 프로그래밍 언어(프로토타입의 개념이 존재)
  • 배시 : sh와 대부분 호환되며 리눅스에 기본 탑재됨
  • 베이직 : 교육용으로 개발된 언어

 

더보기

(4) 선언형 언어

1. 선언형 언어 개념

- 선언형 프로그래밍을 사용하여 해법을 정의하기 보다는 문제를 설명하는 언어

- 선언형 언어는 "무엇"을 할 것인지에 중점을 두고 있음

 

2. 선언형 언어 유형

  • 함수형 언어 : 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임 
  • 논리형 언어 : 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 언어

 

3. 선언형 언어 기능

[1] 함수형 언어

순수 함수 : 어느 순간에 호출해도 동일한 값을 반환(부작용이 없는 함수), 스레드에 안전하고, 병렬적인 계산 가능

익명 함수 : 이름이 없는 함수, 람다식이라고도 불림

고계 함수 : 함수를 또 하나의 값으로 간주하여 함수의 인자 혹은 반환값으로 사용할 수 있는 함수

 

[2] 논리형 언어

사실 : 객체와 객체 간의 관계에 대한 논리적 사실을 포함하고 있는 문장

규칙 : 목표점에 이르는 원인 규명 과정은 지식베이스로부터 새로운 논리를 찾는 과정 

질문 : 추론 규칙이 참인지 거짓인지 확인하기 위한 문장 

 

 

4. 선언형 언어 종류

  • 함수형 언어
    • 하스켈 : 패턴 맞춤, 커링, 조건제시법, 가드, 연산자 정의 등의 기능이 존재(재귀 함수나 대수적 자료형도 지원)
    • 리스프(LISP) : 수학 표기법을 나타내기 위한 목적으로 생성
  • 논리형 언어 
    • 프롤로그(Prolog) : 논리식을 기반으로 객체 간의 관계에 관한 문제를 해결하기 위해 사용
  • 특수 분야 언어
    • SQL : 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어

 

더보기

(5) 라이브러리

1. 라이브러리 개념

- 라이브러리는 효율적인 프로그램 개발을 위해 필요한 프로그램을 모아 놓은 집합체이다. 

- 라이브러리는 모듈과 패키지를 총칭하며, 모듈이 개별 파일이라면 패키지는 파일들을 모아 놓은 폴더

 

 

2. 라이브러리 구성

  • 도움말 : 라이브러리를 사용할 수 있도록 하는 도움말
  • 설치 파일 : 적용하기 위해 제공되는 설치 파일
  • 샘플 코드 : 손쉽게 적용되기 위해 제공되는 샘플 소스 코드

 

3. 라이브러리 종류

- 표준 라이브러리 : 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리 (날짜, 시간 등)

- 외부 라이브러리 : 표준 라이브러리와 달리 별도의 파일을 설치(인터넷을 통해 공유도 가능)

 

▼ 표준 라이브러리

  1. 입출력 : 핵심 입력과 출력 함수들을 정의 -> C언어 : <stdio.h>
  2. 문자열 : 문자열 처리 함수들을 정의 -> C언어 : <string.h>
  3. 시간 처리 : 데이터와 시간처리 함수들을 정의 -> C언어 : <time.h>
  4. 수학 : 일반적인 수학 함수 정의 -> C언어 : <math.h>

 

[1] 문자열 라이브러리 함수

- 문자열 함수를 사용하기 위해서는 string.h 헤더 파일을 include 하여 사용한다. 

 

함수 설명
strcat 문자열끼리 연결하는 함수(String Concatenate)
strcpy 문자열을 복사하는 함수(String copy)
strcpy(dest, scr); //src의 문자열을 dest 문자열에 복사
strcmp 문자열을 비교하는 함수(String Compare)
strcmp(s1, sw) ; //s1, s2가 대소를 비교
strlen 문자열 길이를 알려주는 함수I(String length)
strlen(s);

 

[2] 표준 라이브러리 함수

- stdlib.h 헤더 파일을 include하여 사용한다. 

 

  • atoi : 문자열을 정수형으로 변환하는 함수
  • atof : 문자열을 실수형으로 변환하는 함수
  • itoa : 정수형을 문자열로 변환하는 함수 

 

[3] 수학 라이브러리 함수

- math.h 헤더 파일을 include하여 사용한다.

 

  • ceil : 소수점 올림 함수
  • floor : 소수점 내림 함수

 

더보기

(6) 데이터 입출력

1. 데이터 입출력 개념

- 프로그램으로 데이터가 입력 및 프로그램으로부터 데이터가 출력되도록 하기 위한 기법

 

2. 데이터 입출력 구성

  • 표준 입력 : 프로그램으로 들어가는 데이터 스트림
  • 표준 출력 : 프로그램이 출력 데이터를 기록하는 스트림
  • 표준 오류 : 프로그램이 오류 메시지나 진단을 출력하기 위해 일반적으로 쓰이는 또 다른 출력 스트림

 

더보기

(7) 예외 처리

1. 예외 처리 개념

- 오류 발생 시 오류를 그대로 실행시키지 않고 오류에 대응하는 방법으로 처리하는 프로그래밍 기법

 

  • throw : 프로그램이 정상적으로 실행될 수 없는 상황일 때 예외를 던짐(강제로 예외를 발생)
  • try : 예외가 발생할만한 코드 블록을 지정
  • catch:  if-elese문처럼 try-catch문으로 한쌍으로 쓰임

 

더보기

(8) 프로토타입

1. 프로토타입 개념

- 속성과 메소드를 다른 클래스의 인스턴스 또는 빈 객체에 추가하는 작업을 덜 수 있는 프로그래밍 스타일

- 객체지향 프로그래밍과 달리 클래스를 명확히 정의하지 않아도 된다. 

 

2. 프로토타입 구성

  • 복제 : 객체를 복제
  • 객체 생성 : 객체를 생성
  • 마스터 객체 : 이 객체의 원형에는 모든 객체가 공통적으로 필요한 특징들을 정의