관리 메뉴

나구리의 개발공부기록

2장 - 프로그래밍 언어 활용 | 섹션4. 데이터 타입, 섹션5. 변수, 섹션6. 연산자 본문

2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 4강 - 프로그래밍 언어 활용

2장 - 프로그래밍 언어 활용 | 섹션4. 데이터 타입, 섹션5. 변수, 섹션6. 연산자

소소한나구리 2024. 5. 9. 15:42

2024년도 시나공 필기 책 내용 정리 


섹션4. 데이터 타입

 

1. 데이터 타입

 

  • 변수(Variable, 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간, 변할 수 있는 값)에 저장될 데이터의 형식을 나타내는 것
유형 기능
정수 타입(Integer Type) 정수(소수점이 없는 숫자)를 저장할 때 사용 1, -1, 10, -100
부동 소수점 타입 (Float Point Type) 소수점 이하가 있는 실수를 저장할 때 사용 0.123X10², -1.6X2³
문자 타입 (Character Type) 한 문자를 저장할 때 사용, 작은 따옴표(' ') 안에 표시함 'A', 'a', '1', '*'
문자열 타입 (Character String Type) 문자열을 저장할 때 사용, 큰 따옴표(" ") 안데 표시 "Hello!", "1+2=3"
불린 타입 (Boolean Type) 조건의 참(True), 거짓(False)여부를 판단하여 저장할 때 사용
기본값은 거짓(False)
true, false
배열 타입(Array Type) 같은 타입의 데이터 집합을 만들어 저장할 때 사용
데이터는 중괄호{ } 안에 콤마, 로 구분하여 값들을 나열함
{1,2,3,4,5}

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

 

  • 컴퓨터나 운영체제에 따라 데이터타입이 조금씩 다름, ex) long은 window에서는 4Byte이지만, Linux(64비트)에서는 8Byte이고 long double은 16바이트임
종류 데이터 타입 크기 기억 범위
문자 char 1Byte -128 ~ 127
부호없는 문자형 unsigned char 1Byte 0 ~ 255
정수 short 2Byte -32,768 ~ 32,767
int 4Byte -2,147,483,648 ~ 2,147,483,647 
long 4Byte -2,147,483,648 ~ 2,147,483,647
long long 8Byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
부호 없는 정수형 unsiged short 2Byte 0 ~ 65,535
unsiged  int 4Byte 0 ~ 4,294,967,295
unsiged long 4Byte 0 ~ 4,294,967,295
실수 float 4Byte 1.2 X 10⁻⁴⁵ ~ 3.4 X 10³⁸
double 8Byte 4.9 X 10⁻³⁰⁸ ~ 1.8 X 10³⁰⁸
long double 8Byte 4.9 X 10⁻³⁰⁸ ~ 1.8 X 10³⁰⁸
논리 bool 1Byte true 또는 false

 


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

종류 데이터 타입 크기 기억 범위
문자 char 2Byte 0 ~ 65,535
정수 byte 1Byte -128 ~ 127
shot 2Byte 0 ~ 65,535
int 4Byte -2,147,483,648 ~ 2,147,483,647
long 8Byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수 float 4Byte 1.2 X 10⁻⁴⁵ ~ 3.4 X 10³⁸
double 8Byte 4.9 X 10⁻³²⁴ ~ 1.8 X 10³⁰⁸
논리 bool 1Byte true 또는 false

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

종류 데이터 타입 크기 기억 범위
문자 str 무제한 무제한
정수 int 무제한 무제한
실수 float 4Byte 1.2 X 10⁻⁴⁵ ~ 3.4 X 10³⁸
complex 16Byte 4.9 X 10⁻³²⁴ ~ 1.8 X 10³⁰⁸
논리 bool 1Byte true 또는 false

*complex : 복소수를 의미, 실수와 허수의 합으로 이루어진 숫자 표현

*무제한 : 프로그램에 배정된 메모리의 한계까지 얼마든지 저장 할 수 있음을 의미

 

Python 의 시퀀스 자료형

 

  • 리스트(List) : 다양한 자료형의 값을 연속적으로 저장하여 필요에 따라 개수를 늘리거나 줄일 수 있음
  • 튜플(Tuple) :  리스트처럼 요소를 연속적으로 저장하지만, 요소의 추가, 삭제, 변경은 불가능함
  • range : 연속된 숫자를 생성하는 것으로, 리스트, 반복문 등에서 많이 사용됨

섹션5. 변수

 

1. 변수의 개요

 

  • 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미
  • 저장하는 값에 따라 정수형, 실수형, 문자형, 포인터형 등으로 구분함

2. 변수명 작성 규칙

 

  • 영문자, 숫자, _(under bar)를 사용할 수 있음
  • 첫 글자는 영문자나 _로 시작해야하며 숫자는 올 수 없음
  • 글자 수에 제한이 없음
  • 공백이나 *,+,-,/ 등의 특수문자를 사용할 수 없음
  • 대/소문자를 구분함
  • 예약어를 변수명으로 사용할 수 없음
  • 변수 선언 시 문장 끝에 반드시 세미콜론을(;) 붙여야 함
  • 변수 선언 시 변수명에 데이터 타입을 명시하는 것을 헝가리안 표기법이라 함, ex) iValue, dbNum, 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언어 에서는 const라는 예약어를 사용함
  • 변수처럼 상수에 이름을 붙혀 기호화하여 사용한다고 하여 심볼릭(Symbolic) 상수라고도 함
  • ex) const float P1 = 3.14;

3. 기억 클래스

 

  • 변수 선언 시 메모리 내에 변수의 값을 저장하기 위한 기억영역이 할당되는데, 할당 되는 기억 영역에 따라 사용 범위에 제한이 있음, 이러한 기억영역을 결정하는 작업을 기억 클래스(Storage Class)라고 함
  • C언어의 5가지 종류의 기억 클래스
종류 기억영역 예약어 생존시간 사용 범위
자동 변수 메모리(스택) auto 일시적 지역적
레지스터 변수 레지스터 register
정적 변수(내부) 메모리(데이터) static 영구적
정적 변수(외부) 전역적
외부 변수 extern

 

  • 자동 변수(Automatic Variable)

    • 함수나 코드의 범위를 한정하는 블록 내에서 선언 되는 변수
    • 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸됨
    • 초기화 하지 않으면 쓰레기 값(Garbage Value, 메모리의 데이터를 변경하기 전에 마지막으로 남아 있던 데이)이 저장됨
  • 외부 변수(External Variable)
    • 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조하기 위한 변수
    • 함수 밖에서 선언
    • 함수가 종료된 뒤에도 값이 소멸되지 않음
    • 초기화하지 않으면 자동으로 0으로 초기화됨
    • 다린 파일에서 선언된 변수를 참조할 경우 초기화 할 수 없음
  • 정적 변수(Static Variable)

    • 함수나 블록 내에서 선언하는 내부 정적 변수와 함수 외부에서 선언하는 외부 정적 변수가 있음
    • 내부 정적 변수는 선언한 함수나 블록 내에서만 사용할 수 있고 외부 정적 변수는 무든 함수에서 사용할 수 있음
    • 두 변수 모두 함수나 블록이 종료된 뒤에도 값이 소멸되지 않음
    • 초기화는 변수 선언 시 한 번만 할 수 있으며, 초기화를 생략하면 자동으로 0으로 초기화 됨
  • 레지스터 변수(Register Variable)

    • 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수
    • 자주 사용되는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용
    • 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸됨
    • 레지스터의 사용 개수는 한정되어 있어 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급되어 메모리에 할당 됨
    • CPU에 저장되어 메모리 주소를 가질 수 없기 때문에 변수의 주소를 구하는 주소연산자(&)을 사용할 수 없음

가비지 콜렉터(Garbage Collector)

 

  • 변수를 선언만 하고 사용하지 않으면 이 변수들이 점유한 메모리 공간은 다른 프로그램들이 사용할 수 없게 되는데, 이러한 공간을 강제로 해제하여 다른 프로그램들이 사용할 수 있도록 하는 것을 가비지 콜렉션(Garbage Collection)이라고 하며, 이 기능을 수행하는 모듈을 가비지 콜렉터라고 함

4. 변수의 선언

 

  • 자료형 변수명 = 값;
  • 자료형 : 변수에 저장될 자료의 형식을 지정
  • 변수명 : 사용자가 원하는 이름을 임의로 지정 단, 변수명 작성 규칙에 맞게 지정
  • 값: 변수를 선언하면서 초기화할 값을 지정(값은 지정하지 않아도 됨)
  • ex) int a = 5; / 정수형 타입 변수명 a에 5를 초기값으로 저장

섹션6. 연산자

 

1. 산술 연산자

연산자 의미 비고
+ 덧셈  
- 뺄셈  
* 곱셈  
/ 나눗셈  
% 나머지  
++ 증가 연산자 전치 : 변수 앞에 증감 연산자가 오는 형태로 먼저 변수의 
-- 감소 연산자

2. 관계 연산자

 

  • 두 수의 관계를 비교하여 참(true), 거짓(false)을 결과로 얻는 연산자,
  • 거짓은 0, 참은 1로 사용되지만 0 외의 모든 숫자도 참으로 간주됨
연산자 의미
== 같다
!= 같지 않다
> 크다
>= 크거나 같다
< 작다
<= 작거나 같다

3. 비트 연산자

 

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

 

*패딩 비트 : Shift에서 자리를 이동한 후 생기는 왼쪽이나 오른쪽 끝의 빈 자리에 채워지는 비트, 양수는 항상 빈자리에 0이 채워지고 음수는 왼쪽으로 이동 시, 오른쪽 빈자리에는 0, 오른쪽으로 이동 시 왼쪽 빈자리에는 1이 채워짐


4. 논리 연산자

 

  • 두 개의 논리 값을 연산하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자, 거짓은 0, 참은 1
연산자 의미 비고
! not 부정
&& and 모두 참이면 참
|| or 하나라도 참이면 참

5. 대입 연산자

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

6. 조건 연산자(3항 연산자)

 

  • 조건 ? 수식1 : 수식2;  조건의 수식이 참이면 수식1을, 거짓이면 수기2를 실행
  • ex) b *= a > b ? a : b;

7. 기타 연산자

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

ex) a = (int)1.3 + (int)1.4;  뜻 : 1.3과 1.4를 정수형으로 변환하여 + 연산 후 결과를 변수 a에 대입

8. 연산자 우선순위

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




















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