프로그래밍이 어둡습니다. Visual Basic 및 BASIC에서 DIM은 무엇을 의미합니까? 변수 및 상수 선언

원래 Dim(BASIC)은 배열의 크기를 결정하는 데 사용되었기 때문에 Dimension을 나타냅니다.

(BASIC의 원래 구현은 DIMENSIONS를 지정하는 FORTRAN에서 발전한 Dartmouth BASIC이었습니다.)

현재 Dim은 배열뿐만 아니라 모든 변수를 정의하는 데 사용되므로 그 의미가 직관적이지 않습니다.


2018-06-23 16:01

Dim은 그것에 다른 의미를 부여했습니다.

Dim 의미에 대한 링크를 찾았습니다. "기억에 선언하다"보다 관련성이 높은 참조 자료는 Oracle이 Siebel VB Language Reference의 일부로 게시한 Dim Instructions 문서입니다. 물론, 메모리에 변수를 선언하지 않으면 어디서 선언해야 하느냐고 주장할 수도 있습니다. 아마도 "모듈에서 선언" Dim의 사용 방식을 고려하면 좋은 대안입니다.

제 생각에는 "기억에 선언하기"가 실제로는 연상기호 Dim 사용 방법을 더 쉽게 배울 수 있도록 만들어졌습니다. 현재 버전의 언어에서 수행되는 작업을 설명하기 때문에 "메모리에 선언"이 가장 좋은 의미라고 생각하지만 올바른 의미는 아닙니다.

실제로 Basic Dim은 원래 배열을 선언하는 데에만 사용되었습니다. 일반 변수의 경우 키워드가 사용되지 않았지만 대신 이름에서 유형이 유추되었습니다. 예를 들어, 변수 이름이 $로 끝나면 문자열입니다. 이는 Mid$와 같은 VB6 이전 메서드 이름에서도 볼 수 있었던 것입니다. 그래서 당신은 Dim을 사용하여 측정배열로 변환합니다(ReDim은 배열의 크기를 조정합니다).

사실은, 중요하다? 내 말은 이 키워드가 인공 언어에서도 의미가 있다는 뜻입니다. 영어나 다른 자연어로 된 단어일 필요는 없습니다. 따라서 그것은 당신이 원하는 것을 의미할 수 있으며, 중요한 것은 그것이 작동한다는 것입니다.

어쨌든 이것은 전적으로 사실이 아닙니다. BASIC은 우리 문화의 일부이고 왜 그렇게 되었는지 이해하고 있으므로, BASIC이 세상에 대한 우리의 비전을 향상시키는 데 도움이 되기를 바랍니다.

나는 잃어버린 것처럼 보이는 우리 문화의 이 작은 조각을 보존하고, 그것이 무엇인지에 대한 우리의 가정으로 대체되기를 바라는 마음으로 컴퓨터 앞에 앉아 있습니다. 그래서 나는 1998년 버전의 최신 CD와 이전 CD에 대한 MSDN을 찾아냈습니다. 나는 또한 오래된 QBasic에 대한 문서를 찾아보았고(DOSBox를 사용해야 했습니다) Dartmouth 매뉴얼을 통해 Dim이 어떻게 말하는지 알아냈습니다. 사용됩니다.

그러나 내 희망이 어두워지기 전에 나는 BBC 마이크로컴퓨터 사용자 가이드(1984년에 작성된 것으로 주장되며 의심하고 싶지 않음)를 찾았습니다. BBC 마이크로컴퓨터는 BBC BASIC이라는 BASIC의 변형을 사용했으며 이에 대한 내용이 문서에 설명되어 있습니다. 하지만 그는 Dim Stand가 무엇을 하는지는 말하지 않았지만 다음과 같이 말했습니다(104페이지).

N$를 측정하여 원하는 만큼 항목을 가질 수 있습니다. 예를 들어, DIM N$(1000)은 1000개의 다른 이름을 위한 공간이 있는 문자열 배열을 만듭니다.

앞서 말했듯이 Dim이 차원을 의미한다고 말하는 것은 아니지만, 이 글을 쓰는 당시에는 Dim과 Dimension의 연관성이 일반적이었다는 증거가 됩니다.

이제 저는 DIM 키워드를 설명하는 섹션의 제목(참고: 내용에 나열되어 있지 않음)에 다음과 같은 내용이 나와 있다는 사실에 더욱 놀랐습니다(208페이지).

DIM 배열 크기

이제 나는 "Dim은 가치가 있다..."라는 인용문을 얻지 못했지만 이 문서를 읽을 수 있는 가치가 있는 사람이라면 누구나 Dim이 차원을 의미한다고 생각할 것이라는 것은 분명하다고 생각합니다.

새로운 희망을 가지고 나는 Dim이 선택되었다는 것을 알기로 결정했습니다. 이번에도 저는 이 주제에 대한 설명을 찾지 못했지만 결정적인 인용문은 찾을 수 있었습니다.

배열을 사용하려면 먼저 DIM(차원) 문에서 배열을 정의해야 합니다.

이 내용은 BASIC의 공동 창시자인 Thomas Eugene Kurtz가 설립한 회사인 True BASIC inc의 웹 페이지에서 True BASIC 온라인 사용자 가이드의 일부로 찾을 수 있습니다.

그래서 Dim은 약자입니다. 차원, 그리고 그렇습니다. 이는 이전에 FORTRAN에 존재했기 때문에 Patrick MacDonald가 답변에서 말했듯이 FORTRAN의 영향으로 선택되었을 가능성이 높습니다.

딤섬 문자열 = "이것은 중국식 식사가 아닙니다." VB.NET의 REM 예제 사용;)


2017-10-05 01:19

이것은 원래 BASIC에서 배열의 크기를 나타내기 위해 사용되었기 때문에 Dimension의 약어입니다.

DIM - (size의 약어) 배열의 크기를 정의합니다.

DIM 명령을 검색할 때 점프하는 원본 BASIC 컴파일러 소스 코드의 일부로, 키워드에 대한 원래 의도를 명확하게 볼 수 있습니다.

DIM LDA XR01 백 오프 개체 포인터 SUB N3 STA RX01 LDA L 2 치수가 지정되도록 변수 가져오기 STA 3 LDA S 3 CAB N36 $ 어레이 BRU *+7 $ 아님 ... 확인

이후 버전에 변수 유형을 지정하는 기능이 추가되면서 모든 종류의 변수를 선언하는 데 사용되었습니다.


2018-06-23 16:02

변수를 측정하면 기본적으로 어느 시점에 이 유형의 변수가 필요하다는 것을 컴파일러에 알리는 것입니다.

다른 프로그래밍 언어와 마찬가지로 VBA에서는 변수와 상수를 사용하여 값을 저장합니다. 이름에서 알 수 있듯이 변수는 변경될 수 있는 반면 상수는 고정된 값을 저장합니다.

예를 들어, 상수 파이값 저장 3.14159265... 프로그램 실행 중에 숫자 "Pi"는 변경되지 않지만 이러한 값을 상수로 저장하는 것이 더 편리합니다.

동시에 우리는 변수를 사용할 수 있습니다 sVAT_세율구매한 상품에 대한 VAT 세율을 저장합니다. 변수값 sVAT_세율구매하신 상품에 따라 달라질 수 있습니다.

데이터 유형

모든 변수와 상수는 특정 데이터 유형에 속합니다. 아래 표에는 VBA에서 사용되는 데이터 유형과 가능한 값의 설명 및 범위가 나와 있습니다.

데이터 유형 크기 설명 값의 범위
바이트 1바이트 양의 정수; 바이너리 데이터에 자주 사용됨 0에서 255까지
부울 2바이트 True 또는 False일 수 있습니다. 참 또는 거짓
정수 2바이트 정수(소수 부분 없음) -32 768에서 +32 767까지
4바이트 큰 정수(소수 부분 없음) -2 147 483 648에서 +2 147 483 647까지
하나의 4바이트 단정밀도 부동 소수점 수 -3.4e38 ~ +3.4e38
더블 8바이트 배정밀도 부동 소수점 수 -1.8e308 ~ +1.8e308
통화 8바이트 소수점 이하 자릿수가 고정된 부동 소수점 수 -922 337 203 685 477.5808에서 +922 337 203 685 477.5807까지
날짜 8바이트 날짜 및 시간 – 날짜 데이터는 부동 소수점 숫자로 표시됩니다. 이 숫자의 정수 부분은 날짜를 나타내고, 소수 부분은 시간을 나타냅니다. 1100년 1월 1일부터 9999년 12월 31일까지
물체 4바이트 객체 참조 모든 객체 참조
변화 문자 집합입니다. String 유형은 고정 길이 또는 가변 길이를 가질 수 있습니다. 가변 길이와 함께 가장 자주 사용됨 고정 길이 – 최대 약 65,500자. 가변 길이 – 최대 약 20억 자
변종 변화 날짜, 부동 소수점 숫자 또는 문자열을 포함할 수 있습니다. 이 유형은 어떤 유형의 데이터가 입력될지 미리 알 수 없는 경우에 사용됩니다. 숫자 – 더블, 문자열 – 문자열

분명히 위의 표를 이용하여 데이터 유형을 올바르게 선택하면 메모리를 보다 경제적으로 사용할 수 있습니다(예: 데이터 유형을 선택) 정수대신에 또는 하나의대신에 더블). 그러나 보다 컴팩트한 데이터 유형을 사용할 때는 코드가 불균형적으로 큰 값을 데이터 유형에 맞추려고 하지 않도록 주의해야 합니다.

변수 및 상수 선언

번역자 주: VBA의 변수에 대해 말하면 매우 중요한 점을 한 가지 더 언급할 가치가 있습니다. 변수를 선언했지만 값을 할당하지 않으면 기본값으로 초기화됩니다.
텍스트 문자열 – 빈 문자열로 초기화됩니다.
숫자 – 값 0;
유형 변수 부울- 거짓;
날짜: 1899년 12월 30일.

변수나 상수를 사용하려면 먼저 선언해야 합니다. 이렇게 하려면 다음과 같은 간단한 코드 줄을 매크로에 추가하세요.

어둑한 변수_이름 처럼 데이터_유형

위에 표시된 코드 줄에서 변수_이름코드에 사용될 변수의 이름입니다. 데이터_유형– 이것은 이 기사의 앞부분에 제공된 표의 데이터 유형 중 하나입니다. 예를 들어:

Dim sVAT_Rate As Single Dim i As 정수

상수도 비슷하게 선언하지만 상수를 선언할 때는 그 값을 즉시 표시해야 합니다. 예를 들어 다음과 같습니다.

Const iMaxCount = 5000 Const iMaxScore = 100

Excel에서는 변수를 선언할 필요가 없습니다. 기본적으로 Excel에 입력되었지만 선언되지 않은 모든 변수는 유형입니다. 변종숫자와 텍스트 값을 모두 허용할 수 있습니다.

이렇게 하면 프로그래머는 언제든지 새 변수를 사용할 수 있으며(선언되지 않은 경우에도) Excel에서는 해당 변수를 유형의 변수로 처리합니다. 변종. 그러나 이렇게 하면 안 되는 몇 가지 이유가 있습니다.

  1. 메모리 사용량 및 계산 속도.데이터 유형을 나타내는 변수를 선언하지 않으면 기본적으로 해당 유형이 설정됩니다. 변종. 이 데이터 유형은 다른 데이터 유형보다 더 많은 메모리를 사용합니다. 변수당 몇 개의 추가 바이트가 많은 것처럼 보이지 않을 수도 있지만 실제로 작성하는 프로그램에는 수천 개의 변수가 있을 수 있습니다(특히 배열로 작업할 때). 따라서 다음과 같은 변수가 사용하는 초과 메모리는 변종, 다음과 같은 변수에 비해 정수또는 하나의, 유형의 변수를 사용한 작업은 상당한 양을 추가할 수 있습니다. 변종다른 유형의 변수보다 훨씬 느리게 실행되므로 해당 유형의 변수가 수천 개 더 늘어납니다. 변종계산 속도가 크게 느려질 수 있습니다.
  2. 변수 이름의 오타를 방지합니다.모든 변수가 선언되면 VBA 문을 사용할 수 있습니다. 옵션 명시적(나중에 설명하겠습니다) 선언되지 않은 모든 변수를 식별합니다. 이렇게 하면 변수 이름이 잘못 작성되어 프로그램에 오류가 나타나는 것을 방지할 수 있습니다. 예를 들어, sVAT_세율, 오타를 만들어 이 변수에 값을 할당하면 "VATRate = 0.175"라고 쓸 수 있습니다. 이제부터 변수가 생길 것으로 예상됩니다. sVAT_세율 0.175의 값을 포함해야 하지만 물론 그렇지 않습니다. 사용된 모든 변수의 필수 선언 모드가 활성화된 경우 VBA 컴파일러는 변수를 찾을 수 없으므로 즉시 오류를 표시합니다. 부가가치세율발표된 것 중.
  3. 선언된 변수 유형과 일치하지 않는 값을 강조 표시합니다.특정 유형의 변수를 선언하고 여기에 다른 유형의 데이터를 할당하려고 하면 오류가 발생하며 이를 수정하지 않으면 프로그램이 충돌할 수 있습니다. 얼핏 보면 선언하지 않는 것이 타당한 이유처럼 보일 수 있습니다. 하지만 실제로는 이전보다 변수 중 하나가 수신했어야 할 잘못된 데이터를 수신한 것으로 밝혀졌습니다. 훨씬 더 좋습니다! 그렇지 않으면 프로그램이 계속 실행되면 결과가 올바르지 않고 예상치 못한 결과가 나올 수 있으며 오류의 원인을 찾기가 훨씬 더 어려워질 수도 있습니다. 또한 매크로가 "성공적으로" 실행될 수도 있습니다. 결과적으로 오류는 눈에 띄지 않고 잘못된 데이터로 작업이 계속됩니다!

이와 관련하여, 잘못된 데이터 유형을 감지하고 코드에서 이러한 오류를 가능한 한 빨리 수정하는 것이 좋습니다. 이러한 이유로 VBA 매크로를 작성할 때 모든 변수를 선언하는 것이 좋습니다.

옵션 명시적

연산자 옵션 명시적 VBA 코드에 사용될 모든 변수를 강제로 선언하고 컴파일 시(코드가 실행되기 전) 선언되지 않은 변수를 오류로 표시합니다. 이 연산자를 사용하는 것은 어렵지 않습니다. VBA 파일 맨 위에 다음 줄을 작성하면 됩니다.

옵션 명시적

항상 삽입하고 싶다면 옵션 명시적새로운 VBA 모듈이 생성될 때마다 이 작업이 자동으로 수행될 수 있습니다. 이렇게 하려면 매개변수를 활성화해야 합니다. 변수 선언 필요 VBA 편집기 설정에서.

이는 다음과 같이 수행됩니다.

  • Visual Basic Editor 메뉴에서 도구 > 옵션
  • 나타나는 대화 상자에서 탭을 엽니다. 편집자
  • 확인란을 선택하세요. 변수 선언 필요그리고 누르세요 좋아요

매개변수가 활성화되면 라인은 옵션 명시적생성된 각 새 모듈의 시작 부분에 자동으로 삽입됩니다.

변수와 상수의 범위

선언된 각 변수나 상수는 고유한 제한된 범위, 즉 이 변수가 존재하는 프로그램의 제한된 부분을 갖습니다. 범위는 변수 또는 상수 선언이 이루어진 위치에 따라 다릅니다. 예를 들어 변수를 생각해 봅시다. sVAT_세율, 함수에 사용되는 총계_비용. 다음 표에는 변수 범위에 대한 두 가지 옵션이 나와 있습니다. sVAT_세율, 모듈의 두 가지 다른 위치에 선언되었습니다.

옵션 명시적 Dim sVAT_Rate As 단일 함수 Total_Cost() As Double ... 끝 함수

변수인 경우 sVAT_세율모듈의 맨 처음에 선언된 경우 이 변수의 범위는 전체 모듈이 됩니다(즉, 변수 sVAT_세율이 모듈의 모든 절차에서 인식됩니다.

따라서 함수에 있는 경우 총계_비용변하기 쉬운 sVAT_세율특정 값이 할당되면 동일한 모듈 내에서 실행되는 다음 함수는 변수를 사용합니다. sVAT_세율같은 의미로.

그러나 다른 모듈에 있는 일부 함수가 호출되면 해당 변수는 sVAT_세율알려지지 않을 것입니다.

옵션 명시적 함수 Total_Cost() As Double Dim sVAT_Rate As Single ... 끝 함수

변수인 경우 sVAT_세율함수 시작 부분에 선언됨 총계_비용, 그 범위는 이 함수로만 제한됩니다(즉, 함수 내에서). 총계_비용, 변수를 사용할 수 있습니다 sVAT_세율, 그러나 그 외부는 아닙니다).

사용하려고 할 때 sVAT_세율다른 프로시저에서는 이 변수가 함수 외부에서 선언되지 않았기 때문에 VBA 컴파일러가 오류를 보고합니다. 총계_비용(연산자를 사용하는 경우) 옵션 명시적).

위에 표시된 예에서 변수는 키워드를 사용하여 모듈 수준에서 선언됩니다. 어둑한. 그러나 선언된 변수를 다른 모듈에서 사용해야 할 수도 있습니다. 이러한 경우 키워드 대신 변수를 선언하려면 어둑한키워드를 사용해야합니다 공공의.

그런데 모듈 수준에서 변수를 선언하려면 키워드 대신 어둑한키워드를 사용할 수 있습니다 사적인, 이는 이 변수가 현재 모듈에서만 사용되도록 의도되었음을 나타냅니다.

키워드를 사용하여 상수를 선언할 수도 있습니다. 공공의그리고 사적인, 그러나 키워드 대신 상수, 그리고 그것과 함께.

다음 예에서는 키워드 사용을 보여줍니다. 공공의그리고 사적인변수와 상수에 적용됩니다.

DIM 연산자

작업에서 처리된 데이터가 배열 형태로 구성되어 있는 경우 인터프리터는 프로그램에서 사용되는 배열에 메모리를 할당하는 데 필요한 정보를 제공해야 합니다. 이를 위해 DIM 연산자가 사용됩니다.

형식: DIM a1(m1), a2(m2),..., aN(mN)

ai - 배열 이름;

mi는 배열 인덱스의 최대값을 지정하는 매개변수 목록입니다. 목록 mi에는 산술 표현식뿐만 아니라 5분의 1로 구분된 하나 또는 두 개의 정수 상수 또는 변수가 포함될 수 있습니다. 인덱스는 0부터 최대값까지 다양합니다.

예: DIM A(4), B(5,8), A1$(5), B1$(3,4)

DIM 연산자는 숫자 배열 A 및 B와 문자 배열 A1$ 및 B1$를 설명합니다. 배열 A는 1차원이며 5개의 요소 A(0), A(1), A(2), A(3), A(4)를 포함합니다. 2차원 숫자 배열 B에는 6개의 행과 9개의 열이 포함됩니다. 문자형 1차원 배열 A1$는 6개의 요소로 구성됩니다. 문자형 2차원 배열 B1$는 20개의 요소(4행, 5열)로 구성됩니다.

BASIC 언어의 배열 처리는 요소별로 수행됩니다. 배열을 설명하는 DIM 문은 프로그램에서 해당 요소를 사용하는 첫 번째 문 앞에 배치되어야 합니다.

1차원 배열의 요소 수는 11개 이하이고, 2차원 배열의 행 수는 11개, 열 수는 11개 이하인 경우 이러한 배열은 설명할 필요가 없습니다.

변수 이름은 최대 인덱스로 사용할 수 있습니다. 하지만 변수에는 DIM 문 이전에 값이 할당되어야 합니다.

예 1: 예 2:

10 입력 N,K 10 입력 N,M

20 치수 A(N),B(K,N) 20 치수 A(N+1,M)

예제 3: 각각 N개의 요소를 포함하는 1차원 배열 A와 B가 주어졌습니다. 각 요소가 공식에 의해 결정되는 새 배열 D를 생성합니다.

D(i)=A(i)+B(i)+C(i), i=1,2,.....,N

10 INPUT "배열의 차원을 입력하세요" ;N

20 치수 A(N),B(N),C(N),D(N)

40 입력 A(I),B(I),C(I)

70 D(Ⅰ)=A(Ⅰ)+B(Ⅰ)+C(Ⅰ)

80 인쇄 "D(";I;")=";D(I);

데이터 블록

a) 데이터 연산자

DATA 연산자는 데이터 블록을 생성하도록 설계되었습니다.

형식: 데이터 A

데이터 - 키워드;

A는 쉼표로 구분된 하나 이상의 실수, 정수 또는 문자열 상수를 포함하는 목록입니다(문자열 상수는 따옴표로 묶을 필요가 없습니다).

DATA 연산자는 컴퓨터의 RAM에 데이터 블록을 생성합니다. 정보는 목록에 나타나는 순서대로 데이터 블록에 기록됩니다. 프로그램이 여러 개의 DATA 문을 사용하는 경우 해당 문이 나타나는 순서대로 목록의 값을 순차적으로 연결하여 데이터 블록이 형성됩니다.

예: 20 DATA 2, 5.6, 프로그램

........................

50 데이터 8, 예, 37.6, 5

데이터 블록에는 2, 5.6, 프로그램, 8, 예제, 37.6, 5 등 7개의 요소가 있습니다.

나) READ 문

READ 문은 데이터 블록에서 정보를 읽는 데 사용됩니다.

형식: READ V

읽기 - 키워드;

V는 하나 이상의 변수 이름이 쉼표로 구분된 목록입니다.

데이터 블록은 내부 포인터를 사용하여 저장된 정보에 대한 순차적인 액세스를 제공하는 방식으로 구성됩니다. 현재 포인터 위치는 즉시 읽을 수 있는 데이터 블록의 요소를 가리킵니다. 프로그램이 시작되면 포인터는 블록의 시작 요소로 설정됩니다. READ 문이 실행되면 DATA 문 목록에서 데이터 블록의 첫 번째 요소가 READ 문 목록에서 첫 번째에 이름이 있는 변수의 값으로 할당되고 포인터는 다음 항목으로 이동됩니다. 위치이며 이제 데이터 블록의 두 번째 요소를 가리킵니다. READ 문의 목록에 다른 변수 이름이 있으면 두 번째 요소가 해당 변수에 값으로 할당됩니다. 그런 다음 포인터는 다음 위치로 이동하고 READ 문의 목록이 끝날 때까지 프로세스가 반복됩니다.

목록 끝에서 포인터는 마지막으로 읽은 값 다음의 데이터 블록 요소로 설정됩니다. 프로그램에서 다른 READ 문이 발견되면 데이터 블록의 요소를 READ 문 목록의 변수에 할당하는 작업이 현재 포인터 위치부터 수행됩니다.

예: 30 읽기 A, B

100 읽기 E$, F, G

A = 2 B = 5.6 C = "프로그램"

D = 8 E = "예" F = 37.6 G = 5

DATA는 행 번호가 수행되는 작업 순서에 영향을 주지 않는 유일한 BASIC 연산자입니다. 줄 번호는 프로그램의 전체 형식을 유지하는 데에만 필요합니다.

READ 문만이 언제, 어떤 데이터를 읽어야 하는지 결정합니다.

c) RESTORE 연산자

데이터 블록의 시작 부분에 대한 포인터를 반환하려면 RESTORE 문을 사용합니다.

형식: RESTORE 또는 RESTORE N

N은 DATA 문이 포함된 줄의 번호입니다.

이 연산자를 사용하면 동일한 데이터를 다른 DATA 문에서 반복적으로 읽고 다른 변수에 값을 할당할 수 있습니다.

40 데이터 2, 4, 8, 3, -6, 4

A = 2, A1 = 4, A2 = 8, 숫자 3을 가리키는 포인터이지만 RESTORE는 이를 첫 번째 숫자로 반환하므로 B = 2, B1 = 4입니다.

RESTORE 문에서 DATA 문이 포함된 줄 번호를 지정하면 포인터가 첫 번째 값을 표시합니다. RESTORE가 포인터 위치를 변경한 후 후속 READ는 새로 지정된 위치에서 데이터 읽기를 시작합니다.

프로그램이 실행될 때마다 일부 변수에 동일한 값을 할당해야 하는 경우 DATA 연산자를 사용하면 유용합니다.

기본 언어 루틴

a) GOSUB 및 RETURN 문

프로그램을 작성할 때 프로그램의 다른 위치에서 동일한 작업을 수행해야 하는 경우가 종종 있습니다. 대부분의 경우 이러한 작업은 다른 초기 데이터를 사용하여 수행되어야 합니다. 반복되는 계산 섹션을 한 번 기록한 다음 프로그램의 다른 위치에서 액세스하면 이러한 프로그램을 작성하는 것이 단순화됩니다. 이 가능성은 서브루틴을 사용하여 제공됩니다.

BASIC에서는 GOSUB 문을 사용하여 서브루틴에 액세스합니다.

형식: GOSUB N

GOSUB - 키워드;

N은 서브루틴 실행이 시작되어야 하는 첫 번째 라인의 번호입니다(서브루틴의 진입점).

서브루틴에서 실행되는 마지막 문은 메인 프로그램에 제어를 반환하는 RETURN 문이어야 합니다.

GOSUB 및 RETURN 문은 다음과 같이 작동합니다. BASIC 인터프리터는 반환 스택을 생성합니다. 프로그램에서 GOSUB 문을 만나면 인터프리터는 GOSUB 바로 뒤에 있는 문의 주소(줄 번호)를 반환 스택에 푸시합니다. 그런 다음 GOSUB 문의 줄 번호로 지정된 진입점으로 제어가 전송되고 서브루틴의 명령문이 실행되기 시작합니다. RETURN 문이 서브루틴에서 발견되면 현재 반환 주소가 스택 상단에서 팝되고 인터프리터는 GO SUB 문 바로 다음 명령문에서 호출 프로그램으로 제어를 전송합니다.

예: 해당 지역의 농장에서 밀을 파종한 지역에 대한 데이터가 있습니다. 일정 면적 이상인 농장의 수를 판단하는 것이 필요하다.

10 REM 메인 프로그램

30 PRINT "농장 수를 입력하세요"

60 PRINT "농장의 재배면적을 입력하세요" ;I

90 PRINT "파종면적의 하한값을 입력하세요" 100 INPUT D

120 PRINT "파종 면적이 있는 농장 수 >"; D;"=" ; 케이

200 REM 서브루틴

220 I=1에서 M으로

VBA 변수, 변수 선언, 옵션 명시적, 명명 규칙, VBA 데이터 유형, 초기 변수 값

변수- 변경 가능한 데이터를 저장하는 컨테이너입니다. 그것들 없이는 거의 어떤 프로그램도 할 수 없습니다. 단순화를 위해 변수를 옷장에 있는 숫자와 비교할 수 있습니다. "옷장"에 일부 데이터를 제출하면 이에 대한 응답으로 숫자가 제공됩니다. 이 데이터가 다시 필요할 때 "번호를 제시"하고 받습니다. VBA에서 변수를 사용하는 예는 다음과 같습니다.

nMyAge를 정수로 희미하게 표시

nMyAge = nMyAge + 10

MsgBox nMyAge

nMyAge를 정수로 희미하게 표시

이 줄을 해독하는 방법:

어둑한- 변수의 범위입니다. VBA는 변수 범위를 정의하기 위해 4가지 키워드를 제공합니다.

  • 어둑한- 대부분의 경우에 사용됩니다. 모듈의 선언 영역에서 변수가 Dim으로 선언되면 전체 모듈에서 사용할 수 있으며, 프로시저에서는 이 프로시저가 실행되는 동안에만 사용할 수 있습니다.
  • 사적인- VBA에서 변수를 선언할 때 Dim과 같은 의미입니다.
  • 공공의- 이러한 변수는 모듈 선언 영역에서 선언한 경우 이 프로젝트의 모든 모듈에 있는 모든 프로시저에서 사용할 수 있습니다. 프로시저 내에서 선언한 경우 Dim/Private처럼 동작합니다.
  • 공전- 이러한 변수는 프로시저 내에서만 사용할 수 있습니다. 이러한 변수는 선언된 프로시저 내에서만 표시되지만 해당 프로시저에 대한 다른 호출 간에는 해당 값을 유지합니다. 일반적으로 값을 누적하는 데 사용됩니다. 예를 들어:

정적 nVar1을 정수로 사용

nVar1 = nVar1 + 1

MsgBox nVar1

특별한 요구 사항이 없으면 항상 Dim 범위를 선택하는 것이 좋습니다.

선언의 두 번째 단어(nMyAge)는 변수의 식별자(즉, 이름)입니다. VBA에서 이름을 선택하는 규칙은 많은 요소(변수, 상수, 함수 및 프로시저 등)에 대해 동일합니다. 이름:

  • 문자로 시작해야 합니다.
  • 공백이나 구두점 기호를 포함할 수 없습니다(밑줄은 예외).
  • 최대 길이 - 255자;
  • 현재 범위에서 고유해야 합니다(자세한 내용은 아래 참조).
  • 예약어(코드 편집기 창에서 다른 색상으로 강조 표시된 단어)는 사용할 수 없습니다.

VBA 프로그램을 만들 때 개체 이름 지정 규칙, 즉 명명 규칙을 결정하는 것이 좋습니다. 가장 일반적으로 사용되는 것은 소위 헝가리 계약입니다(국적별로 헝가리인인 Microsoft 프로그래머 중 한 명인 Charles Simonyi를 기리기 위해).

  • 변수 이름은 소문자로 작성된 접두사로 시작해야 합니다. 접두사는 이 변수에 정확히 무엇이 저장될 것인지를 나타냅니다.
    • str (또는 s) - 문자열, 문자 값;
    • fn (또는 f) - 기능;
    • c (또는 모든 문자를 대문자로 만듭니다) - 상수입니다.
    • b - 부울, 논리값(참 또는 거짓)
    • d - 날짜;
    • obj (또는 o) - 객체 참조;
    • n - 숫자 값.
  • 함수, 메소드의 이름, 복합어의 각 단어는 대문자로 시작해야 합니다.

MsgBox objMyDocument.Name

하위 CheckDateSub()

  • VB의 초기 버전에는 Const라는 단어가 없었습니다. 모든 상수는 변수로 정의되었으며, 이를 구별하기 위해 단어 사이에 밑줄을 사용하여 대문자로 작성되었습니다.

COMPANY_NAME

많은 프로그래머는 여전히 이 접근 방식을 사용하여 상수를 나타냅니다(그러나 Const 키워드의 사용은 이제 필수입니다. 이에 대해서는 다음 섹션에서 설명합니다).

발표의 세 번째 부분 - 정수로- 이것은 변수의 데이터 유형을 나타냅니다. 데이터 유형에 따라 변수에 저장할 수 있는 데이터 유형이 결정됩니다.

VBA는 다음과 같은 데이터 유형을 제공합니다.

  • 숫자(바이트 - 0부터 255까지의 정수, 정수 - -32768부터 32767까지의 정수, 긴 - 큰 정수, 통화(소수점 4자리를 포함하여 19자리의 큰 십진수), 십진수(더 큰 십진수) 29 위치), 단일 및 이중 - 부동 소수점 값(더블은 두 배 더 큼));

주목! Decimal 유형의 변수(예: Dim n As Decimal)를 선언하려고 하면 구문 오류가 발생합니다. Decimal 유형으로 작업하려면 변수를 처음에 Variant로 선언하거나 유형 없이(Dim n) 선언해야 합니다. 왜냐하면 Variant 데이터 유형은 VBA에서 기본적으로 사용되기 때문입니다.

  • (문자열 가변 길이(최대 약 20억 자) 및 고정 길이(최대 약 65400자)
  • 날짜와 시간(날짜 - 100년 1월 1일부터 9999년 12월 31일까지);
  • 논리적(부울 - True 및 False 값만 저장할 수 있음)
  • 물체(객체 - 메모리에 객체에 대한 참조를 저장합니다)
  • 변종- 다른 데이터 유형을 저장할 수 있는 특수 데이터 유형입니다.

사용자 정의 데이터 유형을 사용할 수도 있지만 먼저 유형 표현식을 사용하여 정의해야 합니다. 일반적으로 사용자 정의 데이터 유형은 사용자가 제공한 값을 검증하는 추가 수단으로 사용됩니다(전형적인 예는 우편번호입니다).

변수의 데이터 유형 선택과 관련된 몇 가지 사항은 다음과 같습니다.

  • 일반적인 원칙은 선택한 값을 수용할 수 있는 가장 작은 데이터 유형을 선택하는 것입니다. 의심스러운 경우 오류를 방지하려면 더 큰 데이터 유형을 선택하십시오.
  • 가능하다면 부동 소수점 데이터 유형(단일 및 이중)을 사용하지 않는 것이 좋습니다. 이러한 유형의 데이터로 작업하는 것은 속도가 느리고 반올림으로 인해 비교에 문제가 있을 수 있습니다.
  • 가능하다면 Variant 유형을 사용하지 않는 것이 좋습니다. 이 유형은 여전히 ​​VBA에 의해 다른 유형 중 하나로 캐스팅되지만 더 많은 메모리가 필요합니다. 또한 이러한 암묵적인 교육 과정에서 오류가 발생할 수도 있습니다.
  • 변수를 정의할 때 소위 유형 정의 기호(% - 정수, $ - 문자열 등)를 사용할 수 있습니다. 예를 들어, 이 예에서는 Dim nVar 1 As Integer 행을 주석 처리하고 두 번째 행에 다음을 작성해야 합니다.

nVar1% = nVar1% + 1

이 접근 방식은 구식이므로 사용하지 않는 것이 좋습니다.

변수를 선언할 때 해당 유형을 지정할 필요가 없습니다. 예를 들어 광고는 다음과 같습니다.

DimnVar1

이 경우 변수는 자동으로 Variant로 선언됩니다.

원칙적으로 변수를 선언하지 않고도 VBA에서 작업할 수 있습니다. 예를 들어, 이 코드는

nVar1 = nVar1 + 1

MsgBox nVar1

완벽하게 작동할 것입니다. 프로그램에서 변수를 선언하지 않고 사용하면 Variant 유형의 새 변수가 자동으로 생성됩니다. 하지만 변수를 선언해야 합니다! 동시에 필요한 데이터 유형을 명시적으로 표시하는 것이 좋습니다. 왜:

  • 오류 수가 줄어듭니다. 프로그램은 처음부터 잘못된 유형의 값을 변수에 받아들이는 것을 거부합니다(예: 숫자 대신 문자열).
  • 객체로 작업할 때 속성과 메서드에 대한 힌트는 원하는 유형의 객체 변수를 처음 선언한 경우에만 유효합니다. 예를 들어 Excel에서는 두 가지 버전의 코드가 동일하게 작동합니다.

첫 번째 옵션:

통합 문서로 희미한 oWbk

oWbk = Workbooks.Add() 설정

두 번째 옵션:

oWbk = Workbooks.Add() 설정

그러나 oWbk 개체의 속성과 메서드에 대한 힌트는 두 번째 경우에만 작동합니다.

숙련된 모든 개발자는 일반적으로 명시적인 선언 없이 변수를 사용하는 것을 금지합니다. 이를 위해 특수 컴파일러 명령을 사용할 수 있습니다(모듈 선언 섹션에만 배치됨).

옵션 명시적

또는 자동으로 모듈을 생성할 때 코드 편집기 창에서 확인란을 선택하여 모든 모듈에 이 명령을 삽입할 수 있습니다. 변수 선언 필요(메뉴 도구 -> 옵션, 탭 편집자).

간단한 예를 통해 이러한 작업을 수행하는 이유를 설명할 수 있습니다.

n = n + 1

메시지박스

겉보기에는 코드가 아무런 문제를 일으키지 않아야 하며 단순히 메시지 창에 문제를 표시하면 됩니다. 실제로는 빈 메시지 상자가 표시됩니다. 그 이유는 매우 교활하게 숨겨져 있습니다. 세 번째 줄에서 n은 전혀 영어 문자 N이 아니라 러시아어 P입니다. 코드 편집기 창에서 구별하기가 매우 어렵습니다. 동시에 VBA 컴파일러는 이러한 코드를 발견하면 단순히 Variant 데이터 유형을 사용하여 빈 값을 갖는 새 변수를 생성합니다. 이러한 오류를 식별하는 데 시간이 걸릴 수 있습니다.

경험상 좋은 규칙은 변수가 필요할 때가 아닌 조기에 변수를 선언하는 것입니다. 이렇게 하면 프로그램이 더 읽기 쉽고 명확하게 계획됩니다.

다음과 같이 한 줄에 여러 변수를 선언할 수 있습니다.

Dim n1은 정수로, s1은 문자열로

변수에 값을 할당하는 방법은 다음과 같습니다.

nVar1 = 30

이미 존재하는 변수 값을 늘려야 하는 경우 명령은 다음과 같습니다.

nVar1 = nVar1 + 1

두 예 모두에서 등호는 "같음"을 의미하는 것이 아니라 할당을 의미합니다.

변수에 값을 할당할 때 다음 사항에 유의하세요.

  • 문자열 값은 항상 큰따옴표로 묶입니다.

sVar1 = "안녕하세요";

  • 날짜/시간 값은 해시 표시(파운드 기호)로 묶입니다.

dVar1 = #2004/05/06#

이 "명시적인" 방식으로 날짜/시간 값을 할당할 때는 미국 표준을 사용해야 한다는 점에 유의하세요. 이 경우 05는 월이고 06은 일입니다. 이 값의 표시(예: 메시지 창)는 사용자 컴퓨터의 지역 설정에 따라 달라집니다.

16진수 값을 전달해야 하는 경우 문자 &H가 해당 값 앞에 배치됩니다.

nVar1 = &HFF00

변수에 값이 할당되기 전에 변수에는 무엇이 포함됩니까?

  • 모든 숫자 데이터 유형의 변수 - 0.
  • 가변 길이 문자열 변수 - ""(길이가 0인 문자열).
  • 고정 길이 문자열 변수에서 ASCII 0 문자(이 문자는 화면에 표시되지 않음)를 포함하는 주어진 길이의 문자열입니다.
  • 변형 내 - 값이 비어 있습니다.
  • 객체 내 - 아무것도 없습니다(객체에 대한 참조가 없습니다).

6. 변수 선언: 다양한 데이터 유형에 대한 Dim 연산자

대부분의 사람들은 변수 유형을 표시할 때(특히 날짜/시간과 같은 유형의 경우) 식별자를 사용하지 않으려고 합니다. 대신 Dim 연산자를 사용합니다. 이러한 작업을 선언이라고 합니다. 이벤트를 처리할 때 변수를 사용하기 전에 변수 유형을 선언하는 것은 물론 주석을 사용하여 좋은 프로그래밍 스타일입니다. 이는 또한 프로그램 텍스트의 가독성을 향상시키는 것을 가능하게 합니다.

Dim 문을 사용하여 변수를 선언한 경우 이름은 같고 유형 식별자가 다른 변수를 사용하면 프로그램 실행 시 "이중 정의" 오류가 발생합니다. 예를 들어 다음 표현식 Dim Count As Integer가 변수 Count를 선언하면 변수 Counts, Count! 카운트# 및 Count®. Count%라는 이름만 사용해야 하지만 이는 변수 이름 Count의 또 다른 형식일 뿐입니다.

변수에 변형 유형을 할당하려면 As 없이 Dim 연산자를 사용하세요.

Dim F00은 F00을 유형 변형의 변수로 간주합니다.

다음과 같이 작성할 수도 있습니다. Dim Foo As Variant - 읽기가 더 쉽습니다.

양식과 관련된 모든 이벤트 절차에 사용할 수 있는 각 정보는 이 양식의 (일반) 섹션에 있습니다.

Option Explicit를 (일반) 섹션에 배치하려면 다음 단계를 따르십시오.

1. 코드 창을 엽니다.

2. 개체 창에 제공되는 개체 목록에서 개체(일반)를 선택합니다.

3. Proc 목록에서 (Declaration)을 선택합니다.

4. 명시적 옵션을 입력합니다.

사용자가 도움말 시스템의 예제 프로그램을 실험할 때 (일반) 섹션에서 양식 수준 선언을 사용해야 하는 경우가 많습니다.

도움말 시스템에서 예제 프로그램을 복사하려면 해당 예제에 대한 코드 창에서 복사 버튼을 사용하십시오. 그런 다음 편집 메뉴의 붙여넣기 옵션을 사용하여 코드 창에 예제를 배치할 수 있습니다. Visual Basic은 Option Explicit 명령을 발견하면 선언되지 않은 변수의 사용을 중지합니다. 이러한 변수를 사용하려고 하면 오류 메시지가 표시됩니다.

필수 변수 유형 선언을 적용하려면 Tools|0ptions 대화 상자의 Editor 페이지를 사용하면 됩니다. 프로그래머는 항상 이 플래그를 설정합니다. 그러면 Option Explicit 문이 코드에서 필요한 위치에 자동으로 배치됩니다.

Let's Build a Compiler 책에서 발췌! 크렌쇼 잭

인터넷 인텔리전스 [행동 지침] 책에서 작가 Yushchuk 예브게니 레오니도비치

다양한 유형의 정보 검색 사례가 포함된 인터넷 메타 검색 엔진 열성적인 인터넷 사용자 각자는 모든 검색 엔진의 장점을 결합한 단일 정보 시스템의 존재를 마음 속으로 꿈꿉니다.

Windows® 2000의 Server Data Storage Technologies 책에서 발췌 Windows® Server 2003 작성자 : Dileep Naik

10장 다양한 Windows NT 버전의 저장소 기능 이전 장에서는 특정 저장소 기능 측면에서 Windows 아키텍처를 살펴보았습니다. 이 장은 스토리지 하위 시스템을 사용하는 전문가를 대상으로 합니다.

HTML 5, CSS 3 및 Web 2.0 책에서 발췌. 현대적인 웹 사이트의 개발. 작가 드로노프 블라디미르

HTML 5, CSS 3 및 Web 2.0 책에서 발췌. 최신 웹 사이트의 개발 작가 드로노프 블라디미르

변수 선언 웹 스크립트 코드에서 변수를 사용하기 전에 변수를 선언하는 것이 좋습니다. 이렇게 하려면 변수 선언 연산자 var를 사용하고 그 뒤에 변수 이름을 표시합니다. var x 이제 선언된 변수에 무엇이든 할당할 수 있습니다.

초보자를 위한 VBA 책에서 스티브 커밍스

변수 선언 6장에서 설명한 것처럼 선언은 명명된 객체를 사용하겠다고 컴파일러에 알리고 해당 객체의 유형을 명시적으로 설명하는 VBA 문입니다. 선언 연산자는 다음과 같은 작업에 가장 자주 사용됩니다.

개인용 컴퓨터를 위한 C 프로그래밍 언어 책에서 저자 보흐코프 S.O.

한 줄에 여러 변수 선언하기 한 코드 줄에 여러 변수를 선언할 수 있습니다. Dim 키워드는 한 번만 인쇄되며 변수는 쉼표로 구분됩니다. 그러나 각 변수에 대한 데이터 유형을 지정하는 것을 잊지 마십시오.

The Art of Shell Scripting Language 프로그래밍 책에서 발췌 쿠퍼 멘델

예제를 사용한 Linux 프로그래밍 책에서 작가 로빈스 아놀드

사용자 유형 변수 선언 내장 데이터 유형과 마찬가지로 사용자 정의 유형은 적절한 유형의 변수를 선언할 때까지 추상 개념으로 남아 있습니다. 여기에는 특별한 것이 필요하지 않습니다. 표준 구문이 필요합니다.

책 "성전의 종말"에서. 파스칼 대 C 저자 Krivtsov M. A.

클래스 변수 선언 여러 속성이나 메서드에 필요한 변수를 선언하려면 클래스 모듈의 맨 시작 부분에 있는 선언 섹션을 사용하세요. 객체는 주로 다음 용도로 사용되므로 이러한 변수는 항상 로컬(개인)로 선언하세요.

작가의 책에서

변수 선언 이 섹션에서는 변수 선언의 구문과 의미에 대한 일관된 설명을 제공합니다. 변수 유형은 다음 표에 나열되어 있습니다. 표 3.4. 변수 유형 설명 단순 변수 정수 또는

작가의 책에서

데이터 선언 Near, Far 또는 huge 키워드 바로 뒤에 식별자가 오면 해당 데이터 요소는 표준 세그먼트(near의 경우)에 배치되거나 다른 데이터 세그먼트(far 또는 huge의 경우)에 배치될 수 있습니다. 예를 들어,

작가의 책에서

9.4. 변수 선언: 선언 및 조판 명령어는 내장 명령어(서로 완전히 동일하고 동의어임)이며 변수에 제한을 가하기 위한 것입니다. 이는 유형 제어에 대한 매우 약한 시도입니다.

작가의 책에서

8.1.2. 다양한 유형의 파일 시스템 개요 참고: 이 섹션의 논의는 Linux에만 적용됩니다. 그러나 많은 최신 Unix 시스템에도 비슷한 기능이 있습니다. 시스템 설명서를 검토하는 것이 좋습니다. 역사적으로 V7 Unix는 한 가지 유형만 지원했습니다.

작가의 책에서

표준 데이터 유형 및 변수 설명 변수에 할당된 값은 설명 섹션에 지정된 유형과 일치해야 합니다. 파스칼에는 네 가지 표준 값 유형이 있습니다(각 프로그램에서 선택적으로 정의할 수 있는 유형에 추가).

작가의 책에서

표준 데이터 유형 및 변수 설명 int - 정수long - 긴 정수short - 짧은 정수unsigned - 부호 없는 정수float - realdouble - 긴 realchar - 리터럴 Pfscal과 달리 C에는 논리 변수가 없습니다. 변수 설명의 예:int k;char a,



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: