포인터(Pointer)
- 변수의 주솟값을 저장하는 공간이다.
-
int a = 10; int*b = &a; //*b는 데이터가 들어갈 공간 //&a는 주솟값
- 데이터 타입 뒤에 *를 붙이면 주소를 저장하는 포인터 변수라는 의미이고, 일반 변수명에 &를 붙이면 해당 변수명의 주소값이다.
- 주소에 해당하는 값을 가리킬 때에는 *를 사용한다.
-
int a = 10; int* b = &a; printf("%d %d", a, *b); //b가 가리키는(*) 값은 a이므로 *b == a이다 //&a는 주솟값
- 포인터 선언시 *의 위치는 관계 없음(int*a, int *a, int * a)
자바 자료형
- HashSet: 중복된 원소를 허용하지 않는 집합(Set)의 성질을 가진 클래스; 순서가 중요하지 않음
- ArrayList: 크기가 가변적으로 변하는 선형리스트의 성질을 가진 클래스; 순서가 중요함, 인덱스를 통해 접근 가능
- LinkedList: 데이터를 저장하는 노드가 이전 노드와 다음 노드의 상태를 알고 있는 링크드 리스트 자료구조를 구현한 클래스
- HashMap: 키와 값으로 구성된 객체를 저장하는 구조로 되어 있는 자료구조를 구현한 클래스
파이썬 자료형
- 세트형: 중복된 원소를 허용하지 않는 집합의 성질을 가지고 있는 자료구조
- 리스트형: 크기가 가변적으로 변하는 선형리스트의 성질을 가지고 있는 자료구조
- 튜플형: 초기에 선언된 값에서 값을 생성, 삭제, 수정이 불가능한 형태의 자료구조
- 딕셔너리형: 키와 값으로 구성된 객체를 저장하는 구조로 되어 있는 자료구조
식별자: 변수, 상수, 함수 등 서로 구분하기 위해 사용되는 이름이다. 프로그램의 구성요소를 구별하기 위해 사용한다.
식별자 표기법
- 카멜 표기법(Camel Case): 식별자 표기 시에 여러 단어가 이어지면 첫 단어 시작만 소문자로 표시하고 각 단어의 첫 글자는 대문자로 지정하는 표기법 (예: inputFormat)
- 파스칼 표기법(Pascal Case): 식별자 표기 시에 여러 단어가 이어지면 각 단어의 첫 글자는 대문자로 지정하는 표기법(예: Input Format)
- 스네이크 표기법(Snake Case): 식별자 표기시에 여러 단어가 이어지면 단어 사이에 언더바를 넣는 표기법(예: input_format)
- 헝가리안 표기법(Hungarian Case): 식별자 표기 시 두어에 자료형을 붙이는 표기법; int형일 경우 n, char형일 경우 c, 문자열일 경우 sz를 붙임(예: nScore -> 정수형)
클래스: 객체지향 프로그래밍(OOP; Object-Oriented Programming)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 틀이다.
접근 제어자(Access Modifier)
- Public: 외부의 모든 클래스에서 접근이 가능한 접근 제어자
- Protected: 같은 패키지 내부에 있는 클래스, 하위 클래스에서 접근이 가능한 접근 제어자
- Default: 접근제어자를 명시하지 않은 경우로 같은 패키지 내부에 있는 클래스에서 접근이 가능한 접근 제어자; 자바에만 존재함.
- Private: 같은 클래스 내에서만 접근이 가능한 접근 제어자
오버로딩(Overloading)
- 오버로딩은 동일 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의할 수있는 기능이다.
- 파이썬은 오버로딩 기능을 지원하지 않는다
- 오버로딩 특징
- 메서드 이름은 같아야 함
- 매개변수 개수가 달라야 함
- 매개변수 개수가 같다면 데이터 타입이 달라야 함
- 반환형을 같거나 달라도 된다.
- 오버로딩 특징
오버라이딩(Overriding)
- 오버라이딩은 하위 클래스에서 상위 클래스 메서드를 재정의할 수 있는 기능이다.
- C++에서는 virtual 키워드가 있어야 오버라이딩 가능(부모 클래스나 자식 클래스의 메서드 둘 중 하나라도 virtual키워드가 있다면 오버라이딩 되지만 둘 다 없다면 오버라이딩 되지 않음!)
- 오버라이딩 특징
- 오버라이드하고자 하는 메서드가 상위 클래스에 존재해야 한다.
- 메서드 이름은 같아야 함
- 메서드 매개변수, 개수, 데이터 타입이 같아야 함.
- 메서드 반환형이 같아야 한다.
- 오버라이딩 특징
개발 편의성에 따른 언어 분류
- 저급언어: 기계가 이해할 수 있도록 만들어진 언어
- 예) 기계어, 어셈블리어
- 고급언어: 개발자가 소스 코드를 작성할 때 쉽게 이해할 수 있도록 작성된 언어
- 예: C, C++, JAVA, PYTHON
실행하는 방식에 따른 언어 분류
- 명령형 언어(절차형 언어): 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 프로그래밍 방식
- 예: FORTRAN, COBOL, PASCAL, C
- 객체 지향 언어: 객체 간의 메시지 통신을 이용하여 프로그래밍하는 방식
- 예: JAVA, C++
- 함수형 언어: 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식
- 예: LISP
- 논리형 언어: 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 개념에 기반한 프로그래밍 방식
- 예: 프롤로그
구현 기법에 따른 분류
- 컴파일 방식의 언어: 고급 언어를 기계어로 번역하는 방식의 언어; 컴파일러에 의해 실행에 필요한 정보가 미리 계산되어 실행 속도가 높음
- 예: FORTRAM, PASCAL, C, C++
- 인터프리터 방식의 언어: 고급 언어 명령문을 하나씩 번역하고 실행하는 방식의 언어; 프로그램 실행과 동시에 동작
- 예: BASIC, 프롤로그, LISP
- 혼합형 방식의언어: 고급 언어를 컴파일하여 중간 언어로 변환 후, 인터프리터에 의해 번역을 실행하는 방식의 언어
- 예: JAVA
절차적 프로그래밍 언어 종류
종류 | 설명 |
알골(ALGOL) | 알고리즘의 연구 개발에 이용하기 위한 목적으로 생성 절차형 언어로는 최초로 재귀호출이 가능 이후 언어의 발전에 큰 영향을 미침 |
C언어 | 유닉스 운영 체제에서 사용하기 위해 개발한 프로그래밍 언어 모든 컴퓨터 시스템에서 사용할 수 있도록 설계된 프로그래밍 언어 |
베이직(BASIC) | 교육용으로 개발되어 언어의 문법이 쉬움 다양한 종류의 베이직이 존재 서로 다른 종류 사이의 소스코드는 호환되지 않음 |
포트란(FORTRAN) | 과학계산에서 필수적인 벡터, 행렬 계산 기능 등이 내장된 과학 기술 전문 언어 산술기호, 삼각함수, 지수함수, 대수 함수 등과 같은 수학 함수들 사용 가능 |
객체지향 프로그래밍 언어 종류
종류 | 설명 |
C++ | C++은 C문법에 객체지향 프로그래밍 개념과 일반화 프로그래밍을 위한 템플릿 기능이 추가 C++개발자는 원하는 많은 작업을 성늘 하락이 없는 형태로 개발이 가능 직접 신경써야 하는 것들이 많은 언어이기 때문에 개발이 어려움 |
C# | 마이크로소프트에서 개발한 객체지향 프로그래밍 언어 C++과 자바의 문법과 비슷한 문법을 가지고 있음 |
자바(JAVA) | 썬 마이크로 시스템즈가 개발한 객체지향적 프로그래밍 언어 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드라는 특수한 바이너리 형태로 변환 |
델파이(Delphi) | 기본적인 문법은 파스칼 문법에 여러 기능이 추가되어 존재 델파이는 윈도우즈(Windows)아래에서 모든 부분을 프로그래밍 할 수 있는 언어 높은 생산성과 간결한 코드가 대표적인 장점이고, C++와 비슷한 수준의 저수준 시스템 프로그래밍도 가능 |
스크립트 언어 종류
종류 | 설명 |
PHP | 동적 웹 페이지를 만들기 위해 설계됨 PHP로 작성된 코드를 HTML에 입력시 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성 인터페이스 방식의 자체 인터프리터를 제공 |
펄(Perl) | 인터프리터 방식의 프로그래밍 언어 실용성을 모토로 하고 있어 C, 쉘 스크립트 등 다른 프로그래밍 언어에서 뛰어난 기능을 많이 도입 불특정한 데이터 길이의 제약 없이 강력한 문자열 처리 기능을 제공 |
파이썬(Python) | 다양한 플랫폼에서 쓸 수 있고, 라이브러리가 풍부 유니코드 문자열을 지원하여 다양한 언어의 문자 처리 들여쓰기를 사용하는 블록을 구분하는 문법 채용 다른 언어로 쓰인 모듈들을 연결하는 언어 |
자바스크립트(Javascript) | 객체 기반의 스크립트 프로그래밍 언어 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능이 존재 자바스크립트는 브라우저마다 지원되는 버전이 상이 |
선언형 언어 종류
구분 | 종류 | 설명 |
함수형 언어 | 하스켈(Haskell) | 패턴 맞춤, 커링, 조건제시법, 가드, 연산자 정의 등의 기능이 존재 재귀함수나 대수적 자료형도 지원 |
리스프(LISP) | 수학 표기법을 나타내기 위한 목적으로 생성 | |
논리형 언어 | 프롤로그(Prolog) | 논리식을 기반으로 객체 간의 관계에 관한 문제를 해결하기 위해 사용 인공지능이나 계산 언어학 분야, 자연어 처리 분야에서 사용 |
특수 분야 언어 | SQL | 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택 |
객체지향 프로그래밍 구성요소 (객/클/메)
- 객체(Object): 개체, 속성, 메서드로 구성된 클래스의 인스턴스를 의미
- 클래스(Class): 객체지향 프로그래밍에서 객체를 표현하는 추상 데이터 타입으로 객체를 생성하는 틀
- 메시지(Message): 객체 간의 통신
객체(Object)의 구성요소 (개/속/메)
- 개체(Entity): 현실 세계에 보이는 본질을 의미
- 속성(Attribute): 자료 저장소 역할을 하며, 절차 지향 프로그래밍의 변수와 대응
- 메서드(Method): 호출 단위를 의미하며, 절차 지향 프로그래밍의 함수와 대응
라이브러리(Library): 라이브러리는 필요할 때 찾아서 쓸 수 있도록 모듈화되어 제공되는 프로그램이다; 효율적인 프로그램 개발을 위해 필요한 프로그램을 모아 놓은 집합체로서, 프로그래밍 언어에 따라 일반적으로 도움말, 설치파일, 샘플 코드 등을 제공한다.
라이브러리의 구성 (도/설/샘)
- 도움말: 라이브러리를 사용하는데 이해하기 쉽도록 설명해 놓은 문서
- 설치 파일: 라이브러리를 적용하기 위해 제공되는 파일
- 샘플 코드: 개발자가 라이브러리를 이해하고 손쉽게 적용하기 위해 제공되는 소스코드
라이브러리 종류
종류 | 설명 |
표준 라이브러리 | 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리를 의미 각 프로그래밍 언어의 표준 라이브러리는 여러 종류의 모듈과 패키지를 가지며, 표준 라이브러리를 이용하면 별도의 파일 설치 없이 날짜와 시간 등의 기능을 이용할 수 있음 |
외부 라이브러리 | 표준 라이브러리와 달리 별도의 파일을 설치 외부 라이브러리는 누구나 개발하여 설치할 수 있으며 인터넷 등을 이용하여 공유할 수도 있음 |
라이브러리는 모듈과 패키지를 총칭한다. 모듈이 개별 파일이라면 패키지는 파일들을 모아놓은 폴더라고 볼 수 있음.
구성 | 설명 | 예시 |
모듈(Module) | 전역변수, 함수 등을 모아둔 파일 | import 모듈명 |
패키지(Package) | 모듈을 디렉터리 형식으로 구조화한 라이브러리 | import 패키지명.모듈명 |
'공부 > 정보처리기사' 카테고리의 다른 글
[11-1] 절차형 SQL (0) | 2021.10.09 |
---|---|
[11] SQL응용 -데이터베이스의 기본 (DDL, DML, DCL) (0) | 2021.10.08 |
[9] 인터페이스 구현 (0) | 2021.10.04 |
[8] 연계 데이터 구성, 연계 메커니즘, EAI / ESB (0) | 2021.10.03 |
[7] 물리 데이터 저장소 설계, 데이터베이스, 데이터 마이닝 (0) | 2021.10.01 |
댓글