정보처리기사 수제비 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)
📌 라이브러리
- 필요할 때 찾아서 쓸 수 있도록 모듈화되어 제공되는 프로그램
- 구성: 도움말, 설치파일, 샘플코드
'개발공부 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 8장 서버 프로그램 구현 (0) | 2023.04.15 |
---|---|
[정보처리기사 실기] 7장 SQL 응용 (0) | 2023.04.15 |
[정보처리기사 실기] 4장 통합 구현 (0) | 2023.04.15 |
[정보처리기사 실기] 3장 데이터 입출력 구현 (0) | 2023.04.14 |
[정보처리기사 실기] 2장 화면 설계 (0) | 2023.04.14 |