कंप्यूटर के पास अपनी कोई स्वाभाविक सोचने की क्षमता नहीं होती; वह दिए गए निर्देशों को तीव्र गति से निष्पादित करता है। मानव समस्या को कंप्यूटर द्वारा निष्पादन योग्य सॉफ्टवेयर में बदलने के लिए पांच सुव्यवस्थित चरण अपनाए जाते हैं:
- समस्या परिभाषा एवं विश्लेषण (Problem Definition & Analysis): समस्या के सटीक उद्देश्यों, आवश्यकताओं, सीमाओं और कार्यक्षेत्र की स्पष्ट पहचान करना।
- इनपुट एवं आउटपुट रूपरेखा (Input & Output Specification): आवश्यक कच्चे डेटा, उनके प्रकार तथा अपेक्षित परिणाम के स्वरूप का निर्धारण करना।
- एल्गोरिदम डिजाइन (Algorithm Design): इनपुट को वांछित आउटपुट में बदलने के लिए एक सीमित, चरणबद्ध और तार्किक प्रक्रिया तैयार करना।
- सत्यापन एवं ड्राई रन (Desk-Checking / Trace Table): कोडिंग करने से पहले कागज-कलम की सहायता से विभिन्न परीक्षण डेटा लेकर एल्गोरिदम की तार्किक शुद्धता की जांच करना।
- कोडिंग एवं निष्पादन (Coding & Implementation): सत्यापित एल्गोरिदम को किसी उच्च-स्तरीय प्रोग्रामिंग भाषा (जैसे C, Python) में रूपांतरित करना।
एल्गोरिदम किसी विशिष्ट संगणकीय समस्या को हल करने के लिए सुपरिभाषित, असंदिग्ध और सीमित निर्देशों का एक क्रमबद्ध समुच्चय है। आधुनिक कंप्यूटर विज्ञान के जनक डोनाल्ड ई. नुथ (Donald Knuth) के अनुसार, प्रत्येक मान्य एल्गोरिदम को निम्नलिखित पांच शर्तों को पूरा करना अनिवार्य है:
| मानदंड (Criterion) | विवरण (Description) | महत्व (Significance) |
|---|---|---|
| 1. सीमितता (Finiteness) | एल्गोरिदम को सभी मान्य इनपुट के लिए सीमित चरणों के निष्पादन के पश्चात अवश्य समाप्त होना चाहिए। | यह प्रोग्राम को अनंत लूप (Infinite Loop) और हैंग होने से बचाता है। |
| 2. निश्चितता (Definiteness) | प्रत्येक चरण स्पष्ट, सटीक और असंदिग्ध होना चाहिए जिसका केवल एक ही अर्थ निकले। | मशीन की परवाह किए बिना परिणाम हमेशा सुनिश्चित रहता है। |
| 3. इनपुट (Input) | एल्गोरिदम को निष्पादन से पूर्व शून्य या अधिक बाह्य मान प्रदान किए जाने चाहिए। | यह प्रक्रिया के कार्यक्षेत्र को परिभाषित करता है। |
| 4. आउटपुट (Output) | एल्गोरिदम को कम से कम एक परिणाम अवश्य उत्पन्न करना चाहिए जो इनपुट से संबंधित हो। | यह गणना का अंतिम उपयोगी परिणाम प्रदान करता है। |
| 5. प्रभावशीलता (Effectiveness) | प्रत्येक निर्देश इतना सरल और बुनियादी होना चाहिए कि उसे कागज-कलम द्वारा सीमित समय में संपन्न किया जा सके। | यह सुनिश्चित करता है कि निर्देश भौतिक रूप से गणना योग्य हैं। |
फ़्लोचार्ट किसी एल्गोरिदम के नियंत्रण प्रवाह, संक्रियाओं और निर्णयों का मानकीकृत ज्यामितीय आरेखों द्वारा आलेखीय (Graphical) निरूपण है। अमेरिकन नेशनल स्टैंडर्ड्स इंस्टीट्यूट (ANSI) द्वारा निर्धारित मुख्य प्रतीक निम्न हैं:
- टर्मिनल (दीर्घवृत्त / Oval): प्रोग्राम के प्रारंभ (`START`) या अंत (`STOP`) को दर्शाता है। प्रत्येक फ़्लोचार्ट में ठीक एक Start और कम से कम एक Stop होना अनिवार्य है।
- इनपुट/आउटपुट (समांतर चतुर्भुज / Parallelogram): डेटा इनपुट (`READ A`, `INPUT N`) या परिणाम प्रदर्शन (`PRINT Result`) को निरूपित करता है।
- प्रोसेसिंग (आयत / Rectangle): आंतरिक गणना, अंकगणितीय संक्रिया या मान आवंटन (`C = A + B`, `Count = Count + 1`) को दर्शाता है।
- निर्णय (समचतुर्भुज / Diamond / Rhombus): किसी बूलियन शर्त की जांच (`X > 0?`) करता है। इसमें एक प्रवेश रेखा और दो निकास रेखाएँ (`True/Yes` तथा `False/No`) होती हैं।
- ऑन-पेज कनेक्टर (छोटा वृत्त / Circle): एक ही पृष्ठ पर जटिल या टूटी हुई प्रवाह रेखाओं को जोड़ने के लिए प्रयुक्त होता है।
- ऑफ़-पेज कनेक्टर (पंचकोण / Pentagon): एक पृष्ठ से दूसरे पृष्ठ पर जाने वाले नियंत्रण प्रवाह को जोड़ता है।
- प्रवाह रेखाएं (तीर / Flow Lines): निष्पादन की दिशा और क्रम को स्पष्ट रूप से दर्शाती हैं।
स्यूडोकोड (Pseudo-code) किसी एल्गोरिदम का एक अनौपचारिक, उच्च-स्तरीय विवरण है जो प्राकृतिक भाषा (अंग्रेजी/हिंदी) और संरचित प्रोग्रामिंग सिंटैक्स (`IF...THEN`, `WHILE...DO`) का मिश्रण होता है। यह सख्त सिंटैक्स नियमों के बिना मानव चिंतन को स्पष्ट करता है।
ट्रेस टेबल (Desk-Checking Matrix): यह प्रोग्रामर द्वारा एल्गोरिदम को चरण-दर-चरण कागज पर चलाकर देखने की एक सारणी है। इसमें प्रत्येक कॉलम एक चर, शर्त या आउटपुट को ट्रैक करता है, जिससे ऑफ-बाई-वन त्रुटियाँ और असीम लूप तुरंत पकड़ में आ जाते हैं।