이제 비베도 한3일 하고나니 별거아니라는 생각이 들지 않습니까?
하하 오늘은 변수에대해 공부를 해보겠습니다.
이미 비베를 어느정도하시는 분이거나 GW-BASIC등을 익힌분은 변수가 뭐라는것을 다아시겠지만, 처음 언어라는 것을 익히는
분은
'변수? 변수가 뭐야? 수학시간에 배운 변수랑 같은 건가?'하는 의문을 가지 실것입니다.
언어에서 변수는 역시 수학 시간에 배운 변수처럼 변할수 있는 숫자이지요. 그러니까 A는 1도 될수있고 3이나 4도 될 수
있습니다.
이에비해 3이나 4 는 3과 4이외의 다른 숫자일 수 없는 상수이고요.
그런데 언어에서는 변수가 꼭 숫자만을 나타내지는 않습니다.
문자를 나타낼 수도 있습니다. 그리고 변수는 저장하는 장소라는 의미가 있구요.
우선 변수를 사용하기 위해서는 변수를 선언 해주어야 합니다.
물론 선언 없이도 사용할 수 있지만 항상 선언을 하고 사용하는 습관을 기르는 것이 버그 발생을 막을 수 있고요.
C언어등은 선언 하지 않은 변수는 사용할 수 없게 되어 있기 때문에 다음에 다른 언어를 익히게 될때 문제가 발생하지 않습니다.
변수 선언은 일반적으로 DIM <변수명> AS <변수형>의 형태를 가지는데요.
DIM MYNAME AS STRING
라고 했다면 MYNAME라는 변수를 문자형으로 선언 해준 것이됩니다. 변수형에는
변수형 크기(BYTE) 설명
BOOLEAN 2 논리형으로 TRUE나 FALSE키워드만을 사용
INTEGER 2 부호있는 16비트 크기의 숫자(-32,768~32767)
LONG 4 부호있는 32비트 크기의 숫자
(-2,147,486,648~2,147,486,647)
STRING 문자열길이 가변길이 : 약 2십억자(2의 30승)문자
고정길이 : 약 6천 5백만자(2의 16승)문자
이외에도 SINGLE, DOUBLE, CURRENCY, DATE, DECIMAL, OBJECT등의 변수형이 있지만 일일이 다 설명하면 혼란스럽고
일단은 이 네가지만 알아도 충분하기때문에 네가지만 설명하겠습니다.
BOOLEAN형의 변수에는 TRUE와 FALSE값 두가지만 넣을수 있기때문에 이놈은 체크박스나 옵션버튼 등을 만들었을때
그것이 체크가 되어있는지의 여부를 저장해 두는데 사용하면 무척 편하게 사용할 수 있습니다.
INTEGER형으로 선언된 변수에는 16비트 크기의 정수만이 저장가능하며, 소수점이하의 숫자는 저장 할 수 없으니 유의
하시고요.
소수점이하의 숫자를 다루실때는 DOUBLE등으로 선언해 주시면 됩니다.
LONG형으로 선언하면 32비트크기의 정수를 저장할 수 있습니다.
INTEGER로 선언한 변수에 저장하기에 큰숫자는 LONG형으로 선언해 저장하시면 되고요.
메모리를 INTEGER로 선언한 변수의 두배를 차지하므로 메모리를 많이 소모합니다.
STRING형으로 선언한변수는 문자열을 저장할 수 있습니다.
그럼 변수를 사용한 간단한 예제입니다. 그제 만들어본 HELLO WORLD 예제를 변수를 사용해서 해보면요.
PRIVATE SUB COMMAND1_CLICK()
DIM MYHELLOW AS STRING '변수 선언
MYHELLOW="HELLO WORLD" '변수에 HELLOW WORLD를 저장
TEXT1.TEXT=MYHELLOW
END SUB
역시 HELLO WORLD예제가 실행됩니다. 이번에는 INTEGER 형의 변수를 사용한 예제입니다.
PRIVATE SUB COMMAND1_CLICK()
DIM MYSUM AS INTEGER '변수 선언
MYSUM=1+2+3+4+5+6+7+8+9+10 '변수에 1~10까지의 합을 저장
TEXT1.TEXT=MYSUM
SUB END
변수를 선언할때 DIM이 있는 자리에 DIM이외에도 PRIVATE, PUBLIC, STATIC등을 사용할 수 있는데요.
사용 방법은 다음과 같습니다.
DIM
현재 프로시저 내에서만 존재되는 자동 변수이다.
PRIVATE
현재 모듈에서만 참조될 수 있다.
PUBLIC
참조 모듈에 제한이 없다. 하지만 제한 없는 접근으로 외부영향을 받기 쉽다.
STATIC
참조범위는 DIM과 같으나 응용프로그램 종료 때까지 메모리에서 지워지지 않는다.
DIM으로 정의한 변수는 프로시저내에서만 존재 한다고 했는데 이말이 무슨 말인지 모르겠다고 느끼시는 분들이
많으실텐데요.
예를 들어 설명을 드리겠습니다. 커맨드 버튼을 두개 만드시고요. 역시 텍스트 박스도 하나 만드십시오.
PRIVATE SUB COMMAND1_CLICK()
DIM MYSUM AS INTEGER
MYSUM=1+2+3+4+5
MYSUM=MYSUM+6+7+8+9+10 'MYSUM에 6+7+8+9+10 만큼을 증가 시킵니다.
TEXT1.TEXT=MYSUM
END SUB
이렇게 코딩하시고 커맨드 버튼을 클릭해보시면 55라고 나올 겁니다.
MYSUM=MYSUM+(상수)의 의미는 보시면 아실거구요. 그런데 이번에는
PRIVATE SUB COMMAND1_CLICK()
DIM MYSUM AS INTEGER
MYSUM=1+2+3+4+5
TEXT1.TEXT=MYSUM
END SUB
PRIVATE SUB COMMAND2_CLICK()
MYSUM=MYSUM+6+7+8+9+10
TEXT1.TEXT=MYSUM
END SUB
하시고 실행시켜서는 COMMAND1과 COMMAND2를 차례로 클릭하시면 15와 40 이 차례로 텍스트 박스에 나타 날것입니다.
왜 15다음에 55가 나오지 않았을 까요?
왜냐하면 MYSUM은 COMMAND1_CLICK()라는 프로시저내에서만 존재하는 변수이기 때문에
COMMAND2_CLICK()라는 프로시저에서의 MYSUM과는 아무 상관이 없는 것입니다.
사람에 비유하자면 동명이인 이라고나 할까요.
그럼 이번에는 DIM MYSUM AS INTEGER대시 PRIVATE MYSUM AS INTEGER로 바꿔서는 실행 시켜 보세요.
아마도 에러가 날것입니다. 이유는 간단합니다.
PRIVATE로 선언 할경우에는 (일반)이라는 개체에 (선언)이라는 프로시저에서 선언해 주어야 하기 때문이죠.
코딩편집창에 위에 두개의 칸이 있을겁니다. 하나는 현재의 개체를 나타내고 하나는 프로시저를 나타내는 데요.
개체를 나타내는 창의 버튼을 눌러보시면 (일반), COMMAND1, COMMAND2, TEXT1, FORM등의 개체가 나타 날겁니다.
(비베 영문판에서는 일반->General로 표시됨)
이중에 (일반)이란 개체를 선택하시고요. PRIVATE MYSUM AS INTEGER이라고 코딩해주세요.
그리고 COMMAND1_CILCK()의 DIM MYSUM AS INTEGER은 지워 주시고요.
그리고 실행을 시키시고 COMMAND1과 COMMAND2를 차례로 클릭해 보세요.
그러면 15와 55 가 차례로 찍힐것입니다.
그런데 이경우 PRIVATE MYSUM AS INTEGER은 (일반)에서 (선언)프로시저상에서 DIM MYSUM AS INTEGER한것과 같습니다.
모듈레벨에서 DIM을 사용해 선언한 변수는 모듈내의 모든 프로시저에서 참조할 수 있기 때문입니다.
(모듈이란 프로시저의 모임을 의미합니다.)
오늘은 참 지루하시죠. 히히# 하지만 꼭 익혀야 하는 내용들이니 너무 불평하지 마시고요. 잘읽어 두세요.
컨트롤을 하나하나 설명하는 중간중간에 이렇게 켄트롤이외의 것들을 끼워 넣어 설명을 하겠습니다.
다음은 변수 명명법을 설명하겠습니다.
1.명명의 규칙
영문자로 시작해야 한다.(한글 비주얼베이직5.0인 경우 한글도 가능하다.)
마침표나 유형 선언문자를 포함할 수 없다.
255문자를 초과할 수 없다.
동일한 참조 영역 내에서는 유일해야 한다.
2.명명의 방법
헝가리식 명명법등 여러가지 명명법이 있지만 간단하게 명명시 유의점만 설명하고 마치겠습니다.
전역변수등을 X, XX, XXX, X2, X3등으로 선언하는 분들이 계신데 이경우 프로그램작성자도 자신의 소스를 이해하기 힘들뿐만
아니라 다른 사람이 프로그램을 이해하기는 거의 불가능에 가까워 집니다.
이때 최소한 X보다는 XPOS라고 표기함으로써 어떤 물체의 X좌표 값임을 알 수 있도록 명명해야 합니다.
XPOS는 X-POSITION의 약자이고요.
이때 XPOSTION을 XPTN으로 축약할수도 있지만 XPTN은 발음이 불가능하므로 바람직 하지 못하며 XPOS가 더욱적당합니다.
편집자 주 : "헝가리안 표기법"이란?
윈도우 초창기 시절에는 지금처럼 좋은 도구가 많지 않았기 때문에
윈도우 프로그램을 만드는 과정이 굉장히 어려웠습니다.
그런데 마이크로소프트사 안에는 헝가리에서 이민온 프로그래머가 있었는데,
유독 그 사람만이 프로젝트를 제일 먼저 가장 완벽하게 구현을 했습니다.
이상하게 여긴 빌게이츠는 그 프로그래머를 유심히 관찰한 결과 그의 프로그램 습관이 남과 다르다는 것을 알게 되었습니다.
바로 변수이름을 지을 때 그 형을 구분할 접두어(Prefix)를 만들어 사용한 것입니다. 그 후로 빌게이츠는 그 표기법을 헝가리안 표기법이라 명명하고
모든 프로그래머들이 그 방식을 따르라고 명령했다고 합니다.
이러한 습관은 굉장히 추천할 만한 것이기 때문에
반드시 여러분도 따라할 수 있도록 습관을 들이세요
본 내용은 도서출판 대림의 "천기누설 한글 비주얼베이직5"의 내용을 인용한것 입니다.
출처 : 까비의 컴퓨터 교실
첫댓글 어려워요 ~~ㅠㅠ ;; 항상 좋은자료~!
좋은설명은 정말감사합니다. 그런데. 이게 이해하기힘든게 저같은 새내기분들은 아예 기초를 잘모르고 하는편인데 윗글을 보면 DIM MYNAME AS STRING 이걸하라고 하시는데 어디서하는지. 이건 이렇게 하면 된다는건.. 새내기분들은 모르실거기에.. (저도그렇기에) 질문합니다..............
이해가 쏙쏙 들어옵니다
잘 배우고있어요 ㅋㅋ뭔가 친근해서 ㅋㅋ 다음 강좌로 고고
휴 이제부턴 헛갈리기 시작하는군요 ㅡㅡ;;
점점 어려워지네요;;;
변수부분이 점점 어려워지고 이론적으로 치우친 부분이 있는데 p2p사이트에서 각종 강좌들을 다운받아서 변수관련 강의를 들어본 후에 제대로 감잡았습니다. 벌써 비주얼베이직 관련 책도 많아지고 참고서도 많아지고 이거야원.. ㅡ.ㅡ;;;
대충 알았는데,,,, 확연한 강좌로 정확히 알게되었습니다. 감사..
열심히 해야겠네..
어려우기 시작..
아 점점 모르겟심..
머리아파지기 시작했다 ;;
Integer 변수에서 Sub End 가 아니라 End Sub 아닌가요.. 아니면 죄송하구요
오호 근데 코드를 쫘악 펼쳐서 보여줌이 좋았을것 같음