본문 바로가기

2021 정보처리기사/4과목: 프로그래밍 언어 활용

[정보처리기사 4과목] ✔ 프로그래밍 언어 활용(2)

728x90
반응형

 

[정보처리기사 4과목 필기 예상 키워드] 목록으로 돌아가기
과목: 4. 프로그래밍 언어 활용
챕터: 2장 프로그래밍 언어 활용
키워드: 프로그래밍 언어 활용(2)
 #데이터타입
#변수
#연산자
#데이터 입/출력

 

(전체적인 작성 기준은 C언어와 Java를 기반으로 합니다)

 

 

데이터타입

개요

데이터 타입(Data Type)은 변수(Variable)에 저장될 데이터의 형식을 나타내는 것으로, 변수에 값을 저장하기 전에 문자형, 정수형, 실수형 등 어떤 형식의 값을 저장할지 데이터 타입을 지정하여 변수를 선언해야 함. 

 

 

 

유형 기능 예시
  정수   소수점이 없는 숫자 1, -1, 10, -100
  소수점   소수점 이하가 있는 실수 0.123x10^2, -1.5x2^3
  문자   작은 따옴표 안에 표시 (문자 한 개 저장) 'A', 'a', '1', '*'
  문자열   큰 따옴표 안에 표시 (문자열 저장) "Hello!", "!+2=3"
  불린   조건의 참, 거짓 판단. 기본값은 False True, False
  배열   { } 안에 , 로 구분하여 값들을 나열 {1, 2, 3, 4, 5}

 

 

 

 

 

 

 

 

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

종류 데이터타입 크기 기억범위
문자 char 1 Byte -128~127
부호없는 문자형 unsigned char 1 Byte 0 ~ 255
정수 short 2 Byte -32,768 ~ 32,767
int 4 Byte -2,147,483,648 ~ 2,147,483,674
long 4 Byte -2,147,483,648 ~ 2,147,483,674
long long 8 Byte 엄청 큼
부호 없는 정수형
unsigned short 2 Byte 0 ~ 65,535
unsigned int 4 Byte 0 ~ 4,294,967,295
unsigned long 4 Byte 0 ~ 4,294,967,295
실수 float 4 Byte 1.2 x 10^-38 ~ 3.4 x 10^38
double 8 Byte 2.2 x 10^-308 ~ 1.8 x 10^308
long double 8 Byte 2.2 x 10^-308 ~ 1.8 x 10^308

 

✔ C언어의 구조체

- 구조체를 정의한다는 것은 int나 char 같은 자료형을 하나 만드는 것을 의미한다
- Structure의 약어인 'Struct'를 사용하여 정의한다
struct sawon {
	char name[10];
  	char position[10];
   	int pay;
}

 

 

 

 

 

JAVA 데이터 타입 크기 및 기억범위

종류 데이터타입 크기 기억범위
문자 char 2 Byte 0 ~ 65,535
정수 byte 2 Byte -128 ~ 127
short 4 Byte -32,768 ~ 32,767
int 4 Byte -27,147,483,648 ~ 2,147,438,647
long 8 Byte 엄청 큼
실수 float 4 Byte 1.4x10^-45 ~ 3.4x10^38
double 8 Byte 4.9 x 10^-324 ~ 1.8 x 10^308
논리 boolean 1 Byte true 또는 false



 

 

 

 

 

Python 데이터 타입 크기 및 기억범위

종류 데이터타입 크기 기억범위
문자 str 무제한 무제한
정수 int 무제한 무제한
실수 float 8 Byte 4.9x 10^-324 ~ 1.8 x 10^308
complex(복소수) 16 Byte 4.9x 10^-324 ~ 1.8 x 10^308

 

 

 

 

 

 

변수

개요

✔ 변수(Variable)는 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로 변할 수 있는 값을 의미

✔ 저장하는 값에 따라 정수형, 실수형, 문자형, 포인터형 등으로 구분

 

 

변수선언

#include <stdio.h>
int main()				//프로그램 시작
{
	int score;			//정수형 변수 생성
	score = 70;			//score변수에 70 할당
    	double grade = 3.8;		//실수형 변수 생성과 동시에 3.8 할당
    	return 0;			//프로그램 종료
}

 

입력함수

#include <stdio.h>
int main()				//프로그램 시작
{
	char c;				//문자형 변수 생성
	char s[10];			//문자 배열(10글자) 선언
    	char grade;			//문자형 변수 선언
    	double score;			//실수형 변수 선언
        
        c = getchar();			//문자 하나 입력
        gets(s);			//문자열 입력
       	 				//띄어쓰기로 구분해서 점수와 학점을 입력
        scanf("%lf %c", &score, &grade);
        return 0;			//프로그램 종료
}

 

 

출력함수

#include <stdio.h>
int main()			//프로그램 시작
{
	putchar('a');		//문자 a 출력
	puts("hello");		//문자열 hello 출력
  	  //아래와 같이 출력
  	  //점수는 4.2점
  	  //학점은 A입니다
    printf("점수는 %1lf점\n학점은 %c입니다.", 4.2, 'A');
    return 0;			//프로그램 종료

 

 

 

 

 

변수명 작성 규칙

✔ 영문자, 숫자, _(Under bar)를 사용할 수 있다

첫 글자는 영문자나 _ 로 시작해야 하며 숫자는 올 수 없음

✔ 글자 수에 제한 없음

공백이나 *, + , - , / 등의 특수문자 사용 불가

✔ 대.소문자 구분

예약어를 변수명으로 사용할 수 없음(for, while 등)

✔ 변수 선언 시 문장 끝에 반드시 세미콜론( ; )을 붙여야 함

✔ 헝가리안 표기법 사용

 

- 변수의 자료형을 알 수 있도록 자료형을 암시하는 문자를 포함하여 작성하는 방법

- 정수형 변수라는 것을 알 수 있도록 변수명에 int를 의미하는 i를 덧붙여 i Value 라고 하는 것이 예시가 될 수 있다

 

ex) int iValue: 정수형 변수

ex) double dbNum: 더블형 변수

ex) char chType: 문자형 변수

 

 

 

예약어

정해진 기능을 수행하도록 이미 용도가 정해져 있는 단어로 변수 이름이나 다른 목적으로 사용 불가

C언어의 예약어는 다음과 같다

 

구분 예약어
제어문 반복 do, for, while
선택 case, default, else, if, switch
분기 break, continue, goto, return
자료형 char, double, enum, float, int, long, short, signed struct, typedef, union, unsigned, void
기억 클래스 auto(메모리), extern(레지스터), register, static(메모리-데이터)
기타 const, sizeof, volatile

 

 

 

 

연산자

✔ C언어는 연산자가 많아서 우선순위가 굉장히 중요함

✔ 연산자를 공부할 때 가장 중요한 것은 "결과의 타입이 무엇으로 나오냐"

✔ 산술 연산자의 연산 우선순위(높음➡낮음): 증감연산자➡산술연산자(*, / %)➡산술연산자(+, -)

 

++ 증가연산자 1을 증가시키는 연산자 / (전치) 먼저 변수의 값을 증감시킨 후 변수를 연산에 사용 (++a, --a)
-- 감소연산자 1을 감소시키는 연산자 / (후치) 먼저 변수를 연산에 사용한 후 변수의 값을 증감시킴 (a++, a--)

🔽 예제 풀어보기 🔽

더보기

예제: a=2, b=3, c=4, d=5일 때 다음 산술 연산식의 결과를 적으시오

 

 

ex) b = ++b - --c;

1) b의 초기값이 3이고, ++b가 전치 증가 연산자이므로 연산 전에 값이 증가하여 4

2) c의 초기값이 4이고, --c가 전치 감소 연산자이므로 연산 전에 값이 감소하여 3

답) 4 - 3 = 1

 

ex) c = ++b / b++;

1) b의 초기값이 3이고, ++b가 전치 증가 연산자이므로 연산 전에 값이 증가하여 4

2) b의 초기값이 3이고, b++가 후치 증가 연산자이므로 연산에 사용되는 b는 1에서 증가한 4가 됨

답) 4 / 4 = 1

 

ex) d = 10 % c++;

1) c의 초기값이 4이고 후치 증가 연산자이므로 연산에 사용되는 c는 4

2) 10 % 4의 결과값인 2가 d에 저장됨

답) 2

 

ex) b = 10 + ++a;

1) a의 초기값이 2이고, ++a가 전치 증가 연산자이므로 연산 전에 값이 증가하여 3

2) 10 + 3의 결과값인 13이 b에 저장됨

답) 13

 

ex) c = 10 - --d;

1) d의 초기값이 5이고, --d가 전치 감소 연산자이므로 연산 전에 값이 감소하여 4

2) 10 - 4의 결과값인 6이 c에 저장됨

답) 6

 

ex) c = ++a * b++;

1) a의 초기값이 2이고, ++a가 전치 증가 연산자이므로 연산 전에 값이 증가하여 3

2) b의 초기값이 3이고, b++가 후치 증가 연산자이므로 연산에 사용되는 b는 초기값은 3

3) 3 * 3의 결과값인 9가 c에 저장됨

답) 9

 

 

 

관계 연산자

✔ 두 수의 관계를 비교하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자

✔ 거짓은 0 , 참은 1로 사용되지만 0 외의 모든 숫자도 참으로 간주됨

 

연산자 의미
  ==   같다
  !=   같지 않다
  >   크다(왼쪽이)
  >=   크거나 같다
  <   작다(왼쪽이)
  <=   작거나 같다

🔽 예제 풀어보기 🔽

더보기

예제) 다음 관계 연산식의 결과를 적으시오 (단, 정수형 변수 a = 5, b = 10으로 선언되었다고 가정)

 

1) a == 10

답) false (0)

 

2) b != 10 

답) false (0)

 

3) a > 10

답) false (0)

 

4) b >= 10

답) true (1)

 

5) a < 10

답) true(1)

 

6) b <=10

답) true(1)

 

 

 

 

비트 연산자

✔ 비트 연산자는 비트별(0, 1)로 연산하여 결과를 얻는 연산자이다

연산자 의미 비고
&   and   모든 비트가 1일때만 1
^   xor   모든 비트가 같으면 0, 하나라도 다르면 1
|   or   모든 비트 중 한 비트라도 1이면 1
~   not   각 비트의 부정, 0이면 1, 1이면 0
<<   왼쪽 시프트   비트를 왼쪽으로 이동
>>   오른쪽 시프트   비트를 오른쪽으로 이동

 

 

 

논리 연산자

 

연산자 의미 비고
!   not   부정
&&   and   모두 참이면 참
||   or   하나라도 참면 참

🔽 예제 풀어보기 🔽

더보기

예제) 다음 논리 연산식의 결과를 적으시오(a=2, b=3, c=0, d=1, e=1)

 

1) a > 3 && b > 2

답: false (0)

 

2) a > 3 | b > 2

답: true (1)

 

3) !c

답: false (0)

 

4) a == 2 && b !=3

답: true (1)

 

5) a & b && c

답 : 2 && 0 =0

 

6) ++d && --e

답) 2 && 0 = 0

 

 

 

 

대입 연산자

✔ 연산 후 결과를 대입하는 연산식을 간략하게 입력할 수 있도록 대입 연산자를 제공한다. 대입 연산자는 산술, 관계, 비트, 논리 연산제에 모두 적용할 수 있다

연산자 의미
+=   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

🔽 예제 풀어보기 🔽

더보기

예제) 다음 대입 연산식의 결과를 적으시오 (단, a=2, b=3, c=4, d=5)

1) a += 3;

답: a = a + 3 이므로 a =5

 

2) b *= 3;

답: b = b * 3 이므로 b = 9

 

3) c %= 3;

답: c = c % 3 이므로 c = 1

 

4) d >>= 1;

답: d = d >> 1 이므로 2 

d의 초기값 5를 이진수로 변환(0101) 후 부호를 제외한 전체 비트를 오른쪽으로 1비트 이동시키면 (0010), 다시 십진수로 변환하면 2가 된다.

 

5) c += 10 + ++a;

풀이1) c = c + (10 + ++a); 

풀이2) c = 4 + (10 + 3);

답: 17

 

6) d *= 10 - b++;

풀이1) d = d * (10 - b++);

풀이2) d = 5 * (10 - 3);

답) 35

 

7) a += b += c;

풀이1) a = a + (b += c);

풀이2) a = a + (b + c);

답: 9

 

 

8) d += b *= c /= a;

풀이1) d = d + (b *= c /=a);

풀이2) d = 5 + (12 / 2)

답: 11

 

9) a -= ++ d / b --;

풀이1) a = a - (++d / b--);

풀이2) a = 2 - (6 / 3);

답: 0

 

10) b += c *= a <<2;

풀이1) b = b + (c * (a << 2;)

풀이2) b = 3 + ( 4 * 8)

답: 35

 

11) a %= c | b & d -b;

풀이1) a = a % (c | b & d - b);

풀이2) a = 2 % (c | b & 5 - 3);

풀이3) a = 2 % (c | b & 2);

풀이4) a = 2 % (c | 3 & 2);

풀이5) a = 2 % (4 | 2);

풀이6) a = 2 % 6;

답: 2

 

 

12) c *= d <<= (b == ++a);

풀이1) c = c * (d << (b == ++a));

풀이2) c = 4 * (5 << 1);

풀이3) c = 4 * (5 << 1)

풀이4) c = 4 * 10

답: 40

 

 

 

 

 

 

조건 연산자

✔ 조건 연산자는 조건에 따라 서로 다른 수식을 수행

 

형식

조건 ? 수식1: 수식2; = 조건의 수식이 참이면 수식1을, 거짓이면 수식2를 실행한다

 

🔽 예제 풀어보기 🔽

더보기

예제) 다음 조건 연산식의 결과를 적으시오(단, 정수형 변수 a=1, b=2, c=3, d=4와 같다)

1) b*= a > b ? a : b;

풀이: a는 1이고 b는 2이므로 조건(a > b)가 거짓이 되어 b값이 사용된다

답: b = b * b = 4

 

 

2) c -= a < b ? a - b : b - a;

풀이: 조건 ( a < b ) 가 참이므로 a값이 사용되어 c = c - (a - b)가 된다.

답: c = 3 + 1 = 4

 

 

3) d %= c < d ? c++ : d++;

풀이: 조건 ( c < d ) 가 참이므로 c++가 사용되어 d = d % c++ 이 된다

답: d = 4 % 3 = 1

 

 

4) c += b < b ? ++a : b++;

풀이: 조건 ( b < b ) 가 거짓이므로 b++가 사용되어 c = c + b++이 된다

답: c = 3 + 2 = 5

 

 

5) d /= d % 3 ? a * b : d %c;

풀이: d는 4이므로 d % 3은 1이된다. 조건에서 1은 참과 같으므로 a * b의 결과인 2가 사용된다

답: d = d / 2 = 2

 

 

 

기타 연산자

 

연산자 의미
sizeof 자료형의 크기 표시
, (콤마) 콤마로 구분하여 한 줄에 두 개이상의 수식을 작성하거나 변수 정의
왼쪽에서 오른쪽으로 순서대로 수행되며 순서 연산자라 부르기도 함
(자료형) 사용자가 자료형을 다른 자료형으로 변환할 때 사용하는 것으로 cast(캐스트) 연산자라고 부름
변환할 자료형을 괄호 안에 넣어서 변환할 값이나 변수명 앞에 놓음
ex) a = (int)1.3 + (int)1.4;
=1.3을 정수형으로 변환한 값 1과 1.4를 정수형으로 변환한 값1을 더하여 2가 a에 저장된다

 

 

 

 

 

연산자의 우선순위(낮음➡높음)

순서 ➡대입➡조건➡이항(논리➡비트➡관계➡시프트➡산술)➡단항

 

대분류 중분류 연산자 결합규칙 우선순위
단항 연산자 단항 연산자 ! ~ ++ -- sizeof 높음














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

 

 

 

 

 

 

 

 

 


 

정보처리기사 3과목 필기 (상시업뎃)

2021년 정보처리기사 공부를 위해 각 과목/챕터 별 Best 키워드를 정리해 놓은 글입니다. 시나공 문제집의 기출빈도와 중요도를 기준으로 정리된 키워드들이며, 순서와 관계 없이 

y-oni.tistory.com

 

참고: 시나공 정보처리기사 필기 (저자: 강윤석, 김용갑, 김우경, 김정준 | 출판사: 길벗), 유튜브 주간컴공TV

728x90