■ 비트 (Bit) : 컴퓨터를 이해하기 위한 기본적인 용어로 Binary Digit의 약자이다.
■ 1Byte (바이트- 8bit) -> 킬로바이스 (KB) -> 메가바이트 (MB) -> 기가바이트(GB) -> 테라바이트(TB) -> 페타바이스(PB) -> 엑사베이트(EB)
■ 서식 문자열
%d (정수형) / %u (부호없는 정수형10진수) / %c (문자) / %s (문자열) / %f (실수) / %e (지수) / %ld (long형 10진수) / %lo (long 형 8진수) / %lx (long형 16진수) / %p (주소를 16진수로 입출력하기위해 지정)
■ 제어문자
\n (new line - 한줄 넘기기)
\b (backspace -커서를 왼쪽으로 한 칸 이동함)
\t (tab - 일정간격을 띄움)
\r (carriage return - 커서를 현재 줄의 처음으로 이동)
\0 (null -널문자 출력)
■ 컴퓨터 처리 프로세스 [ 인 해 실 기 ]
인출 -> 해석 -> 실행 -> 기록
■ 자료구조
컴퓨터에 데이터를 삽입,삭제, 수정하게 해주는 논리적인 공간구조를 의미
(단순[int,double,float 등] / 선형[규, 스택] / 비선형[트리 등] / 파일 구조[순차파일, 색인파일]로 분류)
■ 알고리즘
넓은 의미 : 자료구조와 함께 프로그램을 구성하는 요소
좁은 의미 : 어떤 문제의 해답을 찾는 규칙, 해법을 의미
■ 변수 : 특정 데이터를 저장하여 입/출력 연산에 활용하는 공간
■ 바인딩 : 데이터를 변수에 삽입하는 행위 또는 특정 변수의 데이터를 다른 변수로 이관하는 작업을 통칭
- 정적 바인딩 : 프로그램 실행 전 속성을 연결하는 방식
- 동적 바인딩 : 프로그램 실행시간에 속성을 연결하는 방식
■ 선언 : 변수에 이름과 데이터 타입의 속성을 부여하는 것
- 명시적 선언 : 직접 입력
- 묵시적 선언 : 디폴트 규칙에 이해 속성 부여
■ 데이터 타입 : 변수가 가질 수 있는 속성 값의 길이 및 성질
* 불린형 Java : boolean / C: bool
■ 연산자 우선순위 (높 -> 낮)
단항 연산자 (! / ++ / -- / sizeof) -> 이항 연산자 -> 삼항 연산자 -> 대입 연산자 (=/ +=/ *= ..) -> 순서 연산자
* 이항 연산자 (높 -> 낮) [ 산 시 관 비 논 ]
산술 연산자(* / + / -..) -> 시프트 연산자 (>> / << ) -> 관계 연산자 (== / != )-> 비트 연산자 (& / | / ^) -> 논리 연산자 (&& / || )
■ 연산자 종류
- 단항 연산자
- 산술 연산자(+,-,/,*,%)
- 논리 연산자(true, false, ||, &&)
- 삼항 연산자
- 대입 연산자
- 관계(비교)연산자(>,<,<=,>=,==,!= : 항상 true, false를 반환)
- 비트 연산자 ( & , | ,~, ^) : ^ 는 두값을 비교하여 서로 다르면 참, 같으면 거짓반환 != 이거랑 같다.
■ 명령문 : 조건문(If, Switch) / 반복문 (for, while, do-while)
→ 문제 풀이 따로 공부
■ 추상화 종류 [ 기 자 제 ]
- 기능 추상화 : 입력자료를 출력자료로 변환하는 과정을 추상화 하는 방법
- 자료 추상화 : 자료와 자료에 적용할 수 있는 오퍼레이션을 함께 정의하는 방법
- 제어 추상화 : 외부 이벤트에 대한 반응을 추상화하는 방법
■ 상속 -> 부모의 특성을 자식이 이어받아 재사용 또는 확장하는 특성을 의미
- 단일 상속(상위 수준의 그룹이 하나만 존재할 때) / 다중 상속이 있다.
■ 프로그래밍 년도별 언어
- 1960년 이전 : ASSEMBLY / FORTRAN / LISP
- 1960년대 : COBOL / PL/I / BASIC
- 1970년대 : PASCAL / C (1972년 개발, unix 운영체제에서 구현) / SMALLTALK / PROLOG
- 1980년대 : ADA / C++ / PYTHON / PROLOG?
- 1990년대 : RUBY / JAVA / JAVASCRIPT / C#
■ 프로그래밍 언어 유형 분류
- 개발 편의성에 따른 분류 : 저급언어 / 고급언어
- 실행하는 방식에 따른 분류 : 명령형 언어 / 함수형 언어 / 논리형 언어 / 객체 지향 언어
- 구현 기법에 따른 분류 : 컴파일 언어 / 인터프리터 언어 / 혼합형 방식
- 컴파일러(전체를 다 번역하고 돌림- FOTRAN, PASCAL, C, C++) 와 인터프리터 (한 줄 씩 번역 - BASIC, PROLOG, LISP, SNOBOL)
■ 객체 지향언어 구성요소 [ 객 클 메 ]
객체(데이터[속성] + 연산[메소드]) / 클래스 / 메시지
* 객체 - 개체, 속성, 메소드로 구성된 클래스의 인스턴스를 의미
■ 객체지향 특징 [ 캡 정 추 상 다 ]
캡슐화(Encapsulation) / 정보은닉(Information Hiding) / 추상화(Abstraction) / 상속성(Inheritance) / 다형성(Polymorphism)
* 캡슐화 (Encapsulation)
- 속성과 메서드를 하나로 묶어서 객체로 구성
- 유지보수 용이
- 재사용성이 높은 S/W 개발이 가능
- 객체 간 인터페이스를 이용, 종속성을 최소화
* 추상화 : 현실 사실을 공통 속성, 공통 기능으로 정의하는 방식의 모델링
* 상속성 : 부모 클래스 속성, 기능을 상속받아 재사용가능한 특성
* 다형성 : 추상화 클래스의 속성, 기능을 상속받아 재정의 하거나 동명 메소드 선언 기능 특성 (객체들은 동일한 메소드명을 사용하여 같은 의미의 응답을 함)
■객체지향 5원칙 [ S O L I D ]
- SRP (Single Responsibility Principle) : 단일 책임의 원칙
- Open-Closed Principle (OCP) : 개방-폐쇄의 원칙 ▷ 변화는 확장 가능, 변경은 어려운 구조
- Liskov Substitution Principle : 리스코프 치환 원칙 ▷ Is-a 관계, 자식 타입은 부모 타입이 사용되는 곳에 대체 가능
- Interface Segregation Principle : 인터페이스 분리원칙 ▷ 자주 사용하는 메소드는 분리 구현
- Dependency Inversion Principle (DIP) : 의존 역전 원칙 ▷ 참조대상은 추상 클래스여야함
■ 오버로딩과 오버라이딩
- 오버로딩 (Overloading) : 같은 이름의 함수인데, 파라미터가 다른 것
- 오버라이딩 (Overriding) : 상속받은 함수를 재사용하는 것으로 함수명, 인자값, 반환값이 다 같아야한다.
■ 절차지향 / 객체 지향
- 절차지향 프로그래밍 : 순차적 코드로 수행 / 자료구조와 명령 중심
ex) C (데니스리치가 개발/컴파일러 방식의 언어/이식성이 좋다.), ALGOL , COBOL , FORTRAN
- 객체지향 프로그래밍 : 객체와 객체 간의 통신을 통한 프로그램 구현, 객체와 속성, 메소드로 구성됨
ex) Java , C++ , Smalltalk
■ JAVA 접근제한자
- private : 해당 클래스에서만 접근이 가능
- public : 외부에서 사용 가능
- protected : 동일 패키지 내에서만 접근가능
■ 스크립트 언어
정의 : 하나의 응용 소프트웨어를 제어하기 위한 용도로 쓰이는 언어. 소스코드를 컴파일 하지 않고 실행할 수 있는 프로그래밍 언어이다
+ HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용
- 자바스크립트 : 넷스케이프의 브랜던 아이크가 개발 / 웹 페이지의 동적을 제어, 변수 선언이 필요없다. / 클라이언트용 스크립트 언어
- ASP (Active Server Page) : 서버측 동적 언어 / Windows 계열에서만 수행 가능 / 서버용 스크립트 언어
- JSP (Java Server Page) : 자바로 만들어진 서버용 스크립트 언어 / 다양한 운영체제 사용가능
- PHP (Professional Hypertext Preprocessor) : 서버용 스크립트 언어 / C, Java등과 문법이 유사
- Python 파이썬 : 객체 지향 기능을 지원하는 대화형 인터프리터 언어 / 플랫폼에 독립적, 문법이 간단 / 서버용 스크립트 언어
■ 선언형 언어 -> HTML / LISP /PROLOG / XML / Haskell
함수형 언어 - LISP(인공지능 분야언어, 자료구조가 연결 리스트 구조) , Haskell (부작용없음/ 코드 간결/ 에러발생 가능성 낮음)
논리형 언어 - PROLOG (논리학기초,/ 인공지능 분야에서 사용)
■ 라이브러리
필요할 때 찾아서 사용할 수 있도록 모듈화되어 제공되는 프로그램을 말한다.
- 구성 : 샘플코드, 도움말, 설치 파일
- 표준 라이브러리 : 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리를 의미
- 외부 라이브러리 : 표준 라이브러리와 달리 별도로 파일을 설치하여야 한다.
- 모듈과 패키지의 총칭이다.
--> 모듈 (Module) : 한개의 파일에서 기능을 제공 - 사용) import (모듈명)
--> 패키지 (Package) : 여러개의 모듈을 한 개의 폴더에 묶어서 기능 제공 - 사용) import (패키지).(모듈명)
■ 응집도 (Cohension) [ 기 순 통 절 시 논 우 ] 높 → 낮 *높아야 좋다.
응집도는 모듈 내부의 구성 요소 간 관계의 밀접정도로 평가
- 기능적 응집도 (Functional Cohesion) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행
- 순차적 응집도 (Sequential Cohesion) : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용하는 경우
- 통신적 응집도 (Communication Cohesion) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
- 절차적 응집도 (Procedural Cohesion) : 모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성요소들이 그 기능을 순차적으로 수행하는 경우
- 시간적 응집도 (Temporal Cohesion) : 연관된 기능이라기보다는 특정 시간에 처리되어야하는 활동들을 한 모듈에서 처리하는 경우
- 논리적 응집도 (Logical Cohesion) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
- 우연적 응집도 (Coincidential Cohesion) : 모듈 내부의 각 구성 요소들이 연관이 없는 경우
■ 결합도 (Coupling) [ 자 스 제 외 공 내 ] 낮→높 *낮아야 좋다.
결합도는 모듈과 모듈 사이의 관련성이 어느 정도인가를 나타낸다.
관련성이 적을 수록 모듈의 독립성이 높아 모듈 간 영향이 작아진다.
- 자료 결합도 (Data Coupling) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 상호작용이 일어남
- 스탬프 결합도 (Stamp Coupling) :모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우
- 제어 결합도(Control Coupling) : 단순 처리할 대상인 값만 전달하는 것이 아니라 어떻게 처리해야한다는 제어요소가 전달되는 경우
- 외부 결합도 (External Coupling) : 모듈에서 외부로 선언한 데이터를 다른 모듈에서 참조하는 경우로 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 때 주로 발생
- 공통 결합도 (Common Coupling) : 파라미터가 아닌 모듈 밖에 선언 되어 있는 전역변수를 참조하고 전역변수를 갱신하는 식으로 상호 작용하는 경우
- 내용 결합도 (Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 또 다른 모듈에서 사용하는 경우
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사_실기] Chapter 12. 제품 소프트웨어 (0) | 2020.10.12 |
---|---|
[정보처리기사_실기] Chapter 11. 응용 소프트웨어 기초 기술 활용 (0) | 2020.10.12 |
[정보처리기사_실기] Chapter 9. 소프트웨어 개발 보안 구축 (0) | 2020.10.11 |
[정보처리기사_실기] Chapter 8. SQL 응용 (0) | 2020.10.11 |
[정보처리기사_실기] Chapter 7. 애플리케이션 테스트 관리 (0) | 2020.10.11 |