본문 바로가기
IT/정보처리기사

정보처리기사 6단원(프로그래밍 언어 활용) 요약

by 낭만파 2021. 7. 2.
반응형
기출문제가 출제된 부분은 배경색으로 표시해 두었습니다

목차

1. 기본 문법 활용하기

 

 

기본 문법 활용하기


배열 선언

언어 구분 선언
C, C++ 초깃값이 없는 경우 타입 배열명[배열_요소_개수];
int a[5] (쓰레깃값으로 초기화)
초깃값이 있는 경우 타입 배열명[배열_요소_개수] = {초깃값};
int a[5] = {1, 2}; (1, 2를 제외한 나머지는 0으로 초기화)
Java

초깃값이 없는 경우 타입 []배열명 = new 타입[배열_요소_개수];
타입 배열명[] = new 타입[배열_요소_개수];
int []a = new int[5];
int a[] = new int[5];
(초깃값을 선언하지 않을 경우 정수는 0, 실수는 0.0, 문자는 NULL로 초기화)
초깃값이 있는 경우 타입 []배열명 = {초깃값};
int []a = {1, 2} (1, 2로 초기화)

 

파이썬

세트(Set)중복된 원소를 허용하지 않는 집합의 성질을 가진 자료형

 메소드 설명
세트명 = set([요소1, ...])
세트명 = {요소1, 요소2, ...}
세트형 선언
(a = {1, 1}과 같이 선언해도 a = {1}로 저장)
add(값) 값을 1개 추가
update([값1, 값2, ...]) 여러 개의 값을 한 번에 추가
remove(값) 특정 값을 제거

리스트(List)크기가 가변적으로 변하는 선형리스트의 성질을 가진 자료형

메소드 설명
리스트명 = [요소1, 요소2, ...] 리스트형 선언
append(값) 리스트 마지막 요소 뒤에 값을 추가
insert(인덱스, 값) 리스트의 인덱스 위치에 값을 삽입
remove(값) 리스트에 해당하는 값을 제거
(값이 여러 개 있을 경우 가장 앞에 있는 값을 제거)
a[Index] 리스트 인덱싱
첫번째 요소: 0, 두번째 요소: 1, ..., 마지막 요소: n-1
첫번째 요소: -n, 두번째 요소: -(n-1), ..., 마지막 요소: -1
a[시작_인덱스 : 종료_인덱스 : 스텝] 리스트 슬라이싱
시작_인덱스 ~ (종료_인덱스-1) 까지의 원소들을 스텝만큼 슬라이싱
시작을 생략할 경우 처음부터, 종료를 생략할 경우 마지막까지
# List Insert 예시

a = [1, 2]
a.insert(0, 0) # 0번째 Index에 0이란 원소 추가
print(a)

-----------------------------------
# 출력 결과
[0, 1, 2]

튜플(Tuple)초기에 선언된 값에서 값을 생성, 삭제, 수정이 불가능한 형태의 자료형 (메소드는 리스트와 동일)

딕셔너리(Dictionary)키와 값으로 구성된 객체를 저장하는 구조의 자료형

메소드 설명
딕셔너리명 = {키1:값1, 키2:값2, ...} 딕셔너리 선언
딕셔너리명[키] = 값 딕셔너리 요소 추가
del 딕셔너리명[키] 딕셔너리 요소 삭제

 

식별자 표기법

💡 암기 TIP
카멜 표기법: 낙타 머리는 작고(첫 글자 소문자), 봉우리는 높음(나머지 대문자)
파스칼 표기법: 파스칼은 엄격하게 대문자
스네이크 표기법: 뱀 같은 언더바(_)
헝가리안 표기법:  헝가리 사람들은 형식을 중요시 함 (자료형 표시)
표기법 설명 예시
카멜 표기법(Camel Case) 첫 단어 시작만 소문자로 표시, 각 단어의 첫 글자는 대문자 inputFunction
파스칼 표기법(Pascal Case) 각 단어의 첫 글자는 대문자 표시 InputFunction
스네이크 표기법(Snake Case)
여러 단어 사이에 언더바(_)를 넣음 input_function
헝가리안 표기법(Hungarian Case) 두어에 자료형을 붙이는 표기법
(int형 = n, char형 = c, 문자열 = sz)
nScore

 

Switch 문

조건에 따라 여러 개의 선택 경로 중 하나를 취하고자 할 때 사용하는 명령어로, 파이썬에는 switch 문이 존재하지 않음

  1. 조건에 해당하는 case로 이동
  2. 해당하는 case가 종료되었을 때 break가 있으면 switch 문을 빠져나옴
  3. break가 존재하지 않을 경우 break를 만날 때 까지 다른 문장들을 실행
switch(식){
case 값:
	명령문;
    break;
default:
	명령문;
}

 

접근제어자

지정된 클래스, 변수, 메서드를 외부(같은 패키지이거나 다른 패키지)에서 접근할 수 있도록 권한을 설정하는 기능

종류 설명
public 외부의 모든 클래스에서 접근 가능
protected 같은 패키지 내부에 있는 클래스, 하위 클래스에서 접근 가능
default 접근 제어자를 명시하지 않은 경우로 같은 패키지 내부에 있는 클래스에서 접근 가능
private 같은 클래스 내에서만 접근이 가능

 

클래스 정의

C++ 클래스 정의

class 클래스명{
private:
	변수_타입 변수명;
public:
	반환_데이터_타입 메서드명(데이터_타입 변수명, ...){
		명령어;
		return 반환값;
    }
}

자바 클래스 정의

public class 클래스명{
    private 변수타입_변수명;
    public 반환_데이터_타입 메서드명(데이터_타입 변수명, ...){
    	명령어;
        return 반환값;
    }
}

파이썬 클래스 정의

class 클래스명:
    def 메서드명(self, 변수명, ...):
    	명령어
        return 반환값​

 

클래스 선언

C++ 클래스 선언

C++에서는 일반변수로 선언한 경우 점(.)을 이용해 메소드에 접근하고, 포인터 변수를 사용하면 화살표(->)를 활용해 메소드에 접근

구분 설명
일반변수 클래스 클래스변수(매개변수); // 생성시
클래스변수.메소드(매개변수); // 클래스 내 메소드 사용
포인터 변수 사용 클래스 * 클래스변수 = new 클래스(매개변수); // 생성시
클래스변수->메소드(매개변수); // 클래스 내 메소드 사용
delete 클래스 변수; // 소멸시

자바 클래스 선언

구분 설명
생성시 클래스 클래스변수 = new 클래스(매개변수);
소멸시 클래스변수.finalize();

파이썬 클래스 선언

구분 설명
생성시 클래스변수 = 클래스(매개변수)
소멸시 del 클래스변수

 

생성자(Constructor)

생성자는 해당 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 종류의 메소드로, 일반적으로 클래스의 멤버 변수를 초기화하거나 클래스를 사용하는데 설정이 필요한 경우 사용

언어 생성자
C++, Java 클래스명(데이터_타입 변수명, ...)
(클래스명과 동일한 메소드 사용)
Python def __init__(self, 변수명, ...):
(__init__이라는 메소드명 사용, 첫 번째 매개변수로 self를 사용)

 

소멸자(Destructor)

객체의 수명이 끝났을 때 객체를 제거하기 위한 목적으로 사용되는 메소드

언어 소멸자
C++ ~클래스명()
Java void finalize(매개변수)
Python def __del__(self):

 

상속(Inheritance)

어떤 객체가 있을 때 그 객체의 변수와 메소드를 다른 객체가 물려받는 기능

언어 소멸자
C++ class 자식_클래스명 : public 부모_클래스명 {
Java class 자식_클래스명 : extends 부모_클래스명 {
Python class 자식_클래스명(부모_클래스명):

 

오버로딩(Overloading)

동일 이름의 메소드를 매개변수만 다르게 하여 여러 개 정의할 수 있는 기능으로, 파이썬은 오버로딩을 지원하지 않음

 

오버라이딩(Overriding)

하위 클래스에서 상위 클래스 메소드를 재정의 할 수 있는 기능으로, C++에서는 virtual 키워드가 있어야 오버라이딩이 가능

 

상위 클래스 접근

언어 소멸자
C++ 부모_클래스::메소드명()
Java super.메소드명()
Python super().메소드명()

 

추상 클래스

미구현 추상메소드를 한 개 이상 가지며, 자식 클래스에서 해당 추상 메소드를 반드시 구현하도록 강제하는 기능

언어 소멸자
C++ virtual 데이터_타입 메소드명() = 0;
Java abstract class 클래스명 {
abstract 데이터_타입 메소드명();
Python class 클래스명:
def 메소드명(self):
pass

 

반응형

댓글