06-01-2011, 02:45 PM | #21 |
Exclusive Member
Join Date: Oct 2010
Location: Bihar
Posts: 6,261
Rep Power: 35 |
Re: सी की दुनिया
|
06-01-2011, 02:45 PM | #22 |
Exclusive Member
Join Date: Oct 2010
Location: Bihar
Posts: 6,261
Rep Power: 35 |
Re: सी की दुनिया
# include < stdio.h >
यह सी प्रोग्राम की दूसरी विशेषता है। यह उक्ति पूर्वसंकलक (प्रीकंपाइलर) के लिए है। किसी भी सी प्रोग्राम को संकलित करने से पहले एक पूर्वसंकलक उस प्रोग्राम को जांचता है, और उसमें कुछ कोड पंक्तियां जोड़ता है। लगभग सभी सी प्रोग्रामों की कुछ आम आवश्यकताएं होती हैं, जैसे कंप्यूटर की स्मृति में विद्यमान सामग्री को स्क्रीन पर लाना (आउटपुट), प्रयोक्ता द्वारा दी गई सूचनाओं को अथवा प्रोग्राम द्वारा निर्मित सूचनाओं को स्मृति में सहेजना (इनपुट)। इसके अलावा कुछ ऐसे प्रकार्य (फंक्शन) भी हैं, जिनकी बार-बार आवश्यकता पड़ती है, जैसे, फाइलों में लिखना, उन्हें पढ़ना, उनमें कुछ जोड़ना, उन्हें खोलना, बंद करना या डिलीट करना, नई फाइल बनाना आदि, अथवा गणित से जुड़े कुछ प्रकार्य, जैसे, किसी संख्या का वर्गमूल निकालना, किसी कोण का साइन, को-साइन आदि का पता लगाना, इत्यादि। इस तरह के अन्य सामान्य प्रकार्य भी हैं। इन सबके लिए हर बार नए सिरे से कोड लिखने की आवश्यकता को कम करने के लिए सी के पूर्वसंकलक में इनसे संबंधित कोड पहले से ही विद्यमान रहते हैं। इन्हें अलग-अलग लाइब्रेरियों में व्यवस्थित किया गया है और उन लाइब्रेरियों में विद्यमान फंक्शनों के प्रोटोटाइपों (यह क्या है नीचे समझाया गया है) की अलग सूची भी बनाई गई हैं, जिन्हें हेडर फाइलें कहा जाता है। stdio.h ऐसा ही एक हेडर फाइल का नाम है। |
06-01-2011, 02:46 PM | #23 |
Exclusive Member
Join Date: Oct 2010
Location: Bihar
Posts: 6,261
Rep Power: 35 |
Re: सी की दुनिया
stdio एक संक्षेपण है और उसका पूरा रूप है standard input and output. इस हेडर फाइल में ऐसे प्रकार्यों (फंक्शनों) के प्रोटोटाइप हैं, जो इनपुट और आटपुट को सुगम बनाते हैं। प्रोग्राम 1 में जो printf() फंक्शन का प्रयोग किया गया है, वह इसी हेडर का एक फंक्शन है। इस फंक्शन का पूरा संकलित कोड पूर्वसंकलक में पहले से मौजूद है। इसलिए हमें इनपुट या आटपुट के कोड स्वयं लिखने की आवश्यकता नहीं है। हमें केवल उस फंक्शन का नाम भर अपने प्रोग्राम में लेना है और उससे संबंधित सी लाइब्रेरी के हेडर फाइल का उल्लेख # include उक्ति में कर देना है। बाकी काम पूर्वसंकलक कर देता है।
आप ध्यान दें कि stdio के आगे .h है। यह बताता है कि यह एक हेडर-फाइल है। हेडर-फाइल में सी में पहले से ही मौजूद फंकश्नों के नामों की सूची रहती है। यदि आप stdio.h फाइल को खोल कर देखें, तो उसमें आपको बीसियों फंक्शनों के नाम दिखाई देंगे, इनमें आपको printf( ) भी मिलेगा। stdio.h में आपको printf() का कोड नहीं मिलेगा, वह संकलित रूप में अलग-अलग सी लाइब्रेरियों में रहता है। हेडर फाइलों में केवल फंक्शन के प्रोटोटाइप (अर्थात एक विशेष शैली में लिखा हुआ फंक्शन का नाम, घबराइए नहीं, फंक्शन प्रोटोटाइप क्या बला होते हैं, इसकी चर्चा नीचे दी गई है) होते हैं। इन फंक्शन प्रोटोटाइपों को देखकर पूर्वसंकलक आपके प्रोग्राम के संकलन के पहले उस फंक्शन से संबंधित कोड को आपके प्रोग्राम में ठीक स्थान पर लगा देता है, और उसके बाद आपके प्रोग्राम का संकलन होता है और .obj और .exe फाइलें बनती हैं। |
06-01-2011, 02:47 PM | #24 |
Exclusive Member
Join Date: Oct 2010
Location: Bihar
Posts: 6,261
Rep Power: 35 |
Re: सी की दुनिया
एक चीज और ध्यान देने की है, वह है stdio.h को घेरे हुए कोणीय कोष्ठक (अर्थात < और >)। ये महत्वपूर्ण हैं। इनसे पूर्व-संकलक (preprocessor) को पता चलता है कि stdio.h फाइल के लिए उसे वहां खोजना है, जहां संकलक ने सभी सी लाइब्रेरियों और उनके हेडर फाइलों को संचित किया है। आप stdio.h को दुहरे उद्धरण चिह्नों से भी घेर सकते हैं, ऐसे #include "stdio.h"। ऐसा करने से पूर्व-संकलक stdio.h फाइल के लिए पहले उस निर्देशिका (डाइरेक्ट्ररी) में ढूंढ़ता है जिसमें आपका प्रोग्राम संचित है। यदि उसे वह वहां न मिले, तो पूर्व-संकलक stdio.h फाइल के लिए अन्य निर्देशिकाओं में खोज करता है।
कई बार प्रोग्रामरों को अपने लिखे हुए कुछ फलनों (फंक्शनों) का बार बार भिन्न-भिन्न प्रोग्रामों में उपयोग करना पड़ता है। सुविधा के लिए वे इन सब फलनों को एक हेडर फाइल में संचित करके उसे कोई नाम दे देते हैं, जैसे jaihindi.h। अब वे अपने प्रोग्रामों में #include "jaihindi.h" वाला पूर्व-संकलक निर्देश (preprocessor directive)जोड़ कर इन फंक्शनों को सीधे आह्वान कर सकते हैं, और उनका कोड उन्हें दुबारा लिखना नहीं पड़ता। इस तरह के हेडर फाइलों को प्रयोक्ता-परिभाषित हेडर फाइल (user0defined header file) कहा जाता है |
06-01-2011, 02:48 PM | #25 |
Exclusive Member
Join Date: Oct 2010
Location: Bihar
Posts: 6,261
Rep Power: 35 |
Re: सी की दुनिया
ये पूर्व संकलक में पहले से ही विद्यमान हेडर फाइलों से भिन्न होते हैं। हेडर फाइलों को उद्धरण चिह्नों (" और ") अथवा कोणीय कोष्ठकों (< और >) से घेर कर हम पूर्व संकलक को बताते हैं कि यह प्रयोक्ता द्वारा लिखा गया हेडर फाइल हैं या सी का अपना कोई हेडर फाइल, और उसे पूर्व संकलक को कहां ढूंढ़ना है, उस निर्देशिका में जिसमें वह प्रोग्राम संचित है जिसमें यह निर्देश आया है, अथवा उस निर्देशिका में जिसमें सी की सभी हेडर फाइलें संचित हैं।
आम तौर पर सी की मूल हेडर फ़ाईल अलग निर्देशिका में होती है और उन्हें हम < > से घेरते हैं, जबकि प्रयोक्त्ता-परिभाषित हेडर फ़ाईल वहाँ रखी जाती है जहाँ प्रोग्राम होता है और इसे " " से घेरा जाता है। #include वाले पूर्वसंकलक उक्ति के बारे में कुछ और महत्वपूर्ण बातें। 1. इसे अलग पंक्ति में लिखना जरूरी है और # वाला चिह्न पंक्ति के प्रथम स्थान पर आना चाहिए। अर्थात, इसे यों लिखना गलता होगा:- abcddx #include ...... |
06-01-2011, 02:48 PM | #26 |
Exclusive Member
Join Date: Oct 2010
Location: Bihar
Posts: 6,261
Rep Power: 35 |
Re: सी की दुनिया
2. सी की उक्तियों के अंत में ; (अर्ध विराम चिह्न) रहता है, लेकिन पूर्वसंकलक से संबंधित उक्तियों के अंत में अर्ध विराम चिह्न ; नहीं रहता है। इसलिए यों लिखना गलत है:-
#include "stdio.h"; और अब सी की कुछ प्रमुख हेडर फाइलों की चर्चा हो जाए, जिनका आप बार बार उपयोग करेंगे। math.h इसमें वर्गमूल निकालने, किसी संख्या का घात (power or exponent) निकालने, किसी कोण का साइन (sin), कोसाइन (cos), टेंजेंट (tan), कोटेंजेंट(cot) आदि निकालने, इत्यादि के फंक्शनों के प्रोटो-टाइप रहते हैं। conio.h यह भी stdio.h के समान है और इसमें भी इनपुट-आउटपुट को बेहतर रूप देने से संबंधित फंक्शनों के प्रोटोटाइप रहते हैं। इस हेडर के फंक्शनों का उपयोगमूल रूप से सजावटी है, और यह ANSI/ISO Standard में शामिल नहीं है। टर्बो सी की दुनिया में बहुत उपयोग की जाती है। |
06-01-2011, 02:49 PM | #27 |
Exclusive Member
Join Date: Oct 2010
Location: Bihar
Posts: 6,261
Rep Power: 35 |
Re: सी की दुनिया
string.h
इसमें स्मृति और स्ट्रिंग से संबंधित फंक्शनों के प्रोटाटाइप रहते हैं, उदाहरण के लिए, किसी दिए गए स्ट्रिंग में से कुछ वर्णों को छांटकर उपस्ट्रिंग बनाने के फंक्शन, किसी स्ट्रिंग को तोड़कर दो स्ट्रिंगों में बांटने के फंक्शन, किसी स्ट्रिंग के वर्णों को उलटने के फंक्शन (यानी jaihindi को idnihiaj बना देना), इत्यादि फंक्शनों के प्रोटोटाइप रहते हैं। |
06-01-2011, 02:50 PM | #28 |
Exclusive Member
Join Date: Oct 2010
Location: Bihar
Posts: 6,261
Rep Power: 35 |
Re: सी की दुनिया
इस लेख में फंक्शन प्रोटोटाइप बार बार आया है, और आप सोच रहे होंगे ये क्या होते हैं। तो आपको संक्षिप्त में बता देते हैं। जब आप किसी फंक्शन का उपयोग करते हैं, तो वह कुछ डेटा टाइपों पर कार्य करता है, उन पर गणना करता है, या उन्हें अन्य रीति से बदलता है, और फिर बदली हुई चीज को उसे बुलाने वाले फंक्शन को लौटा देता है। यह सब कंप्यूटर की स्मृति का उपयोग करके किया जाता है। इसलिए किसी भी फंक्शन का उपयोग करने से पहले संकलक को उसके लिए पर्याप्त स्मृति आवंटित करना होता है।
अब संकलक को कैसे पता चले कि किसी फंक्शन को कितनी स्मृति चाहिए होगी। यहीं फंक्शन प्रोटो टाइप का महत्व है। संकलक फंक्शन प्रोटो टाइप को देखकर समझ जाता है कि यह फंक्शन किस तरह के डेटा टाइपों पर कार्य करता है और किस डेटा टाइप को अपने परिणाम के रूप में लौटाने वाला है, और इस जानकारी के आधार पर वह फंक्शन के लिए स्मृति आवंटित करता है। |
Bookmarks |
|
|