स्यूडोकोड: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(17 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Informal high-level description of the operation of a computer program or other algorithm}}
{{Short description|Informal high-level description of the operation of a computer program or other algorithm}}
[[कंप्यूटर विज्ञान]] में, स्यूडोकोड [[कलन विधि]] या अन्य सिस्टम में चरणों का सादा भाषा विवरण है। स्यूडोकोड अक्सर सामान्य [[प्रोग्रामिंग भाषा]] के संरचनात्मक सम्मेलनों का उपयोग करता है, लेकिन मशीन पढ़ने के बजाय मानव पढ़ने के लिए अभिप्रेत है। यह सामान्यतः उन विवरणों को छोड़ देता है जो एल्गोरिथ्म की मशीन की समझ के लिए आवश्यक हैं, जैसे चर घोषणाएं और भाषा-विशिष्ट कोड। प्रोग्रामिंग भाषा को [[प्राकृतिक भाषा]] विवरण विवरण के साथ, जहाँ सुविधाजनक हो, या कॉम्पैक्ट गणितीय संकेतन के साथ संवर्धित किया जाता है। स्यूडोकोड का उपयोग करने का उद्देश्य यह है कि पारंपरिक प्रोग्रामिंग भाषा कोड की तुलना में लोगों के लिए इसे समझना आसान है, और यह एल्गोरिथम के प्रमुख सिद्धांतों का कुशल और पर्यावरण-स्वतंत्र विवरण है। यह सामान्यतः पाठ्य पुस्तकों और [[वैज्ञानिक प्रकाशन|वैज्ञानिक प्रकाशनों]] में एल्गोरिदम को दस्तावेज करने और सॉफ्टवेयर और अन्य एल्गोरिदम की योजना बनाने में उपयोग किया जाता है।
कंप्यूटर विज्ञान में, '''स्यूडोकोड''' [[कलन विधि]] या अन्य प्रणाली में चरणों का सरल भाषा विवरण है। स्यूडोकोड प्रायः सामान्य [[प्रोग्रामिंग भाषा]] के संरचनात्मक सम्मेलनों का उपयोग करता है, किन्तु मशीन पढ़ने के अतिरिक्त मानव पढ़ने के लिए अभिप्रेत है। यह सामान्यतः उन विवरणों का त्याग करता है जो एल्गोरिथ्म की मशीन की समझ के लिए आवश्यक हैं, जैसे चर घोषणाएं एवं भाषा-विशिष्ट कोड हैं। प्रोग्रामिंग भाषा को [[प्राकृतिक भाषा]] विवरण के साथ, जहाँ सुविधाजनक हो, या कॉम्पैक्ट गणितीय संकेतन के साथ संवर्धित किया जाता है। स्यूडोकोड का उपयोग करने का उद्देश्य यह है कि पारंपरिक प्रोग्रामिंग भाषा कोड की तुलना में लोगों के लिए इसे समझना सरल है, एवं यह एल्गोरिथम के प्रमुख सिद्धांतों का कुशल एवं पर्यावरण-स्वतंत्र विवरण है। यह सामान्यतः पाठ्य पुस्तकों एवं [[वैज्ञानिक प्रकाशन|वैज्ञानिक प्रकाशनों]] में एल्गोरिदम को दस्तावेज करने एवं सॉफ्टवेयर एवं अन्य एल्गोरिदम की योजना बनाने में उपयोग किया जाता है।


स्यूडोकोड [[सिंटेक्स (प्रोग्रामिंग भाषाएं)]] के लिए कोई व्यापक मानक मौजूद नहीं है, क्योंकि स्यूडोकोड में कोई प्रोग्राम निष्पादन योग्य प्रोग्राम नहीं है;यद्यपि, कुछ सीमित मानक मौजूद हैं (जैसे शैक्षणिक मूल्यांकन के लिए)। स्यूडोकोड [[कंकाल (कंप्यूटर प्रोग्रामिंग)]] जैसा दिखता है, जो त्रुटियों के बिना [[संकलक]] हो सकता है। [[फ़्लोचार्ट]]्स, [[DRAKON]]|ड्रैकन-चार्ट्स और [[एकीकृत मॉडलिंग भाषा]] (UML) चार्ट्स को स्यूडोकोड के ग्राफ़िकल विकल्प के रूप में सोचा जा सकता है, लेकिन कागज पर अधिक स्थान की आवश्यकता होती है। <span class= plainlinks>[[HAGGIS]]</span> जैसी भाषाएं प्रोग्रामिंग भाषाओं में लिखे स्यूडोकोड और कोड के बीच की खाई को पाटती हैं।
स्यूडोकोड [[सिंटेक्स (प्रोग्रामिंग भाषाएं)]] के लिए कोई व्यापक मानक उपस्थित नहीं है, क्योंकि स्यूडोकोड में कोई प्रोग्राम निष्पादन योग्य प्रोग्राम नहीं है; यद्यपि, कुछ सीमित मानक उपस्थित हैं (जैसे शैक्षणिक मूल्यांकन के लिए)। स्यूडोकोड [[कंकाल (कंप्यूटर प्रोग्रामिंग)|स्केलेटन (कंप्यूटर प्रोग्रामिंग)]] जैसा दिखता है, जो त्रुटियों के आभाव में [[संकलक]] हो सकता है। [[फ़्लोचार्ट|फ़्लोचार्ट्स]], ड्रैकन-चार्ट्स [[DRAKON|(ड्रैकन)]] एवं [[एकीकृत मॉडलिंग भाषा]] (यूएमएल) चार्ट्स को स्यूडोकोड का ग्राफ़िकल विकल्प के रूप में विचार किया जा सकता है, किन्तु कागज पर अधिक स्थान की आवश्यकता होती है। <span class= plainlinks>[[HAGGIS|हैगिस]]</span> जैसी भाषाएं प्रोग्रामिंग भाषाओं में लिखे स्यूडोकोड एवं कोड के मध्य सम्बन्ध है।


== आवेदन ==
== अनुप्रयोग ==
कंप्यूटर विज्ञान और संख्यात्मक संगणना से संबंधित पाठ्यपुस्तकें और [[वैज्ञानिक प्रकाशन]] अक्सर एल्गोरिदम के विवरण में स्यूडोकोड का उपयोग करते हैं, ताकि सभी [[प्रोग्रामर]] उन्हें समझ सकें, भले ही वे सभी समान प्रोग्रामिंग भाषाओं को न जानते हों। पाठ्यपुस्तकों में, आम तौर पर एक परिचयात्मक परिचय होता है जो उपयोग में आने वाले विशेष सम्मेलनों की व्याख्या करता है। स्यूडोकोड के विवरण का स्तर कुछ मामलों में औपचारिक सामान्य-उद्देश्य वाली भाषाओं के समान हो सकता है।
कंप्यूटर विज्ञान एवं  संख्यात्मक संगणना से संबंधित पाठ्य-पुस्तकें एवं [[वैज्ञानिक प्रकाशन]] अधिकांशतः एल्गोरिदम के विवरण में स्यूडोकोड का उपयोग करते हैं, जिससे सभी [[प्रोग्रामर]] उन्हें समझ सकें, यदि वे सभी समान प्रोग्रामिंग भाषाओं को न जानते हों। पाठ्य-पुस्तकों में, सामान्यतः परिचयात्मक परिचय होता है जो उपयोग में आने वाले विशेष सम्मेलनों की व्याख्या करता है। स्यूडोकोड के विवरण का स्तर कुछ हानि में औपचारिक सामान्य-उद्देश्य वाली भाषाओं के समान हो सकता है।


एक प्रोग्रामर जिसे एक विशिष्ट एल्गोरिथ्म को लागू करने की आवश्यकता होती है, विशेष रूप से एक अपरिचित एक, अक्सर एक स्यूडोकोड विवरण के साथ शुरू होता है, और फिर उस विवरण को लक्ष्य प्रोग्रामिंग भाषा में अनुवादित करता है और बाकी प्रोग्राम के साथ सही ढंग से इंटरैक्ट करने के लिए इसे संशोधित करता है। प्रोग्रामर किसी प्रोजेक्ट को उसकी वास्तविक भाषा में लिखने से पहले कागज पर स्यूडोकोड में स्केच करके भी शुरू कर सकते हैं, [[टॉप-डाउन और बॉटम-अप डिज़ाइन]] | टॉप-डाउन स्ट्रक्चरिंग अप्रोच के रूप में, चरणों की एक प्रक्रिया के रूप में शोधन।
प्रोग्रामर जिसे विशिष्ट एल्गोरिथ्म को प्रारम्भ करने की आवश्यकता होती है, विशेष रूप से अपरिचित, अधिकांशतः स्यूडोकोड विवरण के साथ प्रारम्भ होता है, एवं फिर उस विवरण को लक्ष्य प्रोग्रामिंग भाषा में अनुवादित करता है एवं अन्य प्रोग्राम के साथ उत्तम रूप से इंटरैक्ट करने के लिए इसे संशोधित करता है। प्रोग्रामर किसी प्रोजेक्ट को उसकी वास्तविक भाषा में लिखने से पूर्व कागज पर स्यूडोकोड [[टॉप-डाउन और बॉटम-अप डिज़ाइन|टॉप-डाउन एवं बॉटम-अप डिज़ाइन]] के रूप में, चरणों की प्रक्रिया के रूप में स्केच करके भी प्रारम्भ कर सकते है |


== सिंटेक्स ==
== सिंटेक्स ==
स्यूडोकोड सामान्यतः वास्तव में किसी विशेष भाषा के [[वाक्य - विन्यास]] नियमों का पालन नहीं करता है; कोई व्यवस्थित मानक रूप नहीं है। कुछ लेखक कुछ पारंपरिक प्रोग्रामिंग भाषा से नियंत्रण संरचनाओं से शैली और वाक्य रचना उधार लेते हैं,यद्यपि यह हतोत्साहित किया जाता है।<ref>{{cite book|title=Code Complete|title-link=Code Complete|page=54 |quote=Avoid syntactic elements from the target programming language|first1=Steve|last1=McConnell|authorlink=Steve McConnell|isbn=978-0-7356-1967-8 |date=2004}}</ref><ref>Invitation to Computer Science, 8th Edition by Schneider/[[Judith Gersting|Gersting]], "Keep statements language independent" as quoted [https://cs.stackexchange.com/questions/97851/writing-pseudocode-to-be-language-independent in this stackexchange question]</ref> कुछ वाक्यविन्यास स्रोतों में [[फोरट्रान]], [[पास्कल (प्रोग्रामिंग भाषा)]], [[बुनियादी]], [[सी (प्रोग्रामिंग भाषा)]], [[सी ++]], [[जावा (प्रोग्रामिंग भाषा)]], [[लिस्प (प्रोग्रामिंग भाषा)]], और एल्गोल शामिल हैं। परिवर्तनीय घोषणाएं आम तौर पर छोड़ी जाती हैं। फ़ंक्शन कॉल और कोड के ब्लॉक, जैसे लूप के भीतर मौजूद कोड, अक्सर एक-पंक्ति प्राकृतिक भाषा वाक्य द्वारा प्रतिस्थापित किए जाते हैं।
स्यूडोकोड सामान्यतः वास्तव में किसी विशेष भाषा के [[वाक्य - विन्यास|वाक्य-विन्यास]] नियमों का पालन नहीं करता है। इसका कोई व्यवस्थित मानक रूप नहीं है। लेखक कुछ पारंपरिक प्रोग्रामिंग भाषा से नियंत्रण संरचनाओं से शैली एवं वाक्य रचना ऋण लेते हैं, यद्यपि यह हतोत्साहित किया जाता है।<ref>{{cite book|title=Code Complete|title-link=Code Complete|page=54 |quote=Avoid syntactic elements from the target programming language|first1=Steve|last1=McConnell|authorlink=Steve McConnell|isbn=978-0-7356-1967-8 |date=2004}}</ref><ref>Invitation to Computer Science, 8th Edition by Schneider/[[Judith Gersting|Gersting]], "Keep statements language independent" as quoted [https://cs.stackexchange.com/questions/97851/writing-pseudocode-to-be-language-independent in this stackexchange question]</ref> कुछ वाक्यविन्यास स्रोतों में [[फोरट्रान]], [[पास्कल (प्रोग्रामिंग भाषा)]], [[बुनियादी|बेसिक]], [[सी (प्रोग्रामिंग भाषा)]], [[सी ++]], [[जावा (प्रोग्रामिंग भाषा)]], [[लिस्प (प्रोग्रामिंग भाषा)]], एवं एल्गोल सम्मलित हैं। परिवर्तनीय घोषणाएं सामान्यतः त्याग दी  जाती हैं। फ़ंक्शन कॉल एवं कोड के ब्लॉक, जैसे लूप के भीतर उपस्थित कोड, प्रायः पंक्ति प्राकृतिक भाषा वाक्य द्वारा प्रतिस्थापित किए जाते हैं।


लेखक के आधार पर, स्यूडोकोड शैली में व्यापक रूप से भिन्न हो सकता है, एक चरम पर वास्तविक प्रोग्रामिंग भाषा की निकट-सटीक नकल से, दूसरे पर स्वरूपित गद्य के विवरण के लिए।
लेखक के आधार पर, स्यूडोकोड शैली में व्यापक रूप से भिन्न हो सकता है, किसी शिखर पर वास्तविक प्रोग्रामिंग भाषा की निकट-त्रुटिहीन प्रतिरूप से, दूसरे पर स्वरूपित गद्य का विवरण हैं।


यह स्यूडोकोड का एक उदाहरण है (गणितीय गेम [[फिज बज़]] के लिए):
यह स्यूडोकोड का उदाहरण है (गणितीय गेम [[फिज बज़]] के लिए):
{| class="wikitable"
{| class="wikitable"
|-valign="top"
|-valign="top"
Line 103: Line 103:
|}
|}


{{Category see also|Articles with example pseudocode}}
== गणितीय शैली स्यूडोकोड ==
संख्यात्मक संगणना में, स्यूडोकोड में प्रायः गणितीय अंकन होते हैं, सामान्यतः समुच्चय सिद्धांत एवं [[मैट्रिक्स (गणित)]] सिद्धांत से, पारंपरिक प्रोग्रामिंग भाषा के नियंत्रण संरचनाओं के साथ मिश्रित, एवं संभवतः प्राकृतिक भाषा विवरण भी है। यह कॉम्पैक्ट एवं प्रायः अनौपचारिक संकेतन है जिसे गणितीय रूप से प्रशिक्षित लोगों की विस्तृत श्रृंखला द्वारा समझा जा सकता है, एवं प्रायः गणितीय एल्गोरिदम का वर्णन करने के उपाय के रूप में उपयोग किया जाता है। उदाहरण के लिए, योग ऑपरेटर ([[पूंजी-सिग्मा संकेतन]]) या उत्पाद ऑपरेटर ([[राजधानी-पाई संकेतन]]) अभिव्यक्ति में फॉर-लूप एवं चयन संरचना का प्रतिनिधित्व कर सकता है:


{{nowrap|रिटर्न <math>\sum_{k\in S} x_k</math>}}


== गणितीय शैली स्यूडोकोड ==
सामान्यतः-[[ASCII]] (एएससीआईआई) [[टाइप बैठना|टाइप]] का उपयोग गणितीय समीकरणों के लिए किया जाता है, उदाहरण के लिए मार्कअप भाषाओं, जैसे [[TeX]] या [[MathML]], या स्वामित्व [[सूत्र संपादक|सूत्र संपादको]] के माध्यम से है।
संख्यात्मक संगणना में, स्यूडोकोड में अक्सर गणितीय अंकन होते हैं, सामान्यतः सेट सिद्धांत और [[मैट्रिक्स (गणित)]] सिद्धांत से, एक पारंपरिक प्रोग्रामिंग भाषा के नियंत्रण संरचनाओं के साथ मिश्रित, और शायद प्राकृतिक भाषा विवरण भी। यह एक कॉम्पैक्ट और अक्सर अनौपचारिक संकेतन है जिसे गणितीय रूप से प्रशिक्षित लोगों की एक विस्तृत श्रृंखला द्वारा समझा जा सकता है, और अक्सर गणितीय एल्गोरिदम का वर्णन करने के तरीके के रूप में उपयोग किया जाता है। उदाहरण के लिए, योग ऑपरेटर ([[पूंजी-सिग्मा संकेतन]]) या उत्पाद ऑपरेटर ([[राजधानी-पाई संकेतन]]) एक अभिव्यक्ति में फॉर-लूप और चयन संरचना का प्रतिनिधित्व कर सकता है:
{{nowrap|Return <math>\sum_{k\in S} x_k</math>}}
आम तौर पर गैर-[[ASCII]] [[टाइप बैठना]] का उपयोग गणितीय समीकरणों के लिए किया जाता है, उदाहरण के लिए मार्कअप भाषाओं, जैसे [[TeX]] या [[MathML]], या मालिकाना [[सूत्र संपादक]]ों के माध्यम से।


गणितीय शैली स्यूडोकोड को कभी-कभी [[पिजिन कोड]] के रूप में संदर्भित किया जाता है, उदाहरण के लिए पिजिन ALGOL (अवधारणा की उत्पत्ति), पिजिन फोरट्रान, पिजिन बेसिक, पिजिन पास्कल (प्रोग्रामिंग भाषा), पिजिन सी (प्रोग्रामिंग भाषा), और पिजिन लिस्प (प्रोग्रामिंग भाषा) .
गणितीय शैली स्यूडोकोड को कभी-कभी [[पिजिन कोड]] के रूप में संदर्भित किया जाता है, उदाहरण के लिए पिजिन ALGOL (अवधारणा की उत्पत्ति), पिजिन फोरट्रान, पिजिन बेसिक, पिजिन पास्कल (प्रोग्रामिंग भाषा), पिजिन सी (प्रोग्रामिंग भाषा), एवं पिजिन लिस्प (प्रोग्रामिंग भाषा) है।


=== सामान्य गणितीय प्रतीक ===
=== सामान्य गणितीय प्रतीक ===
<!-- Copied from Wikipedia:WikiProject_Computer_science/Manual_of_style#Algorithms -->
 
{| class="wikitable"
{| class="wikitable"
! Type of operation || Symbol || Example
! ऑपरेशन का प्रकार || प्रतीक || उदाहरण
|-
|-
| Assignment || ← or := ||<code>''c'' ← 2π''r''</code>, <code> ''c'' := 2π''r''</code>
| कार्यभार || ← or := ||<code>''c'' ← 2π''r''</code>, <code> ''c'' := 2π''r''</code>
|-
|-
| Comparison || =, ≠, <, >, ≤, ≥ ||
| तुलना || =, ≠, <, >, ≤, ≥ ||
|-
|-
| Arithmetic || +, −, ×, /, mod ||
| अंकगणित || +, −, ×, /, mod ||
|-
|-
| Floor/ceiling || ⌊, ⌋, ⌈, ⌉ || <code>''a'' ← ⌊''b''⌋ + ⌈''c''⌉</code>
| तल सीलिंग || ⌊, ⌋, ⌈, ⌉ || <code>''a'' ← ⌊''b''⌋ + ⌈''c''⌉</code>
|-
|-
| Logical
| लॉजिकल
| '''and''', '''or'''
| '''and''', '''or'''
|  
|  
|-
|-
| Sums, products
| संपत्ति, उत्पाद
| Σ Π
| Σ Π
| <code>''h'' ← Σ<sub>''a''∈''A''</sub> 1/''a''</code>
| <code>''h'' ← Σ<sub>''a''∈''A''</sub> 1/''a''</code>
Line 137: Line 136:


=== उदाहरण ===
=== उदाहरण ===
यहाँ Ford-Fulkerson एल्गोरिथम के लिए गणितीय-शैली स्यूडोकोड का एक लंबा उदाहरण दिया गया है:
जहाँ फोर्ड-फुलकर्सन एल्गोरिथम के लिए गणितीय-शैली स्यूडोकोड का उदाहरण दिया गया है:
<!-- Same example as in Wikipedia:WikiProject_Computer_science/Manual_of_style#Algorithms -->
 
एल्गोरिथम फोर्ड-फुलकर्सन है
    '''algorithm''' ford-fulkerson '''is'''                                                                                                              '''input:''' Graph ''G'' with flow capacity ''c'',  
    इनपुट: प्रवाह क्षमता ''सी'' के साथ ग्राफ ''जी'',
             source node ''s'',  
             स्रोत नोड ''एस'',
             sink node ''t''
             सिंक नोड 'टी'
     '''output:''' Flow ''f'' such that ''f'' is maximal from ''s'' to ''t''
     आउटपुट: फ्लो ''एफ'' ऐसा है कि ''एफ'' ''एस'' से ''टी'' तक अधिकतम है
   
   
     '' (ध्यान दें कि एफ<sub>(u,v)</sub> नोड यू से नोड वी तक प्रवाह है, और सी<sub>(u,v)</sub> नोड यू से नोड वी तक प्रवाह क्षमता है)
     ''(Note that f<sub>(u,v)</sub> is the flow from node u to node v, and c<sub>(u,v)</sub> is the flow capacity from node u to node v)''
   
   
     'प्रत्येक के लिए' बढ़त (यू, वी) 'इन' जी<sub>''E''</sub> करना
     '''for each''' edge (''u'', ''v'') '''in''' ''G<sub>E</sub>'' '''do'''
         ''एफ''<sub>(''u'', ''v'')</sub> ← 0
         ''f''<sub>(''u'', ''v'')</sub> ← 0
         एफ<sub>(''v'', ''u'')</sub> ← 0
         ''f''<sub>(''v'', ''u'')</sub> ← 0
   
   
     जबकि अवशिष्ट नेटवर्क ''G'' में ''s'' से ''t'' तक एक पथ ''p'' मौजूद है<sub>''f''</sub> करना
     '''while''' there exists a path ''p'' from ''s'' to ''t'' '''in''' the residual network ''G<sub>f</sub>'' '''do'''
        चलो ''सी''<sub>''f''</sub> अवशिष्ट नेटवर्क जी की प्रवाह क्षमता हो<sub>''f''</sub>
        let ''c<sub>f</sub>'' be the flow capacity of the residual network ''G<sub>f</sub>''
सी<sub>''f''</sub>(पी) ← मिनट {सी<sub>''f''</sub>(यू, वी) | (यू, वी) 'इन' पी}
        ''c<sub>f</sub>''(''p'') ← min{''c<sub>f</sub>''(''u'', ''v'') | (''u'', ''v'') '''in''' ''p''}
         'प्रत्येक के लिए' बढ़त (यू, वी) 'में' पी 'करो'
         '''for each''' edge (''u'', ''v'') '''in''' ''p'' '''do'''
             एफ<sub>(''u'', ''v'')</sub> ← एफ<sub>(''u'', ''v'')</sub> + सी<sub>''f''</sub>(पी)
             ''f''<sub>(''u'', ''v'')</sub> ← ''f''<sub>(''u'', ''v'')</sub> + ''c<sub>f</sub>''(''p'')
             एफ<sub>(''v'', ''u'')</sub> ← -च<sub>(''u'', ''v'')</sub>
             ''f''<sub>(''v'', ''u'')</sub> ← −''f''<sub>(''u'', ''v'')</sub>
वापसी ''''
    '''return''' ''f''
 
 


== स्यूडोकोड शैली की भाषाओं का मशीन संकलन ==
== स्यूडोकोड शैली की भाषाओं का मशीन संकलन ==


=== प्रोग्रामिंग भाषाओं में प्राकृतिक भाषा व्याकरण ===
=== प्रोग्रामिंग भाषाओं में प्राकृतिक भाषा व्याकरण ===
कंप्यूटर प्रोग्रामिंग में प्राकृतिक भाषा व्याकरण के तत्वों को लाने के विभिन्न प्रयासों ने [[हाइपरटॉक]], [[लिंगो (प्रोग्रामिंग भाषा)]], [[एप्पलस्क्रिप्ट]], [[एसक्यूएल]], [[सूचित करना]] और कुछ हद तक [[पायथन (प्रोग्रामिंग भाषा)]] जैसी प्रोग्रामिंग भाषाओं का निर्माण किया है। इन भाषाओं में, कोष्ठक और अन्य विशेष वर्णों को पूर्वसर्गों द्वारा प्रतिस्थापित किया जाता है, जिसके परिणामस्वरूप काफी वर्बोज़ कोड होता है। ये भाषाएं सामान्यतः [[गतिशील टाइपिंग]] होती हैं, जिसका अर्थ है कि चर घोषणाएं और अन्य [[बॉयलरप्लेट कोड]] को छोड़ा जा सकता है। ऐसी भाषाएँ भाषा के ज्ञान के बिना किसी व्यक्ति के लिए कोड को समझना और शायद भाषा सीखना भी आसान बना सकती हैं।यद्यपि, प्राकृतिक भाषा की समानता सामान्यतः वास्तविक की तुलना में अधिक दिखावटी होती है। सिंटैक्स नियम पारंपरिक प्रोग्रामिंग की तरह ही सख्त और औपचारिक हो सकते हैं, और जरूरी नहीं कि कार्यक्रमों के विकास को आसान बनाते हों।
कंप्यूटर प्रोग्रामिंग में प्राकृतिक भाषा व्याकरण के तत्वों को लाने के विभिन्न प्रयासों ने [[हाइपरटॉक]], [[लिंगो (प्रोग्रामिंग भाषा)]], [[एप्पलस्क्रिप्ट]], [[एसक्यूएल]], [[सूचित करना]] एवं [[पायथन (प्रोग्रामिंग भाषा)]] जैसी प्रोग्रामिंग भाषाओं का निर्माण किया है। इन भाषाओं में, कोष्ठक एवं अन्य विशेष वर्णों को पूर्वसर्गों द्वारा प्रतिस्थापित किया जाता है, जिसके परिणामस्वरूप अधिक वर्बोज़ कोड होता है। ये भाषाएं सामान्यतः [[गतिशील टाइपिंग]] होती हैं, जिसका अर्थ है कि चर घोषणाएं एवं अन्य [[बॉयलरप्लेट कोड]] को त्यागा जा सकता है। ऐसी भाषाएँ भाषा के ज्ञान के आभाव में किसी व्यक्ति के लिए कोड को समझना एवं संभवतः भाषा सीखना भी सरल बना सकती हैं। यद्यपि, प्राकृतिक भाषा की सामान्यतः वास्तविक की तुलना में अधिक अनुपयोगी होती है। सिंटैक्स नियम पारंपरिक प्रोग्रामिंग के जैसे ही कठोर एवं औपचारिक हो सकते हैं, एवं आवश्यक नहीं कि कार्यक्रमों के विकास को सरल बनाते हों।


===गणितीय प्रोग्रामिंग भाषाएं===
===गणितीय प्रोग्रामिंग भाषाएं===
एल्गोरिदम के दस्तावेज़ीकरण के लिए गणितीय स्यूडोकोड (जिसमें सेट सिद्धांत संकेतन या मैट्रिक्स संचालन शामिल है) का उपयोग करने का एक विकल्प एक औपचारिक गणितीय प्रोग्रामिंग भाषा का उपयोग करना है जो गैर-ASCII गणितीय संकेतन और प्रोग्राम नियंत्रण संरचनाओं का मिश्रण है। फिर कोड को मशीन द्वारा पार्स और व्याख्या किया जा सकता है।
एल्गोरिदम के दस्तावेज़ीकरण के लिए गणितीय स्यूडोकोड (जिसमें समुच्चय सिद्धांत संकेतन या मैट्रिक्स संचालन सम्मलित है) का उपयोग करने का विकल्प किसी औपचारिक गणितीय प्रोग्रामिंग भाषा का उपयोग करना है जो गैर-एएससीआईआई गणितीय संकेतन एवं प्रोग्राम नियंत्रण संरचनाओं का मिश्रण है।  


कई औपचारिक विनिर्देश भाषाओं में विशेष वर्णों का उपयोग करते हुए सेट थ्योरी नोटेशन शामिल हैं। उदाहरण हैं:
कई औपचारिक विनिर्देश भाषाओं में विशेष वर्णों का उपयोग करते हुए समुच्चय थ्योरी नोटेशन उपस्थित हैं। उदाहरण हैं:
* [[जेड अंकन]]
* [[जेड अंकन]]
* [[वियना विकास पद्धति]] [[विशिष्टता भाषा]] (VDM-SL)।
* [[वियना विकास पद्धति]] [[विशिष्टता भाषा]]


कुछ [[सरणी प्रोग्रामिंग]] भाषाओं में पारंपरिक नियंत्रण संरचनाओं के साथ मिश्रित गैर-ASCII फ़ार्मुलों के रूप में सदिश अभिव्यक्ति और मैट्रिक्स संचालन शामिल हैं। उदाहरण हैं:
कुछ [[सरणी प्रोग्रामिंग]] भाषाओं में पारंपरिक नियंत्रण संरचनाओं के साथ मिश्रित गैर-एएससीआईआई सूत्रों के रूप में सदिश अभिव्यक्ति एवं मैट्रिक्स संचालन सम्मलित हैं। उदाहरण हैं:
* APL (प्रोग्रामिंग भाषा) (APL), और इसकी बोलियाँ [[APLX]] और A+ (प्रोग्रामिंग भाषा)|A+।
* एपीएल (प्रोग्रामिंग भाषा), एवं इसकी बोलियाँ [[APLX|एपीएलएक्स]] एवं ए+ (प्रोग्रामिंग भाषा)
* [[MathCAD]]।
* [[MathCAD|मैथ सीएडी]]।


== यह भी देखें ==
== यह भी देखें ==
* [[अवधारणा प्रोग्रामिंग]]
* [[अवधारणा प्रोग्रामिंग]]
* ड्रैकोन|ड्रैकन-चार्ट
* ड्रैकन-चार्ट
* फ़्लोचार्ट
* फ़्लोचार्ट
* [[साक्षर प्रोग्रामिंग]]
* [[साक्षर प्रोग्रामिंग]]
Line 190: Line 191:
==अग्रिम पठन==
==अग्रिम पठन==
*{{cite book |first=Justin |last=Zobel |year=2013 |chapter=Algorithms |title=Writing for Computer Science |url=https://archive.org/details/springer_10.1007-978-0-85729-422-7 |edition=Second |publisher=Springer |isbn=978-1-85233-802-2 |ref=none}}
*{{cite book |first=Justin |last=Zobel |year=2013 |chapter=Algorithms |title=Writing for Computer Science |url=https://archive.org/details/springer_10.1007-978-0-85729-422-7 |edition=Second |publisher=Springer |isbn=978-1-85233-802-2 |ref=none}}
==बाहरी संबंध==
==बाहरी संबंध==
{{Wiktionary}}
*[http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html A pseudocode standard]
*[http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html A pseudocode standard]
*[http://calgo.acm.org/ Collected Algorithms of the [[Association for Computing Machinery|ACM]]]
*[http://calgo.acm.org/ Collected Algorithms of the [[Association for Computing Machinery|ACM]]]
Line 199: Line 197:


{{Authority control}}
{{Authority control}}
[[Category: स्यूडोकोड के उदाहरण वाले लेख]] [[Category: सोर्स कोड]] [[Category: एल्गोरिदम विवरण भाषाएं]]


[[Category: Machine Translated Page]]
[[Category:Created On 19/02/2023]]
[[Category:Created On 19/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:एल्गोरिदम विवरण भाषाएं]]
[[Category:सोर्स कोड]]
[[Category:स्यूडोकोड के उदाहरण वाले लेख]]

Latest revision as of 15:49, 27 October 2023

कंप्यूटर विज्ञान में, स्यूडोकोड कलन विधि या अन्य प्रणाली में चरणों का सरल भाषा विवरण है। स्यूडोकोड प्रायः सामान्य प्रोग्रामिंग भाषा के संरचनात्मक सम्मेलनों का उपयोग करता है, किन्तु मशीन पढ़ने के अतिरिक्त मानव पढ़ने के लिए अभिप्रेत है। यह सामान्यतः उन विवरणों का त्याग करता है जो एल्गोरिथ्म की मशीन की समझ के लिए आवश्यक हैं, जैसे चर घोषणाएं एवं भाषा-विशिष्ट कोड हैं। प्रोग्रामिंग भाषा को प्राकृतिक भाषा विवरण के साथ, जहाँ सुविधाजनक हो, या कॉम्पैक्ट गणितीय संकेतन के साथ संवर्धित किया जाता है। स्यूडोकोड का उपयोग करने का उद्देश्य यह है कि पारंपरिक प्रोग्रामिंग भाषा कोड की तुलना में लोगों के लिए इसे समझना सरल है, एवं यह एल्गोरिथम के प्रमुख सिद्धांतों का कुशल एवं पर्यावरण-स्वतंत्र विवरण है। यह सामान्यतः पाठ्य पुस्तकों एवं वैज्ञानिक प्रकाशनों में एल्गोरिदम को दस्तावेज करने एवं सॉफ्टवेयर एवं अन्य एल्गोरिदम की योजना बनाने में उपयोग किया जाता है।

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

अनुप्रयोग

कंप्यूटर विज्ञान एवं संख्यात्मक संगणना से संबंधित पाठ्य-पुस्तकें एवं वैज्ञानिक प्रकाशन अधिकांशतः एल्गोरिदम के विवरण में स्यूडोकोड का उपयोग करते हैं, जिससे सभी प्रोग्रामर उन्हें समझ सकें, यदि वे सभी समान प्रोग्रामिंग भाषाओं को न जानते हों। पाठ्य-पुस्तकों में, सामान्यतः परिचयात्मक परिचय होता है जो उपयोग में आने वाले विशेष सम्मेलनों की व्याख्या करता है। स्यूडोकोड के विवरण का स्तर कुछ हानि में औपचारिक सामान्य-उद्देश्य वाली भाषाओं के समान हो सकता है।

प्रोग्रामर जिसे विशिष्ट एल्गोरिथ्म को प्रारम्भ करने की आवश्यकता होती है, विशेष रूप से अपरिचित, अधिकांशतः स्यूडोकोड विवरण के साथ प्रारम्भ होता है, एवं फिर उस विवरण को लक्ष्य प्रोग्रामिंग भाषा में अनुवादित करता है एवं अन्य प्रोग्राम के साथ उत्तम रूप से इंटरैक्ट करने के लिए इसे संशोधित करता है। प्रोग्रामर किसी प्रोजेक्ट को उसकी वास्तविक भाषा में लिखने से पूर्व कागज पर स्यूडोकोड टॉप-डाउन एवं बॉटम-अप डिज़ाइन के रूप में, चरणों की प्रक्रिया के रूप में स्केच करके भी प्रारम्भ कर सकते है |

सिंटेक्स

स्यूडोकोड सामान्यतः वास्तव में किसी विशेष भाषा के वाक्य-विन्यास नियमों का पालन नहीं करता है। इसका कोई व्यवस्थित मानक रूप नहीं है। लेखक कुछ पारंपरिक प्रोग्रामिंग भाषा से नियंत्रण संरचनाओं से शैली एवं वाक्य रचना ऋण लेते हैं, यद्यपि यह हतोत्साहित किया जाता है।[1][2] कुछ वाक्यविन्यास स्रोतों में फोरट्रान, पास्कल (प्रोग्रामिंग भाषा), बेसिक, सी (प्रोग्रामिंग भाषा), सी ++, जावा (प्रोग्रामिंग भाषा), लिस्प (प्रोग्रामिंग भाषा), एवं एल्गोल सम्मलित हैं। परिवर्तनीय घोषणाएं सामान्यतः त्याग दी जाती हैं। फ़ंक्शन कॉल एवं कोड के ब्लॉक, जैसे लूप के भीतर उपस्थित कोड, प्रायः पंक्ति प्राकृतिक भाषा वाक्य द्वारा प्रतिस्थापित किए जाते हैं।

लेखक के आधार पर, स्यूडोकोड शैली में व्यापक रूप से भिन्न हो सकता है, किसी शिखर पर वास्तविक प्रोग्रामिंग भाषा की निकट-त्रुटिहीन प्रतिरूप से, दूसरे पर स्वरूपित गद्य का विवरण हैं।

यह स्यूडोकोड का उदाहरण है (गणितीय गेम फिज बज़ के लिए):

Fortran style pseudocode:

program fizzbuzz
  Do i = 1 to 100 
    set print_number to true
    If i is divisible by 3
      print "Fizz"
      set print_number to false
    If i is divisible by 5
      print "Buzz" 
      set print_number to false
    If print_number, print i
    print a newline
  end do

Pascal style pseudocode:

procedure fizzbuzz;
  for i := 1 to 100 do
    print_number := true;
    if i is divisible by 3 then begin
      print "Fizz";
      print_number := false;
    end;
    if i is divisible by 5 then begin
      print "Buzz";
      print_number := false;
    end;
    if print_number, print i;
    print a newline;
  end

C style pseudocode:

fizzbuzz() {
  for (i = 1; i <= 100; i++) {
    print_number = true;
    if (i is divisible by 3) {
      print "Fizz";
      print_number = false;
    }
    if (i is divisible by 5) {
      print "Buzz";
      print_number = false;
    }
    if (print_number) print i;
    print a newline;
  }
}

Structured Basic style pseudocode:

Sub fizzbuzz()
  For i = 1 to 100
    print_number = True
    If i is divisible by 3 Then
      Print "Fizz"
      print_number = False
    End If
    If i is divisible by 5 Then
      Print "Buzz"
      print_number = False
    End If
    If print_number = True Then print i
    Print a newline
  Next i
End Sub

गणितीय शैली स्यूडोकोड

संख्यात्मक संगणना में, स्यूडोकोड में प्रायः गणितीय अंकन होते हैं, सामान्यतः समुच्चय सिद्धांत एवं मैट्रिक्स (गणित) सिद्धांत से, पारंपरिक प्रोग्रामिंग भाषा के नियंत्रण संरचनाओं के साथ मिश्रित, एवं संभवतः प्राकृतिक भाषा विवरण भी है। यह कॉम्पैक्ट एवं प्रायः अनौपचारिक संकेतन है जिसे गणितीय रूप से प्रशिक्षित लोगों की विस्तृत श्रृंखला द्वारा समझा जा सकता है, एवं प्रायः गणितीय एल्गोरिदम का वर्णन करने के उपाय के रूप में उपयोग किया जाता है। उदाहरण के लिए, योग ऑपरेटर (पूंजी-सिग्मा संकेतन) या उत्पाद ऑपरेटर (राजधानी-पाई संकेतन) अभिव्यक्ति में फॉर-लूप एवं चयन संरचना का प्रतिनिधित्व कर सकता है:

रिटर्न

सामान्यतः-ASCII (एएससीआईआई) टाइप का उपयोग गणितीय समीकरणों के लिए किया जाता है, उदाहरण के लिए मार्कअप भाषाओं, जैसे TeX या MathML, या स्वामित्व सूत्र संपादको के माध्यम से है।

गणितीय शैली स्यूडोकोड को कभी-कभी पिजिन कोड के रूप में संदर्भित किया जाता है, उदाहरण के लिए पिजिन ALGOL (अवधारणा की उत्पत्ति), पिजिन फोरट्रान, पिजिन बेसिक, पिजिन पास्कल (प्रोग्रामिंग भाषा), पिजिन सी (प्रोग्रामिंग भाषा), एवं पिजिन लिस्प (प्रोग्रामिंग भाषा) है।

सामान्य गणितीय प्रतीक

ऑपरेशन का प्रकार प्रतीक उदाहरण
कार्यभार ← or := c ← 2πr, c := 2πr
तुलना =, ≠, <, >, ≤, ≥
अंकगणित +, −, ×, /, mod
तल सीलिंग ⌊, ⌋, ⌈, ⌉ a ← ⌊b⌋ + ⌈c
लॉजिकल and, or
संपत्ति, उत्पाद Σ Π h ← ΣaA 1/a


उदाहरण

जहाँ फोर्ड-फुलकर्सन एल्गोरिथम के लिए गणितीय-शैली स्यूडोकोड का उदाहरण दिया गया है:

   algorithm ford-fulkerson is                                                                                                               input: Graph G with flow capacity c, 
           source node s, 
           sink node t
    output: Flow f such that f is maximal from s to t

    (Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v)

    for each edge (u, v) in GE do
        f(u, v) ← 0
        f(v, u) ← 0

    while there exists a path p from s to t in the residual network Gf do
        let cf be the flow capacity of the residual network Gf
        cf(p) ← min{cf(u, v) | (u, v) in p}
        for each edge (u, v) in p do
            f(u, v)f(u, v) + cf(p)
            f(v, u) ← −f(u, v)

    return f


स्यूडोकोड शैली की भाषाओं का मशीन संकलन

प्रोग्रामिंग भाषाओं में प्राकृतिक भाषा व्याकरण

कंप्यूटर प्रोग्रामिंग में प्राकृतिक भाषा व्याकरण के तत्वों को लाने के विभिन्न प्रयासों ने हाइपरटॉक, लिंगो (प्रोग्रामिंग भाषा), एप्पलस्क्रिप्ट, एसक्यूएल, सूचित करना एवं पायथन (प्रोग्रामिंग भाषा) जैसी प्रोग्रामिंग भाषाओं का निर्माण किया है। इन भाषाओं में, कोष्ठक एवं अन्य विशेष वर्णों को पूर्वसर्गों द्वारा प्रतिस्थापित किया जाता है, जिसके परिणामस्वरूप अधिक वर्बोज़ कोड होता है। ये भाषाएं सामान्यतः गतिशील टाइपिंग होती हैं, जिसका अर्थ है कि चर घोषणाएं एवं अन्य बॉयलरप्लेट कोड को त्यागा जा सकता है। ऐसी भाषाएँ भाषा के ज्ञान के आभाव में किसी व्यक्ति के लिए कोड को समझना एवं संभवतः भाषा सीखना भी सरल बना सकती हैं। यद्यपि, प्राकृतिक भाषा की सामान्यतः वास्तविक की तुलना में अधिक अनुपयोगी होती है। सिंटैक्स नियम पारंपरिक प्रोग्रामिंग के जैसे ही कठोर एवं औपचारिक हो सकते हैं, एवं आवश्यक नहीं कि कार्यक्रमों के विकास को सरल बनाते हों।

गणितीय प्रोग्रामिंग भाषाएं

एल्गोरिदम के दस्तावेज़ीकरण के लिए गणितीय स्यूडोकोड (जिसमें समुच्चय सिद्धांत संकेतन या मैट्रिक्स संचालन सम्मलित है) का उपयोग करने का विकल्प किसी औपचारिक गणितीय प्रोग्रामिंग भाषा का उपयोग करना है जो गैर-एएससीआईआई गणितीय संकेतन एवं प्रोग्राम नियंत्रण संरचनाओं का मिश्रण है।

कई औपचारिक विनिर्देश भाषाओं में विशेष वर्णों का उपयोग करते हुए समुच्चय थ्योरी नोटेशन उपस्थित हैं। उदाहरण हैं:

कुछ सरणी प्रोग्रामिंग भाषाओं में पारंपरिक नियंत्रण संरचनाओं के साथ मिश्रित गैर-एएससीआईआई सूत्रों के रूप में सदिश अभिव्यक्ति एवं मैट्रिक्स संचालन सम्मलित हैं। उदाहरण हैं:

यह भी देखें

संदर्भ

  1. McConnell, Steve (2004). Code Complete. p. 54. ISBN 978-0-7356-1967-8. Avoid syntactic elements from the target programming language
  2. Invitation to Computer Science, 8th Edition by Schneider/Gersting, "Keep statements language independent" as quoted in this stackexchange question


अग्रिम पठन

बाहरी संबंध