स्टेटमेंट (कंप्यूटर विज्ञान): Difference between revisions
No edit summary |
|||
(6 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|A section of code that details a specific command}} | {{Short description|A section of code that details a specific command}} | ||
[[कंप्यूटर प्रोग्रामिंग]] में, स्टेटमेंट एक [[अनिवार्य प्रोग्रामिंग]] की सिंटेक्स (प्रोग्रामिंग लैंग्वेज) इकाई है जो कुछ क्रियाओं को करने के लिए व्यक्त करती है।<ref>{{cite web | url = http://www.webopedia.com/TERM/S/statement.html | title = कथन| date = September 1996 | publisher = webopedia | access-date = 2015-03-03}}</ref> ऐसी भाषा में लिखा गया [[कंप्यूटर प्रोग्राम]] एक या एक से अधिक | [[कंप्यूटर प्रोग्रामिंग]] में, '''स्टेटमेंट''' एक [[अनिवार्य प्रोग्रामिंग]] की सिंटेक्स (प्रोग्रामिंग लैंग्वेज) इकाई है जो कुछ क्रियाओं को करने के लिए व्यक्त करती है।<ref>{{cite web | url = http://www.webopedia.com/TERM/S/statement.html | title = कथन| date = September 1996 | publisher = webopedia | access-date = 2015-03-03}}</ref> ऐसी भाषा में लिखा गया [[कंप्यूटर प्रोग्राम]] एक या एक से अधिक स्टेटमेंट के अनुक्रम से बनता है। एक स्टेटमेंट में आंतरिक घटक हो सकते हैं (जैसे [[अभिव्यक्ति (कंप्यूटर विज्ञान)]])। | ||
कई प्रोग्रामिंग लैंग्वेज जैसे (एडा, अल्गोल [[Algol 60|60]], C, जावा,[[ पास्कल (प्रोग्रामिंग भाषा) | पास्कल (प्रोग्रामिंग भाषा)]]) स्टेटमेंट्स और डिक्लेरेशन (कंप्यूटर प्रोग्रामिंग) डेफिनिशन / डिक्लेरेशन के बीच अंतर करती हैं। एक परिभाषा या घोषणा उस डेटा को निर्दिष्ट करती है जिस पर | कई प्रोग्रामिंग लैंग्वेज जैसे (एडा, अल्गोल [[Algol 60|60]], C, जावा,[[ पास्कल (प्रोग्रामिंग भाषा) | पास्कल (प्रोग्रामिंग भाषा)]]) स्टेटमेंट्स और डिक्लेरेशन (कंप्यूटर प्रोग्रामिंग) डेफिनिशन / डिक्लेरेशन के बीच अंतर करती हैं। एक परिभाषा या घोषणा उस डेटा को निर्दिष्ट करती है जिस पर प्रोग्राम संचालित होता है, जबकि एक स्टेटमेंट उस डेटा के साथ की जाने वाली कार्रवाइयों को निर्दिष्ट करता है। | ||
जिन | जिन स्टेटमेंट में अन्य स्टेटमेंट नहीं हो सकते वे ''सरल'' हैं; जिनमें अन्य स्टेटमेंट हो सकते हैं वे ''कंपाउंड (यौगिक)'' हैं।<ref name=ALGOL60>Revised ALGOL 60 report section. 4.1.{{cite web|url=http://www.masswerk.at/algol60/report.htm|title=ALGOL 60|access-date=January 23, 2021}}</ref> एक स्टेटमेंट (और वास्तव में एक कार्यक्रम) की उपस्थिति उसके सिंटेक्स (प्रोग्रामिंग भाषाओं) या व्याकरण द्वारा निर्धारित की जाती है। एक स्टेटमेंट का अर्थ उसके [[शब्दार्थ (कंप्यूटर विज्ञान)]] द्वारा निर्धारित किया जाता है। | ||
== सरल | == सरल स्टेटमेंट == | ||
सरल | सरल स्टेटमेंट अपने आप में पूर्ण होते हैं; इनमें असाइनमेंट, सबरूटीन कॉल और कुछ स्टेटमेंट सम्मिलित हैं जो नियंत्रण के प्रोग्राम फ्लो को महत्वपूर्ण रूप से प्रभावित कर सकते हैं (जैसे [[ के लिए जाओ ]], [[रिटर्न स्टेटमेंट]], स्टॉप/हॉल्ट)। कुछ भाषाओं में, इनपुट और आउटपुट, अभिस्टेटमेंट और निकास को विशेष स्टेटमेंटों द्वारा नियंत्रित किया जाता है, जबकि अन्य भाषाएँ पूर्वनिर्धारित सबरूटीन्स के लिए कॉल का उपयोग करती हैं। | ||
* [[ असाइनमेंट (कंप्यूटर विज्ञान) ]] | * [[ असाइनमेंट (कंप्यूटर विज्ञान) ]] | ||
Line 16: | Line 16: | ||
**फोरट्रान: <code>CALL ''subroutine name''(''parameters'')</code> | **फोरट्रान: <code>CALL ''subroutine name''(''parameters'')</code> | ||
**सी, सी++, जावा, पीएचपी, पास्कल, अदा: <code>''subroutine name''(''parameters'');</code> | **सी, सी++, जावा, पीएचपी, पास्कल, अदा: <code>''subroutine name''(''parameters'');</code> | ||
* [[अभिकथन (सॉफ्टवेयर विकास)]] | * [[अभिकथन (सॉफ्टवेयर विकास)|अभिस्टेटमेंट (सॉफ्टवेयर विकास)]] | ||
**सी, सी++, पीएचपी: <code>assert(''relational expression'');</code> | **सी, सी++, पीएचपी: <code>assert(''relational expression'');</code> | ||
**जावा: <code>assert ''relational expression'';</code> | **जावा: <code>assert ''relational expression'';</code> | ||
Line 30: | Line 30: | ||
**सी, सी++: <code>exit(''expression'')</code> | **सी, सी++: <code>exit(''expression'')</code> | ||
**पीएचपी: <code>exit ''number'';</code> | **पीएचपी: <code>exit ''number'';</code> | ||
== | == कंपाउंड स्टेटमेंट == | ||
कंपाउंड स्टेटमेंट में (सीक्वेंस) स्टेटमेंट्स हो सकते हैं, जो किसी भी उचित गहराई तक नेस्टेबल होते हैं, और सामान्यतः इन निहित स्टेटमेंट्स को मानने या न दोहराने का फैसला करने के लिए टेस्ट सम्मिलित होते हैं। | कंपाउंड स्टेटमेंट में (सीक्वेंस) स्टेटमेंट्स हो सकते हैं, जो किसी भी उचित गहराई तक नेस्टेबल होते हैं, और सामान्यतः इन निहित स्टेटमेंट्स को मानने या न दोहराने का फैसला करने के लिए टेस्ट सम्मिलित होते हैं। | ||
:: निम्नलिखित उदाहरणों के लिए संकेतन: | :: निम्नलिखित उदाहरणों के लिए संकेतन: | ||
::* < | ::* <स्टेटमेंट> कोई एकल स्टेटमेंट है (सरल या मिश्रित हो सकता है)। | ||
::* <अनुक्रम> शून्य या अधिक < | ::* <अनुक्रम> शून्य या अधिक <स्टेटमेंट> का कोई अनुक्रम है | ||
::कुछ प्रोग्रामिंग लैंग्वेज स्टेटमेंट्स को एक साथ समूहीकृत करने का एक सामान्य तरीका प्रदान करती हैं, ताकि किसी एक < | ::कुछ प्रोग्रामिंग लैंग्वेज स्टेटमेंट्स को एक साथ समूहीकृत करने का एक सामान्य तरीका प्रदान करती हैं, ताकि किसी एक <स्टेटमेंट> को एक समूह द्वारा प्रतिस्थापित किया जा सके: | ||
::* अल्गोल 60: <code>'''begin''' <sequence> '''end'''</code> | ::* अल्गोल 60: <code>'''begin''' <sequence> '''end'''</code> | ||
::* पास्कल: <code>begin <sequence> end</code> | ::* पास्कल: <code>begin <sequence> end</code> | ||
::* सी, पीएचपी, जावा: <code>{ <sequence> }</code> | ::* सी, पीएचपी, जावा: <code>{ <sequence> }</code> | ||
:: अन्य प्रोग्रामिंग भाषाओं में प्रत्येक प्रकार के यौगिक | :: अन्य प्रोग्रामिंग भाषाओं में प्रत्येक प्रकार के यौगिक स्टेटमेंट पर एक अलग विशेष टर्मिनेटर होता है, ताकि एक या अधिक स्टेटमेंट स्वचालित रूप से एक समूह के रूप में माने जा सकें: | ||
::* अदा: <code>if test then <sequence> end if;</code> | ::* अदा: <code>if test then <sequence> end if;</code> | ||
कई कंपाउंड स्टेटमेंट लूप कमांड या चॉइस कमांड होते हैं। सिद्धांत रूप में इनमें से प्रत्येक प्रकार के आदेशों में से केवल एक की आवश्यकता होती है। व्यवहार में कई विशेष परिस्थितियों होते हैं जो प्रायः होते हैं; ये किसी प्रोग्राम को समझने में आसान बना सकते हैं, प्रोग्रामिंग को आसान बना सकते हैं, और प्रायः इसे और अधिक कुशलता से लागू किया जा सकता है। यहाँ कई सूक्ष्मताओं का उल्लेख नहीं किया गया है; विवरण के लिए लिंक किए गए लेख देखें। | कई कंपाउंड स्टेटमेंट लूप कमांड या चॉइस कमांड होते हैं। सिद्धांत रूप में इनमें से प्रत्येक प्रकार के आदेशों में से केवल एक की आवश्यकता होती है। व्यवहार में कई विशेष परिस्थितियों होते हैं जो प्रायः होते हैं; ये किसी प्रोग्राम को समझने में आसान बना सकते हैं, प्रोग्रामिंग को आसान बना सकते हैं, और प्रायः इसे और अधिक कुशलता से लागू किया जा सकता है। यहाँ कई सूक्ष्मताओं का उल्लेख नहीं किया गया है; विवरण के लिए लिंक किए गए लेख देखें। | ||
Line 71: | Line 71: | ||
** सी: <code>do { <sequence> if (test) break; <sequence> } while (true) ;</code> | ** सी: <code>do { <sequence> if (test) break; <sequence> } while (true) ;</code> | ||
** वहाँ है: <code>loop <sequence> exit when test; <sequence> end loop;</code> | ** वहाँ है: <code>loop <sequence> exit when test; <sequence> end loop;</code> | ||
* [[सशर्त (प्रोग्रामिंग)]]|अगर- | * [[सशर्त (प्रोग्रामिंग)]]|अगर-स्टेटमेंट सरल स्थिति: | ||
** अल्गोल 60:<code>'''if''' test '''then''' <unconditional statement> ;</code> | ** अल्गोल 60:<code>'''if''' test '''then''' <unconditional statement> ;</code> | ||
** पास्कल:<code>if test then <statement> ;</code> | ** पास्कल:<code>if test then <statement> ;</code> | ||
Line 81: | Line 81: | ||
END IF}} | END IF}} | ||
* सशर्त (प्रोग्रामिंग) | यदि- | * सशर्त (प्रोग्रामिंग) | यदि-स्टेटमेंट दो तरफा विकल्प: | ||
** अल्गोल 60:<code>'''if''' test '''then''' <unconditional statement> '''else''' <statement> ;</code> | ** अल्गोल 60:<code>'''if''' test '''then''' <unconditional statement> '''else''' <statement> ;</code> | ||
** पास्कल:<code>if test then <statement> else <statement> ;</code> | ** पास्कल:<code>if test then <statement> else <statement> ;</code> | ||
Line 106: | Line 106: | ||
{{main|सिंटैक्स (प्रोग्रामिंग भाषाएँ)}} | {{main|सिंटैक्स (प्रोग्रामिंग भाषाएँ)}} | ||
असाइनमेंट और सबरूटीन कॉल के अलावा, अधिकांश भाषाएँ प्रत्येक | असाइनमेंट और सबरूटीन कॉल के अलावा, अधिकांश भाषाएँ प्रत्येक स्टेटमेंट को एक विशेष शब्द (जैसे गोटो, अगर, जबकि, आदि) से शुरू करती हैं, जैसा कि ऊपर दिए गए उदाहरणों में दिखाया गया है। विभिन्न भाषाओं में स्टेटमेंटों के रूप का वर्णन करने के लिए विभिन्न विधियों का उपयोग किया गया है; अधिक औपचारिक तरीके अधिक सटीक होते हैं: | ||
* अल्गोल 60 ने बैकस-नौर फॉर्म (बीएनएफ) का इस्तेमाल किया जो भाषा व्याकरण विनिर्देश के लिए एक नया स्तर निर्धारित करता है।<ref name=ALGOL60RPT>Revised ALGOL 60 report section 1.1.{{cite web|url=http://www.masswerk.at/algol60/report.htm|title=ALGOL 60|access-date=January 23, 2021}}</ref> | * अल्गोल 60 ने बैकस-नौर फॉर्म (बीएनएफ) का इस्तेमाल किया जो भाषा व्याकरण विनिर्देश के लिए एक नया स्तर निर्धारित करता है।<ref name=ALGOL60RPT>Revised ALGOL 60 report section 1.1.{{cite web|url=http://www.masswerk.at/algol60/report.htm|title=ALGOL 60|access-date=January 23, 2021}}</ref> | ||
Line 114: | Line 114: | ||
बीएनएफ पुनरावृत्ति व्यक्त करने के लिए पुनरावर्तन का उपयोग करता है, इसलिए पुनरावृत्ति के प्रत्यक्ष संकेत की अनुमति देने के लिए विभिन्न विस्तारित बैकस-नौर रूप प्रस्तावित किए गए हैं। | बीएनएफ पुनरावृत्ति व्यक्त करने के लिए पुनरावर्तन का उपयोग करता है, इसलिए पुनरावृत्ति के प्रत्यक्ष संकेत की अनुमति देने के लिए विभिन्न विस्तारित बैकस-नौर रूप प्रस्तावित किए गए हैं। | ||
=== | === स्टेटमेंट और कीवर्ड === | ||
कुछ प्रोग्रामिंग भाषा व्याकरण [[आरक्षित शब्द]] या स्ट्रॉपिंग (वाक्यविन्यास) हैं, और उन्हें पहचानकर्ता (कंप्यूटर भाषा) के रूप में उपयोग करने की अनुमति नहीं देते हैं। यह प्रायः [[औपचारिक व्याकरण]] की ओर ले जाता है जो पार्स करना आसान होता है, कम [[ पदच्छेद ]]#लुकहेड की आवश्यकता होती है। | कुछ प्रोग्रामिंग भाषा व्याकरण [[आरक्षित शब्द]] या स्ट्रॉपिंग (वाक्यविन्यास) हैं, और उन्हें पहचानकर्ता (कंप्यूटर भाषा) के रूप में उपयोग करने की अनुमति नहीं देते हैं। यह प्रायः [[औपचारिक व्याकरण]] की ओर ले जाता है जो पार्स करना आसान होता है, कम [[ पदच्छेद ]]#लुकहेड की आवश्यकता होती है। | ||
Line 120: | Line 120: | ||
==== कोई विशिष्ट कीवर्ड नहीं ==== | ==== कोई विशिष्ट कीवर्ड नहीं ==== | ||
फोरट्रान और पीएल/1 में आरक्षित कीवर्ड नहीं हैं, जैसे | फोरट्रान और पीएल/1 में आरक्षित कीवर्ड नहीं हैं, जैसे स्टेटमेंटों की अनुमति: | ||
* पीएल/1 में: | * पीएल/1 में: | ||
**<code>IF IF = THEN THEN ...</code> (दूसरा <code>IF</code> और पहला <code>THEN</code> चर हैं)। | **<code>IF IF = THEN THEN ...</code> (दूसरा <code>IF</code> और पहला <code>THEN</code> चर हैं)। | ||
* फोरट्रान में: | * फोरट्रान में: | ||
**<code>IF (A) X = 10... </code> सशर्त | **<code>IF (A) X = 10... </code> सशर्त स्टेटमेंट (अन्य रूपों के साथ) | ||
**<code>IF (A) = 2 </code> नामित एक सबस्क्रिप्टेड चर के लिए असाइनमेंट <code>IF</code> | **<code>IF (A) = 2 </code> नामित एक सबस्क्रिप्टेड चर के लिए असाइनमेंट <code>IF</code> | ||
:: चूंकि फोरट्रान 95 तक रिक्त स्थान वैकल्पिक थे, एक टाइपो पूरी तरह से एक | :: चूंकि फोरट्रान 95 तक रिक्त स्थान वैकल्पिक थे, एक टाइपो पूरी तरह से एक स्टेटमेंट का अर्थ बदल सकता है: | ||
:*<code>DO 10 I = 1,5 </code> I के साथ एक लूप की प्रारम्भ 1 से 5 तक चल रही है | :*<code>DO 10 I = 1,5 </code> I के साथ एक लूप की प्रारम्भ 1 से 5 तक चल रही है | ||
:*<code>DO 10 I = 1.5 </code> चर को मान 1.5 का असाइनमेंट <code>DO10I</code> | :*<code>DO 10 I = 1.5 </code> चर को मान 1.5 का असाइनमेंट <code>DO10I</code> | ||
Line 137: | Line 137: | ||
टोकन जो भाषा सिंटैक्स का हिस्सा हैं, इस प्रकार प्रोग्रामर-परिभाषित नामों के साथ संघर्ष नहीं करते हैं। | टोकन जो भाषा सिंटैक्स का हिस्सा हैं, इस प्रकार प्रोग्रामर-परिभाषित नामों के साथ संघर्ष नहीं करते हैं। | ||
==== आरक्षित कीवर्ड ==== | ==== रिजर्व्ड कीवर्ड (आरक्षित कीवर्ड) ==== | ||
{{main|आरक्षित शब्द}} | {{main|आरक्षित शब्द}} | ||
कुछ नाम प्रोग्रामिंग भाषा के हिस्से के रूप में आरक्षित हैं और इन्हें प्रोग्रामर-परिभाषित नामों के रूप में उपयोग नहीं किया जा सकता है। | कुछ नाम प्रोग्रामिंग भाषा के हिस्से के रूप में आरक्षित हैं और इन्हें प्रोग्रामर-परिभाषित नामों के रूप में उपयोग नहीं किया जा सकता है। अधिकांश लोकप्रिय प्रोग्रामिंग भाषाएं आरक्षित कीवर्ड का उपयोग करती हैं। प्रारम्भी उदाहरणों में [[ फ्लो-Matic | फ्लो-मेटिक]] (1953) और [[कोबोल]] (1959) सम्मिलित हैं। 1970 के बाद से अन्य उदाहरणों में एडा, C, C++, जावा और पास्कल सम्मिलित हैं। आरक्षित शब्दों की संख्या भाषा पर निर्भर करती है: C में लगभग 30 जबकि [[कोबोल]] में लगभग 400 हैं। | ||
अधिकांश लोकप्रिय प्रोग्रामिंग भाषाएं आरक्षित कीवर्ड का उपयोग करती हैं। प्रारम्भी उदाहरणों में [[ फ्लो-Matic ]] (1953) और [[कोबोल]] (1959) सम्मिलित हैं। 1970 के बाद से अन्य उदाहरणों में एडा, C, C++, जावा और पास्कल सम्मिलित हैं। आरक्षित शब्दों की संख्या भाषा पर निर्भर करती है: C में लगभग 30 जबकि | |||
== सिमेंटिक्स == | == सिमेंटिक्स == | ||
Line 147: | Line 146: | ||
{{main|शब्दार्थ (कंप्यूटर विज्ञान)}} | {{main|शब्दार्थ (कंप्यूटर विज्ञान)}} | ||
शब्दार्थ एक कार्यक्रम के अर्थ से संबंधित है। कई प्रोग्रामिंग भाषाओं के लिए मानक दस्तावेज़ सिंटैक्स/व्याकरण को काफी औपचारिक और सटीक तरीके से व्यक्त करने के लिए बीएनएफ या कुछ समकक्ष का उपयोग करते हैं, लेकिन कार्यक्रम के शब्दार्थ/अर्थ को सामान्यतः उदाहरणों और अंग्रेजी गद्य का उपयोग करके वर्णित किया जाता है। इसका परिणाम अस्पष्टता हो सकता है।<ref name=Trouble>Trouble spots in Algol 60{{cite web|url=https://people.eecs.berkeley.edu/~necula/Papers/KnuthTroubleAlgol.pdf|title=Trouble Spots|access-date=February 24, 2021}}</ref> कुछ भाषा विवरणों में यौगिक | शब्दार्थ एक कार्यक्रम के अर्थ से संबंधित है। कई प्रोग्रामिंग भाषाओं के लिए मानक दस्तावेज़ सिंटैक्स/व्याकरण को काफी औपचारिक और सटीक तरीके से व्यक्त करने के लिए बीएनएफ या कुछ समकक्ष का उपयोग करते हैं, लेकिन कार्यक्रम के शब्दार्थ/अर्थ को सामान्यतः उदाहरणों और अंग्रेजी गद्य का उपयोग करके वर्णित किया जाता है। इसका परिणाम अस्पष्टता हो सकता है।<ref name=Trouble>Trouble spots in Algol 60{{cite web|url=https://people.eecs.berkeley.edu/~necula/Papers/KnuthTroubleAlgol.pdf|title=Trouble Spots|access-date=February 24, 2021}}</ref> कुछ भाषा विवरणों में यौगिक स्टेटमेंटों का अर्थ 'सरल' निर्माणों के उपयोग से परिभाषित किया गया है, उदा। a while लूप को टेस्ट, जंप और लेबल के संयोजन द्वारा परिभाषित किया जा सकता है <code>if</code> और <code>goto</code>. | ||
शब्दार्थ (कंप्यूटर विज्ञान) लेख कई गणितीय/तार्किक औपचारिकताओं का वर्णन करता है जिनका उपयोग शब्दार्थ को सटीक तरीके से निर्दिष्ट करने के लिए किया गया है; ये सामान्यतः बीएनएफ की तुलना में अधिक जटिल होते हैं, और सामान्यतः जाने के तरीके के रूप में कोई एकल दृष्टिकोण स्वीकार नहीं किया जाता है। कुछ दृष्टिकोण प्रभावी ढंग से भाषा के लिए एक दुभाषिया को परिभाषित करते हैं, कुछ एक कार्यक्रम के बारे में तर्क के लिए औपचारिक तर्क का उपयोग करते हैं, कुछ निरंतरता सुनिश्चित करने के लिए वाक्यात्मक संस्थाओं को प्रत्यय संलग्न करते हैं, आदि। | शब्दार्थ (कंप्यूटर विज्ञान) लेख कई गणितीय/तार्किक औपचारिकताओं का वर्णन करता है जिनका उपयोग शब्दार्थ को सटीक तरीके से निर्दिष्ट करने के लिए किया गया है; ये सामान्यतः बीएनएफ की तुलना में अधिक जटिल होते हैं, और सामान्यतः जाने के तरीके के रूप में कोई एकल दृष्टिकोण स्वीकार नहीं किया जाता है। कुछ दृष्टिकोण प्रभावी ढंग से भाषा के लिए एक दुभाषिया को परिभाषित करते हैं, कुछ एक कार्यक्रम के बारे में तर्क के लिए औपचारिक तर्क का उपयोग करते हैं, कुछ निरंतरता सुनिश्चित करने के लिए वाक्यात्मक संस्थाओं को प्रत्यय संलग्न करते हैं, आदि। | ||
== भाव == | == एक्सप्रेशन (भाव) == | ||
निष्पादित किए गए | निष्पादित किए गए स्टेटमेंट और [[अभिव्यक्ति (प्रोग्रामिंग)]] के बीच प्रायः अंतर किया जाता है, जिनका मूल्यांकन किया जाता है। भाव हमेशा एक मान का मूल्यांकन करते हैं, जो स्टेटमेंट नहीं करते हैं। हालाँकि, अभिव्यक्तियाँ प्रायः एक बड़े स्टेटमेंट के हिस्से के रूप में उपयोग की जाती हैं। | ||
अधिकांश प्रोग्रामिंग भाषाओं में, एक | अधिकांश प्रोग्रामिंग भाषाओं में, एक स्टेटमेंट में एक अभिव्यक्ति की तुलना में थोड़ा अधिक सम्मिलित हो सकता है, सामान्यतः एक स्टेटमेंट टर्मिनेटर (अर्धविराम) के साथ अभिव्यक्ति का अनुसरण करके। ऐसे परिस्थितियों में, जबकि अभिव्यक्ति एक मूल्य का मूल्यांकन करती है, पूरा स्टेटमेंट नहीं करता है (अभिव्यक्ति का मूल्य छोड़ दिया जाता है)। उदाहरण के लिए, C, C++, C#, और कई समान भाषाओं में, <code>x = y + 1</code> एक एक्सप्रेशन है जो x को y प्लस वन के मान पर सेट करेगा, और संपूर्ण एक्सप्रेशन स्वयं उसी मान का मूल्यांकन करेगा जिस पर x सेट है। हालाँकि, <code>x = y + 1;</code> (अंत में अर्धविराम पर ध्यान दें) एक स्टेटमेंट है जो अभी भी एक्स को y + 1 के मान पर सेट करेगा क्योंकि स्टेटमेंट के भीतर अभिव्यक्ति का अभी भी मूल्यांकन किया जाता है, लेकिन अभिव्यक्ति का नतीजा खारिज कर दिया जाता है, और स्टेटमेंट स्वयं का मूल्यांकन नहीं करता है कोई मान।<ref>https://www.dii.uchile.cl/~daespino/files/Iso_C_1999_definition.pdf {{Bare URL PDF|date=October 2022}}</ref> | ||
भावों को अन्य भावों में भी समाहित किया जा सकता है। उदाहरण के लिए, अभिव्यक्ति <code>x = y + 1</code> अभिव्यक्ति समाहित है <code>y + 1</code>, जिसमें बदले में मान होते हैं <code>y</code> और <code>1</code>, जो तकनीकी रूप से भाव भी हैं। | भावों को अन्य भावों में भी समाहित किया जा सकता है। उदाहरण के लिए, अभिव्यक्ति <code>x = y + 1</code> अभिव्यक्ति समाहित है <code>y + 1</code>, जिसमें बदले में मान होते हैं <code>y</code> और <code>1</code>, जो तकनीकी रूप से भाव भी हैं। | ||
Line 161: | Line 160: | ||
== एक्स्टेंसिबिलिटी == | == एक्स्टेंसिबिलिटी == | ||
अधिकांश भाषाओं में भाषा द्वारा परिभाषित | अधिकांश भाषाओं में भाषा द्वारा परिभाषित स्टेटमेंटों का एक निश्चित सेट होता है, लेकिन विस्तारणीय भाषाओं के साथ प्रयोग किए गए हैं जो प्रोग्रामर को नए स्टेटमेंटों को परिभाषित करने की अनुमति देते हैं। | ||
== यह भी देखें == | == यह भी देखें == | ||
* प्रोग्रामिंग भाषाओं की तुलना (वाक्यविन्यास) | * प्रोग्रामिंग भाषाओं की तुलना (वाक्यविन्यास) | ||
* | * नियंत्रण प्रवाह | ||
* अभिव्यक्ति (प्रोग्रामिंग) (विपरीत) | * अभिव्यक्ति (प्रोग्रामिंग) (विपरीत) | ||
Line 173: | Line 172: | ||
* [https://www.pcmag.com/encyclopedia/term/program-statement PC ENCYCLOPEDIA: Definition of: program statement] | * [https://www.pcmag.com/encyclopedia/term/program-statement PC ENCYCLOPEDIA: Definition of: program statement] | ||
{{DEFAULTSORT:Statement (Programming)}} | {{DEFAULTSORT:Statement (Programming)}} | ||
[[Category:All articles with bare URLs for citations]] | |||
[[Category:Articles with PDF format bare URLs for citations]] | |||
[[Category: | [[Category:Articles with bare URLs for citations from October 2022]] | ||
[[Category:Created On 18/06/2023]] | [[Category:Articles with hatnote templates targeting a nonexistent page|Statement (Programming)]] | ||
[[Category:Articles with invalid date parameter in template]] | |||
[[Category:Created On 18/06/2023|Statement (Programming)]] | |||
[[Category:Lua-based templates|Statement (Programming)]] | |||
[[Category:Machine Translated Page|Statement (Programming)]] | |||
[[Category:Pages with script errors|Statement (Programming)]] | |||
[[Category:Templates Vigyan Ready|Statement (Programming)]] | |||
[[Category:Templates that add a tracking category|Statement (Programming)]] | |||
[[Category:Templates that generate short descriptions|Statement (Programming)]] | |||
[[Category:Templates using TemplateData|Statement (Programming)]] | |||
[[Category:प्रोग्रामिंग भाषा अवधारणाओं|Statement (Programming)]] | |||
[[Category:बयान|Statement (Programming)]] |
Latest revision as of 16:47, 7 July 2023
कंप्यूटर प्रोग्रामिंग में, स्टेटमेंट एक अनिवार्य प्रोग्रामिंग की सिंटेक्स (प्रोग्रामिंग लैंग्वेज) इकाई है जो कुछ क्रियाओं को करने के लिए व्यक्त करती है।[1] ऐसी भाषा में लिखा गया कंप्यूटर प्रोग्राम एक या एक से अधिक स्टेटमेंट के अनुक्रम से बनता है। एक स्टेटमेंट में आंतरिक घटक हो सकते हैं (जैसे अभिव्यक्ति (कंप्यूटर विज्ञान))।
कई प्रोग्रामिंग लैंग्वेज जैसे (एडा, अल्गोल 60, C, जावा, पास्कल (प्रोग्रामिंग भाषा)) स्टेटमेंट्स और डिक्लेरेशन (कंप्यूटर प्रोग्रामिंग) डेफिनिशन / डिक्लेरेशन के बीच अंतर करती हैं। एक परिभाषा या घोषणा उस डेटा को निर्दिष्ट करती है जिस पर प्रोग्राम संचालित होता है, जबकि एक स्टेटमेंट उस डेटा के साथ की जाने वाली कार्रवाइयों को निर्दिष्ट करता है।
जिन स्टेटमेंट में अन्य स्टेटमेंट नहीं हो सकते वे सरल हैं; जिनमें अन्य स्टेटमेंट हो सकते हैं वे कंपाउंड (यौगिक) हैं।[2] एक स्टेटमेंट (और वास्तव में एक कार्यक्रम) की उपस्थिति उसके सिंटेक्स (प्रोग्रामिंग भाषाओं) या व्याकरण द्वारा निर्धारित की जाती है। एक स्टेटमेंट का अर्थ उसके शब्दार्थ (कंप्यूटर विज्ञान) द्वारा निर्धारित किया जाता है।
सरल स्टेटमेंट
सरल स्टेटमेंट अपने आप में पूर्ण होते हैं; इनमें असाइनमेंट, सबरूटीन कॉल और कुछ स्टेटमेंट सम्मिलित हैं जो नियंत्रण के प्रोग्राम फ्लो को महत्वपूर्ण रूप से प्रभावित कर सकते हैं (जैसे के लिए जाओ , रिटर्न स्टेटमेंट, स्टॉप/हॉल्ट)। कुछ भाषाओं में, इनपुट और आउटपुट, अभिस्टेटमेंट और निकास को विशेष स्टेटमेंटों द्वारा नियंत्रित किया जाता है, जबकि अन्य भाषाएँ पूर्वनिर्धारित सबरूटीन्स के लिए कॉल का उपयोग करती हैं।
- असाइनमेंट (कंप्यूटर विज्ञान)
- फोरट्रान:
variable = expression
- पास्कल, अल्गोल 60, एडीए:
variable := expression;
- सी, सी#, सी++, पीएचपी, जावा:
variable = expression;
- फोरट्रान:
- सबरूटीन
- फोरट्रान:
CALL subroutine name(parameters)
- सी, सी++, जावा, पीएचपी, पास्कल, अदा:
subroutine name(parameters);
- फोरट्रान:
- अभिस्टेटमेंट (सॉफ्टवेयर विकास)
- सी, सी++, पीएचपी:
assert(relational expression);
- जावा:
assert relational expression;
- सी, सी++, पीएचपी:
- के लिए जाओ
- फोरट्रान:
GOTO numbered-label
- अल्गोल 60:
goto label;
- सी, सी++, पीएचपी, पास्कल:
goto label;
- फोरट्रान:
- रिटर्न स्टेटमेंट
- फोरट्रान:
RETURN value
- सी, सी++, जावा, पीएचपी:
return value;
- फोरट्रान:
- बाहर निकलें (सिस्टम कॉल) | रोकें/रोकें/बाहर निकलें
- फोरट्रान:
STOP number
- सी, सी++:
exit(expression)
- पीएचपी:
exit number;
- फोरट्रान:
कंपाउंड स्टेटमेंट
कंपाउंड स्टेटमेंट में (सीक्वेंस) स्टेटमेंट्स हो सकते हैं, जो किसी भी उचित गहराई तक नेस्टेबल होते हैं, और सामान्यतः इन निहित स्टेटमेंट्स को मानने या न दोहराने का फैसला करने के लिए टेस्ट सम्मिलित होते हैं।
- निम्नलिखित उदाहरणों के लिए संकेतन:
- <स्टेटमेंट> कोई एकल स्टेटमेंट है (सरल या मिश्रित हो सकता है)।
- <अनुक्रम> शून्य या अधिक <स्टेटमेंट> का कोई अनुक्रम है
- कुछ प्रोग्रामिंग लैंग्वेज स्टेटमेंट्स को एक साथ समूहीकृत करने का एक सामान्य तरीका प्रदान करती हैं, ताकि किसी एक <स्टेटमेंट> को एक समूह द्वारा प्रतिस्थापित किया जा सके:
- निम्नलिखित उदाहरणों के लिए संकेतन:
- अल्गोल 60:
begin <sequence> end
- पास्कल:
begin <sequence> end
- सी, पीएचपी, जावा:
{ <sequence> }
- अल्गोल 60:
- अन्य प्रोग्रामिंग भाषाओं में प्रत्येक प्रकार के यौगिक स्टेटमेंट पर एक अलग विशेष टर्मिनेटर होता है, ताकि एक या अधिक स्टेटमेंट स्वचालित रूप से एक समूह के रूप में माने जा सकें:
- अदा:
if test then <sequence> end if;
- अदा:
कई कंपाउंड स्टेटमेंट लूप कमांड या चॉइस कमांड होते हैं। सिद्धांत रूप में इनमें से प्रत्येक प्रकार के आदेशों में से केवल एक की आवश्यकता होती है। व्यवहार में कई विशेष परिस्थितियों होते हैं जो प्रायः होते हैं; ये किसी प्रोग्राम को समझने में आसान बना सकते हैं, प्रोग्रामिंग को आसान बना सकते हैं, और प्रायः इसे और अधिक कुशलता से लागू किया जा सकता है। यहाँ कई सूक्ष्मताओं का उल्लेख नहीं किया गया है; विवरण के लिए लिंक किए गए लेख देखें।
- लूप के लिए | काउंट-नियंत्रित लूप:
- अल्गोल 60:
for index := 1 step 1 until limit do <statement> ;
- पास्कल:
for index := 1 to limit do <statement> ;
- सी, जावा:
for ( index = 1; index <= limit; index += 1) <statement> ;
- वहाँ है:
for index in 1..limit loop <sequence> end loop
- फोरट्रान 90:
DO index = 1,limit <sequence> END DO
- अल्गोल 60:
- जबकि लूप|लूप की प्रारम्भ में परीक्षण के साथ स्थिति-नियंत्रित लूप:
- अल्गोल 60:
for index := expression while test do <statement> ;
- पास्कल:
while test do <statement> ;
- सी, जावा:
while (test) <statement> ;
- वहाँ है:
while test loop <sequence> end loop
- फोरट्रान 90:
DO WHILE (test) <sequence> END DO
- अल्गोल 60:
- लूप करते समय करें | लूप के अंत में परीक्षण के साथ स्थिति-नियंत्रित लूप:
- पास्कल:
repeat <sequence> until test; { note reversed test}
** सी, जावा:do { <sequence> } while (test) ;
- वहाँ है:
loop <sequence> exit when test; end loop;
- पास्कल:
- लूप के बीच में परीक्षण के साथ स्थिति-नियंत्रित लूप:
- सी:
do { <sequence> if (test) break; <sequence> } while (true) ;
- वहाँ है:
loop <sequence> exit when test; <sequence> end loop;
- सी:
- सशर्त (प्रोग्रामिंग)|अगर-स्टेटमेंट सरल स्थिति:
- अल्गोल 60:
if test then <unconditional statement> ;
- पास्कल:
if test then <statement> ;
- सी, जावा:
if (test) <statement> ;
- वहाँ है:
if test then <sequence> end if;
- फोरट्रान 77+:
IF (test) THEN <sequence> END IF
- अल्गोल 60:
- सशर्त (प्रोग्रामिंग) | यदि-स्टेटमेंट दो तरफा विकल्प:
- अल्गोल 60:
if test then <unconditional statement> else <statement> ;
- पास्कल:
if test then <statement> else <statement> ;
- सी, जावा:
it (test) <statement> else <statement> ;
- वहाँ है:
if test then <sequence> else <sequence> end if;
- फोरट्रान 77+:
IF (test) THEN <sequence> ELSE <sequence> END IF
- अल्गोल 60:
- स्विच स्टेटमेंट | केस/स्विच स्टेटमेंट मल्टी-वे विकल्प:
- पास्कल:
case c of 'a': alert(); 'q': quit(); end;
- वहाँ है:
case c is when 'a' => alert(); when 'q' => quit(); end case;
- सी, जावा:
switch (c) { case 'a': alert(); break; case 'q': quit(); break; }
- पास्कल:
- एक्सेप्शन हेंडलिंग:
- अदा:
begin protected code except when exception specification => exception handler
- जावा:
try { protected code } catch (exception specification) { exception handler } finally { cleanup }
- पायथन:
try: protected code except exception specification: exception handler else: no exceptions finally: cleanup
- अदा:
सिंटेक्स
असाइनमेंट और सबरूटीन कॉल के अलावा, अधिकांश भाषाएँ प्रत्येक स्टेटमेंट को एक विशेष शब्द (जैसे गोटो, अगर, जबकि, आदि) से शुरू करती हैं, जैसा कि ऊपर दिए गए उदाहरणों में दिखाया गया है। विभिन्न भाषाओं में स्टेटमेंटों के रूप का वर्णन करने के लिए विभिन्न विधियों का उपयोग किया गया है; अधिक औपचारिक तरीके अधिक सटीक होते हैं:
- अल्गोल 60 ने बैकस-नौर फॉर्म (बीएनएफ) का इस्तेमाल किया जो भाषा व्याकरण विनिर्देश के लिए एक नया स्तर निर्धारित करता है।[3]
- फोरट्रान 77 तक, उदाहरण के साथ अंग्रेजी गद्य में भाषा का वर्णन किया गया था,[4] फोरट्रान 90 के बाद से, बीएनएफ के एक संस्करण का उपयोग करके भाषा का वर्णन किया गया था।[5]
- कोबोल ने द्वि-आयामी धातुभाषा का प्रयोग किया।[6]
- पास्कल ने सिंटैक्स आरेख और समकक्ष बीएनएफ दोनों का इस्तेमाल किया।[7]
बीएनएफ पुनरावृत्ति व्यक्त करने के लिए पुनरावर्तन का उपयोग करता है, इसलिए पुनरावृत्ति के प्रत्यक्ष संकेत की अनुमति देने के लिए विभिन्न विस्तारित बैकस-नौर रूप प्रस्तावित किए गए हैं।
स्टेटमेंट और कीवर्ड
कुछ प्रोग्रामिंग भाषा व्याकरण आरक्षित शब्द या स्ट्रॉपिंग (वाक्यविन्यास) हैं, और उन्हें पहचानकर्ता (कंप्यूटर भाषा) के रूप में उपयोग करने की अनुमति नहीं देते हैं। यह प्रायः औपचारिक व्याकरण की ओर ले जाता है जो पार्स करना आसान होता है, कम पदच्छेद #लुकहेड की आवश्यकता होती है।
कोई विशिष्ट कीवर्ड नहीं
फोरट्रान और पीएल/1 में आरक्षित कीवर्ड नहीं हैं, जैसे स्टेटमेंटों की अनुमति:
- पीएल/1 में:
IF IF = THEN THEN ...
(दूसराIF
और पहलाTHEN
चर हैं)।
- फोरट्रान में:
IF (A) X = 10...
सशर्त स्टेटमेंट (अन्य रूपों के साथ)IF (A) = 2
नामित एक सबस्क्रिप्टेड चर के लिए असाइनमेंटIF
- चूंकि फोरट्रान 95 तक रिक्त स्थान वैकल्पिक थे, एक टाइपो पूरी तरह से एक स्टेटमेंट का अर्थ बदल सकता है:
DO 10 I = 1,5
I के साथ एक लूप की प्रारम्भ 1 से 5 तक चल रही हैDO 10 I = 1.5
चर को मान 1.5 का असाइनमेंटDO10I
फ्लेग्गेड शब्द
अल्गोल 60 और अल्गोल 68 में, विशेष टोकन स्पष्ट रूप से प्रतिष्ठित थे: प्रकाशन के लिए, बोल्डफेस में उदा। begin
; प्रोग्रामिंग के लिए, कुछ विशेष अंकन के साथ, उदाहरण के लिए, एक फ्लैग ('begin
), उद्धरण चिह्न ('begin'
), या रेखांकित (begin
इलियट 503 पर)। इसे स्ट्रॉपिंग कहा जाता है।
टोकन जो भाषा सिंटैक्स का हिस्सा हैं, इस प्रकार प्रोग्रामर-परिभाषित नामों के साथ संघर्ष नहीं करते हैं।
रिजर्व्ड कीवर्ड (आरक्षित कीवर्ड)
कुछ नाम प्रोग्रामिंग भाषा के हिस्से के रूप में आरक्षित हैं और इन्हें प्रोग्रामर-परिभाषित नामों के रूप में उपयोग नहीं किया जा सकता है। अधिकांश लोकप्रिय प्रोग्रामिंग भाषाएं आरक्षित कीवर्ड का उपयोग करती हैं। प्रारम्भी उदाहरणों में फ्लो-मेटिक (1953) और कोबोल (1959) सम्मिलित हैं। 1970 के बाद से अन्य उदाहरणों में एडा, C, C++, जावा और पास्कल सम्मिलित हैं। आरक्षित शब्दों की संख्या भाषा पर निर्भर करती है: C में लगभग 30 जबकि कोबोल में लगभग 400 हैं।
सिमेंटिक्स
शब्दार्थ एक कार्यक्रम के अर्थ से संबंधित है। कई प्रोग्रामिंग भाषाओं के लिए मानक दस्तावेज़ सिंटैक्स/व्याकरण को काफी औपचारिक और सटीक तरीके से व्यक्त करने के लिए बीएनएफ या कुछ समकक्ष का उपयोग करते हैं, लेकिन कार्यक्रम के शब्दार्थ/अर्थ को सामान्यतः उदाहरणों और अंग्रेजी गद्य का उपयोग करके वर्णित किया जाता है। इसका परिणाम अस्पष्टता हो सकता है।[8] कुछ भाषा विवरणों में यौगिक स्टेटमेंटों का अर्थ 'सरल' निर्माणों के उपयोग से परिभाषित किया गया है, उदा। a while लूप को टेस्ट, जंप और लेबल के संयोजन द्वारा परिभाषित किया जा सकता है if
और goto
.
शब्दार्थ (कंप्यूटर विज्ञान) लेख कई गणितीय/तार्किक औपचारिकताओं का वर्णन करता है जिनका उपयोग शब्दार्थ को सटीक तरीके से निर्दिष्ट करने के लिए किया गया है; ये सामान्यतः बीएनएफ की तुलना में अधिक जटिल होते हैं, और सामान्यतः जाने के तरीके के रूप में कोई एकल दृष्टिकोण स्वीकार नहीं किया जाता है। कुछ दृष्टिकोण प्रभावी ढंग से भाषा के लिए एक दुभाषिया को परिभाषित करते हैं, कुछ एक कार्यक्रम के बारे में तर्क के लिए औपचारिक तर्क का उपयोग करते हैं, कुछ निरंतरता सुनिश्चित करने के लिए वाक्यात्मक संस्थाओं को प्रत्यय संलग्न करते हैं, आदि।
एक्सप्रेशन (भाव)
निष्पादित किए गए स्टेटमेंट और अभिव्यक्ति (प्रोग्रामिंग) के बीच प्रायः अंतर किया जाता है, जिनका मूल्यांकन किया जाता है। भाव हमेशा एक मान का मूल्यांकन करते हैं, जो स्टेटमेंट नहीं करते हैं। हालाँकि, अभिव्यक्तियाँ प्रायः एक बड़े स्टेटमेंट के हिस्से के रूप में उपयोग की जाती हैं।
अधिकांश प्रोग्रामिंग भाषाओं में, एक स्टेटमेंट में एक अभिव्यक्ति की तुलना में थोड़ा अधिक सम्मिलित हो सकता है, सामान्यतः एक स्टेटमेंट टर्मिनेटर (अर्धविराम) के साथ अभिव्यक्ति का अनुसरण करके। ऐसे परिस्थितियों में, जबकि अभिव्यक्ति एक मूल्य का मूल्यांकन करती है, पूरा स्टेटमेंट नहीं करता है (अभिव्यक्ति का मूल्य छोड़ दिया जाता है)। उदाहरण के लिए, C, C++, C#, और कई समान भाषाओं में, x = y + 1
एक एक्सप्रेशन है जो x को y प्लस वन के मान पर सेट करेगा, और संपूर्ण एक्सप्रेशन स्वयं उसी मान का मूल्यांकन करेगा जिस पर x सेट है। हालाँकि, x = y + 1;
(अंत में अर्धविराम पर ध्यान दें) एक स्टेटमेंट है जो अभी भी एक्स को y + 1 के मान पर सेट करेगा क्योंकि स्टेटमेंट के भीतर अभिव्यक्ति का अभी भी मूल्यांकन किया जाता है, लेकिन अभिव्यक्ति का नतीजा खारिज कर दिया जाता है, और स्टेटमेंट स्वयं का मूल्यांकन नहीं करता है कोई मान।[9]
भावों को अन्य भावों में भी समाहित किया जा सकता है। उदाहरण के लिए, अभिव्यक्ति x = y + 1
अभिव्यक्ति समाहित है y + 1
, जिसमें बदले में मान होते हैं y
और 1
, जो तकनीकी रूप से भाव भी हैं।
हालाँकि पिछले उदाहरण असाइनमेंट एक्सप्रेशन दिखाते हैं, कुछ भाषाएँ असाइनमेंट को एक्सप्रेशन के रूप में नहीं बल्कि एक स्टेटमेंट के रूप में लागू करती हैं। इसका एक उल्लेखनीय उदाहरण पायथन (प्रोग्रामिंग लैंग्वेज) है, जहां = एक ऑपरेटर नहीं है, बल्कि असाइनमेंट स्टेटमेंट में सिर्फ एक विभाजक है। यद्यपि पायथन कई असाइनमेंट की अनुमति देता है क्योंकि प्रत्येक असाइनमेंट एक अभिव्यक्ति थी, यह केवल वास्तविक अभिव्यक्ति के बजाय भाषा व्याकरण में निर्मित असाइनमेंट स्टेटमेंट का एक विशेष परिस्थिति है।[10]
एक्स्टेंसिबिलिटी
अधिकांश भाषाओं में भाषा द्वारा परिभाषित स्टेटमेंटों का एक निश्चित सेट होता है, लेकिन विस्तारणीय भाषाओं के साथ प्रयोग किए गए हैं जो प्रोग्रामर को नए स्टेटमेंटों को परिभाषित करने की अनुमति देते हैं।
यह भी देखें
- प्रोग्रामिंग भाषाओं की तुलना (वाक्यविन्यास)
- नियंत्रण प्रवाह
- अभिव्यक्ति (प्रोग्रामिंग) (विपरीत)
संदर्भ
- ↑ "कथन". webopedia. September 1996. Retrieved 2015-03-03.
- ↑ Revised ALGOL 60 report section. 4.1."ALGOL 60". Retrieved January 23, 2021.
- ↑ Revised ALGOL 60 report section 1.1."ALGOL 60". Retrieved January 23, 2021.
- ↑ ANSI FORTRAN 66 standard"FORTRAN 66" (PDF). Retrieved February 19, 2021.
- ↑ ANSI FORTRAN 95 standard"Fortran95" (PDF). Retrieved February 19, 2021.
- ↑ Cobol manual."COBOL" (PDF). Retrieved January 23, 2021.
- ↑ Pascal User Manual and Report Appendix D."Pascal" (PDF). Retrieved February 19, 2021.
- ↑ Trouble spots in Algol 60"Trouble Spots" (PDF). Retrieved February 24, 2021.
- ↑ https://www.dii.uchile.cl/~daespino/files/Iso_C_1999_definition.pdf[bare URL PDF]
- ↑ "7. Simple statements — Python 3.10.8 documentation".