본문 바로가기

STUDY/정보처리기능사

정보처리기능사 [필기] - 프로그래밍 언어 활용

1. 프로그래밍 언어 활용

 

1. 변수 

1) 비트 (Bit, Binary Digit)

- 프로그램은 비트라고 불리는 0과 1의 값으로 작성되거나 변환되어 컴퓨터가 이해할 수 있도록 함

- 컴퓨터를 이해하기 위한 가장 기본적인 용어, 정보를 표현하는 최소 단위

- 1 byte = 8 bit

구분 설명
Byte 1 byte = 8 bit
KB(킬로바이트) 1 KB = 1024 byte = 8192 bit
MB(메가바이트) 1 MB = 1024 * 1024 byte 
GB(기가바이트) 1 GB = 1024 * 1024 * 1024 byte
TB(테라바이트) 1 TB = 1024 * 1024 * 1024 * 1024 byte
PB(페타바이트) 1 PB = 1024 * 1024 * 1024 * 1024 * 1024 byte
EB(엑사바이트) 1 EB = 1024 * 1024 * 1024 * 1024 * 1024 * 1024 byte

 

2) 표현 값의 범위 

- 4 bit = 0000(0) ~ 1111(5) -> 2^4 = 16개 표현 가능

- 8 bit = 00000000(0) ~ 11111111(127) -> 2^8 = 256개 표현 가능 (-128~127)

- 16 bit = 0000000000000000 ~ 1111111111111111 -> 2^16 = 65535개 표현 가능

- n bit = 2^n개 표현 가능

 

2. 컴퓨터 시스템 구조

(1) CPU: 프로그램 실행 및 데이터 처리

 - 처리장치: 하나의 산술논리연산장치 + 내부 레지스터 + 데이터 전송을 위한 데이터 버스

 - 제어장치: 명령어 해독기, 명령어 레지스터, 타이밍회로, 제어논리 등

(2) 메모리: 작업에 필요한 프로그램과 데이터를 저장

(3) I/O Device: CPU로부터 명령을 받아 데이터를 입력 또는 출력

(4) 특수 목적 레지스터

 - PC(Program Counter): 다음에 실행될 명령어 주소를 저장

 - AAC: 명령어의 결과를 일시 저장 (=누산기)

 - MAR(Memory Address Register): 기억장치 주소 레지스터

 - MBR(Memory Buffer Register): 기억장치 버퍼 레지스터

 (5) 명령어 실행 단계

IF(Fetch) ID(decode) EX(execute) WB(Write Back)

- 인출(Fetch): 주 기억장치(RAM)에서 프로그램 명령어를 하나씩 인출 제어 버스를 통해 보냄

- 해석(Decode): 프로그램 명령에 따라 데이터를 해석

- 실행(Execute): 제어장치(CPU)에서 해석한 명령어를 연산장치(ALU)로 보내 연산

- 쓰기(Write Back): 처리된 데이터를 Disk에 저장할 수 있도록 주 기억장치로 보냄

 

3. 명령어 형식

명령어(opcode) 주소(operand1) 주소(operand2)

- opcode: 수행될 연산을 지정(LOAD, ADD 등)

- 오퍼랜드: 연산을 수행하는 데 필요한 데이터 또는 데이터의 주소

1) 주소지정방식

 (1) 직접 주소 지정 방식 (Direct Mode)

- 오퍼랜드부에 사용할 자료의 주소를 표현

 (2) 간적 주소 지정 방식 (Indirect Mode)

- 오퍼랜드부에 실제 데이터 주소가 저장된 곳의 주소를 표현, 최소 2번 접근 

 (3) 즉시적 주소 지정 방식 (Immediate Mode)

- 명령어 자체 오퍼랜드를 가지고 있는 방식, 별도 기억장소에 액세스 하지 않고 바로 자료 이용 가능, 속도가 빠름

 

4. 자료 구조

- 컴퓨터에 데이터를 삽입, 삭제, 수정하게 해주는 논리적인 공간 구조

1) 단순 구조(Simple): 프로그래밍 언어에서 제공하는 기본 데이터 타입 

   ex) int, float, double, char 등

2) 선형 구조(Linear): 자료들 사이의 선후 관계가 일대일인 구조

   ex) 연결 자료 구조, 순차 자료 구조, 스택, 큐 등

3) 비선형 구조(Non-Linear): 자료들 사이의 선후 관계ㅏㄱ 계층 또는 그물 형태를 가지는 구조

   ex) 트리, 그래프 등

4) 파일 구조(File): 보조 기억 장치에 데이터 값이 실제로 기록되는 자료 구조

   ex) 순차 파일, 색인 파일 등

 

5. 바인딩: 변수와 변수에 관련된 속성을 연결하는 과정

1) 정적 바인딩: 프로그램 실행 시간 전에(컴파일 시간) 속성을 연결하는 방식

2) 동적 바인딩: 프로그램 실행 시간에 속성을 연결하는 방식

 

6. 연산자

1) 산술 연산자(Arithmetic Operator)

+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지

2) 시프트 연산자(Shift Operator)

<< 왼쪽 값을 오른쪽 값만큼 비트를 왼쪽으로 이동 (곱하기 2)
>> 왼쪽 값에 오른쪽 값만큼의 부호 비트를 채우면서 왼쪽으로 이동 (나누기 2)

3) 보수

1의 보수 1 -> 0, 0 -> 1 (1은 0으로 0은 1로 변경)
2의 보수 1의 보수 결과 + 1

4) 논리 연산자(Login Operator)

&& AND, 두 개의 논리 값이 모두 참이면 참, 그렇지 않으면 거짓
|| OR, 두 개의 논리 값 중 하나가 참이면 참, 그렇지 않으면 거짓

 * 논리 회로

 (1) AND

x y x*y
0 0 0
0 1 0
1 0 0
1 1 1

 (2) OR

x y x+y
0 0 0
0 1 1
1 0 1
1 1 1

(3) NOT

x x'
0 1
1 0

(4) XOR

x y xy'+x'y
0 0 0
0 1 1
1 0 1
1 1 0

(5) 부울 대수의 공식

x + 0 = x
x * 1 = x
x + 1 = 1
x * 0 = 0
x + x = x
x * x = x

 

4) 연산 표기법

(1) 전위(Prefix): 연산자 데이터 데이터 ex) + a 4

(2) 중위(Infix): 데이터 연산자 데이터 ex) a + 4

(3) 후위(Postfix): 데이터 데이터 연산자 ex) a 4 +

 

7. 프로그래밍 언어

1) 프로그래밍 언어별 특성

언어 특성
FORTRAN 1954년, 시스템 의존적이고 프로그램 작성을 위해서는 컴퓨터 시스템 관련 지식이 많이 필요함
COBOL 1960년, 프로그램 크기가 크고 구문이 복잡, 순차적 방식의 언어
PASCAL 1971년, 잘 짜인 구조와 간결성, but 분리 컴파일과 문자열의 적절한 처리 제공 x
C 1972년, UNIX 운영체제 구현에 사용됨, 문법의 간결성, 효율적 실행, 효과적인 포인터 타입 제공
C++ C언어를 발전시킨 언어 클래스 상속 등을 제공하는 객체 지향 프로그래밍 언어
JAVA C++에 비해 단순하고 분산 환경 및 보안성을 지원, 컴파일을 통해 생성된 class 파일을 가상머신을 통해 실행
JAVASCRIPT 1995년, 객체 지향 스크립트 언어, 웹 페이지 동작을 구현, 확장성이 좋고 배우기 쉬움
PERL 텍스트 처리에 주안점을 두고 개발된 인터프리터 언어, CGI용으로 많이 사용
PYTHON 배우기 쉽고 이식성이 좋은 언어, ㅇ니터프리터 언어이면서 객체 지향 언어, 스크립트 언어
C# C와 C++의 발전된 형태로 사용자 인터페이스를 쉽게 만드는 컴포넌트 기능을 제공
GOLANG 2009년, Google에서 만든 언어(GO), C언어와 유사
DART JAVASCRIPT와 JAVA의 영향을 받아 개발된 객체 지향적인 언어
CEYLON JAVA에 기반을 둔 언어로 모듈성을 주요 특징으로 가짐

 

2) 구현 기법

 (1) 컴파일 방식: 고급 언어를 기계어로 번역하는 방식, 실행 속도가 높음
     ex) FORTRAN, PASCAL, C, C++, JAVA 등 

 (2) 인터프리터 방식: 고급 언어 명령문을 하나씩 번역하고 실행하는 방식, 프로그램 실행 시에 계산됨
     ex) BASIC, PROLOG, LISP, SNOBOL 등 

 

3) 프로그램, 프로세스, 프로세서

 (1) 프로그램(Program): 저장 장치에 저장되어 있는 실행 가능한 파일

 (2) 프로세스(Process): 저장 장치에 저장되어 있다가 CPU 내에서 실행되고 있는 하나의 프로그램

 (3) 프로세서(Processor): 프로그램이 동작하게끔 해주는 하드웨어, CPU (5대 기능: 입력, 출력, 저장, 제어, 연산)

 

4) 코드 종류 

(1) BCD Code [6비트]: 숫자, 영어 대문자, 특수 기호를 나타내기 위해 6비트로 이루어진 코드 > 2^6 = 64개 표현 가능

Zone Digit
           

(2) ASCII Code [7비트]: 통신에 주료 사용됨 > 2^7 = 128개 표현 가능

Zone Digit
             

(3) EBCDI Code [8비트]: 대형 컴퓨터에 사용 > 2^8 = 256개 표현 가능

Zone Digit
                 

 

8. 멀티플렉서 & 디멀티플렉서

1) 멀티플렉서 (Multiplexer)

- 여러 개의 입력 중 하나를 선택해 출력으로 내보내는 논리 회로

2) 디멀티플렉서 (Demultiplexer)

- 한 개의 입력을 어느 출력단에 내보낼 지 선택할 수 있는 기능을 가진 논리 회로