सी (प्रोग्रामिंग भाषा)
सी (C) एक सामान्य उपयोग में आने वाली कम्प्यूटर की प्रोग्रामिंग भाषा है। इसका विकास डेनिस रिची ने बेल्ल टेलीफोन प्रयोगशाला में सन् १९७२ में किया था जिसका उद्देश्य यूनिक्स संचालन तंत्र का निर्माण करना था।
इस समय (२००९ में) 'सी' पहली या दूसरी सर्वाधिक लोकप्रिय प्रोग्रामिंग भाषा है। यह भाषा विभिन्न सॉफ्टवेयर फ्लेटफार्मों पर बहुतायत में उपयोग की जाती है। शायद ही कोई कम्प्यूटर-प्लेटफार्म हो जिसके लिये सी का कम्पाइलर उपलब्ध न हो। सी++, जावा, सी#(C-Sharp) आदि अनेक प्रोग्रामन भाषाओं पर सी भाषा का गहरा प्रभाव देखा जा सकता है।
सन १९६० में कैम्ब्रिज विश्वविद्यालय ने एक कम्प्यूटर प्रोग्रामिंग भाषा का विकास किया जिसे उन्होने नाम c दिया। इसे सामान्य बोल-चाल की भाषा में बी ("B") कहा गया। ’बी’ भाषा को सन १९७२ में बेल्ल प्रयोगशाला में कम्प्यूटर वैज्ञानिक डेनिश रिची द्वारा संशोधित किया गया। ’सी’ प्रोग्रामिंग भाषा ’बी’ प्रोग्रामिंग भाषा का ही संशोधित रूप है। ’सी’ को यूनिक्स ऑपरेटिंग सिस्टम और डॉस ऑपरेटिंग सिस्टम दोनो में प्रयोग किया जा सकता है, अन्तर मात्र कम्पाइलर का होता है। यूनिक्स ऑपरेटिंग सिस्टम ’सी’ में लिखा गया ऑपरेटिंग सिस्टम है। यह विशेषत: ’सी’ को प्रयोग करने के लिये ही बनाया गया है अत: अधिकतर ’सी’ का प्रयोग यूनिक्स ऑपरेटिंग सिस्टम पर ही किया गया है।
सी-भाषा मामूली अन्तर के साथ कई उपभाषाओं ("dilects") के रूप में मिलती है। अमेरिकी राष्ट्रीय मानक संस्थान ("अमेरिकन नेशनल स्टैण्डर्ड्स इंस्टीट्यूट") (ANSI) द्वारा विकसित ANSI C को अधिकतर मानक माना जाता है।
(१) इस प्रोग्रामिंग भाषा की सबसे महत्वपूर्ण विशेषता यह है कि इसमे उच्च स्तरीय प्रोग्रामिंग भाषा के समस्त गुण तो है ही, साथ ही इसमे निम्न स्तरीय भाषा के समस्त गुण पाए जाते है। उच्च स्तरीय भाषाएं "फ़ोरट्रान", "कोबोल" भी है लेकिन इसमे निम्न स्तरीय भाषा के गुण नहीं पाए जाते।
(२) इस प्रोग्रामिंग भाषा में तैयार किये गये प्रोग्राम की गति अपेक्षाकृत तीव्र होती है। यह ० से १५००० तक गिनने में लगभग एक सेकण्ड का समय लगाती है जबकि बेसिक में इस कार्य में लगभग ५० सेकण्ड लगते है।
(३) ’सी’ प्रोग्रामिंग भाषा में प्रोग्राम में प्रयोग करने हेतु अनेक "functions" परिभाषित होते है परन्तु इसमे एक अतिरिक्त सुविधा यह भी है कि प्रोग्रामर अपनी आवश्यकतानुसार नए "functions" भी परिभाषित कर सकता है।
(४) इसमे मात्र ३२ की शब्दों का प्रयोग होता है इसके साथ ही इसमे अनेक अन्य सहायक प्रोग्राम भी होते है जिसकी सहायता से जटिल "functions" भी सफलतापूर्वक किए जा सकते है।
(५) यह मुख्यत: गणित, विज्ञान एवं सिस्टम संबंधित कार्यो के काम आती है।
(६) इस भाषा में निर्देश देते समय "lower case letters" का ही प्रयोग किया जाता है।
उपरोक्त विशेषताओ के कारण ही ’सी’ एक अत्यधिक लोकप्रिय कम्प्यूटर प्रोग्रामिंग भाषा है।
इससे पहले हम यह जान चुके हैं कोई भी चर संगणक की मेमोरी (memory) में किस तरह से संरक्षित होता है। जहाँ यह चर संरक्षित होता है उसका एक निश्चित पता भी होता है जो यह बताता है कि चर का मान मेमोरी में कहाँ संरक्षित है। इस पते को ही पोइंटर (pointer) कहते हैं। C/C++ प्रोग्रामन भाषा में यह सुविधा भी होती है कि किसी चर का पता ज्ञात किया जा सकें (चर का पता = वह मेमोरी में पता/वह स्थान जहाँ चर का मान संरक्षित है)। C/C++ प्रोग्रामन भाषा में भी चर का पता जानने के लिए & का उपयोग करते हैं। जैसे कि अगर कोई पूर्णांक चर "x" (सी में int x; के रूप में परिभाषित) है तो "x" का पता &x से मिल जायेगा। जिस प्रकार पूर्णांक, अक्षर, वास्तविक संख्या (क्रमशः int, char, float) इत्यादि को चर में संरक्षित किया जाता हैं उसी तरह किसी चर के पत्ते को भी। इसके लिए एक नया डाटाटाईप (datatype) होता है जो पता संरक्षित करने के काम आता है जिस तरह से पूर्णांक संरक्षित करने के लिए int datatype का उपयोग होता है। किसी पूर्णांक चर का पता संरक्षित करने के लिए int* datatype का उपयोग करते हैं। इसी तरह अक्षर चर (char variable) का पता संरक्षित करने के लिए char* datatype का उपयोग करते हैं। नीचे एक छोटा सा उदाहरण यह दिया गया है जिसमें एक चर में दूसरे चर का पता (address) संरक्षित करते हैं।
यहाँ पहले एक पूर्णांक चर "x" परिभाषित किया गया है, फिर "p" ऐसा चर परिभाषित किया है जो किसी पूर्णांक का पता (address) संरक्षित करता है। फिर "p" चर में x का पता डाल दिया है। (जैसा कि ऊपर लिखा है किसी भी चर का पता जानने के लिए & का उपयोग करते हैं।)
पता (Address)→ 0 1 2 3 4 मेमोरी (Memory)→ 10000111 11100101 00100110 0000101 01100101 . . .  p = &x = 3 int x
अब चर एक पूर्णांक पोइंटर (int*) p है जिसमें चर "x" का पता संरक्षित है अर्थात p को लिखवाने पर x का पता लिखा जायेगा। (ऊपर दिखाए गए अनुसार यहाँ पर "x" का पता 3 है परन्तु अलग अलग समय पर C/C++ प्रोग्राम चलन के दौरान पता अलग अलग आएगा) यदि हमें यह जानना है कि p में जिस मेमोरी का पता लिखा हुआ उस मेमोरी पर क्या संरक्षित है तो *p का उपयोग करते हैं (यहाँ p में उस मेमोरी का पता है जहाँ x है और उस मेमोरी अर्थात x में 5 संरक्षित है अतः *p यहाँ पर 5 देगा। इसका एक छोटा सा उदाहरण निम्नलिखित है
’सी’ प्रोग्रामिंग भाषा में किसी भी प्रोग्राम का निष्पादन (execution) करने के लिये हमे एक main() फंक्शन अवश्य लिखना होता है। ( its also need preprocessor directory this #include keyword )क्योंकि ’सी’ कम्पाइलर किसी भी प्रोग्राम को निष्पादित करना main() फंक्शन से आरंभ करता है। एक संचिका अथवा एक प्रोग्राम में एक से अधिक main() फंक्शन नहीं हो सकते। के मध्य उपप्रोग्राम दिया जाता है। प्रत्येक निर्देश का अन्त सेमीकालन ’;’ द्वारा होना आवश्यक है। इस प्रोग्राम को चलाने पर इसका आउटपुट निम्नवत होगा:
एक अन्य उदाहरण