Search

1.4b — Functions क्यूँ उपयोगी हैं और उनका सबसे बेहतर प्रयोग कैसे किया जाये

हम जान चुके हैं की functions क्या हैं, तो चलिए अब देखें की function programming में क्यों ज़रूरी हैं ।

Functions का इस्तेमाल क्यूँ?

नए programmers अकसर ये पूछते हैं की , “क्या किसी function में लिखा गया code सीधे main में नहीं लिखा जा सकता?” कुछ परिस्थितियों में (विशेषकर छोटे examples के लिए) code को केवल main function में लिखना सही है । लेकिन बड़े programs में, functions का इस्तेमाल programmer को बहुत सारी सुविधाएँ देता है ।

  • Codes को व्यवस्थित रखना -- जैसे-जैसे program जटिल (complex) होता जाता है, सारे codes को main में व्यवस्थित रखना काफी मुश्किल हो जाता है । Function बिलकूल एक छोटे program की तरह है जिसे main function से बिलकुल अलग लिखा जा सकता है, program के बाकी हिस्सों की परवाह किये बिना । ये हमारे मुश्किल कामो को आसान और छोटे-छोटे भागों में बाँट देता है जिससे program की जटिलता काफी हद तक कम हो जाती है ।
  • फिर से इस्तेमाल किये जाने लायक code प्रदान करना -- एक बार यदि कोई function लिखा जा चूका है तो कोई भी function इसे अपने इस्तेमाल के लिए जितनी बार चाहे, call कर सकता है । Functions program में copy/paste errors से बचाते है, और साथ ही एक ही code को कई जगह लिखे जाने की समस्या से भी छुटकारा दिलाते है (duplicate code) । Functions लिखे जाने के बाद दुसरे programs में भी इस्तेमाल किये जा सकते हैं । ये आपका काफी सारा समय बचाता है क्यूंकि यदि आपने पहले से ही function लिख लिया है तो आपको सारा काम शुरुआत से करने की कोई ज़रूरत नहीं ।
  • Code को Test करने में आसान बनाना -- क्यूंकि functions एक ही code को बेकार में बार-बार लिखने के झंझट से छुटकारा दिलाते हैं, जब codes को test करने की बारी आएगी, तो test करने के लिए program में केवल ज़रूरत भर code रहेगा । Functions में लिखे गए code, program के बाकी हिस्सों में कभी निर्भर नहीं होते । इसलिए यदि function के भीतर का code एक बार test कर लिया गया हो, इसे वापस तब तक test करने की ज़रूरत नहीं पड़ती जब तक हम function में कोई बदलाव ना करें । ये उन codes की संख्या में कमी लाता है, जिन्हें test की ज़रूरत है ।
  • Program का विस्तार करने में सहायक -- जब हम अपने program का विस्तार करने के लिए इसके functions से कुछ ऐसे cases हैंडल करने की कोशिश करते हैं, जिसके लिए अब तक program का वो function नहीं लिखा गया था, तो यहाँ फिर से functions हमारी काफी सहायता करते हैं । वो इसलिए क्यूंकि functions को केवल एक ही जगह बदलने की ज़रूरत पड़ेगी और जब भी इस function को call किया जायेगा, code में किया गया बदलाव हर बार दिखाई देगा ।
  • Abstraction -- Abstraction का अर्थ है किसी चीज़ के बारे बहुत अधिक जाने बगैर उसका इस्तेमाल अलग-अलग जगहों पर करना । किसी function का इस्तेमाल करने के लिए हमें केवल इसका नाम, इसे दिया जाने वाला input, इसका output और ये कहाँ स्थित है, इतना ही जानने की ज़रूरत है । हमे इसके काम करने के तरीके, और ये किन दुसरे codes पर निर्भर करता है, ये जानने की बिलकुल भी ज़रूरत नहीं है । ये किसी दुसरे के द्वारा लिखे गए codes को अपने program में पाने के लिए काफी उपयोगी है । उदाहरण के लिए, हमारे programs में standard library का इस्तेमाल करने के लिए ये जानना ज़रूरी नहीं की आखिर ये (standard library) काम कैसे करता है ।

भले ही ऐसा लगता ना हो, पर जब भी हम std::cin या std::cout का प्रयोग input या output के लिए करते हैं, हम असल में standard library में define किये गए कुछ functions का ही इस्तेमाल कर रहे होते है ।

प्रभावी ढंग से functions का इस्तेमाल करना

C++ सीखते वक़्त नए programmers के लिए सबसे बड़ी चुनौती यही होती है की function का इस्तेमाल किस तरह से और कहाँ किया जाए । नीचे functions लिखे जाने की ज़रूरत कब पड़ेगी, इसके विषय में कुछ निर्देश दिए गए हैं:

  • यदि program में कोई code एक से ज्यादा बार इस्तेमाल होने वाला है, तो इस code को बिलकुल अलग एक function में लिखा जाना चाहिए । उदाहरण के लिए, यदि हमे एक से ज्यादा बार user से एक ही तरह का input चाहिए, तो यहाँ input लेने के लिए एक function लिखना सबसे अच्छा उपाय है । इसी प्रकार, यदि हमे एक ही तरह का output बार-बार देना है, हमे इसके लिए एक अलग function लिख लेना चाहिए ।
  • Code जिनमे inputs और outputs हर बार एक से नहीं होते, पर उनपर हमेसा एक ही तरह का काम किया जाता है, यहाँ functions काफी उपयोगी साबित हो सकते हैं । उदाहरण के लिए, यदि हमारे पास data का एक list है जिसे किसी क्रम में सजाना है, तो data को किसी क्रम में सजाने के लिए एक function लिखा जाना एक बहुत ही अच्छा उपाय है । यदि sorting (क्रम में सजाने) का काम केवल एक बार किया जाना है, तो भी । यहाँ पे unsorted list हमारा input है, और इस list को sort करने पर जो result मिलेगा, वो हमारे function का output होगा ।
  • Function केवल एक (और एक ही) task को पूरा करने के लिए लिखा जाना चाहिए ।
  • जब कोई function काफी बड़ा, जटिल या समझने में मुश्किल बना जाता है, तो इसे छोटे-छोटे sub-functions में तोड़ देना चाहिए । ये प्रक्रिया refactoring कहलाती है

आम तौर पर, C++ सीखते हुए आप ऐसे कई programs लिखोगे, जो नीचे दिए गए तीन tasks को ज़रूर पूरा करेंगी:

  1. User से input लेना या read करना
  2. दिए गए input के आधार पर एक value calculate करना
  3. Calculated value को print करना

छोटे programs के लिए (e.g. programs जिनमे 20 से भी कम lines हो), ये सारे काम main() में किये जा सकते हैं । लेकिन बड़े programs में (या practice के लिए) इनमे से हर एक को करने के लिए एक function लिखना एक अच्छा उपाय है ।

नए programmers अकसर #2 और #3 में दिए गए कामों को एक ही function में निपटाने की कोशिश करते हैं । ये functions के “एक function, एक task” के नियम का उल्लंघन है । Function जो value calculate करने के लिए ज़िम्मेदार है, उसे केवल value को calculate कर caller को return करने तक ही सीमित रखना चाहिए और ये पूरी तरह से caller पर छोड़ देना चाहिए की calculated value का क्या करना है ।

lesson 1.10a -- आपका पहला program कैसे design किया जाये पर हम इस विषय पर और अधिक चर्चा करेंगे ।

1.4c -- Local scope पर एक नज़र
Index
1.4a -- Function parameters और arguments पर एक नज़र

Leave a Comment

Put C++ code inside [code][/code] tags to use the syntax highlighter