स्टेटमेंट (कंप्यूटर विज्ञान): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:
[[कंप्यूटर प्रोग्रामिंग]] में, स्टेटमेंट एक [[अनिवार्य प्रोग्रामिंग]] की सिंटेक्स (प्रोग्रामिंग लैंग्वेज) इकाई है जो कुछ क्रियाओं को करने के लिए व्यक्त करती है।<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> ऐसी भाषा में लिखा गया [[कंप्यूटर प्रोग्राम]] एक या एक से अधिक कथनों के अनुक्रम से बनता है। एक बयान में आंतरिक घटक हो सकते हैं (जैसे [[अभिव्यक्ति (कंप्यूटर विज्ञान)]])।


कई प्रोग्रामिंग लैंग्वेज (जैसे Ada (प्रोग्रामिंग लैंग्वेज), [[Algol 60|ऐल्गॉल 60]], C (प्रोग्रामिंग लैंग्वेज), जावा (प्रोग्रामिंग लैंग्वेज), [[ पास्कल (प्रोग्रामिंग भाषा) ]]) स्टेटमेंट्स और डिक्लेरेशन (कंप्यूटर प्रोग्रामिंग) | डेफिनिशन / डिक्लेरेशन के बीच अंतर करती हैं। एक परिभाषा या घोषणा उस डेटा को निर्दिष्ट करती है जिस पर एक प्रोग्राम संचालित होता है, जबकि एक बयान उस डेटा के साथ की जाने वाली कार्रवाइयों को निर्दिष्ट करता है।
कई प्रोग्रामिंग लैंग्वेज (जैसे Ada (प्रोग्रामिंग लैंग्वेज), [[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>
जिन कथनों में अन्य कथन नहीं हो सकते वे सरल हैं; जिनमें अन्य कथन हो सकते हैं वे यौगिक हैं।<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 35: Line 34:
== यौगिक कथन ==
== यौगिक कथन ==


कंपाउंड स्टेटमेंट में (सीक्वेंस) स्टेटमेंट्स हो सकते हैं, जो किसी भी उचित गहराई तक नेस्टेबल होते हैं, और सामान्यतः इन निहित स्टेटमेंट्स को मानने या न दोहराने का फैसला करने के लिए टेस्ट शामिल होते हैं।
कंपाउंड स्टेटमेंट में (सीक्वेंस) स्टेटमेंट्स हो सकते हैं, जो किसी भी उचित गहराई तक नेस्टेबल होते हैं, और सामान्यतः इन निहित स्टेटमेंट्स को मानने या न दोहराने का फैसला करने के लिए टेस्ट सम्मिलित होते हैं।


:: निम्नलिखित उदाहरणों के लिए संकेतन:
:: निम्नलिखित उदाहरणों के लिए संकेतन:
Line 47: Line 46:
:: अन्य प्रोग्रामिंग भाषाओं में प्रत्येक प्रकार के यौगिक कथन पर एक अलग विशेष टर्मिनेटर होता है, ताकि एक या अधिक कथन स्वचालित रूप से एक समूह के रूप में माने जा सकें:
:: अन्य प्रोग्रामिंग भाषाओं में प्रत्येक प्रकार के यौगिक कथन पर एक अलग विशेष टर्मिनेटर होता है, ताकि एक या अधिक कथन स्वचालित रूप से एक समूह के रूप में माने जा सकें:
::* अदा: <code>if test then <sequence> end if;</code>
::* अदा: <code>if test then <sequence> end if;</code>
कई कंपाउंड स्टेटमेंट लूप कमांड या चॉइस कमांड होते हैं। सिद्धांत रूप में इनमें से प्रत्येक प्रकार के आदेशों में से केवल एक की आवश्यकता होती है। व्यवहार में कई विशेष मामले होते हैं जो अक्सर होते हैं; ये किसी प्रोग्राम को समझने में आसान बना सकते हैं, प्रोग्रामिंग को आसान बना सकते हैं, और अक्सर इसे और अधिक कुशलता से लागू किया जा सकता है। यहाँ कई सूक्ष्मताओं का उल्लेख नहीं किया गया है; विवरण के लिए लिंक किए गए लेख देखें।
कई कंपाउंड स्टेटमेंट लूप कमांड या चॉइस कमांड होते हैं। सिद्धांत रूप में इनमें से प्रत्येक प्रकार के आदेशों में से केवल एक की आवश्यकता होती है। व्यवहार में कई विशेष परिस्थितियों होते हैं जो अक्सर होते हैं; ये किसी प्रोग्राम को समझने में आसान बना सकते हैं, प्रोग्रामिंग को आसान बना सकते हैं, और अक्सर इसे और अधिक कुशलता से लागू किया जा सकता है। यहाँ कई सूक्ष्मताओं का उल्लेख नहीं किया गया है; विवरण के लिए लिंक किए गए लेख देखें।


* लूप के लिए | काउंट-नियंत्रित लूप:
* लूप के लिए | काउंट-नियंत्रित लूप:
Line 59: Line 58:
END DO}}
END DO}}


* जबकि लूप|लूप की शुरुआत में परीक्षण के साथ स्थिति-नियंत्रित लूप:
* जबकि लूप|लूप की प्रारम्भ में परीक्षण के साथ स्थिति-नियंत्रित लूप:
** अल्गोल 60: <code>'''for''' index := expression '''while''' test '''do''' <statement> ;</code>
** अल्गोल 60: <code>'''for''' index := expression '''while''' test '''do''' <statement> ;</code>
** पास्कल: <code>while test do <statement> ;</code>
** पास्कल: <code>while test do <statement> ;</code>
Line 109: Line 108:
== सिंटेक्स ==
== सिंटेक्स ==


{{main|Syntax (programming languages)}}
{{main|सिंटैक्स (प्रोग्रामिंग भाषाएँ)}}


असाइनमेंट और सबरूटीन कॉल के अलावा, अधिकांश भाषाएँ प्रत्येक कथन को एक विशेष शब्द (जैसे गोटो, अगर, जबकि, आदि) से शुरू करती हैं, जैसा कि ऊपर दिए गए उदाहरणों में दिखाया गया है। विभिन्न भाषाओं में कथनों के रूप का वर्णन करने के लिए विभिन्न विधियों का उपयोग किया गया है; अधिक औपचारिक तरीके अधिक सटीक होते हैं:
असाइनमेंट और सबरूटीन कॉल के अलावा, अधिकांश भाषाएँ प्रत्येक कथन को एक विशेष शब्द (जैसे गोटो, अगर, जबकि, आदि) से शुरू करती हैं, जैसा कि ऊपर दिए गए उदाहरणों में दिखाया गया है। विभिन्न भाषाओं में कथनों के रूप का वर्णन करने के लिए विभिन्न विधियों का उपयोग किया गया है; अधिक औपचारिक तरीके अधिक सटीक होते हैं:
Line 116: Line 115:
* फोरट्रान 77 तक, उदाहरण के साथ अंग्रेजी गद्य में भाषा का वर्णन किया गया था,<ref name=FORTRAN66>ANSI FORTRAN 66 standard{{cite web|url=https://wg5-fortran.org/ARCHIVE/Fortran66.pdf|title=FORTRAN 66|access-date=February 19, 2021}}</ref> फोरट्रान 90 के बाद से, बीएनएफ के एक संस्करण का उपयोग करके भाषा का वर्णन किया गया था।<ref name=FORTRAN95>ANSI FORTRAN 95 standard{{cite web|url=https://j3-fortran.org/doc/year/04/04-007.pdf|title=Fortran95|access-date=February 19, 2021}}</ref>
* फोरट्रान 77 तक, उदाहरण के साथ अंग्रेजी गद्य में भाषा का वर्णन किया गया था,<ref name=FORTRAN66>ANSI FORTRAN 66 standard{{cite web|url=https://wg5-fortran.org/ARCHIVE/Fortran66.pdf|title=FORTRAN 66|access-date=February 19, 2021}}</ref> फोरट्रान 90 के बाद से, बीएनएफ के एक संस्करण का उपयोग करके भाषा का वर्णन किया गया था।<ref name=FORTRAN95>ANSI FORTRAN 95 standard{{cite web|url=https://j3-fortran.org/doc/year/04/04-007.pdf|title=Fortran95|access-date=February 19, 2021}}</ref>
* कोबोल ने द्वि-आयामी धातुभाषा का प्रयोग किया।<ref name=COBOL1959>Cobol manual.{{cite web|url=https://public.support.unisys.com/2200/docs/CP18.0/PDF/78307709-002.pdf|title=COBOL|access-date=January 23, 2021}}</ref>
* कोबोल ने द्वि-आयामी धातुभाषा का प्रयोग किया।<ref name=COBOL1959>Cobol manual.{{cite web|url=https://public.support.unisys.com/2200/docs/CP18.0/PDF/78307709-002.pdf|title=COBOL|access-date=January 23, 2021}}</ref>
* पास्कल ने [[ सिंटैक्स आरेख ]] और समकक्ष बीएनएफ दोनों का इस्तेमाल किया।<ref name=PASCAL>Pascal User Manual and Report Appendix D.{{cite web|url=http://prog.vub.ac.be/~tjdhondt/ESL/Pascal_files/PASCAL%20user%20manual%20and%20report.pdf|title=Pascal|access-date=February 19, 2021}}</ref>
* पास्कल ने [[ सिंटैक्स आरेख ]]और समकक्ष बीएनएफ दोनों का इस्तेमाल किया।<ref name=PASCAL>Pascal User Manual and Report Appendix D.{{cite web|url=http://prog.vub.ac.be/~tjdhondt/ESL/Pascal_files/PASCAL%20user%20manual%20and%20report.pdf|title=Pascal|access-date=February 19, 2021}}</ref>
बीएनएफ पुनरावृत्ति व्यक्त करने के लिए पुनरावर्तन का उपयोग करता है, इसलिए पुनरावृत्ति के प्रत्यक्ष संकेत की अनुमति देने के लिए विभिन्न विस्तारित बैकस-नौर रूप प्रस्तावित किए गए हैं।
बीएनएफ पुनरावृत्ति व्यक्त करने के लिए पुनरावर्तन का उपयोग करता है, इसलिए पुनरावृत्ति के प्रत्यक्ष संकेत की अनुमति देने के लिए विभिन्न विस्तारित बैकस-नौर रूप प्रस्तावित किए गए हैं।


Line 133: Line 132:
**<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>




==== ध्वजांकित शब्द ====
==== ध्वजांकित शब्द ====
{{main|Stropping (syntax)}}
{{main|स्ट्रॉपिंग (वाक्यविन्यास)}}


Algol 60 और Algol 68 में, विशेष टोकन स्पष्ट रूप से प्रतिष्ठित थे: प्रकाशन के लिए, बोल्डफेस में उदा। <code>'''begin'''</code>; प्रोग्रामिंग के लिए, कुछ विशेष अंकन के साथ, उदाहरण के लिए, एक ध्वज (<code>'begin</code>), उद्धरण चिह्न (<code>'begin'</code>), या रेखांकित (<code><u>begin</u></code> [[इलियट 503]] पर)। इसे स्ट्रॉपिंग कहा जाता है।
Algol 60 और Algol 68 में, विशेष टोकन स्पष्ट रूप से प्रतिष्ठित थे: प्रकाशन के लिए, बोल्डफेस में उदा। <code>'''begin'''</code>; प्रोग्रामिंग के लिए, कुछ विशेष अंकन के साथ, उदाहरण के लिए, एक ध्वज (<code>'begin</code>), उद्धरण चिह्न (<code>'begin'</code>), या रेखांकित (<code><u>begin</u></code> [[इलियट 503]] पर)। इसे स्ट्रॉपिंग कहा जाता है।
Line 145: Line 144:


==== आरक्षित कीवर्ड ====
==== आरक्षित कीवर्ड ====
{{main|Reserved word}}
{{main|आरक्षित शब्द}}
 
कुछ नाम प्रोग्रामिंग भाषा के हिस्से के रूप में आरक्षित हैं और इन्हें प्रोग्रामर-परिभाषित नामों के रूप में उपयोग नहीं किया जा सकता है।
कुछ नाम प्रोग्रामिंग भाषा के हिस्से के रूप में आरक्षित हैं और इन्हें प्रोग्रामर-परिभाषित नामों के रूप में उपयोग नहीं किया जा सकता है।
अधिकांश लोकप्रिय प्रोग्रामिंग भाषाएं आरक्षित कीवर्ड का उपयोग करती हैं। शुरुआती उदाहरणों में [[ फ्लो-Matic ]] (1953) और [[कोबोल]] (1959) शामिल हैं। 1970 के बाद से अन्य उदाहरणों में एडा, सी, सी++, जावा और पास्कल शामिल हैं। आरक्षित शब्दों की संख्या भाषा पर निर्भर करती है: C में लगभग 30 जबकि COBOL में लगभग 400 हैं।
अधिकांश लोकप्रिय प्रोग्रामिंग भाषाएं आरक्षित कीवर्ड का उपयोग करती हैं। प्रारम्भी उदाहरणों में [[ फ्लो-Matic ]] (1953) और [[कोबोल]] (1959) सम्मिलित हैं। 1970 के बाद से अन्य उदाहरणों में एडा, सी, सी++, जावा और पास्कल सम्मिलित हैं। आरक्षित शब्दों की संख्या भाषा पर निर्भर करती है: C में लगभग 30 जबकि COBOL में लगभग 400 हैं।


== सिमेंटिक्स ==
== सिमेंटिक्स ==
Line 160: Line 160:
निष्पादित किए गए कथनों और [[अभिव्यक्ति (प्रोग्रामिंग)]] के बीच अक्सर अंतर किया जाता है, जिनका मूल्यांकन किया जाता है। भाव हमेशा एक मान का मूल्यांकन करते हैं, जो कथन नहीं करते हैं। हालाँकि, अभिव्यक्तियाँ अक्सर एक बड़े बयान के हिस्से के रूप में उपयोग की जाती हैं।
निष्पादित किए गए कथनों और [[अभिव्यक्ति (प्रोग्रामिंग)]] के बीच अक्सर अंतर किया जाता है, जिनका मूल्यांकन किया जाता है। भाव हमेशा एक मान का मूल्यांकन करते हैं, जो कथन नहीं करते हैं। हालाँकि, अभिव्यक्तियाँ अक्सर एक बड़े बयान के हिस्से के रूप में उपयोग की जाती हैं।


अधिकांश प्रोग्रामिंग भाषाओं में, एक कथन में एक अभिव्यक्ति की तुलना में थोड़ा अधिक शामिल हो सकता है, सामान्यतः एक कथन टर्मिनेटर (अर्धविराम) के साथ अभिव्यक्ति का अनुसरण करके। ऐसे मामले में, जबकि अभिव्यक्ति एक मूल्य का मूल्यांकन करती है, पूरा बयान नहीं करता है (अभिव्यक्ति का मूल्य छोड़ दिया जाता है)। उदाहरण के लिए, C, C++, C#, और कई समान भाषाओं में, <code>x = y + 1</code> एक एक्सप्रेशन है जो x को y प्लस वन के मान पर सेट करेगा, और संपूर्ण एक्सप्रेशन स्वयं उसी मान का मूल्यांकन करेगा जिस पर x सेट है। हालाँकि, <code>x = y + 1;</code> (अंत में अर्धविराम पर ध्यान दें) एक बयान है जो अभी भी एक्स को वाई प्लस वन के मान पर सेट करेगा क्योंकि बयान के भीतर अभिव्यक्ति का अभी भी मूल्यांकन किया जाता है, लेकिन अभिव्यक्ति का नतीजा खारिज कर दिया जाता है, और बयान स्वयं का मूल्यांकन नहीं करता है कोई मान।<ref>https://www.dii.uchile.cl/~daespino/files/Iso_C_1999_definition.pdf {{Bare URL PDF|date=October 2022}}</ref>
अधिकांश प्रोग्रामिंग भाषाओं में, एक कथन में एक अभिव्यक्ति की तुलना में थोड़ा अधिक सम्मिलित हो सकता है, सामान्यतः एक कथन टर्मिनेटर (अर्धविराम) के साथ अभिव्यक्ति का अनुसरण करके। ऐसे परिस्थितियों में, जबकि अभिव्यक्ति एक मूल्य का मूल्यांकन करती है, पूरा बयान नहीं करता है (अभिव्यक्ति का मूल्य छोड़ दिया जाता है)। उदाहरण के लिए, 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>, जो तकनीकी रूप से भाव भी हैं।


हालाँकि पिछले उदाहरण असाइनमेंट एक्सप्रेशन दिखाते हैं, कुछ भाषाएँ असाइनमेंट को एक्सप्रेशन के रूप में नहीं बल्कि एक स्टेटमेंट के रूप में लागू करती हैं। इसका एक उल्लेखनीय उदाहरण पायथन (प्रोग्रामिंग लैंग्वेज) है, जहां = एक ऑपरेटर नहीं है, बल्कि असाइनमेंट स्टेटमेंट में सिर्फ एक विभाजक है। यद्यपि पायथन कई असाइनमेंट की अनुमति देता है क्योंकि प्रत्येक असाइनमेंट एक अभिव्यक्ति थी, यह केवल वास्तविक अभिव्यक्ति के बजाय भाषा व्याकरण में निर्मित असाइनमेंट स्टेटमेंट का एक विशेष मामला है।<ref>{{cite web | url=https://docs.python.org/3/reference/simple_stmts.html#assignment-statements | title=7. Simple statements — Python 3.10.8 documentation }}</ref>
हालाँकि पिछले उदाहरण असाइनमेंट एक्सप्रेशन दिखाते हैं, कुछ भाषाएँ असाइनमेंट को एक्सप्रेशन के रूप में नहीं बल्कि एक स्टेटमेंट के रूप में लागू करती हैं। इसका एक उल्लेखनीय उदाहरण पायथन (प्रोग्रामिंग लैंग्वेज) है, जहां = एक ऑपरेटर नहीं है, बल्कि असाइनमेंट स्टेटमेंट में सिर्फ एक विभाजक है। यद्यपि पायथन कई असाइनमेंट की अनुमति देता है क्योंकि प्रत्येक असाइनमेंट एक अभिव्यक्ति थी, यह केवल वास्तविक अभिव्यक्ति के बजाय भाषा व्याकरण में निर्मित असाइनमेंट स्टेटमेंट का एक विशेष परिस्थिति है।<ref>{{cite web | url=https://docs.python.org/3/reference/simple_stmts.html#assignment-statements | title=7. Simple statements — Python 3.10.8 documentation }}</ref>
 
 
== एक्स्टेंसिबिलिटी ==
== एक्स्टेंसिबिलिटी ==


Line 171: Line 169:


== यह भी देखें ==
== यह भी देखें ==
* प्रोग्रामिंग भाषाओं की तुलना (वाक्यविन्यास) # कथन | प्रोग्रामिंग भाषाओं की तुलना - कथन
* प्रोग्रामिंग भाषाओं की तुलना (वाक्यविन्यास) # कथन प्रोग्रामिंग भाषाओं की तुलना - कथन
* [[बहाव को काबू करें]]
* [[बहाव को काबू करें]]
* अभिव्यक्ति (प्रोग्रामिंग) (विपरीत)
* अभिव्यक्ति (प्रोग्रामिंग) (विपरीत)

Revision as of 22:14, 22 June 2023

कंप्यूटर प्रोग्रामिंग में, स्टेटमेंट एक अनिवार्य प्रोग्रामिंग की सिंटेक्स (प्रोग्रामिंग लैंग्वेज) इकाई है जो कुछ क्रियाओं को करने के लिए व्यक्त करती है।[1] ऐसी भाषा में लिखा गया कंप्यूटर प्रोग्राम एक या एक से अधिक कथनों के अनुक्रम से बनता है। एक बयान में आंतरिक घटक हो सकते हैं (जैसे अभिव्यक्ति (कंप्यूटर विज्ञान))।

कई प्रोग्रामिंग लैंग्वेज (जैसे Ada (प्रोग्रामिंग लैंग्वेज), ऐल्गॉल 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> }
अन्य प्रोग्रामिंग भाषाओं में प्रत्येक प्रकार के यौगिक कथन पर एक अलग विशेष टर्मिनेटर होता है, ताकि एक या अधिक कथन स्वचालित रूप से एक समूह के रूप में माने जा सकें:
  • अदा: 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: 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
      
  • लूप करते समय करें | लूप के अंत में परीक्षण के साथ स्थिति-नियंत्रित लूप:
    • पास्कल: 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: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
      
  • स्विच स्टेटमेंट | केस/स्विच स्टेटमेंट मल्टी-वे विकल्प:
    • पास्कल: 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


ध्वजांकित शब्द

Algol 60 और Algol 68 में, विशेष टोकन स्पष्ट रूप से प्रतिष्ठित थे: प्रकाशन के लिए, बोल्डफेस में उदा। begin; प्रोग्रामिंग के लिए, कुछ विशेष अंकन के साथ, उदाहरण के लिए, एक ध्वज ('begin), उद्धरण चिह्न ('begin'), या रेखांकित (begin इलियट 503 पर)। इसे स्ट्रॉपिंग कहा जाता है।

टोकन जो भाषा सिंटैक्स का हिस्सा हैं, इस प्रकार प्रोग्रामर-परिभाषित नामों के साथ संघर्ष नहीं करते हैं।

आरक्षित कीवर्ड

कुछ नाम प्रोग्रामिंग भाषा के हिस्से के रूप में आरक्षित हैं और इन्हें प्रोग्रामर-परिभाषित नामों के रूप में उपयोग नहीं किया जा सकता है। अधिकांश लोकप्रिय प्रोग्रामिंग भाषाएं आरक्षित कीवर्ड का उपयोग करती हैं। प्रारम्भी उदाहरणों में फ्लो-Matic (1953) और कोबोल (1959) सम्मिलित हैं। 1970 के बाद से अन्य उदाहरणों में एडा, सी, सी++, जावा और पास्कल सम्मिलित हैं। आरक्षित शब्दों की संख्या भाषा पर निर्भर करती है: C में लगभग 30 जबकि COBOL में लगभग 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]

एक्स्टेंसिबिलिटी

अधिकांश भाषाओं में भाषा द्वारा परिभाषित बयानों का एक निश्चित सेट होता है, लेकिन विस्तारणीय भाषाओं के साथ प्रयोग किए गए हैं जो प्रोग्रामर को नए बयानों को परिभाषित करने की अनुमति देते हैं।

यह भी देखें

  • प्रोग्रामिंग भाषाओं की तुलना (वाक्यविन्यास) # कथन प्रोग्रामिंग भाषाओं की तुलना - कथन
  • बहाव को काबू करें
  • अभिव्यक्ति (प्रोग्रामिंग) (विपरीत)

संदर्भ

  1. "कथन". webopedia. September 1996. Retrieved 2015-03-03.
  2. Revised ALGOL 60 report section. 4.1."ALGOL 60". Retrieved January 23, 2021.
  3. Revised ALGOL 60 report section 1.1."ALGOL 60". Retrieved January 23, 2021.
  4. ANSI FORTRAN 66 standard"FORTRAN 66" (PDF). Retrieved February 19, 2021.
  5. ANSI FORTRAN 95 standard"Fortran95" (PDF). Retrieved February 19, 2021.
  6. Cobol manual."COBOL" (PDF). Retrieved January 23, 2021.
  7. Pascal User Manual and Report Appendix D."Pascal" (PDF). Retrieved February 19, 2021.
  8. Trouble spots in Algol 60"Trouble Spots" (PDF). Retrieved February 24, 2021.
  9. https://www.dii.uchile.cl/~daespino/files/Iso_C_1999_definition.pdf[bare URL PDF]
  10. "7. Simple statements — Python 3.10.8 documentation".

बाहरी संबंध