01. 프로그래밍 언어

 

프로그래밍 언어: 컴퓨터 시스템을 동작시키는 프로그램을 작성하기 위한 언어

 

추상화(Abstraction): 속성들의 일부분만을 가지고 주어진 작업이나 객체들을 필요한 정도로 묘사할 수 있는 방법을 지원하는 것.

 

추상화의 종류

1. 과정 추상화: 자세한 단계를 고려하지 않고, 상위 수준에서 수행 흐름만 먼저 설계한 것

2. 자료 추상화: 문자열, 수, 탐색 트리와 같은 계산의 주체가 되는 자료의 특성을 추상화한 것

3. 제어 추상화: 실행 순서의 수정을 위한 제어의 특성을 추상화한 것

 

언어의 변수명 표기법

1. 헝가리안 표기법(Hungarian Notation): 프로그래밍에서 변수나 함수의 이름 앞에 자료 표현(데이터 타입)을 명시하는 표기법

2. 카멜 표기법(Camel Case): 낙타의 등과 같은 모양을 빗댄 말로, 앞 단어를 제외한 첫 글자를 대문자로 표기하는 표기법

3. 파스칼 표기법(Pascal Case): 모든 단어의 앞 글자를 대문자로 시작하는 표기법

4. 스네이크 표기법(Snake Case): 모든 단어를 소문자로 표기하는 방법

 

구조적 프로그래밍: GOTO문을 가능한 사용하지 않고 프로그래밍하는 것

 

구조적 프로그래밍의 논리 구조

1. 순차 구조: 하나의 작업이 수행되고 순차적으로 다음 작업 진행

2. 선택 구조: 조건에 따라 하나의 작업을 선택해서 진행

3. 반복 구조: 조건에 따라 특정 작업 반복 처리

 

객체지향: 객체지향 기법에서 시스템 분석은 문제 영역에서 객체를 정의하고 정의된 객체들 사이의 상호 작용을 분석하는 것

 

객체지향의 기본 개념

1. 속성(Attribute): 객체가 가지고 있는 특성, 현재 상태(객체의 상태)를 의미

2. 메소드(Method): 객체가 어떻게 동작하는지를 규정하고 속성의 값을 변경시킴

3. 클래스(Class): 공통의 관계성, 동일한 의미를 가지는 객체들의 집합. 동일한 타입의 객체들의 메소드와 변수들을 정의하는 템플릿(Templete)

4. 객체(Object): 데이터와 그것을 사용하는 연산을 하나의 모듈로 구성한 것. 개별 자료구조와 프로세스들로 구성

5. 메시지(Message): 한 객체가 다른 객체의 모듈을 부르는 과정으로, 외부에서 하나의 객체에 보내지는 행위의 요구

6. 캡슐화(Encapsulation): 객체를 정의할 때 서로 관련성이 많은 데이터들과 이와 연관된 함수들과 같은 정보처리에 필요한 기능을 하나로 묶는 것. 사용자에게 세부 구현 사항을 감추고 필요한 사항들만 보이게 하는 방법

7. 정보 은닉(Information Hiding): 객체의 상세한 내용을 객체 외부에 철저히 숨기고 단순히 메시지만으로 객체와 상호 작용

8. 상속성(Inheritance, 다중 상속): 새로운 클래스를 정의할 때 처음부터 모든 것을 다 정의하지 않고 기존의 클래스들의 속성을 상속받아 추가로 필요한 속성만 추가하는 방법

9. 다형성(Polymorphism): 같은 메시지에 대해 각 클래스가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 의미. 어떤 객체의 속성이나 기능이 맥락에 따라 다른 역할을 수행할 수 있는 객체 지향의 특성. 오버로딩(Overloading)과 오버라이딩(Overriding)이 여기에 포함

 

 

02. C 언어

 

C 언어: Bell 연구소에서 UNIX 운영체제에 사용하기 위한 시스템 프로그래밍 언어로 1970년대 초 데니스 리치(Dennis Ritchie)에 의해 개발

 

C 언어의 필수 요소

1. 변수: 기억장치의 한 장소를 추상화한 것으로 실행 도중 저장된 값의 변경이 가능

2. 상수: 프로그램 수행 시간 동안 하나의 값이 결정되어 있는 자료 객체. 식별자로 주어지며 프로그램 수행 중에 값이 변하지 않음

3. 배정문(V = E;): 어떤 값(E)을 변수(V)에 대입하는 실행문

 

연산자 정리

단항 연산자 ++와 --

: ++와 --가 앞에 있는 경우 1증가/감소한 뒤 변수의 값을 사용한다.

: ++와 --가 뒤에 있는 경우 현재 변수의 값을 사용한 뒤 1증가/감소 한다.

 

조건 연산자: 피연산자가 3개의 항으로 구성(삼항 연산)

형식: 조건 ? 표현1 : 표현 2;

👉🏻 조건이 참이면 표현1 수행, 거짓이면 표현2 수행

 

C 언어 비트연산자

>>: 우측으로 지정값 만큼 이동. 나누기(/)

<<: 좌측으로 지정값 만큼 이동. 곱하기(*)

ex) r = a >> 3;

r= a / 2^3

ex) r = a << 2;

r = a * 2^2

 

sizeof 연산자

char: 1byte

short: 2byte

int: 4byte

float: 4byte

double: 8byte

long: 4byte

void: 0byte

float * double = double

ex) 13.2 * 84.4 = double

 

정적 변수와 자동 변수

반복문 내에 ex) static int count; 와 같이 초기화 구문이 있더라도 정적 변수는 초기화 구문이 수행되지 않는다.

 

매개 변수 전달 기법

값 호출(Call by value): 메소드를 호출할 때 자료형의 값을 인자로 전달하는 방식

참조 호출(Call by reference): 참조 자료형을 메소드 호출할 때 실인자로 사용할 경우

int f(int *i, int j) {
	*i += 5;
    return(2 * *i + ++j)
}

int main() {
	int x = 10, y = 20;
    
    printf("%d ", f(&x, y));
    printf("%d %d\n", x, y);
    return 0;
}

// 51 15 20

(값 호출) x 의 값은 *로 함수 호출 당시 바뀐 값이 그대로 들어가 있고,

(참조 호출) y 의 값은 main 안의 값이 출력된다.

 

삽입 정렬

: 이미 정렬된 레코드에 정렬되어 있지 않은 레코드를 새로 삽입시켜 다시 정렬하는 기법

 

구조체(Struct)

: 서로 다른 자료형을 갖는 자료들의 모임을 하나의 자료형으로 정의한다.

 

공용체(Union)

: 멤버 중에서 자료 크기(byte 수)가 가장 큰 멤버에 맞는 기억 공간이 할당된다. = 공용체 내에 가장 큰 자료형을 갖는 변수 크기에 맞추어 할당한다.

 

typedef

: 기존 자료형에 별명, 새로운 이름을 정의할 때 사용한다.

 

 

03. Java 언어

 

자바는 오크(Oak)라는 언어로부터 탄생했다.

 

자바의 특징

1. 단순하다.

2. 객체 지향적이다.

3. 분산 환경에 적합하다.

4. 인터프리터에 의해 실행된다.

5. 견고하다.

6. 안전하다.

7. 구조 중립적이다.

8. 이식성이 높다.

9. 높은 성능을 가진다.

10. 다중 스레드를 제공한다.

11. 동적이다.

 

this 예약어

: 생성자나 메소드의 매개 변수가 멤버 변수와 같은 이름을 사용하는 경우에 사용한다.

ex) Sub() { }; Sub(char x) { this(); } 코드가 있다면, Sub() 수행 이 후 Sub(char x) 를 수행한다.

 

float 와 double

자바에서 float 형은 숫자 뒤에 f 가 붙고 double 형은 붙지 않는다.

 

메소드 오버로딩(Overloading, 중복)

: 하나의 클래스에 이름은 같으나 매개 변수의 자료형과 개수가 서로 다른 다수의 메소드를 사용하는 것. 중복된 이름의 메소드가 호출되면 매개 변수의 형과 인자의 개수를 비교하여 적합한 메소드를 실행한다. = 이름은 같지만 인수를 다르게

 

메소드 오버라이딩(Overriding, 재정의)

: 상위 클래스에서 정의한 메소드와 이름, 매개 변수의 자료형 및 개수가 같으나 수행문이 다른 메소드를 하위 클래스에서 정의하는 것. = 수행문이 다른 메소드

 

예외 처리

: 프로그램이 예기치못한 예외의 발생에 대하여 미리 대처하는 코드를 작성하는 것으로, 실행 중인 프로그램의 비정상적인 종료를 막고 상태를 정상 상태로 유지하는 것이 목적이다.

try { // 예외가 발생할 가능성이 있는 코드

}
catch() { // 발생한 예외를 처리하는 코드

}
finally() { // 어떤 예외 발생 유무와 무관하게 무조건 실행

}

A / B 에서 B가 0이면 산술적 오류가 발생한다.

 

 

04. Python

 

Python은 네덜란드의 귀도 반 로섬(Guido van Rossum)이 개발하였다. 인터프리터(Interpreter) 언어이다. 웹 서버, 과학 연산, 사물인터넷(IoT), AI, Game 등의 프로그램 개발에 사용할 수 있다.

 

멤버십 연산자

in, not in : 좌측 Operand가 우측에 속해있는지 아닌지를 체크한다. (True or False)

 

Identity 연산자

is, is not : 양쪽 Operend가 동일한 Object를 가리키는지 아닌지를 체크한다. (True or False)

 

함수

: def 를 사용하여 함수를 정의. 함수 끝에 콜론(:)이 포함되어야 한다는 점을 유의한다.

 

리스트

.append(50): 리스트 맨 뒤에 50 추가

a.extend(b): 리스트 a 뒤에 리스트 b 합치기

.remove(100): 인덱스 100 삭제

.pop(0): 0번째 인덱스 삭제

.pop(): 마지막 인덱스 삭제

.sort(reverse = True): 리스트의 모든 원소의 순서를 역순으로 정렬

 

문자열 슬라이싱

len(str1): 띄어쓰기 포함 문자열 길이 출력

str1[10]: 인덱스 10번째 문자 반환(0부터 시작)

str1[-3]: 인덱스 오른쪽에서부터 역순으로 카운팅한 문자 반환(-1부터 시작)

str1[:]: 전체 문자열 반환

str1[0:8]: 인덱스 0부터 7까지의 문자열 반환

str1[9:len(str1)]: 인덱스 9부터 문자열 끝까지 출력

 

Lambda 함수

: list 또는 반복적으로 수행하는 기능을 별도의 함수 선언 없이 간략하게 사용할 수 있다.

# 함수
def func(x):
	return x+1
    
# Lambda 함수
func = lambda x : x+1

 

 

05. 웹 저작 언어

 

HTML

: 웹 브라우저상에 정보를 표시하기 위한 마크업 심볼 또는 파일 내에 집어넣은 코드들의 집합이다.

 

JavaScript

: Live Script와 자바 언어의 기능을 결합하여 만든 언어이다. HTML의 텍스트 위주의 문제점을 해결하고, 동적인 데이터를 처리할 수 있다.

 

ASP(Active Server Page)

: 서버 사이드 스크립트이다. 웹 브라우저에서 요청하면 웹 서버에서 해석하여 응답한다.

 

JSP(Java Server Page)

: 서블릿(Servlet) 기술을 확장시켜 웹 환경에서 사용할 수 있도록 만든 스크립트 언어이다. 웹 브라우저에서 요청하면 웹 서버에서 해석하여 응답해 주며, 자바의 대부분의 기능을 모두 사용할 수 있다.

 

PHP(Hypertext Preprocessor)

: HTML에 포함되어 동작하는 스크립팅 언어이며, 웹 브라우저에서 요청하면 웹 서버에서 해석하여 응답해 준다. C/Java/Perl 언어 등에서 많은 문장 형식을 준용하고 있어 동적인 웹 문서를 빠르고 쉽게 작성할 수 있다.

 

Ajax(Asynchronous JavaScript and XML)

: 브라우저와 서버 간의 비동기 통신 채널로 자바스크립트, XML의 집합과 같은 기술들이 포함된다. 대화식 웹 애플리케이션을 개발하기 위해 사용되며 실행을 위한 플랫폼으로 사용되는 기술들을 지원하는 웹 브라우저를 이용한다.

: 서버 처리를 기다리지 않고 비동기 요청이 가능하며 대표적인 Ajax 프레임워크로는 Prototype, JQuery, Google Web Toolkit이 있다.

 

WSDL(Web Services Description Language)

: 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어이다. XML로 작성된다.

 

 

 

 

참고. 2023 에듀윌 정보처리기사 실기 기본서

+ Recent posts