티스토리 뷰



프로그래밍을 하기 위해서는 변수와 상수의 차이를 알아야합니다. 변수와 상수는 프로그램을 개발하는데 있어 가장 많이 사용되는 용어입니다. 그럼 변수란 무엇일까요? 그리고 상수란 또 무엇일까요?


이 글에서는 변수와 상수에 대한 차이점에 대해서 설명을 드리도록 하겠습니다.




1. 변수(Variable)


변수는 데이터를 임시로 저장할 메모리 공간을 할당하는 것을 말합니다. 여기에서 중점적으로 봐야하는 것은 바로 임시적으로 저장한다는 것입니다. 임시적이라는 말은 지속적으로 특정 메모리 공간에 값이 변경이 가능하다는 의미입니다.


변수를 사용하기 위해서는 변수를 선언해줘야합니다.

변수를 선언한다? 라는 의미는 특정 메모리 주소에 임시 값을 넣기 위해서 할당을 하는것을 의미합니다. 변수를 선언하기 위해서는 변수 선언을 위한 문법을 따라야 합니다.


각 언어마다 변수를 선언해야 하는 방법이 다릅니다. 이 글은 엑셀 매크로를 위한 글이기 때문에 엑셀 스크립트에 대한 변수 선언 방법을 알아보도록 하겠습니다. 엑셀에서 변수를 선언하기 위해서는 Dim 명령어를 사용해야 합니다. 변수 선언 방법은 아래와 같습니다.


Dim 변수이름 As 데이터 타입


변수 선언은 변수 이름과 데이터 타입으로 구분을 할 수 있습니다. 변수 이름은 Microsoft에서 지정한 내장 변수의 이름이 아니고서는 어떠한 이름으로도 지정을 할 수 있습니다. 특히 엑셀에서는 한글 변수 이름도 지정이 가능합니다. 다만 가장 첫번째 문자를 숫자로 지정이 불가능 합니다. 


그럼 변수를 선언해보겠습니다. 아래의 그림을 살펴볼까요. 변수1이라는 변수와 1변수라는 변수 2개를 선언해보았습니다.

실행을 했을 때 컴파일러에서는 식별자에 대한 오류가 나타납니다. 이는 1변수의 첫번째 자리의 문자가 숫자로 지정이 되었기 때문에 발생을 하는 에러입니다. 첫번째 자리에는 반드시 문자로 쓰도록 해야합니다.



변수 선언에서 가장 중요한 포인트는 바로 데이터 타입입니다. 특정 번지에 들어갈 데이터가 어떠한 데이터 타입인지에 따라 설정하는 데이터 타입이 다르게 됩니다. 데이터 타입은 크기 문자열, 불리언형, 숫자형, 날짜형으로 구분을 할 수 있습니다. 


그리고 숫자형은 정수를 사용하는 Byte, Integer, Long으로 구분이 되고, 실수형을 사용하는 Single, Double로 구분할 수 있습니다. 또한 숫자형은 통화($, \)의 개념인 Currency 타입을 사용할 수도 있습니다. 


숫자형의 데이터 타입이 이렇게 구분이 되는건, 어떠한 값이 들어갈지를 미리 정의해놓기 위해서입니다. 정수형, 실수형, 통화형은 실질적으로 들어가는 데이터의 타입에 따라 결정이되고, Byte, Integer, Long을 저장해야하는 데이터의 크기가 어떻게 되는지에 따라 결정이 됩니다.


마이크로소프트에서 제공하는 Visual Basic의 데이터 타입을 보면 아래와 같습니다. Byte, Integer, Long을 살펴보면 일반 저장소 할당 크기가 각각 1바이트, 4바이트, 8바이트로 구분이 됩니다. 


1바이트는 0~255까지 데이터 저장이 가능합니다. 1바이트는 8비트이기 때문에 2의 8승까지의 데이터를 저장할 수 있습니다.

2의 8승은 256으로 0부터 저장을 하게 되면 255까지만 저장이 되는 것입니다. 따라서 256의 값을 저장하기 위해서는 Byte를 사용할 수 없습니다. 256을 저장하기 위해서는 Integer 혹은 Long 타입을 써야합니다.


테스트를 위해 Byte로 지정한 변수에 256을 넣어 보도록 하겠습니다. 아래와 같이 에러가 발생을 하는것을 볼 수 있습니다. 




그럼 무조건 큰 데이터 타입만 쓰면 되지 않느냐라는 반문이 있을 수 있는데, PC라는 녀석은 메모리가 한정적인 장비이므로 무조건 큰 데이터 타입을 쓰게 되면 데이터를 저장할 수 있는 메모리가 모자라는 문제가 발생을 할 수도 있습니다. 



<참조 : 데이터 형식 요약(Visual Basic)  http://msdn.microsoft.com/ko-kr/library/47zceaw7.aspx>


2. 상수


그럼 상수는 무엇일까요? 변수는 변하는 값을 넣기 위한 메모리 할당이라고 하였습니다.

상수는 메모리 할당이긴 하지만 값이 변하지 않는 메모리 할당입니다. 상수를 선언할 때 입력한 값 이후로는 값을 변경할 수가 없습니다.


우리는 원에 대한 계산을 할 때 원주율을 많이 사용합니다. 원주율은3.1415926535897 (35자리지만 대충 이정도만 적습니다.) 로 이루어진 변하지 않는 값입니다. 프로그래밍을 할 때 원주율을 이용해서 계산을 하는 공식을 만든다고 가정했을 때 원주율을 변수로 지정하고 개발자가 실수를 하여 원주율에 값을 변경하게 되면 계산이 제대로 되지않는 문제가 발생을 할 것입니다.


이런 경우 우리는 상수를 사용해야 합니다. 상수는 정의하는 방법에 대해서 알아보도록 하겠습니다.

상수를 정의하는 방법은 아래와 같습니다. 


Const 상수이름 = 값


상수는 변수보다 비교적 간단합니다. 상수는 한번 값을 넣은 뒤 값이 변경이 되지 않기 때문에 따로 데이터 타입을 지정할 필요는 없습니다.


그럼 테스트를 한번 해볼까요?

원주율을 상수로 만들어서 이 값을 출력해 보았습니다. 정상적으로 동작합니다 ^^



하지만 원주율에 새 값을 넣는 코드를 아래에 추가를 하게 되면 컴파일 오류가 발생을 합니다.



이렇듯 상수는 한번 설정하고 나서 값을 변경할 수 없습니다. 


이 글에서는 변수와 상수에 대해서 알아보았습니다. 변수는 값이 변경이 가능한 메모리 할당 공간이고, 상수는 값이 변경되지 않는 메모리 할당 공간입니다. 이 차이점만 안다면 프로그래밍에 큰 문제는 없을것이라 생각이 듭니다.


이 글이 도움이 되셨나요?

그렇다면 아래의 그림을 클릭해주세요.



댓글