Limetime's TimeLine
article thumbnail
Published 2018. 5. 26. 12:20
(11) 배열 Visual Basic
반응형

(11) 배열

※ 배열 : 같은 자료형을 갖는

여러 개의 데이터를 하나의 변수

이름으로 모아놓은 데이터의 집합

(변수를 일일히 선언하는

불상사를 해결하기 위함.)

★ 배열은 반복문과 자주 쓰인다.


<배열의 종류>

ㆍ첨자의 개수 : 1차원, 2차원, ㆍㆍㆍ, N차원 배열

ㆍ배열의 크기 결정 시기 : 정적ㆍ동적 배열


<변수와 배열>

Dim name0 As integer

Dim name1 As integer

Dim name2 As integer

...

Dim name49 As integer


name0 = 0

name1 = 1

...

name49 = 49


print name0

...

print name49

Dim i As Integer

Dim name(49) As Integer


For i = 0 To 49

name(i) = i

Next i


For i = 0 To 49

Print name(i)

Next i


<선언 형식>

※ 첨자 = 배열 크기

① {Dim|Private|Public|Static} 배열명(첨자) As 자료형

② {Dim|Private|Public|Static} 배열명(시작첨자 To 종료첨자) As 자료형


Dim Arr(1 To 30) As String : 배열 크기 = 30, 첨자 범위 : 1~30

Dim Arr(30) As String : 배열 크기 = 31, 첨자 범위 : 0~30


ㆍ다차원 배열

: 배열은 첨자의 개수에 따라

일차원 배열, 이차원 배열, 삼차원 배열 등으로

구분한다.

일반적으로 이차원 이상의 배열을

다차원 배열이라고 한다.

(N차원 배열 = N개의 첨자를 사용)

※ 이차원 배열과 삼차원 배열을 볼 것


① 2차원 배열

: 행과 열을 지시하는 두 개의 첨자를 사용

※ 행(가로), 열(세로) !!!!

① Dim 배열명(배열크기(), 배열크기()) As 자료형

② Dim 배열명(시작첨자 To 끝첨자, 시작첨자 To 끝첨자) As 자료형


Dim Arr(4, 5) As String

배열 크기 : 30, 첨자 범위 : 행(0~4), 열(0~5)

Dim Arr(1 To 4, 1 to 5) As String

배열 크기 : 20, 첨자 범위 : 행(1~4), 열(1~5)


Dim 알파벳(6) As String

알파벳(3) = "X"

For i = 0 To 7

알파벳(i) = Chr(65+i)

Next i


Chr은 아스키코드를 

문자열로 변환하는 함수

(ASCII 코드 65번은 'A')


② 3차원 배열

: 행과 열을 포함해 하나의 첨자가

더 합해짐 (3개의 첨자)

Dim Arr(2,2,2) As Integer

※ 큐브(정사각형) 모양이 절대 아님

그냥 3행, 3열인 2차원 배열이

3판 겹쳐져있는 것.


Dim Arr(1,1,1) As integer

0~1 행, 0~1 열, 0~1 판


ㆍ배열의 종류

① 고정 배열 (정적 배열)

: 한번 배열의 크기가 결정되면 변경 불가


<정적 배열의 선언>

Dim 배열명(배열크기) As 자료형

Dim Arr(4) As Integer



② 동적 배열

ㆍ배열의 크기를 상황에 맞게 조절 가능

ㆍ배열의 크기가 프로그램 실행 중에 결정


<동적 배열의 선언>

{Dim|Private|Public|Static} 배열명() As 자료형

동적 배열은 크기가 상황에 맞게

조절되기 때문에 배열의 크기(첨자)를

비우고 선언한다.

Dim Arr() As Integer


<ReDim 문>

ㆍ실제 메모리가 할당되는 시점을 표시

ㆍ프로시저 안에서만 사용 가능

ㆍ배열 안에 이미 저장된 값은 보존되지 않음

=> Preserve를 사용하여 보존 가능

<동적 배열의 재지정>

ReDim [Preserve] 배열명(크기) As 자료형

Redim문을 사용하여 배열의 크기를

재정의하면 기존의 배열에 저장되어 있던

값이 초기화된다.

=> 값을 유지하고 싶으면서 크기만

변경하려면 ReDim Preserve문을 

사용하면 된다.

Dim arr() As Integer

메모리가 할당되지 않음

=> arr은 정수형 동적 배열

ReDim arr(2) As Integer

배열 arr의 크기는 3이다.

첨자 범위는 0~2이다.

For i = 0 To 2

arr(i) = i

next i

배열에 값을 할당

arr(0) = 0

arr(1) = 1

arr(2) = 2

ReDim arr(5) As Integer

For i = 3 To 5

arr(i) = i * 10

Next i

이전의 배열에 들어있던

값들이 초기화 되어 버림.

그리고 배열에 값을 할당

arr(3) = 30

arr(4) = 40

arr(5) = 50

ReDim Preserve arr(7) As Integer

ReDim Preserve 문을 사용하여

이전 배열의 값이 보존되었다.

그리고 arr(6), arr(7)이 추가되었다.


③ 컨트롤 배열

ㆍ이름과 종류는 같고 인덱스로

구분되는 컨트롤의 집합

ㆍ프로그램 코드상에서 좀 더 편리하게 관리


<컨트롤 배열 만들기>

ㆍ방법1 : 컨트롤의 첨자(index) 속성 값을

설정한 후에 컨트롤의 이름을

기존의 컨트롤과 동일하게 부여한다.

ㆍ방법2 : 기존의 컨트롤을 복사하여

순서대로 붙여넣는다. (권장)


방법1. 수동으로 컨트롤 배열 만들기

컨트롤을 끌어서 폼 위에 배치하자.

두 개의 명령 버튼은 엄연히 다르다.


이제 둘 다 배열 Command1에

속하게 해보자.

Command1의 속성에서

Index 속성을 보면 비어있는데

여기에 배열 첨자를 입력하자.

0을 입력하면 Command1(0)

이렇게 표시된다.


Command2에서

(이름) 속성을 Command1로 바꾸면

자동으로 Command1(1)로 

Index 속성이 추가된다.


이렇게 컨트롤배열이 생성된다.


방법2. 자동으로 컨트롤 배열 만들기

컨트롤을 하나 폼위에 배치하고

배치한 컨트롤을 복사 후 붙여넣기 하면

배열을 만들 수 있다.


예를 눌러주면 컨트롤 배열이 작성된다.

복사 후 붙여넣기된 컨트롤 배열은

원본의 속성을 그대로 가지고 간다.






















반응형
profile

Limetime's TimeLine

@Limetime

포스팅이 좋았다면 "공감❤️" 또는 "구독👍🏻" 해주세요!