"सी प्रोग्रामिंग/परिचय अभ्यास": अवतरणों में अंतर

विकिपुस्तक से
पूरा हुआ
पंक्ति ८६: पंक्ति ८६:


== संदर्भ ==
== संदर्भ ==
{{Reflist}}

१५:३३, ३ सितम्बर २०१७ का अवतरण

पिछला: सी का स्वाद सूची अगला: प्रारंभिक

"Hello, World!" प्रोग्राम

परंपरा यह कहती है कि हम एक बहुत सरल प्रोग्राम से शुरूआत करनी चाहिए। जो स्क्रीन पर केवल "Hello, World!" अक्षर प्रदर्शित करे और तुरंत एक्ज़िट हो जाए। अपने पसंदीदा टैक्स्ट एडिटर या आईडीई में निम्न स्रोत कोड टाइप करें और इसे hello.c नामक फ़ाइल से सहेजें।

#include <stdio.h>

int main()
{
    printf("Hello, World!\n");
    return 0;
}

स्रोत कोड विश्लेषण

नीचे दिये गए प्रोग्राम के बारे मे हम आगे के पाठ मे विस्तृत पढ़ेगे। अभी के लिए आप केवल इसका बेसिक समझ लें।

#include <stdio.h>

यह एक प्रीप्रोसेसर डिरेक्टिव है। #include का अर्थ है कि इसके आगे लिखे फ़ाइल को प्रोग्राम मे शामिल करना है stdio.h एक स्टंडेर्ड इनपुट आउटपुट हैडर फ़ाइल है अर्थात #include <stdio.h> का मतलब यह है कि प्रोग्राम मे stdio.h हैडर फ़ाइल को शामिलित किया जाए।

int main()

यह सी भाषा मे लिखे प्रोग्राम का मुख्य फंकशन होता है कोई भी सी प्रोग्राम को जब कंपाईल किया जाता है तो कंपाईलर #include के बाद सीधे इसी लाइन पर आता है। और प्रोग्राम को किर्यान्वित (exe) होने लायक बनाता है। सी भाषा मे फंकशन का प्रारूप Data_type function_name () होता है। यहाँ Data_type = int

function_name () = main

हम इसका पूरा अध्यान आगे के पाठ मे करेंगे। अभी के लिए आप केवल इसका बेसिक समझ ले। जो इस प्रकार कई कि int main() सी भाषा मे लिखे प्रोग्राम का मुख्य फंकशन होता है। और यही से कंपाईल की शुरुआत होती है। यह सभी प्रोग्राम मे अनिवार्य है। इसके बिना कंपाईल संभव नहीं है।

printf("Hello, World!\n");

यह पंक्ति विशेष रुचि का है, क्योंकि यही लाइन कंसोल पर वास्तविक आउटपुट का प्रदर्शित करती है। printf(" "); फंकशन मे " " के बीच मे लिखा हुआ प्रोग्राम मे जैसा का वैसा प्रदर्शित होता है।

    return 0;

अंत में, हम इस लाइन को देखते हैं। यह लाइन हमारे प्रोग्राम को समाप्त करती है। यह ऑपरेटिंग सिस्टम को यह जानने में मदद करती है कि यह प्रोग्राम सफल हुआ या नहीं। हम ऐसा एक्जिट स्थितियो के साथ करते हैं, जो हमारे मुख्य फ़ंक्शन में रिटर्न स्टेटमेंट के साथ ऑपरेटिंग सिस्टम को भेजा जाता हैं। इस स्थिति में, हम एक्सेक्यूसन को त्रुटि के बिना सफल होने के संकेत के लिए 0 का एक्जिट स्थिति प्रदान करते हैं। जैसा-जैसा हमारे प्रोग्राम मे जटिलता बढ़ती जाती हैं, हम अन्य पूर्णांकों को विभिन्न प्रकार की त्रुटियों के लिए कोड के रूप मे इंगित कर सकते हैं। एक्जिट स्थितियां प्रदान करने की यह शैली एक लंबे समय से परंपरा है। अर्थात return 0; ऑपरेटिंग सिस्टम को बताता है कि हमारा प्रोग्राम सफल हुआ। छोटे छोटे प्रोग्रामो मे यह इतना उपयोगी नहीं होता है परंतु जब हजारो लाइनों के प्रोग्राम लिखे जाते है तो हमे छोटे छोटे कंडिशन और फंकशन मे जानना होता है कि उस कंडिशन या फंकशन ने एक्जिट स्थिति के रूप मे क्या रिटर्न किया। यदि रिटर्न 0 हुआ तो उस कंडिशन या फंकशन अपना सफल कार्य किया। यदि रिटर्न 0 के आलवा और कोई आता है तो अर्थ है कि उसमे त्रुटि है। इसका मुख्य उपयोग यही है कि प्रोग्राम के छोटे छोटे कंडिशन और फंकशन की ट्रैकिंग आसान को जाती है।[१]

कम्पीलिंग

युनिक्स जैसे मे

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

gcc hello.c

फिर प्रोग्राम को रन करने के लिए नीचे लिखे कोड को टाइप करे और एंटर बटन दबाये।

./a.out

इसके बाद आपको Hello, World! स्क्रीन पर प्रदर्शित होगा।

आपके द्वारा चलाए गए अंतिम प्रोग्राम की एक्ज़िट स्थिति देखने के लिए, लिखें:

echo $?

यह आपको मुख्य फंकशन द्वारा एक्ज़िट स्थिति की रिटर्न मान दिखाएगा। यदि आपका प्रोग्राम सफल हुआ होगा तो यह 0 रिटर्न करेगा।

कई विकल्प हैं जो आप जीसीसी कंपाइलर के साथ उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप आउटपुट फ़ाइल का नाम a.out के अलावा किसी और नाम से रखना चाहते हैं, तो आप -o विकल्प का उपयोग कर सकते हैं। निम्नलिखित कुछ उदाहरण दिखाए गए हैं:

-o
दर्शाता है कि अगला पैरामीटर जो होगा वह परिणामस्वरूप प्रोग्राम (या लाइब्रेरी) का नाम होगा। अर्थात जब आप बिना -o के किसी प्रोग्राम को कम्पाइल करते है तो जीसीसी कम्पाइलर प्रोग्राम को कम्पाइल करने के बाद "a.out" या "a.exe" नाम दे देता है। लेकिन यदि आप उस प्रोग्राम को कोई नाम देना चाहते है तो -o लिखने के बाद फ़ाइल का नाम टाइप कर दे।
   gcc hello.c -o filename 

यहाँ filename की जगह आप जो भी नाम लिखेंगे प्रोग्राम कम्पाइल होने के बाद उसी नाम से सेव हो जाएगा।

-Wall
यह विकल्प जीसीसी कम्पाइलर को संदिग्ध कोड के बारे में चेतावनी देने को कहता है जिनमे गलती होने की संभावना होती है।

आप "a.out" के स्थान पर "helloworld" नामक प्रोग्राम बनाने के लिए इन विकल्पों का उपयोग कर सकते हैं:

gcc hello.c -o helloworld -Wall

अब आपका प्रोग्राम a.out नाम के स्थान पर helloworld के नाम से बनेगा। इसे रन करने के लिए अब आपको ./a.out के स्थान पर ./helloworld लिखना होगा। जैसे

./helloworld


जीसीसी के लिए सभी विकल्पों का मैन्युअल[२] में अच्छी तरह से प्रलेखित किया गया है।

आईडीई पर

यदि आप किसी सी कम्पाइल आईडीई का उपयोग कर रहे है तो बस आपको मैन्यू बार मे जाकर कम्पाइल विकल्प पर क्लिक करना होगा तथा उसमे कम्पाइल या बिल्ड नाम के किसी ऑप्शन पर क्लिक करना होगा। कुछ आईडीई मे सीधे रन ऑप्शन भी होता है। आप F5 बटन दबाकर भी प्रोग्राम को कम्पाइल कर सकते है।

संदर्भ

  1. https://www.gnu.org/software/libc/manual/html_node/Exit-Status.html
  2. https://gcc.gnu.org/onlinedocs/