इस पोस्ट में हम 'C' भाषा के प्रोग्राम की रूपरेखा अथवा स्ट्रक्चर, "C"प्रोग्राम विकास चक्र के बारे में जानेगे-
'C' भाषा के प्रोग्राम की रूपरेखा अथवा स्ट्रक्चर
(STRUCTURE OF A 'C' PROGRAM)
आइए अब 'C' प्रोग्राम पर प्रथम दृष्टि डालते हैं। इसकी शुरूआत हम एक सर्वाधिक सरल 'C' प्रोग्राम से करते हैं।
#include <stdio.h>
main ()
{
printf("Hello world\n");
}
इस प्रोग्राम में मात्र एक स्टेटमैन्ट है। यह प्रोग्राम रन होने के पश्चात् कम्प्यूटर स्क्रीन पर “Hello World" दिखाएगा। इस प्रोग्राम में एक फंक्शन है जिसका नाम main ( ) है। यह प्रोग्राम का मुख्य फंक्शन है। आइए अब 'C' प्रोग्राम की रूपरेखा देखते हैं। एक 'C' प्रोग्राम में क्रमशः निम्नलिखित तत्व होते हैं, इनमें से कुछ आवश्यक हैं जो प्रत्येक 'C' प्रोग्राम का भाग होते हैं तथा कुछ वैकल्पिक (optional) होते हैं जो प्रोग्राम की जरूरत के अनुसार जोड़े या घटाये जा सकते हैं।
1. प्रि-प्रोसेसर स्टेटमैन्ट अथवा डायरेक्टिव
2. वैरिएबिल की परिभाषा
3. फंक्शन प्रोटोटाइप (वैकल्पिक)
4. फंक्शन की परिभाषा
-main फंक्शन (अनिवार्य)
अन्य फंक्शन (वैकल्पिक)
5. स्टेटमैन्ट अथवा कथन
6. कोड कमैन्ट
1. प्रि-प्रोसेसर स्टेटमैन्ट अथवा डायरेक्टिव
(Pre-processor Statements or Directive)
C प्रोग्राम का आरम्भ डायरेक्टिव से ही होता है। वास्तव में डायरेक्टिव C भाषा का स्टेटमैन्ट न होकर C कम्पाइलर का स्टेटमैन्ट है। प्रत्येक C कम्पाइलर इन्हें कम्पाइलेशन प्रक्रिया के पहले चरण में ही प्रोसेस करता है। सर्वाधिक प्रयोग होने वाला डायरेक्टिव include है।
1. #include-इस डायरेक्टिव से C प्रोग्राम में लाइब्रेरी फंक्शन की हेडर फाइल (header file) को जोड़ा जाता है। C प्रोग्राम को कम्पाइल करने से पहले कम्पाइलर hinclude निर्देश को बताई गई हेडर फाइल को खोजता है और उसे प्रोग्राम में जोड़ देता है, उसके बाद पूरे प्रोग्राम (हेडर फाइल सहित) को कम्पाइल कर ऑब्जेक्ट कोड बनाता है। हेडर फाइल में लाइब्रेरी फक्शन के प्रोटोटाइप और परिभाषा (definitions) होती हैं। अतः उन्हें प्रोग्राम में जोड़ने (include करने) से आप अपने प्रोग्राम में उस फाइल के किसी भी फंक्शन को सीधे कॉल कर सकते हैं।
इस डायरेक्टिव का सिन्टैक्स इस प्रकार है-
#include <filename.h>
उदाहरण-
#include <stdio.h>
#include <math.h>
प्रोग्राम में फंक्शन कॉल के उदाहरण -
printf("Please print the value");
value= sin(a)
यहाँ printf( ) और sin() लाइब्रेरी फंक्शन हैं।
'C' प्रोग्राम में आवश्यक तौर पर प्रयोग होने वाली लाइब्रेरी stdio.h है, जिसमें अनेक इनपुट-आउटपुट फंक्शन होते हैं।
नोट—कुछ 'C' कम्पाइलर में इसका सिन्टैक्स #include "file.h" भी होता है।
(ii) #define-इस डायरेक्टिव द्वारा किसी स्थिर मान (constant value) को एक नाम या चिह्न प्रदान कर सकते हैं।
#define name constant value
उदाहरण-
#define Zero 0
#define PI 3.14
#define Year 2003
यहाँ पर Zero, PI, Year चिह्नित नियतांक (symbolic constant) हैं। अब यदि हम अपने प्रोग्राम में कहीं इनका प्रयोग करते हैं तो वास्तव में उनके मान पर प्रोसेसिंग होगी। उदाहरण के लिए यदि हम प्रोग्राम में A=P1x7x7 लिखें तो कम्पाइलर 3.14x7x7 को कम्पाइल करेगा।
नोट-डायरेक्टिव सामान्यतः प्रोग्राम के आरम्भ में ही लिखे जाते हैं। सामान्यतः प्रोग्राम की #include <stdio.h> से ही होती है यद्यपि यह कोई नियम नहीं है।
.
2. वैरिएबिल डिक्लेयर अथवा परिभाषित करना
(Variable Declaration)
वैरिएबिल (variable) का अर्थ है परिवर्तनीय। वैरिएबिल ऐसे डेटा आइटम को कहा जाता है जिनका मान परिवर्तित हो सके। जैसे यदि १ एक पूर्णांक (integer) प्रकार का वैरिएबिल है तो इसका मान में से कुछ भी हो सकता है। 'वैरिएबिल' एक नाम होता है जो एक स्टोरेज लोकेशन को दिया जाता है। एक प्रोग्राम में अनेक प्रकार के डेटा आइटम प्रयोग होते हैं, जिनके भण्डारण के लिए वैरिएबिल परिभाषित किए जाते हैं। एक वैरिएबिल को प्रयोग करने से पहले उसका नाम (variable name), उसका प्रकार (variable type) तथा उसका आकार (variable size) परिभाषित करना आवश्यक है। ये तीनों बाते वैरिएबिल की परिभाषा (variable definition) द्वारा परिभाषित की जाती हैं। इसे वैरिएबिल डिक्लेयर करना (variable declaration) भी कहते हैं।
इसका सिन्टैक्स इस प्रकार होता है.
टाइप नाम:
Type name;
उदाहरण- int a;
char name;
char text[10];
3. फंक्शन प्रोटोटाइप
(Function Prototype)
प्रोग्राम का यह भाग वैकल्पिक है। इसे तभी लिखा जाता है जब प्रोग्राम में main ( ) के अतिरिक्त भी अन्य फंक्शन लिखे जाएँ। अभी हम इन वैकल्पिक भागों की चर्चा नहीं करेंगे। इनके विषय में आप आगे पढ़ेंगे।
4. फंक्शन की परिभाषा
(Function Definition)
प्रत्येक 'C' प्रोग्राम में एक या अधिक फंक्शन होते हैं। प्रत्येक फंक्शन में कुछ स्टेटमैन्ट (कथन) लिखे होते हैं जो किसी न किसी विशेष उद्देश्य को पूरा करते हैं। 'फंक्शन' प्रोग्राम का एक ऐसा भाग है जो प्रोग्राम के किसी अन्य भाग द्वारा कॉल किया जा सकता है अर्थात् प्रयोग किया जा सकता है। फंक्शन के 'C' प्रोग्राम को बिल्डिंग ब्लॉक भी कहा जाता है क्योंकि एक या अधिक फंक्शन मिलकर ही पूरे प्रोग्राम की रचना करते हैं।
'C' प्रोग्राम का अनिवार्य एवं मुख्य फंक्शन main( ) है, शेष फंक्शन वैकल्पिक (optional) होते हैं।
(i) main() फंक्शन
main() फंक्शन प्रोग्राम का वह फंक्शन है जहाँ से प्रोग्राम का क्रियान्वन आरम्भ होता है अर्थात् सबसे पहले main( ) फंक्शन में लिखा गया पहला स्टेटमैन्ट (कथन) ही क्रियान्वित होता है। main( ) फंक्शन का प्रारूप इस प्रकार होता है-
main()
{
variable declarations:
statements;
}
main( ) फंक्शन का प्रत्येक कथन करली ब्रैकेट (curly bracket) {} के अन्दर लिखा जाता है। "{" main() फंक्शन का आरम्भ तथा ?' समापन दर्शाता है। अभी हम वैकल्पिक फंक्शनों और उनके प्रोटोटाइप पर चर्चा नहीं करेंगे क्योंकि इस पुस्तक में हम इनका प्रयोग नहीं करेंगे।
preprocessor statements or directives
...............
...............
function prototype
.............
main()
{
variable declarations;
...............
...............
statements;
.............
.............
}
function declaration
{
variables declarations;
....................
statements;
................
}
5. स्टेटमैन्ट अथवा कथन
(Statements)
C प्रोग्राम द्वारा किया जाने वाला वास्तविक कार्य स्टेटमैन्ट द्वारा ही सम्पन्न होता है। स्टेटमैन्ट क्रियान्वित होते हैं और उनमें वर्णित किया गया ऐक्शन लिया जाता है। C स्टेटमैन्ट ही डेटा इनपुट लेते हैं, डेटा आउटपुट देते हैं, डेटा प्रोसेस करते हैं, गणनाएँ करते हैं तथा अन्य अनेक प्रकार के ऑपरेशन करते हैं। स्टेटमैन्ट ही निर्देश होते हैं, जो कम्प्यूटर को बताते हैं कि उसे क्या कार्य करना है। C स्टेटमैन्ट को लिखने के लिए सिन्टैक्स तथा सिमैन्टिक नियम होते हैं। प्रत्येक c स्टेटमैन्ट सेमीकॉलन (semicolon) ::' लेगाकर समाप्त किया जाता है। आप आगे अनेक प्रकार के C स्टेटमैन्ट तथा उनके द्वारा किए जाने वाले कार्यों के विषय में पढ़ेंगे।
यहाँ पर हम कुछ सर्वाधिक प्रयोग में आने वाले स्टेटमैन्ट का परिचय दे रहे हैं। जो निम्नलिखित हैं-
printf यह स्टेटमैन्ट कम्प्यूटर स्क्रीन पर कोई वाक्य, वैरिएबिल का मान, स्थिर मान, आदि डेटा प्रदर्शित करता है।
scanf यह स्टेटमैन्ट प्रयोगकर्ता द्वारा की-बोर्ड से डेटा रीड करता है और उसे वैरिएबिल में स्टोर करता है।
स्टेटमैन्ट के उदाहरण-
printf ("please enter the number:");
scanf("%d", &number);
sum = x + y;
6. कोड कमैन्ट
(Code Comment)
प्रोग्राम की स्पष्टता बढ़ाने के लिए, उसे समझने के लिए तथा स्वयं व अन्य प्रोग्रामर की सुविधा के लिए प्रोग्राम में कुछ कमैन्ट अथवा रिमार्क लिखे जाते हैं। कम्पाइलर कमैन्ट में लिखी प्रत्येक पंक्ति को नजरअंदाज कर देता है। कमैन्ट कम्पाइल नहीं किए जाते हैं। अतः इससे प्रोग्राम की क्रियान्वन गति तथा उसके द्वारा उपयोग किए जा रहे मैमोरी स्पेस पर कोई प्रभाव नहीं पड़ता है। प्रोग्राम में कमैन्ट लिखना अच्छी प्रोग्रामिंग की पहचान है, इससे प्रोग्राम की गुणवत्ता बढ़ती है। कोड कमैन्ट में प्रोग्रामर अपना नाम, प्रोग्राम लिखने की दिनांक, यदि कोड में परिवर्तन किया गया है तो उसका कारण, प्रोग्राम का उद्देश्य, फंक्शन का उद्देश्य, आदि बातें लिख सकता है।
C भाषा में कमैन्ट /* */ के मध्य लिखे जाते हैं।
उदाहरण- /*This is a C' program */
/* This statement declares variable*/
महत्वपूर्ण नोट-C भाषा एक केस-संवेदनशील भाषा है अर्थात् यह बड़े केस (upper case), जैसे-A, B, C,... तथा निम्न केस (lower case), जैसे—a, b, c,... में अन्तर समझती है। प्रोग्राम में आप a के स्थान पर A, main के स्थान पर Main नहीं लिख सकते हैं। ऐसा करने पर कम्पाइलर त्रुटि संदेश प्रसारित कर देगा।
आइए अब C प्रोग्राम के कुछ सरल उदाहरण देखते हैं-
उदाहरण— दी गई त्रिज्या के वृत्त का क्षेत्रफल निकालने के लिए प्रोग्राम लिखिए।
/* This is a program to calculate the area of circle */
#include<stdio.h>
#define pi 3.14
main()
{
float radius, area;
printf("Please input radius of circle:");
scanf("%f", &radius);
area = pi * radius * radius;
printf("Area of circle for the given radius is:");
printf("%f", area);
}
उदाहरण- इस प्रोग्राम को एक पूर्णाक (integer), एक रीयल संख्या तथा एक ऐल्फाबेट को स्क्रीन पर आउटपुट देने के लिए बनाया गया है।
तीनों डेटा आइटम का मान प्रोग्राम में ही सैट किया गया है।
%#include <stdio.h>
main()
{
/* variable declaration */
int number;
float value; ;
char ch;
/* Assign values to data variables */
number = 50;
value=50.44;
ch = 'A';
/* print values of data variables */
printf("InPlease print number:");
(":
printf("%din", number);
printf("Please print value :");
printf("%f\n", value);
printf("Please print character :");
printf("%c\n", ch);
}
प्रोग्राम का आउटपुट-
Please print number: 50
Please print value : 50.439999
Please print character: A
उल्लेख–प्रोग्राम के main() फंक्शन में सबसे पहले तीनों प्रकार के वैरिएबिल का नाम एवं प्रकार परिभाषित किया गया है।
int number; ; (number एक int प्रकार का वैरिएबिल है।)
float value; (value एक रीयल संख्या है।)
char ch;
(ch एक कैरेक्टर है।)
इसके बाद तीनों वैरिएबिल में मान स्टोर किए गए हैं।
number =503;
value=50.44
ch = 'A';
बाद में इन तीनों वैरिएबिल का मान printf स्टेटमैन्ट द्वारा स्क्रीन पर प्रस्तुत कर दिया गया।
कोड लिखते समय ध्यान रखने योग्य बातें-
1. प्रत्येक स्टेटमैन्ट सेमीकॉलन; पर समाप्त होना चाहिए।
2. प्रत्येक कमैन्ट ।। से आरम्भ करके लिखा जाना चाहिए।
3. प्रत्येक फंक्शन में फंक्शन हैडिंग के अतिरिक्त अन्य कोड {} के मध्य लिखा जाना चाहिए।
4.C भाषा केस-संवेदनशील भाषा है। अतः बड़े अक्षर (A, B, C,.) के स्थान पर छोटे अक्षर (a, b, e...) या इसके विपरीत नहीं लिखा जाना चाहिए।
5. प्रोग्राम में प्रयोग किया जा रहा प्रत्येक वैरिएबिल प्रयोग से पहले डिक्लेयर होना चाहिए।
6. प्रोग्राम में यदि कोई C लाइब्रेरी फंक्शन प्रयोग किया जा रहा है तो उस फंक्शन की हेडर फाइल प्रोग्राम में #include डायरेक्टिव द्वारा जोड़ लेनी चाहिए।
7. जहाँ तक सम्भव हो कोड को भविष्य में समझने के लिए कमैन्ट लिखने चाहिएँ जो कि निर्देशों के ऐक्शन का संक्षिप्त वर्णन करते हों।
"C" प्रोग्राम विकास चक्र
('C' PROGRAM DEVELOPMENT CYCLE)
C प्रोग्राम विकास चक्र के अनेक चरण हैं जो कि निम्नलिखित हैं-
1. स्रोत कोड लिखना (Source Code writing)
C प्रोग्राम विकास चक्र का पहला चरण है कोड लिखना। प्रोग्राम का कोड किसी भी टैक्स्ट ऐडिटर पर लिखा जा सकता है। सभी C कम्पाइलर पैकेज, जैसे—Turbo C, Microsoft C, ANSIC, आदि अपने टैक्स्ट ऐडिटर के साथ आते हैं।
2. कम्पाइलेशन एवं त्रुटि संशोधन चरण (Compilation and Error Handling)
एक बार प्रोग्राम का स्रोत कोड अथवा सोर्स कोड (source code) तैयार होने के बाद अगला चरण है सोर्स कोड को कम्पाइल करना। C कम्पाइलर पैकेज में प्रोग्राम लिखने से लेकर आउटपुट देखने, कोड परिवर्तित करने, कोड डिबग करने, आदि सभी क्रियाओं के लिए कमाण्ड सैट होता है। प्रोग्राम लिखने के बाद उसे 'Compile' कमाण्ड से कम्पाइल किया जा सकता है। यदि प्रोग्राम के स्रोत कोड में किसी भी प्रकार की त्रुटि (error) है तो कम्पाइलेशन प्रक्रिया के बाद वे त्रुटियाँ टैक्स्ट ऐडिटर के नीचे बनी मैसेज विन्डो में संदेश के रूप में प्रदर्शित होती हैं। मैसेज विन्डो में त्रुटि संदेश (error message) में क्या त्रुटि है, वह किस स्टेटमैन्ट में है तथा स्टेटमैन्ट के किस स्थान लाइन कॉलम में है, इन सभी बातों की जानकारी होती है और कर्सर उसी त्रुटि के स्थान को इंगित करता है। अतः आप सरलता से उस त्रुटि पर जाकर उसे ठीक कर सकते हैं। त्रुटि ठीक करने के बाद प्रोग्राम को पुनः कम्पाइल किया जाता है। कम्पाइलेशन के बाद हमें प्रोग्राम के लिए मशीनी भाषा में लिखा ऑब्जेक्ट कोड प्राप्त हो जाता है।
3. ऑब्जेक्ट कोड को लिंक करना (Object Code Linking)
जैसा कि हम पहले भी पढ़ चुके हैं कि C कम्पाइलर में कुछ ऐसे पहले से तैयार, कम्पाइल किए। हुए
अर्थात् ऑब्जेक्ट कोड के रूप में स्टैन्डर्ड लाइब्रेरी फंक्शन होते हैं जिन्हें प्रोग्रामर अपने प्रोग्राम में प्रयोग कर सकता है, जैसे printf( ) कम्पाइलेशन क्रिया के बाद लिंकिंग (linking) क्रिया होती है जो 'लिंकर प्रोग्राम द्वारा सम्पन्न की जाती है। लिंकिंग क्रिया में आपके प्रोग्राम के ऑब्जेक्ट कोड के साथ अन्य आवश्यक ऑब्जेक्ट फाइलों को लिंक किया जाता है और सम्पूर्ण क्रियान्वित हो सकने वाली फाइल जिसे ऐक्जिक्यूटेबल फाइल (executable file) संक्षिप्त में exe फाइल कहते हैं, बनायी जाती है। ऐक्जिक्यूटेबल फाइल ऐसी फाइल होती है जो आपके कम्प्यूटर पर रन अथवा क्रियान्वित हो सकती है और आपको आउटपुट दे सकती है।
4. EXE फाइल को रन करना (Execution of EXE File)
एक बार आपको कम्पाइल एवं लिंक की हुई ऐक्जिक्यूटेबल फाइल प्राप्त हो जाती है, तो आप अपने प्रोग्राम को DOS प्रोम्ट पर अथवा GUI परिवेश में साधारण कमाण्ड द्वारा रन कर सकते हैं। EXE फाइल को रन करने पर आप उसके कोड के अनुसार आउटपुट प्राप्त कर सकते हैं।
इस प्रकार एक प्रोग्राम क्रियान्वन एवं प्रयोग के लिए तैयार हो जाता है। जब भी आपको प्रोग्राम में भविष्य में कुछ सुधार करने होते हैं तो आपको प्रोग्राम विकास चक्र का पुनः अनुसरण करना पड़ेगा।
C प्रोग्राम विकास चक्र में बनने वाली फाइलें-
1. स्रोत फाइल या .c फाइल—यह वह फाइल होती है जिस पर आप 'C' प्रोग्राम का स्रोत कोड लिखते हैं। जिसे टैक्स्ट ऐडिटर पर लिखा जाता है। इसका ऐक्सटेंशन .c होता है, जैसे—Filel.c, Helloc. Test.c, आदि।
2. ऑब्जेक्ट फाइल (Object file) यह फाइल स्रोत फाइल को कम्पाइल करके प्राप्त होती है। इस प्रकार की फाइलों का ऐक्सटेंशन .obj होता है, जैसे—Filel.obj, Hello.obj, Test.obj, आदि। इन फाइलो का नाम वही रहता है जो इनकी स्रोत C फाइलों का होता है। यह फाइल हमें प्रोग्राम विकास चक्र के दूसरे चरण के बाद प्राप्त होती है।
3. ऐक्जिक्यूटेबल फाइल (Executable file)-Object फाइल को अन्य आवश्यक object फाइलों से लिंक करने के पश्चात् प्रत्येक प्रकार की त्रुटि से मुक्त ऐक्जिक्यूटेबल फाइल प्राप्त होती है, जिसका
ऐक्सटेंशन .exe होता है, जैसे-Filel.exe, Hello.exe, Test.exe, आदि।
Conclusion-
इस पोस्ट में हमने 'C' भाषा के प्रोग्राम की रूपरेखा अथवा स्ट्रक्चर, "C"प्रोग्राम विकास चक्र के बारे में जाना
इन्हें भी देखें-
0 Comments