'변수'는 한자로 쓰면 '變數'라고 합니다. '변하는 수'라는 뜻이 있습니다. 수가 변한다니, 무슨 말인가요? 영어로 쓰면 'variable'이라고 합니다. 이 역시 '변하는', '가변적인'이라는 뜻이 있습니다. 수학적으로는 어떤 정해지지 않은 임의의 값을 표현하기 위해 사용하는 일종의 '기호'입니다. 어렵죠?
일상생활에서도 고정적이지 않고, 항상 같지 않고, 정해지지 않고, 예측이 어렵고, 상황에 따라 바뀌는 것을 가리켜 '변수'라고 표현합니다.
"그 일은 말이야... 변수가 많아서 어렵겠어!"
컴퓨터는 모든 작업, 다른 말로 하면 계산 또는 연산을 할 때 그 작업이 어디에서 이루어지나요?
메모리, 즉 기억 장치에서 이루어진다고 했습니다.
print(3)
이 코드는 '3'이라는 숫자를 화면에 쓰는 일을 하는 명령어입니다. 이때 '3'이라는 숫자는 화면에 표시되기 전에 메모리라는 공간 어딘가에 먼저 저장되어야 합니다. 위의 명령어를 실행하면 컴퓨터는 '3'이라는 숫자를 자동적으로 알아서 메모리라는 공간에 저장합니다.
그런데 문제는 사람입니다. 사람에게는 '3'이라는 숫자가 저장되는 그 메모리 공간에 이름을 붙여주어야 계산을 쉽게 할 수 있습니다. 그 특정한 메모리 공간에 이름을 붙여 준 것, 그것이 프로그래밍에서 말하는 '변수'입니다.
'메모리'라는 '작업 처리를 위한 어떤 공간'을 마련하고 그 공간에 특정한 이름을 붙여주고 그곳에 '3'이라는 숫자를 저장합니다. 그러면, 아무 이름도 없었던 숫자 '3'에 이름이 생기는 것입니다. 일단 이름이 생기면 이제 숫자 '3' 대신 그 이름을 써서 계산을 할 수 있게 되는 것입니다. 이것을 '변수 이름'이라고 합니다.
그럼 변수 이름은 어떻게 붙이는 걸까요?
보통 알파벳 문자를 씁니다. 아래와 같습니다.
a
abc
Banana
gorila
KimSuji
변수 이름은 대개 알파벳 문자로 시작하고 그 뒤에 숫자나 특수 기호를 쓸 수 있습니다.예를 들면 아래와 같습니다.
a98
gorila_2024
'변수'는 컴퓨터 메모리에 문자나 숫자를 저장하는 '공간'입니다. 공간마다 이름을 붙여서 구체적인 정보를 쉽게 다룰 수 있게 해 줍니다.
이제 변수에 정보를 넣어 보겠습니다. '3'이라는 숫자를 변수 'a'에 넣어 보겠습니다. 다음과 같습니다.
a = 3
아니, 이건 "a와 3이 같다"는 뜻 아닌가요?
수학에서는 그런 뜻입니다. 하지만 여러 프로그래밍 언어에서는 '같다'라는 뜻이 아니고, '3'이라는 정보를 'a'라는 변수에 넣는다는 의미입니다.
그럼 프로그래밍 언어에서 '같다'는 개념은 어떻게 표현할까요? 아래와 같습니다.
a == 3
자. '같다' 또는 '다르다' 같은 개념은 나중에 보기로 하고요, 오늘은 변수에 대해서만 살펴보겠습니다.
그럼, 'banana'라는 변수에 '12'라는 숫자를 저장하려면 어떻게 하면 될까요? 아래와 같습니다.
banana = 12
이렇게 하면 메모리에 있는, '12'라는 숫자가 저장된 어떤 특정한 공간은 비로소 'banana'라는 이름을 가지게 되는 것입니다.
변수에 저장되는 정보를 우리는 '값'이라고 부릅니다.
"banana라는 변수에 저장된 정보는 12이다", 이렇게 말할 수도 있지만 "banana라는 변수에 저장된 값은 12이다", 이렇게 말할 수도 있습니다. 간단히 이렇게 말하기도 합니다. "banana의 값은 12이다".
그러면 왜 이렇게 하는 걸까요?
아까도 말했듯이 정보의 계산 즉 연산을 더 쉽고 빠르게 하기 위해 약속을 하는 것입니다. 정보가 저장되는 공간에 사람이 쉽게 알 수 있는 이름을 붙여줌으로써, 어떤 정보인지를 암시하는 동시에 정보 그 자체 대신 변수의 이름만으로 연산을 할 수 있게 되는 것입니다.
그래서 이제는 아래와 같은 코드를 쓸 수 있게 됩니다.
banana = 12
print(banana)
위두 줄의 코드는 이런 내용입니다. 그냥 무작정 "print(12)"라고 해도 문제는 없지만, 먼저 'banana'라는 변수에 '12'를 저장합니다. 그다음, 값 대신 저장된 메모리의 이름, 즉 변수를 실제 값 대신 화면에 표시하는 것입니다.
위의 코드를 실행하면 아래와 같이 출력됩니다.
12
그냥 "print(12)"를 실행한 것과 같지요? '12'라는 숫자가 'banana'라는 변수에 대입되었습니다.그리고, 출력되는 것은 변수의 이름이 아니라 변수에 저장된 값입니다.
자, 이제 다른 코드를 한 번 살펴볼까요?
apple = 3
apple = 7
print(apple)
위의 코드를 실행하면 화면에는 '7'이 표시됩니다. '3'은 어떻게 된 것일까요?
모든 코드는 '순서대로' 실행됩니다. 특별한 일이 없으면 코드는 위에서 아래로 하나하나 '순차적으로' 실행됩니다.
먼저 "apple = 3"이라는 코드가 실행됩니다. 그러면 apple이라는 변수에는 '3'이라는 값이 저장됩니다. 그 후에 "apple = 7"이라는 코드가 실행됩니다. 같은 변수 이름을 쓰기 때문에 같은 메모리 공간입니다. 맨 처음에는 이 공간에 '3'이 저장되었지만 두 번째 코드 때문에 apple이라는 변수에는 먼저 저장되었던 '3'이라는 값이 지워지고 '7'이라는 값이 저장됩니다. 한 변수에는 하나의 값만 저장되기 때문입니다. 그래서 출력을 하면 '7'이 표시될 것입니다.
아래 코드는 어떤 값을 출력하게 될까요?
table = 1
table = 2
table = -5
table = 10
table = 0
print( table )
'0'이 표시됩니다. 최종적으로 변수에 저장된 값이 '0'이기 때문입니다.
변수 이름은 하나인데 그 값은 시시때때로 바뀌지요? 그래서 '변수'를 가리켜 '변하는 수'라고 부르는 것입니다. 사실은 값이 변하는 것이죠. 이름이 바뀌는 게 아니라.
그렇다면 메모리 공간에 한 번 저장되면 다른 값으로 바꿀 수 없는 그런 변수도 있을까요? 예, 있습니다. 그런 것을 가리켜 '상수'라고 합니다. 한번 저장하면 항상 같은 수, 즉 항상 같은 값을 유지합니다. 나중에라도 바뀌지 않습니다. 그렇게 하자고 약속했기 때문입니다.프로그래밍이란 수많은 '약속'을 가지고 뭔가를 만들어내는 작업입니다.
변수 variable
상수 constant
값 value
이제 변수에 대한 개념이 조금 잡히셨나요? 다음 시간에는 변수를 활용해서 본격적인 코드를 짜 보도록 하겠습니다.