Wednesday, December 19, 2018

INTRODUCTION


INTRODUCTION TO C LANGUAGE
वास्‍तव में आज जितनी भी Modern Programming Languages उपलब्‍ध हैं, वे सभी “C” Language पर ही आधारित हैं। यदि आप “C” Language को अच्‍छी तरह से सीख लेते हैं, तो आपको दुनियां की किसी भी Programming Language को सीखने में ज्‍यादा समय नहीं लगता। साथ ही “C” Language पर आपकी जितनी अच्‍छी पकड होती है, उतनी ही आसानी से आप किसी भी अन्‍य Programming Language को सीख पाते हैं और ऐसा केवल इसीलिए है क्‍योंकि “C” सभी Modern Programming Languages की जननी है।
हालांकि “C” Programming Language को 1969 के आसपास Develop किया गया था, लेकिन आज भी BCA, PGDCA, MCA, व भारत सरकार के Communication Department द्वारा अधिकृत O-Level, A-Level, B-Level व M-Tech Level तक के Courses में भी “C” Language के किसी न किसी रूप को जरूर पढाया जाता है। इसलिए नहीं क्‍योंकि ये परम्‍परा है बल्कि इसलिए क्‍योंकि सभी Software व Programming Languages कहीं न कहीं “C” Language पर ही आधारित हैं। उदाहरण के लिए :
§  Windows, UNIX, Linux आदि Operating Systems, Oracle Database, MySQL, MSSQL Server, IIS, Apache Web Server, PHP आदि सभी “C” Language में ही Develop किये गए हैं।
§  Mobile Platforms, Satellite Connected Software, Set Top Box आदि के Software भी “C” Language में ही Develop किये गए हैं।
§  iPhone व iPad की के Apps को भी Objective C नाम की “C” Language में ही Develop किया जाता है।
§  सभी तरह के Embedded Software, Device Drivers व Network Drivers “C” Language में ही बनाये जाते हैं।
§  विभिन्‍न प्रकार की Programming Languages के Assemblers, Compilers, Interpreters, व विभिन्‍न प्रकार के Micro-Controllers व OS Kernels को भी “C” Language में ही बनाया जाता है।
§  ज्‍यादातर Multimedia Programs जैसे कि Games, Sound Editing Software, Video Editing Software, Animation Programs आदि को भी मूल रूप से “C” Language में ही बनाया गया है, क्‍योंकि “C” Language की Performance किसी भी अन्‍य Programming Language की तुलना में ज्‍यादा अच्‍छी होती है।
§  “C” Language ही एक ऐसी Programming Language है, जिसका प्रयोग किसी भी Computer या Digital Electronic Device के Hardware को Directly Access करने के लिए किया जा सकता है। यानी “C” Language का प्रयोग Low Level Hardware Programming के लिये भी बहुत ज्‍यादा किया जाता है।
§   केवल “C” Language में ही ऐसी क्षमता है जो Assembly Language को Inline Assembly के रूप में उपयोग में ले सकता है व किसी भी Device के Hardware (Memory, CPU, etc…) को Directly Access कर सकता है।
यानी यदि हम चाहें तो “C” Language का प्रयोग करके ऐसे Virus Create कर सकते हैं, जो किसी Device को Permanently Damage कर दे और ये क्षमता “C” Language के अलावा और किसी भी Programming Language में नहीं है। क्‍योंकि किसी Device के Physical Architecture को Directly Access करने की क्षमता केवल “C” Language में ही है। इसलिए यदि आप I.T. Field मे है, और Programming Sector मे ही अपना Career बनाना चाहते हैं, तो “C” Language को आपको अच्‍छी तरह से सीखना ही  पडेगा।
उपरोक्‍त Discussion से ये सारांश न निकालें कि “C” Language केवल Hardware Level Programmingके लिए ही उपयोगी है। वास्‍तव में “C” Language किसी भी अन्‍य Programming Language की मां की तरह है, इसलिए यदि “C” Language को ठीक से नहीं समझा, तो आप कभी भी अच्‍छे Software Developer नहीं बन सकते।
क्‍योंकि “C” Language केवल एक Programming Language ही नहीं है, बल्कि ये एक ऐसी Language है, जो आपको Computer या Hardware की भाषा में सोंचना व समझना सिखाती है और जब तक आप Hardware की भाषा में सोंचना व समझना नहीं सीखते, तब तक आप ये नहीं जान सकते कि वास्‍तव में कोई मशीन किस तरह से काम कर रही है और किसी Program द्वारा उसे कैसे Control किया जा सकता है। फिर भले ही वह मशीन आपका Computer System हो या आपका Mobile Phone या आपका Calculator.


What is Data Processing and Information?


How Data Processing and Information is Related: सभ्यता की शुरूआत से ही मानव को Information की जरूरत रही है। इसीलिए वह समय-समय पर सूचनाओं को एकत्रित करने व उन सूचनाओं के आधार पर सही व उचित निर्णय लेने के नए व विकसित तरीके खोजता रहा है। सूचना की आवश्‍यकता व महत्व के कारण ही सबसे पहला आविष्‍कार कागज व कलम का हुआ। फिर जैसे-जैसे मानव का विकास होता गया वैसे-वैसे उसने नए शहर, राज्य व देश बनाए और उन देशों के बीच व्यापार व वाणिज्य के कारण विभिन्न प्रकार के सम्बंध बने और आज केवल व्यापार व वाणिज्य ही नहीं बल्कि जीवन की लगभग हर सूचना का Internet के माध्यम से इन देशों के बीच आदान प्रदान हो रहा है।

सरल शब्‍दों में कहें तो कृषि क्रांति व औधोगिक क्रांति के बाद आज हम सूचना क्रांति के युग में जी रहे हैं और किसी भी अन्‍य क्रान्ति की तुलना में सूचना क्रान्ति का विकास बहुत ही ज्‍यादा तेज गति से हुआ है।

सभ्यता की शुरूआत में सूचनाओं को मिट्‌टी के बर्तनों पर चित्रात्मक रूप में व शब्दों के रूप में लिखा जाता था। फिर कागज व कलम के विकास के साथ ही विभिन्न प्रकार की सूचनाओं को कागज के रूप में Store करके रखा जाने लगा और आज हम इन्हीं सूचनाओं को Computer पर Manage करते हैं।
विभिन्न प्रकार के आंकडों (Data) का संकलन (Collection) करना और फिर उन आंकडों को विभिन्न प्रकार से वर्गीकृत (Classify) करके उनका विश्‍लेशण (Analyze ) करना तथा उचित समय पर उचित निर्णय लेने की क्षमता प्राप्त करना, इस पूरी प्रक्रिया को Computer की भाषा में Data Processing करना कहा जाता है।

Data – Value or a Set of Values

असिद्ध तथ्य (Facts) अंक (Figures) व सांखियकी (Static) का वह समूह जिस पर प्रक्रिया (Processing) करने पर एक अर्थपूर्ण (Meaningful) सूचना (Information) प्राप्त (Generate) हो, Data कहलाती है। Data मान या मानों का एक समूह (Value or a Set of Values) होता है, जिसके आधार पर (After Processing) हम निर्णय (Decision) लेते हैं।
इसे एक उदाहरण द्वारा समझने की कोशिश करते हैं। संख्‍याएं (0 से 9 तक) कुल दस ही होती हैं। लेकिन यदि इन्हें एक व्यवस्थित क्रम में रख दिया जाए, तो एक सूचना Generate होती है। इसलिए ये संख्‍याएं, Data हैं।
इसी तरह से अंग्रेजी भाषा में Small व Capital Letters के कुल 52 Characters ही होते हैं, लेकिन यदि इन्हें एक सुव्यवस्थित क्रम में रखा जाए, तो हजारों पुस्तकें बन सकती हैं। इसलिए ये Characters भी Data हैं।
Computer में हम इन्हीं दो रूपों में वास्तविक जीवन की विभिन्न बातों को Store करते हैं और उन पर Processing करके आवश्‍यकतानुसार Information Generate करते हैं।
जैसे किसी School के विभिन्न Students की ये जानकारी रखनी हो कि किसी Class में कौन-कौन से Students हैं, उनका Serial Number क्या है और वे किस Address पर रहते हैं, तो ये सभी तथ्य असिद्ध रूप में Computer के लिए Data हैं क्योंकि किसी Student के Serial number को 0 से 9 के कुछ अंकों के समूह के रूप में ही Express किया जाता है और Student का नाम व पता Characters के एक सुव्यवस्थित समूह के रूप में Express किया जाता है।
जब 0 से 9 तक के कुछ अंकों को एक समूह में व्यवस्थित किया जाता है तब किसी एक Student का एक Serial Number बन जाता है और जब विभिन्न Characters को एक समूह में व्यवस्थित किया जाता है, तब किसी Student का नाम व Address बन जाता है। ये नाम व Address ही किसी Student के सम्‍बंध में कुछ Information प्रदान करते हैं।


Meaning of a Computer Program

प्रोग्राम को हम हर रोज के हमारे दैनिक जीवन के कामों से भी समझ सकते हैं। जिस तरह हमें कोई सामान्य सा काम के लिये भी एक निश्चित क्रम का पालन करना पडता है, उसी तरह कम्प्यूटर को भी एक निश्चित क्रम में सूचनाएं देनी होती हैं, कि किस काम के बाद क्या काम करना है। ताकि एक निश्चित समाधान या मनचाहा परिणाम प्राप्त किया जा सके। उदाहरण के लिये, माना हमें कुछ सामान खरीदने के लिये बाजार जाना हैं, तो हमें निम्न क्रम में अपना काम करना पडेगा :
§  किस समय बाजार जाए ताकि अधिकतर दुकाने खुली हों और भीड कम हो?
§  किस दिन सस्ता सामान मिल सकेगा?
§  क्या-क्या खरीदना है?
§  कितने रूपयों की जरूरत होगी?
§  किस सवारी से जाना है?
§  किसके साथ बाजार जाना है?
§  खरीददारी के साथ और क्या काम किया जा सकता है? आदि – आदि
ठीक इसी तरह से C Programming Language में भी प्रोग्राम बनाया जाता है। यानी कामों का एक सुव्यवस्थित समूह Create किया जाता है और उस समूह को Computer के समझने योग्य Programming Language Codes के रूप में एक File में लिख दिया जाता है। इस File को Program की Source File कहते हैं।
जिस File में Computer के समझने योग्य Coding के रूप में विभिन्न Steps या Instructions को लिखे गए होते हैं, उस File को Compiler द्वारा Compile किया जाता है। Source File को Compile करने पर एक नई File बनती है, जिसके Instructions को Computer का CPU समझ सकता है। इस Compiled File को Executable Fileया Exe File कहा जाता है क्योंकि Compiling के बाद Create होने वाली इस नई File का Extension .EXE होता है।
अब हमें जब भी वह काम करना होता है, जिसके लिए हमने Program लिखा है, तो हमें Source File को वापस से Compile करने की जरूरत नहीं होती है। हमें केवल उस Create होने वाली नई Executable File को ही Run करना होता है। इस File में CPU को जो कुछ करना है उसकी Instructions होती हैं जिन्हे CPU समझ सकता है। इस प्रकार से Computer में एक Program Create होता है।
इस पूरे Discussion के आधार पर यदि हम किसी Computer Program की परिभाषा देना चाहें तो ये कह सकते हैं कि “Instructions का एक एसा सुव्यवस्थित क्रम, जिससे Computer द्वारा किसी समस्या का उचित समाधान प्राप्त हो सके, Program कहलाता है।”
Computer Program Develop करना अपने आप में एक कला है, क्‍योंकि जब तक हम किसी Computer Program को Real Life से Relate करना नहीं सीखते, तब तक हम एक अच्‍छा Program Create नहीं कर सकते और जब तक हम एक अच्‍छा Program Create नहीं कर सकते, तब तक हम एक अच्‍छा Programmer नहीं बन सकते। इसलिए जरूरी है कि हम न केवल Programming Concepts को समझें बल्कि उन्‍हें Real Life से Connect करते हुए Application Program Develop करना सीखें


Basic Structure of C Program .

 इस भाषा का विकास होने से पहले जितने भी Program बनाए जाते थे, वे सभी Assembly Language में बनाए जाते थे। Assembly Language में बनाए गए Programs की Speed काफी ज्यादा होती है, लेकिन इसकी एक कमी भी है। Assembly Language में Develop किया गया Program उसी Computer पर Execute होता है, जिस पर उसे Develop किया गया होता है। इसलिए एक ऐसी Programming Language की आवश्‍यकता हुई, जो कि Portable हो।
इस जरूरत के आधार पर सन्‌1960 में केम्ब्रिज यूनिवर्सिटी ने एक कम्प्यूटर प्रोग्रामिंग भाषा का विकास किया, जिसका नाम “BASIC COMBINED PROGRAMMING LANGUAGE” यानी BCPL रखा गया। सन्‌ 1970 में केन थॉम्पसन ने इसमें कुछ परिवर्तन किये व सामान्य बोलचाल में इसे “B” भाषा नाम दिया। “C” का विकास अमेरिका में सन्‌ 1972 में हुआ। AT &T Laboratory के कम्प्यूटर वैज्ञानिक डेनिस रिची ने इस का विकास किया था।
”सी” एक शक्तिशाली भाषा है, जिसमें हम एप्लीकेशन सॉफ्‌टवेयर व सिस्टम सॉफ्‌टवेयर दोनों तरह के सॉफ्‌टवेयर बना सकते हैं। इसमें सामान्य अंग्रेजी शब्दों के माध्यम से प्रोग्राम बनाए जाते हैं, जो कि समझने व बनाने में आसान होते हैं। यानी सूचनाओं के एक निश्चित क्रम में Program Run होता है।


Characteristics of “C”


“सी” अन्य कई भाषाओं से काफी सरल है। अन्य हाई लेवल भाषाओं की तुलना में “सी” काफी लचीली भाषा है। “सी” ही एक ऐसी भाषा है, जिसमें कम्प्यूटर के हार्डवेयर के साथ भी काम किया जा सकता है व मेमोरी मेनेजमेन्ट भी किया जा सकता है। सबसे बडी खासियत “सी” की पोर्टेबिलिटी है। यानी “सी” भाषा में लिखे गए प्रोग्राम किसी भी अन्य कम्प्यूटर वातावरण में चल सकते हैं।
”सी” एक हाई लेवल Structured Programming Language या Procedural Programming Language या Functional Programming Language है, यानी इसमें सभी काम विभिन्न प्रकार के Functions, Procedures या Structures ‌को यूज करके किया जाता है। ”सी” में कोई इनपुट आउटपुट ऑपरेशन नहीं है। ”सी” कम्पाइलर सभी इनपुट-आउटपुट का काम लाइब्रेरी फंक्‍शन के द्वारा करता है।


Layout Structure of “C” Programs

1 /* Comment about the Program */
2 Including The Header Files
3 Global Variables Declaration
4 Main()
5 {
6  Local Variables Declaration
7  Necessary Statements   
8 }

main() Function Section


यह फंक्‍शन हर ”सी” प्रोग्राम में होता है । कम्पाईल करते समय Program Control हमेंशा सबसे पहले main() Function को ही ढूंढता है और इसी Function का Execution शुरू करता है। हर ”सी” प्रोग्राम में सिर्फ एक ही main() Function हो सकता है व हर ”सी” प्रोग्राम में main() Function का होना जरूरी होता है, क्योंकि Program का Execution हमेंशा main() Function से ही शुरू होता है।

Opening Parenthesis ( { )

main() Function मिलने के बाद प्रोग्राम का एक्जीक्यूशन इसी मंझले कोष्‍ठक से शुरू होता है। यानी Opening Parenthesis ही किसी भी User Defined Function की शुरूआत को Represent करता है।

Declaration Part

प्रोग्राम में काम आने वाले सभी वेरियेबल्स्‌, कोंस्टेंट, ऐरे आदि को यहीं पर डिक्लेयर करना होता है। यहां पर हम जिसे भी डिक्लेयर करते हैं, उसके लिये ”सी” प्रोग्राम Execution के समय मेमोरी में जगह बना देता है,  जिन्हें बाद में अपनी आवश्‍यकता के अनुसार उपयोग में लिया जाता है।
हम जिन Variables व Constants यानी Identifiers को यहां Declare करते हैं, वे केवल Current Function के लिए ही उपयोगी व Accessible रहते हैं। Function की Body से बाहर यानी Opening व Closing Curly Braces के बाहर इन Identifiers को Access नहीं किया जा सकता क्‍योंकि Function की Body ही इन Identifiers का Scope होता है और Function के Closing Parenthesis के साथ ही इन Identifiers का Life Time या Visibility समाप्‍त हो जाता है।

Executable Part

यहां पर प्रोग्राम के वे सभी स्टेटमेंट्‌स होते हैं, जिनके द्वारा हम प्रोग्राम से कोई परिणाम प्राप्त करना चाहते हैं। यही वह भाग होता है, जहां से User के लिये Interface का काम शुरू होता हैं। सामान्‍यत: Function के Declaration Part से लेकर Function के Closing Curly Brace तक के हिस्‍से को ही Executable Part के रूप में जाना जाता है।

Closing Parenthesis ( } )


No comments:

Post a Comment

C Tokens, Identifiers & Keywords

Introduction to C Tokens   C language का syntax कई दूसरी popular languages के द्वारा follow किया गया है, इसलिए C का syntax समझना आपके लि...