정보처리기사_4과목_프로그래밍 언어 활용(1)

2021. 4. 21. 16:12공부/정보처리기사

728x90
반응형
프로그래밍 언어 활용
C언어
 C언어의 특징
  - C프로그램은 함수의 집합으로 구성된다.
  - 이식성이(Portable)이 높은 언어이다.
  - 예약어가 간편
  - 융통성과 강력한 기능은 갖고 있다.
  - 구조적 프로그램이 가능하다

기본구조
헤드부분
- #include(외부 파일 편입)
- #define(매크로 정의)
- 전역변수 및 사용자 정의 함수 선언

몸체부분
- main() = C프로그램에서 예약된 유일한 함수로 프로그램 실행시 가장 먼저 수행되는 함수(모든프로그램은 main함수부터 실행 시작)
- main() 함수의 위치는 프로그램 내의 어디에나 위치 할수 있고 반드시 한 번 기술 되어야함

사용자 정의 함수
- 처리할 내용에 맞게 함수를 정의하고 경우에 따라서는 또 다른 함수를 호출할 수 있다.
- 실제 프로그램에서는 사용자 정의 함수가 여러 개 나열되어 완전한 프로그램이 된다.
- 함수 내부에서는 또 다른 함수를 정의할 수 없다.

2. C언어의 구성 요소
예약어(Reserved Word)
자료형 : char, int, float, double, enum, void, struct, union, short, long, signed, unsigned 등
기억분류 : auto, register, static, extern
제어구조 : if-else, for, while, do~while, switch-case~default, break continue, return , goto
연산자 : sizeof

명칭(Identifier)
- 예약어만을 명칭으로 사용할 수 없다.
- 영문자, 숫자, 밑줄( _ ) 을 사용하여 명칭을 구성 할수 있다.
- 숫자로 시작해서는 안된다.
- 대문자와 소문자는 구별된다.

자료표현

자료형(Data Type)

3. C언어의 연산자

산술연산자


EX)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main(void){
    int i = 100, j = 200;
 
    printf("i: %d, j: %d \n"++i, j++);
    
    printf("i: %d, j: %d \n", i, j);
 
    printf("i: %d, j: %d \n"--i, j--);
 
    printf("i: %d, j: %d \n", i, j);
    
    i=j++;
 
    printf("i: %d, j: %d \n", i, j);
 
    return 0;
}
cs

<실행결과>
i : 101 , j : 200
i : 101 , j : 201
i : 100 , j : 201
i : 100 , j : 200
i : 200 , j : 201
※ j== -> 후위 연산자는 행위를 하고 연산실행한다.

4. 제어구조
if ~ else : 선택문
switch ~ case
for문
while문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
     
    int a = 3;
    int b = 0;
    switch(a){
        case 1 : b++;
        break;
        case 2 : b *= 2;
        break;
        case 3 : b--;
        break;
    }
 
    System.out.println(b);
 
    결과
    -1
/////////////////////////////////////////////////////////
 
 
    int c = 1;
    int d = 0;
    if(c != 1){
        d--;
    }else {
        d++;
    }
    System.out.println(d);
 
    결과
    1
 
 
/////////////////////////////////////////////////////////
    for(int i = 1 ; i <= 5 ; i++){
        System.out.println(i);
    }
 
    결과
    1
    2
    3
    4
    5
 
/////////////////////////////////////////////////////////
  int e = 0;
  while (e < 5){
      e++;
  }
  System.out.println(e);
 
    결과
    5
 
 
cs


5. 배열과 포인터

배열(Array) = 변수의 확작에 해당하는 것으로 유사한 성격, 즉 동일한 자료형으로 이루어진 여러 개의 자료를 처리할 때 사용

1차원 배열: 배열의 첨자가 하나만 있는 것으로 첨자 안에 표현된 개수는 배열의 크기를 나타내는 것으로 배열 전체 구성요소의 개수를 나타냄

* 배열선언 > 형식 : 자료형 배열명[개수]
ex) 배열의 초기화
int a[3] = {1,2,3};
[1,2,3]
a[0],a[1],a[2]

2차원 배열
형식 > 자료형 배열명[행의수][열의수]

포인터(Pointer)
- 포인터는 한마디로 주소(번지 ; Address)를 일컫는다. 기억공간의 주소값을 갖는 변수를 포인터 변소 또는 포인터라고 하며 *를 사용하여 포인터를 선언한다.
- 포인터변수 : 기억공간에 주소(포인터값)을 사용하기 위해 가지는 주소값을 저장할 변수
- 포인터 : 변소의 주소값을 갖는 특별한 변수로 프로그래머가 포인터를 사용하여 직접 기억공간에 접근할 수 있는 방법을 제공함으로써 기억공간에 저장된 변수와 함수의 주소에 직접 접근 하여 기억공간의 효율적 이용을 가능하게함
- 포인터와 주소 연산자(&) : 일번 변수가 위치하는 메모리의 주소를 구하기 위해서는 주소 연산자&를 사용한다 즉 a 라는 변수의 시작주소는 &a이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
void main(){
 
    int a,b;
    int *p;
    
    a = 7;
    p = &a;
    b = *p;
    printf("%d\n", b);
 
}
결과
7
cs
JAVA 언어
1. 자바의 개요
 유래 = 오크라는 언어로부터 탄생되었다.  오크는 1991년 미곡의 선 마이크로 시스템즈사의 제임스 고슬링이 가전제품의 기능을 프로그램으로 제공하기 위해 개발하였다.

 특징 
- 단순하다.
- 분산환경에 적합
- 인터프리터에 의해 실행된다( 하이브리드 방식)
- 견고하다.
- 안전하다.
- 구조 중립적이다.
- 이식성이 높다.
- 높은 성능을 가진다   이전에는 높은 성능이라고 볼수 없엇지만 인터프리터 + JIT컴파일러로 변경되며 높은 성능을 가졋다
- 다중스레드를 제공한다.
- 동적이다

2. 클래스 구조
형식
[접근자 | 옵션] class클래스 이름 [extends Superclassname]  [ implements Interface(, Interface) ]  {
           클래스 정의하는 부분 ( 변수와 메소드 정의)
}
※ { 와 } 사이에 멤버변수, 생성자 메소드 및 메소드를 기술

접근자(Modifiers)와 옵션(Option)
- default(공백) 또는 package : 패키지 내부에서만 상속과 참조 가능
- public : 패키지 내부 및 외부에서 상속과 참조 가능
- protected : 패키지 내부에서는 상속과 참조가능, 외부에서는 상속만 가능
- private : 같은 클래스 내에서 상속과 참조 가능
- abstract : 객체를 생성할 수 없는 클래스
- final : 서브 클래스를 가질 수 없는 클래스
- static : 멤버 클래스 선언에 사용

객체의 선언과 생성
형식 
클래스 이름 객체이름new 생성자 메소드;
            레퍼런스변수  객체생성
- 작성한 클래스의 멤버 변수를 할당 받고, 메소드를 실행하기 위해서는 클래스로부터 객체를 생성해야 한다.
- 속성의 접근 : 객체명.속성변수명
- 메소드 호출 : 객체명.메소드명(매개변수)
ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MethodTest {
 
    int a, b ;
 
    public int sum(int c, int d){
        return c + d;
    }
 
    public static void main(String[] args) {
        MethodTest test = new MethodTest();
        int result = test.sum(1000-10);
        System.out.println("result : "+result);
    }
}
cs

 

파이썬(Python)
- 파이썬은 1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어이다.
- 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑 대화형 언이이다.
- 파이썬의 특징
  * 문법이 쉽고 간단하며, 배우기 쉽다.
  * 객체 지향적이다.
  * 다양한 패키지가 제공된다.
  * 오픈소스이며 무료로 제공된다.

웹 제작언어

1. HTML(HyperText Makrup language)
- 웹 브라우저 상의 정보를 표시 하기 위한 마크업 심볼 또는 파일 내에 집어넣어진 코드들의 집합
- 홈페이지를 만들 수 있는 컴퓨어 언어
- 웹에서 사용하는 하이퍼텟스트 문서를 만들 수 있는 언어
- 기호 < >로 기능이 약속된 예약어로 이루어져 있다.
- 대소문자를 구분하지 않는다.

2. JavaScript
- 네스케이프 사에서 개발한 라이브 스크립트(Live Script)와 썬 마이크로 시스템사사 만든 자바언어의 기능을 결합하여 만들어진 언어이며, 자바 언어에서 사용하는 문법을 따르고 있다.
- HTML의 텍스트 위주의 문제점을 해결하고, 동적인 데이터를 처리할 수 있다.
- HTML 문서 내에 자바 스크립트코드를 그대로 삽입하여, 클래스와 상속의 개념은 지원하지 않는다.

3. ASP(Active Server Page)
- 서버 사이드 스크립트라는 특징이 있다.
- 웹브라우저 에서 요청하면 웹서버에서 해석하여 응답해준다.
- 별도의 실행 파일을 만들 필요 없이 THML 문서 안에 직접 포함 시켜 사용한다.
- 클라이언트에서 부가적인 작업이 존재하지 않고, 단지 HTML 문서를 받아 화면에 보여주는 작업만으로 클라이언트의 역할이 끝난다.
- ASP는 Windows 2000 Server, IIS, MS-SQL과 결합되어 이용되는것이 일반적이다.
- 서버 입장에서는 ASP코드를 수행한 결과 THML문서만 클라이언트로 전송하기 때문에 ASP코드 및 ASP코드로 작성된 다양한 정보가 클라이언트로 전달되지 않아서 보안성이 증대되는 효과도 있다.

4. JSP(Java Server Page)
- 서블릿(Servlet) 기술을 확장시켜 웹 환경에서 사용할 수 있도록 만든 스크립트 언어이다.
- 웹브라우저에서 요청하면 웹서버에서 해석하여 응답해주며, 자바의 대부분의 기능을 모두 사용할수 있다.
- 별도의 실행 파일을 만들 필요없이 HTML문서 안에 직접 포함시켜 사용하며, 동적인 웹문서를 빠르고 쉽게 작성할 수 있다.

5. PHP(Hypertext Preprocessor)
- 하이퍼텍스트 생성 언어(HTML)에 포함되어 동작하는 스크립팅 언어이며, 웹브라우저에서 요청하면 웹서버에서 해석하여 응답해준다.
- 별도의 실행 파일을 만들 필요 없이 HTML문서 안에 직접 포함시켜 사용하며, C, JAVA, 펄언어 등에 많은 문장 형식을 준용하고 있어 동적인 웹문서를 빠르고 쉽게 작성할수 있다.
- ASP와 같이 스크립트에 따라 내용이 다양해서 동적HTML 처리 속도가 빠르며, PHP스크립트가 포함된 HTML페이지에는 .php, .php3, .phtml이 붙는 파일이름이 부여된다.

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


네트워크 기초 활용

프로토콜 
프로토콜의 개념 
- 네트워크 상에 있는 디바이스 사이에서 정확한 데이터의 전송과 수신을 하기 위한 일련의 규칙(set of rules)이다.
- 통신을 원하는 두 개체간의 무엇을 , 어떻게, 언제 통신할 것인가를 서로 약속하여 통신상의 오류를 피하도록 하기위한 통신 규약

프로토콜의 구성요소
- 구문(syntax)요소 : 데이터의 형식(format), 부호화 및 신호의 크기 등을 포함하여 무엇을 전송 할 것인가에 관한 내용이 들어 있다.
- 의미(semantics)요소 : 데이터의 특정한 형태에 대한 해석을 어떻게 할 것인가와 그와 같은 해석에 따라 어떻게 동작을 취할 것인가 등 전송의 조정 및 오류 처리를 위한 제어정보 등을 포함한다.
- 타이밍(timing)요소 : 언제 데이터를 전송할 것인가와 얼마나 빠른 속도로 전송할 것인가와 같은 내용을 포함한다.

IOS의 OSI 표준 모델
1. OSI 7계층 참조 모델
※ 물 데 네 트 세 프 응 
정의
- Open System Interconnection(개방형 시스템)의 약자로 개방형 시스템과 상호접속을 위한 참조 모델

각 레이어의 의미와 역할
1) Physical layer(물리 계층)
- 물리계층은 네트워크 케이블과 신호에 관한 규칙을 다루고 있는 계층으로 상위계층에서 보내는 데이터를 케이블에 맞게 변환하여 전송하고, 수신된 정보에 대해서는 반대의 일을 수행한다. 다시 말해서 물리계층은 케이블의 종류와 그 케이블에 흐르는 신호의 규격 및 신호를 송수신하는 DTE/DCE 인터페이서 회로와 제어순서, 커넥터 형태 등의 규격을 정하고 있다. 이계층은 정보의 최소 단위인 비트 정보를 전송매체를 통하여 효율적으로 전송하는 기능을 담당한다.

2) Data Link layer(데이터 링크 계층)
- 데이터 링크 계층은 통신 경로상의 지점간 (link-to-link)의 오류없는 데이터 전송의 관한 프로토콜이다. 전송되는 비트의 열을 일정 크기 단위의 프레임으로 잘라 전송하고, 전송도중 잡음으로 인한 오류 여부를 검사하며, 수신측 버퍼의 용량 및 양측 속도 차이로 인한 데이터 손실이 발생하지 않도록 하는 흐름제어 등을 한다.

3) Network layer(네트워크 계층) ※ IP, IPsec
- 네트워크층은 패킷이 송신측으로 부터 수신측에 이르기까지 의 경로를 설정해주는 기능을 수행한다.
- 두개의 통신 시스템 간에 신뢰 할수 있는 데이터를 전송할 수 있도록 경로선택과 중계기능을 수행하고, 이 계층에서 동작하는 경로배정(routing)프로토콜은 데이터 전송을 위한 최적의 결로를 결정한다.

4) Transport layer(전송 계층)  ※ TCP/UDP
- 전송층은 수신측에 전달되는 데이터에 오류가 없고 데이터의 순서가 수신측에 그대로 보존되도록 보장하는 연결 서비스의 역할 을 하는 종단간 (end-to-end)서비스 계층이다.

5) Session layer(세션 계층)
- 세션 계층은 두 응용프로그램 간의 연결 성정, 이용 및 연결해제 등 대화를 유지하기 위한 구조를 제공한다. 또한 분실 데이터의 복원을 위한 동기화 지점을 두어 상위 계층의 오류로 인한 데이터 손실을 회복 할수 있도록 한다.

6) Presentation layer(표현 계층)
- 정보의 구문, 의미를 관여하는 계층으로 부호화(encoding), 데이터 압축(compression), 암호화(crtpyogtaphy)등 3가지 주요 동작을 수행한다.

7) Application layer(응용 계층)
- 응용계층 네트워크 이용자의 상위 레벨 영역으로 , 화면배치 escape sequence 등을 정의하는 네트워크 가상 터미널 , 파일전송, 전자우편 , 디렉토리 서비스 등 하나의 유용한 작업을 할 수 있도록 한다.

2. TCP/IP 프로토콜
TCP/IP프로토콜은 OSI 7계층 모델을 조금 간소화 하여 네트워크 인터페이스(Newwork interface), 인터넷(internet), 전공(transport), 응용(application)등 네개의 계층 구조로 되어있다.

1) 네트워크 인터페이스(Network interface) 계층
- 네트워크 인터페이스 계층은 상위계층 (ip)에서 패킷이 도착하면 그 패킷의 헤더 부분에 프리앰블(preamble)과 CRC(Cyclic Redundancy Check)를 추가하게 된다.

2) 인터넷(internet) 계층
- 인터넷 계층은 패킷의 인터넷주소(internet address)를 결정하고, 경로배정(routing)역할을 담당한다.
- IP(Internet Protocol) : ip는 연결 없이 이루어지는 전송 서비스를 제공하는데 이는 패킷을 전달하기 전에 대상 호스트와 아무런 연결도 필요하지 않다는것을 의미한다.
- ARP(Address Resolution Protocol) : IP는 MAC주소를 알아내야만 통신을 할수 있으며, 이러한 IP의 요구에 해답을 제공해주는 프로토콜이 주소변환프로토콜(ARP)이다.
- ICMP(Internet Control Message Protocol) : ICMP는 IP가 패킷을 전달 하는 동안에 발생 할 수 있는 오류 등의 문제점을 원본 호스트에 보고하는 일을 한다.

3) 전송(Transport) 계층
- 네트워크 양단의 송수신 호스트 사이의 신뢰성 있는 전공 기능을 제공한다.
- 시스템의 논리 주소와 포트를 가지므로 각 상위 계층의 프로세스를 연결 하며, TCP와 UDP가 사용된다.

- UDP(User Datagram Protocol) : 비연결 지향 프로토콜이며 TCP와 달리 패킷이나 흐름제어, 단편화 및 전송 보장등의 기능을 제공하지 않는다.

- TCP(Transport Control Protocol) : 연결형 프로토콜이여 , 이는 실제로 데이터를 전송하기 전데 RCP세션을 맺는 과정이 필요함을 의미한다.(TCP3-way handshaking) Ddos공격

3-way handshaking
1.송신측이 수신측에 SYN세그먼트를 보내 연결 설정을 요청한다.
2.수신측이 송신측에 수신 확인으로 SYN 세그먼트를 전송한다.
3.송신측이 수신측에 응답 세그먼트의 확인 응답으로 ACK를 보낸다.


- 연결 해제시 : 4-way handShaking

4) 응용(Application) 계층
- OSI 참조모델의 세션, 표현, 으용 계층을 합친 것이라 할 수 있다.

인터넷
1.인터넷의 정의
- 서로 다른 컴퓨터 간의 신호교환을 위해 TCP/IP라는 전송 규악을 사용하여 연결된 모든 네트워크의 집합체이다.

2. IP주소체계
IP주소
- IP주소는 인터넷에서 연결된 컴퓨터가 실제로 인식하는 고유의 숫자로 표현된주소이다.
- 0에서 255사이의 10진수로 표시하며, 세 개의 점으로 구분한다. EX)192.168.75.180
- IPv4로 32비트 체계이며, IPv6는 32비트에서 128비트로 확장한다.
- IPv4의 최대 패킷 사이즈는 65,535바이트 이다.

3. IPv6
IPv4의 문제점
- IP설계시 예측하지 못햇던 많은 문제점이 발생하였다.
= IP 주소 부족문제
= 인터넷 보안 취약함
등등..

IPv6의 등장 : RFC 2460
- IPv6는 128비트 주소 길이를 사용한다.
- 보안문제, 라우팅 효율성 문제 제공한다.
- QoS(Quality of Service)보장, 무선 인터넷 지원과 같은 다양한 기능 제공한다.

IPv6 특징
확장된 주소 공간
- 32비트에서 128비트로 증가
- 주소 부족 문제를 근본적으로 해결
헤더 포맷의 단순화
향상된 서비스의 지원
보안과 개인보호에 대한기능
Unicast, Anycast, Multycast

IPv6 주소 표기법
기본 표기법 
- IPv6 주소는 128비트로 구성되는되 긴주로를 읽기 쉽게 하기 위해서 16비트씩 콜론으로 나누고 16진수로 표현하는 방법을 사용
ex) 1050:0000:0000:0000:0003:0111:599C:111A

- 0값이 자주 있는 IPv6주소를 쉽게 표현하기 위해서 몇가지 생략방법이 제아나되었다 0으로만 구성된 필드가 연속될 경우 필드 안의 0을 모두 삭제하고 2개의 콜론만으로 표현하며, 생략은 한번만 가능하다 
EX) 1080 : 0 : 0 : 8 : 0 : 0 : 200C : 417A
축약 1번 1080 :: 8 : 0 : 0 : 200C : 417A
축약 2번 1080 : 0 : 0 : 8 :: 200C : 417A
1080 :: 8 :: 200C : 417A -> 이런식으로 두번 연속 축약은 불가능


728x90