본문 바로가기
2020 정보처리기사

[정보처리기사 실기] 프로그래밍 언어 활용(1/2)

by SungJe 2020. 7. 16.

1. 기초문법 활용하기

데이터 타입(Data Type)

  • 개요 : 변수(Variable)에 저장될 데이터의 형식

  • 유형

    • 정수 타입(Integer Type) : 정수, 즉 소수점이 없는 숫자를 저장할 때 사용

    • 부동 소수점 타입(Floating Point Type) : 소수점 이하가 있는 실수를 저장할 때 사용

    • 문자 타입(Character Type) : 한 문자를 저장할 때 사용

    • 문자열 타입(Character String Type) : 문자열을 저장할 때 사용

    • 논리 타입(Boolean Type) : 조검의 참(True), 거짓(False) 여부를 판단하여 저장할 때 사용

    • 배열 타입(Array Type) : 같은 타입의 데이터 집합을 만들어 저장할 때 사용

  • C/C++과 Java의 데이터 타입

종류 C/C++ Java
문자 char char
부호없는 문자 unsigned char -
정수 short byte
int short
long int
long long long
부호없는 정수 unsigned short -
unsigned int -
unsigned long -
실수 float float
double double
long double -
논리 - boolean

 

변수(Variable)

  • 개요 : 명령어 처리 도중 발생하는 값을 저장하기 위한 공간, 변할 수 있는 값을 의미

  • 명명 규칙

    • 영문자, 숫자, _(under bar)를 사용

    • 첫 글자는 영문자나 _(under bar)로 시작

    • 공백이나 특수문자를 사용 불가

    • 대·소문자를 구분

    • 예약어를 변수명으로 사용 불가

  • 기억 클래스(Storage Class) : C언어에서 기억 영역을 결정하는 작업

    • 자동 변수(Automatic Variable) : 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수

    • 외부 변수(External Variable) : 현제 파일이나 다른 파일에서 선언된 변수나 함수를 참조(reference)하기 위한 변수

    • 정적 변수(Static Variable) : 함수나 블록이 종료된 뒤에도 값이 소멸되지 않는 변수

    • 레지스터 변수(Register Variable) : 메모리가 아닌 CPU 내부의 레지스터에 기억 영역을 할당받는 변수

종류 기억영역 예약어 기억 기간 사용 범위
자동 변수 메모리(스택) auto 일시적 지역적
레지스터 변수 레지스터 register
정적 변수(내부) 메모리(데이터) static 영구적
정적 변수(외부) 전역적
외부 변수 extern

 

연산자(Operator)

  • 산술 연산자 : 가, 감, 승, 제 등의 산술 계산에 사용되는 연산자

연산자 의미 비고
+ 덧셈 -
- 뺄셈 -
* 곱셈 -
/ 나눗셈 -
% 나머지 -
++ 증가 연산자 - 전치 : 변수 앞에 연산자가 오는 형태, 먼저 변수의 값을 증감 후 연산에 사용
- 후치 : 변수 뒤에 연산자가 오는 형태, 먼저 연산에 사용변수의 값을 증감
-- 감소 연산자
  • 관계 연산자 : 두 수의 관계를 비교하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자

연산자 의미
== 같다
!= 같지 않다
> 크다
>= 크거나 같다
< 작다
<= 작거나 같다
  • 비트 연산자 : 비트별(0, 1)로 연산하여 결과를 얻는 연산자

연산자 의미 비고
& and 모든 비트가 1일 때만 1
^ xor 모든 비트가 같으면 0, 하나라도 다르면 1
| or 모든 비트 중 한 비트라도 1이면 1
~ not 각 비트의 부정, 0이면 1, 1이면 0
<< 왼쪽 시프트 비트를 왼쪽으로 이동
>> 오른쪽 시프트 비트를 오른쪽으로 이동
  • 논리 연산자 : 두 개의 논리 값을 연산하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자

연산자 의미 비고
! not 부정
&& and 모두 참이면 참
|| or 하나라도 참이면 참
  • 대입 연산자 : 연산 후 결과를 대입하는 연산식을 간략하게 입력하는 연산자

연산자 의미
+= a += 1 a = a + 1
-= a -= 1 a = a - 1
*= a *= 1  a = a * 1
/= a /= 1 a = a / 1
%= a %= 1 a = a % 1
<<= a <<= 1 a = a << 1
>>= a >>= 1 a = a >> 1
  • 조건 연산자 : 조건에 따라 서로 다른 수식을 수행

조건 ? 수식1 : 수식2;       '조건'의 수식이 참이면 '수식1'을, 거짓이면 '수식2'를 실행
  • 기타 연산자

연산자 의미
sizeof 자료형의 크기를 표시
,(콤마) 콤마로 구분하여 한 줄에 두 개 이상의 수식을 작성하거나 변수를 정의, 순서 연산자라고 부르기도 함
(자료형) 자료형을 다른 자료형으로 변환할 때 사용, 캐스트(cast) 연산자라고 부름
  • 연산자 우선순위

대분류 중분류 연산자 결합규칙 우선순위
단항 연산자 단항 연산자 !(논리 not), ~(비트 not), ++, --, sizeof 높음
이항 연산자 산술 연산자 *, /, %






+, -
시프트 연산자 <<, >>
관계 연산자 <, <=, >=, >
==, !=
비트 연산자 &(비트 and), ^(비트 xor), |(비트 or)
논리 연산자 &&(논리 and), ||(논리 or)
삼항 연산자 조건 연산자 ? :
대입 연산자 대입 연산자 =, +=, -=, *=, /=, %=, <<=, >>=
순서 연산자 순서 연산자 , 낮음

 

제어문(Control Statement)

  • 개요 : 프로그램의 순서를 변경할 때 사용하는 명령문

  • if문

/* 단순 if문 구조 */
if(조건) {
	실행할 문장;
}

/* 다중 if문 구조 */
if(조건1) {
	실행할 문장1;
    
} else if(조건2) {
	실행할 문장2;
    
} else if(조건 n-1) {
	실행할 문장n-1;
    
} else {
	실행할 문장n;
}
  • switch문

/* switch문 구조 */
switch(수식) {

case 레이블1 :
	실행할 문장1;
    break;

case 레이블2 :
	실행할 문장2;
    break;

case 레이블n-1 :
	실행할 문장n-1;
    break;

default :
	실행할 문장n
}
  • goto문

/* goto문 구조 */
goto 레이블;

레이블 :
	실행할 문장;

 

반복문(Iteration)

  • 개요 : 제어문의 한 종류로 일정한 횟수를 반복하는 명령문

  • for문

/* for문 구조 */
for( 초기값; 최종값; 증가값 ) {
	실행할 문장;
}
  • while문

/* while문 구조 */
while(조건) {
	실행할 문장;
}
  • do~while문

/* do~while문 구조 */
do
	실행할 문장;
while(조건);
  • break : switch문이나 반복문 안에서 블록을 벗어남

  • continue : 반복문에서만 사용, continue 이후의 문장을 실행하지 않고 반복문의 처음으로 이동

 

배열(Array)과 문자열(String)

  • 개요 : 동일한 데이터 유형을 손쉽게 처리하기 위해 여러 개의 변수들을 하나의 이름으로 정의해 사용하는 것

  • 특징

    • 개별적인 요소들의 위치는 첨자를 이용하여 지정

    • 배열의 위치는 0부터 시작

    • 행 우선으로 데이터가 기적장소에 할당

    • C 언어에서 첨자 없이 배열 이름을 사용하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같음

  • 1차원 배열

  • 2차원 배열

 

포인터(Pointer)

  • 개요 : 변수의 주소를 의미, C 언어에서는 주소를 제어할 수 있는 기능을 제공

  • 특징

    • 선언 시 변수 앞에 간접 연산자 *를 붙여 포인터 변수를 선언

    • 번지 연산자 &를 통해 변수의 주소를 받아옴

    • 간접 연산자 *를 통해 포인터 변수가 가리키는 곳의 값을 받아옴

    • 메모리의 힙 영역에 접근 가능

 

데이터 입·출력

  • 개요 : 표준 입출력 함수(Input-Output Functions)를 통해 키보드로 입력받아 화면으로 출력

  • 표준 입력

/* C 언어 표준 입력 */
scanf(서식 문자열, 변수의 주소);
/* Java 언어 표준 입력 */
Scanner input = new Scanner(System.in);
inNum = input.nextInt();
  • 표준 출력

/* C 언어 표준 출력 */
printf(서식 문자열, 변수);
/* Java 언어 표준 출력 */
System.out.printf(서식 문자열, 변수)
  • 서식 문자열

서식 문자열 의미
%d 정수형 10진수 입·출력을 위해 지정
%u 부호없는 정수형 10진수 ·출력을 위해 지정
%o 정수형 8진수 ·출력을 위해 지정
%x 정수형 16진수 ·출력을 위해 지정
%c 문자 ·출력을 위해 지정
%s 문자열 ·출력을 위해 지정
%f 소수점을 포함하는 실수 ·출력을 위해 지정
%e 지수형 실수 ·출력을 위해 지정
%ld long형 10진수 ·출력을 위해 지정
%lo long형 8진수 ·출력을 위해 지정
%lx long형 16진수 ·출력을 위해 지정
%p 주소를 16진수 ·출력을 위해 지정
  • 제어 문자

문자 의미 기능
\n new line 커서를 다음 줄 앞으로 이동
\b backspace 커서를 왼쪽으로 한 칸 이동
\t tab 커서를 일정 간격 띄움
\r carriage return 커서를 현재 줄의 처음으로 이동
\0 null 널 문자를 출력
\' single quote 작은따옴표를 출력
\" double quote 큰따옴표를 출력
\a alert 스피커로 벨 소리를 출력
\\ backslash 역 슬래시를 출력
\f form feed 한 페이지를 넘김

 

예외 처리(Exeeption Handling)

  • 개요 : 프로그램의 정상적인 실행을 방해하는 조건이나 상태가 발생했을 때 문제에 대비해 작성해 놓은 처리 루틴

/* Java 언어 예외 처리 */
try {
	예외 방생 가능성이 있는 코드;
    
} catch (예외객체1 매개변수) {
	예외객체1에 해당하는 예외 처리 코드;
    
} catch (예외객체2 매개변수) {
	예외객체2에 해당하는 예외 처리 코드;
    
} catch (예외객체n 매개변수) {
	예외객체n에 해당하는 예외 처리 코드;
    
} catch (Exception 매개변수) {
	예외객체1~n에 해당하지 않는 예외 처리 코드;
    
} finally {
	예외 발생 여부와 관계없이 무조건 처리되는 코드;
    
}
  • Java언어의 예외 객체

예외 객체 발생 원인
ClassNotFoundException 클래스를 찾지 못한 경우
NoSuchMethodException 메소드를 찾지 못한 경우
FileNotFoundException 파일을 찾지 못한 경우
InterruptedIOException ·출력 처리가 중단된 경우
AritheticException 0으로 나누는 등의 산술 연산에 대한 예외가 발생한 경우
IllegalArgumentException 잘못된 인자를 전달한 경우
NumberFormatException 숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환한 경우
ArrayIndexOutOfBoundsException 배열의 범위를 벗어난 접근을 시도한 경우
NegativeArraySizeException 0보다 작은 값으로 배열의 크기를 지정한 경우
NullPointerException 존재하지 않는 객체를 참조한 경우

 

프로토타입(Prototype)

  • 개요 : 함수 원형이라는 의미로, 컴파일러에게 사용될 함수에 대한 정보를 미리 알리는 것

int func(int i, int j);

void main() {
	메인 함수 코드;
    
}

int func(int i, int j) {
	func 함수 코드;
    
}