안녕하세요 바람처럼 입니다~ 오랫만에 프렙 강좌로 찾아뵙는군요~^^
오늘은 프렙에서 가장 아쉬운 기능중에 하나인 변수를 확장하여
고정변수가 아닌 다이나믹하게 변하는 변수 및 배열 구현법에 대해서 알아보겠습니다...
1. 변수의 정의
우선 변수의 정의부터 알아보자면, 정의된 값이 다양하게 변하는 (혹은 변할수 있는) 매개체라고 할수 있습니다.
즉, 고정된 상수값이 아니라 필요와 용도에 따라 그 값을 마음껏 재정의 할수 있다는 뜻이죠.
프렙에서 변수는 Number, Rectangle, String 3가지 타입을 갖고 있으며
변수명 = 타입 : 값 의 형태로 정의됩니다.
예를 들자면, var1 = num:35 / var2 = str:"abc" / var3 = rect:(1 2 3 4) 의 형식입니다.
여기서 변수명은 고정값입니다. 따라서 이 값은 프렙구문에 명확히 지정해야 하며 다른값으로 대체할 수 없습니다.
대부분의 프로그래밍 언어에서도 변수명은 대체하거나 변경할 수 없도록 되어 있습니다만
간혹 오토핫키 같은 일부 언어에서는 다이나믹 변수, 즉 변수명 자체를 대체할 수 있는 기능을 지원합니다.
사실 다이나믹 변수는 프로그래밍 관점에서 권장되는 기능은 아닙니다만, 간혹 필요한 경우가 있습니다.
예를 들자면, 학년-학급-번호=이름으로 구성된 데이터가 있다고 할 때
2학년의 모든 30번 이름을 알기 위해서는 2학년-1반-30번, 2학년-2반-30번, 2학년-3반-30번... 처럼
일일이 해당하는 학년-학급-번호을 모두 입력해서 값을 읽어와야 합니다.
다이나믹 변수를 사용한다면 간단하게 루프를 돌려, 2학년-%학급%-30번 처럼 쉽게 해결할 수 있습니다.
사실 이런경우 다이나믹 변수의 사용을 피하기 위해 클래스나 오브젝트 혹은 하다못해 배열을 사용하곤 합니다만
아쉽게도 프렙은 그 모든것들중 지원하는 것이 아무것도 없다보니 어쩔수 없이 만들어 써야겠습니다~^^;;
2. 다이나믹 변수의 구현
다이나믹 변수의 구현원리는 간단합니다. 컴퓨터가 변수를 메모리에 보관하여 관리 하듯이
우리도 별도의 메모리 영역을 만들어 변수를 보관하는 방식입니다.
이를 위해 우리는 DynVar 라는 이름의 String 형식의 변수를 만들어 메모리로 이용합니다.
최초 이 변수의 정의는 간단합니다.
DynVar = str : ""
이렇게 정의된 영역에 우리가 사용할 변수들을 지정하여 읽기/쓰기/교체를 구현할 수 있습니다.
변수의 구성은 일반적인 형식을 따라 key = val 의 구성으로 이루어 집니다.
먼저 변수를 정의하기 위해 key 값과 val 값을 지정합니다.
key = str : "2학년-1반-1번"
val = str : "홍길동"
그런다음, 이 값을 저장합니다. 먼저, 같은 값이 있는지 확인해 봐야겠죠?
만약 해당 변수가 없으면
새로운 값을 우리가 지정한 영역에 써줍니다.
만약, 기존에 정의된 값이 있다면 값을 교체합니다.