लेबल (कंप्यूटर विज्ञान): Difference between revisions
(Created page with "{{short description|Sequence of characters that identifies a location within source code}} प्रोग्रामिंग भाषाओं में, एक ल...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Sequence of characters that identifies a location within source code}} | {{short description|Sequence of characters that identifies a location within source code}} | ||
[[प्रोग्रामिंग भाषा]]ओं में | [[प्रोग्रामिंग भाषा]]ओं में एक लेबल वर्णों का एक क्रम होता है जो स्रोत सांकेतिक चिन्ह के भीतर एक स्थान की पहचान करता है अधिकांश भाषाओं में लेबल एक पहचानकर्ता कंप्यूटर भाषा का रूप लेते हैं जिसके बाद अधिकतर एक [[विराम चिह्न]] जैसे एक [[कोलन (विराम चिह्न)|कोलन विराम चिह्न]] होता है कई उच्च स्तरीय प्रोग्रामिंग भाषाओं व उच्च स्तरीय भाषाओं में एक लेबल का उद्देश्य एक गंतव्य के रूप में कार्य करना है <code>[[GOTO]]</code> कथन <ref>{{Cite web |url=http://c0x.coding-guidelines.com/6.8.6.1.html |title=C Standard section 6.8.6.1 The goto statement |access-date=2008-07-03 |archive-date=2007-12-24 |archive-url=https://web.archive.org/web/20071224215314/http://c0x.coding-guidelines.com/6.8.6.1.html |url-status=dead }}</ref><ref>{{cite web|url=http://www.qbasicnews.com/qboho/qckgoto.shtml|title=गोटो स्टेटमेंट क्विकस्क्रीन|date=1988|accessdate=2008-07-03|publisher=Microsoft|archive-date=2009-07-25|archive-url=https://web.archive.org/web/20090725050926/http://www.qbasicnews.com/qboho/qckgoto.shtml|url-status=dead}}</ref> [[ सभा की भाषा ]]में लेबल का उपयोग कहीं भी किया जा सकता है एक [[ स्मृति पता |स्मृति पता]] उदाहरण के लिए एक चालक के रूप में <code>[[JMP (x86 instruction)|JMP]]</code> या <code>[[MOV (x86 instruction)|MOV]]</code> निर्देश हैं<ref>{{cite web|url=http://www.cs.uaf.edu/2007/fall/cs301/support/x86/index.html|title=nasm x86 Assembly|date=|accessdate=2008-07-03|author=O. Lawlor}}</ref> [[ पास्कल (प्रोग्रामिंग भाषा) ]]और इसकी व्युत्पन्न विविधताओं में भी कुछ भाषाएँ जैसे [[फोरट्रान]] और [[ बुनियादी ]]संख्यात्मक लेबल का समर्थन करती हैं <ref name="GBvsQB">{{cite web|url=http://support.microsoft.com:80/kb/73084|title=GW-बेसिक और QBasic के बीच अंतर|archive-url=https://web.archive.org/web/20100210111932/http://support.microsoft.com:80/kb/73084|archive-date=2010-02-10}}</ref> लेबल का उपयोग बयानों के [[संकलक]] अनुक्रम में प्रवेश बिंदु की पहचान करने के लिए भी किया जाता है उदाहरण के लिए [[डिबगिंग]] के दौरान। | ||
== सी == | == सी == | ||
C | C प्रोग्रामिंग भाषा में एक लेबल सांकेतिक चिन्ह में एक बयान की पहचान करता है एक ही बयान में कई लेबल हो सकते हैं लेबल केवल सांकेतिक चिन्ह में स्थान इंगित करते हैं और लेबल तक पहुंचने का वास्तविक निष्पादन पर कोई प्रभाव नहीं पड़ता है। | ||
=== फ़ंक्शन लेबल === | === फ़ंक्शन लेबल === |
Revision as of 21:55, 25 June 2023
प्रोग्रामिंग भाषाओं में एक लेबल वर्णों का एक क्रम होता है जो स्रोत सांकेतिक चिन्ह के भीतर एक स्थान की पहचान करता है अधिकांश भाषाओं में लेबल एक पहचानकर्ता कंप्यूटर भाषा का रूप लेते हैं जिसके बाद अधिकतर एक विराम चिह्न जैसे एक कोलन विराम चिह्न होता है कई उच्च स्तरीय प्रोग्रामिंग भाषाओं व उच्च स्तरीय भाषाओं में एक लेबल का उद्देश्य एक गंतव्य के रूप में कार्य करना है GOTO
कथन [1][2] सभा की भाषा में लेबल का उपयोग कहीं भी किया जा सकता है एक स्मृति पता उदाहरण के लिए एक चालक के रूप में JMP
या MOV
निर्देश हैं[3] पास्कल (प्रोग्रामिंग भाषा) और इसकी व्युत्पन्न विविधताओं में भी कुछ भाषाएँ जैसे फोरट्रान और बुनियादी संख्यात्मक लेबल का समर्थन करती हैं [4] लेबल का उपयोग बयानों के संकलक अनुक्रम में प्रवेश बिंदु की पहचान करने के लिए भी किया जाता है उदाहरण के लिए डिबगिंग के दौरान।
सी
C प्रोग्रामिंग भाषा में एक लेबल सांकेतिक चिन्ह में एक बयान की पहचान करता है एक ही बयान में कई लेबल हो सकते हैं लेबल केवल सांकेतिक चिन्ह में स्थान इंगित करते हैं और लेबल तक पहुंचने का वास्तविक निष्पादन पर कोई प्रभाव नहीं पड़ता है।
फ़ंक्शन लेबल
फ़ंक्शन लेबल में एक पहचानकर्ता होता है, जिसके बाद एक कोलन होता है। ऐसा प्रत्येक लेबल किसी फ़ंक्शन में एक कथन को इंगित करता है और उसके पहचानकर्ता को उस फ़ंक्शन के भीतर अद्वितीय होना चाहिए। अन्य फ़ंक्शन लेबल के लिए उसी नाम का उपयोग कर सकते हैं। लेबल पहचानकर्ता अपने स्वयं के नामस्थान पर कब्जा कर लेते हैं - एक लेबल के समान नाम के साथ चर (कंप्यूटर विज्ञान) और सबरूटीन हो सकता है।
void foo(int number)
{
if (number < 0)
goto error;
bar(number);
return;
error:
fprintf(stderr, "Invalid number!\n");
}
यहाँ त्रुटि लेबल है। स्टेटमेंट के लिए जाओ का उपयोग कोड में लेबल किए गए स्टेटमेंट पर जाने के लिए किया जा सकता है। बाद एक goto
, प्रोग्राम निष्पादन लेबल के बाद कथन के साथ जारी रहता है।
स्विच लेबल
स्विच स्टेटमेंट में दो तरह के लेबल लगाए जा सकते हैं। एक केस लेबल में कीवर्ड होता है case
, उसके बाद एक व्यंजक जो पूर्णांक स्थिरांक का मूल्यांकन करता है। एक डिफ़ॉल्ट लेबल में कीवर्ड होता है default
. कोड में किसी कथन के साथ पूर्णांक मान को संबद्ध करने के लिए केस लेबल का उपयोग किया जाता है। जब एक स्विच स्टेटमेंट पहुंच जाता है, तो केस लेबल के बाद स्टेटमेंट के साथ प्रोग्राम का निष्पादन जारी रहता है, जो स्विच के कोष्ठक में मान से मेल खाता है। यदि ऐसा कोई केस लेबल नहीं है, लेकिन एक डिफ़ॉल्ट लेबल है, तो डिफ़ॉल्ट लेबल के बाद स्टेटमेंट के साथ प्रोग्राम का निष्पादन जारी रहता है। यदि कोई डिफ़ॉल्ट लेबल नहीं है, तो स्विच के बाद प्रोग्राम का निष्पादन जारी रहता है।
switch (die)
{
default:
printf("invalid\n");
break;
case 1:
case 3:
case 5:
printf("odd\n");
break;
case 2:
case 4:
case 6:
printf("even\n");
break;
}
एकल स्विच स्टेटमेंट के भीतर, प्रत्येक केस लेबल से जुड़ा पूर्णांक स्थिरांक अद्वितीय होना चाहिए। डिफॉल्ट स्टेटमेंट हो भी सकता है और नहीं भी। स्विच में लेबल के क्रम पर कोई प्रतिबंध नहीं है। आवश्यकता है कि केस लेबल मान पूर्णांक स्थिरांक का मूल्यांकन करते हैं, संकलक को अनुकूलन के लिए अधिक जगह देता है।
उदाहरण
जावास्क्रिप्ट
जावास्क्रिप्ट भाषा में जावास्क्रिप्ट सिंटैक्स स्टेटमेंट लेबल से पहले हो सकते हैं:
शीर्ष: // सबसे बाहरी फॉर-लूप को लेबल करें।
के लिए (var i = 0; i <4; i++) {
के लिए (var j = 0; j <4; j++) {
अगर (जे
== [[सामान्य लिस्प]] ==
सामान्य लिस्प में लेबल परिभाषित करने के दो तरीके मौजूद हैं। पहले में शामिल है <code>tagbody</code> विशेष संचालिका। वैश्विक नेविगेशन की अनुमति देने वाली कई अन्य प्रोग्रामिंग भाषाओं से इसके उपयोग को अलग करते हुए, जैसे सी (प्रोग्रामिंग भाषा), लेबल केवल इस ऑपरेटर के संदर्भ में ही पहुंच योग्य हैं। ए के अंदर <code>tagbody</code> लेबल को एक प्रतीक से शुरू होने वाले रूपों के रूप में परिभाषित किया गया है; <code>go</code> विशेष प्रपत्र इन लेबलों के बीच नियंत्रण के हस्तांतरण की अनुमति देता है।<ref>{{cite web|url=http://www.lispworks.com/documentation/HyperSpec/Body/s_tagbod.htm|title=CLHS: Special Operator TAGBODY|date=|accessdate=2020-08-18|author=Kent Pitman}}</ref>
<syntaxhighlight lang="lisp">
(let ((iteration NIL))
(tagbody
start
(print 'started)
(setf iteration 0)
increase
(print iteration)
(incf iteration 1)
(go check)
check
(if (>= iteration 10)
(go end)
(go increase))
end
(print 'done)))
एक दूसरी विधि पाठक मैक्रोज़ का उपयोग करती है #n=
और #n#
, जिनमें से पूर्व वस्तु को उसके तुरंत बाद लेबल करता है, बाद वाला उसके मूल्यांकित मूल्य को संदर्भित करता है।[5] इस अर्थ में लेबल चर के बजाय एक विकल्प का गठन करते हैं #n=
एक "वैरिएबल" घोषित करना और आरंभ करना और #n#
इसे एक्सेस करना। प्लेसहोल्डर n लेबल की पहचान करने वाले चुने हुए अहस्ताक्षरित दशमलव पूर्णांक को निर्दिष्ट करता है।
(progn
#1="hello"
(print #1#))
इसके अलावा, कुछ फॉर्म विशेष फॉर्म सहित, बाद के रेफ़रल के लिए एक लेबल की घोषणा की अनुमति देते हैं या अनिवार्य करते हैं block
जो एक नामकरण निर्धारित करता है, और loop
मैक्रो जिसे ए द्वारा पहचाना जा सकता है named
खंड। के उपयोग से नामित फॉर्म से तत्काल प्रस्थान संभव है return-from
विशेष संचालिका।
(block myblock
(loop for iteration from 0 do
(if (>= iteration 10)
(return-from myblock 'done)
(print iteration))))
(loop
named myloop
for iteration from 0
do (if (>= iteration 10)
(return-from myloop 'done)
(print iteration)))
सी के समान फैशन में, मैक्रोज़ case
, ccase
, ecase
,[6] typecase
, ctypecase
और etypecase
स्विच स्टेटमेंट परिभाषित करें।[7]
(let ((my-value 5))
(case my-value
(1 (print "one"))
(2 (print "two"))
((3 4 5) (print "three four or five"))
(otherwise (print "any other value"))))
(let ((my-value 5))
(typecase my-value
(list (print "a list"))
(string (print "a string"))
(number (print "a number"))
(otherwise (print "any other type"))))
यह भी देखें
- के लिए जाओ
- लाइन नंबर
- स्विच स्टेटमेंट
संदर्भ
- ↑ "C Standard section 6.8.6.1 The goto statement". Archived from the original on 2007-12-24. Retrieved 2008-07-03.
- ↑ "गोटो स्टेटमेंट क्विकस्क्रीन". Microsoft. 1988. Archived from the original on 2009-07-25. Retrieved 2008-07-03.
- ↑ O. Lawlor. "nasm x86 Assembly". Retrieved 2008-07-03.
- ↑ "GW-बेसिक और QBasic के बीच अंतर". Archived from the original on 2010-02-10.
- ↑ Kent Pitman. "CLHS: Section 2.4.8". Retrieved 2020-08-18.
- ↑ Kent Pitman. "CLHS: Macro CASE, CCASE, ECASE". Retrieved 2020-08-20.
- ↑ Kent Pitman. "CLSH: Macro TYPECASE, CTYPECASE, ETYPECASE". Retrieved 2020-08-20.