비주얼 베이직 강좌 5편. 변수
1. 변수
변수(Variable)란 무엇일까요? 이미 아시는 분들도, 모르시는 분들도 있겠지만 변수는 데이터를 담을수 있는 메모리 공간을 의미합니다. 데이터를 어느 한곳에 저장하여 이것을 참조할때 사용됩니다.
변수를 선언하는 방법은 아래와 같습니다:
Dim 변수명 As 데이터 형식
보시면 Dim 키워드를 사용해 변수를 선언할 수 있으며, 변수명은 말그대로 변수에 붙여지는 이름이며 데이터 형식은 변수에 담길 데이터의 형식을 말합니다.
아래를 보시면 데이터형을 간단하게 표로 정리하였습니다.
그런데 왜 데이터형이 필요할까요? 데이터 형을 사용하면 데이터를 쉽게 관리할수 있고 메모리 낭비를 줄일 수 있습니다. 예를 들어서 100이란 숫자를 담기위해 우리는 Byte형, Variant형 둘다 사용할 수 있습니다. 하지만 크기를 보면 각 1바이트, 16바이트로 메모리 공간의 차이가 나며 똑같은 데이터를 기억시키나 15바이트의 메모리 낭비가 발생합니다. 이 메모리 낭비를 줄이기 위해서는 적절한 데이터형을 선택하여 사용할 필요가 있습니다.
이제 직접 변수를 선언하여 간단한 프로그램을 만들어 봅시다.
2. 변수 선언
비주얼 베이직 6.0을 열어 프로젝트를 만들기 전에, 변수의 이름을 지정 시 규칙을 지켜야 합니다. 규칙은 다음과 같습니다.
1. 변수의 이름은 256자 이상 넘어갈 수 없습니다.
2. 영문, 숫자, 언더바(_)만 사용이 가능합니다.
3. 첫 문자에 숫자가 올 수 없습니다.
4. 키워드와 같은 이름을 사용해서는 안됩니다.
5. 대소문자를 구분하지 않습니다.
마지막으로, 변수는 사람들이 이해하기 쉽도록 지정해야 합니다. 이해하기 쉬운 변수명은 가독성을 높여주며, 변수의 용도를 쉽게 파악할 수 있어 많은 도움이 됩니다.
이제 폼 디자인은 제껴두고 코드 편집창으로 가봅시다.
그리고 코드를 작성해봅시다.
Private Sub Form_Load()
Dim A As Integer 'A라는 이름으로 정수형 변수 선언
Dim B As Integer 'B라는 이름으로 정수형 변수 선언
Dim Result As Integer 'Result라는 이름으로 정수형 변수 선언
A = 1000 'A에 1000 값을 대입시킴
B = 2471 'B에 2471 값을 대입시킴
Result = A + B 'A와 B를 합한 결과를 Result에 대입시킴
MsgBox "A + B = " & Result '메세지 박스로 A와 B를 합한 값인 Result의 값을 출력시키게 함
End Sub
이제 결과를 확인해보면 3471 이라는 결과를 확인하실 수 있습니다. 대충 감이 잡히시나요?
이번에는 이름과 나이를 변수에 대입하여 메세지 박스에 띄워봅시다.
Private Sub Form_Load()
Dim Name As String '문자열 변수 Name 선언
Dim Age As Integer
Name = "홍길동" '문자열 변수 Name에 홍길동이란 값 대입
Age = 17
MsgBox "제 이름은 " & Name & "이고, 나이는 " & Age & "살 입니다."
End Sub
그리고 F5를 눌러 결과를 확인해보면, "제 이름은 홍길동이고, 나이는 17살 입니다." 라는 메세지 박스가 등장할 것입니다. 예상대로 잘 출력이 됬다면 다음으로 넘어갑시다.
마지막으로 Double형을 사용하여 소수끼리 계산하는 프로그램을 만들어 봅시다.
Private Sub Form_Load()
Dim A As Double
Dim B As Double
Dim Result As Double
A = 212.4171
B = 6911.643
Result = A + B
MsgBox "A + B = " & Result
End Sub
이제 다시 결과를 확인해보시면 'A + B = 7124.0601'이라는 결과를 확인하실 수 있게됩니다.
갑자기 서로 다른 데이터형끼리의 합은 어떻게 결과가 나올지 궁금하지 않나요? B의 데이터형을 정수형(Integer)으로 A와 Result는 배정도 부동 소수점(Double)으로 두고 다시 F5를 누릅시다.
아까와는 결과가 다르죠? 아까의 답이 7124.0601이라면 이번에는 7124.4171이 나왔습니다.
어떤분들은 이미 눈치채셨을지 모르지만, B의 데이터형을 정수형으로 지정했고 6911.643이란 값을 대입했습니다.
여기서 우리가 알고있는 정수(Integer)형은 소수를 담기에 적합한 자료형이 아닙니다. 0.643의 데이터 손실이 일어나고, 6911이 B에 저장됩니다. 그러므로 212.4171과 6911을 더한 7424.4171이 나온 것입니다.
3. 형 변환 함수
프로그램을 작성하다 보면 강제 형변환이 필요한 경우가 가끔 있는데, 여기서 '형 변환 함수'를 사용하면 그 데이터의 데이터형이 강제로 변환됩니다. 형 변환 함수엔 어떤것이 있는지 살펴보겠습니다.
함수 |
기능 |
함수 |
기능 |
CBool |
Bool형으로 형 변환 |
CSng |
Single형으로 형 변환 |
CByte |
Byte형으로 형 변환 |
CDbl |
Double형으로 형 변환 |
CCur |
Currency형으로 형 변환 |
CStr |
String형으로 형 변환 |
CDate |
Date형으로 형 변환 |
CVar |
Variant형으로 형 변환 |
CInt |
Integer형으로 형 변환 |
CVErr |
사용자 정의 오류번호 반환 |
CLng |
Long형으로 형 변환 |
다 살펴보셨으면, 직접 우리가 형변환 함수를 사용해봅시다.
Private Sub Form_Load()
MsgBox "CInt(1111.44): " & CInt(1111.44) '1111.44 -> 1111
MsgBox "CInt(123.5678): " & CInt(123.5678) '123.5678 -> 124 형 변환시 반올림이 일어남
MsgBox "CInt(""abc""): " & CInt("abc") '오류 발생. 문자열을 정수로 형변환이 불가능합니다.
MsgBox "CInt(32768): " & CInt(32768) '오버플로우 발생. Integer형의 범위를 넘음.
End Sub
모듈을 하나 만들고 모듈 상단 선언부에,
Public Number As Integer
그리고 다시 폼1의 코드 편집창으로 들어와 다음과 같은 코드를 작성합니다.
Private Sub Command1_Click()
Number = Number + 100
MsgBox "Number의 값은 " & Number & "입니다."
End Sub
사용 예:
Private Sub Form_Load()
Dim A As Integer
Dim B As Integer
A = 2000
B = 10
MsgBox "A + B = " & A + B 'A와 B를 합한 값 2010이 나옴
MsgBox "A - B = " & A - B 'A에서 B를 뺀 값 1990이 나옴
MsgBox "A * B = " & A * B 'A와 B를 곱한 값 20000이 나옴
MsgBox "A / B = " & A / B 'A를 B로 나눈 값 200이 나옴
MsgBox "A Mod B = " & A Mod B 'A를 B로 나눈 나머지 값 0이 나옴
MsgBox "A \ B = " & A \ B '정수 A를 정수 B로 나눈 값 200이 나옴
MsgBox "A ^ B = " & A ^ B '1.024E+33 'A를 B번 곱함. 계산범위 초과.
End Sub
이번엔 비교 연산자에 대해서 알아보도록 하겠습니다. 비교 연산자는 앞에서 말했듯이 대소 관계를 비교할때 사용됩니다. 연산 결과는 참(True)과 거짓(False)로 나뉩니다.
사용 예:
Private Sub Form_Load()
Dim A As Integer
Dim B As Integer
A = 200
B = 10
MsgBox "A <> B And A > B = " & (A <> B And A > B) 'A와 B가 다르고 A가 B보다 크므로 True를 반환
MsgBox "Not A > B = " & (Not A > B) 'A가 B보다 크므로 True를 반환해야 하나 부정으로 False 반환
MsgBox "A > B Or A < B = " & (A > B Or A < B) 'A가 B보다 크거나 B가 A보다 크면 True를 반환
MsgBox "A > B Xor A < B = " & (A > B Xor A < B) '두 조건식 중 하나만 참일 경우에 True를 반환
MsgBox "A > B Eqv A > B = " & (A > B Eqv A > B) '두 조건식이 같으면 True를 반환
End Sub
'프로그래밍 관련 > 비주얼 베이직' 카테고리의 다른 글
비주얼 베이직 강좌 7편. 콤보 박스 (4) | 2012.07.01 |
---|---|
비주얼 베이직 강좌 6편. 리스트 박스 (4) | 2012.07.01 |
비주얼 베이직 강좌 4편. 레이블과 텍스트 박스 (16) | 2012.06.21 |
비주얼 베이직 강좌 3편. 폼 추가 (5) | 2012.06.20 |
비주얼 베이직 강좌 2편. 둘러보기 (7) | 2012.06.20 |