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

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

कई प्रोग्रामिंग लैंग्वेज जैसे (एडा, अल्गोल 60, C, जावा, पास्कल (प्रोग्रामिंग भाषा)) स्टेटमेंट्स और डिक्लेरेशन (कंप्यूटर प्रोग्रामिंग) डेफिनिशन / डिक्लेरेशन के बीच अंतर करती हैं। एक परिभाषा या घोषणा उस डेटा को निर्दिष्ट करती है जिस पर प्रोग्राम संचालित होता है, जबकि एक स्टेटमेंट उस डेटा के साथ की जाने वाली कार्रवाइयों को निर्दिष्ट करता है।

जिन स्टेटमेंट में अन्य स्टेटमेंट नहीं हो सकते वे सरल हैं; जिनमें अन्य स्टेटमेंट हो सकते हैं वे कंपाउंड (यौगिक) हैं। एक स्टेटमेंट (और वास्तव में एक कार्यक्रम) की उपस्थिति उसके सिंटेक्स (प्रोग्रामिंग भाषाओं) या व्याकरण द्वारा निर्धारित की जाती है। एक स्टेटमेंट का अर्थ उसके शब्दार्थ (कंप्यूटर विज्ञान) द्वारा निर्धारित किया जाता है।

सरल स्टेटमेंट
सरल स्टेटमेंट अपने आप में पूर्ण होते हैं; इनमें असाइनमेंट, सबरूटीन कॉल और कुछ स्टेटमेंट सम्मिलित हैं जो नियंत्रण के प्रोग्राम फ्लो को महत्वपूर्ण रूप से प्रभावित कर सकते हैं (जैसे के लिए जाओ, रिटर्न स्टेटमेंट, स्टॉप/हॉल्ट)। कुछ भाषाओं में, इनपुट और आउटपुट, अभिस्टेटमेंट और निकास को विशेष स्टेटमेंटों द्वारा नियंत्रित किया जाता है, जबकि अन्य भाषाएँ पूर्वनिर्धारित सबरूटीन्स के लिए कॉल का उपयोग करती हैं।


 * असाइनमेंट (कंप्यूटर विज्ञान)
 * फोरट्रान:
 * पास्कल, अल्गोल 60, एडीए:
 * सी, सी#, सी++, पीएचपी, जावा:
 * सबरूटीन
 * फोरट्रान:
 * सी, सी++, जावा, पीएचपी, पास्कल, अदा:
 * अभिस्टेटमेंट (सॉफ्टवेयर विकास)
 * सी, सी++, पीएचपी:
 * जावा:
 * के लिए जाओ
 * फोरट्रान:
 * अल्गोल 60:
 * सी, सी++, पीएचपी, पास्कल:
 * रिटर्न स्टेटमेंट
 * फोरट्रान:
 * सी, सी++, जावा, पीएचपी:
 * बाहर निकलें (सिस्टम कॉल) | रोकें/रोकें/बाहर निकलें
 * फोरट्रान:
 * सी, सी++:
 * पीएचपी:

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


 * निम्नलिखित उदाहरणों के लिए संकेतन:
 * <स्टेटमेंट> कोई एकल स्टेटमेंट है (सरल या मिश्रित हो सकता है)।
 * <अनुक्रम> शून्य या अधिक <स्टेटमेंट> का कोई अनुक्रम है
 * कुछ प्रोग्रामिंग लैंग्वेज स्टेटमेंट्स को एक साथ समूहीकृत करने का एक सामान्य तरीका प्रदान करती हैं, ताकि किसी एक <स्टेटमेंट> को एक समूह द्वारा प्रतिस्थापित किया जा सके:


 * अल्गोल 60:
 * पास्कल:
 * सी, पीएचपी, जावा:
 * अन्य प्रोग्रामिंग भाषाओं में प्रत्येक प्रकार के यौगिक स्टेटमेंट पर एक अलग विशेष टर्मिनेटर होता है, ताकि एक या अधिक स्टेटमेंट स्वचालित रूप से एक समूह के रूप में माने जा सकें:
 * अदा:

कई कंपाउंड स्टेटमेंट लूप कमांड या चॉइस कमांड होते हैं। सिद्धांत रूप में इनमें से प्रत्येक प्रकार के आदेशों में से केवल एक की आवश्यकता होती है। व्यवहार में कई विशेष परिस्थितियों होते हैं जो प्रायः होते हैं; ये किसी प्रोग्राम को समझने में आसान बना सकते हैं, प्रोग्रामिंग को आसान बना सकते हैं, और प्रायः इसे और अधिक कुशलता से लागू किया जा सकता है। यहाँ कई सूक्ष्मताओं का उल्लेख नहीं किया गया है; विवरण के लिए लिंक किए गए लेख देखें।


 * लूप के लिए | काउंट-नियंत्रित लूप:
 * अल्गोल 60:
 * पास्कल:
 * सी, जावा:
 * वहाँ है:
 * फोरट्रान 90:


 * जबकि लूप|लूप की प्रारम्भ में परीक्षण के साथ स्थिति-नियंत्रित लूप:
 * अल्गोल 60:
 * पास्कल:
 * सी, जावा:
 * वहाँ है:
 * फोरट्रान 90:
 * लूप करते समय करें | लूप के अंत में परीक्षण के साथ स्थिति-नियंत्रित लूप:
 * पास्कल:  ** सी, जावा:
 * वहाँ है:
 * लूप के बीच में परीक्षण के साथ स्थिति-नियंत्रित लूप:
 * सी:
 * वहाँ है:
 * सशर्त (प्रोग्रामिंग)|अगर-स्टेटमेंट सरल स्थिति:
 * अल्गोल 60:
 * पास्कल:
 * सी, जावा:
 * वहाँ है:
 * फोरट्रान 77+:


 * सशर्त (प्रोग्रामिंग) | यदि-स्टेटमेंट दो तरफा विकल्प:
 * अल्गोल 60:
 * पास्कल:
 * सी, जावा:
 * वहाँ है:
 * फोरट्रान 77+:
 * स्विच स्टेटमेंट | केस/स्विच स्टेटमेंट मल्टी-वे विकल्प:
 * पास्कल: 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; }
 * एक्सेप्शन हेंडलिंग:
 * अदा:
 * जावा:
 * पायथन:

सिंटेक्स
असाइनमेंट और सबरूटीन कॉल के अलावा, अधिकांश भाषाएँ प्रत्येक स्टेटमेंट को एक विशेष शब्द (जैसे गोटो, अगर, जबकि, आदि) से शुरू करती हैं, जैसा कि ऊपर दिए गए उदाहरणों में दिखाया गया है। विभिन्न भाषाओं में स्टेटमेंटों के रूप का वर्णन करने के लिए विभिन्न विधियों का उपयोग किया गया है; अधिक औपचारिक तरीके अधिक सटीक होते हैं:

बीएनएफ पुनरावृत्ति व्यक्त करने के लिए पुनरावर्तन का उपयोग करता है, इसलिए पुनरावृत्ति के प्रत्यक्ष संकेत की अनुमति देने के लिए विभिन्न विस्तारित बैकस-नौर रूप प्रस्तावित किए गए हैं।
 * अल्गोल 60 ने बैकस-नौर फॉर्म (बीएनएफ) का इस्तेमाल किया जो भाषा व्याकरण विनिर्देश के लिए एक नया स्तर निर्धारित करता है।
 * फोरट्रान 77 तक, उदाहरण के साथ अंग्रेजी गद्य में भाषा का वर्णन किया गया था, फोरट्रान 90 के बाद से, बीएनएफ के एक संस्करण का उपयोग करके भाषा का वर्णन किया गया था।
 * कोबोल ने द्वि-आयामी धातुभाषा का प्रयोग किया।
 * पास्कल ने सिंटैक्स आरेख और समकक्ष बीएनएफ दोनों का इस्तेमाल किया।

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

कोई विशिष्ट कीवर्ड नहीं
फोरट्रान और पीएल/1 में आरक्षित कीवर्ड नहीं हैं, जैसे स्टेटमेंटों की अनुमति:


 * पीएल/1 में:
 * (दूसरा  और पहला   चर हैं)।
 * फोरट्रान में:
 * सशर्त स्टेटमेंट (अन्य रूपों के साथ)
 * नामित एक सबस्क्रिप्टेड चर के लिए असाइनमेंट
 * चूंकि फोरट्रान 95 तक रिक्त स्थान वैकल्पिक थे, एक टाइपो पूरी तरह से एक स्टेटमेंट का अर्थ बदल सकता है:
 * I के साथ एक लूप की प्रारम्भ 1 से 5 तक चल रही है
 * चर को मान 1.5 का असाइनमेंट

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

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

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

सिमेंटिक्स
शब्दार्थ एक कार्यक्रम के अर्थ से संबंधित है। कई प्रोग्रामिंग भाषाओं के लिए मानक दस्तावेज़ सिंटैक्स/व्याकरण को काफी औपचारिक और सटीक तरीके से व्यक्त करने के लिए बीएनएफ या कुछ समकक्ष का उपयोग करते हैं, लेकिन कार्यक्रम के शब्दार्थ/अर्थ को सामान्यतः उदाहरणों और अंग्रेजी गद्य का उपयोग करके वर्णित किया जाता है। इसका परिणाम अस्पष्टता हो सकता है। कुछ भाषा विवरणों में यौगिक स्टेटमेंटों का अर्थ 'सरल' निर्माणों के उपयोग से परिभाषित किया गया है, उदा। a while लूप को टेस्ट, जंप और लेबल के संयोजन द्वारा परिभाषित किया जा सकता है  और.

शब्दार्थ (कंप्यूटर विज्ञान) लेख कई गणितीय/तार्किक औपचारिकताओं का वर्णन करता है जिनका उपयोग शब्दार्थ को सटीक तरीके से निर्दिष्ट करने के लिए किया गया है; ये सामान्यतः बीएनएफ की तुलना में अधिक जटिल होते हैं, और सामान्यतः जाने के तरीके के रूप में कोई एकल दृष्टिकोण स्वीकार नहीं किया जाता है। कुछ दृष्टिकोण प्रभावी ढंग से भाषा के लिए एक दुभाषिया को परिभाषित करते हैं, कुछ एक कार्यक्रम के बारे में तर्क के लिए औपचारिक तर्क का उपयोग करते हैं, कुछ निरंतरता सुनिश्चित करने के लिए वाक्यात्मक संस्थाओं को प्रत्यय संलग्न करते हैं, आदि।

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

अधिकांश प्रोग्रामिंग भाषाओं में, एक स्टेटमेंट में एक अभिव्यक्ति की तुलना में थोड़ा अधिक सम्मिलित हो सकता है, सामान्यतः एक स्टेटमेंट टर्मिनेटर (अर्धविराम) के साथ अभिव्यक्ति का अनुसरण करके। ऐसे परिस्थितियों में, जबकि अभिव्यक्ति एक मूल्य का मूल्यांकन करती है, पूरा स्टेटमेंट नहीं करता है (अभिव्यक्ति का मूल्य छोड़ दिया जाता है)। उदाहरण के लिए, C, C++, C#, और कई समान भाषाओं में,  एक एक्सप्रेशन है जो x को y प्लस वन के मान पर सेट करेगा, और संपूर्ण एक्सप्रेशन स्वयं उसी मान का मूल्यांकन करेगा जिस पर x सेट है। हालाँकि,   (अंत में अर्धविराम पर ध्यान दें) एक स्टेटमेंट है जो अभी भी एक्स को y + 1 के मान पर सेट करेगा क्योंकि स्टेटमेंट के भीतर अभिव्यक्ति का अभी भी मूल्यांकन किया जाता है, लेकिन अभिव्यक्ति का नतीजा खारिज कर दिया जाता है, और स्टेटमेंट स्वयं का मूल्यांकन नहीं करता है कोई मान।

भावों को अन्य भावों में भी समाहित किया जा सकता है। उदाहरण के लिए, अभिव्यक्ति  अभिव्यक्ति समाहित है , जिसमें बदले में मान होते हैं   और  , जो तकनीकी रूप से भाव भी हैं।

हालाँकि पिछले उदाहरण असाइनमेंट एक्सप्रेशन दिखाते हैं, कुछ भाषाएँ असाइनमेंट को एक्सप्रेशन के रूप में नहीं बल्कि एक स्टेटमेंट के रूप में लागू करती हैं। इसका एक उल्लेखनीय उदाहरण पायथन (प्रोग्रामिंग लैंग्वेज) है, जहां = एक ऑपरेटर नहीं है, बल्कि असाइनमेंट स्टेटमेंट में सिर्फ एक विभाजक है। यद्यपि पायथन कई असाइनमेंट की अनुमति देता है क्योंकि प्रत्येक असाइनमेंट एक अभिव्यक्ति थी, यह केवल वास्तविक अभिव्यक्ति के बजाय भाषा व्याकरण में निर्मित असाइनमेंट स्टेटमेंट का एक विशेष परिस्थिति है।

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

यह भी देखें

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

बाहरी संबंध

 * PC ENCYCLOPEDIA: Definition of: program statement