📣 더 깊은 내용이 담긴 '프날 오토핫키 강좌 v2'의 서적판이 공개되었습니다.
가장 최신의 오토핫키를 담은 '프날 오토핫키 강좌 v2'를 책으로 만나보세요!
v2 페이지에 공개된 분량보다 더욱 깊은 내용을 처음이라도 괜찮아, 오토핫키 프로그래밍을 통해 배울 수 있습니다.
전국 온/오프라인 서점에서 만나요!
책 더 알아보기 및 구매하기
[프날 오토핫키] 배열 #3: 단순 배열
1. 전통식과 표현식의 차이를 정확히 아셔야 이해가 원활합니다. 그렇지 않으면 다양한 상황에서 배열을 적용하기가 어렵습니다. 서론에도 언급한 내용이지만, 본격적인 배열 강좌가 시작되었으므로 한번 더 언급드립니다.
단순 배열
이번엔 단순 배열(Simple Arrays)입니다. 기존의 '가짜 배열'의 형태를 진짜 배열의 형태로 쓴 것을 말하는데, 가짜 배열과 유사하게 1, 2, 3번의 순서를 가지고 있습니다. 이제부터 진짜 배열이기 때문에 배열과 관련된 문법을 아셔야합니다. 이번 강에선 단순 배열을 이용하여 배열을 선언하고 사용하는 방법부터 알아보도록 하겠습니다. 또한, 배열에 쓸 수 있는 각종 함수 또한 알아보도록 하겠습니다.
1. 선언
단순 배열은 가장 단순한 형태의 배열입니다. 오토핫키에서 배열을 사용하기 위해선 선언 과정이 먼저 이루어져야 하는데, 아래와 같이 대입 연산자를 사용하여 단순 배열을 선언할 수 있습니다.
array := []
이 구문은 array라는 이름의 배열을 선언하는 구문인데, 여는 대괄호를 써준 후 닫는 대괄호를 곧바로 써주었습니다. 이제 이 배열에 값을 하나씩 넣을 수 있습니다.
배열을 설명하는덴 그림만한게 없죠. 원래 배열은 아래와 같이 수량이 정해져있는 자료 구조입니다.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
위 표와 같이 배열은 컴퓨터 상에서 순차적으로 연결된 기차 모양을 띠고 있고, 10칸이면 10칸, 100칸이면 100칸과 같이 연결된 항목의 수가 정해져 있습니다. 그러나 오토핫키의 배열은 편리하게 쓸 수 있도록 수량을 정하지 않아도 쓸 수 있습니다. 필요한만큼 오토핫키가 늘려서 쓰고 그러기 때문에, 배열을 선언할 땐 배열의 크기가 들어가지 않습니다.
2. 할당 (인덱스와 요소 설명)
프로그래밍에서 순서를 매길 때 쓰는 숫자를 '인덱스'라고 부릅니다. 반복문도 순서를 셀 수 있기 때문에 A_index라는 내장변수에 인덱스가 담겨있는 것이고, 단순 배열 또한 이런 인덱스를 이용하여 각 항목에 접근할 수 있습니다.
배열에서 각 항목을 '요소'라고 부릅니다. 단순 배열에서 인덱스와 요소는 일대일 대응 되겠지요. 예를 들어서 1번 인덱스의 요소는 "가", 2번 인덱스의 요소는 "나"일수가 있습니다.
인덱스: 순번
요소: 배열의 항목
오토핫키는 인덱스가 1부터 시작하는 언어이고, 따라서 배열의 첫번째 인덱스에 어떤 요소를 할당하려면 아래와 같이 쓰면 됩니다.
array[1] := 값
일반적인 변수 대입과 똑같죠? 차이가 있다면 배열의 몇 번째 항목에 해당 값을 넣을지 인덱스를 표시해주었다는 것입니다. 이 대괄호([]) 또한 연산자의 한 종류인데, '배열 인덱스 연산자' 혹은 '첨자 연산자' 라고 합니다. 두 대괄호 사이에 인덱스를 넣어주면, 배열의 해당 인덱스에 접근할 수 있습니다. array[10]은 10번째 요소를 가리키겠죠.
선언과 동시에 할당할 수도 있습니다. 배열에 여러 항목을 한 번에 할당할 땐 콤마(,)를 이용하는데, 콤마를 써서 아래와 같이 선언과 동시에 할당하는 방법이 있습니다.
arr := [2, 4, 6, 8, 10]
arr[1]은 2, arr[2]는 4, arr[3]은 6의 값을 가지게 될 것입니다. arr[4]와 arr[5]또한 각각 8, 10의 값을 가질 것입니다. 아직까지는 쉽죠? MsgBox로 출력해봅시다. 이전 강에서 언급했듯, 배열은 표현식에서 쓸 수 있는 문법이기 때문에 (퍼센트 기호 + 공백)으로 표현식 처리를 해준 후 사용할 수 있습니다.
arr := [2, 4, 6, 8, 10]
MsgBox, % "배열의 첫번째 요소: " arr[1] ", 배열의 두번째 요소: " arr[2]
표현식에서 문자열은 따옴표로 써주고, 이외엔 그냥 써주는 것 알고 계시죠? (이래서 제가 표현식, 전통식 개념을 정확히 알고 배열을 공부해야한다는 것입니다.) 위 예시에서 볼 수 있듯 문자열만 따옴표로 감싸주었습니다. 문자열과 다른 요소 사이엔 무조건 1칸 이상의 띄어쓰기가 있어야합니다. 사실 이 예제가 표현식의 가장 기본적이자 결정적인 예시라고 할 수 있겠네요.
잠시 다른 길로 샜는데, 이런 식으로 배열을 써줄 수 있습니다. 아무튼 배열은 표현식 문법이기 때문에, 항목이 문자열이라면 아래와 같이 따옴표 처리를 해서 할당해주어야합니다.
var := 123
arr := ["문자열1", "문자열2", var, 123]
여러 유형의 값을 넣어보았는데, 문자열에는 따옴표 표시를 해주었음을 알 수 있습니다. 또한 세 번째 항목은 var변수를 이용한게 보이시죠? 변수는 표현식에서 %표시를 하지 않습니다. 따라서 그냥 써주었습니다. 네 번째 항목의 숫자도 역시 그냥 써주었습니다.
[]는 연산자이기 때문에 그 사이는 당연히 표현식입니다. 애초에 배열은 전부 표현식 문법이라고 했죠. 그러니까 아래와 같이 변수가 들어갈 수도 있겠네요.
index := 3
MsgBox, % arr[index]
이를 이용하여 단순 배열을 순차탐색 해보겠습니다. Loop를 이용하여 말이지요! 길이가 5인 배열을 순차적으로 탐색해본 후, 배열 안에 있는 숫자의 총 합을 구하는 스크립트를 준비해보았습니다.
arr := ["가나다", 10, "라마바", 38, 89]
Loop, 5
{
sum += arr[A_index]
}
MsgBox, % sum
감이 오시나요? 그럼 간단한 문제 하나 올리고 단순 배열 강좌를 마치겠습니다.
arr := [1, 2, 4, 5, 6, 7, 8, 9]
배열에 값을 입력했는데, 세 번째 요소부터 값이 1씩 밀렸네요. 3, 4, 5...처럼 대입되어야하는데, 3을 깜빡하고 4부터 넣은 모양새가 되었습니다.
반복문을 이용해서 3번째 요소부터 8번째 요소를 3~8로 수정해보세요. 정답은 스크립트로 제공합니다.
⚠ 이 강좌는 오토핫키 v1을 다룹니다
지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.