PDA

View Full Version : "सी" प्रोग्रामण भाषा



Pages : [1] 2

anoopverma
09-02-2011, 04:46 PM
क्या आप सब "सी" प्रोग्रामण भाषा सिखना चाहेंगे?

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

आप "सी++" और "जावा" भी चुन सकते हैं, पर अगर आप नये हैं तो मेरी सलाह "सी" सीखने की है।

sushilnkt
09-02-2011, 04:48 PM
मैं इस सूत्र का इंतजार कर रहा था

nitin
09-02-2011, 05:02 PM
जरुर क्यों नहीं, मै तो शुरुवात से सीखना चाहूँगा , आप आगे पोस्ट करे

incanadaplayboy
09-02-2011, 05:02 PM
jaldi se shuru karo bhai

anoopverma
09-02-2011, 05:10 PM
jaldi se shuru karo bhai

यह सुत्र आपको हिन्दी लिखना सीखाने में मदद देगा
http://antarvasna.com/forum/showthread.php?t=106

anoopverma
09-02-2011, 05:13 PM
मैं इस सूत्र का इंतजार कर रहा था


जरुर क्यों नहीं, मै तो शुरुवात से सीखना चाहूँगा , आप आगे पोस्ट करे


jaldi se shuru karo bhai

हिन्दी में टाईप किया हुआ मुझे आज खोज लेने दें, कल से यह सुत्र शुरु हो जायेगा...और इसी को आगे "सी++" तक बढ़ा दुँगा।

वैसे भी "सी" और "सी++" का कंपाईलर तो एक हीं रहेगा आप सब के लिए।

nitin
09-02-2011, 05:37 PM
इंतजार में है

srtjoon
09-02-2011, 05:51 PM
आपके इस सुत्र का इंतजार है। आप इसे जल्दी शुरु करें।

sanjeetspice
09-02-2011, 06:15 PM
dost me bhi wait kr rha hu

jaysingh
09-02-2011, 06:44 PM
मुझे भी इंतजार है,

Prince of India
09-02-2011, 08:16 PM
Yaar, Iska to exam bhi hai mera is saal. Jaldi suru karo, ab antarvasna par meri padai bhi ho jayegi.

anoopverma
09-02-2011, 09:16 PM
C भाषा को १९७२ के आस-पास डेनिस रिची, जो AT&T (American Telephone and Telegraph) की बेल लैब में काम करते थे, ने विकसित किया और एक बार जब यह प्रोग्रामरों के हाथ लगा तो जैसे कंप्युटिंग की दुनिया हीं बदल गई। तब से ले कर आज तक C भाषा या इसके परिवार के हीं किसी प्रोग्रामिंग भाषा ने कंप्युटिंग की दुनिया पर राज किया है। C परिवार की अन्य भाषाओं में हम निम्न भाषाओं का नाम ले सकते हैं - C++, Java, C# ( सी शार्प).।

anoopverma
09-02-2011, 09:17 PM
C भाषा का विकास, युनिक्स औपरेटिंग सिस्टम के साथ जुड़ा हुआ है और इनके विकास की कहानी भी कम रोचक नहीं है। साठ के दशक में जब बड़े कम्प्युटरों (मेन फ़्रेम और मिनी) का बोलबाला था तब हर कम्प्युटर के साथ उसके लिए विशेष तौर से विकसित औपरेटिंग सिस्टम और अन्य प्रोग्राम बनाए जाते थे। यानि तब की बात आज की तरह नहीं थी, कि कंप्युटर कोई भी हो औपरेटिंग सिस्टम विंडो ही होगा (७५%+)। तब हर कंप्युटर के साथ अलग औपरेटिंग सिस्टम और अलग प्रोग्रामों की श्रृंखला... यानि कंप्युटिंग पर महारत हासिल करना आसान न था और बहुत कुछ सिखना होता था।

anoopverma
09-02-2011, 09:17 PM
तब एक विचार आया कि क्यों न एक ऐसा औपरेटिंग सिस्टम बनाया जाए जो कई तरह के मशीनों पर चले, और इसी विचार ने AT&T और MIT और GE को एक ऐसे हीं सिस्टम को विकसित करने की सोंच दी और तब इस प्रोजेक्ट को कहा गया - "MULTICS (MULTiplex Information and Computing Service)". काम १९६४ में शुरु हुआ, समय बीतता गया पर AT&T जैसा चाहता था वैसा कुछ बन नहीं रहा था। AT&T, जो इस रीसर्च में मुख्य पैसा लगाने वाली कम्पनी थी, ने बाद में अपने को इससे अलग कर लिया। उस प्रोजेक्ट से जुड़े लोगों के लिए यह एक बुरा समय था, उन पर जाने अनजाने एक "Failed Project" का हिस्सा होने का तमगा चिपका था। वे लोग बड़ी मुश्किल से AT&T के मैनेजमेन्ट को यह समझा पाए कि उन्हें एक पुरानी मशीन दी जाए ताकि वे कुछ कर सकें (ऊन्हें तब एक PDP-7 मशीन काम करने के लिए दे दी गई, तब का इस मशीन का सबसे नया मौडेल PDP-11 था) उन्हें इतना तो समझ में आ रहा था कि अगर औपरेटिंग सिस्टम किसी ३G भाषा में हो तो उसका कई तरह के मशीनों पर चलना संभव हो जाएगा, पर तब तक के सारे औपरेटिंग सिस्टम उस कंप्युटर में इस्तेमाल हो रही माईक्रोप्रोसेरर की असेम्बली भाषा या मशीनी भाषा (Language of Bits) में बनाए जाते थे।

anoopverma
09-02-2011, 09:18 PM
उपर्युक्त प्रोग्रामिंग भाषा की कमी ने केन थौमसन (बेल लैब के इंजीनीयर, जो मल्टिक्स प्रोजेक्ट का हिस्सा थे) को एक नई किस्म की प्रोग्रामिंग भाषा को विकसित करने की प्रेरणा दी (यह भाषा B नाम से बनी, अब यह विलुप्ति के कगार पर है)। पर यह B भी, जो नये किस्म के औपरेटिंग सिस्टम का लक्ष्य था, उसे पुरा न कर सकी। डेनिस रिची तब AT&T में अपनी युनिवर्सीटी से एक रीसर्च स्कौलर के रुप में आए थे और उन्हें केन थौम्सन के साथ काम करना था। रिची ने प्रोजेक्ट को समझा और फ़िर केन के B भाषा को भी। फ़िर उन्होंने यह नयी भाषा बनाई - C. इन प्रोग्रामिंग भाषाओं के ऐसे विचित्र नामकरण के पीछे भी कहानी है। असल में केन ने अपनी भाषा B, एक पूर्व विकसित भाषा, मार्टिन रिचर्ड्स की BCPL (Basic Combined Programming Language) पर आधारित रखी थी और इसी भाषा के नाम के पहले अक्षर "B" को अपनी नयी भाषा का नाम बनाया। और जब रिची ने B पर आधारित नई भाषा बनाई तो उन्होंने इसी परम्परा का पालन किया और BCPL के अगले अक्षर "C" को अपने भाषा का नाम दिया। (आगे जब AT&T के हीं जार्ने स्ट्राउस्ट्रुप ने जब C भाषा पर आधारित एक नई भाषा बनाई (हम आप इस भाषा को आज C++ के नाम से जानते हैं), तो कई ने कहा की इसे BCPL के आधार पर P कहा जाए तो कई ने कहा कि B के बाद C तो अब इसको D कहा जाए। (वैसे D नाम की भी एक प्रोग्रामिंग भाषा है)

anoopverma
09-02-2011, 09:20 PM
रिची के इस C जो एक ३G प्रोग्रामिंग भाषा है, में जब ओपरेटिंग सिस्टम लिखा गया तो इसका नाम हुआ UNIX, इसके बाद Unix और C की जुगलबंदी ने कंप्युटिंग की दुनिया हीं बदल दी और आज कंप्युटर कई रुपों में हमारे चारो तरफ़ मौजुद है। कहते हैं कि जिस रफ़्तार से कंप्युटिंग का विकास हुआ, अगर यही रफ़तार औटोमोबाईल की दुनिया में होता तो आज रोल्स-रायस आकार और कीमत में माचिस की डिब्बी की तरह होता...........

anoopverma
09-02-2011, 09:24 PM
यह था "सी" का एक संक्षिप्त परिचय। सन २००० में "केन थौम्सन" को "सदी का टेक्नोक्रैट" (Technocrat of the Millenium) घोषित किया गया क्योंकि इनकी खोज ने ग्यान-विग्यान के कई धाराओं पर अपनी छाप छोड़ी (क्या आज आप कोई ऐसा क्षेत्र बता सकते हैं जिस पर कंप्युटिन्ग ने अपना असर नहीं दिखाया?)

anoopverma
09-02-2011, 09:32 PM
अब आपके प्रतिक्रिया का इंतजार है....:salut:

आगे के चित्र में रिची (दाहिने) और थौम्सन (बाँए) दिख रहे हैं
http://antarvasna.com/forum/attachment.php?attachmentid=33070&stc=1&d=1297267189
अगली तस्वीर में दोंनो फ़िर साथ हैं, राष्ट्रपति क्लिन्टन से १९९९ में नेशनल मेडल लेते हुए

http://antarvasna.com/forum/attachment.php?attachmentid=33071&stc=1&d=1297267229

jaysingh
09-02-2011, 11:04 PM
आप जारी रखें,

Prince of India
10-02-2011, 12:44 AM
बहुत अच्छी जानकारी है.... जारी रखें...

Dark Rider
10-02-2011, 07:55 AM
जी दिल और दिमाग दोनों को अच्छा लगा समझाने का करने का तरीका भी लाजवाब है आशा करता हू यह सूत्र महान उपलब्धिया हासिल करे

hotfriendr
10-02-2011, 08:13 AM
welcome back brother. tumare sutra ka hi intjar tha. last time ki kami puri karo

anoopverma
10-02-2011, 03:47 PM
आप जारी रखें,


बहुत अच्छी जानकारी है.... जारी रखें...


जी दिल और दिमाग दोनों को अच्छा लगा समझाने का करने का तरीका भी लाजवाब है आशा करता हू यह सूत्र महान उपलब्धिया हासिल करे


welcome back brother. tumare sutra ka hi intjar tha. last time ki kami puri karo

धन्यवाद दोस्तों, अभी एक इमर्जेन्सी आ गई है, लौग औफ़ कर रहा हूँ, एक घन्टे में अपडेट दुँगा।

preetbhatt.007
10-02-2011, 03:54 PM
मैं इस सूत्र का इंतजार कर रहा था

sushilnkt
10-02-2011, 03:56 PM
Dil tham ka batho अभी एक इमर्जेन्सी आ गई है

anoopverma
10-02-2011, 04:47 PM
आज कल मानव-क्रिया कलाप के हर क्षेत्र में कंप्यूटरों का बोल बाला होता जा रहा है। यह कंप्यूटरों की बढ़ती शक्ति और उपयोगिता को दर्शाता है। कंप्यूटरों की यह शक्ति और उपयोगिता मानव जरूरतों को कंप्यूटर प्रोग्रामों के माध्यम से ऐसे रूपों में प्रस्तुत करने से जुड़ी है, जिन्हें कंप्यूटर समझ सके, तथा अपनी अपार गणना शक्ति का उपयोग करते हुए इन जरूरतों की पूर्ति कर सके।

जैसा कि आप जानते हैं, कंप्यूटर दो ही स्थितियों को नैसर्गिक रूप से पहचान सकता है- -अपने परिपथों में बिजली के बहाव के होने और न होने की। इन दोनों दशाओं को 1 और 0 के माध्यम से दर्शाया जाता है। अन्य शब्दों में कहें, तो कंप्यूटर की भाषा में केवल दो ही शब्द होते हैं, 1 और 0, और हमें कंप्यूटरों से बातचीत करते समय हर बात इन्हीं दो शब्दों में कहनी होती है। यही तो कारण है कि बाईनरी नम्बर सिस्टम को कंप्युटिंग की दुनिया में इतना महत्व दिया जाता है।

anoopverma
10-02-2011, 04:52 PM
कंप्यूटरों के शुरुआती दौर में कंप्यूटर प्रोग्राम सचमुच इस मूलभूत भाषा में लिखे जाते थे। इस भाषा को यंत्रभाषा (मशीन लैंग्वेज) कहा जाता है। लेकिन यंत्र-भाषा में प्रोग्राम लिखने का काम अत्यंत उबाऊ और श्रम-साध्य है।जैसे-जैसे कंप्यूटर अधिक जटिल कार्यों में लगाए जाने लगे, यंत्र-भाषा अपर्याप्त सिद्ध होने लगी। तब प्रोग्राम-लेखकों ने उससे उन्नत भाषा का विकास किया, जिसमें यंत्र-भाषा के बार-बार प्रयोग में आने वाले अंक-क्रमों के लिए सूचक शब्द रखे गए। मान लीजिए कि दो संख्याओं को जोड़ने के लिए यंत्र-भाषा में यह क्रम चलता हो--1100101010001101। तो इस अंक-विन्यास के लिए ADD (जोड़ो) सूचक शब्द रख देने पर, प्रोग्राम में जहां-जहां यह अंक-विन्यास आता हो, वहां इस सूचक शब्द का प्रयोग काफी होगा। इसी प्रकार से कंप्यूटर द्वारा किए जाने वाले अन्य कार्यों को सूचित करने वाले अंक-विन्यासों के लिए भी शब्द रखे गए।

anoopverma
10-02-2011, 04:56 PM
इसी प्रकार से कंप्यूटर द्वारा किए जानेवाले अन्य कार्यों को सूचित करनेवाले अंक-विन्यासों के लिए भी शब्द रखे गए। इन शब्द-प्रतीकों की भाषा को ऐसेंब्ली भाषा कहा जाता है। ऐसेंब्ली भाषा में लिखे गए प्रोग्रामों को यंत्र भाषा में बदलने के लिए विशेष प्रोग्राम लिखे गए, जिन्हें ऐसेंब्लर कहा जाता है। प्रोग्रामर तो अपना प्रोग्राम ऐसेंब्ली भाषा में लिखेगा, लेकिन ऐसेंब्लर उस प्रोग्राम को यंत्र भाषा में परिवर्तित करेगा, ताकि कंप्यूटर प्रोग्राम को समझ सके।

anoopverma
10-02-2011, 04:57 PM
लेकिन बहुत जल्द ऐसेंब्ली भाषा भी अनुपयुक्त सिद्ध होने लगी। यह तब हुआ जब निजी कंप्यूटरों का दौर आरंभ हुआ। ऐसेंब्ली भाषा यंत्र-निर्भर भाषा है, यानी ऐसेंब्ली भाषा में लिखे गए प्रोग्राम हर प्रकार के कंप्यूटरों पर नहीं चल सकते, वरन उन्हीं कंप्यूटरों पर चल सकते हैं, जिनके लिए वे लिखे गए हैं। जब शुरू-शुरू में थोड़े ही प्रकार के कंप्यूटर होते थे, तो यह स्थिति संतोष जनक थी, लेकिन जैसे-जैसे विभिन्न प्रकार के कंप्यूटर बनने लगे, तो ऐसी स्थिति हो गई कि एक कंप्यूटर के लिए लिखे गए प्रोग्राम अन्य कंप्यूटरों के लिए काले अक्षर भैंस बराबर हो गए। एक और भी कारण था। शुरुआत में तो कंप्युटर का मुख्य काम कंप्युटिंग हीं था पर धीरे-धीरे कंप्युटर का प्रयोग और भी अन्य कामों के लिए होने लगा, और तब प्रोग्रामरों के प्रोग्राम ज्यादा जटिल होने लगे और सूचक आधारित (Nemonics based) ऐसेंब्ली भाषा अब थोड़ा मुश्किल पैदा करने लगी।

anoopverma
10-02-2011, 05:01 PM
इस स्थिति से निपटने के लिए कंप्यूटर विशेषज्ञों ने कुछ उच्च स्तर की भाषाएं विकसित कीं, जो यंत्र-मुक्त थीं, यानी उनमें लिखे गए प्रोग्राम अनेक प्रकार के कंप्यूटरों पर चल सकते थे। इन भाषाओं में एक खुबी और थी, ये सब अंग्रेजी जैसी (ध्यान रहे, अंग्रेजी नहीं अंग्रेजी जैसी) हैं, जिससे इनको सीखना समझना आसान हो गया (पहले की विकसित भाषाओं की तुलना में)। इन भाषाओं में लिखे गए प्रोग्रामों को यंत्र भाषा में बदलने के लिए विशेष प्रकार के दुभाषिए (इंन्टेरप्रेटर) और संकलक (कंपाइलर) प्रोग्राम लिखे गए। बेसिक, कोबोल, पास्कल आदि इस प्रकार की भाषाएं हैं।

यहाँ यह बता दूँ, इन उच्च स्तर की भाषा (हाई-लेवेल लैंग्वेज) में सबसे पहले विकसित "फ़ोर्ट्रान" है...

anoopverma
10-02-2011, 05:09 PM
कुछ समय तक तो ये भाषाएं पर्याप्त रहीं, लेकिन जैसे-जैसे कंप्यूटरों की शक्ति बढ़ने लगी और उनके लिए लिखे गए प्रोग्रामों की जटिलता आसमान छूने लगी, तो ये भाषाएं भी जवाब दे गईं।

इसका मुख्य कारण यह था कि इन भाषाओं में निर्देश रेखीय क्रम में रहता है, यानी निर्देश जिस क्रम में प्रोग्राम में लिखे होते हैं, कंप्यूटर उसी क्रम में उनका निष्पादन करता है (Linear or Sequential programming)। लेकिन जटिल प्रोग्रामों में कंप्यूटर को एक निर्देश के परिणामों के आधार पर अनेक विकल्पों में से एक को चुनकर उसका पहले निष्पादन करने की आवश्यकता रहती है। बेसिक आदि प्रारंभिक उच्च-स्तरीय भाषाओं में इस प्रकार की स्थितियों से निपटने की क्षमता नहीं थी।

anoopverma
10-02-2011, 05:15 PM
इसी संदर्भ में पास्कल, सी आदि अधिक पूर्ण एवं शक्तिशाली उच्च-स्तरीय भाषाओं का विकास हुआ। इनमें प्रोग्राम के बहाव को नियंत्रित करने के लिए अनेक उपाय हैं। सी इन सभी भाषाओं में से सर्वाधिक उन्नत है, क्योंकि वह प्रोग्राम-लेखक को कंप्यूटर को यंत्र-स्तर पर नियंत्रित करने की क्षमता भी देती है और इस स्तर पर यह पुरानी पीढ़ी की भाषा ऐसेंब्ली के ज्यादा करीब है। इसी विशेषता के कारण पिछले कुछ दशकों में सी भाषा सर्वाधिक उपयोग में लाई जाने वाली भाषा बन गई थी। (आज भी यह अपने बदले हुए रूप में, जावा के रूप में विश्व की अग्रणी प्रोग्रामिंग की भाषा बनी हुई है)
यहाँ यह बता दूँ, इन उच्च स्तर की भाषा (हाई-लेवेल लैंग्वेज) में सबसे पहले विकसित "पास्कल" है, जिसे निकोलस विर्थ ने बनाया था, जो सौफ़टवेयर की दुनिया में ऐलगोरिथ्म (Algorithm) के विकास के लिए सब्से सम्माननीय दो नामों में से एक हैं। (दुसरे हैं डोनाल्ड नूथ, Donald Knuth जिनकी साठ के दशक में लिखी गई पुस्तकें आज भी दुनिया के विश्वविद्यालयों में एक संदर्भ ग्रंथ का दर्जा पाई हुई हैं)

anoopverma
10-02-2011, 05:27 PM
सी की लोकप्रियता के कुछ अन्य कारण भी हैं। युनिक्स प्रचालन तंत्र (ओपरेटिंग सिस्टम) सी भाषा में ही लिखा गया है और यह बड़े कंप्यूटरों में सर्वाधिक लगाया जाने वाला प्रचालन तंत्र है। अतः इन कंप्यूटरों के लिए प्रोग्राम लिखने के लिए सी भाषा अधिक उपयुक्त है। अभी हाल में सी भाषा के साथ वस्तु-केंद्रित प्रोग्रामिंग (ओब्जेक्ट ओरिऐन्टेड प्रोग्रामिंग, Object Oriented Programming) के तत्व जोड़ कर एक नई भाषा सी++ विकसित की गई है, जो सी से भी अधिक प्रचार-प्रसार पा गई है। चूंकि सी++ , सी का ही विकसित रूप है, इसलिए उसमें निपुण होने के लिए सी की अच्छी जानकारी जरूरी है।

anoopverma
10-02-2011, 05:30 PM
आजकल सी दसवीं , बारहवीं से लेकर बीसीए , एमसीए आदि के पाठ्यक्रमों में निर्धारित की गई है। इसलिए कंप्यूटरशास्त्र के छात्रों के लिए सी का अध्ययन आवश्यक हो गया है। सभी प्रोग्रामरों के लिए सी सीखना इसलिए भी आवश्यक है क्योंकि अनेक अन्य भाषाएं, जैसे जावा, फ्लैश एक्शनस्क्रिप्ट, सी++, सीशार्प आदि में भी सी जैसा वाक्य-विन्यास होता है। यदि प्रोग्रामर को सी अच्छी तरह से आती हो, तो इन सब भाषाओं को सीखना उसके लिए अधिक सरल हो जाता है। सी सीखने का एक अन्य लाभ यह है कि उसमें किसी आधुनिक प्रोग्रामन भाषा के सभी आधारभूत तत्व जैसे प्रमुख डेटा टाइप (int, char, float, array, struct, आदि), लूपिंग स्ट्रक्चर (for, while, do... while, case आदि), ब्रांचिंग कथन (if... else वाले कथन) आदि मौजूद हैं। इसलिए सी सीख लेने पर प्रोग्रामन भाषाओं की मुख्य-मुख्य विशेषताएं आसानी से समझ में आ जाती हैं। चूंकि सी एक सुगठित और छोटी भाषा है उसे अन्य प्रोग्रामन भाषाओं की तुलना में जल्दी सीखा जा सकता है।

nitin
10-02-2011, 05:50 PM
अभीतक की मिली जानकारी कभी ज्ञान वर्धक है , आगे भी इसी तरह सूत्र बढ़ाये, आपके सूत्र को रोज हमारी भेट रहेगी

sanjeetspice
11-02-2011, 05:45 AM
kosis jari rekhe dost kafi accha likha h or batie c ke bare me

levaly heros
11-02-2011, 11:34 AM
दोस्त जल्दी करे मुझे भी इंतजार है,

anoopverma
11-02-2011, 04:14 PM
दोस्तों मैं Internet Explorer 8 की मदद से अभी तक भेज रहा था, पर अब पता नहीं क्यों यह सुत्र उस ब्राऊजर पर खुल नहीं रहा (This Tab has been recovered), Error मैसेज के साथ यह बंद हो जा रहा है। नियामक/प्रशासक को यह बताने पर उन्होंने मुझे ब्राऊजर बदलने की सलाह दी। अभी मैं गूगल क्रोम पर हूँ, पर यह ब्राऊजर मुझे मेरी अंतिम पोस्ट को संपादित नहीं करने दे रहा (आप सब उसके अक्षरों को सटा हुआ देख रहे होंगे), अभी इसी उधेड़-बुन में हूँ क्या किया जाए।

anoopverma
11-02-2011, 04:16 PM
"प्रविष्टि संपादित करें" को क्लीक करने पर मुझे अगले विन्डो में HTML tags के साथ मेरा पोस्ट दिखता है और मैं space नहीं डाल पा रहा। क्या आप में से कोई मदद कर सकता है?

anoopverma
11-02-2011, 04:17 PM
आजकल सी दसवीं, बारहवीं से लेकर बीसीए, एमसीए आदि के पाठ्यक्रमों में निर्धारित की गई है। इसलिए कंप्यूटरशास्त्र के छात्रों के लिए सी का अध्ययन आवश्यक हो गया है। सभी प्रोग्रामरों के लिए सी सीखना इसलिए भी आवश्यक है क्योंकि अनेक अन्य भाषाएं, जैसे जावा, फ्लैश एक्शनस्क्रिप्ट, सी++, सीशार्प आदि में भी सी जैसा वाक्य-विन्यास होता है। यदि प्रोग्रामर को सी अच्छी तरह से आती हो, तो इन सब भाषाओं को सीखना उसके लिए अधिक सरल हो जाता है। सी सीखने का एक अन्य लाभ यह है कि उसमें किसी आधुनिक प्रोग्रामन भाषा के सभी आधारभूत तत्व जैसे प्रमुख डेटा टाइप (int, char, float, array, struct, आदि), लूपिंग स्ट्रक्चर (for, while, do... while, case आदि), ब्रांचिंग कथन (if... else वाले कथन) आदि मौजूद हैं। इसलिए सी सीख लेने पर प्रोग्रामन भाषाओं की मुख्य-मुख्य विशेषताएं आसानी से समझ में आ जाती हैं। चूंकि सी एक सुगठित और छोटी भाषा है उसे अन्य प्रोग्रामन भाषाओं की तुलना में जल्दी सीखा जा सकता है।

anoopverma
11-02-2011, 04:18 PM
पाठक से सी भाषा या किसी भी अन्य कंप्यूटर भाषा या कंप्यूटर के बारे में जानकारी अपेक्षित नहीं है। सी भाषा की प्रारंभिक स्तर से लेकर कुछ अधिक उन्नत संरचनाओं तक का यहाँ मैं उल्लेख करने वाला हूँ। सी एक अत्यंत समृद्ध एवं शक्तिशाली भाषा है और उसके सभी पहलुओं को मैं शायद यहाँ न समेट सकूँ, फ़िर भी इतना तय है कि आपको इस सुत्र से निराशा हाथ नहीं लगेगी। आशा है आप इस सुत्र से सी भाषा की एक मूलभूत जानकारी प्राप्त कर लेंगे और उपयोगी प्रोग्राम लिखने की क्षमता प्राप्त कर लेंगे।

anoopverma
11-02-2011, 04:19 PM
क्या आपको मेरी पिछली पोस्ट या यह पोस्ट सही दिख रही है?

anoopverma
11-02-2011, 04:22 PM
मेरे इन पोस्ट में अगर कहीं त्रुटि दिखे तो आप मुझे इन त्रुटियों से अवगत कराएं।

anoopverma
11-02-2011, 04:23 PM
मैं आगे भेज रहा हूँ।

anoopverma
11-02-2011, 04:28 PM
मैं इन प्रोग्रामों को टर्बो सी++ ३.० कंपाईलर के आधार पर लिखुँगा। यह कम्पाईलर कफ़ी पुराना है और नेट पर कई साईट पर उपलब्ध है (यह सी++ का कंपाईलर है पर आप इसकी मदद से सी सीख सकते हैं, हर जगह आसानी से उपलब्ध है)। टर्बो सी, जो सी का कंपाईलर है वह निःशुल्क है। अगर आप इसे न खोज पाएँ तो मुझे बताएँ, संभव हुआ तो मैं इसे भेजने का प्रयास करुँगा। इस कंपाईलर की मदद से आप सिर्फ़ सी सीख पाएँगे। वैसे आप कोई भी सी++ का कंपाईलर अगर पा गए तो बहुत अच्छा, क्यों कि मैं इसी सुत्र को आगे सी++ तक ले
जाने का इरादा रखता हूँ।

anoopverma
11-02-2011, 04:29 PM
कोई भी प्रोग्रमन भाषा को ठीक से सीखने के लिए आपको स्वयं उसमें प्रोग्राम लिखकर उसे कंप्यूटर पर आजमाकर देखना होगा। तैरना सीखने के लिए आपको पानी में उतरना हीं होगा।

anoopverma
11-02-2011, 04:30 PM
इसलिए पहली जरूरत यह होगी कि आपके पास कंप्यूटर हो। लेकिन सी सीखने के लिए कोई हाई-फाई कंप्यूटर नहीं चाहिए। कोई भी पुराना कंप्यूटर, यहां तक कि डोस पर चलनेवाले डायनोसर के जमाने के कंप्यूटर भी चल जाएंगे। ये कुछ सौ रुपयों में सेकंड हैंड मिल जाते हैं।

anoopverma
11-02-2011, 04:30 PM
कंप्यूटर का इंतजाम हो जाने पर उसमें कुछ जरूरी सोफ्टवेयर स्थापित करना होगा। मैंने उपर बताया है कि सी एक संकलित (कंपाइल्ड) भाषा है। इसका मतलब यह है कि सी में लिखे गए प्रोग्राम कंप्यूटर पर तभी चलेंगे जब उन्हें संकलित किया जाए। याद रहे, संकलन के दौरान सी प्रोग्राम को यंत्र भाषा में बदला जाता है (1 और 0 में) ताकि कंप्यूटर उसे समझ सके।

anoopverma
11-02-2011, 04:31 PM
इसलिए आपको अपने कंप्यूटर में कोई अच्छा सी संकलक (सी कंपाइलर) स्थापित करना होगा। जो लोग डोस या विंडोस प्रचालन तंत्र वाले कंप्यूटरों पर हों, उनके लिए टर्बो सी एक अच्छा संकलक है। यह एक छोटा डोस प्रोग्राम है जिसे आसानी से स्थापित किया जा सकता है। टर्बो सी आपको अपने स्कूल के कंप्यूटर लैब से अथवा कंप्यूटर प्रोग्राम बेचनेवालों से मिल सकता है। (बोरलैन्ड कंपनी ने टर्बो सी वर्जन १ को अब फ़्री कर दिया है, पर इसका वर्जन ३ जो आसानी से उपलब्ध है और जो मूल रूप से सी++ का कंपाईलर है फ़्री नहीं है, बाकि आपकी मर्जी) यदि टर्बो सी न मिले, उसी के जैसा कोई अन्य संकलक भी चलेगा। कुछ सी संकलक नेट पर से मुफ्त में भी उतारे जा सकते हैं।

anoopverma
11-02-2011, 04:32 PM
यदि आप लिनक्स वाले कंप्यूटर पर हों, तो उसमें पहले से ही सी संकलक होगा। यदि आप उसे ढूंढ़ न पाएं, तो किसी कंप्यूटर विशेषज्ञ से सलाह लें।

बस ये ही दो चीजें आपको चाहिए, सी सीखने के लिए।

anoopverma
11-02-2011, 04:33 PM
जैसा कि मैंने ऊपर कहा, प्रोग्रामन भाषा सीखने के लिए उसमें खुद प्रोग्राम लिखकर उन्हें कंप्यूटर पर चलाकर देखना बहुत जरूरी है। इसलिए, इस ट्यूटोरियल में जो भी प्रोग्राम के कोड दिए गए हैं, उन्हें अपने कंप्यूटर पर टंकित करके, उन्हें संकलित करें और चलाकर देखें। क्या वे वैसे ही परिणाम आपके कंप्यूटर पर दे रहे हैं, जैसे इस ट्यूटोरियल में कहा गया है? यदि नहीं तो देखे, समझें कहां आपसे त्रुटि हो गई है? इस तरह से आप कुछ ही दिनों में सी सीख जाएंगे। अगर आपने एक बार सही प्रोग्राम लिख लिया और यह सही चल गया, तो खुद से भी उसमें एक-दो गलती कर दें (सही को चला कर देख-समझ लेने के बाद), और फ़िर उस प्रोग्राम को कंपाईल करके देखें, कि संकलक (कंपाईलर) आपकी गलती कैसे पकड़ता है, क्या संदेश देता है - यह अभ्यास आपको अपना बड़ा प्रोग्राम को त्रुटि-रहित (zero error) करने में मदद करेगा।

anoopverma
11-02-2011, 04:34 PM
सी प्रोग्राम किसी भी टेक्स्ट एडिटर (जैसे नोटपैड) में लिखे जा सकते हैं। टर्बो सी में उसका अपना टेक्स्ट एडिटर है, जिसमें प्रोग्राम लिखे जा सकते हैं। डोस एडिटर में भी सी के प्रोग्राम लिखे जा सकते हैं। लेकिन एमएस वर्ड आदि का इसके लिए प्रयोग न करें (यह टेक्सट एडिटर नहीं, वर्ड प्रोसेसर है)।

anoopverma
11-02-2011, 04:34 PM
प्रोग्राम लिखने के बाद, आप उसे जब save (सुरक्षित करें) तब पक्का करें कि आपके प्रोग्राम का एक्शटेंशन ".c" या ".cpp" है। जब आप उसे संकलित करेंगे, तो दो फाइलें बनेंगी, एक .obj फाइल और एक .exe फाइल। प्रोग्राम को चलाने के लिए आपको .exe फाइल को रन करना होगा।

anoopverma
11-02-2011, 04:35 PM
लिनक्स की दुनिया में जब आप सी के प्रोग्राम को संकलित करेंगे तो एक फ़ाईल बनेगी a.out नाम से। आपको इस फ़ाईल को चलाना होगा अपने प्रोग्राम की आउटपुट को देखने के लिए।

उदाहरण के लिए यदि आपने hello.c फाइल में एक प्रोग्राम लिखा हो, और उसे संकलित किया हो, तो hello.obj और hello.exe फाइलें बनेंगी। आपको hello.exe को चलाकर देखना है।

संकलक को स्थापित करना और उसे ठीक से सेट करना टेढ़ा काम है और यदि आपको कंप्यूटर का ज्यादा अनुभव न हो, तो इसमें आपको किसी की मदद लेनी चाहिए, अन्यथा आप इसी में उलझकर रह जाएंगे, और सी सीखने का उत्साह ठंडा पड़ जाएगा।

anoopverma
11-02-2011, 04:36 PM
पिछले पोस्ट में सी भाषा सीखने के लिए जिन चीजों की आवश्यकता होगी, उनका जिक्र था। आशा है कि आपने उनकी व्यवस्था कर ली होगी।

आइए, अब देखें कि सी का एक प्रोग्राम कैसा दिखता है। नीचे की पंक्तियों में सी भाषा में लिखा एक सरल प्रोग्राम दिया गया है। उसे ध्यानपूर्वक देखिए।

anoopverma
11-02-2011, 04:37 PM
-------------------------------------------------
प्रोग्राम 1

/*Namaskar shabd ko screen par chapnewala program*/

#include <stdio.h>
void main ()
{
printf("Namaskar.");
}
-------------------------------------------------

यदि आप इस प्रोग्राम को अक्षरशः कंप्यूटर में टंकित करके संकलित करें और उसे चलाएं, तो वह कंप्यूटर स्क्रीन पर

Namaskar.

अंकित करेगा।

anoopverma
11-02-2011, 04:38 PM
इस प्रोग्राम को ध्यानपूर्वक देखिए। उसकी निम्नलिखित आठ विशेषताएं हैं:-

1) प्रथम पंक्ति में /* और */ इन दो चिह्नों के बीच प्रोग्राम के बारे में एक वाक्य लिखा गया है।

2) दूसरी पंक्ति का आरंभ # चिह्न से हुआ है। इस चिह्न के आगे include शब्द है।

3) include शब्द के आगे कोणीय कोष्ठकों (< और >) के भीतर stdio.h लिखा हुआ है।

4) तीसरी पंक्ति में void और main शब्द है और main के आगे गोल कोष्ठक ( () ) है। कोष्ठक खाली है।

5) अगली पंक्ति में धनु कोष्ठक ({ }) का बांयां अर्धांग ({) अंकित है।

6) अगली पंक्ति में printf शब्द है और उसके आगे गोल कोष्ठकों के अंदर Namaskar. पद दुहरे उद्धरण चिह्नों (" और ") के भीतर दिया गया है।

7) Namaskar वाली पंक्ति के अंत में अर्ध-विराम चिह्न (;) है।

8) अंतिम पंक्ति में धनु कोष्ठक का दाहिना अर्धांग (}) है।

anoopverma
11-02-2011, 04:40 PM
आगे के पोस्टों में हम बारी-बारी से इन्हीं विशेषताओं के बारे में समझेंगे, अभी मुझे अब विदा लेने दें और बताएँ कि आपको यह सब कैसा लगा?

anoopverma
11-02-2011, 04:43 PM
अभीतक की मिली जानकारी कभी ज्ञान वर्धक है , आगे भी इसी तरह सूत्र बढ़ाये, आपके सूत्र को रोज हमारी भेट रहेगी


kosis jari rekhe dost kafi accha likha h or batie c ke bare me


दोस्त जल्दी करे मुझे भी इंतजार है,

दोस्तों आप सब मुझे बताएँ कि क्या अब मेरे पोस्ट ठीक हैं? और नीतिन जी, आशा है कि आप मुझसे आगे भी मिलतए रहेंगे

srtjoon
11-02-2011, 06:01 PM
बहुत हीं बढ़िया सुत्र है...हिन्दी में समझाने के लिए शुक्रिया। आपके आगे के पोस्ट का इंतजार है। अब सब सही दिख रहा है। आशा है आपको भी अब कोई परेशानी नहीं है।

sanjeetspice
11-02-2011, 11:54 PM
aane jin softwear ka jiker ki h link de do dost

Prince of India
12-02-2011, 12:40 AM
सचमुच कमाल का सुत्र है मित्र, दिल से निकली रेपुटेशन कबूल करें....

long
12-02-2011, 10:11 AM
bahut bahut dhanyavad,

asha hai ki aage bhi sikhne ko milta rahega

anoopverma
12-02-2011, 04:26 PM
आप सबका धन्यवाद।

anoopverma
12-02-2011, 04:32 PM
aane jin softwear ka jiker ki h link de do dost

लीजिए पेश है टर्बो सी का लिन्क। यह सौफ़्टवेयर फ़्री है।
http://www.megaupload.com/?d=A4J7ZE70

यह है बोरलैन्ड सी++ का सौफ़्टवेयर, यह भी फ़्री है पर आपको प्रोग्राम किसी अन्य एडिटर में लिखना होगा। आप अगर नये हैं तो टर्बो सी वाला सौफ़्टवेयर प्रयोग करें। वह ज्यादा आसान है।
http://www.megaupload.com/?d=KGEFREVG

anoopverma
12-02-2011, 04:32 PM
अब आगे चलते हैं।

anoopverma
12-02-2011, 04:33 PM
ऊपर जो आठ विशेषताएं बताई गई हैं, वे सी के सब प्रोग्रामों के अत्यंत महत्वपूर्ण अंशों को दर्शाती हैं, इसलिए थोड़ा समय देकर उन्हें अच्छी तरह देख-परख लें। अगले लेख में हम इनमें से प्रत्येक अंश को विस्तार से समझाएंगे।

anoopverma
12-02-2011, 04:35 PM
पहली विशेषता यह थी:-

1) /* और */ चिह्न

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

anoopverma
12-02-2011, 04:39 PM
आप पूछ सकते हैं, कि तब इन संदेशों का उपयोग क्या है। बात यह है कि सी के बड़े-बड़े प्रोग्राम बहुत जटिल होते हैं और उन्हें एक नजर में समझना मुश्किल होता है। ऐसे में प्रोग्राम पढ़ने वालों की सुविधा के लिए प्रोग्राम-लेखक प्रोग्राम के अधिक जटिल हिस्सों को समझाने वाली टिप्पणियां प्रोग्राम में उपयुक्त स्थानों में जोड़ देते हैं।

anoopverma
12-02-2011, 04:41 PM
इन्हें /* और */ चिह्नों के बीच रखने से एक साथ दो काम हो जाते हैं। प्रथम, संकलक इन टिप्पणियों को लांघ जाता है, इसलिए इन टिप्पणियों का प्रोग्राम पर कोई प्रभाव नहीं पड़ता, पर प्रोग्राम पढ़ने वाले को प्रोग्राम को समझने में मदद मिलती है। दूसरा फायदा यह है कि इन दुहरे चिह्नों द्वारा घिरे रहने के कारण प्रोग्राम के टिप्पणी वाले अंश पढ़ने वाले की नजर में एकदम आ जाते हैं, और वह उन्हें प्रोग्राम का ही एक अंश समझने की गलती नहीं करता।

anoopverma
12-02-2011, 04:44 PM
ध्यान में रखने की बात यह है कि ये दुहरे चिह्न हैं, यानी इनमें से केवल एक का प्रयोग नहीं हो सकता। केवल एक के प्रयोग को संकलक गलती के रूप में लेगा और प्रोग्राम के संकलन को रोक देगा। इन दुहरे चिह्नों के बीच लिखी गई टिप्पणि अनेक पंक्तियों की होसकती है। आवश्यकता केवल इस बात की है कि टिप्पणी के आरंभ में /* चिह्न रहे और उसके अंत में */ चिह्न।

anoopverma
12-02-2011, 04:46 PM
टिप्पणी देने के अलावा इन चिह्नों का एक अन्य उपयोग भी है। जैसा कि हमने ऊपर स्पष्ट किया, संकलक इन दोनों चिह्नों के बीच में जो भी लिखा होता है, उसे नजरंदाज कर देता है। यह विशेषता प्रोग्राम की पंक्तियों में रह गई त्रुटियों को ढूंढ़ने और उन्हें सुधारने में बहुत उपयोगी है। संदिग्ध पंक्तियों को इन चिह्नों से घेरकर प्रोग्राम का संकलन करके देखा जा सकता है। यदि संकलन हो जाता है, तो त्रुटि इन चिह्नों के भीतर की पंक्तियों में ही है। इस तरह लंबे और जटिल प्रोग्रामों में त्रुटि वाले अंशों का आसानी से पता लगाया जा सकता है।

anoopverma
12-02-2011, 04:49 PM
सी प्रोग्राम की विशेषता - २, ३
---------------------------------
# include < stdio.h >

यह सी प्रोग्राम की दूसरी विशेषता है।

यह उक्ति पूर्वसंकलक (प्रीकंपाइलर) के लिए है। किसी भी सी प्रोग्राम को संकलित करने से पहले एक पूर्वसंकलक उस प्रोग्राम को जांचता है, और उसमें कुछ कोड पंक्तियां जोड़ता है।

anoopverma
12-02-2011, 04:49 PM
लगभग सभी सी प्रोग्रामों की कुछ आम आवश्यकताएं होती हैं, जैसे कंप्यूटर की स्मृति में विद्यमान सामग्री को स्क्रीन पर लाना (आउटपुट), प्रयोक्ता द्वारा दी गई सूचनाओं को अथवा प्रोग्राम द्वारा निर्मित सूचनाओं को स्मृति में सहेजना (इनपुट) । इसके अलावा कुछ ऐसे प्रकार्य (फंक्शन) भी हैं, जिनकी बार-बार आवश्यकता पड़ती है, जैसे, फाइलों में लिखना, उन्हें पढ़ना, उनमें कुछ जोड़ना, उन्हें खोलना, बंद करना या डिलीट करना, नई फाइल बनाना आदि, अथवा गणित से जुड़े कुछ प्रकार्य, जैसे, किसी संख्या का वर्गमूल निकालना, किसी कोण का साइन, को-साइन आदि का पता लगाना, इत्यादि। इस तरह के अन्य सामान्य प्रकार्य भी हैं। इन सबके लिए हर बार नए सिरे से कोड लिखने की आवश्यकता को कम करने के लिए सी के पूर्व-संकलक (Precompiler) में इनसे संबंधित कोड पहले से ही विद्यमान रहते हैं। इन्हें अलग-अलग लाइब्रेरियों में व्यवस्थित किया गया है और उन लाइब्रेरियों में विद्यमान फंक्शनों के प्रोटोटाइपों (यह क्या है नीचे समझाया गया है) की अलग सूची भी बनाई गई हैं, जिन्हें हेडर-फाइलें कहा जाता है। stdio.h ऐसा ही एक हेडर फाइल का नाम है।

anoopverma
12-02-2011, 04:55 PM
stdio एक संक्षेपण है और उसका पूरा रूप है standard input and output. इस हेडर फाइल में ऐसे प्रकार्यों (फंक्शनों) के प्रोटोटाइप हैं, जो इनपुट और आटपुट को सुगम बनाते हैं। प्रोग्राम 1 में जो printf() फंक्शन का प्रयोग किया गया है, वह इसी हेडर का एक फंक्शन है। इस फंक्शन का पूरा संकलित कोड पूर्वसंकलक में पहले से मौजूद है। इसलिए हमें इनपुट या आटपुट के कोड स्वयं लिखने की आवश्यकता नहीं है। हमें केवल उस फंक्शन का नाम भर अपने प्रोग्राम में लेना है और उससे संबंधित सी लाइब्रेरी के हेडर फाइल का उल्लेख # include उक्ति में कर देना है। बाकी काम पूर्वसंकलक कर देता है।

anoopverma
12-02-2011, 04:55 PM
आप ध्यान दें कि stdio के आगे .h है। यह बताता है कि यह एक हेडर फाइल है। हेडर फाइल में सी में पहले से ही मौजूद फंकश्नों के नामों की सूची रहती है। यदि आप stdio.h फाइल को खोलकर देखें, तो उसमें आपको बीसियों फंक्शनों के नाम दिखाई देंगे, इनमें आपको printf() भी मिलेगा।

anoopverma
12-02-2011, 04:57 PM
stdio.h में आपको printf() का कोड नहीं मिलेगा, वह संकलित रूप में अलग-अलग सी लाइब्रेरियों में रहता है। हेडर फाइलों में केवल फंक्शन के प्रोटोटाइप (अर्थात एक विशेष शैली में लिखा हुआ फंक्शन का नाम, घबराइए नहीं, फंक्शन प्रोटोटाइप क्या बला होते हैं, इसकी चर्चा नीचे दी गई है) होते हैं। इन फंक्शन प्रोटोटाइपों को देखकर पूर्वसंकलक आपके प्रोग्राम के संकलन के पहले उस फंक्शन से संबंधित कोड को आपके प्रोग्राम में ठीक स्थान पर लगा देता है, और उसके बाद आपके प्रोग्राम का संकलन होता है और .obj और .exe फाइलें बनती हैं।

anoopverma
12-02-2011, 04:58 PM
लाईब्रेरी रखने की यह सोच हीं सी भाषा को इतना स्मृद्ध बनाती है। मूल भाषा में शब्द तो कम हैं पर सी की लाईब्रेरी बहुत बड़ी है, और हमें जब जैसा काम करना होता है, हम वैसी हीं लाईब्रेरी को #include के द्वारा अपने प्रोग्राम का हिस्सा बना लेते हैं। जैसे, अगर हमें गणित संबंधी काम करना हो, तो math.h का प्रयोग करते हैं, अगर ग्राफिक्स का काम करना हो, तो graphics.h का। सी की लाईब्रेरी विशाल है और इस विशाल लाईब्रेरी का प्रयोग करके हम भी नई लाईब्रेरी बना सकते हैं (जब हमें सी में कुछ हद तक महारत हासिल हो जाए तब)। इस प्रकार सी का जानकार, लगातार सी भाषा को नई लाईब्रेरी के साथ और ज्यादा समृद्ध बनाता रहता है। सी का संकलक बनाने वाली कंपनियाँ भी यही करती रहती हैं। इससे मूल सी भाषा में बदलाव नहीं होता और भाषा ज्यादा उपयोगी और समृद्ध बन जाती है

anoopverma
12-02-2011, 05:00 PM
एक चीज और ध्यान देने की है, वह है stdio.h को घेरे हुए कोणीय कोष्ठक (अर्थात < और > )। ये महत्वपूर्ण हैं। इनसे पूर्व-संकलक को पता चलता है कि stdio.h फाइल के लिए उसे वहां खोजना है, जहां संकलक ने सभी सी लाइब्रेरियों और उनके हेडर-फाइलों को संचित किया है। आप stdio.h को दुहरे उद्धरण चिह्नों से भी घेर सकते हैं, ऐसे

#include "stdio.h"

ऐसा करने से पूर्व संकलक stdio.h फाइल के लिए पहले उस निर्देशिका (डाइरेक्ट्ररी) में ढूंढ़ता है जिसमें आपका प्रोग्राम संचित है। यदि उसे वह वहां न मिले, तो पूर्व-संकलक stdio.h फाइल के लिए अन्य निर्देशिकाओं में खोज करता है। कई बार प्रोग्रामरों को अपने लिखे हुए कुछ फलनों (फंक्शनों) का बार-बार भिन्न-भिन्न प्रोग्रामों में उपयोग करना पड़ता है। सुविधा के लिए वे इन सब फलनों को एक हेडर-फाइल में संचित करके उसे कोई नाम दे देते हैं, जैसे jaihindi.h। अब वे अपने प्रोग्रामों में

#include "jaihindi.h"

वाला पूर्व-संकलक निर्देश जोड़ कर इन फंक्शनों को सीधे आह्वान कर सकते हैं, और उनका कोड उन्हें दुबारा लिखना नहीं पड़ता।

anoopverma
12-02-2011, 05:05 PM
इस तरह के हेडर फाइलों को प्रयोक्ता-परिभाषित हेडर फाइल (User-defined header file) कहा जाता है, और ये पूर्व-संकलक में पहले से ही विद्यमान हेडर फाइलों से भिन्न होते हैं। हेडर फाइलों को उद्धरण चिह्नों ( " और " ) अथवा कोणीय कोष्ठकों ( < और > ) से घेर कर हम पूर्व संकलक को बताते हैं कि यह प्रयोक्ता द्वारा लिखा गया हेडर फाइल हैं या सी का अपना कोई हेडर फाइल, और उसे पूर्व संकलक को कहां ढूंढ़ना है, उस निर्देशिका में जिसमें वह प्रोग्राम संचितहै जिसमें यह निर्देश आया है, अथवा उस निर्देशिका में जिसमें सी की सभी हेडर फाइलें संचित हैं। आम तौर पर सी की मूल हेडर फ़ाईल अलग निर्देशिका में होती है और उन्हें हम < > से घेरते हैं, जबकि प्रयोक्त्ता-परिभाषित हेडर फ़ाईल वहाँ रखी जाती है जहाँ प्रोग्राम होता है और इसे " " से घेरा जाता है।

anoopverma
12-02-2011, 05:08 PM
#include वाले पूर्वसंकलक उक्ति के बारे में कुछ और महत्वपूर्ण बातें।

1. इसे अलग पंक्ति में लिखना जरूरी है और # वाला चिह्न पंक्ति के प्रथम स्थान पर आना चाहिए।
अर्थात, इसे यों लिखना गलता होगा:-

abcddx #include ......

2. सी की उक्तियों के अंत में ; (अर्ध विराम चिह्न) रहता है, लेकिन पूर्वसंकलक से संबंधित उक्तियों के अंत में अर्ध विराम चिह्न ; नहीं रहता है। इसलिए यों लिखना गलत है:-

#include "stdio.h";

anoopverma
12-02-2011, 05:13 PM
 
दोस्तों, अब तक मैंने जितना संभव हुआ लिखा। अब आप किसी सी कंपाईलर/संकलक को कौसे प्रयोग करते हैं किसी जानकार से सीख लें।

मैं आज शनिवार (१२/२/२०११) से ले कर बुधवार (१६/०२/२०११) तक एक जरूरी काम से शहर से बाहर जा रहा हूँ। इसलिए अब अगला पोस्ट मैं बुधवार की रात या गुरूवार को दुँगा। आशा है, आप मुझे क्षमा करेंगे, और इस छुट्टी पर जाने की अनुमति भी देंगे।

शुभ रात्रि...शुभ विदा।

yesh_cool
12-02-2011, 07:34 PM
आप बहुत ही उपयोगी सूत्र बनाया हे में सच में ऐसे सूत्र का इंतज़ार कर रहा था आप का बहुत बहुत धन्यवाद

srtjoon
12-02-2011, 10:24 PM
अति उत्तम सुत्र है। बहुपयोगी...आपके अपडेट का इंतजार है।

jaysingh
13-02-2011, 12:47 AM
I M waiting

sanjeetspice
14-02-2011, 08:27 PM
happy valentine day all of my dear friend

anoopverma
16-02-2011, 04:50 PM
happy valentine day all of my dear friend

Thankyour dear, thanx a lot.

anoopverma
16-02-2011, 04:54 PM
और अब सी की कुछ प्रमुख हेडर फाइलों की चर्चा हो जाए, जिनका आप बार-बार उपयोग करेंगे।

math.h
इसमें वर्गमूल निकालने, किसी संख्या का घात निकालने, किसी कोण का साइन (sin), को-साइन (cos), टेंजेंट (tan), कोटेंजेंट (cot) आदि निकालने, इत्यादि के फंक्शनों के प्रोटो-टाइप रहते हैं।

conio.h
यह भी stdio.h के समान है और इसमें भी इनपुट-आउटपुट को बेहतर रूप देने से संबंधित फंक्शनों के प्रोटोटाइप रहते हैं। इस हेडर के फंक्शनों का उपयोग मूल रूप से सजावटी है, और यह ANSI/ISO Standard में शामिल नहीं है। टर्बो सी की दुनिया में बहुत उपयोग की जाती है।

string.h
इसमें स्मृति और स्ट्रिंग से संबंधित फंक्शनों के प्रोटाटाइप रहते हैं, उदाहरण के लिए, किसी दिए गए स्ट्रिंग में से कुछ वर्णों को छांट कर उपस्ट्रिंग बनाने के फंक्शन, किसी स्ट्रिंग को तोड़ कर दो स्ट्रिंगों में बांटने के फंक्शन, किसी स्ट्रिंग के वर्णों को उलटने के फंक्शन (यानी jaihindi को idnihiaj बना देना), इत्यादि फंक्शनों के प्रोटोटाइप रहते हैं।

आगे जब जरुरत होगी नए-नए हेडर फ़ाईलों की चर्चा जरुर करुँगा...

anoopverma
16-02-2011, 05:00 PM
फंक्शन और फंक्शन प्रोटोटाइप
इस लेख में फंक्शन प्रोटो-टाइप बार-बार आया है, और आप सोच रहे होंगे ये क्या होते हैं। तो आपको संक्षिप्त में बता देते हैं। जब आप किसी फंक्शन का उपयोग करते हैं, तो वह कुछ डेटा टाइपों पर कार्य करता है, उन पर गणना करता है, या उन्हें अन्य रीति से बदलता है, और फिर बदली हुई चीज को उसे बुलाने वाले फंक्शन को लौटा देता है। यह सब कंप्यूटर की स्मृति का उपयोग कर के किया जाता है। इसलिए किसी भी फंक्शन का उपयोग करने से पहले संकलक को उसके लिए पर्याप्त स्मृति आवंटित करना होता है। अब संकलक को कैसे पता चले कि किसी फंक्शन को कितनी स्मृति चाहिए होगी। यहीं फंक्शन प्रोटो-टाइप का महत्व है। संकलक फंक्शन प्रोटो-टाइप को देख कर समझ जाता है कि यह फंक्शन किस तरह के डेटा टाइपों पर कार्य करता है और किस डेटाटाइप को अपने परिणाम के रूप में लौटाने वाला है, और इस जानकारी के आधार पर वह फंक्शन के लिए स्मृति आवंटित करता है।

anoopverma
16-02-2011, 05:07 PM
फंक्शन, डेटा टाइप आदि पर आगे चर्चा होगी, और इन्हें पूरी तरह समझे बिना आप ठीक से समझ भी नहीं पाएंगे कि प्रोटो टाइप क्या हैं। मैंने सिर्फ आप की जिज्ञासा शांत करने के लिए यहां थोड़ा सा संकेत भर कर दिया है।

anoopverma
16-02-2011, 05:17 PM
सी के फंक्शन क्या होते हैं, इसे आम जीवन के एक उदाहरण से स्पष्ट करने की कोशिश करता हूं।

मान लीजिए आप गेहूं ले कर चक्की में पिसाने जाते हैं, और पिसा हुआ आटा ले कर घर लौट आते हैं। इस उदाहरण में चक्की फंक्शन है, गेहूं, उसे दिया गया डेटा-टाइप है, आटा उस फंक्शन, यानी चक्की, द्वारा लौटाया गया डेटा टाइप है, और आप चक्की फंक्शन का आह्वान करने वाला फंक्शन है (जी हां, फंक्शनों को दूसरे फंक्शन ही आह्वान करते हैं। सी में तो आवर्ती (रिकरिंग) फंक्शन भी हैं, जो स्वयं का आह्वान करते हैं, पर ये सब आगे सीखेंगे।) । यानी चक्की फंक्शन गेहूं डेटा-टाइप पर कुछ क्रियाएं करके उसे आटा डेटा-टाइप में बदल कर आपको दे देता है।

sanjeetspice
17-02-2011, 01:24 AM
dost jari rakhe

yesh_cool
17-02-2011, 10:20 AM
बहुत अच्छा दोस्त जरी रखो थैंक्स

jaihind20
17-02-2011, 10:29 AM
YES DUDE WE R WAITING UR THREAD.

srtjoon
17-02-2011, 05:56 PM
बहुत अच्छी तरह से समझाया है आपने। आगे भी ऐसे हीं समझा कर बताएँ। धन्यवाद।

anoopverma
19-02-2011, 07:21 PM
दोस्तों मेरे नेट कनेक्शन में कुछ प्रोबलम था सो थोड़ा देर हो गया

anoopverma
19-02-2011, 07:22 PM
अब आपको एक फंक्शन प्रोटो-टाइप का हुलिया भी दिखा दूं। वह ऐसा दिखेगा:-

int calculate (char);

यह calculate नामक किसी फंक्शन का प्रोटो-टाइप है। इसमें जो पहले int आया है, वह ऊपर के उदाहरण के आटे के बराबर है, गोल कोष्ठकों में जो char आया है, वह गेहूं के बराबर है। और ध्यान दीजिए, उसके अंत में ; (अर्धविरामहै) जो सी की हर उक्ति के अंत में होता है।

anoopverma
19-02-2011, 07:24 PM
लेख बहुत लंबा हो गया है। यदि इसकी बहुत सी बातें समझ में न आए तो घबराइए मत। आगे सब साफ हो जाएगा, बस अंत तक साथ बने रहिए।

anoopverma
19-02-2011, 07:25 PM
सी प्रोग्राम की विशेषता - ४
-------------------------------
void main ()

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

anoopverma
19-02-2011, 07:26 PM
सी के प्रोग्राम लिखते समय भी प्रोग्रामर इस नीति का अनुसरण करता है। वह जिस समस्या के लिए प्रोग्राम लिख रहा हो, उसे अनेक छोटी समस्याओं में बांट देता है और प्रत्येक छोटी समस्या के लिए अलग-अलग प्रोग्राम लिख देता है, और बाद में इन सबको जोड़ कर एक बड़ा प्रोग्राम बनाता है, जो मूल समस्या का निराकरण पेश करता है।

anoopverma
19-02-2011, 07:28 PM
इन छोटे प्रोग्रामों को सी में फंक्शन कहा जाता है। प्रत्येक फंक्शन की कुछ विशेषताएं होती हैं, जो ये हैं –
1. प्रत्येक फंक्शन का एक अद्वितीय नाम होता है।
2. प्रत्येक फंक्शन उसे बुलाने वाले फंक्शन को कोई न कोई डेटा प्रकार लौटाता है।
3. प्रत्येक फंक्शन कोई न कोई डेटा प्रकार स्वीकारता है।

Functions are actually sub-programs, with their own variables and executable statements.
The data which is required to perform the tast is given within braces i.e. ( ) and the the type of data which it will return, is written as the first word during function declaration or function proto-typing.

anoopverma
19-02-2011, 07:32 PM
फंक्शनों के संबंध में एक और बात जानने की है। वह यह कि प्रत्येक फंक्शन को दूसरा कोई फंक्शन आह्वान करता है।


इसे इस तरह से समझिए। मान लीजिए आप मकान बनवा रहे हैं। उसके लिए आपको बढ़ई, मिस्त्री, लुहार, इलेक्ट्रीशियन, नलसाज, आदि की जरूरत है। ये सब फंक्शन हुए। आप भी एक फंक्शन हैं, जिसका कार्य है मकान बनवाना। पर आपकी हैसियत कुछ खास है। यदि आप न हों, तो मकान बनवाने का काम होगा ही नहीं, क्योंकि आप ही बढ़ई, मिस्त्री, नलसाज आदि को इकट्ठा कर के उन्हें काम सौंपते हैं।

anoopverma
19-02-2011, 07:34 PM
इसी तरह हर सी प्रोग्राम में भी एक खास फंक्शन होता है, जिसे main ( ) कहा जाता है। हर प्रोग्राम में इस main ( ) फंक्शन का होना अनिवार्य है। संकलक किसी प्रोग्राम का संकलन शुरू करने से पहले यही देखता है कि main ( ) कहां है? यदि प्रोग्राम में main ( ) फंक्शन न हो, तो संकलक इसे एक गंभीर त्रुटि मान कर संकलन कार्य को रोक देता है।

anoopverma
19-02-2011, 07:37 PM
उपर के उदाहरण से अगर तुलना करें तो आप main( ) फ़ंकशन हैं, बढ़ई, मिस्त्री, नलसाज आदि सी प्रोग्राम के विभिन्न फ़ंकशन हैं और आप यानि main ( ) सब फ़ंकशन में खास है। घर बनाना ही वो टास्क है जिसके लिए प्रोग्राम लिखा गया है बल्कि अगर कहें तो, सी का प्रोग्राम हीं main( ) फ़ंकशन के साथ शुरु होता है और इस फ़ंकशन के खत्म होने के बाद खत्म।


तो यों समझिए कि हर प्रोग्राम में main ( ) फंक्शन का होना अनिवार्य है। हमारे प्रोग्राम 1 में भी यह फंक्शन है। चूंकि यह एक छोटा सा प्रोग्राम है, इसमें केवल main ( ) फंक्शन ही है, लेकिन वास्तविक सी प्रोग्रामों में main ( ) के अलावा भी बीसियों फंक्शन होंगे, और उन्हें main( ) या अन्य फ़ंक्शन सही तरीके से काम करने के लिए पुकारता रहेगा।

anoopverma
19-02-2011, 07:42 PM
अब देखते हैं main ( ) के पहले जो void शब्द है, वह किसलिए है। हमने पहले कहा था कि प्रत्येक फंक्शन उसे बुलाने वाले फंक्शन को कुछ न कुछ लौटाता है। कई बार यह रिक्त राशि भी हो सकती है, यानी आप यों समझ लें कि वह कुछ नहीं लौटाता। लेकिन सी की दृष्टि से यह कुछ नहीं भी, कुछ होता है! है न गूढ़ बात! खैर, इस रिक्त राशि को NULL कहते हैं, और main ( ) के पहले जो void शब्द है ( जिसका शाब्दिक अर्थ है, खाली ) यही सूचित करता है, कि main ( ) फंक्शन कुछ भी नहीं लौटाता है।

anoopverma
19-02-2011, 07:45 PM
बात भी सही है, main () ठहरा प्रोग्राम का मालिकाना फंक्शन वह क्या किसी को लौटाएगा, उसका काम है, सबसे कुछ न कुछ लेना। (इस पर मुझे अभी काफ़ी महत्वपूर्ण बात कहनी है पर अभी नहीं इसका जब समय आएगा तब इस पर विचार करेंगे कि क्या main ( ) सच में कुछ नहीं लौटाता और क्या यह सही बात है कि वह इस तरह से एक अपवाद की तरह काम करें फ़ंकशन होने के बाद भी)

anoopverma
19-02-2011, 07:52 PM
तो void का मतलब है कि यह फंक्शन कुछ लौटाता नहीं है। और यदि आप प्रोग्राम 1 को ध्यान से देखें, तो आपको विदित हो जाएगा कि वह कुछ भी नहीं लौटा रहा है किसी को। वह केवल Namaskar को कंप्यूटर स्क्रीन पर छाप देता है।

anoopverma
19-02-2011, 07:54 PM
आगे आप ऐसे फंक्शन लिखेंगे जो अनेक प्रकार के डेटा टाइपों में से कोई न कोई एक डेटा टाइप दूसरे फंक्शनों को लौटाएंगे। इन फंक्शनों के आगे इस डेटा टाइप का संकेत शब्द रहेगा।

अब void main ( ) की एक तीसरी विशेषता पर आते हैं। वह है गोल कोष्ठक ( )। आपके मन में यह सवाल जरूर उठ रहा होगा, कि यह किस लिए है और कोष्ठक के अंदर कुछ क्यों नहीं है? आपका सवाल वाजिब है, और उसका उत्तर नीचे दिया गया है।

anoopverma
19-02-2011, 07:57 PM
मैंने शुरू में कहा था कि सी प्रोग्रामों में सब कुछ फंक्शनों द्वारा कराया जाता है। अब जब फंक्शनों से कुछ कराना हो, तो उन्हें कुछ न कुछ देना भी होगा, जिस पर वे कुछ करें। चक्की वाले उदाहरण को ही लें, तो चक्की में जब तक हम गेंहूं न डालें, वह आटा पैदा कैसे करेगी। चक्की में गेहूं डालने के लिए एक कीप नुमा पात्र होता है, जिसमें हम गेंहूं डालते हैं, और चक्की गेहूं को पीस कर आटा बना कर उसके निचले भाग के नली से निकाल देती है।

anoopverma
19-02-2011, 08:01 PM
main () में, अथवा किसी भी अन्य फंक्शन में, जो गोल कोष्ठक है, वह चक्की के कीपनुमा पात्र के जैसा ही है। इसमें हम वह डेटा टाइप रखते हैं, जिस पर वह फंक्शन कोई कार्य करता है। मान लीजिए आपने ऐसा कोई फंक्शन लिखा हो, जो दो पूर्णांक संख्याओं का योग पता करता है। तो हम इस फंक्शन को ये दो संख्याएं देंगे, और वह इनका योग निकालकर हमें देगा।

anoopverma
19-02-2011, 08:02 PM
किसी भी फंक्शन को जो कुछ भी हमें देना हो, उसे हम इन गोल कोष्ठकों में रखेंगे। यहां रखने से ये संख्याएं उस फंक्शन के लिए उपलब्ध हो जाएंगी, और उन राशियों पर फंक्शन अपना काम कर सकेगा। हालांकि अभी आपने उतनी सी नहीं सीखी है कि इस तरह के फंक्शन आप लिख सकें, पर आपको उसका कोड यहां अवलोकनार्थ दे रहा हूं।

int add (int x, inty)
{
return (x+y);
}

यह छोटा सा फंक्शन है जो उसे दी गई दो पूर्णांक संख्याओं x और y का योग निकालकर देता है।

anoopverma
19-02-2011, 08:04 PM
योग निकालने के लिए उसे दो संख्याएं देने की जरूरत है। इन्हें उसके गोल कोष्टकों के अंदर रखा गया है। यह जरूरी नहीं है कि गोल कोष्ठकों में दो ही राशियां हों, वहां आप जितनी चाहे राशियां रख सकते हैं। इन सब राशियों को उस फंक्शन का प्राचर (आर्ग्युमेंट, Argument) कहा जाता है।

anoopverma
19-02-2011, 08:08 PM
प्राचर शून्य से ले कर जितने भी हो सकते हैं, लेकिन हर फंक्शन केवल एक राशि को लौटा सकता है, और उस राशि के डेटा टाइप को सूचित करने वाला शब्द उस फंक्शन के नाम के पहले लिखा जाता है। यहां दो पूर्णांकों को जोड़ने पर हमें एक पूर्णांक प्राप्त होगा, जिसके लिए int डेटा टाइप पर्याप्त है। int माने integer (पूर्णांक)।

anoopverma
19-02-2011, 08:11 PM
तो संक्षेप में यह कि हर सी प्रोग्राम में एक main( ) फंक्शन होता है। फंक्शन के पहले उसके द्वारा लौटाई गई राशि का डेटा टाइप लिखा जाता है। फंक्शन को दी जाने वाली राशियों को उसके गोल कोष्टकों में रखा जाता है। इन राशियों के साथ उनके डेटा टाइप का उल्लेख करना भी जरूरी है। इसीलिए हमारे add फंक्शन के गोल कोष्ठकों में int x और int y लिखा गया है। इससे add( ) फंक्शन को पता चलता है कि उसे जो दो राशियां x और y दी गई हैं, वे पूर्णांक किस्म की राशियां हैं।

यह जानकारी जरूरी है क्योंकि, जैसा कि हम आगे सीखेंगे, सी में राशियां कई प्रकार की हो सकती हैं।

anoopverma
19-02-2011, 08:14 PM
दोस्तों अब आगे अगले दिन....तब तक के लिए शुभ विदा।

mrgreatkhan
19-02-2011, 08:53 PM
anoop bhai lajawab sutr hai aesi sutr net par bahut mushkil se milte hain kirpya kar ke ise pura karte rahien aor isko c++ tak le jayen ham aap ke sath hain aapka hindi likhne wala programe download kar raha hon agli bar hindi main post karonga

sanjeetspice
19-02-2011, 09:22 PM
cont. i am waitinggggggggg dost

yesh_cool
21-02-2011, 10:30 AM
अनुपजी बहुत बढ़िया समजाते हे आप महेरबानी करके आप हमें कुछ बुक्स के नाम भी दे जो हम साथमे रिफर कर सके आपका धन्यावाद

anoopverma
21-02-2011, 09:46 PM
anoop bhai lajawab sutr hai aesi sutr net par bahut mushkil se milte hain kirpya kar ke ise pura karte rahien aor isko c++ tak le jayen ham aap ke sath hain aapka hindi likhne wala programe download kar raha hon agli bar hindi main post karonga


cont. i am waitinggggggggg dost


अनुपजी बहुत बढ़िया समजाते हे आप महेरबानी करके आप हमें कुछ बुक्स के नाम भी दे जो हम साथमे रिफर कर सके आपका धन्यावाद

धन्यवाद दोस्त। मैंने जितना समझा है, उतना हीं समझाना चाहता हूँ। मुझे खुद हिन्दी में कोई किताब मेरे पडःआई के समय मिला नहीं, तो मैंने सोचा कि एक कुछ ऐसा लिख हीं दिया जाए, अब जब म्झे कुछ हद तक "सी" समझ में आने लगा है।

anoopverma
21-02-2011, 09:51 PM
अनुपजी बहुत बढ़िया समजाते हे आप महेरबानी करके आप हमें कुछ बुक्स के नाम भी दे जो हम साथमे रिफर कर सके आपका धन्यावाद

पुस्तकें कई हैं, पर हिन्दी में कोई है...मुझे नहीं पता। हाँ, अगर आप अंग्रेजी में कोई किताब साथ में रखना चाहें तो सबसे आसानी से आपको "Let us C" मिल जाएगी, यशवन्त कनितकर की लिखी हुई। वैसे सी को बेहतर ढ़ग से सीखने के लिए आप "Schaum series - "Programming with C by Gottfried" या "The C Programming Language by Kernighan & Ritchie" देख सकते हैं। अंतिम पुस्तक सी के जन्मदाता की लिखी हुई है, तो आप समझ सकते हैं कि उसका स्तर क्या होगा। वैसे तीनों किताबों का नाम मैंने बिल्कुल कठिनाई के स्तर के हिसाब से क्रम में ले रहा हूँ।

anoopverma
21-02-2011, 09:56 PM
सी में धनु कोष्ठकों ({ }) का महत्व

यदि आप प्रोग्राम 1 को देखें, तो आपको उसमें धनु कोष्ठकों ( { }) का प्रयोग हुआ मिलेगा। बायां धनु कोष्ठक चिह्न ( { ) तीसरी पंक्ति में आया है, और दायां धनु कोष्ठक चिह्न ( } ) प्रोग्राम की अंतिम पंक्ति में आया है।

anoopverma
21-02-2011, 09:58 PM
सी एक स्ट्रक्चर्ड प्रोग्रामन भाषा है। वह इतनी शक्तिशाली और सुगठित प्रोग्रामन भाषा इसीलिए है, कि उसमें बहुत ही अनुशासित और व्यवस्थित ढंग से प्रोग्राम लिखे जाते हैं। कोड खंडों में रहते हैं, यानी एक प्रकार्य से जुड़ी कोड पंक्तियों को एक समुच्चय के रूप में रखा जाता है। संकलक के लिए इन कोड खंडों को पहचानना आसान बनाने के लिए कोड में उन्हें धनु कोष्ठकों से घेरा जाता है। सी में आप धनु कोष्ठकों को बार बार देखेंगे। टिप्पणी सूचक चिह्न (/* और */) के समान ये भी दुहरे चिह्न हैं,

anoopverma
21-02-2011, 10:07 PM
यानी कोड खंड के शुरू में बायां धनु कोष्ठक चिह्न रहता है, और अंत में दायां धनु कोष्ठक चिह्न। इनमें से किसी एक को छोड़ देने को संकलक बर्दाश्त नहीं करता है, और ऐसा करने पर वह बुरी तरह बौखला उठता है। इसे आप एक तरह से हमारी दुनिया के भाषा में जो पैराग्राफ़ लिखने के लिए अलग तरीका है, वैसे हीं देखिए। सी में एक पैराग्राफ़ को इन्हीं धनु-कोष्टकों से घेर कर लिखा जाता है

anoopverma
21-02-2011, 10:10 PM
हर सी प्रोग्राम भी कोड का एक सुगठित खंड होता है, भले ही उसमें कितनी ही पंक्तियां क्यों न हों, और वह कितने ही फंक्शनों का आह्वान करता हो। इस कोड खंड को धनु कोष्ठों से घेरा जाता है। यानी प्रोग्राम के शुरू में बायां धनु कोष्ठक रहेगा और प्रोग्राम के अंत में दायां धनु कोष्ठक रहेगा।

anoopverma
21-02-2011, 10:14 PM
इन दोनों धनु कोष्ठकों के भीतर कई और कोड खंड भी हो सकते हैं, और प्रत्येक कोड़ खंड को धनु कोष्ठकों से घेरना जरूरी है। इसलिए एक लंबे सी प्रोग्राम में आपको कई धनु कोष्ठक चिह्न देखने को मिलेंगे। ध्यान में रखने की बात यही है कि इन कोष्ठक चिह्नों का सही तरह से प्रयोग किया गया हो। यदि बायां धनु कोष्ठक चिह्न आया हो तो उसका जोड़ी दार दायां कोष्ठक चिह्न भी सही जगह पर डालना होगा, अन्यथा आपका प्रोग्राम ठीक तरह से काम नहीं करेगा।

anoopverma
21-02-2011, 10:18 PM
सी में वाइट स्पेस, white space ( वाइट स्पेस उन कुंजियों को कहते हैं, जो दो वर्णों के बीच रिक्त स्थान पैदा करते हैं, जैसे स्पेस-बार कुंजी, टैब कुंजी या ऐंटर कुंजी) का कोई महत्व नहीं होता है। इसलिए प्रोग्राम 1 को आप इनमें से किसी भी तरह से लिख सकते हैं:-

तरीका-1.

/*Namaskar shabd ko screen par chapnewala program*/


#include <stdio.h>
void main (){
printf("Namaskar.");
}

तरीका-2.
#include <stdio.h>

void main (){printf("Namaskar.");
}

तरीका-3.
#include <stdio.h>


void main (){printf("Namaskar.");}


सी संकलक की दृष्टि से ये सब वाजिब सी प्रोग्राम हैं, और वह इन सबको बिना शिकायत किए संकलित कर देगा।

anoopverma
21-02-2011, 10:21 PM
पर हमारी सुविधा के लिए प्रोग्राम को अधिक व्यवस्थिति ढंग से लिखना बेहतर रहेगा। नहीं तो बड़े सी प्रोग्रामों में जिनमें बीसियों पंक्तियां और दर्जनों धनु कोष्ठक हो सकते हैं, आप चक्कर में पड़ जाएंगे कि कौन सा कोड खंड कहां खत्म हो रहा है।

इसलिए सी प्रोग्रामन सिखाने वाले अधिकांश पुस्तकों में नौसिखियों को सबसे पहली सलाह यही दी जाती है कि कोड व्यवस्थित ढंग से लिखें। अधिकांश पुस्तकों में बाएं धनु कोष्ठक चिह्न को अलग पंक्ति में अथवा फंक्शन नाम के ठीक आगे, और दाएं धनु कोष्ठक चिह्न को कोड खंड के अंत में अलग पंक्ति में लिखने की सलाह दी जाती है।

anoopverma
21-02-2011, 10:34 PM
यहां इसे प्रोग्राम 1 का उदाहरण लेकर समझाया गया है।

प्रोग्राम लिखने की रीति 1
#include <stdio.h>

void main (){
printf("Namaskar.");
}

प्रोग्राम लिखने की रीति 2
#include <stdio.h>

void main ()
{
printf("Namaskar.");

}

इस तरह लिखने से धनु कोष्ठक कहां हैं यह तुरंत पता चल जाता है, और उनके बीच स्थित कोड खंड का स्वरूप भी स्पष्ट नजर आता है। इससे कोड में विद्यमान गलतियों को पकड़ना आसान हो जाता है। और यदि धनु कोष्ठक चिह्नों में से कोई एक नदारद हो, तो वह भी तुरंत पता चल जाता है।

anoopverma
21-02-2011, 10:35 PM
अपने कोड लेखन में इन दो रीतियों में से किसी एक का सदा पालन करें।

इस ट्यूटोरियल में दूसरी रीति का पालन किया गया है।

anoopverma
21-02-2011, 10:38 PM
इसके आगे अब अगली बार...आशा है आपको अभी तक का लेखन पसन्द आया है। आपको अगर "सी" से संबंधित कोई बात समझने में अगर कठिनाई है तो बेझिझक पूछें।

sanjeetspice
22-02-2011, 09:51 PM
cont............

anoopverma
24-02-2011, 02:58 PM
सी की उक्तियां
सी एक व्यवस्थित प्रोग्रामन भाषा है (स्ट्रक्चर्ड प्रोग्रामन भाषा) और यह बात उसके हर पहलू में नजर आती है। पिछले लेख में हमने समझाया था कि हर सी प्रोग्राम अनेक सुव्यवस्थित प्रोग्राम खंडों से बना होता है, जिसमें प्रत्येक कोड खंड को धनु कोष्ठकों से घेरा गया होता है।

anoopverma
24-02-2011, 03:07 PM
प्रत्येक कोड खंड भी अनेक अधिक छोटी इकाइयों से बना होता है। इन्हें स्टेटमेंट (इस ट्यूटोरियल में मैं स्टेटमेंट शब्द के लिए उक्ति या कथन शब्द का प्रयोग करूंगा) कहा जाता है। हमारे प्रोग्राम 1 में केवल एक उक्ति है, यानी यह:-

printf("Namaskar.");

इसे ध्यान से देखिए, क्या आपको इसके अंत में जो अर्ध विराम चिह्न है (";" वह नजर आया? यह अर्ध विराम बहुत महत्वपूर्ण है। वह संकलक को सूचित करता है कि उक्ति कहां खत्म हो रही है।

anoopverma
26-02-2011, 05:33 PM
हमने पिछले लेख में कहा था कि सी का संकलक वाइट स्पेसों (स्पेसबार, टैब, ऐंटर) की ओर कोई ध्यान नहीं देता है। सामान्य लेखन में हम इन वाइट स्पेसों का उपयोग करके ही शब्दों, वाक्यों, पैराओं को एक-दूसरे से अलग करते हैं। लेकिन संकलक इन वाइट स्पेसों को देख नहीं सकता। वह यह पता करने के लिए कि कोई उक्ति कहां खत्म हो रही है, अर्धविराम (";" ) को देखता है। जैसे ही उसे एक अर्ध विराम चिह्न मिल जाए, वह समझ जाता है कि उक्ति खत्म हो गई है। इस लिए हर सी उक्ति के अंत में अर्ध विराम लगाना जरूरी है।

anoopverma
26-02-2011, 05:36 PM
सी में नया प्रोग्राम लिख रहे लोगों से जो आम गलती बार-बार होती है, वह है उनसे इस अर्ध-विराम का छूट जाना। इसलिए प्रोग्राम लिख लेने के बाद उसे एक बार फिर ध्यान से देख लें कि क्या सभी सी उक्तियों के अंत में अर्ध-विराम चिह्न लगा है या नहीं?

anoopverma
26-02-2011, 05:39 PM
ध्यान रखें, पूर्व संकलक के लिए लिखी गई उक्तियों में अर्ध-विराम नहीं लगता है। पूर्व संकलक की उक्तियों को सूचित करने के लिए उनके शुरू में # यह चिह्न रहता है। इसलिए उनके आगे अर्ध-विराम लगाने की आवश्यकता नहीं है। यदि लगाएं, तो संकलक आपत्ति कर सकता है।

anoopverma
26-02-2011, 05:42 PM
इस लेख के साथ सी प्रोग्राम की हमारी चीरफाड़ पूरी हुई। आगे बढ़ने से पहले आप एक बार फिर सी प्रोग्रामों की आठ विशेषताओं को समझ लें ताकि सी के प्रोग्राम लिखते समय आपसे कोई गलती न हो।

kurbaanali
02-03-2011, 05:13 PM
Bahut hi acchi jaankari hai aapki, mein c language mein thoda week hoon par lagta hai aapke saath mein bhi is language par command kar loonga

remo rob
03-03-2011, 12:14 PM
बहुत ही बढ़िया सूत्र है दोस्त इसको गति देते रहना

धन्यवाद

anoopverma
07-03-2011, 08:51 PM
Bahut hi acchi jaankari hai aapki, mein c language mein thoda week hoon par lagta hai aapke saath mein bhi is language par command kar loonga


बहुत ही बढ़िया सूत्र है दोस्त इसको गति देते रहना

धन्यवाद


थोड़ी परेशानी में हूँ, और काम का बोझ भी है अभी मार्च महिने में....इसीलिए पोस्ट की गति धीमी हो गई है। पर आप सब विश्वास रखें, मैं इस सुत्र को आगे बढ़ाता रहुँगा।

anoopverma
07-03-2011, 08:58 PM
कंप्यूटर विभिन्न प्रकार के आंकड़ों को संचित करता है और उन्हें विभिन्न प्रकार से संसाधित करता है। यह सब करने के लिए कंप्यूटर इन आंकड़ों को अपनी स्मृति (मेमरी) में रखता है। यह स्मृति अनेक कोषों से बनी होती है। प्रत्येक कोष का अपना एक विशिष्ट पता होता है।

आंकड़ों को स्मृति में रखने और वहां से उसे पुनः प्राप्त करने की प्रक्रिया को सुगम बनाने के लिए सभी कंप्यूटर भाषाओं में इन आंकड़ों को नाम द्वारा निर्दिष्ट करने की सुविधा प्रदान की जाती है।

नाम द्वारा निर्दिष्ट ये आंकड़े दो प्रकार के होते हैं, चर राशियां (वेरिएबल्स, variables) और अचर राशियां (कॉन्सटेन्ट्स, constants)।

anoopverma
07-03-2011, 09:07 PM
चर राशियां Variables
चर राशियां उन राशियों को कहते हैं जिनका मान प्रोग्राम के निष्पादन के दौरान बदलता रहता है।

प्रोग्राम में चर राशियों में कोई मान आरोपित करने के लिए = चिह्न का इस्तेमाल होता है। सी की इस उक्ति को देखिए:

x = 10;

इसमें x एक चर राशि है, जिसमें = चिह्न 10 का मान आरोपित करता है।

इस उक्ति के बाद प्रोग्राम में जहां-जहां x आएगा, वहां-वहां कंप्यूटर उसका मान 10 मानकर चलेगा, बशर्ते कि प्रोग्राम की कोई अन्य उक्ति इसे बदल नहीं देती। (याद रहे कि x एक चर है, और इसका मान बदला जा सकता है)

anoopverma
07-03-2011, 09:13 PM
सी की यह आरोपण संबंधी उक्ति बीजगणित के x = 20 निर्देश से कुछ भिन्न होती है। बीजगणित में इस निर्देश का मतलब होता है "x 20 के बराबर है"। लेकिन सी की x=20; वाली उक्ति का मतलब होता है "x को 20 मानकर चलो"। इस अंतर को समझना जरूरी है, क्योंकि प्रोग्राम में चर राशियों का मान बदलता रहता है। उदाहरण के लिए x=15; उक्ति देकर आप कभी भी x का मान 10 से 15 कर सकते हैं। या फ़िर आप यह भी लिख सकते हैं कि x =x+2; , जो बीजगणित के सिद्धान्तों के हिसाब से गलत कहा जाएगा, पर सी में इसका मतलब हुआ कि x में पहले जो मान था उसमें २ और जोड़ कर बने मान को x में पुनः आरोपित किया गया।


In C, "=" means assignment, not equality.

anoopverma
07-03-2011, 09:21 PM
अचर राशियां Constants
सी में एक अन्य प्रकार की राशियां भी होती हैं, जिन्हें अचर राशियां कहा जाता है। इनका मान प्रोग्राम के शुरू में ही निश्चित कर दिया जाता है और वह बाद में बदल नहीं सकता। अचर राशियों को घोषित करने के लिए define पारिभाषिक शब्द का इस्तेमाल होता है। यह शब्द पूर्वसंकलक से जुड़ा है, न कि संकलक से। इसलिए इसके पहले # चिह्न लगाना भी आवश्यक है। यदि आप adhiktamman नामक एक अचर राशि घोषित करके उसे 100 का मान देना चाहें, तो आप निम्नानुसार निर्देश देंगे:

#define adhiktamman 100

उपर्युक्त उदाहरण में define पूर्वसंकलक का एक पारिभाषिक शब्द है। adhiktamman अचर राशि का नाम है, और 100 उसे दिया गया मान है। इस निर्देश के बाद प्रोग्राम में 100 की जगह आप adhiktamman का उपयोग कर सकते हैं। प्रोग्राम के संकलन के समय पूर्वसंकलक adhiktamman स्थान पर 100 रखता जाएगा।

anoopverma
07-03-2011, 09:23 PM
एक-दो बातें यहां ध्यान देने की हैं।

1. पूर्वसंकलक के निर्देशों के अंत में अर्ध-विराम चिह्न (" ;" ) नहीं लगता, जैसा कि सी की उक्तियों में लगता है।
2. अचर राशियों में मान आरोपित करते समय आरोपण चिह्न = का इस्तेमाल नहीं होता। इसलिए

#define adhiktamman = 100

ऐसा लिखना गलत है।

anoopverma
07-03-2011, 09:25 PM
एक और बात, चर राशियों को परिभाषित करते समय उसके डॆटा टाईप को भी लिखा जाता है, पर अचर राशि को जब हम ऊपर बताए गए तरीके से लिखते हैं तब हम उसके डॆटा टाईप को नहीं लिख रहे। यह बात अच्छे सी के प्रोग्रामर को कचोटती है, और इसीलिए जब सी का अंतराष्ट्रीय मानक बनाया गया तो इस कमी को दूर किया गया एक नए की-वर्ड (const) के जरिए। इस const जो कि constant का ही संक्षिप्त रूप है का प्रयोग करके अगर हम उपरोक्त define वाला काम करना चाहें तब हम इसे ऐसे लिखेंगे:
const int adhiktam = 100;

ध्यान रहे कि इस बार अर्ध-विराम ( ; ) का प्रयोग हुआ है। और याद रहें कि जब आप const के साथ चर राशि को परिभाषित कर रहे हैं तो उसी समय उसमें अपने जरुरत के हिसाब से एक सही मान उस राशि को देना आवश्यक है वर्ना फ़िर बाद में आप उसे कोई मान आरोपित नहीं कर पाएँगे।

anoopverma
07-03-2011, 09:33 PM
सी की राशियों के नामकरण के कुछ नियम हैं, जो इस प्रकार हैं:-

1. राशियों के नाम केवल एक शब्द के बने हो सकते हैं, वे दो या अधिक शब्दों के नहीं हो सकते, या यों कह लीजिए कि नामों के वर्णों (अक्षरों) के बीच रिक्त स्थान नहीं हो सकता।

उदाहरण:
x, moolya, naam, pata, taapman आदि सब मान्य नाम हैं।

adhiktam tapman, pahla naam, ausat taapman, ये सब अमान्य हैं क्योंकि ये एक से अधिक शब्दों से बने हैं।

ध्यान रहे कि सी केस-संवेदनशील भाषा है, यानी कि वह अंग्रेजी के अपर-केस (A,B,C,...) और लोअर-केस (a,b,c,...) वर्णों में फर्क करता है। इसलिए NAAM, Naam और naam, ये तीन अलग-अलग राशियां मानी जाएंगी, एक नहीं।

anoopverma
07-03-2011, 09:38 PM
2. नाम के वर्णों में मात्र 0,1,...,9, a,b,c,...z, A,B,C,...Z या रेखांकन चिह्न (_) का ही उपयोग हो सकता है।

उदाहरण:
adhiktam_taapman, con2bin, ABCefg, ये सब मान्य नाम है। ध्यान दें कि पहले नाम (adhiktam_tapman) में दो शब्दों को रेखांकन चिह्न (_) द्वारा जोड़ा गया है।

anoopverma
07-03-2011, 09:41 PM
3. राशियों के नामों में सी के कुछ आरक्षित चिह्न और विशेष वर्ण नहीं रखे जा सकते। इनमें शामिल हैं: +, -, *, /, %, #, !, (, ), :, ;, <, >, {, }, |, आदि, क्योंकि इन्हें सी भाषा में अन्य कार्यों के लिए उपयोग किया जाता है। उदाहरण के लिए प्रथम चार चिह्न अंकगणित की संक्रियाओं को सूचित करनेवाले चिह्न हैं।

उदाहरण:
adhiktam-tapman अमान्य नाम है, क्योंकि उसमें - चिह्न (घटाने का चिह्न) का उपयोग हुआ है। इस चिह्न के कारण कंप्यूटर इस नाम को दो अलग-अलग नाम मानेगा, यानी adhiktam और tapman, और tapman को adhiktam से घटाने की कोशिश करेगा।

anoopverma
07-03-2011, 09:42 PM
4. सी के आरक्षित शब्द, जैसे int, char, float, struct, return आदि को राशियों के नामों के रूप में इस्तेमाल नहीं किया जा सकता। इन आरक्षित पदों की संपूर्ण सूची यह है:-

auto break case chart const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

उदाहरण:
while, switch, case ये अमान्य नाम हैं, क्योंकि ये सब सी के आरक्षित शब्द हैं।

marwariladka
07-03-2011, 09:43 PM
C प्रोग्रम्मिंग के सम्बन्ध में कोई प्रश्न हो तो में भी इस सूत्र में अपना योगदान दे सकता हूँ.....

याद रखें C प्रोग्रम्मिंग में किसी भी variable का नाम किसी नंबर से सुरु नहीं हो सकता
उदहारण :123variable एक अमान्य variable होगा..जब की xyz zabc आदि मान्य variable हैं

anoopverma
07-03-2011, 09:44 PM
5. सी राशियों के नामों का पहला वर्ण कोई अंक नहीं हो सकता।

उदाहरण:
2inone, 3rdyear, 0value, ये सब अमान्य नाम हैं, क्योंकि इन सबका प्रथम वर्ण कोई अंक है।

राशियों का नाम देते समय उपर्युक्त बातों का ध्यान रखना अनिवार्य है। राशियों के नाम यदि उन वस्तुओं की सूचना दें जिनका वे प्रतिनिधित्व कर रहे हों, तो प्रोग्राम क्लिष्ट होने से बच सकता है।

उदाहरण के लिए, यदि कोई राशि मासिक आय को व्यक्त करती हो, तो उसे x या y नाम देने के बजाए maasicaay या maasic_aay जैसा कोई नाम देना अधिक उपयुक्त होगा क्योंकि ऐसे नामों को देखकर तुरंत स्पष्ट हो जाता है कि राशि किस चीज को व्यक्त कर रही है।

marwariladka
07-03-2011, 09:46 PM
अति उत्तम सूत्र है मित्र...reputation स्वीकार करें..

anoopverma
07-03-2011, 09:47 PM
C प्रोग्रम्मिंग के सम्बन्ध में कोई प्रश्न हो तो में भी इस सूत्र में अपना योगदान दे सकता हूँ.....

याद रखें C प्रोग्रम्मिंग में किसी भी variable का नाम किसी नंबर से सुरु नहीं हो सकता
उदहारण :123variable एक अमान्य variable होगा..जब की xyz zabc आदि मान्य variable हैं

धन्यवाद दोस्त....आपका इस सुत्र में स्वागत है। आप ने जो पोस्ट किया संयोग से वो मेरा अगला पोस्ट बनने वाला था। आशा है आप इस सुत्र पर नजर रखेंगे और अगर कोई प्रश्न हो तो आप उसका जवाब देंगे। हाँ अगर मेरे से कुछ छुट जाए तो आप जरुर अपनी जानकारी हम सब से बाँटेंगे।

anoopverma
07-03-2011, 09:49 PM
अति उत्तम सूत्र है मित्र...reputation स्वीकार करें..

आपका तहे-दिल से शुक्रिया। अब आज तो मैं रुक रहा हूँ, अब शायद कल इस सुत्र को अपडेट कर दूँ, उम्मीद है आप इस सुत्र पर नजर रखेंगे, और इस सुत्र की कमियों को दूर करके इसे और ज्यादा उपयोगी बनाएँगे।

anoopverma
07-03-2011, 09:50 PM
अति उत्तम सूत्र है मित्र...reputation स्वीकार करें..

आपका तहे-दिल से शुक्रिया। अब आज तो मैं रुक रहा हूँ, अब शायद कल इस सुत्र को अपडेट कर दूँ, उम्मीद है आप इस सुत्र पर नजर रखेंगे, और इस सुत्र की कमियों को दूर करके इसे और ज्यादा उपयोगी बनाएँगे।

marwariladka
07-03-2011, 10:23 PM
आपका तहे-दिल से शुक्रिया। अब आज तो मैं रुक रहा हूँ, अब शायद कल इस सुत्र को अपडेट कर दूँ, उम्मीद है आप इस सुत्र पर नजर रखेंगे, और इस सुत्र की कमियों को दूर करके इसे और ज्यादा उपयोगी बनाएँगे।
जरुर मित्र.....किसी भी प्रश्न का उत्तर देने के लिए यथा संभव कोशिश करूँगा...

anoopverma
16-03-2011, 08:52 PM
कंप्यूटर सभी आंकड़ों को शून्य (0) और एक (1) के क्रम में अपनी स्मृति में संचित करता है, पर हम इन 0 और 1 की कड़ियों को विभिन्न रूपों में समझते हैं , जैसे वर्ण के रूप में, अंक के रूप में, चित्र के रूप में आदि। इसलिए किसी प्रोग्राम में किसी राशि का नाम करण करते समय कंप्यूटर को यह बताना जरूरी होता है कि उस नाम से जानी जाने वाली राशि किस प्रकार की है। सी में आंकड़े मुख्यतः निम्नलिखित प्रकार के होते हैं:-

प्रकार सूचकशब्द विस्तार उदाहरण

वर्ण char 8 bits a, b, A, 1, &, %, 9, >, ?

पूर्णांक int 16 bits 4, 9, 80, 789

दीर्घपूर्णांक long 32 bits 1000000, 786589, 870987

दशमलव float 32 bits 8.5, 89.098, 12.000000

srtjoon
18-03-2011, 11:09 PM
अपडेट देखे काफ़ी समय हो गया।

anoopverma
26-03-2011, 08:45 PM
अतः किसी राशि के पूर्ण नामकरण के लिए उसके प्रकार और उसके नाम, इन दो चीजों की आवश्यकता रहती है।

उदाहरण:

char naam;
int roll_number;
float kul_ank;

यहां naam किसी राशि का नाम है, जिसका प्रकार है char (यानी वर्ण), roll_number पूर्णांक (int) प्रकार की राशि है और kul_ank दशमलव अंक (float) वाली राशि है। char, int और float सूचक शब्दों को देख कर कंप्यूटर समझ जाता है कि इन राशियों के लिए उसे अपनी स्मृति में कितनी जगह आरक्षित करनी है। वह naam के लिए 8 बिट, roll_number के लिए 16 बिट और kul_ank के लिए 32 बिट की स्मृति आरक्षित कर देगा।

anoopverma
26-03-2011, 08:53 PM
इस तरह, किसी राशि को नाम देते समय उसके प्रकार को भी स्पष्ट करना आवश्यक होता है। तभी कंप्यूटर अपनी स्मृति में उस राशि के पूर्ण रूपांकन के लिए आवश्यक स्थान आवंटित कर सकेगा। इसके बाद कंप्यूटर उस स्थान के पते को राशि के नाम के साथ जोड़ देगा। यह हो जाने पर प्रोग्राम का संकलन होते समय जहां-जहां उस राशि का नाम आएगा, वहां उस नाम के साथ जुड़े पते पर कंप्यूटर की स्मृति में जो भी आंकड़े हों वह आ जाएगा।

राशियों के लिए आंकड़ों का प्रकार चुनते समय सही प्रकार चुनने की ओर विशेष ध्यान देना चाहिए। ऐसा आंकड़ा प्रकार चुनना चाहिए जो उस राशि के तहत आनेवाले आंकड़ों के लिए पर्याप्त हो।

anoopverma
26-03-2011, 08:55 PM
उदाहरण के लिए int डेटा प्रकार में 32,000 से अधिक बड़ी संख्याएं नहीं समा सकती हैं। यदि किसी राशि का मान 32,000 से अधिक होने की संभावना हो, उसे int न घोषित करके long घोषित करना चाहिए जिसमें 32,000 से कहीं अधिक बड़ी संख्याएं समा सकती हैं।

anoopverma
26-03-2011, 08:56 PM
इसकी विपरीत स्थिति भी ध्यान देने योग्य है। यदि किसी राशि में 32,000 से कहीं कम वाले मान ही होनेवाले हों, तो इस राशि को long घोषित करने से कोई अतिरिक्त प्रयोजन नहीं सिद्ध होगा। इसके बजाए उसे int ही घोषित करना चाहिए। उदाहरण के लिए roll_number राशि को लें जिसमें आप किसी कक्षा के छात्रों के रोल नंबर को संचित करना चाहते हैं। अब कक्षा में छात्रों की संख्या 40, 50 या अधक से अधिक 100 तक जा सकती है। इसलिए इस राशि के लिए int प्रकार पर्याप्त है। इसे long घोषित करने की कोई आवश्यकता नहीं है। long घोषित करने से भी आपका प्रोग्राम ठीक तरह से चलेगा, लेकिन वह अधिक स्मृति खपाएगा। हमने ऊपर देखा कि int के लिए कंप्यूटर में 16 बिट का स्थान उपयोग किया जाता है, जबकि long के लिए उससे दुगना, यानी 32 बिट। इसलिए यदि आप roll_number को int के बजाए long घोषित करें, तो आपके प्रोग्राम में इस राशि के लिए दुगनी स्मृति की आवश्यकता पड़ेगी। अच्छे प्रोग्राम वे माने जाते हैं जो कम से कम संसाधनों का उपयोग करके, कम से कम समय में चलें और वांछित परिणाम दें।

anoopverma
26-03-2011, 08:57 PM
इसी प्रकार वेतन, औसत अंक, आदि के लिए int या long प्रकार की राशियां ठीक नहीं रहेंगी, क्योंकि ये दशमलव प्रकार की संख्याएं होंगी। इनके लिए float प्रकार की आवश्यकता है। इन्हें int या long प्रकार घोषित करने पर इनका केवल पूर्णांक वाला अंश ही संचित होगा और दशमलव वाला अंश खो जाएगा। इससे आपका प्रोग्राम सही नतीजा नहीं दे पाएगा।

anoopverma
26-03-2011, 09:00 PM
प्रचालक (OPERATOR) उन प्रतीकों को कहते हैं जो आंकड़ों और चर राशियों में विशिष्ट प्रकार की तब्दीलियां लाते हैं। सी के प्रचालक निम्नानुसार हैं:

1. अंकगणितीय प्रचालक Arithmetical Operator
ये पांच हैं, +, -, *, / और %। इनमें से प्रथम चार जोड़ने, घटाने, गुणन करने और विभाजित करने के प्रचालक हैं। अंतिम को माड्युलस प्रचालक कहा जाता है। यह किन्हीं दो अंकों को विभाजित करने पर बची राशि को व्यक्त करता है।

उदाहरण:
10 + 3 = 13
10 - 3 = 7
10 * 3 = 30
10 / 3 = 3
10 % 3 = 1
10 को 3 से विभाजित करने पर 1 शेष रहता है। अतः, माड्युलस प्रचालक 1 का मान देता है।

anoopverma
26-03-2011, 09:03 PM
पर १०.० / ३ या १० / ३.० आपको ३.३३३.... का मान देगा क्योंकि १० एक पूर्ण संख्या है जबकि १०.० एक दशमलब संख्या। इस बात को जरा एक बार और पढ़ कर समझ लें।

anoopverma
26-03-2011, 09:04 PM
2. तार्किक प्रचालक Logical Operator
तार्किक प्रचालक तीन हैं &&, || और !।

तार्किक प्रचालकों के केवल दो मान हो सकते हैं, सही या गलत, जिन्हें 1 या 0 से निर्दिष्ट किया जाता है। इन प्रचालकों में से प्रथम && को ऐंड (और) प्रचालक कहते हैं। यह 1 का मान तब देता है जब सब संकार्यों (ओपरेन्ड्स) का मान 1 हो। यदि किसी एक संकार्य का भी मान 0 हो, तो यह प्रचालक 0 नतीजा देता है।

दूसरा प्रचालक || है, जिसे ओर (या) प्रचालक कहते है। यह 1 का मान तब देता है जब किसी भी एक या उससे अधिक संकार्यों का मान 1 हो। यह 0 मान तभी देता है जब सभी संकार्यों का मान 0 हो।

अंतिम तार्किक प्रचालक ! नोट (नहीं) प्रचालक है। यह किसी तार्किक व्यंजक (एक्सप्रेशन) पर असर करता है और उसके मान को उलट देता है। ध्यान रहे कि तार्किक व्यंजकों के केवल दो ही मान हो सकते हैं, 1 या 0। अत:, यदि किसी तार्किक व्यंजक का प्रारंभिक मान 1 हो, तो उस पर नोट प्रचालक लगाने पर व्यंजक का नया मान 0 हो जाएगा।
इन प्रचालकों के प्रभाव को नीचे की तालिका में स्पष्ट किया गया है।

anoopverma
26-03-2011, 09:05 PM
&& प्रचालक AND Operator

संकार्य 1 संकार्य 2 संकार्य 1 && संकार्य 2
0 0 0
0 1 0
1 0 0
1 1 1

anoopverma
26-03-2011, 09:09 PM
|| प्रचालक OR Operator

संकार्य 1 संकार्य 2 संकार्य 1 || संकार्य 2
0 1 1
1 0 1
0 0 0
1 1 1

anoopverma
26-03-2011, 09:10 PM
! प्रचालक NOT Operator

संकार्य 1 ! संकार्य 1
1 0
0 1

इन प्रचालकों का उपयोग if...else और while वाली उक्तियों में बहुत होता है, जिनके बारे में हम आगे के लेखों में सीखेंगे।

anoopverma
26-03-2011, 09:14 PM
3. संबंधपरक प्रचालक Relational Operator
ये निम्नलिखित हैं:


प्रचालक अर्थ
= = के बराबर है
!= के बराबर नहीं है
<= से छोटा है या बराबर है
< से छोटा है
>= से बड़ा है या बराबर है
> से बड़ा है

anoopverma
26-03-2011, 09:15 PM
इन प्रचालकों के भी केवल दो मान हो सकते हैं, 1 या 0।

उदाहरण:

व्यंजन मान टिप्पणी
4 == 8, 0 यह व्यंजक गलत है, क्योंकि 4 8 के बराबर नहीं है
4 != 8, 1 यह सही है, क्योंकि 4 8 के बराबर नहीं है
4 <= 8, 1 यह सही है, क्योंकि 4 8 से छोटा है
4 < 8, 1 यह सही है,क्योंकि 4 8 से छोटा है
4 >= 8, 0 यह गलत है, क्योंकि4 8 से बड़ा नहीं है
4 > 8, 0 यह गलत है, क्योंकि 4 8 से बड़ा नहीं है

anoopverma
26-03-2011, 09:18 PM
4. = प्रचालक Assignment Operator
यह आरोपण प्रचालक है और आप इससे मिल चुके हैं। यह इसके बाईं ओर की चर राशि में इसके दाहिनी ओर की राशि का मान आरोपित करता है।

उदाहरण:
x =10;
x= y+z;
x=y=z=8;

अंतिम उदाहरण में आरोपण की प्रक्रिया दाहिनी ओर से बाईं ओर क्रमवार संपन्न होती है, यानी पहले z में 8 का मान आता है, फिर y में z का मान (जो अब 8 है), और अंत में x में y का मान। इस प्रकार तीनों का मान 8 हो जाता है।

anoopverma
26-03-2011, 09:19 PM
ध्यान दीजिए कि == प्रचालक और = प्रचालक में जमीन आसमान का अंतर है। == एक संबंधसूचक प्रचालक है जो केवल यह बताता है कि उसके दोनों ओर के संकार्य बराबर हैं या नहीं। यदि वे बराबर हैं, तो वह 1 का मान देता है, अन्यथा 0 का। इसके विपरीत = प्रचालक आरोपण प्रचालक है जो उसके दाहिनी ओर के मान को बाईं ओर की चर राशि में आरोपित करता है।

hip hopper
26-05-2011, 06:27 PM
गजब वर्मा जी ये बहुत ही अच्छा सूत्र है कृपया इसे बीच मे मत छोड़ना बहुत ही मजा आ रहा है c को सीखने में, आपका बहुत बहुत धन्यबाद

chatur . ramlingam
26-05-2011, 07:16 PM
bahut bahut धन्यवाद कृपया इसे पूरा जरुर करना आप और हो सके तो इसके बाद सी प्लस प्लस इ जानकारी भी इसी सूत्र में डालियेगा

Keshav Singh
26-05-2011, 10:07 PM
मित्र आपका ये सूत्र तो बहुत ही ज्ञानवर्धक है ... मित्र कृपया आप सूत्र की निरंतरता को बनाये रखियेगा ... जिससे की हम जैसो का जिन्हें C भाषा का ज्ञान नहीं है ज्ञान प्राप्त हो जायेगा ... वो भी इतनी सरल भाषा में ....

loverboymonty
27-05-2011, 10:01 AM
sir ji bahut acha suter hai app ka dhanyavad hame jankari dene ke liye repo ++ savikar kare

Keshav Singh
30-05-2011, 09:50 AM
अध्यापक महोदय कहा है आप ?

विद्यार्थी गण आपकी राह देख रहे है .......

sallu
31-05-2011, 03:28 PM
mai bhi interzar mai hoo

anoopverma
27-06-2011, 07:49 PM
माफ़ी चाहता हूँ दोस्तों, कुछ काम से व्यस्त हो गया था और इस सुत्र को बढ़ा न सका। पिछले दिनों एक प्रोजेक्ट हीं ऐसा आ गया था। आशा है कि अब इस सुत्र को मैं गति देने में कामयाब हो जाऊँगा।

anoopverma
27-06-2011, 07:52 PM
इस बार श्री गणेश का नाम ले कर शुरु करता हूँ।
॥श्री गणेशाय नमः॥

anoopverma
27-06-2011, 07:53 PM
5. & प्रचालक (Address of operator)
इससे भी आप scanf() के प्रसंग में मिल चुके हैं। यह ऐड्रेस प्रचालक है, यानी पता बतानेवाला प्राचालक। इसे लगाकर हम किसी चर राशि से जुड़े स्मृति कोषों का पता जान सकते हैं।

ध्यान में रखें, तार्किक ऐंड प्रचालक (&&) और राशियों का पता बतानेवाला प्रचालक (&) पूर्णतः भिन्न हैं।

anoopverma
27-06-2011, 07:55 PM
6. ++ और -- प्रचालक (Increment and Decrement operator)
इन्हें क्रमश: इंक्रिमेंट प्रचालक और डिक्रिमेंट प्रचालक कहा जाता है। इंक्रिमेंट प्रचालक किसी चर राशि के मान को 1 से बढ़ा देता है और डिक्रिमेंट प्रचालक किसी चर राशि के मान को 1 से कम कर देता है।

उदाहरण:

सी की उक्ति टिप्पणी
x = 10; x का प्रारंभिक मान 10 है।
x++; अब x का मान एक से बढ़कर 11 हो गया है।
x--; अब x का मान एक से कम होकर दुबारा 10 हो गया है।


ये दोनों प्रचालक राशि के बाईं ओर या दाहिनी ओर लग सकते हैं। दोनों स्थितियों में इनका प्रभाव अलग-अलग होता है। जब ये राशि के दाहिनी ओर लगते हैं, तो इंक्रिमेंट या डिक्रिमेंट का काम बाद में होता है। यदि ये प्रचलाक राशि के बाईं ओर लगे, तो इंक्रिमेंट या डिक्रिमेंट का काम पहले होता है। ऐरे की चर्चा करते समय हम इस बारीकी पर अधिक प्रकाश डालेंगे।

anoopverma
27-06-2011, 07:57 PM
7. , (अल्प-विराम) प्रचालक (Comma operator)
यह अनेक व्यंजकों को जोड़कर एक उक्ति बनाने में काम आता है।

उदाहरण:
int x,y,z;

यह एक उक्ति निम्नलिखित तीन उक्तियों के बराबर है:
int x;
int y;
int z;

anoopverma
27-06-2011, 07:58 PM
जब एक ही व्यंजक में अनेक प्रचालक हों, तब कभी-कभी यह निश्चित करना कठिन हो जाता है कि उनमें से किस प्रचालक का निष्पादन पहले होता है। उदाहरण के लिए इस अंकगणितीय व्यंजक को देखिए: 10 + 5 * 2। इसका मान 30 है, या 20?

यदि हम + प्रचालक के निष्पादन को पहले माने, तो 30 है और यदि * प्रचालक का निष्पादन पहले माने, तो 20 है। किंतु कंप्यूटर को इस प्रकार की दुविधा की स्थितियां पसंद नहीं हैं। इसलिए प्रचालकों की एक वरीयता क्रम मानी गई है और कंप्यूटर इसी क्रम के अनुसार अनेक प्रचालकों वाले व्यंजकों का मूल्यांकन करता है। वह ऊंची वरीयता वाले प्रचालक का निष्पादन नीची वरीयता वाले प्रचालकों के निष्पादन के पहले करता है।

anoopverma
27-06-2011, 08:00 PM
प्रचालकों की वरीयता (Precedence of operators) निम्नानुसार है:

() सबसे अधिक वरीयता
! ++ --
* / %
+ -
< <= > >=
&&
|| सबसे कम वरीयता

उपर्युक्त क्रम को तोड़ना हो, तो संबंधित राशियों को गोल कोष्ठक में रख दीजिए। चूंकि गोल कोष्ठक की वरीयता सबसे अधिक है, इसलिए कंप्यूटर उसके अंदर जो प्रचालक हैं, उनका निष्पादन सबसे पहले करेगा, चाहे इन प्रचालकों की वरीयता अन्य प्रचालकों से कम क्यों न हो।

anoopverma
27-06-2011, 08:02 PM
मान लीजिए कि उपर्युक्त उदाहरण में आप 10 और 5 को पहले जोड़ना चाहते हैं और तत्पश्चात उनके योग को 2 से गुणन करना चाहते हैं। इसके लिए आप व्यंजक को इस प्रकार से लिखेंगे:

(10 + 5) * 2
अगर कोष्टक न हो तो कंप्यूटर पहले गुणा करेगा फ़िर जोड़, यानि उत्तर २० होगा

anoopverma
27-06-2011, 08:03 PM
प्रचालकों का वरीयता-क्रम किसी व्यंजक के दो पड़ौसी प्रचालकों पर ही (यानी कोई भी दो प्रचालक जो व्यंजक में निरंतर आते हों) लागू होता है, दूरस्थ प्रचालकों पर नहीं। आमतौर पर कंप्यूटर व्यंजकों का मूल्यांकन बाईं ओर से दाहिनी ओर करता है। वह बाईं ओर से सबसे पहले आए दो प्रचालकों की वरीयता की तुलना करता है और उनमें से जिसकी वरीयता अधिक हो, उसका निष्पादन करता है। तत्पश्चात वह बचे हुए प्रचालक की वरीयता की तुलना अगले प्रचालक से करता है और इन दोनों में से जिसकी वरीयता अधिक हो, उसका निष्पादन करता है। इत्यादि।

marwariladka
27-06-2011, 08:05 PM
भाई एक सुझाव है..कृपया जरा आसान भाषा का प्रयोग करें ताकि अधिक से अधिक लोग इस सूत्र पर आ कर अपना ज्ञान बाधा पायें..
मसलन अगर आप कोष्टक लिखोगे तो कोई नहीं समझेगा..यहाँ पर आपको brackets लिख देना चाहिए...
आगे आपकी इच्छा मित्र..
मान लीजिए कि उपर्युक्त उदाहरण में आप 10 और 5 को पहले जोड़ना चाहते हैं और तत्पश्चात उनके योग को 2 से गुणन करना चाहते हैं। इसके लिए आप व्यंजक को इस प्रकार से लिखेंगे:

(10 + 5) * 2
अगर कोष्टक न हो तो कंप्यूटर पहले गुणा करेगा फ़िर जोड़, यानि उत्तर २० होगा

anoopverma
27-06-2011, 08:09 PM
भाई एक सुझाव है..कृपया जरा आसान भाषा का प्रयोग करें ताकि अधिक से अधिक लोग इस सूत्र पर आ कर अपना ज्ञान बाधा पायें..
मसलन अगर आप कोष्टक लिखोगे तो कोई नहीं समझेगा..यहाँ पर आपको brackets लिख देना चाहिए...
आगे आपकी इच्छा मित्र..

आप सही कह रहे हैं, आगे से ध्यान रखुँगा। असल में इस सुत्र के जरिए मैं भी चाह रहा हूँ कि हिन्दी में लिखना सीख जाऊँ, अब तो नेट पर हिन्दी में बहुत पेज है। वैसे आपका सुझाब रचनात्मक है और मैं आगे से इस बात का ध्यान रखने की कोशिश करुँगा कि भाषा ज्यादा क्लिष्ट न हो।

marwariladka
27-06-2011, 08:13 PM
धन्यवाद् मित्र...आशा करता हूँ आप जल्द ही अपना ज्ञान सभी सदस्यों में बाँटेंगे...
आप सही कह रहे हैं, आगे से ध्यान रखुँगा। असल में इस सुत्र के जरिए मैं भी चाह रहा हूँ कि हिन्दी में लिखना सीख जाऊँ, अब तो नेट पर हिन्दी में बहुत पेज है। वैसे आपका सुझाब रचनात्मक है और मैं आगे से इस बात का ध्यान रखने की कोशिश करुँगा कि भाषा ज्यादा क्लिष्ट न हो।

anoopverma
27-06-2011, 08:14 PM
आइए, देखें कि कंप्यूटर निम्नलिखित व्यंजक का निष्पादन किस क्रम में करेगा:

10 + 4 - 21 * 6 / 7

कंप्यूटर इस व्यंजक का मूल्यांकन बाईं ओर से शुरू करेगा और पहले दो प्राचलकों, यानी + और - की वरीयता की तुलना करेगा। दोनों की वरीयता समान है, इसलिए वह + का निष्पादन करेगा क्योंकि वह व्यंजक में पहले आया है। इसका परिणाम होगा:

14 - 21 * 6 / 7

तत्पश्चात वह - और * की वरीयता की तुलना करेगा। * की वरीयता अधिक है। लेकिन इसका निष्पादन करने से पहले कंप्यूटर इसकी वरीयता को इसके अगले प्रचालक, यानी /, की वरीयता से करके देखेगा। इन दोनों की वरीयता समान है। इसलिए * का निष्पादन होगा:

14 - 126 / 7

अब बचते हैं - और / प्रचालक। इनमें से / प्रचालक की वरीयता अधिक है। अतः उसका निष्पादन होगा:

14 - 18

अब केवल एक प्रचालक - बचा है। इसके निष्पादन के बाद अंतिम परिणाम प्राप्त होगा, जो है:

-4

anoopverma
27-06-2011, 08:16 PM
इस अध्याय में हमने सी के बहुत से प्रचालकों का परिचय प्राप्त किया। संभव है इतने सारे प्रचालकों को एक साथ देखकर आपका मन चकरा रहा हो। घबराइए नहीं, अगले लेखों में जैसे-जैसे हम इन प्रचालकों का उपयोग करने लगेंगे, वैसे-वैसे उनकी विशेषताएं भी आपको स्पष्ट होती जाएंगी। फिलहाल आप बस यह याद रखें कि सी में इन सब प्रचालकों का अस्तित्व है।

सी++ में तो कई सारे और भी मिल जाएँगे ;-)

anoopverma
27-06-2011, 08:18 PM
आज के लिए बस इतना हीं....इतने दिनों बाद पुनः इसे शुरु कर रहा हूँ, उम्मीद है आपको जो तकलीफ़ परेशानी हुई उसके लिए आप मुझे माफ़ करेंगे।

Black Pearl
27-06-2011, 09:20 PM
आज के लिए बस इतना हीं....इतने दिनों बाद पुनः इसे शुरु कर रहा हूँ, उम्मीद है आपको जो तकलीफ़ परेशानी हुई उसके लिए आप मुझे माफ़ करेंगे।

अरे यार कम से कम सुरू तो कर रहे हो वही बहुत है, मैंने आज से ही इसे सीखनेका प्रोग्राम बनाया था और आपका सूत्र नजर आ गया। ++

sanjchou
28-06-2011, 02:29 PM
सुत्र पुनः शुरु करने के लिए बधाई, हम ओ समझ रहे थे कि इस सुत्र का भी वही हुआ जो अन्य कई बेहतरीन सुत्रों का होता आया है। अब जल्दी-जल्दी और नियमित रूप से इसे आगे बढ़ाएँ, धन्यवाद।

anoopverma
29-06-2011, 01:12 PM
आप प्रोग्राम 1 में printf() फलन (फंक्शन) से मिल चुके हैं। यह सी भाषा का एक अत्यंत उपयोगी फलनक है। यह फलनक stdio.h संग्रह में रहता है। इस लेख में हम इसके बारे में विस्तृत जानकारी प्राप्त करेंगे।
इसका पूरा नाम है प्रिंट फोर्मैट। इसका मुख्य काम है कंप्यूटर की स्मृति में संचित आंकड़ों को कंप्यूटर के स्क्रीन पर लाना। हमने पहले स्पष्ट किया था कि कंप्यूटर के स्मृति-कोषों में आंकड़े 0 और 1 के क्रम में रहते हैं और राशियों के नामकरण के दौरान char, int, float आदि सूचक शब्द जोड़कर प्रोग्राम कंप्यूटर को यह निर्देश देता है कि इन नामों से जुड़े स्मृति-कोषों में रखे आंकड़े किस प्रकार के हैं। printf() फलनक स्मृति में से आंकड़े लाकर प्रोग्राम में उन्हें जिस रूप में प्रदर्शित करने की आवश्यकता होती है, उस रूप में स्क्रीन पर प्रदर्शित करता है। इसके लिए वह अपने कोष्ठकों में दी गई सूचनाओं का उपयोग करता है। आइए एक उदाहरण से इन सब बातों को समझते हैं।

anoopverma
29-06-2011, 01:13 PM
प्रोग्राम-2

/* printf() ka udaharan */

#include <stdio.h>

void main ()
{
int namoone_ka_ank = 9;
printf("Namoone ka ank %d hai.\n", namoone_ka_ank);
}
------------------------------------

प्रोग्राम को संकलित करके चलाने पर स्क्रीन पर यह दिखता है:

आउटपुट:
Namoone ka ank 9 hai.

anoopverma
29-06-2011, 01:15 PM
इस प्रोग्राम में namoone_ka_ank एक पूर्णांक राशि का नाम है। इस नाम के पूर्व लिखा गया int शब्द हमें यह सूचना देता है। इस पूर्णांक राशि को = चिह्न की सहायता से 9 का मान दिया गया है।

printf() के कोष्ठकों में आपको तीन-चार नई बातें दिखेंगी। अब हम उन्हें स्पष्ट करते हैं।

anoopverma
29-06-2011, 01:17 PM
1. %d चिह्न
जैसा कि हमने देखा, आंकड़े char, int, long या float प्रकार के हो सकते हैं। किसी राशि को printf() द्वारा ठीक से प्रदर्शित कराने से पहले हमें printf() को यह बताना होता है कि वह जिस राशि को प्रदर्शित कर रहा है, वह किस प्रकार का है। यह सूचना उसे उसके कोष्ठकों में दुहरे उद्धरण चिह्नों के बीच %c, %d, %l, %s या %f चिह्न रखकर दी जाती है। ये चिह्न क्रमशः char, int, long, string और float को सूचित करते हैं।



प्रकार सूचक शब्द फोर्मैटिंग चिह्न
वर्ण char %c
पूर्णांक int %d
दीर्घ पूर्णांक long %l
दशमलव अंक float %f
वाक्यांश string %s


उपर्यूक्त प्रोग्राम में %d को देखकर printf() समझ जाता है कि उसे एक पूर्णांक राशि को %d के स्थान पर प्रदर्शित करना है। यह कौन-सी राशि है, इसकी सूचना printf() को उसके कोष्ठक में दुहरे उद्धरण चिह्नों के आगे लिखे गए चर राशि के नाम से पता चलता है।

anoopverma
29-06-2011, 01:21 PM
2. , चिह्न
दुहरे उद्धरण चिह्नों के आगे जो अल्प विराम (,) है, उसकी ओर विशेष ध्यान दीजिए। यह अल्प विराम महत्व रखता है। यदि आप उसे छोड़ देंगे तो संकलक प्रोग्राम का संकलन उस स्थान पर आकर रोक देगा। सी भाषा में अल्प विराम (,) किसी उक्ति के दो हिस्सों को अलगाने के लिए उपयोग किया जाता है। इस उक्ति में अल्प विराम के बाद उस राशि का नाम है, जिसे printf() को प्रदर्शित करना है।

anoopverma
29-06-2011, 01:24 PM
3. चर राशि का नाम namoone_ka_ank
हमारे प्रोग्राम में printf() वाली उक्ति में अल्प विराम के बाद namoone_ka_ank लिखा है। इसे देखकर printf() समझ जाता है कि उसे पूर्णांक के रूप में namoone_ka_ank नामक राशि को प्रदर्शित करना है। वह तुरंत कंप्यूटर की स्मृति में से उन आंकड़ों को ले आता है जो namoone_ka_ank नाम से जुड़े स्मृति कोषों में रखे हैं और इन आंकड़ों को पूर्णांक में बदलकर प्रदर्शित करता है। इसलिए हम आउटपुट वाक्य में %d के स्थान पर 9 देखते हैं, जो इस राशि का मान है।

anoopverma
29-06-2011, 01:26 PM
4. \n चिह्न
printf() के कोष्ठकों में दुहरे उद्धरण चिह्नों के अंदर जो संदेश रखा गया है, उसके अंत में \n चिह्न है। इसे न्यू-लाइन वर्ण, यानी नई पंक्ति की सूचना देनेवाला वर्ण कहते हैं। कुंजी पटल के ऐंटर या रिटर्न नामक कुंजी को दबाने पर कर्सर एक नई पंक्ति की शुरुआत करता है। \n वर्ण इस ऐंटर या रिटर्न कुंजी का प्रतीक है। यद्यपि यह दो वर्णों से बना है (\ और n), लेकिन कंप्यूटर इसे एक वर्ण के रूप में पढ़ता है। वास्तव में \, जिसे बैकश्लैश कहा जाता है, कुछ वर्णों के साथ जुड़कर कुछ विशेष वर्ण पैदा करता है। ये विशेष वर्ण कुंजी पटल की उन कुंजियों को दर्शाते हैं जो स्क्रीन पर दिखाई नहीं देते, जैसे टैब, ऐंटर या रिटर्न, बैकस्पेस आदि।

इन विशेष वर्णों की सूची नीचे दी गई है।



विशेष वर्ण अर्थ
/n नई पंक्ति
/t टैब स्पेस



हमारे प्रोग्राम में \n को देखकर printf() संदेश के अंत में एक नई पंक्ति शुरू करता है, यानी कर्सर वाक्य पूरा होने के बाद अगली पंक्ति के शुरुआती स्थान पर चला जाता है।

anoopverma
29-06-2011, 01:31 PM
printf() एक साथ अनेक राशियों को प्रदर्शित कर सकता है। आइए देखें कैसे।

-----------------------
प्रोग्राम-3

/* printf() dwara ek se adhik rashiyon ka pradarshan */

#include <stdio.h>

void main()
{
char namoone_ka_varna='a';
int namoone_ka_ank=9;
printf("Namoone ka varna %c hai aur namoone ka ank %d hai.\n",
namoone_ka_varna, namoone_ka_ank);
}
---------------------

आउटपुट:
Namoone ka varna a hai aur namoone ka ank 9 hai.

anoopverma
29-06-2011, 01:34 PM
इस बार प्रोग्राम में दो राशियां घोषित की गई हैं: namoone_ka_varna और namoone_ka_ank. पहली char (वर्ण) प्रकार की राशि है और दूसरी int (पूर्णांक) प्रकार की।

namoone_ka_varna में a का मान आरोपित किया गया है। इसके लिए राशि के नाम के आगे आरोपण चिह्न = के बाद a को इकहरे उद्धरण चिह्नों से घेरकर रखा गया है, ऐसे - 'a'।

char प्रकार की राशियों में मान रखने की यही विधि है, यानी मान को इकहरे उद्धरण चिह्नों में दर्शाना।

nammone_ka_ank में 9 का मान आरोपित किया गया है।

इस बार printf() के कोष्ठकों में प्रतिशत चिह्न (%) वाले दो विशेष वर्ण हैं, %c और %d क्योंकि हम दो राशियों को प्रदर्शित करना चाहते हैं। तदनुसार दुहरे उद्धरण चिह्नों के बाद अल्प विराम के आगे भी दो राशियों के नाम हैं। ध्यान दें कि ये दोनों नाम उसी क्रम में हैं जिस क्रम में प्रतिशत चिह्न वाले वर्ण हैं, यानी namoone_ka_varna पहले और उसके बाद namoone_ka_ank। प्रतिशत-चिह्न-युक्त चिह्नों का क्रम और चर राशियों का क्रम समान होना बिलकुल आवश्यक है।
प्रोग्राम को संकलित करके चलाने पर आपको वांचित आउटपुट प्राप्त होता है:

Namoone ka varna a hai aur namoone ka ank 9 hai.

anoopverma
29-06-2011, 01:36 PM
एक और उदाहरण लीजिए।

--------------------------
प्रोग्राम 4

/* printf() ka ek aur udaharan */

#include <stdio.h>

void main ()
{
float namoone_ka_ank = 9;
printf("Namoone ka ank %f hai.\n", namoone_ka_ank);
}
-----------------------------
आउटपुट:
Namoone ka ank 9.000000 hai.

क्या आप इस आउटपुट को देखकर चौंके? बात सीधी-सी है। ध्यान दीजिए कि हमने namoone_ka_ank को दशमलव अंक (float) घोषित किया है। सी भाषा में दशमलव अंकों में सामान्यतः दशमलव के बाद छह स्थान होते हैं। चूंकि हमने ये स्थान स्पष्ट नहीं किए हैं (हमने केवल 9 लिखा है), कंप्यूटर ने इन स्थानों को शून्य से भर दिया है।

anoopverma
29-06-2011, 01:46 PM
मुझे उम्मीद है कि इन उदाहरणों से printf( ) से आपकी कुछ दोस्ती हो गई होगी। आप एक बार और इन उदाहरणों को देख कर समझ लें। अब इसके बाद मैं printf( ) के भाई scanf( ) से आपका पतिचय कराऊँगा। पहला output लेने के लिए सबसे उपयोगी फ़ंकशन है तो दूसरा input देने के लिए सबसे उपयोगी फ़ंकशन। बिना इन दोनों का पूर्ण परिचय हुए आप कोई ढ़ंग का काम नहीं कर पाएँगे प्रोग्रामिंग की दुनिया में, क्योंकि input/output तो प्रोग्रामिंग की दुनिया का सबसे आधारभूत कार्य है।

आगे अब अगले दिन पोस्ट करुँगा।:clap:

srtjoon
29-06-2011, 10:07 PM
बहुत बढ़िया सुत्र है, आगे बढ़ाएँ:clap::clap::clap:

anoopverma
01-07-2011, 03:36 PM
पिछले अध्याय में हमने देखा कि printf() की सहायता से हम किस प्रकार कंप्यूटर की स्मृति में से आंकड़े लाकर स्क्रीन पर प्रदर्शित कर सकते हैं। कई बार इसका उल्टा भी आवश्यक होता है, यानी कुंजीपटल पर अंकित सूचनाओं को कंप्यूटर की स्म़ृति में डालना। इस काम में printf() का भाई scanf() नामक फलनक हमारी मदद करता है। scanf() भी stdio.h संग्रह का फलनक है। आइए, उससे परिचय बढ़ाते हैं। निम्नलिखित प्रोग्राम को देखिए।

anoopverma
01-07-2011, 03:38 PM
प्रोग्राम 5

/* scanf() ka udaharan */

#include <stdio.h>

void main()
{
char aapki_pasand;
printf("Aapki pasand ka koi akshar enter kijiye:\n");
scanf("%c", &aapki_pasand);
printf("Aapne %c akshar enter kiya.\n", aapki_pasand);
}
---------------------
आउटपुट
Aapki pasand ka koi akshar enter kijiye: a
Aapne a akhsar enter kiya.
---------------------

anoopverma
01-07-2011, 03:41 PM
इस प्रोग्राम में aapki_pasand नामक वर्ण राशि (char) घोषित की गई है, लेकिन उसे कोई मान नहीं दिया गया है। इसके बाद वाली उक्ति आपके लिए परिचित है, वह स्क्रीन पर Aapki pasand ka koi akshar enter kijiye: संदेश प्रदर्शित करता है। इस संदेश को प्रदर्शित करने के बाद नियंत्रण प्रचालन तंत्र, यानी डोस, को नहीं लौट जाता, जैसा कि अब तक के प्रोग्रामों में होता आया है, पर कर्सर विसर्ग चिह्न (:) के आगे रुक जाता है। यह इसलिए क्योंकि अगली उक्ति scanf() है, जो कुंजीपटल पर अंकित संकेतों को स्वीकारता है।

अब आप कुंजीपटल पर a वाली कुंजी दबाइए और उसके बाद ऐंटर कुंजी को। तुरंत ही आपको स्क्रीन पर यह वाक्य दिखाई देगा: Aapne a akshar enter kiya.

anoopverma
01-07-2011, 03:42 PM
क्या यह जादू जैसा नहीं लगता? आपके प्रोग्राम को कैसे पता चला कि आपने कौन-सा अक्षर ऐंटर किया था? दरअसल यह सब scanf() का कमाल है।

scanf() का हुलिया printf() से बहुत मिलता-जुलता है, पर कुछ-कुछ भिन्न भी है। printf() के ही समान इसमें भी गोल कोष्ठकों के बीच एक उक्ति है, जो दुहरे उद्धरण चिह्नों से घिरी है।

इस उक्ति में वही प्रतिशत-चिह्न वाला संयुक्त वर्ण %c है जो आंकड़े का प्रकार दर्शाता है (इस उदाहरण में char)। उद्धरण चिह्नों के बाद printf() के ही समान यहां भी अल्प विराम चिह्न (,) है। उसके बाद चर राशि का नाम है, पर चर राशि के नाम के पहले और अल्प विराम के बाद आप यहां एक नया चिह्न देख रहे हैं, जो है &। इसे ऐंपरसैंड कहते हैं। आइए, इसके बारे में जानें।

anoopverma
01-07-2011, 03:44 PM
कंप्यूटर ने apni_pasand नामक वर्ण राशि के लिए 8 बिट का स्थान आरक्षित करके उस स्थान के पते को apni_pasand नाम के साथ जोड़ दिया है। पर चूंकि हमने इस आरक्षित स्थान पर कोई मान नहीं रखा है, इसलिए वह जगह उपयोगी आंकड़े से भरी नहीं है। उस जगह पर a अक्षर को रखने के लिए हम scanf() का आह्वान करते हैं और उसे %c चिह्न द्वारा सूचित करते हैं कि हम कंप्यूटर की स्मृति में एक वर्ण को रखना चाहते हैं। अब scanf() के लिए यह जानना जरूरी है कि इस वर्ण राशि को कहां रखे। हम a को apni_pasand नामक चर राशि के लिए आरक्षित स्मृति-कोषों में रखना चाहते हैं। scanf() को इन कोषों का पता बताने के लिए इन कोषों से संबंधित राशि के नाम के पहले & चिह्न जोड़ा जाता है। किसी चर राशि के नाम के पहले & चिह्न जोड़ने से उस चर राशि के लिए आरक्षित स्मृति कोषों का पता प्राप्त होता है।

anoopverma
01-07-2011, 03:46 PM
इसीलिए & को एड्रेस प्रचालक, यानी पता बतानेवाला प्रचालक, कहा जाता है।

हमारे प्रोग्राम में scanf() को &apni_pasand से apni_pasand के स्मृति-कोषों का पता मिल जाता है और वह a अक्षर को इन कोषों में रख देता है।

प्रोग्राम की अगली उक्ति का परिणाम यह सिद्ध कर देता है कि scanf() ने सचमुच ऐसा किया है क्योंकि आउटपुट में हमें %c के स्थान पर a अक्षर दिखाई देता है।

anoopverma
01-07-2011, 03:48 PM
printf() के ही समान scanf() भी एक से अधिक चर राशियों को स्वीकार कर सकता है। देखिए कैसे:

-------------------------
प्रोग्राम-6

/* scanf() ek sath do rashiyon ko bhi pad sakta hai. */

#include <stdio.h>

void main()
{
char pahala_akshar;
char doosara_akshar;
printf("Apni pasand ke do akshar enter kijiye. Dono aksharon ke beech rikta sthan rakhiye: \n");
scanf("%c%c", &pahala_akshar, &doosara_akshar);
printf("Aapki pahli pasand hai %c aur doosari %c.\n", pahala_akshar,
doosara_akshar);
}
------------------------

आउटपुट:
Apni pasand ke do akshar enter kijiye. Donon aksharon ke beech rikta
sthan rakhiye: a b

Aapki pahli pasand hai a aur doosari b.

anoopverma
01-07-2011, 03:51 PM
यहां दो वर्ण राशियां घोषित की गई हैं pahala_akshar और doosara_akshar, और scanf() से इनका मान प्राप्त किया जाता है। कुंजी-पटल द्वारा इन दोनों राशियों का मान (a और b) अंकित कीजिए। दोनों अक्षरों के बीच रिक्त स्थान होना जरूरी है, इसलिए a की कुंजी दबाने के बाद रिक्त-दंड (स्पेस-बार) को दबाइए और उसके बाद b की कुंजी को। इस रिक्त स्थान को देखकर scanf() समझ जाता है कि पहली राशि का मान पूरा हो गया है और कुंजी-पटल अब अगली राशि का मान प्रेषित करेगा। रिक्त-दंड के स्थान पर आप टैब अथवा ऐंटर कुंजी भी दबा सकते हैं। इन तीनों को श्वेत-स्थान देनेवाले वर्ण (वाइट स्पेस कैरक्टर) कहा जाता है, क्योंकि ये स्क्रीन पर या कागज पर दिखाई नहीं देते। अंत में ऐंटर कुंजी दबाइए, जिससे कंप्यूटर को मालूम पड़े कि आपने दोनों अक्षरों को ऐंटर कर दिया है।

scanf() के कोष्ठकों में इस बार दो %c चिह्न हैं और तदनुसार अल्प-विराम (,) के बाद दो राशियों के नाम भी हैं। दोनों राशियों के पहले & चिह्न भी लगा हुआ है।

प्रोग्राम के आउटपुट से हमें पता चलता है कि scanf() ने दोनों राशियों को ठीक प्रकार से स्मृति में पहुंचा दिया है।

इस अध्याय के प्रोग्रामों में हमने scanf() की सहायता से वर्ण राशियों को ही पढ़ा है, लेकिन scanf() अन्य प्रकार की राशियों को भी इतनी ही कुशलता से पढ़ सकता है। केवल उसके कोष्ठकों में दुहरे उद्धरण चिह्नों के बीच %c के स्थान पर अन्य राशियों के सूचक-चिह्न, यानी %d, %l या %f रखने की आवश्यकता है।

anoopverma
01-07-2011, 04:00 PM
अंत में हम scanf() का उपयोग करते समय ध्यान में रखने की एक जरूरी बात फिर से दुहरा देते हैं। scanf() के लिए यह जानना आवश्यक होता है कि वह कुंजीपटल से प्राप्त सूचनाओं को कंप्यूटर की स्मृति में कहां रखे। यह जानकारी उसे उसके कोष्ठकों में मौजूद चर राशि के नाम के पहले & चिह्न जोड़कर दी जाती है। अपने प्रोग्रामों में scanf() का उपयोग करते समय इस & चिह्न की ओर विशेष ध्यान दीजिए, अन्यथा आपको scanf() से वांचित परिणाम नहीं प्राप्त होंगे।

anoopverma
01-07-2011, 04:05 PM
आज के बस इतना हीं, आशा है आपको अब तक का पोस्ट पसन्द आया है, कोई समस्या हो तो बताएँ।

devvrat
03-07-2011, 10:14 PM
c , c +, c ++, java, html , javastrip इत्यादि सभी प्रोग्रामिग भाषाए कंप्यूटर के युग की जरुरी भाषाए है| अगर आप इस सूत्र के माध्यम से अपने सूत्र मित्रो को यह सब सिखाने का प्रयास करेंगे तो आपके मित्रो पर यह बहुत बड़ा उपकार होगा|
हम सब आपका सादर इंतज़ार कर रहे है|:globe::bloom:

anoopverma
04-07-2011, 09:06 PM
c , c +, c ++, java, html , javastrip इत्यादि सभी प्रोग्रामिग भाषाए कंप्यूटर के युग की जरुरी भाषाए है| अगर आप इस सूत्र के माध्यम से अपने सूत्र मित्रो को यह सब सिखाने का प्रयास करेंगे तो आपके मित्रो पर यह बहुत बड़ा उपकार होगा|
हम सब आपका सादर इंतज़ार कर रहे है|:globe::bloom:

मित्र C+ नाम की कोई भाषा मेरी जानकारी में नहीं है। हाँ मुझे C, C++, जावा को कुछ हद तक समझता हूँ और मेरी कोशिश होगी कि मैं उसको सरल भाषा में आप सब को भी कुछ हद तक समझा दूँ। आप सुत्र पर आते रहिए और अगर मेरे पोस्ट में कुछ बात न समझ में आए तो बेफ़िक्र उसके बारे में मुझसे चर्चा कीजिए।

anoopverma
04-07-2011, 09:06 PM
अब आगे...............

anoopverma
04-07-2011, 09:07 PM
आपमें से जिन लोगों ने अब तक प्रिंटेफ-स्कैनेफ के इन लेखों का साथ दिया है, उन्होंने सी भाषा की काफी बातें सीख ली हैं। इतनी कि अब आप कोई छोटा-मोटा सी प्रोग्राम स्वयं लिख सकते हैं। सी ही नहीं कोई भी कंप्यूटर भाषा सीखने का एक मात्र तरीका यह है कि उस भाषा में ढेर सारे प्रोग्राम लिखे जाएं। प्रोग्राम लिखने पर आपसे गलतियां भी होंगी, पर ये गलतियां आपको बताएंगी कि प्रोग्राम लिखने का सही तरीका क्या है। इसलिए अपनी गलतियों से घबराइए नहीं, न ही उनसे निरुत्साहित हों, बल्कि गलतियों को सीखने की प्रक्रिया का एक अनिवार्य अंग मानकर उनसे लाभ उठाइए।

अब तक के लेखों में हमने कुछ 6 सरल सी प्रोग्रामों के उदाहरण दिए हैं। क्या आपने इन प्रोग्रामों के कोड को अपने कंप्यूटर पर उतारकर, इन प्रोग्रामों को संकलित करके देखा था? क्या आपको इन प्रोग्रामों के वैसे ही परिणाम मिले थे, जैसे इन लेखों में बताया गया है? यदि नहीं मिले तो सोचिए आपसे कहां गलती हो गई। इन लेखों को दुबारा पढ़ें और पता लगाएं कि आपके प्रोग्राम की गलती को कैसे सुधारा जा सकता है। इस तरह सी की वाक्य-विन्यास शैली आपके मन में ठीक प्रकार से बैठ जाएगी, और आपसे आगे गलतियां नहीं होंगी।

anoopverma
04-07-2011, 09:08 PM
यहां मैं नौसिखिए सी प्रोग्रामरों द्वारा आमतौर पर की जानेवाली कुछ गलतियों की सूची दे रहा हूं। यह आपको इन गलतियों से बचनने में मदद करेगी।

1. सी वाक्यों के अंत में ; न देना।

2. धनु कोष्ठक के दुहरे चिह्नों ({ और }) में से एक का छूट जाना।

3 गोल कोष्ठकों के दुहरे चिह्नों (( और ) ) में से एक का छूट जाना।

4. पूर्वसंकलक की उक्तियों से पहले # चिह्न न लगाना (जैसे #include <stdio.h> की जगह include <stdio.h> लिखना।

5. पूर्वसंकलक की उक्तियों के आगे ; चिह्न लगाना (जैसे #include<stdio.h>; लिखना।

6. printf() फलनक के कोष्ठकों में विद्यमान उक्ति को दुहरे उद्धरण चिह्नों (“ और “) से न घेरना।

7. printf() फलनक के कोष्ठकों की उक्ति के अंत में समापन उद्धरण चिह्न छूट जाना।

8. scanf() फलनक में राशि के नाम के पहले पता सूचक चिह्न & न लगाना।

9. किसी राशि को घोषित करते समय उसका प्रकार (int, char, long, इत्यादि) सूचक शब्द छोड़ देना।

10. राशि का नामकरण करते समय नामकरण के नियमों का उल्लंघन करना – जैसे, नाम के अक्षरों के बीच रिक्त स्थान होना, नाम के रूप में सी के आरक्षित शब्दों का उपयोग करना, नाम को किसी अंक से शुरू करना, नाम में अमान्य वर्ण (!, @, #,%,& आदि) रखना, इत्यादि।

इन गलतियों से यदि आप बचते चलें, तो आप सी के प्रोग्राम सफलतापूर्वक लिखते चले जाएंगे।

anoopverma
04-07-2011, 09:09 PM
आइए, अब हम परखें कि आपने अब तक के लेखों को कितनी अच्छी तरह से समझा है। इसका बेहतरीन तरीका होगा अब तक अर्जित ज्ञान का उपयोग करते हुए एक सी प्रोग्राम लिखना।

तो तैयार हो जाइए, सी का एक प्रोग्राम लिखने के लिए।

anoopverma
04-07-2011, 09:10 PM
आइए, अब हम परखें कि आपने अब तक के लेखों को कितनी अच्छी तरह से समझा है। इसका बेहतरीन तरीका होगा अब तक अर्जित ज्ञान का उपयोग करते हुए एक सी प्रोग्राम लिखना।

तो तैयार हो जाइए, सी का एक प्रोग्राम लिखने के लिए।

एक ऐसा प्रोग्राम लिखिए जिसमें प्रयोक्ता से उसका नाम पूछा जाएगा (इसके लिए आप printf() का उपयोग करेंगे)। और प्रयोक्ता द्वारा बताए गए नाम को एक राशि में जमा करके आप उसे एक अभिनंदन वाक्य में पिरोकर स्क्रीन पर दर्शाएंगे। इसके लिए आपको एक char प्रकार की राशि घोषित करनी होगी और प्रयोक्ता के इनपुट को पकड़ने के लिए scanf() का उपयोग करना होगा।

इस प्रोग्राम का आउटपुट कुछ-कुछ इस प्रकार का होना चाहिए:-

Kripaya apna naam batayiye: Anoop
Abhinandan, Anoop ji.

तो चलिए, जल्दी से इस तरह का एक प्रोग्राम लिख डालिए।

anoopverma
04-07-2011, 09:12 PM
मैं इसका उत्तर कल पोस्ट करुँगा, तब तक आप इसे खुद से लिखने की कोशिश कीजिए।
अगले पोस्ट में तो इस अभ्यास का उत्तर दे दिया जाएगा, लेकिन मैं चाहूंगा कि मेरे उस पोस्ट के पहले आप खुद ही यह प्रोग्राम लिखकर आगे की बात समझने के लिए तैयार हो जाएँ।

mantu007
04-07-2011, 09:23 PM
बहुत अच्छा मित्र ! आगे भी पोस्ट करते रहो ..........
अभी तुम बेसिक बतावो..अडवांस क में मैं तुम्हारी मदद करूँगा
एक छोटे से प्रोग्राम से लेकर एक प्रोजेक्ट बनाना ..........

anoopverma
06-07-2011, 09:26 PM
बहुत अच्छा मित्र ! आगे भी पोस्ट करते रहो ..........
अभी तुम बेसिक बतावो..अडवांस क में मैं तुम्हारी मदद करूँगा
एक छोटे से प्रोग्राम से लेकर एक प्रोजेक्ट बनाना ..........

आप जैसे सुधी पाठक की तरफ़ से मिलने वाला प्रोत्साहन खुशी प्रदान करता है। आशा है कि आपने अभी तक के मेरे पोस्टों को एक नजर पढ़ा होगा। आपसे सकारात्मक सहयओग की हमेशा अपेक्षा रहेगी।

anoopverma
06-07-2011, 09:27 PM
क्या आप में से किसी ने इस प्रश्न का उत्तर लिखने का प्रयास नहीं किया। खैर मैं आगे की बात बता रहा हूँ, उम्मीद है कि अगली बार जब मैं यहाँ आऊँगा तब शायद मुझे किसी का ईमानदार प्रयास यहाँ दिखेगा।
चलिए अब आगे बढ़ते हैं

anoopverma
06-07-2011, 09:29 PM
यदि आप प्रोग्राम नहीं लिख पाए, तो कोई बात नहीं। उसका कोड नीचे दिया गया है। उसे ध्यान से देखिए। इस प्रोग्राम में हमने कुछ नई विशेषताओं का समावेश किया है, जिसे हम आगे समझाएंगे।

प्रोग्राम -7
--------------------
/*Abhyas -1 */

#include <stdio.h>
#include <conio.h>

void main()
{
clrscr();

char naam[20];

printf("Kripaya apna naam batayen: ");
scanf("%s", &naam);
printf("\nAbhinandan %s ji.", naam);
getch();
}
----------------------
आउटपुट
Kripaya apna naam batayen: Anoop
Abhinandan Anoop ji.
----------------------

anoopverma
06-07-2011, 09:30 PM
इस प्रोग्राम के शुरू में पूर्वसंकलक के लिए दो उक्तियां हैं:-

#include <stdio.h>
#include <conio.h>

इनमें से पहली उक्ति से आप परिचित हैं। यह पहले के प्रोग्रामों में भी आया है। यह सी के stdio वाली लाइब्रेरी का हेडर फाइल है।

दूसरी उक्ति सी के conio लाइब्रेरी का हेडर फाइल है। इसका उपयोग हमने इसलिए किया है क्योंकि हमने इस प्रोग्राम में इस लाइब्रेरी के एक फंक्शन का उपयोग किया है। यह फंक्शन है, clrscr()।

आइए अब आपको बताते हैं कि यह फंक्शन क्या करता है। कंप्यूटर कई प्रकार के आउटपुट स्क्रीन पर दिखाता रहता है। इन्हें वह एक के बाद एक के क्रम में स्क्रीन पर दर्शाता जाता है। इससे थोड़ी ही देर में कंप्यूटर स्क्रीन पर आउटपुट की बहुत सारी पंक्तियां जमा हो जाती हैं, जिससे नए आउटपुट की पंक्तियां ठीक से नजर नहीं आतीं। clrscr() फंक्शन स्क्रीन पर जितना भी पुराना आउटपुट हो, उसे सब मिटा देता है, जिससे नए आउटपुट की पंक्तियां स्क्रीन के ऊपरी भाग में साफ दिखाई देती हैं।

इस प्रोग्राम के अंत में एक और नया फंक्शन आप देखेंगे, यह है getch()। यह भी एक काम का फंक्शन है। यह फंक्शन कुंजीपटल से कोई एक कुंजी के दबाने तक प्रोग्राम को आउटपुट विधा में रोके रखता है। इससे आप प्रोग्राम द्वारा दर्शाए गए अंतिम आउटपुट को देख पाते हैं। अन्यथा कंप्यूटर बिजली की तेजी से अंतिम आउटपुट, अर्थात "Abhinandan Balasubramaniam ji." वाली पंक्ति को प्रदर्शित करके अपने आप बंद हो जाएगा। यह इतनी तेजी से होगा कि आप देख भी नहीं पाएंगे कि कंप्यूटर ने क्या दर्शाया।

Teach Guru
06-07-2011, 09:36 PM
अच्छा तो आपने सारा माल यहाँ से चुराया है

http://printf-scanf.blogspot.com/2009/04/18-1.html

anita
06-07-2011, 09:42 PM
अच्छा तो आपने सारा माल यहाँ से चुराया है

http://printf-scanf.blogspot.com/2009/04/18-1.html

मित्र उन्होंने कही से भी उठाया हो परये उनका प्रयास सराहनिए है की वो सब लोगो की मदद कर रहे है अन्यथा यहाँ कितने लोगो आपके दुआरा दिए गए लिंक के बारे में पता था

anoopverma
06-07-2011, 09:52 PM
अच्छा तो आपने सारा माल यहाँ से चुराया है

http://printf-scanf.blogspot.com/2009/04/18-1.html


बेशक मैंने उस जगह से प्राप्त सामग्री का उपयोग किया है पर थोड़ा इंतजार कीजिए, पता चल जाएगा कि वो जहाँ खत्म हो गया है मेरा आलेख उसके बाद कहीं ज्यादा गंभीर हो जाएगा। पर उस गंभीर बात तक पहुँचने के लिए बासिक या आधारभूत जानकारी तो देनी होगी न। और जब कुछ बेसिक जानकारी मिल गई तो मैंने उस पर अपना लेखन आधारित कर दिया। और यह तो सी और सी++ की विकास की कहानी में भी शामिल है। आखिर स्ट्रौस्ट्रुप (Stroustrup) ने सी++ को भी तो रीची (Ritchie) के सी के उपर हीं बनाया था न। मेरे मौलिक लेखन के लिए आपको कुछ समय तक इन्तजार करना होगा मित्र। जो काम पहले हो चुका उसको दुबारा करने का क्या फ़ायदा, शायद इसी के लिए अंग्रेजी में कहा गया है "reinventing the wheel..." आपसे सकारातमक सहयोग की अपेक्षा रहेगी।

anoopverma
06-07-2011, 09:54 PM
मित्र उन्होंने कही से भी उठाया हो परये उनका प्रयास सराहनिए है की वो सब लोगो की मदद कर रहे है अन्यथा यहाँ कितने लोगो आपके दुआरा दिए गए लिंक के बारे में पता था

आप चिन्ता न करें अनिता, आप यहाँ आते रहिए, भाईसाहब जिस लिन्क की बात कर रहें हैं जल्द हीं हम उससे बहुत अलग और बहुत दूर हो जाएँगे

anoopverma
06-07-2011, 09:55 PM
सच तो यह है कि इन दोनों फ़ंकशन की आपको टर्बो सी++ के कंपाईलर में अक्सर जरुरत पड़ेगी, नहीं तो आपको आउटपुट देखने के लिए बार-बार Alt+F5 दबाना होगा ताकि वो स्क्रीन जिस पर आप प्रोग्राम लिख रहे थे (IDE, Integrated Development Environment का Editor) हटे ताकि आप अपना आऊटपुट देख सकें। अगर आप Linux पर प्रोग्राम लिख रहे होगें तब आपको कुछ दूसरा तरीका अपनाना होगा (मैं मान कर चल रहा हूँ कि आप Turbo C++ का प्रयोग कर रहे हैं, क्योकि यह सर्व-सुलभ है हमारे देश में)

getchar() के कारण प्रोग्राम कोई कुंजीपटल इनपुट के लिए रुका रहेगा, यानी जब तक आप कुंजीपटल की किसी कुंजी को न दबाएं, स्क्रीन दिखाई देता रहेगा, और आप प्रोग्राम के अंतिम आउटपुट को भली-भांति देख पाएंगे।

getch() फंक्शन भी stdio.h सी लाइब्रेरी का एक फंक्शन है।

anoopverma
06-07-2011, 09:59 PM
इस प्रोग्राम की अंतिम विशेषता काफी महत्वपूर्ण है, इसलिए इसे ध्यानपूर्वक समझिए। हमने प्रोग्राम के शुरू में एक char राशि घोषित की है, जिसका नाम हमने naam रखा है, पर इस पंक्ति में आप एक नई बात देखेंगे। naam को इस तरह घोषित किया गया है:-

char naam[20];

यानी naam के आगे वर्ग कोष्ठकों मे 20 लिखा हुआ है। क्या आप बता सकते हैं, कि हमने ऐसा क्यों किया?

इसका उत्तर सरल है। आपने पहले सीखा था कि char राशि के लिए कंप्यूटर मात्र 8 बिट का स्थान आरक्षित करता है। ऐसे भी याद रखिए कीबोर्ड पर का हरेक "की" १ बाईट या १ character, char को represent करता है। इन आठ बिटों में अंग्रेजी वर्णमाला का कोई एक वर्ण समा सकता है। लेकिन किसी व्यक्ति के नाम में तो अनेक वर्ण होते हैं। उदाहरण के लिए, मेरा ही नाम लीजिए, Anoop इसमें 5 वर्ण हैं। इसलिए यदि हम naam को मात्र char naam; के रूप में घोषित करें, तो उसमें केवल एक वर्ण समा पाएगा, यानी B वर्ण, और आपके प्रोग्राम के आउटपुट में भी केवल यही एक वर्ण दिखाई देगा, इस तरह:-

Abhinandan A ji.

anoopverma
06-07-2011, 10:01 PM
क्यों न आप प्रोग्राम में यह परिवर्तन करके देखें। char naam[20]; की जगह केवल char naam; रखकर प्रोग्राम को चलाकर देखिए। साथ में scanf() और दूसरे printf() उक्ति में भी %s की जगह %c करना न भूलें। क्या आपको ऊपर्युक्त आउटपुट मिला?

इसलिए, नाम में विद्यमान अन्य वर्णों को पकड़ने के लिए हमें अधिक लंबी राशि की आवश्यकता है। char naam[20]; में हमने 20 char राशियों के बराबर की स्मृति naam के लिए आरक्षित कराई है। इतनी स्मृति में Anoop क्या Balasubramaniam जैसे लंबे नाम पूरे आ जाएंगे, और हमारे प्रोग्राम के आउटपुट में नाम पूरा दिखाई देगा।

Black Pearl
06-07-2011, 10:01 PM
मित्र आज ही इसकी बुक भी download की है,आपकी शिकायत दूर करूंगा और कल से ही आपको प्रोग्राम बना के दिखाता हूँ।

conio.h और clscr से मैं परिचित नहीं था।

anoopverma
06-07-2011, 10:01 PM
इस तरह की एक से अधिक char से बनी राशि को string राशि कहा जाता है। उसका चिह्न %s होता है। क्या आपने ध्यान दिया कि इस प्रोग्राम की scanf() उक्ति में तथा दूसरी prinf() उक्ति में हमने $s चिह्न का प्रयोग किया है? उसके स्थान पर यदि हम %c का प्रयोग करते, तो प्रोग्राम सही आउटपुट नहीं देता।

char naam[20] वाली उक्ति के बारे में कुछ अन्य आवश्यक बातों का जिक्र करके हम इस लेख को समाप्त करते हैं।

Teach Guru
06-07-2011, 10:31 PM
बेशक मैंने उस जगह से प्राप्त सामग्री का उपयोग किया है पर थोड़ा इंतजार कीजिए, पता चल जाएगा कि वो जहाँ खत्म हो गया है मेरा आलेख उसके बाद कहीं ज्यादा गंभीर हो जाएगा। पर उस गंभीर बात तक पहुँचने के लिए बासिक या आधारभूत जानकारी तो देनी होगी न। और जब कुछ बेसिक जानकारी मिल गई तो मैंने उस पर अपना लेखन आधारित कर दिया। और यह तो सी और सी++ की विकास की कहानी में भी शामिल है। आखिर स्ट्रौस्ट्रुप (Stroustrup) ने सी++ को भी तो रीची (Ritchie) के सी के उपर हीं बनाया था न। मेरे मौलिक लेखन के लिए आपको कुछ समय तक इन्तजार करना होगा मित्र। जो काम पहले हो चुका उसको दुबारा करने का क्या फ़ायदा, शायद इसी के लिए अंग्रेजी में कहा गया है "reinventing the wheel..." आपसे सकारातमक सहयोग की अपेक्षा रहेगी।

मेरा मतलब आपको ठेस पहुंचाना नही था भाई | आपका प्रयास सराहनीय है लगे रहो |
Dinesh Verma

The Master
06-07-2011, 10:48 PM
मित्र आज ही इसकी बुक भी download की है,आपकी शिकायत दूर करूंगा और कल से ही आपको प्रोग्राम बना के दिखाता हूँ।

conio.h और clscr से मैं परिचित नहीं था।



तो चलो जी stdio और conio का मतलब(फ़ुल form) बताओ ?



:banana::banana::banana::banana:

The Master
06-07-2011, 10:51 PM
मित्र अनुप जी आपका पुराने फ़ोरम पर का सुत्र भी अच्छा था और ये भी है ।

आपका बहोत बहोत आभार ।


:mango::banana::cherries::mango:

Black Pearl
07-07-2011, 06:51 AM
तो चलो जी stdio और conio का मतलब(फ़ुल form) बताओ ?



:banana::banana::banana::banana:



वैसे तो नहीं आता था, खोजबीन कर के पता लगाया है कि:
conio.h = Consol Input/outpot और .h इसलिए लगाते हैं क्योंकि ये एक header फ़ाइल है।

इसी तरह से
stdio = standerd input/output

marwariladka
07-07-2011, 07:23 AM
जब conio और stdio पे बात चल ही रही है तो यह भी बता दू के यह होते क्या है?
दर असल ये दोनों header files हैं...और इन header files में आप जो function इस्तेमाल करते हो (printf और scanf जैसे) उन सभी के codes लिखे होते हैं..इन header फिल्स को include किये बिना कोई भी c प्रोग्राम नहीं चल सकता...
कमसे कम आपको stdio तो include करनी ही पड़ती है ताकि standard I /O function जैसे के printf और scanf चल सके...
conio.h आपको clrscr और getch जैसे functions इस्तेमाल करने की आजादी देता है..
वैसे ही एक और HEADER फाइल है math.h ...इसके इस्तेमाल से आप mathematical functions जैसे के sum (),count () आदि इस्तेमाल कर पाएंगे...अनूप जी शायद जल्द ही इन सब के बारे में जानकारी देंगे...अगर आपके कोई सवाल हो तो मुझसे पूछ लीजिये में कोशिस करूँगा आपके सवालों के जवाब देने के लिए...
वैसे तो नहीं आता था, खोजबीन कर के पता लगाया है कि:
conio.h = Consol Input/outpot और .h इसलिए लगाते हैं क्योंकि ये एक header फ़ाइल है।

इसी तरह से
stdio = standerd input/output

KHIL@DI_720
07-07-2011, 08:23 AM
हिंदी फोरम पर C language -- बड़ा सराहनीय प्रयास है |

The Master
07-07-2011, 10:52 AM
वैसे तो नहीं आता था, खोजबीन कर के पता लगाया है कि:
conio.h = Consol Input/outpot और .h इसलिए लगाते हैं क्योंकि ये एक header फ़ाइल है।

इसी तरह से
stdio = standerd input/output


जब conio और stdio पे बात चल ही रही है तो यह भी बता दू के यह होते क्या है?
दर असल ये दोनों header files हैं...और इन header files में आप जो function इस्तेमाल करते हो (printf और scanf जैसे) उन सभी के codes लिखे होते हैं..इन header फिल्स को include किये बिना कोई भी c प्रोग्राम नहीं चल सकता...
कमसे कम आपको stdio तो include करनी ही पड़ती है ताकि standard I /O function जैसे के printf और scanf चल सके...
conio.h आपको clrscr और getch जैसे functions इस्तेमाल करने की आजादी देता है..
वैसे ही एक और HEADER फाइल है math.h ...इसके इस्तेमाल से आप mathematical functions जैसे के sum (),count () आदि इस्तेमाल कर पाएंगे...अनूप जी शायद जल्द ही इन सब के बारे में जानकारी देंगे...अगर आपके कोई सवाल हो तो मुझसे पूछ लीजिये में कोशिस करूँगा आपके सवालों के जवाब देने के लिए...


मेरे सवाल पुछ्ने का मक्सद हि यही था , मैने देखा है कि लोग पुर्ण सी भाषा को सीख लेते है लेकिन ऎसी बाते नही पता होती है ।

आप दोनो का और अनुपजी का धन्यवाद ।

Black Pearl
07-07-2011, 01:31 PM
मेरे सवाल पुछ्ने का मक्सद हि यही था , मैने देखा है कि लोग पुर्ण सी भाषा को सीख लेते है लेकिन ऎसी बाते नही पता होती है ।

आप दोनो का और अनुपजी का धन्यवाद ।

बिलकुल सही मेरा एक मित्र bca कर रहा है और ये बात उसे पता नहीं थी।

imboss
07-07-2011, 04:05 PM
मै क्या कहू समज नहीं आता कब से सीखना चाहता था लेकिन अंग्रेजी की वजह से सीख नहीं पाता था लेकिन लगता है की आपकी वजह से मै भी सीख सकता हू | आपका जितना आभार व्यक्त करू उतना कम होगा
धन्यवाद