프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

11. 변수의 의미


이제부터는 프로그래밍의 꽃, '변수'에 대해 알아볼 것입니다. 여기는 이론을 많이 다루기 때문에 꽤 지겨운 부분입니다. 그러나 너무 걱정하지 마세요. 다소 지겹긴 해도 최대한 쉽게 이해할 수 있도록 간략하고 재밌게 설명하겠습니다.

변수의 의미

프로그램에서 사용되는 여러가지 값들을 담는 저장공간을 변수라고 합니다. 그 저장공간에 이름을 붙여서 소스코드 내부에서 사용할 수 있죠. 한마디로 '값에 이름을 붙인 것'을 변수라고 생각하면 됩니다.

사진 1. 프로그래밍에서 사용되는 값에 이름을 붙인 것을 변수라고 합니다

그런데, 왜 프로그래밍에 변수가 필요할까요?

변수를 사용하는 이유

1. 연산의 결과값을 코드에 사용하기 위해

여러 이유가 있지만, 그 첫번째 이유는 프로그램의 연산에 따른 다양한 결과값을 우리가 사용해야하기 때문입니다.

예를 들어서, 어떠한 연산의 결과가 3일수도 있고 5일수도 있을 때, 그 결과를 코드 내에서 사용하려면 변수가 필요합니다. 어떤 값이 결과로 나올지 모르는 상황에서, 직접 코드에 3 또는 5라고 적어줄 수 없으니까요. 따라서 '연산의 결과'를 변수에 담아서 사용하는 경우가 가장 흔합니다. 어떤 값이 될지 모르는 연산의 결과를 코드 내에서 사용하기 위해서죠.

그런데 이런 설명은 프로그래밍이 처음인 경우 이해가 힘들 수 있으니, 일단 넘어가셔도 좋습니다.

2. 코드에 유연성을 더하기 위해서

코드에 유연성을 더하기 위해서도 사용됩니다. 변수를 사용하면 프로그램이 더욱 유연해지죠. 변화에 대응하기 쉽다는 뜻입니다.

예를 들어서, 우사인 볼트가 항상 동일한 속도인 1초10m씩 뛸 수 있다고 가정하겠습니다(실제론 가속되는 시간이 필요하겠지만 무시합시다). 그렇다면 프로그램 상에서 우사인 볼트의 거리별 예상 기록을 계산할 때, 아래와 같이 계산할 수 있습니다.


50m 기록: 5 x 1초
100m 기록: 10 x 1초

왜냐하면 우사인 볼트는 앞서 가정했듯 1초에 10m를 달리기 때문입니다.

그런데, 그날 아침 우사인 볼트가 밥을 많이 먹어서 10m를 달리는데 2초씩이나 걸리게 되었다고 해봅시다. 기존의 프로그램을 이용하여 50m, 100m 기록을 계산하려면 코드에서 아래와 같이 두 부분을 수정해야합니다.


50m 기록: 5 x 2
100m 기록: 10 x 2

이처럼, 변수를 사용하지 않으면 하나의 조건을 변경되었을 때 코드의 모든 부분을 수정해주어야하는 불편함이 있습니다. 만약 볼트의 150m, 200m 기록 또한 계산하는 프로그램이었다면 총 네 군데를 변경해야하죠.

그런데 애초에 변수를 사용하여 프로그래밍 했다면 아래와 같이 프로그래밍 할 수 있고,


unitTime 변수에 1을 담는다.

50m 기록: 5 x unitTime
100m 기록: 10 x unitTime

이 상태에서 볼트의 10m 기록이 변경되었더라도 아래처럼 변수의 값만 고쳐주면 됩니다.


unitTime 변수에 2를 담는다.

50m 기록: 5 x unitTime
100m 기록: 10 x unitTime

이렇게 변수의 값 딱 한 군데만 수정해준다면 프로그램은 아까와 동일한 동작을 할 수 있을 것입니다. 따라서 변수를 사용하면 더욱 변화에 유연한 프로그램을 만들 수 있습니다.

3. 코드에 의미를 더하기 위해서

또한, 변수는 작성한 코드의 의미를 명확하게 보여줄 때도 사용할 수 있습니다. 간단한 예를 들어서, 체중을 키의 제곱으로 나누어 구할 수 있는 체질량지수(BMI)를 계산해주는 프로그램이 있다고 하겠습니다.


체질량지수(BMI) = 70 / 1.82

체중 변수에 70을 담는다.
변수에 1.8을 담는다.

체질량지수(BMI) = 체중 / 2

위와 같은 두 방법 중, 어느 코드가 더욱 의미상 명확한가요? 코드를 처음 보는 사람도 의미를 이해할 수 있는 것은 아래쪽 코드일 것입니다. 이렇듯 변수는 코드의 의미를 명확하게 해주는 역할도 합니다.

변수를 사용하는 경우는 많습니다!

프로그래밍에서 변수는 뗄래야 뗄 수 없습니다. 제가 말씀드린 내용은 어디까지나 변수의 대표적인 역할입니다. 변수를 사용하는 모든 경우를 설명드릴 자신조차 없습니다. 다만 확실하게 말씀드릴 수 있는 것은, 변수는 편리하고 유용하다는 것입니다.

변수가 왜 필요한지 아직 와닿지 않으신다해도 괜찮습니다. 앞으로 강좌를 따라 코드를 작성해보시면 느끼실 수 있을테니, 일단은 변수의 개념만 알고 넘어갑시다.

질문하러 가기