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. 라이브러리 종류
- 표준 라이브러리 : 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리 (날짜, 시간 등)
- 외부 라이브러리 : 표준 라이브러리와 달리 별도의 파일을 설치(인터넷을 통해 공유도 가능)
▼ 표준 라이브러리
- 입출력 : 핵심 입력과 출력 함수들을 정의 -> C언어 : <stdio.h>
- 문자열 : 문자열 처리 함수들을 정의 -> C언어 : <string.h>
- 시간 처리 : 데이터와 시간처리 함수들을 정의 -> C언어 : <time.h>
- 수학 : 일반적인 수학 함수 정의 -> 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. 프로토타입 구성
- 복제 : 객체를 복제
- 객체 생성 : 객체를 생성
- 마스터 객체 : 이 객체의 원형에는 모든 객체가 공통적으로 필요한 특징들을 정의
'정처기(필기) > 프로그래밍언어활용' 카테고리의 다른 글
프로세스 스케줄링 (0) | 2022.06.10 |
---|---|
운영체제, 메모리 관리 (0) | 2022.06.09 |
기본문법 (0) | 2022.06.08 |
서버 프로그램 구현 (0) | 2022.06.07 |
서버프로그램 구현 - 개발환경 구축, 공통 모듈 구현 (0) | 2022.06.07 |