응 아니야


프로그래밍에 없어서는 안될 배열에 대해서 알아보겠습니다. 배열이란 말은 우리 실생활에서도 쉽게 들어봤습니다. '아이스크림을 사와서 냉장고에 차곡차곡 쌓았다.'가 바로 배열입니다.



편지지에 제목을 쓰면 1차원 배열, 내용도 쓰면 2차원 배열, 여러장을 쓰면 3차원 배열이 됩니다. 3차원 배열은 2차원 배열의 배열이고, 2차원 배열은 1차원 배열의 배열입니다.



컴퓨터에서는 우리가 익히 배워온 엑셀이나 표(table)가 바로 배열의 사용예입니다. 보통 3차원배열까지 가지 않고 2차원 배열까지만 하기도 합니다.

순번, 중매, 사입, 물자, 물량, 금액, 총액은 1차원배열, 1 2 3 4 5 6 7 8 9 10 11 합계로부터 오른쪽 끝까지는 2차원 배열이 되겠네요.



여기서 알아둬야할 점은, 우리는 3차원 세계에 살고있어서 더 높은 다차원 세계를 상상할 수 없(?)지만, 컴퓨터의 배열에는 한계가 없어서 4차원, 5차원 6차원을 넘어 n차원 배열도 가능합니다. 주의할점도 추가로~ 배열을 사용하면 편하고 좋지만, 배열에 넣어야할 자료가 많으면 많을수록 양과 비례해 엄청난 렉을 동반할 수 있습니다...


배열을 할때 변수나 요소의 이름뒤에 괄호를 열고 배열 index의 최대값을 쓰고 괄호를 닫거나, 괄호를열고 최소값 to 최대값을 쓰고 괄호를 닫는 방법이 있습니다. 차원의 구분은 쉼표로 합니다.


전자인 최대값만 쓰는 경우에는 인덱스가 0부터 시작하므로, [dim 변수이름(9) as 자료형]이라고 썼을 경우 0~9까지의 10개의 자료를 담을 수 있는 저장공간인 1차원 배열이 선언됩니다. 후자인 최소값 to 최대값을 쓰는 경우에는 최소값 ~ 최대값까지의 1차원 배열이 선언됩니다.



Dim 영차원배열변수 As Byte

영차원배열변수 = "이 다음 텍스트는 개행됩니다." & vbcrlf & "다음줄입니다." ' vbcrlf = 개행

msgbox 영차원배열변수, vbinformation, "알림"

이전 변수 장에서 변수에 담을 내용은 자료형이 허용하는 범위만큼이라 말씀드렸습니다. 그래서 배열로 선언된 변수에 띄어쓰기나 엔터가 들어갈 수 있죠. 참고바랍니다.


Dim 일차원배열변수(9) As Byte ' 0~9
Dim 이차원배열변수(9, 9) As Byte ' 0~9, 0~9

Dim 삼차원배열변수(0 to 9, 10 to 19, 20 to 29) as byte ' 0~9, 10~19, 20~29


비주얼 베이직에서 배열은 변수뿐만 아니라 요소에도 사용할 수 있습니다. 요소에 대입할 값은 같은데 여러개의 요소가 필요한 경우 사용할 수 있습니다.

예를들어보겠습니다. 모두 10개의 텍스트박스에 a라는 문자를 대입하고자 합니다. 이때 배열 없이는 아래와 같이 소스를 작성해야만 합니다.




하지만 이전 강좌에서 배웠던 반복문과 변수, 이번강좌의 내용인 배열을 사용하면 편리합니다.



방법은 요소의 속성창에서 요소의 이름(name)을 모두 똑같이 바꾸는겁니다


이때 비주얼베이직은 이렇게 묻습니다. 컨트롤 이름중에 이미 s 라는 이름이 있다. 요소를 배열(array) 시킬거냐?


예 눌러주시면 됩니다.



그러면 이미 s로 만들었던 요소부터 마지막으로 바꾼 요소까지의 이름인 s에 괄호와 배열순번이 붙습니다. 이렇게 요소에 배열이 선언되면 나머지 요소들의 이름을 다 똑같이 만들고나서 아래처럼 하시면 됩니다.



해석하자면 이렇습니다.


반복문인 i라는 변수에 0을 대입합니다.

s(0)라는 이름의 요소의 텍스트에 a라는 문자를 대입합니다.

다음수로 반복합니다.

반복문인 i라는 변수에 1을 대입합니다.

s(1)라는 이름의 요소의 텍스트에 a라는 문자를 대입합니다.

다음수로 반복합니다.

반복문인 i라는 변수에 2을 대입합니다.

s(3)라는 이름의 요소의 텍스트에 a라는 문자를 대입합니다.

다음수로 반복합니다.

...

..

.

공유하기

facebook twitter kakaoTalk kakaostory naver band