सी (प्रोग्रामिंग भाषा)/परिचय-प्रोग्रामिंग की प्रक्रिया
हिन्दी विकिवर्सिटी पर परिचयात्मक प्रोग्रामिंग कोर्स में आपका स्वागत है इसका लक्ष्य सी प्रोग्रामिंग भाषा में बुनियादी प्रोग्राम को कोडिंग करना सिखाना है।
मूल रूप से इस पाठ्यक्रम का उद्देश्य आपको यह सिखाना है कि कंप्यूटर का इस्तेमाल करके समस्याओं को कैसे हल करें और इस कोर्स के अंत में, हम आशा करते हैं कि आप मध्यम आकार के प्रोग्राम लिख पाएंगे - शायद सी प्रोग्रामिंग भाषा में आप आराम से कुछ 100 लाइनों के प्रोग्राम को चला सकेंगे। प्रोग्रामिंग आजकल एक बुनियादी कौशल (स्किल) जैसे गणित के समान माना जाता है। जो सभी विषयों जैसे इंजीनियरिंग, विज्ञान में भी आवश्यक हो गया है। इसलिए, प्रोग्रामिंग भाषा का थोड़ा सा कौशल भी आपके अन्य कौशल जैसे गणित या विज्ञान को बढ़ा सकता है।
यह कोर्स हम बिलकुल शुरुआत से शुरू करेंगे; हम यह मानकर चलते हैं कि आपको प्रोग्रामिंग में कोई भी पूर्व अनुभव नहीं हैं न ही सी प्रोग्राममिंग भाषा में और न ही किसी अन्य भाषा में। इसलिए, हम बिलकुल बुनियादी बातों से शुरू करेंगे और उदाहरण के लिए हम केवल मध्यम आकार के प्रोग्राम का उपयोग करेंगे।
प्रोग्रामिंग की प्रक्रिया
सम्पादनप्रोग्रामिंग की प्रक्रिया के बारे में कुछ शब्द; इसमें दो बुनियादी कदम शामिल हैं
- पहला कदम समस्या को परिभाषित करना है; अक्सर आप रियल वर्ल्ड की समस्याएं प्राप्त करते होंगे, आप यह नहीं समझ पते होंगे की इसे कैसे सॉल्व किया जाए। इसलिए, पहला कदम आपका समस्या को परिभाषित करना और उसका मॉडल बनाना होगा। और यह बड़े पैमाने पर सॉफ़्टवेयर विकास में एक बहुत महत्वपूर्ण कदम है; हालांकि हम इस पाठ्यक्रम में समस्या को परिभाषित करना और उसका मॉडल बनाना नहीं सीखेंगे। यह काफी बड़ा भाग है जिसे अन्य कोर्स में सिखाया जाएगा। इस कोर्स में हमारा पहला लक्ष्य सी भाषा में प्रोग्रामिंग सीखना है।
इस कोर्स के दौरान, आप भारतीय रेलवे आरक्षण प्रणाली की तरह के बड़े सॉफ्टवेयर सिस्टम नहीं लिखेंगे; वे बहुत ही जटिल समस्याएं हैं जिनमें कई प्रोग्रामर शामिल होते हैं तथा वह सब मिलकर काम करके प्रोग्राम को पूरा करते है। इस कोर्स में, हम मानकर चलेंगे कि आपके पास समस्या पहले से ही अच्छी तरह से परिभाषित है। जिन्हे केवल प्रोग्राम के रूप में लिखा जाना है। इसलिए, यह प्रोग्रामिंग का पहला चरण है, जो समस्या की परिभाषा है, जिसे आप मान सकते हैं कि आपके पास यह पहले से ही अच्छी तरह से परिभाषित है।
- दूसरा कदम तार्किक समाधान है जिसमें समस्या का तार्किक समाधान निकालना होता है। और तार्किक समाधान से हमारा क्या मतलब है? तार्किक समाधान से हमारा अभिप्राय कुछ निश्चित स्टेप से है जिसके द्वारा समस्या का समाधान किया जाएगा। जैसे प्रोग्राम में पहले यह करे फिर इसके बाद यह करे। यदि कोई कंडिशन सही हो जाए तो यह करे। अन्यथा यह करे आदि प्रकार के कुछ निश्चित स्टेप। इसे एल्गोरिथम कहा जाता है तो एल्गोरिथ्म सामान्य रूप से किसी समस्या को हल करने के लिए एक निश्चित स्टेप-बाइ-स्टेप प्रक्रिया है। एक एल्गोरिथ्म की कल्पना करने का एक आसान तरीका फ्लो चार्ट का उपयोग करना है। यदि आप प्रोग्रामिंग में नए है तो आपको यह सुझाव दिया जाता है कि आपको फ्लो चार्ट का इस्तेमाल करे। आप अपनी समस्या का समाधान परिभाषित करने के लिए फ्लोचार्ट को बना सकते है। अनुभवी प्रोग्रामर बहुत कम ही फ्लोचार्ट बनाया करते हैं, लेकिन यह नए प्रोग्रामर को फ्लोचार्ट्स से बचने के लिए कोई कारण नहीं है। नए प्रोग्रामर को शुरू में हमेशा फ्लो चार्ट को बनाना चाहिए।
इसलिए पहले समस्या को अच्छी तरह से परिभाषित करे फिर उसके लिए एक अच्छा सा एल्गॉरिथ्म को तैयार करे। यह प्रोग्रामिंग प्रक्रिया में एक बहुत ही महत्वपूर्ण कदम है। और इसके बाद, एक तीसरा चरण है, जो सामान्य प्रोग्रामिंग भाषा में एल्गोरिदम को सही से लिखना है। तो, क्या एक एल्गोरिथ्म की अवधारणा एक नई अवधारणा है? मैं दावा करता हूं, ऐसा नहीं है। एल्गोरिदम एक बहुत परिचित अवधारणा है; सबसे महत्वपूर्ण उदाहरण जो आप सोच सकते हैं वह है कि खाने को कैसे पकाया जाता है। अब, खाना पकाने के तरीके को स्टेप बाय स्टेप लिखते है तो वह भी एक एल्गोरिदम हैं।
- उदाहरण के लिए, आपके पास आइसक्रीम और भी बहुत कुछ है और फिर जब आपके पास सभी सामग्रियों और निर्देश है कि आपको डिश कि कैसे शुरूआत करनी है और कैसे खत्म करना हैं। अब, ये निर्देश काफी सटीक होंगे; बेशक आप मानकर जरूर चले। तो आप उन निर्देशो के आधार पर डिश को बना सकते है यदि आपने पहले अभी नहीं बनाया तो उससे कोई फर्क नहीं पड़ता है। क्यूकी आपके पास अच्छी तरह से परिभाषित निर्देश है जिनके अनुसार आप अच्छी डिश बना सकते है। अब इसे अच्छे से समझते है यहाँ डिश बनाने के लिए जो परिभाषित निर्देश वही एल्गोरिदम का काम कर रहे है। इसलिए, डिश पकाने की विधि के समान एल्गोरिदम के बारे में सोचें, लेकिन एल्गोरिदम अधिक सटीक तरीके और अच्छे तरह से लिखे होते है।
एक और उदाहरण से एल्गोरिदम को अच्छे से समझते है जब भी आप मार्केट से कोई फर्नीचर खरीदते है तो फर्नीचर के भागो को अलग अलग करके आपके घर पर पाहुचाया जाता है। फर्नीचर के भाग जब आपके घर पर आ जाते है तो आपको उसके साथ एक शीट मिलती है जो आपको बताती है कि कौन सा भाग कैसे जोड़ा जाएगा। उस शीट में सभी स्टेप अच्छे से लिखे होते है। वह शीट यहाँ एक एल्गोरिदम का काम कर रही है। क्यूकी उसमे सभी स्टेप अच्छे से परिभाषित है।
- तो, आइए हम एक गणितीय एल्गोरिथ्म को दर्शाने के लिए एक फ्लोचार्ट को देखते हैं और हम इस फ्लोचार्ट का प्रयोग कुछ एल्गोरिदम का वर्णन करने के लिए करेंगे। प्रत्येक फ्लोचार्ट का प्रारंभ और अंत होता है और इसमें बक्से की एक सीमित संख्या होती है। यह उन निर्देशों की सीमित संख्या है जिनके बारे में हम बात कर रहे थे कि एल्गोरिदम में सीमित होते है जैसे इसके बाद क्या होना फिर क्या होना है आदि। फ्लोचार्ट्स ड्राइंग में निर्देशों के अनुसार कुछ अलग अलग प्रकार की आकृति होती हैं। फ्लोचार्ट का प्रारंभ और अंत को दर्शाने के लिए गोले (Circle) का प्रयोग होता है। उसके बाद कुछ साधारण और फिर हीरे के आकार के बॉक्स होते है। हम शीघ्र ही इसका वर्णन करेंगे कि उनका क्या अर्थ है। तो, मान लीजिए आप पहले n नंबरों को जोड़ने के लिए एल्गोरिदम लिखना चाहते हैं। आप सभी n नंबरों को जोड़ना जानते हैं कि यह कैसे करते है। लेकिन पोइंट यहाँ यह है कि इसे आप किस प्रकार स्टेप बाय स्टेप लिखेंगे। ताकि जिसे n नंबर नहीं भी जोड़ने आते है तो यह समझ सके।