8 분 소요

2020 시나공 정보처리기사 필기책 참고

주의! 중요도가 낮은 항목(C)은 일부 제외

1. 데이터 타입 – B

  • 변수에 저장될 데이터의 형식
  • 데이터 타입의 유형
    • Integer : 정수
    • Floating Poing : 소수점 이하가 있는 실수
    • Character : 한 문자. ‘ ‘안에 표시
    • String : 문자열. “ “안에 표시
    • Boolean : True or False. 기본값은 False
    • Array : 같은 타입의 데이터 집합. { }안에 ,로 구분

- C/C++의 데이터 타입 크기 및 기억 범위

종류 데이터 타입 크기 기억 범위
문자 char 1Byte -128 ~ 127
부호없는 문자 unsigned char 1Byte 0 ~ 2^8 - 1
정수 short 2Byte -2^15 ~ 2^15 - 1
int 4Byte -2^31 ~ 2^31 - 1
long 4Byte -2^31 ~ 2^31 - 1
long long 8Byte -2^63 ~ 2^63 - 1
부호없는 정수 unsigned short 2Byte 0 ~ 2^16 - 1
unsigned int 4Byte 0 ~ 2^32 - 1
unsigned long 4Byte 0 ~ 2^64 - 1
실수 float 4Byte 1.2 * 10^-38 ~ 3.4 * 10^38
double 8Byte 2.2 * 10^-308 ~ 1.8 * 10^308
long double 8Byte 2.2 * 10^-308 ~ 1.8 * 10^308

- Java의 데이터 타입 크기 및 기억 범위

종류 데이터 타입 크기 기억 범위
문자 char 2Byte 0 ~ 2^16 - 1
정수 byte 1Byte -2^7 ~ 2^7 - 1
short 2Byte -2^15 ~ 2^15 - 1
int 4Byte -2^31 ~ 2~31 - 1
long 8Byte -2^63 ~ 2^63 - 1
실수 float 4Byte 1.4 * 10^-45 ~ 3.4 * 10^38
double 8Byte 4.9 * 10^-324 ~ 1.8 * 10^308
논리 boolean 1Byte true or false


2. 변수 – A

- 변수명 작성 규칙

  • 영문자, 숫자, 언더바 사용 가능
  • 첫 글자는 숫자 올 수 없음
  • 글자 수 제한 없음
  • 공백이나 특수문자 사용 불가
  • 대소문자 구분
  • 예약어를 변수명으로 사용할 수 없음
  • 변수 선언 시 문장 끝에 반드시 ; 붙어야 함

- 기억 클래스

  • 기억영역을 결정하는 작업
종류 기억영역 예약어 생존기간 사용 범위
자동 변수 메모리(스택) auto 일시적 지역적
레지스터 변수 레지스터 register
정적 변수(내부) 메모리(데이터) static 영구적
정적 변수(외부) 전역적
외부 변수 extern
  • 자동 변수
    • 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수
    • 함수나 블록을 벗어나면 자동으로 소멸
    • 초기화하지 않으면 쓰레기값이 저장됨
  • 외부 변수
    • 선언된 변수나 함수를 참조하기 위한 변수
    • 함수 밖에서 선언
    • 함수가 종료된 후에도 값이 소멸되지 않음
    • 초기화되지 않으면 자동으로 0으로 초기화
    • 다른 파일에서 선언된 변수를 참조할 경우 초기화 할 수 없음
  • 정적 변수
    • 함수나 블록 내에서 선언하는 내부 정적 변수, 함수 외부에서 선언하는 외부 정적 변수
    • 내부 정적 변수는 함수나 블록 내에서만 사용, 외부 정적 변수는 모든 함수에서 사용
    • 함수나 블록이 종료된 뒤에도 값이 소멸되지 않음
    • 초기화는 변수 선언 시 한 번만 가능. 초기화를 생략하면 자동으로 0으로 초기화
  • 레지스터 변수
    • 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수
    • 자주 사용하는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용
    • 함수나 블록을 벗어나면 자동으로 소멸
    • 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급되어 메모리에 할당
    • 변수의 주소를 구하는 주소 연산자(&)를 사용할 수 없음

- 변수의 선언

  • 자료형 변수명 = 값;


3. 연산자 – A

- 산술 연산자

  • 산술 계산에 사용되는 연산자
  • +, -, *, /, %, ++, –
  • ++, –
    • 전치 : 먼저 변수의 값을 증감시킨 후 변수를 연산에 사용
    • 후치 : 변수를 연산에 사용한 후 변수의 값을 증감

- 관계 연산자

  • 참, 거짓을 결과로 얻는 연산자
  • ==, !=, >, >=, <, <=

- 비트 연산자

  • 비트별(0, 1)로 연산하여 결과를 얻는 연산자
  • &, ^, , ~, «, »

- 논리 연산자

  • 참, 거짓을 결과로 얻는 연산자
  • &&,   , !

- 대입 연산자

  • 연산식을 간략하게 입력할 수 있음
  • 산술, 관계, 비트, 논리 연산자에 모두 적용 가능
  • +=, -=, *=, /=, %=, «=, »=

- 조건 연산자

  • 조건에 따라 서로 다른 수식을 수행
  • 조건 ? 수식1 : 수식2 : 조건의 수식이 참이면 수식1, 거짓이면 수식2 실행

- 기타 연산자

  • sizeof : 자료형의 크기를 표시
  • ,(콤마) : 한 줄에 두 개 이상의 수식을 작성하거나 변수를 정의. 순서 연산자
  • (자료형) : 형 변환을 위해 사용. cast 연산자

- 연산자 우선순위

대분류 중분류 연산자 결합규칙 우선 순위
단항 연산자 단항 연산자 ! ~ ++ – sizeof 1
이항 연산자 산술 연산자 * / % 2
+ - 3
시프트 연산자 « » 4
관계 연산자 < <= >= > 5
== != 6
비트 연산자 & 7
^
비트 or
논리 연산자 && 8
논리 or
삼항 연산자 조건 연산자 ? : 9
대입 연산자 대입 연산자 = += -= *= /= %= «= »= 등 10
순서 연산자 순서 연산자 , 11


4. 제어문 – A

- 단순 if 문

  • 조건이 한 개 일 때 사용
// 조건이 참일 때만 실행
if (조건)
  실행할 문장1;
  실행할 문장2;


// 조건이 참일 떄와 거짓 때 실행할 문장이 다름
if (조건)
  실행할 문장1;
else
  실행할 문장2;


- 다중 if 문

// else if
if (조건1)
  실행할 문장1;
else if (조건2)
  실행할 문장2;
else if (조건3)
  실행할 문장3;
else
  실행할 문장4;


// 중첩 if문
if (조건1)
  {
    if (조건2)
      실행할 문장1;
    else
      실행할 문장2
  }
else
  실행할 문장3;


- switch문

  • 조건에 따라 분기할 곳이 여러 곳인 경우 간단하게 처리
switch (수식)
{
  case 레이블1:
    실행할 문장1;
    break;
  case 레이블2:
    실행할 문장2;
    break;
  default:
    실행할 문장3;
}


- goto문

  • 현재 위치에서 원하는 다른 문장으로 건너뛰어 수행을 계속하기 위해 사용
  • 많이 사용하면 프로그램의 이해와 유지 보수가 어려워져 거의 사용하지 않음
goto 레이블;
레이블:
  실행할 문장


5. 반복문 – A

- for문

  • 초기값, 최종값, 증가값을 지정하는 수식을 이용해 정해진 횟수를 반복
for(1; 2; 3)
  실행할 문장;


- while 문

  • 조건이 참인 동안 실행할 문장을 반복
while(조건)
  실행할 문장;


- do ~ while문

  • 실행할 문장을 무조건 한 번 실행한 다음 조건을 판단하여 탈출 여부를 결정
do
  실행할 문장;
while(조건);


- break, continue

  • break : switch문이나 반복문 안에서 break가 나오면 블록을 벗어남
  • continue : continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮김. 반복문에서만 사용


6. 배열과 문자열 – A

- 배열의 개념

  • 개별적인 요소들의 위치는 첨자를 이용하여 지정
  • 변수명 뒤에 []를 붙이고 그 안에 사용할 개수 지정
  • 배열의 위치는 0부터 시작
  • 행 우선으로 데이터가 기억장소에 할당
  • 첨자 없이 배열 이름을 사용하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같음

- 1차원 배열

자료형 변수명[개수];


- 2차원 배열

자료형 변수명[행개수][열개수]


- 배열의 초기화

  • 배열 선언 시 초기값을 지정할 수 있음
  • 배열 선언 시 배열의 크기를 생략하는 경우, 반드시 초기값을 지정해야 함

- 배열 형태의 문자열 변수

  • C에서 “ “로 묶인 글자는 글자 수에 관계없이 문자열로 처리
  • C에는 문자열을 저장하는 자료형이 없기 때문에 배열, 포인터를 이용하여 처리
  • 배열에 문자열을 저장하면 문자열의 끝을 알리기 위한 널 문자(‘\0’)가 자동으로 삽입
  • 배열에 문자열을 저장할 때는 배열 선언 시 초기값으로 지정. 선언된 배열에는 문자열 저장 불가
  • 널 문자를 고려하여 배열 크기를 지정해야 함
char 배열이름[크기] = "문자열"
  • Java에는 주소를 컨트롤하는 기능이 없음
  • 하지만 Java는 문자열을 처리할 수 있도록 클래스를 제공


7. 포인터 – A

- 포인터와 포인터 변수

  • 포인터는 변수의 주소를 말함. C에서는 주소를 제어할 수 있는 기능을 제공
  • 변수의 주소를 저장할 때 사용하는 변수를 포인터 변수라 함
  • 포인터 변수를 선언할 때는 자료의 형을 먼저 쓰고 변수명 앞에 * 를 붙임(int *a;)
  • 포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때는 변수 앞에 & 를 붙임(a = &b;)
  • 실행문에서 포인터에 * 를 붙이면 해당 포인터 변수가 가리키는 곳의 값임(c = *a;)
  • 포인터 변수는 동적으로 할당되는 메모리 영역인 힙 영역에 접근하는 동적 변수
  • 포인터 변수의 용도
    • 연결된 자료 구조를 구성하기 위해 사용
    • 동적으로 할당된 자료 구조를 지정하기 위해 사용
    • 배열을 인수로 전달하기 위해 사용
    • 문자열을 표현하기 위해 사용
    • 요소를 효율적으로 저장하기 위해 사용
    • 메모리에 직접 접근하기 위해 사용

- 포인터와 배열

  • 배열을 포인터 변수에 저장한 후 포인터를 이용해 배열의 요소에 접근 가능
  • 첨자를 생략하고 배열의 대표명만 지정하면 배열의 첫 번째 요소의 주소를 지정하는 것
  • 배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자 사용
  • 배열의 요소가 포인터인 포인터형 배열을 선언할 수 있음
int a[5], *b;


8. 데이터 입출력 – A

- C언어의 표준 입출력 함수의 개요

  • 키보드로 입력받아 화면으로 출력할 때 사용하는 함수

- scanf() 함수

  • 표준 입력함수. 키보드로 입력받아 변수에 저장
// 형식
scanf(서식 문자열, 변수의 주소)

// % : 서식 문자임을 지정
// 3 : 입력 자릿수를 3자리로 지정
// d : 10진수로 입력
// &a : 입력받은 데이터를 변수 a의 주소에 저장
scanf("%3d", &a);
  • 특징
    • 입력받을 데이터의 자료형, 자릿수 등을 지정할 수 있음
    • 여러 개의 데이터를 입력 받을 수 있음
    • 서식 문자열과 변수의 자료형은 일치해야 함
  • 서식 문자열
    • %d : 정수형 10진수를 입출력
    • %u : 부호없는 정수형 10진수를 입출력
    • %o : 정수형 8진수를 입출력
    • %x : 정수형 16진수를 입출력
    • %c : 문자를 입출력
    • %s : 문자열을 입출력
    • %f : 소수점을 포함하는 실수를 입출력
    • %e : 지수형 실수를 입출력
    • %ld : long형 10진수를 입출력
    • %lo : long형 8진수를 입출력
    • %lx : long형 16진수를 입출력
    • %p : 주소를 16진수로 입출력

- Java에서의 표준 입력

  • Scanner 클래스를 이용해 키보드로부터 값을 입력받는 객체 변수를 생성한 후 사용
// 형식
Scanner scan = new Scanner(System.in);
a = scan.nextInt();
  • 객체 변수 생성
    • Scanner : 입력에 사용할 객체 변수를 생성할 때 사용
    • scan : 객체 변수명
    • new : 객체 생성 예약어
    • Scanner() : 클래스 이름
    • System.in : 표준 입력장치. 즉 키보드
  • 객체 변수 활용
    • a : 입력받은 값을 저장할 변수
    • scan.nextInt()
      • scan : 입력에 사용할 객체 변수 이름
      • nextInt() : 입력받은 값을 정수형으로 반환

- printf() 함수

  • C언어의 표준 출력 함수. 인수로 주어진 값을 화면에 출력
// 형식
printf(서식 문자열, 변수)

// % : 서식 문자임을 지정
// - : 왼쪽부터 출력
// 8 : 출력 자리수를 8자리로 지정
// 2 : 소수점 이하를 2자리로 지정
// f : 실수로 출력
printf("%-8.2f", 200.2)
// 200.20VV (V는 빈칸을 의미)
  • 주요 제어 문자
    • \n : 커서를 다음 줄 앞으로 이동
    • \b : 커서를 왼쪽으로 한 칸 이동
    • \t : 커서를 일정 간격 띄움
    • \r : 커서를 현재 줄의 처음으로 이동
    • \0 : 널 문자를 출력
    • ' : 작은따옴표 출력
    • " : 큰따옴표 출력
    • \a : 스피커로 벨 소리를 출력
    • \ : 역 슬래시를 출력
    • \f : 한 페이지를 넘김

- Java에서의 표준 출력

  • Java에서 값을 화면에 출력할 때는 printf() 메소드 이용
// 형식
System.out.printf(서식 문자열, 변수)
  • System 클래스의 서브 클래스인 out 클래스의 메소드 printf()를 사용하여 출력

- 기타 표준 입출력 함수

  • 입력
    • getchar() : 한 문자를 입력받아 변수에 저장
    • gets() : 문자열을 입력받아 변수로 저장. enter를 누르기 전까지를 하나의 문자열로 인식
  • 출력
    • putchar() : 한 문자를 화면에 출력
    • puts() : 문자열을 화면에 출력한 후 커서를 자동으로 다음 줄 앞으로 이동

태그:

카테고리:

업데이트:

댓글남기기