विजुअल बेसिक और BASIC में DIM का क्या अर्थ है?


जवाबों:


318

डिम मूल रूप से (बुनियादी रूप से) आयाम के लिए खड़ा था, क्योंकि इसका उपयोग एक सरणी के आयामों को परिभाषित करने के लिए किया गया था।

(BASIC का मूल कार्यान्वयन डार्टमाउथ BASIC था, जो FORTRAN से उतरा, जहाँ DIMENSION का जादू चला।)

आजकल, डिम का उपयोग किसी भी चर को परिभाषित करने के लिए किया जाता है, न कि केवल सरणियों के लिए, इसलिए इसका अर्थ अब सहज नहीं है।


64
थोड़ी पृष्ठभूमि मदद कर सकती है। बेसिक के शुरुआती रिलीज में केवल वही वेरिएबल्स जिन्हें घोषित करने की आवश्यकता थी, वे एरेज़ थे। इस सरणी के आयाम सेट करने के लिए "मंद" कीवर्ड का उपयोग किया गया था।
क्रिस सिम्पसन

26
मुझे याद है कि 80 के दशक की शुरुआत में एक gw- बेसिक प्रोग्रामिंग गाइड पढ़ना और मुझे यह स्पष्ट रूप से याद है कि यह DIM का अर्थ डेक्लेयर इन मेमोरी है। '64 से डार्थमाउथ बेसिक गाइड पढ़ने से LET और READ स्टेटमेंट्स वेरिएबल्स और उनके वैल्यू को असाइन करते हैं और बाद में '68 DIM में शामिल होते हैं और वास्तव में सरणियों के लिए उपयोग किया जाता है। bitavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris

4
एक बात का ध्यान रखें कि, प्रारंभिक भाषा के विकास में, एक कीवर्ड को कई अर्थों में अधिभारित करना सामान्य था। चूंकि, मूल बेसिक में, "डिम" पहले से ही एक कीवर्ड था जिसका उपयोग ऐरे वेरिएबल्स को घोषित करने के लिए किया जाता था, इस कीवर्ड को अन्य वेरिएबल्स घोषित करने के लिए बढ़ाया गया था। नए कीवर्ड का परिचय कई कारणों से दिया गया था, जिनमें से एक यह है कि वे मौजूदा कार्यक्रमों को तोड़ना नहीं चाहते थे जो पहले से ही नए कीवर्ड को एक चर नाम के रूप में उपयोग करते थे। आज हमारे पास अधिक परिष्कृत पार्सिंग तकनीकें और तेज कंप्यूटर हैं, हम उन प्रकार की सीमाओं को नहीं देखते हैं।
जुमलाइफगार्ड २०

3
उदाहरण के लिए, बाद के बेसिक में, जैसे कि Visual Basic, एक प्रकार और एक चर एक ही नाम हो सकता है। किसी कीवर्ड का बहुत बड़ा उदाहरण जो बहुत अधिक लोड किया गया था वह C ++ में "स्थिर" है। अलग-अलग संदर्भों में इसका मतलब अलग-अलग होता है।
zumalifeguard

लिंक किए गए महान BASIC मैनुअल @RandyMorris को देखने वालों के लिए, DIM का पहला संदर्भ पृष्ठ संख्या 21 पर है या यह स्वयं पीडीएफ में पेज 26 है। अधिक औपचारिक परिभाषा पीडीएफ में ही पृष्ठ संख्या 37 या 41 पर है।
जॉन कमिंग्स

120

Dim इसके लिए विभिन्न अर्थों को जिम्मेदार ठहराया गया है।

मैंने "डिक्लेयर इन मेमोरी"Dim अर्थ के बारे में संदर्भ पाया है , अधिक प्रासंगिक संदर्भ डिम स्टेटमेंट पर एक दस्तावेज़ है जो सीरेबेल वीबी भाषा संदर्भ के भाग के रूप में ओरेकल प्रकाशित किया गया है। बेशक, आप यह तर्क दे सकते हैं कि यदि आप चर को स्मृति में घोषित नहीं करते हैं तो आप कहां करते हैं? हो सकता है कि "मॉड्यूल में घोषणा" एक अच्छा विकल्प है जिसका उपयोग करने पर विचार किया जाता है।Dim

मेरी राय में, "डिक्लेयर इन मेमोरी" वास्तव में एक महामारी है , जिसका उपयोग करना सीखना आसान बनाने के लिए बनाया गया है Dim। मैं "डिक्लेयर इन मेमोरी" को बेहतर अर्थ के रूप में देखता हूं क्योंकि यह वर्णन करता है कि यह भाषा के वर्तमान संस्करणों में क्या करता है, लेकिन यह उचित अर्थ नहीं है।

वास्तव में, बेसिक के मूल Dimमें केवल ऐरे को घोषित करने के लिए उपयोग किया जाता था। नियमित चर के लिए किसी भी प्रकार के कीवर्ड का उपयोग नहीं किया गया था, इसके बजाय उनके प्रकार को उनके नाम से अनुमान लगाया गया था। उदाहरण के लिए, यदि चर का नाम $इसके साथ समाप्त होता है, तो यह एक स्ट्रिंग है (यह कुछ ऐसा है जिसे आप VB6 तक विधि नामों में भी देख सकते हैं, उदाहरण के लिए Mid$)। और इसलिए, आपने Dimकेवल सरणियों को आयाम देने के लिए उपयोग किया था (नोटिस जो ReDimसरणियों का आकार देता है)।


वास्तव में, क्या यह बात है ? मेरा मतलब है, यह एक ऐसा कीवर्ड है जिसका कृत्रिम भाषा के अंदर अर्थ है। यह अंग्रेजी या किसी अन्य प्राकृतिक भाषा में एक शब्द नहीं है। तो इसका मतलब यह हो सकता है कि आप जो चाहते हैं, वह सब मायने रखता है कि यह काम करता है।

किसी भी तरह, यह पूरी तरह से सच नहीं है। जैसा कि BASIC हमारी संस्कृति का हिस्सा है, और यह समझना कि ऐसा क्यों हुआ जैसा कि यह है - मुझे आशा है कि - दुनिया की हमारी दृष्टि को बेहतर बनाने में मदद करेगा।


मैं अपने कंप्यूटर से अपनी संस्कृति के इस छोटे से टुकड़े को संरक्षित करने में मदद करने की इच्छा के साथ बैठा हूं जो खो गया लगता है, हमारे अनुमान के द्वारा प्रतिस्थापित किया गया था कि क्या था। और इसलिए, मैंने 1998 संस्करण से वर्तमान और पुरानी सीडी दोनों को एमएसडीएन खोद लिया है। मैंने पुराने QBasic [DOSBox का उपयोग करने के लिए] डॉक्यूमेंटेशन को भी खोजा है और कुछ डार्थमाउथ मैनुअल प्राप्त करने में कामयाब रहा है, सभी यह पता लगाने के लिए कि वे कैसे बात करते हैं Dim। मेरी निराशा के लिए, वे यह नहीं कहते कि क्या करना है Dim, और केवल यह कहें कि इसका उपयोग कैसे किया जाता है।

लेकिन इससे पहले कि मेरी आशा मंद हो, मैं इस बीबीसी माइक्रो कंप्यूटर सिस्टम यूज्ड गाइड (जो 1984 से होने का दावा करता हूं, और मैं इस पर संदेह नहीं करना चाहता) को खोजने में कामयाब रहा । बीबीसी माइक्रो कंप्यूटर ने बेसिक के एक संस्करण का उपयोग किया जिसे बीबीसी बेसिक कहा जाता है और यह दस्तावेज़ में वर्णित है। हालांकि, यह नहीं कहता कि यह किस Dimलिए खड़ा है, यह कहता है (पृष्ठ 104 पर):

... आप जितनी चाहे उतनी प्रविष्टियाँ करने के लिए N $ को आयाम दे सकते हैं। उदाहरण के लिए, डीआईएम एन $ (1000) 1000 विभिन्न नामों के लिए अंतरिक्ष के साथ एक स्ट्रिंग सरणी बनाएगा।

जैसा कि मैंने कहा, यह कहना है कि करता है Dimआयाम के लिए खड़ा है, लेकिन पता चलता है कि जोड़ सबूत के रूप में कार्य करता है Dimके साथ Dimensionहै कि दस्तावेज़ लिखने के समय एक आम बात थी।

अब, मुझे बाद में (पृष्ठ 208 पर) एक पुरस्कृत आश्चर्य मिला, उस अनुभाग का शीर्षक जो डीआईएम कीवर्ड का वर्णन करता है (ध्यान दें: जो सामग्री में सूचीबद्ध नहीं है) कहते हैं:

किसी सरणी का DIM आयाम

इसलिए, मुझे "डिम स्टैंड्स फॉर ..." का उद्धरण नहीं मिला, लेकिन मुझे लगता है कि यह स्पष्ट है कि कोई भी सभ्य इंसान जो उन दस्तावेज़ों को पढ़ने में सक्षम है, वे उस Dimआयाम का विचार करेंगे ।


नए सिरे से आशा के साथ, मैंने यह चुनने का फैसला किया कि कैसे Dimचुना गया। फिर से, मुझे इस विषय पर एक खाता नहीं मिला, फिर भी मैं एक निश्चित उद्धरण खोजने में सक्षम था:

इससे पहले कि आप एक सरणी का उपयोग कर सकें, आपको इसे डीआईएम (आयाम) विवरण में परिभाषित करना होगा।

आप इसे बेसिक के सह-लेखक थॉमस यूजीन कुर्तज़ द्वारा स्थापित ट्रू बेसिक इंक के वेब पेज पर ट्रू बेसिक ऑनलाइन यूजर गाइड्स के हिस्से के रूप में पा सकते हैं ।


तो, वास्तव में, के Dimलिए एक आशुलिपि है DIMENSION, और हाँ। यह पहले से फोरट्रान में मौजूद था, इसलिए यह संभावना है कि इसे फोरट्रान के प्रभाव से उठाया गया था क्योंकि पैट्रिक मैकडॉनल्ड ने अपने जवाब में कहा था


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

1
मैंने सुना है "स्मृति में घोषणा" भी।
जॉचुल

"सच में, क्या यह बात है ?" हंसी-मजाक में उलझा हुआ। इसके अलावा, मैं अब लोगों से आग्रह करने जा रहा हूं कि यह वही है जो Dimवास्तव में खड़ा है
जैकब स्टैम

30

यह आयाम के लिए छोटा है, क्योंकि मूल रूप से इसका उपयोग सरणियों के आकार को निर्दिष्ट करने के लिए BASIC में किया गया था।

डीआईएम - (आयाम के लिए छोटा) सरणियों के आकार को परिभाषित करता है

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

मूल BASIC संकलक स्रोत कोड का एक हिस्सा, जहां यह DIMकमांड ढूंढते समय कूदता है , जिसमें आप कीवर्ड के लिए मूल इरादे को स्पष्ट रूप से देख सकते हैं:

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 $
       ...

रेफरी: http://dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf

बाद में इसे सभी प्रकार के चर घोषित करने के लिए इस्तेमाल किया जाने लगा, जब चर के प्रकार को निर्दिष्ट करने की संभावना को और अधिक कार्यान्वयन में जोड़ा गया।


15

आयाम एक चर, मूल रूप से आप संकलक को बता रहे हैं कि आपको किसी बिंदु पर इस प्रकार के चर की आवश्यकता होने वाली है।


13

यह आयाम के लिए खड़ा है, लेकिन आम तौर पर इसे "वैरिएबल बनाएं" या "इसके लिए आवंटित स्थान" के रूप में पढ़ा जाता है।


10

परिवर्तनीय घोषणा। प्रारंभ में, यह "आयाम" के लिए छोटा था, जो कि किसी भी महत्वपूर्ण डिग्री के लिए प्रोग्रामिंग (इस विशिष्ट कीवर्ड के बाहर) में उपयोग किया जाने वाला शब्द नहीं है।

http://in.answers.yahoo.com/question/index?qid=20090310095555AANmiAZ


7

DIM का अर्थ है मेमोरी में डिक्लेरेशन DIM x जैसा कि नया Integer मेमोरी में एक स्पेस बनाता है जहां वेरिएबल x को स्टोर किया जाता है


6

दिन में वापस डीआईएम ने सरणी के लिए मेमोरी आरक्षित की और जब मेमोरी सीमित हो गई तो आपको सावधान रहना पड़ा कि आपने इसका उपयोग कैसे किया। मैंने एक बार (1981 में) 48Kb RAM के साथ TRS-80 मॉडल III पर एक बुनियादी कार्यक्रम लिखा था। यह 16Kb RAM के साथ एक समान मशीन पर नहीं चलेगा जब तक कि मैं DIM स्टेटमेंट को बदलकर सरणी का आकार कम नहीं कर देता


4

आयाम के लिए लघु। यह एक प्रकार का परिवर्तनशील है। आप घोषित करते हैं (या "बताओ" विज़ुअल बेसिक) कि आप इस शब्द के साथ एक चर सेट कर रहे हैं।


3

डिम कीवर्ड वैकल्पिक है, जब हम इसे संशोधक के साथ उपयोग कर रहे हैं- सार्वजनिक, संरक्षित, मित्र, संरक्षित मित्र, निजी, साझा, छाया, स्टेटिक, ReadOnly आदि जैसे - Static nTotal As Integer

संदर्भ प्रकार के लिए, हमें कक्षा या संरचना के नए उदाहरण बनाने के लिए नए कीवर्ड का उपयोग करना होगा। उदा Dim lblTop As New System.Windows.Forms.Label

जब आप ऑप्शन ऑन पर सेट करते हैं तो डायट स्टेटमेंट के साथ डिम स्टेटमेंट का उपयोग किया जा सकता है । उस स्थिति में कंपाइलर अपनी इनिशियलाइज़ेशन एक्सप्रेशन के प्रकार से एक वैरिएबल के डेटा टाइप को संक्रमित करता है। उदाहरण :

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

उपरोक्त कथन इसके समकक्ष है- Dim nExpVar As Integer


StackOverflow में आपका स्वागत है और इस उत्तर के लिए धन्यवाद, लेकिन यह वास्तव में कई अन्य उत्तरों पर विस्तार नहीं करता है जो सभी एक ही उत्तर देते हैं।
डीनना
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.