개발공부/정보처리기사

[정보처리기사 실기] 6장 프로그래밍 언어 활용

햄❤️ 2023. 4. 15. 14:19
728x90

 

정보처리기사 수제비 2022 실기 문제집을 요약하며 공부했습니다! 😁 

 


6-1. 기본 문법 활용하기

6-1.1. 프로그래밍을 위한 기본 사항

📌  아스키코드

- 미국 ANSI에서 표준화한 정보 교환용 부호체계. 영문 키보드로 입력할 수 있는 모든 기호가 할당된 기본적인 부호체계

- 0 = NULL, 65 = A, 97 = a

📌 데이터타입

✏️데이터 타입 유형

  • 불린: C언어에서 미지원, 자바 - true/false, 파이썬 - True/False
  • 문자(Character): 문자 하나. C언어, 자바 - char
  • 문자열(String): 나열댄 여러개의 문자, C언어는 char배열, 자바 - String
  • 정수(Integer): C언어, 자바 - int
  • 부동 소수점(Floating Point): C언어, 자바 - float(4byte), double(8byte)

 

📌  기본 저장공간

- static 변수: 프로그램이 시작될 때 변수를 초기화하고, 프로그램이 종료되기 전까지 메모리가 유지되는 변수

📌 배열

- 배열의 크기를 구할 때는 length (C언어에서는 미지원)

📌 포인터

-  포인터는 변수의 주솟값을 저장하는 공간이다.

데이터타입* 포인터 변수명 = &변수명; 
int a = 10;
int* b = $a;
printf("%d %d", a, *b) // 10 10

- 2차원 배열에서 배열명만 단독으로 사용하면 2차원 포인터와 동일하다.

int a[3][2] = {1,2,3,4,5,6};
int *p = a[1];

printf("%d %d %d\n", *a[0], *a[1], *a[2]); // 1 3 5
printf("%d %d %d\n", **a, **(a+1), **(a+2)); // 1 3 5
printf("%d %d\n", *p *(p+1)); // 3 4
printf("%d %d\n", p[0], p[1]); // 3 4

 - 문자열 초기화 할 때 마지막에 NULL 문자가 삽입되므로 초기화하는 글자수보다 1 이상 큰 값으로 배열을 선언한다. 

📌 자료형

1. 자바

  • HashSet: 중복된 원소를 허용하지 않는 집합(Set)의 성질을 가진 클래스. 순서X
    • Set 변수명  = new HashSet();
    • HashSet 변수명 = new HashSet();
    • add(값) - 값을 추가하는 메서드
    • remove(값) - 값을 제거
    • size() - 원소의 개수
  • ArrayList: List의 자식 클래스로 크기가 가변적으로 변하는 선형리스트의 성질을 가지고 있는 자료형이며 클래스다.
    • List 변수명 = new ArrayList();
    • ArrayList 변수명 = new ArrayList();
    • add(값) - 값을 추가
    • add(인덱스, 값) - 해당 인덱스에 값 추가
    • remove(인덱스) - 해당 인덱스의 값 제거
    • get(인덱스) - 해당 인덱스의 값 얻기
    • size() - ArrayList 원소 개수
  • HashMap: 키와 값으로 구성된 객체를 저장하는 자료구조를 구현한 자료형이며 클래스
    • Map 변수명 = new HashMap();
    • HashMap 변수명 = new HashMap();
    • put(키, 값) - 해당 키에 해당하는 값을 추가
    • remove(키) - 해당 키에 해당하는 값 제거
    • get(키) - 해당 키에 해당하는 값 얻기
    • size() - 원소 개수

 

2. 파이썬

  • 세트(Set)형: 중복된 원소를 허용하지 않는 집합의 성질을 가지고 있는 자료구조
    • 세트명 = set([요소1, 요소2, ...])
    • 세트명 = {요소1, 요소2, ...}
    • add(값) - 값 1개 추가
    • update([값1, 값2, ...]) - 여러개의 값을 한꺼번에 추가
    • remove(값) - 특정 값을 제거
  • 리스트형: 크기가 가변적으로 변하는 선형리스트의 성질을 가지고 있는 자료구조
    • 리스트명 = [요소1, 요소2, ...]
    • append(값) - 리스트 마지막 요소 뒤에 값을 추가
    • insert(인덱스, 값) - 리스트 인덱스 위치에 값 삽입
    • remove(값) - 리스트에서 해당하는 값 제거, 여러개 일 경우 가장 앞에 있는 값 제거
    • 리스트 슬라이싱: 리스트명[시작인덱스 : 종료인덱스 : 스텝], 종료 인덱스 전까지만 슬라이싱
  • 튜플형: 초기에 선언된 값에서 값을 생성, 삭제, 수정이 불가능한 형태의 자료구조
    • 튜플명 = (요소1, 요소2, ...)
    • 튜플 슬라이싱: 튜플명[시작인덱스 : 종료인덱스: 스텝] 
  • 딕셔너리형: 키와 값으로 구성된 객체를 저장하는 구조로 되어 있는 자료구조
    • 딕셔너리명 = {키1:값1, 키2:값2, ...}
    • 딕셔너리명[키] = 값 - 요소 추가 및 변경
    • del 딕셔너리명[키] - 요소 삭제

 

📌 자료형

✏️ 식별자 표기법

  • 카멜(Camel) 표기법: 식별자 표기 시에 여러 단어가 이어지면 첫 단어 시작만 소문자로 표기, 각 단어의 첫 글자는 대문자로 지정 (inputFunction)
  • 파스칼(Pascal) 표기법: 식별자 표기 시에 여러 단어가 이어지면 첫 글자는 대문자로 지정 (InputFunction)
  • 스네이크(Snake) 표기법: 식별자 표기 시에 여러 단어가 이어지면 단어 사이에 언더바를 넣음 (input_function)
  • 헝가리안(Hungarian) 표기법: 두어에 자료형을 붙임. int형일 경우 n, char 형일경우 c, 문자열일 경우 sz를 붙임 (nScore)

 

6-1.2. 연산자

📌 연산자 우선순위

- 증감연산자 > 논리연산자(!) > 비트 연산자(~) > 산술 연산자 > 시프트 연산자 > 관계 연산자 > 비트 연산자 > 논리 연산자 > 삼항 연산자 > 대입 연산자

📌 연산자 종류

1. 증감연산자

++x x++ --x x--
1증가시킨 후 사용 사용 후 1 증가 1감소 시킨 후 사용 사용 후 1 감소

2. 시프트 연산자 

  • << : 왼쪽 값을 오른쪽 값 만큼 비트를 왼쪽으로 이동 ( x << n 이면 2의 n승으로 외운다)
  • >> : 왼쪽값에 오른쪽 값 만큼의 부호 비트를 채우면서 오른쪽으로 이동

2. 비트 연산자 

  • & : 모두 1이면 1, 아니면 0
  • | : 하나라도 1이면 1, 아니면 0
  • ^ : 두개가 서로 다르면 1, 아니면 0
  • ~ : 반대로 바꾸는 반전 기능

 

6-1.3. 표준 함수

📌 입력 함수

1. C언어

  •  scanf(포맷스트링, &변수명);

2. 자바

  •  Scanner 클래스를 사용하여 입력받는다.

3. 파이썬

  • 변수명 = input()
  • 변수명 = eval(변수명): 숫자를 문자열로 저장한 후 eval 함수를 통해 숫자로 변환

 

📌 출력 함수

1. C언어

- printf(문자열), printf("\n") - 개행, prinf(포맷스트링, 변수명)

✏️ 포맷 스트링 

  • %c : 문자 출력
  • %s : 문자열 출력
  • %d: 10진수 출력
  • %[-][0][전체자리수]d : 10진수, [-]는 왼쪽 정렬, [0]을 붙이면 전체 자리수에서 앞에 빈 공간 0으로 채움
  • %x: 16진수
  • %o: 8wlstn
  • %f: 실수 출력
  • %[전체자리수].[소수점자리수]f: 실수 출력

2. 자바

  • System.out.printf(포맷스트링, 문자열), System.out.print(문자열)
  • 개행: System.out.print("\n"), System.out.println(문자열)

3. 파이썬

  • print(문자열)
  • print(문자열, end= ' ') : 개행 없음

 

📌 조건문

- 파이썬에서의 if문

if 조건문 :
	명령문
elif 조건문 :
	명령문
else :
	명령문

 

📌 반복문

 - switch: 파이썬에는 없음. break가 존재하지 않을 경우 break를 만날 때 까지 switch 문에 있는 다른 문장을 실행한다. 

- do while문: 참, 거짓과 상관없이 무조건 한번은 실행하고 그 다음부터는 조건이 참인 동안에 해당 분기를 반복 실행

- 파이썬의 for 변수 in range(시작, 종료, 스텝) : 종료 미만까지만 실행한다. 

 

6-1.3. 사용자 정의 자료형 활용

📌 구조체

- 구조체는 사용자가 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 자료형이다. 자바, 파이썬은 지원X

- 구조체는 일반 구조체 변수로 접근할때는 . 으로 접근, 구조체 포인터로 접근할때는 -> 로 접근

 

6-1.5. 클래스

 - 클래스는 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 틀이다.

📌  접근 제어자

  • public: 외부 모든 클래스에서 접근 가능
  • protected: 같은 패키지 내부에 있는 클래스, 하위 클래스에서 접근 가능
  • default: 같은 패키지 내부에 있는 클래스에서 접근 가능 (java에만 존재)
  • private: 같은 클래스 내에서만 접근 가능

 

📌  클래스

- static 메서드: 인스턴스를 생성하지 않아도 호출이 가능하다.

✏️ 클래스 선언

1. 자바

 - 클래스 클래스 변수 = new 클래스

- 클래스.finalize();

2.  파이썬

- 클래스변수 = 클래스(매개변수)

- del 클래스변수

 

📌  상속

- 오버로딩: 동일 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의할 수 있는 기능. 파이썬에서는 지원X
 메서드 이름이 같고, 매개변수 개수가 달라야 한다. 매개변수 개수가 같으면 데이터 타입이 달라야한다. 반환형은 달라도 된다.

- 오버라이딩: 하위 클래스에 상위 클래스의 메서드를 재정의 할 수 있는 기능
 상위 클래스에 메서드가 존재해야한다. 메서드 이름 같아야 한다. 매개변수 개수, 데이터 타입 같아야한다. 반환형도 같아야 한다.

 

📌  인터페이스

- 자바에서만 존재. 오직 추상 메서드와 상수만을 멤버로 가질 수 있음. implements 키워드를 사용해 상속 받음

 


 

6-2. 언어 특성 활용하기

📌  프로그래밍 언어별 특성

-  절차적 프로그래밍 언어 종류: 알골, C언어, 베이직, 포트란

- 객체 지향 프로그래밍 언어 종류: C++, C#, 자바, 델파이

- 스크립트 언어 종류: PHP, 펄(Perl), 파이썬(Python), 자바스크립트(Javascript)

- 선언형 언어 종류: 함수형 언어(하스켈, 리스프), 논리형 언어(프롤로그), 특수분야 언어(SQL)

 

📌  객체 지향 프로그래밍 구성요소

- 객체, 클래스, 메시지

- 객체의 구성요소: 개체(Entity), 속성(Attribute), 메서드(Method)

 

📌  라이브러리 

- 필요할 때 찾아서 쓸 수 있도록 모듈화되어 제공되는 프로그램

- 구성: 도움말, 설치파일, 샘플코드

 

728x90