Visual Basic, C & C++
분류 Visual Basic

비주얼 베이직 문법 시작

페이지 정보

본문

비주얼 베이직 문법 시작

 

1. 변수


데이터 형식(관계나 범위) 안에서 임의의 값이 변할 수 있는 수를 변수라고 한다.
프로그래밍 소스안에서 변수를 선언하여 사용할 수 있다.
변수를 사용하는 이유는 값을 임시로 저장하거나 값을 읽어 오기 위해서 사용한다.


형식 : Dim 변수명 AS 데이터형식


< 사용 예 >
Private Sub Command1_Click()
Dim Tootal as Integer
Total = 10 + 30
End Sub

 

Total 은 변수명이고 Integer(-32,768~32,767)는 데이터 형식으로 정수형을 나타낸다.
10과 30을 더한 값 40이 Total 변수에 들어간다.


수학에서  사칙연산(+, -, ×, ÷)을 이용하여 계산할 경우 다음과 같이 사용한다.

2 × 3 = A


프로그래밍 언어에서는 계산된 결과값을 저장하기 때문에 저장할 변수가 왼쪽에 있어야한다.
그러므로 다음과 같은 형식으로 사용한다.


A = 2 * 3


수학에서는 '=' 기호는 '같다' 또는 '동등하다' 라는 의미로 사용하지만 프로그래밍 언어에서는 2 * 3한 결과값을 A라는 변수에 '저장한다'라고 한다.
결국  A에는 2와 3을 곱한 결과값인 6을 저장한다.


◇ 올바른 변수명 사용하기


변수명은 자유롭게 사용할 수 있는 편이지만 비주얼 베이직에서 제안하고 있는 규칙은 다음과 같다.


* 변수명은 256자를 넘으면 안된다.
* 변수명은 문자인 경우에 한글, 영문자, 숫자, 밑줄(_)을 사용할 수 있고 특수 기호는 사용할 수 없다.
* 비주얼 베이직에서 사용하는 예약어(Sub, End, Long, Beep 등)로 변수명을 사용할 수 없다.
* 변수명의 첫 번째 문자는 반드시 영문자나 한글만을 사용해야하고 기호나 숫자등은 사용할 수 없다.

 

<사용 예>
올바른 변수


Dim My_Str As String
Dim 이름 As String
Dim A1 As String


올바르지 않은 변수형


Dim Str* As Integer
Dim Str? As Integer
Dim 4카 As String
Dim End As String
Dim _Start As String

 

변수명을 올바르게 사용하지 않으면 빨간색으로 바뀌면서 에러 메시지가 화면에 나타난다.


2. 상수 ( Constant )


상수는 한번 선언하면 데이터값을 변경할 수 없는 수를 말한다.
상수를 선언할 때 사용되는 모듈 레벨에 따라 Public 문과 Private 문을 제한적으로 사용할 수 있다.
만약, Const 앞에 Public 이나 Private 를 생략하면 Private 로 자동으로 설정된다.


형식 : [Public | Private ] Const 상수명 [As 데이터타입] = 데이터값

 

모듈레벨에 대한 설명이다.


일반적인 구역 : Private문만을 선언하여 사용할 수 있다.
표준모듈 : Public 문이나 Private 문을 선언하여 사용할 수 있다.
클래스 모듈 : Private 문만 선언하여 사용할 수 있다.

 


상수를 여러 개 설정하는 경우에는 콤마(,)를 이용해 나열할 수 있다.


<작성 예>


Const My_NUMBER = 777
' Private Double 상수를 선언한다.
Private Const PI As Double = 3.1415
' Public Const My_VB = "비주얼 베이직"
' 한줄에 여러 상수를 선언한다.
Const My_Number As Integer = 777, My_VB = "베이직"

 

○ 상수로 선언된 상수명은 일반적으로 대문자를 사용한다.
그 이유는 변수와 상수를 구분하기 위해서이다.
꼭, 상수명을 대문자로 하지 않아도 프로그램 수행에는 문제없지만 구분되어 사용하면 코딩이 편리하다.

 

상수로 선언한 PI의 값을 변경한다면 에러 메시지가 나타난다.


Private Const PI As Double = 3.14159
Private Sub Command1_Click()
PI = 100
Label1.Caption = PI
End Sub

 

'컴파일 오류입니다. 상수지정을 할 수 없습니다.' 라는 에러 메시지가 나타난다.


3. Enum 문


Enum 문은 비슷한 유형을 가진 상수를 묶어서 이용하는 경우에 사용된다.
[상수값]을 생략하는 경우에는 첫 번째 선언된 상수값이 0이 되고 다음 상수부터는 1씩 증가한 값이 [구성요소 이름]에 자동으로 들어간다.

 

(형식) :
[Public | Private] Enum 이름
        구성요소 이름 [= 상수값]
                 .
                 .
        End Enum

 


Enum 문을 이용하여 상수값을 다음과 같이 선언했을 경우 유의할 사항이 있다.

 

Enum 번호
신문섭
김을동 = 2
이우동
End Enum


'신문섭' 에는 상수값이 0이 되지만 '김을동'의 상수값이 2로 되어있기 때문에 '이우동'은 '김을동'의 상수값에 1이 증가한 3이 된다.


예제의 소스는 다음과 같다.


Enum 번호
신문섭
김을동 = 2
이우동
End Enum

Private Sub Command1_Click()
Dim num As 번호

num = 신문섭
Label1.Caption = num

num = 김을동
Label2.Caption = num

num = 이우동
Label3.Caption = num
End Sub

 

◎ Label1 은 0이 출력되고 Label2 는 2가 출력되고  Label3 은 3이 출력된다.

 

Enum 번호
신문섭
김을동 = 2
이우동
End Enum

Private Sub Command1_Click()


Label1.Caption = 번호.신문섭


End Sub

 

4. 주석문


주석문은 코딩을 한  후 소스를 쉽게 이해하기 위해서 사용한다.
어퍼스트로피(')기호나 Rem 문을 이용하여 주석을 포함시킬 수 있다.


* 어퍼스트로피(')기호를 사용하여 주석을 포함한 예


<작성 예>


'-------------------------
'--------   주석문    -------             
'--------------------------


' 명령 버튼을 누르면 수행된다.
Private Sub Command_Click()
' A변수와 B변수를 선언한다.
Dim a, b As Integer
a = 10: ' a 변수에 10값을 넣는다.
b = 20: ' b 변수에 20값을 넣는다.


' 라벨 컨트롤에 A와 B를 더한 값을 출력한다.
Label1.Caption = a + b


End Sub

 

* Rem 문을 사용하여 주석을 포함한 예


Rem --------------------
Rem ----   주석문   --------
Rem ---------------------


Rem 명령 버튼을 누르면 수행한다.
Private Sub Command_Click()
Rem A 변수와 B 변수를 선언한다.
Dim a, b As Integer

 

a = 10: Rem a 변수에 10값을 넣는다.
b = 20: Rem b 변수에 20값을 넣는다.


Rem 라벨 컨트롤에 A 와 B를 더한 값을 출력한다.
Label1.Caption = a + b


End Sub


주석문을 소스에 써넣는 일은 어쩌면 귀찮은 일일지도 모른다.
귀찮다고 주석문을 쓰지 않는다면 오래전에 만들었던 소스를 이해하지 못하는 일이 생긴다.
또한 프로젝트를 할 경우에는 다른 프로그래머가 그 소스를 이해하지 못하는 어려움이 있어 불편함을 느낄 수 있다.
습관이라는 것은 매우 중요한 것이니 주석문을 쓰는 습관을 갖도록 하자.

 

5. 데이터 형식


데이터 형식(Data Type)은 사용할 변수의 범위를 설정하기 위해서 사용한다.
데이터 형식을 지정하면 범위안에 해당하는 숫자, 부동소수점, 문자열 등을 처리할 수 있다.
비주얼 베이직에서 사용하는 데이터 형식은 다음과 같다.


데이터 형식 : 바이트 수 : 사용범위


Byte : 1 : 0 ~ 255
Boolean : 2 : 부울값 (True, False)
Integer : 2 : -32,768 ~ 32,767
Long : 4 : -2,147,483,648 ~ 2,147,483,647 까지
Single : 4 : -3.402823E38 ~ -1.401298E-45까지(음수값)
                1.401298E-45 ~ 3.402823E38까지 (양수값)
Double : 8 : -1.79769313486232E308 ~ -4.94065645841247E-324 까지(음수값)
                 4.94065645841247E-324 ~ 1.79769313486232E308 까지 (양수값)
Currency : 8 : -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807
Decimal : 14 :  +/-79,228,162,514,264,337,593,543,950,335(소수점이하 없음),
                      +/-7.9228162514264337593543950335(숫자의 오른쪽으로부터 28번째),
                      0이 아닌 최소 숫자 +/-0.00000000000000000000000000001
Date : 8 : 100년 1월 1일에서 9999년 12월 31일 까지
Object : 4 : 모든 개체 참조
String : (가변길이) : 10바이트를 더한 문자의 길이 (0 ~ 약 2조)
String : (고정길이) : 1 ~ 약 65,400 의 문자 길이
Variant : (숫자) : 16바이트 Double 형 범위 내의 모든 숫자
Variant : (문자) : 22바이트 + 문자열 길이 변수 길이 String 과 같은 범위
Type :           : 요소가 사용하는 숫자 해당 데이터 형식의 범위값과 각 요소의 범위값이 같음

 


데이터 형식은 일반적으로 바이트수가 적은 변수를 사용할 수록 빠르다.
그러나 Integer 의 경우는 Byte 보다 빠르다.
그 이유는 윈도우 95/98인 경우에는 Integer 를 기본으로 처리하기 때문에 가장 빠르고 그 다음에 Byte 형식이 빠르다.
데이터 형식 선언은 독립적으로 사용하지 않고 Dim 문, Public문 , Private 문과 함께 사용한다.
선언의 예는 다음과 같다.

 

' Total 변수를 정수형식으로 선언
Dim Total As Integer
' Name 변수를 문자형 형식으로 선언
Private Name String
' 한 줄에서 여러 개 변수 선언
Public Kor As String, Mat As Integer
' sms 변수를 Variant 데이터 형식으로 선언
Dim sms

 


* 프로시저 안에서 데이터 형식의 사용 예는 다음과 같다.


Private Sub Command_Click()
Dim A As Byte
Dim B As Integer


A = 13
' 문장 사이에 변수를 선언할 수도 있다.
Dim C As Long


B = 128


Label1.Caption = A
Label2.Caption = B
End Sub

 

★ 덧셈 계산 프로그램 만들기


< 폼 디자인 구성표 >


폼 : Form1 : Caption = 덧셈계산
텍스트박스 : Text1 : Text = " "
                    Text2 : Text = " "
라벨 : Label1 : Caption = +
         Label2 : Caption = " "
명령버튼 : Command1 : Caption = 실행

 


' 실행버튼 컨트롤의 Click 이벤트
Private Sub Command1_Click()


Dim 왼쪽 변수, 오른쪽 변수 As Integer


왼쪽 변수 = Val(Text1.Text)
오른쪽 변수 = Val(Text2.Text)


Label2.Caption = 왼쪽 변수 + 오른쪽 변수


End Sub

 

<설명>


'+'는 문자열간에 연결할 경우와 사칙연산 중에 한 기능으로 덧셈을 수행한다.
텍스트박스 컨트롤에서 입력한 값은 문자열 이므로 다음과 같이 코딩하면 문제가 발생한다.


Private Sub Command_Click()


Label2.Caption = Text1.Text + Text2.Text


End Sub


Text1에 '5'를 입력하고 Text2에 '3'을 입력한 후 [실행]버튼을 누르면 53이 출력된다.
덧셈을 수행한 것이 아니라 두 문자열을 연결한 것이다.
그렇게 하면 원하는 값을 얻을 수 없다.
그렇기 때문에 텍스트박스 컨트롤에서 입력한 문자열을 숫자로 바꿔주어야 한다.
그 함수가 Val 함수다.

 

함수 : 설명
Val : 문자열을 숫자로 변환하여 준다.
Str : 숫자를 문자열로 변환하여 준다.


위 소스를 간략하게 만들고 싶으면 다음과 같이 변경하면 된다.

 

Private Sub Command1_Click()


Label2.Caption = Val(Text1.Text) + Val(Text2.Text)


End Sub


* '18'과 '16'을 입력한 후 실행버튼을 누르면 '18'과 '16'을 더한 값인 '34'가 화면에 출력한다.

 

○ 동일한 컨트롤의 속성과 메서드를 사용하는데 매번 컨트롤 이름을 쓰려니까 힘들다.
좋은 방법이 없을까?

 

Private Sub Command1_Click()
Label1.Width = 1000
Label1.Height = 2000
Label1.Caption = "문자열 출력"
End Sub

 

이런 소스를 With 문을 사용하여 만들어보자.

 

Private Sub Command1_Click()
With Label1
.Width = 1000
.Height = 2000
.Caption = "문자열 출력"
End With
End Sub

 

※ 변수는 임시로 데이터값을 저장하여 수시로 값을 변경하는 데 사용하지만 상수는 한번 정의되면 데이터값을 변경할 수 없다.

 

-------------------------------------------------------------------


1. 변수


데이터 형식(관계나 범위)안에서 임의의 값이 변할 수 있는 수를 변수라고 한다.


2. 상수 (Constant)


상수는 한번 선언하면 데이터값을 변경할 수 없는 수를 말한다.
[Public | Private] Const 상수명 [As 데이터 타입] = 데이터 값

 

3. Enum 문


Enum 문은 비슷한 유형을 가진 상수를 묶어서 사용하는 경우에 사용된다.
[Public | Private] Enum 이름
    구성요소 이름 [ = 상수값]
End Enum


* 사용 예


Enum 번호
신문섭 = 3
김을동 = 7
이우동 = 5
End Enum

 


4. 주석문


주석문은 코딩을 한 후 소스를 이해하기 편리하기 위해서 사용한다.
어포스트로피(')기호나 Rem 문을 이용하여 주석을 포함시킬 수 있다.

 

① 어포스트로피(')기호 사용 예

'-------------------------------------
'---------  주석문 ------------
'--------------------------


② Rem 문 사용 예


Rem ---------------------------
Rem ----- 주석문 ----------
Rem  ----------------------------

관련자료

등록된 댓글이 없습니다.
프로그래밍
Today's proverb
인간을 사랑할 것. 아무리 나약한 인간이나 초라하고 불쌍한 인간도 사랑할 것. 그리고 그들을 심판하지 말 것. (생텍쥐페리)