2강에서는 비교적 일반적인 타입 및 타입과 연관성이 있는 연산 및 값 을 살펴보았습니다. 이제 이러한 타입과 값을 코드에 사용하는 방법을 배워보겠습니다.
표현식이 사용하는 값 은 정보 또는 데이터 라고도 합니다. 프로그램은 데이터가 있어야 무엇을 해야 할지 알 수 있으며, 이러한 데이터 또는 값은 다양한 방법으로 저장할 수 있습니다.
데이터의 종류 또한 다양합니다.
변경 가능과 변경 불가
변경 가능 은 데이터의 변경이 가능하다는 의미입니다. DNA 코드가 변하거나 변경되어 만들어지는 돌연변이를 생각해 보세요.
해안의 파도도 변경 가능해서, 끊임없이 변화합니다.
변경 불가 한 것은 변경될 수 없습니다. 지진, 해일, 폭발, 침식 등을 논외로 하면, 해변을 내려다보는 절벽은 변경 불가합니다.
그런데 이 개념이 코드와 무슨 관계가 있을까요?
프로그램이 실행되는 동안 변경될 수 없는 값은 변경 불가 값입니다. 프로그램이 실행되는 동안 다른 곳에서의 입력에 따라 변하는 값은 변경 가능 값입니다.
Verse에는 대부분의 프로그램이 실행되는 데 필요한 기초 연산을 지원하는 기본 타입이 있습니다. 이 기본 타입은 Verse에서 변수 와 상수 를 사용하는 데 기초가 됩니다.
변수와 상수
프로그래밍에서는 변수(variable) 와 상수(constant) 를 사용해서 프로그램이 사용하는 값을 저장합니다.
프로그램은 데이터가 있어야 다음에 무슨 일이 일어날지 정할 수 있으며, 컴퓨터는 코드의 변수와 상수에 저장된 값을 기반으로 계산과 결정을 수행합니다.
변수 라는 용어가 일반적으로 변수와 상수를 모두 지칭하는 데 사용되기도 하지만, 한 가지 중요한 차이가 있습니다. 프로그램이 실행되는 동안 변수의 값은 변경될 수 있지만 상수의 값은 변경될 수 없습니다. 바꿔 말하면, 변수는 변경 가능 값을 가지고 상수는 변경 불가 값을 가집니다.
변수와 상수의 구문
변수 의 구문은 다음과 같습니다.
줄의 처음에 나오는 var 는 변수(variable)를 의미합니다.
상수 의 구문은 다음과 같습니다.
변수와 상수 구문의 유일한 차이는 상수에는 var 가 없고 변수에는 있다는 것입니다.
구문의 구조는 다음과 같습니다.
name |
|
type |
타입 은 변수의 값을 가지고 무슨 작업을 수행할 수 있는지를 설명합니다. 콜론 : 은 이름과 타입을 구분합니다. |
value |
상수의 경우, 값이 변경되지 않습니다. 변수의 경우, 값을 가지고 시작하지만 프로그램 실행 중에 그 값이 변경될 수 있습니다. 이것이 초기 값(initial value) 입니다. 변수의 초기 값을 할당하지 않아도 되지만, 할당하는 것이 좋은 습관입니다. 상수의 값은 반드시 할당해야 합니다. |
식별자
식별자(identifier) 는 프로그래머가 표현식에 부여하는 고유한 이름 입니다.
식별자 와 이름 은 같은 뜻을 가집니다.
명명 규칙
Verse에서 이름을 짓는 데는 규칙이 있습니다. 변수 또는 상수를 생성할 때는 다음 명명 규칙을 지켜야 합니다.
- 변수와 기타 표현식의 이름을 지을 때는 무엇을 하는 변수 또는 표현식인지 최대한 알 수 있도록 짓는 것이 좋습니다.
- 다른 사람이 읽기 쉽고 자신도 기억하기 쉬운 코드를 작성하기 위해서는 변수명을 일관성 있게 짓는 것이 좋습니다.
- 식별자의 첫 글자는 문자 또는 밑줄(_)이어야 합니다.
- 첫 글자 이후의 글자들은 문자, 숫자 또는 밑줄이어야 합니다. 이름에 여러 개의 밑줄을 넣을 수도 있고, 여러 개의 밑줄을 연속으로 넣을 수도 있습니다.
- 변수와 상수 식별자 모두 공백을 포함할 수 없습니다.
- Verse는 대소문자를 구분 하므로, 대소문자를 일관되게 사용하는 것이 좋습니다. 대소문자를 일관적으로 사용하지 않으면 코드에 오류가 발생합니다.
Verse의 명명 규칙에 대한 전체 가이드는 Verse 코드 스타일 가이드 페이지를 참고하세요.
변수 선언하기
변수 또는 상수는 식별자 (이름), 저장할 수 있는 값의 타입, 값 의 세 부분으로 이루어져 있습니다.
var name : type = value
Verse에서는 변수를 선언(declare) 하여 변수를 생성할 수 있습니다. 변수를 선언하려면 식별자, 타입, 값의 세 부분을 모두 작성해야 합니다.
초기화
상수 또는 표현식에 초기 값(initial value) 을 할당하는 것을 초기화(initialization) 라고 합니다. 초기화는 변수 또는 상수를 선언 할 때 필요합니다.
: = 연산자 를 사용해 상수 또는 변수의 값을 초기화할 수 있습니다.
이 연산자를 사용할 때 : 앞에는 이름 이 들어가고, : 과 = 사이에는 타입 이 들어가며, = 다음에는 값 이 들어갑니다.
var Coins : int = 500
상수를 효과적으로 사용하기
코드 내 여러 군데에서 사용되고 변경되지 않는 값이 있다면 상수를 사용하는 것이 좋습니다.
2강에서 배운 리터럴을 기억하시나요? 리터럴은 변경되지 않는 값 입니다. 되도록 리터럴을 적게 사용하는 것이 이상적입니다.
예를 들어 게임에서 플레이어가 코인 100개로 쥐덫을 구매할 수 있다면, 플레이어가 쥐덫을 구매할 때마다 Coins 에서 리터럴(불변) 값 100을 빼도록 코드를 작성해도 되지만, 100 이라는 값을 갖는 상수 CoinsPerMousetrap 을 선언하고 사용하면 더 좋습니다.
CoinsPerMousetrap : int = 100
이렇게 상수를 사용하면 오랜 시간 수정하지 않았던 코드를 수정하러 돌아왔을 때 자신과 동료 모두 코드를 읽기 쉽습니다.
또한 설명 없는 리터럴 값을 사용하는 대신 잘 명명된 상수 를 사용하면 다른 프로그래머가 코드를 이해하기도 더 쉬워집니다.
또 다른 장점은 쥐덫의 가격을 조정하는 등 값을 수정해야 할 때, 값이 사용되는 모든 곳의 코드를 수정하지 않고 상수의 값만 업데이트하면 된다는 것입니다.
가능한 경우 상수에 명확한 이름을 사용하세요. 위 예시에서 CoinsPerMousetrap 은 플레이어가 쥐덫 하나를 구매하는 데 소비하는 코인 개수의 상수라는 것을 명확하게 알 수 있습니다.
변경되지 않는 값이 있다면, 상수에 값을 저장하세요.
변수에 값 할당하기
상수와 달리 변수의 값은 프로그램이 실행 중인 동안 변경할 수 있습니다.
상수를 사용하면 같은 값을 반복해서 입력할 필요가 없어지지만, 변수를 사용하면 어떤 장점이 있을까요?
다른 입력을 기준으로 값을 변경하고 싶을 때가 있습니다.
예를 들어 플레이어가 쥐덫을 구매하면 다음 코드 줄을 사용하여 플레이어가 쥐덫을 사는 데 사용한 코인의 개수를 플레이어가 보유한 총 코인의 개수에서 뺄 수 있습니다.
set Coins = Coins - CoinsPerMousetrap
위 코드를 분석해 봅시다.
일단 set 은 Verse의 기본 키워드 입니다. 키워드 set 은 변수의 값을 변경하는 데 사용할 수 있으므로 이 코드 줄은 Coins 에서 CoinsPerMousetrap 값을 뺀 값으로 Coins 를 변경할 수 있다는 의미입니다.
이렇게 set 을 사용하면 변수의 값만 변경할 수 있습니다. 상수는 set 을 사용하여 변경할 수 없습니다.
Coins 와 CoinsPerMousetrap 은 모두 프로그램에 이미 존재하는 표현식 의 식별자 입니다.
요약
- 변수 와 상수 는 값을 저장 하기 위해 사용됩니다.
- 둘의 주된 차이는 프로그램이 실행되는 동안 상수의 값은 변경될 수 없지만 변수의 값은 변경될 수 있다는 것입니다.
- 변수와 상수는 평가 되었을 때 결과를 도출 하는 표현식입니다.
- Verse에서 변수와 상수는 선언 됩니다. 선언하려면 표현식에 고유한 이름 또는 식별자, 타입, 값 을 부여해야 합니다.
- 표현식에 초기 값을 할당하는 것을 초기화 라고 합니다.