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

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


कई प्रोग्रामिंग लैंग्वेज (जैसे Ada (प्रोग्रामिंग लैंग्वेज), [[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>
जिन स्टेटमेंट में अन्य स्टेटमेंट नहीं हो सकते वे ''सरल'' हैं; जिनमें अन्य स्टेटमेंट हो सकते हैं वे ''कंपाउंड (यौगिक)'' हैं।<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 17: 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 31: 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 59: Line 56:
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 74: 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 84: 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 105: Line 102:
** जावा: <code>try { ''protected code'' } catch (''exception specification'') { ''exception handler'' } finally { ''cleanup'' }</code>
** जावा: <code>try { ''protected code'' } catch (''exception specification'') { ''exception handler'' } finally { ''cleanup'' }</code>
** पायथन: <code> try: ''protected code'' except ''exception specification'': ''exception handler'' else: ''no exceptions''  finally: ''cleanup''</code>
** पायथन: <code> try: ''protected code'' except ''exception specification'': ''exception handler'' else: ''no exceptions''  finally: ''cleanup''</code>
== सिंटेक्स ==
== सिंटेक्स ==


{{main|Syntax (programming languages)}}
{{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>
* फोरट्रान 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>
बीएनएफ पुनरावृत्ति व्यक्त करने के लिए पुनरावर्तन का उपयोग करता है, इसलिए पुनरावृत्ति के प्रत्यक्ष संकेत की अनुमति देने के लिए विभिन्न विस्तारित बैकस-नौर रूप प्रस्तावित किए गए हैं।
बीएनएफ पुनरावृत्ति व्यक्त करने के लिए पुनरावर्तन का उपयोग करता है, इसलिए पुनरावृत्ति के प्रत्यक्ष संकेत की अनुमति देने के लिए विभिन्न विस्तारित बैकस-नौर रूप प्रस्तावित किए गए हैं।


=== कथन और कीवर्ड ===
=== स्टेटमेंट और कीवर्ड ===


कुछ प्रोग्रामिंग भाषा व्याकरण [[आरक्षित शब्द]] या स्ट्रॉपिंग (वाक्यविन्यास) हैं, और उन्हें पहचानकर्ता (कंप्यूटर भाषा) के रूप में उपयोग करने की अनुमति नहीं देते हैं। यह अक्सर [[औपचारिक व्याकरण]] की ओर ले जाता है जो पार्स करना आसान होता है, कम [[ पदच्छेद ]]#लुकहेड की आवश्यकता होती है।
कुछ प्रोग्रामिंग भाषा व्याकरण [[आरक्षित शब्द]] या स्ट्रॉपिंग (वाक्यविन्यास) हैं, और उन्हें पहचानकर्ता (कंप्यूटर भाषा) के रूप में उपयोग करने की अनुमति नहीं देते हैं। यह प्रायः [[औपचारिक व्याकरण]] की ओर ले जाता है जो पार्स करना आसान होता है, कम [[ पदच्छेद ]]#लुकहेड की आवश्यकता होती है।


==== कोई विशिष्ट कीवर्ड नहीं ====
==== कोई विशिष्ट कीवर्ड नहीं ====


फोरट्रान और पीएल/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>
==== फ्लेग्गेड शब्द ====
{{main|स्ट्रॉपिंग (सिंटेक्स/वाक्यविन्यास)}}


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


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


टोकन जो भाषा सिंटैक्स का हिस्सा हैं, इस प्रकार प्रोग्रामर-परिभाषित नामों के साथ संघर्ष नहीं करते हैं।
==== रिजर्व्ड कीवर्ड (आरक्षित कीवर्ड) ====
{{main|आरक्षित शब्द}}


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


== सिमेंटिक्स ==
== सिमेंटिक्स ==
Line 153: 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> कुछ भाषा विवरणों में यौगिक कथनों का अर्थ 'सरल' निर्माणों के उपयोग से परिभाषित किया गया है, उदा। a while लूप को टेस्ट, जंप और लेबल के संयोजन द्वारा परिभाषित किया जा सकता है <code>if</code> और <code>goto</code>.
शब्दार्थ एक कार्यक्रम के अर्थ से संबंधित है। कई प्रोग्रामिंग भाषाओं के लिए मानक दस्तावेज़ सिंटैक्स/व्याकरण को काफी औपचारिक और सटीक तरीके से व्यक्त करने के लिए बीएनएफ या कुछ समकक्ष का उपयोग करते हैं, लेकिन कार्यक्रम के शब्दार्थ/अर्थ को सामान्यतः उदाहरणों और अंग्रेजी गद्य का उपयोग करके वर्णित किया जाता है। इसका परिणाम अस्पष्टता हो सकता है।<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>


अधिकांश प्रोग्रामिंग भाषाओं में, एक कथन में एक अभिव्यक्ति की तुलना में थोड़ा अधिक शामिल हो सकता है, सामान्यतः एक कथन टर्मिनेटर (अर्धविराम) के साथ अभिव्यक्ति का अनुसरण करके। ऐसे मामले में, जबकि अभिव्यक्ति एक मूल्य का मूल्यांकन करती है, पूरा बयान नहीं करता है (अभिव्यक्ति का मूल्य छोड़ दिया जाता है)। उदाहरण के लिए, 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>
भावों को अन्य भावों में भी समाहित किया जा सकता है। उदाहरण के लिए, अभिव्यक्ति <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 180: 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)}}[[Category: प्रोग्रामिंग भाषा अवधारणाओं]] [[Category: बयान]]
{{DEFAULTSORT:Statement (Programming)}}
 
 


[[Category: Machine Translated Page]]
[[Category:All articles with bare URLs for citations]]
[[Category:Created On 18/06/2023]]
[[Category:Articles with PDF format bare URLs for citations]]
[[Category:Articles with bare URLs for citations from October 2022]]
[[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> }
अन्य प्रोग्रामिंग भाषाओं में प्रत्येक प्रकार के यौगिक स्टेटमेंट पर एक अलग विशेष टर्मिनेटर होता है, ताकि एक या अधिक स्टेटमेंट स्वचालित रूप से एक समूह के रूप में माने जा सकें:
  • अदा: 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

फ्लेग्गेड शब्द

अल्गोल 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]

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

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

यह भी देखें

  • प्रोग्रामिंग भाषाओं की तुलना (वाक्यविन्यास)
  • नियंत्रण प्रवाह
  • अभिव्यक्ति (प्रोग्रामिंग) (विपरीत)

संदर्भ

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

बाहरी संबंध