Visual Basic ve BASIC'te DIM'in anlamı nedir?


Yanıtlar:


318

Dim başlangıçta (BASIC'te) bir dizinin boyutlarını tanımlamak için kullanıldığından Boyut'u temsil ediyordu.

(BASIC'in orijinal uygulaması, DIMENSION'ın hecelendiği FORTRAN'dan gelen Dartmouth BASIC idi.)

Günümüzde Dim, sadece dizileri değil, herhangi bir değişkeni tanımlamak için kullanılmaktadır, bu yüzden anlamı artık sezgisel değildir.


64
biraz arka plan yardımcı olabilir. Temel sürümlerin ilk sürümlerinde bildirilmesi gereken tek değişken dizilerdi. Bu dizinin boyutlarını ayarlamak için "Dim" anahtar sözcüğü kullanıldı.
Chris Simpson

26
80'lerin başında bir gw-temel programlama kılavuzu okuduğumu hatırlıyorum ve açıkça DIM anlamına gelen Bellek Bildirimi açıklayan hatırlıyorum. '64'ten Darthmouth Temel kılavuzunun okunması, değişkenleri ve değerlerini atayan LET ve READ ifadelerine sahiptir ve daha sonra '68 DIM'de yer alır ve aslında diziler için kullanılır. bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris

4
Akılda tutulması gereken bir şey, erken dil gelişiminde, bir anahtar kelimenin birden fazla anlamı olması için aşırı yüklenmenin yaygın olduğu yönündedir. Orijinal Basic'te "Dim" zaten dizi değişkenlerini bildirmek için kullanılan bir anahtar kelime olduğundan, anahtar kelime tüm değişkenleri bildirmek için genişletildi. Birden fazla nedenden dolayı yeni bir anahtar kelime tanıtmaktan kaçınıldı; bunlardan biri, yeni anahtar kelimeyi zaten değişken adı olarak kullanan mevcut programları kırmak istemiyordu. Bugün daha karmaşık ayrıştırma teknolojilerine ve daha hızlı bilgisayarlara sahibiz, bu tür sınırlamaları görmüyoruz.
14'te

3
Örneğin, Visual Basic gibi sonraki Basic sürümlerinde, bir tür ve değişken aynı adda olabilir. Aşırı yüklenmiş bir anahtar kelimeye harika bir örnek C ++ 'da "statik" tir. Farklı bağlamlarda farklı şeyler ifade eder.
14'te

@RandyMorris ile bağlantılı büyük BASIC kılavuzuna bakanlar için, ilk DIM referansı 21 numaralı sayfada veya PDF'nin kendisinde 26. sayfadadır. Daha resmi tanım PDF'nin 37 veya 41 numaralı sayfasındadır.
John Cummings

120

Dim ona atfedilen farklı anlamları vardı.

DimAnlam "bellekte beyan" ile ilgili referanslar buldum , daha ilgili referans Siebel VB Dil Referans bir parçası olarak Oracle yayınlanan Dim Bildirimi bir belgedir . Tabii ki, bellekteki değişkenleri bildirmezseniz, bunu nerede yaptığınızı iddia edebilirsiniz. Belki "Modülde Beyan Et" nasıl Dimkullanıldığını göz önünde bulundurarak iyi bir alternatiftir .

Benim düşünceme göre, "Bellekte Beyan" aslında nasıl kullanılacağını öğrenmeyi kolaylaştırmak için yaratılmış bir anımsatıcıdırDim . "Bellekte Bildir" i, dilin mevcut sürümlerinde ne yaptığını açıkladığı için daha iyi bir anlam olarak görüyorum, ama bu doğru bir anlam değil.

Aslında, Basic'in kökeninde Dimsadece dizileri bildirmek için kullanılmıştır. Normal değişkenler için anahtar kelime kullanılmadı, bunun yerine türleri adlarından çıkarıldı. Örneğin, değişkenin adı ile bitiyorsa, $bu bir dizedir (örneğin, VB6'ya kadar olan yöntem adlarında bile görebileceğiniz bir şeydir Mid$). Ve böylece, Dimsadece dizilere boyut verirdiniz ( ReDimdizileri yeniden boyutlandırdığına dikkat edin ).


Gerçekten Önemli mi? Yani, yapay bir dilde anlamı olan bir anahtar kelime. İngilizce veya başka bir doğal dilde bir kelime olması gerekmez. Yani bu sadece ne istersen demek olabilir, önemli olan işe yaraması.

Her neyse, bu tamamen doğru değil. BASIC kültürümüzün bir parçası olduğundan ve neden olduğu gibi olduğunu anlamak - umarım - dünya vizyonumuzu geliştirmemize yardımcı olacaktır.


Bilgisayarımdan, kaybolmuş gibi görünen kültürümüzün bu küçük parçasını korumaya yardımcı olmak arzusu ile oturuyorum, bunun yerine ne olduğumuzu tahmin etmemiz gerekiyor. Ve böylece, MSDN sürümünden hem geçerli hem de eski CD'leri kazdık. Ayrıca eski QBasic [DOSBox kullanmak zorunda kaldı] için belgesel aradım ve nasıl konuştuğunu bulmak için bazı Darthmouth kılavuzu almak başardı Dim. Hayal kırıklığım Dimiçin neyi temsil ettiğini söylemiyorlar ve sadece nasıl kullanıldığını söylüyorlar.

Ama umudum azalmadan önce, bu BBC Mikrobilgisayar Sistemi Kullanılmış Kılavuzunu bulmayı başardım (1984'ten beri iddia ediyor ve bundan şüphe etmek istemiyorum). BBC Mikrobilgisayar, BBC BASIC adlı bir BASIC varyantı kullandı ve belgede açıklandı. Olsa da, bunun ne anlama Dimgeldiğini söylemiyor, diyor (sayfa 104):

... N $ 'ı istediğiniz kadar girişe sahip olacak şekilde boyutlandırabilirsiniz. Örneğin, DIM N $ (1000) 1000 farklı ad için boşluk içeren bir dize dizisi oluşturur.

Dediğim gibi, o kadar da söylemez Dimboyutun açılımı, ancak ilişkilendirerek olduğunu göstermek için kanıt olarak hizmet vermektedir Dimile Dimensionbu belgeyi yazma anda ortak bir şeydi.

Şimdi, daha sonra (sayfa 208'de), DIM anahtar sözcüğünü açıklayan bölümün başlığı (not: içeriklerde listelenmeyen) ödüllendirici bir sürprizim var:

Bir dizinin DIM boyutu

Yani, "Dim kısaltması ..." teklifini almadım ama sanırım bu belgeyi okuyabilen her insanın bu Dimboyut anlamına geleceği açık .


Yenilenen umutla nasıl Dimseçildiğini araştırmaya karar verdim . Yine, bu konuda bir hesap bulamadım, yine de kesin bir teklif bulabildim:

Bir diziyi kullanabilmeniz için diziyi bir DIM (boyut) deyiminde tanımlamanız gerekir.

Bunu, BASIC'in ortak yazarı Thomas Eugene Kurtz tarafından kurulan True BASIC inc'in web sayfasında True BASIC Çevrimiçi Kullanıcı Kılavuzlarının bir parçası olarak bulabilirsiniz .


Yani, gerçekte, Dimiçin bir kısayol DIMENSIONve evet. Bu daha önce FORTRAN'da vardı, bu yüzden muhtemelen Patrick McDonald'ın cevabında söylediği gibi FORTRAN'ın etkisi ile seçildi .


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)

1
Ben de "hafızada beyan" duydum.
jocull

"Gerçekten Önemli mi?" Takdir edilmeyen şaka. Ayrıca şimdi insanlara bunun Dimgerçekte ne anlama geldiğinde ısrar edeceğim
Jacob Stamm

30

Başlangıçta BASIC'te dizilerin boyutunu belirtmek için kullanıldığından Boyut için kısadır.

DIM - (boyut kısaltması) dizilerin boyutunu tanımlar

Referans: http://en.wikipedia.org/wiki/Dartmouth_BASIC

Orijinal BASIC derleyici kaynak kodunun, bir DIMkomut bulurken atlayacağı ve anahtar kelimenin orijinal amacını açıkça görebileceğiniz bir kısmı:

DIM    LDA XR01             BACK OFF OBJECT POINTER
       SUB N3
       STA RX01
       LDA L        2       GET VARIABLE TO BE DIMENSIONED
       STA 3
       LDA S        3
       CAB N36              CHECK FOR $ ARRAY
       BRU *+7              NOT $
       ...

Ref: http://dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf

Daha sonra, daha yeni uygulamalarda değişkenlerin türünü belirleme imkanı eklendiğinde, her türlü değişkeni bildirmek için kullanılmaya başlandı.


15

Bir değişkeni boyutlandırın, temel olarak derleyiciye bir noktada bu tür bir değişkene ihtiyacınız olacağını söylüyorsunuz.


13

Boyut anlamına gelir, ancak genellikle "Değişken Oluştur" veya "Bunun için Alan Ayırın" olarak okunur.



7

DIM Bellekte Bildirim anlamına gelir DIM x Yeni Tamsayı, bellekte x değişkeninin depolandığı bir alan oluşturur


6

Gün içinde dizi için DIM ayrılmış bellek ve bellek sınırlı olduğunda nasıl kullandığınıza dikkat etmelisiniz. Bir keresinde (1981'de) 48Kb RAM ile TRS-80 Model III üzerinde bir TEMEL program yazdım. DIM deyimini değiştirerek dizi boyutunu küçültene kadar 16Kb RAM ile benzer bir makinede çalışmaz


4

Boyut Kısa. Bu bir tür değişken. Bu sözcükle bir değişken oluşturduğunuzu bildirir (veya "Visual Basic" söyle).


3

Dim anahtar sözcüğü isteğe bağlı, değiştiricilerle kullandığımızda - Genel, Korumalı, Arkadaş, Korumalı Arkadaş, Özel, Paylaşılan, Gölgeler, Statik, ReadOnly vb. Static nTotal As Integer

Referans tipi için, biz kullanmak zorunda yeni sınıf ya da yapının yeni bir örneğini oluşturmak için anahtar kelime. örn Dim lblTop As New System.Windows.Forms.Label.

Dim deyimi, Option Infer ayarını Açık olarak ayarladığınızda veri türü olmadan kullanılabilir . Bu durumda derleyici, bir değişkenin veri türünü başlatma ifadesinin türünden ihlal eder. Misal :

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

Yukarıdaki ifade, Dim nExpVar As Integer


StackOverflow'a hoş geldiniz ve bu cevap için teşekkür ederim, ancak aynı cevabı veren diğer birçok cevaba gerçekten de genişlemiyor.
Deanna
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.