자료와 정보

데이터와 변수

이 문서에서는 데이터, 정보, 그리고 변수에 대해서 다룬다.

자료(Data)

프로그램의 목적은 계산이다. 계산을 하기 위해서는 이 필요하며, 추상적인 값보다 구체적인 값이 필요하다.

다음은 추상적인 값들의 예시이다.

  • 맛있다

  • 기분이 좋다

  • 비가 올 것 같다

  • 공기가 깨끗하다

  • 분위기 있다

추상적인 값들은 프로그래밍에서 계산할 수 없다. 사람마다 느끼는 정도가 다르며, 수치로 나타낼 수 없기 때문이다.

다음은 구체적인 값들의 예시이다.

  • 음식의 가격이 10000원이다

  • 강수량이 25mm이다

  • 미세먼지 농도가 20㎛이다

  • 몸무게가 50kg이다

  • 키가 180cm이다

이처럼 수치화가 가능하며, 측정이 가능한 값들을 자료(Data)라고 한다. 하지만 자료를 가지고는 단순한 확인밖에 할 수 없기 때문에 이를 계산을 통해 의미있는 내용으로 변화시켜야 하며, 이를 정보(Information)이라고 부른다.

정보(Information)

정보는 자료를 가공하여 만들어낸 의미있는 결과를 말한다.

다음은 자료의 예시이다.

  • 1주일간 강수량 측정치

  • 1주일간 매출액

  • 1주일간 일일 공부시간

  • 1주일간 미세먼지 농도 변화

다음은 정보의 예시이다.

  • 온난화와 강수량 변화의 상관관계

  • 전년도와 비교한 매출 변화 및 원인

  • 나와 전교 1등의 공부 시간 분석 결과

  • 이웃 나라와 우리 나라의 미세먼지 농도 차이

정보는 의사 결정을 수행하는데 도움을 주며, 정보의 신뢰성이 높을 수록 좀 더 합리적인 의사결정을 할 수 있다. 따라서 프로그램에서는 자료를 어떻게 수집하여 어떻게 계산할 것인지가 매우 중요한 요소가 된다.

자료의 형태

현실세계에서의 자료는 다양한 형태로 존재한다. 크기가 10이라고 해서 모두 같은 값이 아니라는 점에 유의해야 하며, 다음 예시를 통해 살펴본다.

분류

10원

화폐

10유로

회폐

10달러

화폐

10g

무게

10kg

무게

10cm

길이

10km

길이

10L

부피

10평

넓이

10헥타르

넓이

10데시벨

소리

10Lux

밝기

위에서 언급한 값들은 모두 10이라는 값을 가지고 있지만 다른 형태이다. 이를 형태별로 분류하면 다음과 같다.

분류

화폐

10원, 10유로, 10달러

무게

10g, 10kg

길이

10cm, 10km

부피

10L

넓이

10평, 10헥타르

소리

10데시벨

밝기

10Lux

다음과 같은 계산식이 있다고 가정해본다.

10원 + 10유로 = ?

우리는 위의 계산식을 계산할 수 있을까? 정답은 할 수 있다이다. 물론 있는 그대로는 안되고, 변환을 통해서 가능하다. 만약 환율이 1유로에 1500원이라면, 식은 다음과 같이 변할 수 있다.

  • 10원 + 15000원 = ?

  • 0.006 유로 + 10유로 = ?

이처럼 같은 분류의 값들은 서로 변환을 통해 계산이 가능하다는 것을 우리는 이미 알고 있다.

그렇다면 다음의 계산식을 살펴보자.

10g + 10cm = ?

위의 식은 계산이 가능한가? 정답은 할 수 없다이다. 다른 분류의 값은 어떠한 형태로도 계산이 불가능하다. 단위를 통일할 수 없기 때문이다. 우리는 이미 이러한 사실들을 알고 있으며, 이는 프로그래밍에서도 그대로 적용된다.

자바의 자료 형태

자바 뿐 아니라 프로그래밍 언어에서는 다음의 전제조건에 의해 데이터를 구분한다.

  • 단위는 계산을 복잡하게 하므로 단위는 생략한다.

  • 같은 분류의 값들은 변환을 통해서 계산할 수 있다.

  • 다른 분류의 값들은 당연히 계산할 수 없다.

  • 프로그래머는 이 사실을 반드시 알고 있어야 한다.

프로그램의 핵심 요소 중 하나는 속도이기 때문에 이를 위해 단위는 프로그래머에게 위임하도록 구성되어 있다. 따라서 모든 데이터의 단위를 배제하고 값 자체를 다음과 같이 분류한다.

분류

설명

종류

숫자

정수

소수점이 없는 숫자

byte, short, int, long

숫자

실수

소수점이 있는 숫자

float, double

문자

번호가 부여된 글자(ASCII, Unicode)

char

논리

예/아니오 처럼 두 가지 상태를 표현하는 값

boolean

문자열

문장을 표현하는 값

String

객체

복잡한 데이터를 표시하기 위한 값

사용자 정의 자료형

위의 표에 따라 다음 형태의 규칙이 성립하게 된다.

  • 숫자끼리는 변환을 통해 계산이 가능하다.

  • 그 외의 형태와는 분류가 다르므로 계산이 불가능하다.

우리에게 필요한 능력은 데이터를 봤을 때, 프로그래밍 자료형에서 어느 분류에 해당하는지 파악하는 능력이며 변수를 이용하여 실제 데이터를 저장하고 사용하는 과정은 다음 문서에서 다룬다.

예제

다음은 출력 명령을 이용한 간단한 예제이다.

import java.lang.*;

public class SimplePrintExample {
    public static void main(String[] args){
        System.out.println(100);//정수
        System.out.println(3.14);//실수
        System.out.println(true);//논리
        System.out.println('A');//문자
        System.out.println("Hello");//문자열
        
        System.out.println(100 + 3.14);//숫자(정수,실수)의 계산
        System.out.println(5 + 'A');//숫자(정수,문자)의 계산
        //System.out.println("Hello" - 5);//문자열과 정수의 계산(오류 발생)
        //System.out.println(true + 2);//논리와 정수의 계산(오류 발생)
    }
}

Last updated