Blog by Sanjeev panday | Digital Diary
" To Present local Business identity in front of global market"
" To Present local Business identity in front of global market"
C++ का परिचय (Introduction of C++)
C++ एक ऑब्जैक्ट ओरिएन्टिड प्रोग्रामिंग (OOP) भाषा है। यह Bjarne Stroustrup के द्वारा New Jersey, Murrary Hill में AT&T Bell Laboratories में 1979 में विकसित की गई थी। C++, C भाषा का विस्तृत रुप है। प्रारम्भ में इसका नाम "C with classes" था। 1983 में इसका नाम बदलकर C++ कर दिया गया। C++ नाम का विचार इनक्रीमेन्ट ऑपरेटर (++) के नाम से आया है। यह C भाषा का सुपर सेंट है। C++ में सबसे महत्त्वपूर्ण सुविधा जो ८ भाषा के बदले में जोडी गई है। वह क्लास, ऑब्जैक्ट, इनहैरिटैन्स, ऑपरेटर तथा फंक्शन आवरलोडिंग है। C++ के ऑब्जेक्ट ओरिएन्टिड विशेषता के कारण यह हमें प्रोग्राम को साफ, विस्तृत रुप में तथा सरल
जिस तरह से आप जब भी किसी नई भाषा को सीखना शुरू करते हैं तो सबसे पहले आप उस भाषा के अक्षरों का ज्ञान प्राप्त करते हैं। ठीक उसी प्रकार अन्य सभी भाषाओं की तरह C++ में अक्षरों (कैरेक्टरों) का एक समूह होता है जिसे इसमें प्रोग्राम बनाते समय प्रयोग में लिया जा सकता है।
अंक (Digit) : 0 से 9 तक = 0123456789
ABCDEFGHIJKLMNOPQRSTUVW
XYZ
C++ में टोकन प्रोग्राम का वह छोटे से छोटा भाग होता है जो कम्पाइलर के लिए मान्य होता है और उसका अपना एक मतलब होता है। C++ में सामन्तय निम्न प्रकार के टोकन्स होते है
अभिव्यक्ति को व्यक्त करने हेतु, संदेश प्रेषित अथवा संवाद स्थापित करने हेतु किसी माध्यम की आवश्यकता होती है। इस प्रकार के किसी माध्यम को हम भाषा कहते हैं। भाषाएँ कई प्रकार की होती हैं तथा यह भौगोलिक परिस्थितियों के अनुरुप बदलती रहती हैं।
कम्प्यूटर के अविष्कार के साथ कम्प्यूटर से सम्बन्ध स्थापित करने हेतु भाषा का अविष्कार किया गया। आवश्यकता के अनुरुप स्नैः-स्नैः भाषा समृद्ध होती गयी तथा मशीन लैंग्वेज से असेम्बली लैंग्वेज होते हुए आज कम्प्युटर के साथ सम्बन्ध स्थापित करने हेतु हम किसी साधारण भाषा से मिलती-जुलती हाई लेवेल लैंग्वेज का उपयोग करते हैं।
वाक्यों को गढ़ने की विधि को हम सिन्टैक्स (Syntax) तथा उनकी अभिव्यक्ति को सिमान्टिक्स (Symantics) कहते हैं। अक्षरों के समूह को शब्द तथा शब्दों के समूह को, जिनका कुछ अर्थ हो, वाक्य कहा जाता है। शब्द दो प्रकार के होते है-सार्थक तथा निरर्थक।
सभी प्रोग्रामिंग भाषाओं को दो वर्गों में विभाजित किया गया है. हाई– लेवल लैंग्वेजेस (High-Level Languages) और लो-लेवल लैंग्वेजेस (Low-Level Languages) |
"बेसिक कम्बाईन्ड प्रोग्रामिंग लैंग्वेज' (बीसीपीएल) ["Basic Combined Programming Language' (BCPL)] कैम्ब्रिज यूनिवार्सिटी में माट्रिन रिचार्डस द्वारा विकसित किया गया था। उसी समय ए टी एण्ड टी के बेल लेब के केन थॉम्पसन द्वारा बी (B) नामक भाषा को विकसित किया जा रहा था। डेन्नीस रिच्ची ने बी और बीसीपीएल की विशेषताओं का उपयोग करते हुए उसमें निज के द्वारा विकसित कोड जोड दिया और सी भाषा का विकास किया। इसलिए सी को बी भाषा का उत्तराधिकारी भी कहा जाता है। युनिक्स ऑपरेटिंग सिस्टम के साथ यह विकसित हुआ। सी एम एस डॉस ऑपरेटिंग सिस्टम पर भी उपलब्ध है।
सी में हाई–लेवल लैंग्वेज की विशेषताओं के साथ-साथ असेम्बली लैंग्वेजेस की क्षमता का भो मिश्रण है। अतः यह दोनों प्रकार के सॉफ्टवेयर यथा सिस्टम सॉफ्टवेयर तथा एप्लीकेशन पैकेजेस को लिखने के लिए उपयुक्त है।
सी में लिखे गये प्रोग्राम अधिक सार्थक तथा तीव्र गति से कियान्वित किये जाने योग्य होते हैं। यह सम्भव हो सका है सी में उपलब्ध डाटा टाइप की समृद्ध ऋखला तथा प्रभावी ऑपरेटरों के कारण यह बेसिक से कई गुना तेज है उदाहरण के लिए. 0 से 15000 तक के वेरियबल्स को सृजित करने हेतु सी में लगभग 1 सेकेन्ड लगता है जबकि बेसिक में 50 सेकेन्डस से अधिक लगता है।
सी अधिक सुवाह्य है। इसका अर्थ यह है कि एक कम्प्यूटर के लिए लिखा गया सी प्रोग्राम को बिना संशोधन अथवा नाममात्र के संशोधनों के पश्चात दूसरे कम्प्यूटर पर चला सकते हैं।
सी की दूसरी मुख्य विशेषता है अपने आप विस्तार करने की क्षमता। सी प्रोग्राम मूल रूप में फंक्शनों का संग्रह है जो सी लायब्रेरी में उपलब्ध होती है। हम अपने फक्शनों को सी लायब्रेरी में जोड़ सकते हैं।
सी प्रोग्रामिंग स्ट्रक्चर (C programming structure)
सी प्रोग्राम में अनिवार्य रूप से निम्नलिखित भाग होते हैं
1. हेडर स्ट्रक्चर (Header structure)
2. फंक्शन Main() [Function Main())
3. प्रोग्राम की शुरूआत (Start of program)
4. वैरियबल डिक्लेरेशन तथा मूल्यों को निर्धारित/आंवटित करना (Variable declaration and assigning values)
5. प्रोग्राम स्टेटमेंट्स अथवा प्रोग्राम बॉडी (Program Statements)
6. प्रोग्राम का अंत (End of program)
सरल सी प्रोग्राम को लिखना (Writing simple C program)
निम्नलिखित उदाहरण सी प्रोग्राम के स्ट्रक्चर को प्रदर्शित करता है।
#include <stdio.h> (1)
#include <conio.h> (2)
/* A sample C program */ (3)
void main() (4)
{ (5)
int a, b, c; (6)
a=2; (7)
b = 3; (8)
c= a*b + (a+b); (9)
printf ("c= %d', c); (10)
getch(); (11)
} (12)
उपरोक्त सरल सी प्रोग्राम स्ट्रक्चर की व्याख्या
लाइन सं० व्याख्या
1,2 हेडर फाइले
3 कमेंट लाईन। 4 मुख्य कंक्शन का नाम तथा उसका प्रकार। फक्शन नाम के साथ छोटे कोष्ठकों का उपयोग किया जाता है। जिसके माध्यम से आरग्यूमेंट्स प्रेषित किया जाता है।
5 खुला कोष्ठक प्रोग्राम के प्रारंभ को सूचित करता है।
6 इटीजर टाईप (प्रकार) के वेरियबल को परिभाषित किया गया है।
7,8,9 वेस्थिबल को निर्धारित किया गया है।
10 printi स्टेटमेंट का उपयोग करके परिकलित मूल्यों को प्रिन्ट किया गया है।
11 एक फंक्शन है।
12 बंद कोष्ठक प्रोग्राम के अंत को सूचित करता है।
शब्दों संख्याओं और अभिव्यक्त्तियों को दर्शाने हेतु उपयोग किये जाने वाले वर्ग, लिपि अधवा प्रतीक (कैरेक्टर) कम्प्यूटर विशेष पर निर्भर करते है फिर भी कुछ करेक्टर ऐसे हैं जो प्राय सभी प्रकार के कम्प्यूटरो, जैसे कि, पर्सनल माईकर, मिनी तथा मेनफेम कम्प्यूटरों में उपयोग किये जा सकते हैं। सी मे कैरेक्टरों को निम्नलिखित वगों में वर्गीकृत किया गया है:
1. वर्ण (ALPHABETS)
2 अंक (DIGITS)
3. विशेष प्रतीक (SPECIAL CHARACTERS)
4. डाईट स्पेसेस (WHITE SPACES)
निम्न कैरेक्टर के सेट को सी में उपयोग किया जाता है।
वर्ण : A to Z, a to z.
अंक : 0 to 9
विशेष प्रतीक
अथवा स्पेशल कैरेक्टर : * + \ " ( = | { # } ~ ; } / % - [ , ? ^ _ ] ' . & blank
हाईट स्पेसेस Blank space, Horizontal Tab, Carriage return, New line, Form feed.
सी में कॉन्स्टेन्ट्स नियत मूल्यों को प्रदर्शित करता है जो प्रोग्राम के निष्पादन पर्यन्त बदलता नहीं है। संख्याओं को न्यूमेरिक कॉन्स्टेन्ट्स कहते है। न्यूमेरिक कॉन्स्टेन्टस के उदाहरण 1,12,24,67-74 है। न्यूमेरिक कॉन्स्टेन्ट्स दो प्रकार के है:
(i) इंटीजर कॉन्स्टेन्ट्स (Integer Constants)
(ii) रिवल कॉन्स्टेन्ट्स (Real Constants)
ये पूर्ण संख्यायें होती है। इंटीजर कान्सटेन्ट्स में आप दशमलव का प्रयोग नहीं कर सकते हैं। ऐसी सख्याएं धनात्मक अथवा ऋणात्मक (Positive or Negative) हो सकती है। 56, 78,-34, 98 तथा 0 कॉन्सटेन्ट्स के उदाहरण है। इंटीजर कॉन्स्टेन्ट्स की रेन्ज (प्रसार) -128 से +127 तक अथवा -256 से +255 अथवा 512 से +511 हो सकती है। निम्नलिखित नियम एक इंटीजर कॉन्स्टेन्टस की रेन्ज दर्शाता है। यदि एक कम्प्यूटर n बिट वर्ड का है तो वैध / स्वीकृत इंटीजर का परिणाम -2n-1 और 2n-1 के मध्य होगा। एक इंटीजर कॉन्स्टेन्ट कम से कम एक अंक का हो सकता है। इसमें दशमलव का उपयोग नहीं होना चाहिए। यह धनात्मक अथवा ऋणात्मक हो सकता है। . यदि किसी चिह्न का उपयोग नहीं किया गया हो तो इंटीजर कॉनटेन्ट घनात्मक होता है। संख्या के अन्तर्गत खाली स्थान या विशेष प्रतीको अथवा चिन्हों कैरेक्टरों को इंटीजर कॉन्स्टेन्ट में अनुमति नहीं है। इटीजर कॉन्सटेन्ट में किती प्रकार के अन्य कैरेक्टर अथवा खाली जगह / रिक्त स्थान (Space) का उपयोग वर्जित है। इंटीजर कॉन्स्टेन्ट्स हेतु स्वीकृत परिणाम -32768 to +32767 है। उदाहरण के लिए 08 अमान्य डेसिमल इंटीजर है। इसे सिफ 8 ही लिखना चाहिए। यदि प्रथम अंक शून्य (0) हो तो. उसे ऑक्टल नंबर के रूप में समझा जाता है। इसी तरह सी भाषा हेक्साडेसिमल संख्याओं को दर्शाता है। हेक्ताडेसिमल संख्या OX या Ox के साथ शुरू होती हैं।
कुछ मान्य और अमान्य इंटीजर कॉन्स्टेन्ट्स को नीचे दर्शाया गया है।
38
0
-127
+789
_________________________________________
कॉन्स्टेन्ट अमान्यता का कारण
_________________________________________
67.99 दशमलव की अनुमति नहीं है।
6,934 कॉमा की अनुमति नहीं है।
45*4 विशेष कैरेक्टरों की अनुमति नहीं है।
432+ संख्या (नंबर) के बाद + चिन्ह का उपयोग
नहीं किया जाना चाहिए।
_________________________________________
सी में चार प्रकार के इंटीजर कॉन्स्टेन्ट्स हैं. वे लॉंग इंटीजर, शॉर्ट इंटीजर, इंटीजर और अनसाईन्ड इंटीजर हैं। ऊपर दिये गये इंटीजर कॉन्स्टेन्ट्स के समस्त नियम अन्य तीनों प्रकारों इंटीजर के लिए भी लागू होता है। शॉर्ट इंटीजर को लॉंग इंटीजर की तरह समझा जाता है।
यदि अधिक परिमाण वाले मूल्यों को प्रदर्शित करना/दर्शाना है. तो लॉंग इंटीजर का उपयोग किया जाता है। यह घनात्मक अथवा ऋणात्मक इंटीजर हो सकता है। यदि कम्प्यूटर का वर्ड लेंथ n है. लॉग इंटीजर के -2n-1 से 2n-1 के मध्य रहेगा। लॉग इंटीजर कॉन्स्टेन्ट्स वर्ण L के साथ समाप्त होता है (अपर केस या लोवर केस)। कुछ मान्य लॉग इंटीजर हैं-5764845L, 879576L और 54835658L.
शार्टइंटीजर छोटे परिमाण वाली संख्याओं को दर्शाने के लिए उपयोग किया जाता है। शार्टइंटीजर को लोंग इंटीजर के रूप में भी परिवर्तित किया जा सकता है। लेकिन शार्टइंटीजर के रूप में घोषणा प्रक्रिया की तेज़ी का सुधार करता है। यदि कम्प्यूटर का वर्ड लेन्थ n है, शॉट इंटीजर की वैल्यू -2n/2-1 से 2n/2-1 -1के मध्य होगा।
इंटीजर मध्यम आकार की संख्याओं को दर्शाता है। यदि कम्प्यूटर का वर्ड लॅन्थ n है. तो इंटीजरों की रेन्ज -2n/2-1से 2n/2-1 -1 होती है।ऋणात्मक संख्याओं को भी दर्शाने के कारण इंटीजर को साईन्ड इंटीजर भी कहा जा सकता है। ऋण चिन्ह (-) की अनुपस्थिति का अर्थ है संख्या धनात्मक इंटीजर है।
_________________________________________
इंटीजर प्रकार (Integer type) दर (Range)
_________________________________________
Short limeger 2n/2-1 to 2n/2-1-1.
Integer 2n-1 to 2n-1-1
Unsigned Integer 0 to 2n-1
Long Interger 2²n-1 to 2-1-1
__________________________________________
इस प्रकार के इंटीजरों को घनात्मक इंटीजरों के लिए उपयोग किया जाता है. यदि कम्प्यूटर की वर्ड लेंन्ध n हो तो, अनसाईन्छ इंटीजर 0 से 2n-1 -1तक के मूल्यों को रख सकता है। अनसाईन्ड इंटीजर कॉन्स्टेन्ट्स को u के साथ उचित स्थिति पर लिखा जाता है (अप्पर केस या लोवर केस)। अनसाईन्ड इंटीजर के उदाहरण 654uऔर 287 U है।
कभी कभी इंटीजर संख्याएँ मात्राओं को प्रस्तुत करने के लिए अपर्याप्त होते हैं क्योंकि दूरी, ऊँचाई, तापमान, मूल्य इत्यादि में है। ऐसी संख्याओं को रियल या फ्लोटिंग पोईन्ट कॉन्स्टेन्ट्स कहा जाता है। 67.34, 4.8923 और 453.0 कुछ रियल कॉन्स्टेन्ट्स के उदाहरण हैं।
निम्नलिखित दो रूपों में से किसी एक में एक रियल कॉन्स्टन्ट को प्रकट किया जा सकता है।
i) फ्राक्शनल फॉर्म (Fractional form)
ii) एक्सपोनेंशियल फॉर्म (Exponential form)
प्राक्शनल फॉर्म में रियल कॉन्स्टन्ट के लिए निम्नलिखित नियम लागू हाता है।
o एक रियल कॉन्स्टन्ट में कम से कम एक डिजिट होना चाहिए।
o एक डेसिमल पाईन्ट अथवा दशमलव होनी चाहिए।
o यह संख्या घनात्मक अथवा ऋणात्मक हो सकती है।
o डिफाल्ट चिन्ह घनात्मक है अथवा कोई भी चिन्ह न हो, तो संख्या को धनात्मक समझना चाहिए।
o खाली स्थान तथा * जैसे विशेष प्रतीकों रियल कॉन्स्टेन्ट में स्दीकाई और मान्य नहीं है।
(i) फ्लोटिंग पॉइन्ट (Floating point)
(ii) डबल (Double
एक जोडे उद्धरण चिन्हों के अंदर संलग्न किसी एक अक्षर को कैरेक्टर कहा जाता है। कम्यूटर में उपयोग किये जाने वाले कैरेक्टर सेंट के आधार पर प्रत्येक कैरेक्टर का एक इंटीजर वैल्यू / मूल्य होता है। साधारणतया ASCII कैरेक्टर सेट का उपयोग होता है। इस कैरेक्टर सेट के अनुसार कुछ कैरेक्टर कॉन्स्टेन्ट्स और उनके इटीजर वैल्यू को नीचे दर्शाया गया है।
____________________________________
कॉन्स्टेन्ट (Constant) मूल्य (Value)
____________________________________
A 65
A 97
Z 90
Z 122
# 35
& 38
_____________________________
_____________________________
कॉन्स्टेन्ट्स अमान्यता का कारण
_____________________________
'A मात्र एक उद्धरण चिन्ह का उपयोग किया गया है। ('A' मान्य है।)
"a' डबल उद्धरण चिन्ह की अनुमति नहीं है।
"INDIA' मात्र एक कैरेक्टर की अनुमति है।
स्ट्रिंग कॉन्स्टेन्ट डबल उद्धरण चिन्ह (" ") से घिरे कैरेक्टरों की पंक्ति ( अनुक्क्रम) है। स्ट्रिंग कॉन्स्टन्ट के कैरेक्टर अक्षर, संख्या, विशेष कैरेक्टर और खाली स्पेस हो सकते हैं।
उदाहरण
"Raju"
"Best of luck"
"3/195, Vijayant Khand"
"C"
वैरियेबल एक प्रतीकात्मक नाम है, एक प्रस्तुतिकरण representation) है। इसके कई रूप अथवा प्रकार हो सकते हैं। जैसा कि इसके अर्थ से ज्ञात होता है. इसकी कोई नियत मूल्य अथवा वैल्यू नहीं होती। इसकी वैल्यू प्रीग्राम के क्रियान्वयन के दौरान बदल सकती है।
प्रायः समस्त भाषाए एक जैसे (सामान्य प्रकार के) वैरियेबल का उपयोग करती हैं। जैसे, इंटीजर, पलोटिंग पॉइन्ट कैरेक्टर तथा स्ट्रिंग। वैरियेबल नामों में मात्र अक्षर, अंक तथा अण्डर स्कोर का उपयोग किया जा सकता है। वैरियेबल नामों की लम्बाई (लेन्थ) ऑपरेटिंग सिस्टम पर आधारित होते हैं। वैरियंबल नामों के सृजन हेतु कुछ नियम बनाये गये हैं. जो नीचे दिये गये हैं।
o वैरियेबल नाम कैरेक्टर डिजिट और अंडरस्कोर(_) का कोई मिश्रण है।
o अंडरस्कोर के अतिरिक्त कौमा खाली स्थान अथवा जगह या विशेष कैरेक्टर को नाम में नहीं जोड़ा जा सकता है।
o वैस्येिबल नाम किसी वर्ण (कैरेक्टर) अथवा (_) से प्रारम्भ हो सकते हैं।
o सी क्रियाएँ, जिनका सी में विशेष अर्थ होता है, वैरियेबल नाम के रूप में उपयोग किया नहीं की जा सकती। अर्थात सी के रिजर्व वर्ड का उपयोग वैरियेबल नाम के रूप में नहीं किया जा सकता।
o एक मान्य वैरियेबल नाम को आईडेन्टिफायर भी कहा जाता है।
उदाहरण
कुछ मान्य वैरियेबल नाम नीचे दिये गये हैं।
P
f_name
average_number
______________________________________
नाम अमान्यता के कारण
______________________________________
7a पहला अक्षर वर्ण नहीं है।
Char सी में कीवर्ड (रिजर्ल्ड वर्ड) है, जिसका विशेष अर्थ है।
1*b*h विशेष कैरेक्टर की अनुमति नहीं है।
first pgm खाली स्थान की अनुमति नहीं है।
________________________________________
वैरियेबल के विभिन्न प्रकार हैं।
1. इंटीजर वैरियेबल्स
i) लॉग इंटीजर
ii) शॉर्ट इंटीजर
iii) अनसाईन्ड इंटीजर
iv) इंटीजर
2. रियल वैरियेबल्स
i) फ्लोटिंग पॉइन्ट
ii) डबल
3. कैरेक्टर वैरियंचल
i) साईन्ड कैरेक्टर
ii)अनसाईन्क कैरेक्टर
4 स्टिंग वैरिग्रेबल
वैरियेबल का नामकरण इस प्रकार किया जाना चाहिए कि अन्य उपयोग कर्ता अथवा प्रोग्रामर भी उसे पढ़कर उसका तात्पर्य समक्ष सके। वैरियेबल्स के नामकरण में छोटे तथा बड़े अक्षर (small and capital letters) का उपयोग किया जा सकता है। परन्तु वे भिन्न होते है। उदाहरण स्वरूप And तथा and दो अलग अलग वैरियेबल माने जायेंगे। किसी वैरियेबल नाम की लम्बाई कुछ भी हो सकती है. परन्तु आपरेटिंग सिस्टम नियमानुसार उसका निर्धारण स्वयं कर लेता है।
वैरियेबल नामों को निर्धारित करने के पश्चात उन्हें परिभाषित (declare) किया जाता हैं। डिक्लरेशन दो कार्य करता है, वे हैं
1. यह प्रोग्रामर को वैरियेबल का नाम दर्शीता है।
2 वैरियेबल रखनेवाले डाटा के प्रकार (Data type) को भी दर्शाता है।
int <list of variables>;
उदाहरण के लिए टोटल, वाल्यूम तथा iइंटीजर वैरियेबल्स के रूप में दर्शाय गये हैं।
int i, total, volume;
इंटीजर वैरियेबल्स को अलग अलग पंक्ति अथवा लाईन में भी दर्शाया जा सकता है।
संख्या के आकार के अनुरूप हम इसे शार्ट अथवा लॉग इंटीजर के रूप में निम्नप्रकार से परिभाषित कर सकते हैं:
उदाहरण
नीचे दिये गये सभी मान्य डिक्लैरेशन है।
short int i, total, volume;
short i, total, volume;
Long int i, total, volume;
long i, total, volume;
unsigned int i, sum, area;
unsigned i, sum, area;
एक रिजर्ल्ड वर्ड फ्लोट को रियल वैरियेबल को परिभाषित करने के लिए उपयोग किया जाता है।
सिन्टैक्स (Syntax)
float list-of-variables;
float side, perimeter;
अधिक यथार्थता अथवा accuracy स्पष्टता के साथ वैरियेबल के वैल्यू को दर्शाने के लिए डबल अथवा फ्लोट अथवा लॉग फ्लोट का उपयोग किया जाता है।
double side, perimeter;
long float side, perimeter;
कैरेक्टर वैरियेबल द्वारा मेमोरी में मात्र 1 बाइट (8 बिट्स) का उपयोग किया जाता है। एक कैरेक्टर की इंटीजर वैल्यू -128 से 127 तक होती है। इन इंटीजर वैल्यू की सहायता से हम ASCII कैरेक्टर के रूप में मैमोरी में स्टोर करते हैं। आपको ज्ञात होगा कि ASCII कैरेक्टर सेट 'a', 'b', '$', '3' इत्यादि से बना है।
सिन्टैक्स (Syntax)
char <list-of-variables>;
char x, y;
char filmi;
अन्य डाटा टाइप की तरह स्ट्रिंग भी सी लैंग्वेज का एक डाटा टाइप है। स्ट्रिंग कान्सटेन्ट्स के बारे में हम पहले जान चुके हैं। अब हम स्ट्रिंग वैरियेबल के बारे में जानेंगे। स्ट्रिंग वैरियेबल को एक कैरेक्टर (array) के रूप में परिभाषित किया जा सकता है।
सिन्टैक्स (Syntax)
char string_name (size);
उपरोक्त उदाहरण में एक स्ट्रिंग वैरियेबल "स्ट्रिंग नेम" को परिभाषित किया गया है। वैरियेबल होने के कारण "स्ट्रिंग नेम" की लम्बाई अनिश्फित है। उक्त "स्ट्रिंग नेम" वैरियेबल की लेन्थ को साइज नाम दिया गया है। साइज लेन्ध के स्ट्रिंग वैरियेबल "स्ट्रिंग नेम" को अरे कहा जाता है।
कोई भी स्टिंग वैल्यू निर्धारित की जा सकती है। नीचे दिये गये उदाहरण में स्ट्रिंग वैरिवल कन्ट्री की वैल्यू "INDIA" निर्धारित की गयी है।
char country ( = "INDIA"
मैमोरी में कन्ट्री नाम के स्ट्रिंग वैरियवल निम्न प्रकार से संग्रहित कर सकते है।
country (0) -.'I'
country [1] = 'N'
country [2] = 'D'
country [3] = 'I'
country [4] = 'A'
1. किसी संख्या को प्राप्त करना या पढ़ना।
2. किसी संख्या को देना (या छापना)।
3. अंकगणितीय क्रियाएँ (जोड़, घटाव, गुणा तथा भाग) करन
4. दो संख्याओं की तुलना करना।
कोई प्रोग्राम कुछ निर्देशों (Instruction) का निश्चित और क्रमबद्ध समूह होता है। वे निर्देश इस प्रकार दिये (या लिखे) जाते हैं कि यदि उनका उसी क्रम में सही-सही पालन किया जाए, तो कोई कार्य पूरा हो जाए। उदाहरण के लिए, यदि आप किसी बच्चे को बाजार से कोई किताब लाने के लिए भेजते हैं, तो उसे निम्नलिखित आदेश दिय जायेंगे-
1. बाजार जाओ।
2. किताबों की दुकान पर जाओ।
3. किताब का नाम बताकर उसके बारे में पूछो।
4. यदि किताब उपलब्ध है तो उसे खरीद लो।
5. घर वापस आओ।
अब कोई भी बच्चा या व्यक्ति जो इन आदेशों को समझ सकता है और ये क्रियाएँ (आना, जाना, पूछना, खरीदना। आदि) कर सकता है, इन आदेशों के आधार पर आपकी इच्छित किताब लाकर दे सकता है। इस प्रकार ये आदेश वास्तव में एक प्रोग्राम ही हैं। इन आदेशों का इसी क्रम में पालन होना आवश्यक है। उदाहरण के लिए 'किताब के बारे मे पछना
कंप्यूटर के लिए भी हम इसी प्रकार आदेश देते हैं। इन आदेशों के समूह को ही प्रोग्राम कहा जाता है। लेकिन कंप्यूटर बाजार जाना और खरीदना जैसी क्रियाएँ नहीं कर सकता, बल्कि केवल पहले बतायी गयी पाँच प्रकार की क्रिया ही कर सकता है। इसलिए उसके लिए सभी आदेश इन क्रियाओं को करने के बारे में ही होने चाहिए। उदाहरण लिए, मान लीजिए कि आप किसी कक्षा के विद्यार्थियों की औसत उम्र निकालना चाहते हैं, तो इसके लिए आदेश इस प्रकार दिये जायेंगे-
1. कक्षा में छात्रों की संख्या को पढ़ो।
2. सभी छात्रों की उम्रों को पढ़ो।
3. उन सभी उम्रों का योग ज्ञात करो।
4. उम्रों के योग में छात्रों की संख्या से भाग देकर औसत उम्र निकालो।
5. औसत उम्र को छाप दो।
ये आदेश हमने साधारण बोलचाल की भाषा में लिखे हैं। कम्प्यूटर के लिए ये ही आदेश किसी विशेष भाषा में संक्षेप में लिखे जाते हैं। ध्यान दीजिए कि इनमें से प्रत्येक आदेश कम्प्यूटर की किसी मूल क्रिया (पढ़ना, जोड़ना, भाग देना, छापना आदि) से सम्बन्धित है। प्रत्येक कार्य करने के लिए क्रियाएँ अलग-अलग की जाती हैं
किसी कम्प्यूटर के लिए प्रोग्राम लिखने की क्रिया को प्रोग्रामिंग कहा जाता है। कम्प्यूटर को कम से कम आदेश देकर उससे अधिक से अधिक कार्य सही-सही करा लेना बहुत उपयोगी कला है। इसके लिए बहुत कौशल और ज्ञान की आवश्यकता होती है। कम्प्यूटर तो केवल एक जड़ मशौन है। उसके द्वारा बड़े-बड़े कार्य करा लेना प्रोग्रामिंग की कला का ही चमत्कार है।
जो व्यक्ति कम्प्यूटर के लिए प्रोग्राम लिखते हैं या तैयार करते हैं, उन्हें प्रोग्रामर (Programmer) कहा जाता है। कम्प्यूटर के लिए प्रोग्राम लिखने की कुछ विशेष भाषाएँ होती हैं। उन्हें प्रोग्रामिंग भाषा (Programming Languages) कहा जाता है। सी (C) ऐसी ही एक भाषा है, जिसका विस्तृत अध्ययन आप अगले अध्याय में करेंगे।
किसी भी कार्य के लिए प्रोग्राम लिखने से पहले उसकी पूरी जिना बनानी पड़ती है। समस्या को सुनते ही प्रोग्राम लिखने लग जाना गलत है। यह गलती प्रायः नये प्रोग्रामर किया आहे. परिणामस्वरूप उनका कई गुना अधिक समय उस प्रोग्राम की गलतियाँ ढूँढ़ने और उन्हें ठीक करने में लग आया है। इसके विपरीत सफल प्रोग्रामर वे होते हैं जो प्रोग्राम को योजना बनाकर चरणबद्ध तरीके से लिखते हैं और वे बहुत कम समय में सफल प्रोग्राम तैयार कर लेते हैं। इसी कारण कम्प्यूटर प्रोग्रामिंग के क्षेत्र में एक कहावत बहुत प्रोग्राम लिखना आप जितनी जल्दी प्रारम्भ करेंगे, वह उतनी ही देर में समाप्त होगा।
जब तक किसी समस्या को पूरी तरह समझ न लिया जाए, उसको हल करना या उसको कोशिश करना सम्भव नहीं है। यह एक तथ्य है कि प्रोग्राम लिखने के लिए प्रायः जो समस्याएँ दी जाती है, वे कभी भी पूर्ण नहीं होती. का न कोई बात उनमें छूट ही जाती है। अनुभवी प्रोग्रामर उस बात को शीघ्र पकड़ लेते हैं इसलिए या तो अतिरिक्त सूचनाएँ माँग लेते हैं या उसके स्थान पर अपने ज्ञान के अनुसार कल्पना कर लेते हैं। इसलिए समस्या को ठीक-ठीक समझ लेना अनिवार्य है।
आप पढ़ चुके हैं कि प्रोग्राम इनपुट डाटा पर क्रिया करने के लिए लिखे जाते हैं, इसलिए जब तक आपको यह ज्ञात न हो कि इनपुट किस रूप में होगा और किस प्रकार प्राप्त होगा, तब तक आप प्रोग्राम नहीं लिख सकते। इसलिए यह देख लेना अति आवश्यक है कि समस्या को हल करने के लिए समस्त आवश्यक इनपुट उपलब्ध है या नहीं और वह किस रूप में हैं। नये प्रोग्रामर इस तथ्य की उपेक्षा कर देते हैं, इसलिए प्रोग्राम लिखते समय भ्रम में पड़ जाते हैं।
अगले चरण में हमें आउटपुट की योजना बनानी होती है। इस चरण में ही यह स्पष्ट होता है कि हमारा प्रोग्राम वास्तव में क्या करना चाहता है। आउटपुट की योजना तैयार करते समय यह भी सुनिश्चित हो जाता है कि हमने समस्या को ठीक तरह समझ लिया है और यह भी कि हमें जो इनपुट दिया गया है, वह माँगे गये आउटपुट के लिए पर्याप्त है, अर्थात् कोई चीज छूटी नहीं है।
यह प्रोग्राम लिखने और बनाने का सबसे महत्त्वपूर्ण चरण है। इसमें हम समस्या के हल की चरणबद्ध रूपरेखा बनाते हैं। दिये हुए इनपुट से माँगे गये आउटपुट तक पहुँचने में जिन चरणों से गुजरना होता है, वं सभी चरण क्रमानुमार लिखे जाते हैं। इस क्रमबद्ध लेखन को एल्गोरिथ्म कहा जाता है। एल्गोरिथ्म वास्तव में साधारण भाषा में लिखा गया प्रोग्राम ही है। आवश्कता होने पर प्रोग्राम के उदद्देश्य को कई भागों में बाँट लिया जाता है और प्रत्येक भाग पर ध्यान केन्द्रित करके उसके लिए अलग-अलग एल्गोरिथ्म तैयार किये जाते हैं और अंत में सबको एक में मिला दिया जाता है। इस प्रकार पूरा एल्गोरिथ्म तैयार कर लिया जाता है।
एल्गोरिथ्म तैयार करने के बारे में आप अगले अनुच्छेद में विस्तार से पढ़ेंगे।
फ्लोचार्ट एल्गोरिथ्म तैयार करने और दिखाने की ही एक विधि है। इसमें किसी एल्गोरिथ्म के सभी चरणों को विशेष प्रकार की आकृतियों द्वारा दिखाया जाता है और उन आकृतियों के भीतर आवश्यक सूचनाएँ लिखी जाती हैं।
परलोचार्ट तैयार करने के बारे में आप इसी अध्याय में आगे विस्तार से पढ़ेंगे
इस चरण में ऊपर बताये गये एल्गोरिथ्म या फ्लोचार्ट के अनुसार किसी प्रोग्रामिंग भाषा में प्रोग्राम लिखा जाता है। यदि ऊपर के सभी चरणों का ठीक प्रकार से पालन किया गया है तो इस चरण में प्रोग्राम लिखना लगभग स्वचालित के बाद कम्पाइलर द्वारा उसका कम्पाइलेशन कराया जाता है। इससे यदि प्रोग्राम में कोई व्याकरण की गलती रह जाती होता है। इसके लिए केवल उस प्रोग्रामिंग भाषा के व्याकरण (Syntax) का ज्ञान होना आवश्यक है। प्रोग्राम लिख लेने है, तो उसका पता चल जाता है और उसे ठीक करके फिर से कम्पाइलेशन कराया जाता है। यह प्रक्रिया तब तक दोहरायी जाती है जब तक कि प्रोग्राम व्याकरण की गलतियों से पूरी तरह मुक्त नहीं हो जाता।
इस चरण में प्रोग्राम का परीक्षण किया जाता है। इसके लिए सबसे पहले एक परीक्षण डाटा (Test Data) तैयार किया जाता है। यह इनपुट डाटा ऐसा होना चाहिए, जिसका आउटपुट हमें पहले से ज्ञात हो, ताकि यह देखा जा सके चलिए जब तक आपको कि प्रोग्राम ठीक वही आउटपुट देता है या नहीं। यदि दोनों में समानता है, तो प्रोग्राम सफल कहा जायेगा। टैस्ट डाटा नहीं लिख सकते। इन तैयार कर लेने के बाद उस डाटा के लिए प्रोग्राम को चलाकर देखा जाता है और कोई गलती पाये जाने पर प्रोग्राम में उपलब्ध है या नहीं आवश्यक सुधार किये जाते हैं। जब परीक्षण का आउटपुट पूरी तरह सन्तोषजनक होता है, तो प्रोग्राम को वास्तविक य श्रम में पड़ जाते हैं। डाटा के साथ प्रयोग करने के लिए दे दिया जाता है।
आप पढ़ चुके हैं कि कोई एल्गोरिथ्म किसी कार्य को करने के लिए एक विशेष क्रम में लिखे गये आदेशों का समूह होता है। ये आदेश इस प्रकार लिखे जाते हैं कि यदि कोई व्यक्ति उनको समझकर उसी क्रम में उनका ठीक-ठीक पालन करता जाये, तो वह कार्य पूरा हो जाता है।
फ्लोचार्ट एल्गोरिथ्म लिखने की एक विधि है, जिसमें एल्गोरिथ्म के आदेशों या कथनों को विशेष प्रकार की आकृतियों के रूप में दिखाया जाता है। अलग-अलग प्रकार के कथनों के लिए अलग-अलग प्रकार की आकृतियों का उपयोग किया जाता है और उन आकृतियों के भीतर उस कथन को संक्षेप में लिखा जाता है। इन आकृत्तियों को उनके पालन के क्रम की दिशा में तीर के चिह्नों द्वारा जोड़ दिया जाता है।
ऊपर के सभी उदाहरणों में हमने जो एल्गोरिथ्म या फ्लोचार्ट बनाये हैं, वे सभी इस तरह के हैं कि प्रथम कधर (या आकृति) में प्रारम्भ करके सभी कथनों का उसी क्रम में पालन करते हुए अंतिम कथन तक पहुंचा जाता है।
सामान्यतया ऐसी स्थिति कम होती है। कई बार हमें कुछ कथनों को छोड़कर अन्य कथनों का पालन करना पड़ता है अर्थात् प्रोग्राम या एल्गोरिथ्म का नियंत्रण अथवा फ्लोचार्ट का प्रवाह अपनी सामान्य दिशा को छोड़कर किमी अन्य दिशा में चला जाता है। इस प्रकार प्रोग्राम के प्रवाह की दिशा बदलने की क्रिया को ब्राँचिंग (Branchting) जाता है।
फ्लोचार्ट में सशर्त ब्राँचिंग को एक डायमंड की आकृति द्वारा दिखाते हैं। डायमंड के अन्दर उस शर्त को लिखा जाता है, जिसकी जाँच की जानी है, और तीरों द्वारा उस शर्त के सत्य सा असत्य होने की स्थिति में पालन किये जाने वाले कथनों या आकृतियों की ओर संकेत किया जाता है।
इस तरह की ब्राँचिंग को बिना शर्त ब्राँचिंग (Unconditional Branching) कहा जाता है।
फ्लोचाटों में बिना शर्त ब्राँचिंग को तीरों द्वारा दिखाया जाता है।
किसी प्रोग्राम या एल्गोरिथ्म में किसी कार्य अथवा कथनों के समूह को बार-बार दोहराने की क्रिया को लूपिंग कहा जाता है।फ्लोचार्ट में लूप के लिए कोई विशेष चिह्न नहीं होता।
किसी बड़े कार्य के लिए कम्प्यूटर प्रोग्राम लिखना एक जटिल एवं कठिन कार्य होता है। यदि कोई कार्य बहुत जटिल है, तो उसको सफलतापूर्वक करने के लिए हम उसको कई छोटे-छोटे कार्यों में बाँट लेते हैं और फिर क्रमा प्रत्येक छोटे कार्य पर ध्यान केन्द्रित करके उसे पूरा कर लेते हैं। इस तरह खण्ड-खण्ड करके कार्य करने से को जटिल से जटिल कार्य भी पूरा किया जा सकता है। लम्बे और जटिल कार्यों के लिए प्रोग्राम लिखते समय भी हम इसी प्रक्रिया का पालन करते हैं और लम्बे प्रोग्राम को कई छोटे भागों में बाँटकर उनके लिए स्वतंत्र रूप से छोटे-छोटे प्रोग्रा लिख लेते हैं। फिर उन सभी छोटे प्रोग्रामों को एक मुख्य प्रोग्राम में जोड़कर एक जगह एकत्र कर लिया जाता है, जिस सम्पूर्ण प्रोग्राम तैयार हो जाता है। इस विधि को मॉड्यूलर प्रोग्रामिंग अथवा संरचनात्मक प्रोग्रामिंग ( Programming) कहा जाता है।
मॉड्यूलर या संरचनात्मक प्रोग्रामिंग के तीन प्रमुख उद्देश्य होते हैं
1. त्रुटि रहित प्रोग्राम तैयार करना,
2. कम से कम समय में प्रोग्राम तैयार करना,
3. प्रोग्राम का रखरखाव तथा उसमें सुधार करके सरल बनाना।
क्रमिक प्रक्रिया (Sequential Process)
निर्णय प्रक्रिया (Decision Process)
दोहराव प्रक्रिया (Repetition Process)
Read Full Blog...
Machine Code (मशीन कोड) कंप्यूटर की असली भाषा है। यह वह भाषा है जिसे आपका कंप्यूटर का प्रोसेसर (CPU) सीधे समझता और execute (निष्पादित) करता है। इसे बाइनरी कोड भी कहते हैं।
कल्पना कीजिए कंप्यूटर एक बहुत ही समझदार जानवर है, लेकिन वह सिर्फ "हाँ" (1) और "नहीं" (0) की भाषा समझता है। मशीन कोड उसी "हाँ" और "नहीं" यानी 0 और 1 की लंबी-लंबी स्ट्रिंग्स (strings) होती हैं।
उदाहरण: 10110000 01100101
यह एक simple instruction हो सकता है जो CPU को बताता है, "संख्या 101 (दशमलव में 5) को एक specific स्थान (register) में रख दो।"
बाइनरी फॉर्मेट: यह सिर्फ 0 (OFF) और 1 (ON) के combination से बना होता है। ये 0 और 1 बिजली के सिग्नल्स को represent करते हैं (0 = no current, 1 = current)।
सीधी Execution: CPU इस कोड को सीधे पढ़ और run कर सकता है। इसे किसी और translation की जरूरत नहीं होती। यह सबसे तेज तरीका है कंप्यूटर को instruction देने का।
मशीन-विशिष्ट: अलग-अलग तरह के CPUs (जैसे Intel, AMD, ARM) की अपनी अलग मशीन भाषा होती है। एक CPU के लिए लिखा गया मशीन कोड दूसरे प्रकार के CPU पर नहीं चलेगा।
मनुष्यों के लिए असमझेय: इंसानों के लिए 0s और 1s के इन लंबे sequences को पढ़ना, याद रखना और लिखना लगभग नामुमकिन है।
कोई भी इंसान सीधे मशीन कोड नहीं लिखता। यह automatic बनता है:
प्रोग्रामर एक High-Level Language (जैसे Python, Java) या Assembly Language में कोड लिखता है।
एक कम्पाइलर (Compiler) या असेम्बलर (Assembler) इस human-readable code को पूरा का पूरा पढ़कर मशीन कोड में translate कर देता है।
यह मशीन कोड एक .exe (Windows) या .out (Linux) जैसी फाइल में save हो जाता है।
जब आप उस program को चलाते हैं, तो CPU सीधे इसी मशीन कोड फाइल को पढ़ता और execute करता है।
Process Flow: प्रोग्रामर का लिखा कोड (C++/Java) → कम्पाइलर → मशीन कोड (0s और 1s) → CPU → रिजल्ट
मान लीजिए आपने C language में लिखा:
int a = 5 + 3;
कम्पाइलर इसे मशीन कोड में कुछ इस तरह बदल देगा (यह just एक example है, actual code much longer होता है):
10110000 00000101 // value 5 को एक जगह रखो
00000100 00000011 // उसमें 3 जोड़ो
10100010 ........ // result को memory में save करो
CPU इन्हीं बाइनरी instructions को एक-एक करके execute करेगा।
सोर्स कोड (Source Code) वह मूल कोड या आदेशों की सूची होती है जिसे एक प्रोग्रामर (Programmer) किसी प्रोग्रामिंग भाषा (जैसे Python, Java, C++) में लिखता है। इसे मानव-पठनीय (Human-Readable) कोड भी कहते हैं क्योंकि यह इंसानों के समझने लायक होता है।
कल्पना कीजिए आप एक रेसिपी लिख रहे हैं। आप हिंदी/अंग्रेजी में लिखेंगे:
"सबसे पहले 2 कप आटा लें"
"उसमें 1 कप पानी मिलाएं"
"अच्छे से गूंथ लें"
यह रेसिपी ही सोर्स कोड है। यह clear और समझने में आसान है।
सोर्स कोड का उदाहरण (Python में):
# यह एक सोर्स कोड है
naam = input("अपना नाम बताएं: ")
umr = int(input("अपनी उम्र बताएं: "))
if umr >= 18:
print("नमस्ते", naam, "! आप वोट दे सकते हैं।")
else:
print("नमस्ते", naam, "! आप अभी वोट देने के लिए छोटे हैं।")
इस कोड को देखकर आप अंदाजा लगा सकते हैं कि यह प्रोग्राम क्या करेगा।
मानव-पठनीय (Human-Readable): यह English के शब्दों और गणित के symbols से बना होता है, जिसे प्रोग्रामर आसानी से पढ़, समझ और बदल सकता है।
टेक्स्ट फाइल: सोर्स कोड साधारण टेक्स्ट फाइलों (.py, .java, .cpp) में save होता है।
निर्माण खंड (Building Blocks): सोर्स कोड ही वह चीज है जिसे कम्पाइलर (Compiler) या इंटरप्रेटर (Interpreter) पढ़ता है और उसे मशीन कोड (0s और 1s) में बदलता है।
लॉजिक और एल्गोरिदम: इसमें प्रोग्राम का पूरा तर्क (Logic) और कार्य करने का तरीका (Algorithm) लिखा होता है।
सोर्स कोड अपने आप में चलने लायक नहीं होता। उसे चलाने के लिए उसे मशीन कोड में बदलना पड़ता है। यह काम दो तरीकों से होता है:
कम्पाइलेशन (Compilation): एक कम्पाइलर पूरे सोर्स कोड को एक साथ पढ़कर एक एक्जिक्यूटेबल फाइल (.exe, .out) में बदल देता है।
Example: C, C++ का कोड
इंटरप्रिटेशन (Interpretation): एक इंटरप्रेटर सोर्स कोड को एक-एक लाइन पढ़ता है और तुरंत execute करता है।
Example: Python, JavaScript का कोड
Process: प्रोग्रामर → सोर्स कोड लिखता है → कम्पाइलर/इंटरप्रेटर → मशीन कोड → कंप्यूटर चलाता है
सोर्स कोड और मशीन कोड में अंतर
सोर्स कोड (Source Code) वह कोड होता है जिसे एक प्रोग्रामर खुद लिखता है। यह इंसानों के लिए बना होता है इसलिए इसे पढ़ना और समझना आसान होता है। सोर्स कोड English के शब्दों (जैसे if, else, print) और गणित के चिन्हों (जैसे +, -, *) से मिलकर बना होता है। यह एक साधारण टेक्स्ट फाइल की तरह होता है जिसे कोई भी टेक्स्ट एडिटर खोलकर देख और बदल सकता है। सोर्स कोड में प्रोग्राम का पूरा तर्क और काम करने का तरीका लिखा होता है।
मशीन कोड (Machine Code) वह कोड होता है जिसे कंप्यूटर का प्रोसेसर (CPU) सीधे समझता और चला सकता है। यह सिर्फ 0 और 1 की भाषा में होता है, जिसे बाइनरी कोड भी कहते हैं। इंसानों के लिए इसे पढ़ना या समझना लगभग नामुमकिन होता है। मशीन कोड सोर्स कोड से automatic बनता है, जब एक कम्पाइलर या इंटरप्रेटर सोर्स कोड का अनुवाद करता है। यह एक बाइनरी फाइल के रूप में होता है जिसे सीधे execute किया जा सकता है।
Read Full Blog...High-Level Language (HLL) क्या है?
एक High-Level Language (HLL) या उच्च-स्तरीय भाषा एक प्रोग्रामिंग भाषा है जो इंसानों (प्रोग्रामर) के लिए बनाई गई है। यह English के शब्दों और गणित के सिंबल्स (जैसे +, -, *, /) से मिलकर बनी होती है, जिसे आम इंसान आसानी से पढ़ और समझ सकता है।
इसका नाम 'उच्च-स्तरीय' इसलिए है क्योंकि यह कंप्यूटर के हार्डवेयर (जैसे प्रोसेसर, मेमोरी) से बहुत दूर एक 'ऊँचे स्तर' पर काम करती है। प्रोग्रामर को यह जानने की जरूरत नहीं होती कि कंप्यूटर का CPU अंदर से कैसे काम करता है।
उदाहरण के लिए, एक High-Level Language में लिखा गया कोड:
answer = 5 + 3 if answer > 10: print("बड़ी संख्या") else: print("छोटी संख्या")
इस कोड को देखकर आप अंदाजा लगा सकते हैं कि यह क्या कर रहा है, क्योंकि यह English और गणित के सरल नियमों जैसा दिखता है।
इंसानों के लिए आसान (Human-Friendly): इसे लिखना, पढ़ना और समझना आसान है क्योंकि यह हमारी बोलचाल की भाषा के करीब है।
मशीन से स्वतंत्र (Machine Independent): HLL में लिखा गया एक program अलग-अलग तरह के कंप्यूटरों (जैसे Windows, Mac, Linux) पर चलाया जा सकता है। बस उसके लिए अलग-अलग कम्पाइलर की जरूरत होती है।
कोड छोटा और सरल (Short & Simple Code): एक छोटे से code लाइन में बहुत बड़ा काम करवाया जा सकता है। जैसे c = a + b लिखने भर से दो numbers जोड़े जा सकते हैं।
डीबग करना आसान (Easier to Debug): इसमें गलतियाँ (errors) ढूंढना और सुधारना相对 आसान होता है।
Python
Java
C++
JavaScript
C#
PHP
Ruby
एक High-Level Language को कंप्यूटर सीधे नहीं समझ सकता। कंप्यूटर सिर्फ 0 और 1 (बाइनरी कोड) की भाषा समझता है। इसीलिए कम्पाइलर की जरूरत पड़ती है।
कम्पाइलर का काम होता है High-Level Language में लिखे गए कोड को पूरा का पूरा पढ़कर उसे कंप्यूटर की बाइनरी भाषा (मशीनी कोड) में अनुवाद (Translate) करना। तब जाकर कंप्यूटर उस program को चला पाता है।
सरल शब्दों में: प्रोग्रामर → High-Level Language में कोड लिखता है → कम्पाइलर → उसे मशीनी कोड में बदलता है → कंप्यूटर → प्रोग्राम चलता है।
Low-Level Language (LLL) क्या है?
एक Low-Level Language (LLL) या निम्न-स्तरीय भाषा वह भाषा है जो सीधे कंप्यूटर के हार्डवेयर (विशेष रूप से CPU) से संवाद करती है। यह मशीन के बहुत करीब होती है और इंसानों के लिए समझने में कठिन होती है।
उदाहरण के लिए: जबकि High-Level Language में आप लिखते हैं a = 5 + 3, Low-Level Language में यही काम करने के लिए आपको multiple complex instructions लिखनी पड़ सकती हैं।
मशीनी भाषा (Machine Language - 1st Generation)
यह 0s और 1s (बाइनरी कोड) में होती है
CPU इसे सीधे समझता और execute करता है
Example: 10110000 01100101
असेम्बली भाषा (Assembly Language - 2nd Generation)
यह मशीनी भाषा से थोड़ी आसान होती है
इसमें Mnemonics (संक्षिप्त कोड) का use होता है
Example: MOV AL, 61h
मशीन निर्भर (Machine Dependent)
अलग-अलग processors के लिए अलग assembly code
Intel processor के लिए लिखा code ARM processor पर नहीं चलेगा
हार्डवेयर तक सीधी पहुंच
Memory, registers और hardware components को directly access कर सकते हैं
उच्च performance
Direct hardware access के कारण programs तेज चलते हैं
कोई translation overhead नहीं होता
समझने में कठिन
केवल 0s और 1s या cryptic codes
Debugging और maintenance मुश्किल
ऑपरेटिंग सिस्टम बनाने में
डिवाइस ड्राइवर्स लिखने में
एम्बेडेड सिस्टम programming में
रियल-टाइम सिस्टम में
फर्मवेयर विकास में
High-Level Language (उच्च-स्तरीय भाषा):
यह वह भाषा है जो इंसानों के लिए बनाई गई है। इसे पढ़ना, लिखना और समझना आसान होता है क्योंकि यह English के शब्दों और गणित के चिन्हों से मिलकर बनी होती है। जैसे Python, Java, C++ जैसी भाषाएँ। इनमें लिखा कोड मशीन से स्वतंत्र होता है, यानी एक ही कोड को अलग-अलग कंप्यूटरों पर चलाया जा सकता है। इनमें programming करना तो आसान होता है लेकिन ये थोड़ी धीमी होती हैं क्योंकि इन्हें चलाने से पहले कम्पाइलर या इंटरप्रेटर की मदद से मशीनी भाषा में बदलना पड़ता है।
Low-Level Language (निम्न-स्तरीय भाषा):
यह वह भाषा है जो सीधे कंप्यूटर के हार्डवेयर से बात करती है। इसे इंसानों के लिए समझना बहुत मुश्किल होता है क्योंकि यह बाइनरी कोड (0 और 1) या Assembly जैसी संक्षिप्त कोड में होती है। यह मशीन पर निर्भर होती है, यानी अलग-अलग प्रोसेसर के लिए अलग कोड लिखना पड़ता है। इसमें लिखे प्रोग्राम बहुत तेज चलते हैं क्योंकि उन्हें किसी translation की जरूरत नहीं होती, लेकिन इन्हें लिखना और डीबग करना बहुत कठिन होता है। इसका इस्तेमाल ज्यादातर ऑपरेटिंग सिस्टम, डिवाइस ड्राइवर या फर्मवेयर बनाने में होता है।
Read Full Blog...डाटाबेस सूचनाओं का एकत्रीकरण और वांछित डाटा अंश को व्यवस्थित करने की प्रक्रिया के डाटाबेस कहा जाता है। डाटाबेस को आप इलेक्ट्रॉनिक फाइलिंग प्रणाली मान सकते हैं।
डाटाबेस मैनेजमेंट सिस्टेम (DBMS) कम्प्यूटर प्रोग्रामों या सॉफ्टवेयर का एकत्रीकरण है, जो संचयन परिवर्तन और डाटाबेस से सूचना प्राप्त करने की अनुमति देता है। अनेक प्रकार के
DBMS उपलब्ध हैं. उनका विस्तार छोटी प्रणालियाँ जो पर्सनल कम्प्यूटर पर काम करते हैं, से लेकर बडी प्रणालियों जो मेइनफ्रेग्स पर काम करते हैं, तक है। एक्सेस (ACCESS), फॉक्सप्रो (FoxPro), और डीबेस (dBase) इसके उदाहरण हैं।
रिलेशनल डाटाबेस, डाटा मदों का एकत्रीकरण और उनका औपचारिक निर्धारित टेबलों के सेट के रूप में संगठित करना है, जिसमें से डाटा को प्राप्त किया जा सकता है या डाटाबेस टेबलों को पुनःसंगठित किये बिना उनका पुनःएकत्री करण किया जा सकता है।
रिलेशनल डाटाबेस सभी डाटाओं को टेबल्स में संचित करता है। डाटा टेबल पंक्तियों औरस्तम्भों का समूह है। यह अत्यन्त महत्वपूर्ण है, क्योंकि इसके घटकों को छाँटने का पूर्व निर्धारित क्रम नहीं है। प्रत्येक पंक्ति, स्तम्भों का समूह है जिसमें केवल एक मूल्य होता है। एक ही टेबल के सभी पंक्तियों में एक ही समूह के स्तम्भ होते है।
रिलेशनल डाटाबेस सिस्टेम (RDBMS), डाटाबेस मैनेजमेंट सिस्टेम (DBMS), का एक प्रकार है जो डाटा को संबंधित टेबलों के रूप में संचित करता है। रिलेशनल डाटाबेस सशक्त हैं क्योंकि उनसे डाटा किस प्रकार संबंधित है
Read Full Blog...भाषा एक संचार साधन है। साधन है। 'कम्प्यूटर के साथ संचार करने के लिए प्रत्येक भाषा चिहनों, वर्षों, शब्दों (मुख्य शब्द) और नियमों (वाक्य संरचना) से निहित होती है। कम्प्यूटर भाषाओं का उपयोग, सभी अनुप्रयोग सॉफ्टवेयर पैकेज, संकलक, प्रचालन प्रणालियों को बनाने में किया जाता है। हम. कम्प्यूटर भाषाओं को तीन स्तरों में वर्गीकृत कर सकते हैं: वे निम्न प्रकार है:
1. मशीनी भाषा
2. निम्नस्तरीय भाषा या असेम्ब्ली भाषा
3. उच्च स्तरीय भाषा
कम्प्यूटर कंवल दो अंकों का उपयोग कर लिखे गये प्रोग्राम का निष्पादन कर सकता है। इस प्रकार के प्रोग्राम को मशीनी भाषा प्रोग्राम कहा जाता है। क्योंकि इन प्रोग्रामों में मात्र '0' और 1' का ही प्रोग्राम किया जाता है अतः जटिल समस्याओं के हल के लिए प्रोग्राम बनाना कवित है। इसके अतिरिक्त एक व्यक्ति द्वारा लिखा गया मशीनी भाषा प्रोग्राम दूसरे व्यक्ति के लिए समझने में कठिन होती है। वस्तुत, कम्प्यूटर के उपयोगकर्ता मशीन का उपयोग कर प्रोग्राम नहीं लिखते। एक मशीन के लिए लिखे गये प्रोग्राम का दूसरे प्रकार के कम्प्यूटर पर प्रयोग नहीं किया जा सकता अर्थात् प्रोग्राम मशीन आधारित होते हैं।
उच्च स्तरीय भाषाएँ मानवी भाषाओं के करीब होती है, तथा निम्न स्तरीय भाषाएँ हार्डवेयर करीब होती है।
असेम्ब्ली भाषा में, समस्या का हल करने के लिए प्रोग्राम तैयार करने में निमोनिय (Mnemonic) कोडों का उपयोग किया जाता है। नीचे दर्शाया गया प्रोग्राम असेम्ब्ली भाष प्रोग्राम है
A पढ़ें। A का मूल्य पढ़ेगा
B जोडे। A के साथ B का मूल्य जोडेग
हाल्ट HALT। निष्पादन रोकेगा
FORTRAN (Formula Translation), BASIC (Beginner's All Symbolic Instruction Code), COBOL (Common Business OrienteLanguage), हाल ही में विकसित प्रोग्रामिंग भाषाएँ जैसे विजुअल फॉक्स प्रो. विजुअल बेशिक जोड़ने के लिए निम्नलिखित बेसिक भाषा प्रोग्राम लिखा गया है। (VB), विजुअल C++ (VC++) आदि सॉफ्टवेयर डेवलपरों में लोकप्रिय है।
अनुवाद प्रोग्राम (Translation Programs) कहलाते हैं। इन अनुवाद प्रोग्रामों का उपयोग कर, कम्प्यूटर द्वारा पढ़े जाने योग्य प्रोग्रामों को अन्तरित किया जाता है। संकलक और दुभाषियों का उपयोग उपयोगकर्ता प्रोग्राम को मशीनी भाषा में अनुवाद करने के लिए किया जाता है।
कम्पाइलर उच्च स्तरीय भाषा में लिखे प्रोग्राम को निष्पादन योग्य मशीनी अनुदेशों में अनुदित करता है। स्त्रोत प्रोग्राम की प्रत्येक पंक्ति को इनपुट माना जाता है और फिर उसे सुलभबनाया जाता है। फिर इसे एक या अनेक पंक्तियों वाले मशीनी भाषा उद्देश्य कोडों में परिवर्तित किया जाता है। संकलन के दौरान होने वाली त्रुटियों से आपको अवगत कराया जाता है। यदि संपूर्ण प्रोग्राम त्रुटिहीन हो, तो, संकलन कर उद्देश्य कोड तैयार किया जाता है। भविष्य में उपयोग के लिए इस उद्देश्य कोड़ का मण्डारण किया जाता है।
COBOL एवं C भाषाओं के कम्पाइलर, इसके उदाहरण हैं।
यह भी एक अनुवाद प्रोग्राम है जिसका उपयोग करके उच्चस्तरीय भाषा प्रोग्राम को मशीनी भाषा प्रोग्राम में अनुवाद किया जाता है। किन्तु यह अनुदेशों को पंक्ति-दर-पंक्ति में अनुवाद और निष्पादन करता है।
BASIC भाषा दुभाषित भाषा का श्रेष्ठ उदाहरण है।
यह एक प्रकार का अनुवाद प्रोग्राम है जिसका उपयोग असेम्ब्ली भाषा प्रोग्राम को मशीन भाष प्रोग्राम में अनुवाद करने के लिए किया जाता है।
चतुर्थ पीढ़ी भाषा एक उच्च स्तरीय भाषा है जिसका उपयोग विशेषकर, सशक्त अर्थ और वाक्य रचनावाले अनुप्रयोग प्रोग्रामिंग के लिए किया जाता है। प्रोग्रामरों को अत्यधिक गति से प्रणाली को विकसित करने की सुविधा उपलब्ध कराता है।
4GL. इस तरह प्रक्रियाकृत और प्रतिकृत है कि उपयोगकर्ता, कम्प्यूटर में प्रक्रियाकरण का कार्य कैसे पूरा होता है. इसकी जानकारी के बिना ही अपनी आवश्यकताओं का उल्लेख कर सकें।
यद्यपि प्यूर 4GL में एक कमी यह है कि यह मात्र विकास के छोटे और अति उच्च विशिष्ट क्षेत्र की समस्या का ही हल कर सकता है। स्क्रीन पेइंटर, रिपोर्ट जेनरेटर और उपयोगकर्ता क्वेरी लैंगुएज आदि प्यूर चतुर्थ पीढ़ी भाषाएँ हैं, प्रणाली विकास प्रक्रिया में इनमें से प्रत्येक का सीमित उपयोग होता है।
चतुर्थ पीढ़ी भाषाओं के इस एकीकरण को FOURTH GENERATION ENVIRONMEN (4GE) के नाम से जाना जाता है। प्यूर" चतुर्थ पीढ़ी भाषाओं के संघटक:
एन्ड-यूसर क्वेरी लैंगुएज (उदा. SQL),
स्क्रीन फॉरमाटर (उदा. SQL* फॉर्म में ओरैकल स्क्रीन पेइंटर),
रिपोर्ट जेनरेटर
ओरैकल चतुर्थ पीढ़ी भाषा है।
डाटा डिक्शनरी उपयोगकर्ता डाटाबेस न होकर सिस्टम डाटाबेस है, जिसमें डाटा के विपरी मेटाडाटा निहित होता है।
डाटाबेस मैनेजमेंट सिस्टेम दो प्रकार से कार्य करता है:
यह 4GE के संघटकों का उपयोग कर विकसित प्रणालियों के फाइलों का रखरखाव करता है।
यह वह सॉफ्टवेयर है जो डाटा डिक्शनरी का प्रबंधन करता है।
Read Full Blog...Software कंप्यूटर के लिए एक set of instructions (निर्देशों का समूह) होता है। यह वह Invisible thing है जो कंप्यूटर के Hardware (जैसे कीबोर्ड, माउस, CPU) को बताती है कि क्या करना है।
OR
Software एक collection होता है executable instructions, data, और programs का, जो computer के hardware को specific tasks perform करने का निर्देश देता है। यह computer system का non-tangible component है जो hardware के साथ मिलकर functionality provide करता है और users को problems solve करने, processes automate करने, या entertainment provide करने में सक्षम बनाता है।
Professional terms में, software सिर्फ एक single program नहीं है, बल्कि code, libraries, documentation, और services का एक comprehensive set है जो मिलकर काम करता है।
उदाहरण: कंप्यूटर का Hardware आपका शरीर है (हाथ, पैर, दिमाग, दिल)। और Software आपकी आत्मा/विचार/ज्ञान है। जिस तरह विचारों के बिना शरीर बेजान है, उसी तरह Software के बिना कंप्यूटर सिर्फ एक प्लास्टिक और धातु का डिब्बा है।
Software मुख्य रूप से दो प्रकार के होते हैं:
1. सैद्धान्तिक सॉफ्टवेयर System Software
2. अनुप्रयोग सॉफ्टवेयर Application Software
1. सिस्टम सॉफ्टवेयर (System Software)
यह कंप्यूटर चलाने के लिए जरूरी बुनियादी Software है। यह उपयोगकर्ता (User) और कंप्यूटर के Hardware के बीच में काम करता है।
उदाहरण:
ऑपरेटिंग सिस्टम (OS): जैसे Windows, macOS, Linux, Android, iOS। यह सबसे महत्वपूर्ण सॉफ्टवेयर है जो आपके कंप्यूटर या फोन को शुरू (Start) होने और चलने की क्षमता देता है।
डिवाइस ड्राइवर (Device Drivers): जो प्रिंटर, वेबकैम जैसे बाहरी उपकरणों को कंप्यूटर से जोड़ने का काम करते हैं।
2. एप्लिकेशन सॉफ्टवेयर (Application Software)
यह वे Software हैं जिन्हें उपयोगकर्ता अपने किसी खास काम के लिए इस्तेमाल करते हैं। ये System Software के ऊपर चलते हैं।
उदाहरण:
वेब ब्राउजर: Chrome, Firefox (इंटरनेट चलाने के लिए)
MS Office Suite: Word (लिखने के लिए), Excel (हिसाब-किताब के लिए)
फोटो एडिटिंग सॉफ्टवेयर: Photoshop
गेम्स: PUBG, Candy Crush
ऐप्स: WhatsApp, YouTube, Amazon
अनुप्रयोग सॉफ्टवेयर (जिसे एप्लिकेशन सॉफ्टवेयर या संक्षेप में ऐप भी कहते हैं) वह सॉफ्टवेयर होता है जो उपयोगकर्ता (End-User) के लिए बनाया जाता है ताकि वह कोई विशिष्ट कार्य (Specific Task) कर सके। यह सिस्टम सॉफ्टवेयर के ऊपर चलता है।
कल्पना कीजिए आपके कंप्यूटर/फोन में Windows या Android (सिस्टम सॉफ्टवेयर) है। यह एक खाली मंच (Stage) की तरह है। इस मंच पर जो भी कलाकार (Artist) perform करते हैं, वे सभी अनुप्रयोग सॉफ्टवेयर हैं।
और भी आसान उदाहरण:
सिस्टम सॉफ्टवेयर → रसोईघर (बर्तन, चाकू, स्टोव)
अनुप्रयोग सॉफ्टवेयर → विभिन्न व्यंजनों की रेसिपी (चाय बनाने की विधि, दाल बनाने की विधि)
दस्तावेज़ बनाने के लिए: MS Word और Google Docs जैसे सॉफ्टवेयर का उपयोग होता है। ये रिपोर्ट, लेटर और रिज्यूमे बनाने का काम करते हैं।
गणना करने के लिए: MS Excel और Google Sheets जैसे सॉफ्टवेयर उपयोग में आते हैं। ये डेटा का हिसाब-किताब और चार्ट बनाने का कार्य करते हैं।
प्रस्तुति बनाने के लिए: MS PowerPoint और Canva जैसे अनुप्रयोग प्रयोग किए जाते हैं। ये स्लाइडशो और प्रेजेंटेशन तैयार करने में सहायक होते हैं।
संचार के लिए: WhatsApp, Gmail और Zoom जैसे सॉफ्टवेयर इस्तेमाल होते हैं। ये मैसेज भेजने, ईमेल करने और वीडियो कॉल का कार्य संपन्न करते हैं।
मनोरंजन के लिए: YouTube, Spotify और विभिन्न Games जैसे अनुप्रयोग उपलब्ध हैं। ये वीडियो देखने, संगीत सुनने और गेम खेलने की सुविधा प्रदान करते हैं।
फोटो संपादन के लिए: Adobe Photoshop और Snapseed जैसे सॉफ्टवेयर प्रयोग किए जाते हैं। ये तस्वीरों को एडिट और एन्हांस करने का काम करते हैं।
वेब ब्राउज़िंग के लिए: Chrome, Firefox और Edge जैसे ब्राउज़र उपयोग में आते हैं। ये इंटरनेट पर वेबसाइटें देखने की सुविधा प्रदान करते हैं।
उपयोगकर्ता-केंद्रित (User-Centric): यह सीधे end-user की जरूरतों को पूरा करता है।
विशिष्ट उद्देश्य (Specific Purpose): हर ऐप का एक खास मकसद होता है (जैसे- Word टाइपिंग के लिए, Excel Calculation के लिए)।
सिस्टम सॉफ्टवेयर पर निर्भर: ये ऑपरेटिंग सिस्टम (जैसे Windows, Android) के ऊपर ही चलते हैं।
इंस्टॉल/अनइंस्टॉल करने योग्य: उपयोगकर्ता अपनी जरूरत के हिसाब से apps को install या remove कर सकता है।
जनरल-पर्पस सॉफ्टवेयर (General-Purpose): सामान्य कार्यों के लिए बने software। जैसे- web browser, word processor.
कस्टमाइज्ड सॉफ्टवेयर (Customized): किसी specific organization की खास जरूरतों के लिए बनाया गया software। जैसे- किसी बैंक के लिए अलग से बना accounting software.
वेब-आधारित अनुप्रयोग (Web-Based Apps): जिन्हें चलाने के लिए internet और browser की जरूरत होती है। जैसे- Netflix, Facebook.
मोबाइल ऐप्स (Mobile Apps): स्मार्टफोन और टैबलेट के लिए बने apps। जैसे- Instagram, Paytm.
ये कम्प्यूटर प्रणाली के लिए लिखे जाने वाले सामान्य प्रोग्राम हैं, जो अनुप्रयोग सॉफ्टवेयर लिखने के लिए सही वातावरण उपलब्ध कराने की सुविधा प्रदान करते हैं। कुछ सैद्धान्तिक प्रोग्राम नीचे दिये गये हैं।
कम्पाइलर (Compiler)
यह एक अनुवाद प्रणाली प्रोग्राम है, जिसका प्रयोग उच्च-स्तरीय भाषा प्रोग्राम को मशीन स्तरीय भाषा प्रोग्राम में अन्तरण (change) के लिए किया जाता है।
एक कम्पाइलर एक ऐसा ट्रांसलेटर प्रोग्राम (अनुवादक) है जो उच्च-स्तरीय भाषा (High-Level Language) में लिखे गए सोर्स कोड (Source Code) को निम्न-स्तरीय भाषा (Low-Level Language) यानी मशीनी कोड (Machine Code) में बदलता है, जिसे कंप्यूटर सीधे समझ और Execute (निष्पादित) कर सकता है।
आसान उदाहरण के लिए समझें:
प्रोग्रामर अंग्रेजी जैसी आसान भाषा (जैसे C++, Java, Python) में कोड लिखता है। इसे सोर्स कोड कहते हैं।
कंप्यूटर सिर्फ 0s और 1s (बाइनरी कोड) की भाषा समझता है। इसे मशीनी कोड/ऑब्जेक्ट कोड कहते हैं।
कम्पाइलर इन दोनों के बीच का दुभाषिया (Interpreter) है। यह प्रोग्रामर की भाषा को कंप्यूटर की भाषा में पूरा का पूरा अनुवाद कर देता है।
कम्पाइलर का काम सिर्फ अनुवाद करना ही नहीं है, बल्कि यह कई चरणों में पूरा होता है:
लेक्सिकल एनालिसिस (Lexical Analysis): सोर्स कोड को छोटे-छोटे टुकड़ों (Tokens) में तोड़ता है, जैसे keywords, identifiers, operators आदि। यह बच्चों को पढ़ाने के लिए वाक्यों को शब्दों में तोड़ने जैसा है।
सिंटैक्स एनालिसिस (Syntax Analysis): यह जांचता है कि Tokens सही क्रम (Grammar) में हैं या नहीं। अगर कोई grammatical mistake (Syntax Error) है, तो यहीं रुक जाता है और error दिखाता है। यह किसी वाक्य की व्याकरणिक जांच करने जैसा है।
सिमेंटिक एनालिसिस (Semantic Analysis): यह जांचता है कि कोड का अर्थ सही है या नहीं। जैसे, किसी number को string से जोड़ने की कोशिश करना। यह "दो और आम का जूस" जैसे वाक्य की अर्थहीनता को पकड़ता है।
इंटरमीडिएट कोड जनरेशन (Intermediate Code Generation): कम्पाइलर एक ऐसा कोड बनाता है जो मशीन से स्वतंत्र होता है (जैसे Bytecode)। इसका उपयोग अलग-अलग प्लेटफॉर्म के लिए कोड बनाने में होता है।
कोड ऑप्टिमाइजेशन (Code Optimization): जनरेट किए गए कोड को और भी कुशल (Efficient) और तेज (Faster) बनाने के लिए optimize किया जाता है, ताकि यह कम memory और कम time ले।
कोड जनरेशन (Code Generation): आखिरी स्टेप में, ऑप्टिमाइज्ड कोड को सीधे मशीनी कोड (0s और 1s) में बदल दिया जाता है, जिसे एक्सेक्यूटेबल फाइल (.exe, .out, आदि) के रूप में सेव कर दिया जाता है।
इस पूरी प्रक्रिया को कम्पाइलेशन (Compilation) कहते हैं।
GCC (GNU Compiler Collection): C, C++ जैसी भाषाओं के लिए सबसे प्रसिद्ध कम्पाइलर।
Java Compiler (javac): Java कोड को Bytecode में कम्पाइल करता है।
.NET Compiler: C#, VB.NET आदि के लिए Microsoft का कम्पाइलर।
तेज Execution: एक बार कम्पाइल होने के बाद प्रोग्राम बहुत तेजी से चलता है क्योंकि कंप्यूटर को दोबारा अनुवाद करने की जरूरत नहीं पड़ती।
सुरक्षा (Security): एक्सेक्यूटेबल फाइल में सोर्स कोड छुपा होता है, जिसे आसानी से नहीं देखा या बदला जा सकता।
एरर डिटेक्शन: कम्पाइलेशन के time पर ही syntax और semantic errors पकड़ में आ जाते हैं।
असेम्ब्लर (Assembler)
यह एक और अनुवाद प्रोग्राम है. जिसका प्रयोग असेम्ब्ली भाषा प्रोग्राम को मशीन भाषा प्रोग्राम में अस्तरण (change) करने के लिए किया जाता है।
OR
असेम्ब्लर (Assembler) क्या है?
एक असेम्ब्लर (Assembler) एक विशेष प्रकार का सिस्टम सॉफ्टवेयर है जो असेम्बली भाषा (Assembly Language) में लिखे गए प्रोग्राम को मशीनी भाषा (Machine Language) में परिवर्तित करता है। यह निम्न-स्तरीय प्रोग्रामिंग के लिए एक अनुवादक का कार्य करता है।
सरल भाषा में समझें: असेम्बली भाषा में प्रोग्राम लिखने के लिए मनमोनिक्स (Mnemonics) का उपयोग किया जाता है, जैसे:
ADD (जोड़ना)
SUB (घटाना)
MOV (स्थानांतरित करना)
असेम्ब्लर इन मनमोनिक्स को बाइनरी कोड (0 और 1) में बदल देता है जिसे कंप्यूटर सीधे समझ सकता है।
मनमोनिक्स को ऑपकोड में परिवर्तित करना - असेम्बली निर्देशों को बाइनरी मशीन कोड में बदलना
प्रतीकात्मक पतों का समाधान करना - चर और लेबलों के नामों को वास्तविक मेमोरी एड्रेस में बदलना
त्रुटि जाँच - वाक्य रचना (Syntax) की त्रुटियों का पता लगाना
मशीन कोड उत्पन्न करना - अंतिम निष्पादन योग्य बाइनरी फाइल तैयार करना
एकल पास असेम्ब्लर (Single Pass Assembler)
स्रोत कोड को केवल एक बार पढ़ता है
तेज गति से कार्य करता है
आगे के संदर्भों को संभाल नहीं सकता
बहु-पास असेम्ब्लर (Multi-Pass Assembler)
स्रोत कोड को कई बार पढ़ता है
जटिल प्रोग्रामों के लिए उपयुक्त
सभी प्रकार के संदर्भों को संभाल सकता है
कम्पाइलर से तीव्र - अनुवाद प्रक्रिया अधिक तेज होती है
हार्डवेयर नियंत्रण - सीधे हार्डवेयर तक पहुँच संभव
दक्षता - निष्पादन तेज और मेमोरी कुशल
सटीकता - निर्देशों का सीधा नियंत्रण संभव
ऑपरेटिंग सिस्टम विकास
डिवाइस ड्राइवर निर्माण
एम्बेडेड सिस्टम प्रोग्रामिंग
फर्मवेयर विकास
सिस्टम सॉफ्टवेयर निर्माण
असेम्बली कोड:
text
MOV AL, 61h ADD AL, 20h
असेम्ब्लर इसे इस प्रकार बाइनरी कोड में बदलेगा:
text
10110000 01100001 00000100 00100000
इन्टरप्रेटर (Interpreter):
यह भी एक अनुवाद सिद्धान्त प्रोग्राम है जिसका उपयोग उच्च स्तरीय भाषा प्रोग्राम को मशीनी भाषा प्रोग्राम में अन्तरण (change) के लिए किया जाता है किन्तु यह पकित-दर-पकित अनुबाद कर निष्पादन करता है
OR
इंटरप्रेटर (Interpreter) क्या है?
एक इंटरप्रेटर (Interpreter) एक प्रकार का ट्रांसलेटर प्रोग्राम है जो उच्च-स्तरीय प्रोग्रामिंग भाषा में लिखे गए सोर्स कोड को लाइन-बाय-लाइन पढ़ता है और उसे तुरंत निष्पादित (execute) करता है। यह कोड को पूरा का पूरा translate करके एक executable file बनाने के बजाय, real-time में translation और execution दोनों करता है।
कल्पना कीजिए आप एक दुभाषिया (Interpreter) की तरह हैं जो:
English में बोले गए एक वाक्य को सुनता है
उसका तुरंत हिंदी में अनुवाद करता है
अनुवाद सुनाकर तुरंत प्रतिक्रिया देता है
फिर अगला वाक्य सुनता है
यही इंटरप्रेटर का काम है। यह पूरी कहानी का एक साथ अनुवाद नहीं करता, बल्कि step-by-step काम करता है।
पहली लाइन पढ़ता है
उसे मशीन-समझने योग्य निर्देशों में बदलता है
तुरंत execute करता है
अगली लाइन की ओर बढ़ता है
अगर कोई त्रुटि (error) मिलती है, तो execution तुरंत रुक जाती है
उदाहरण:
python
print("नमस्ते दुनिया") x = 5 + 3 print(x)
इंटरप्रेटर पहली लाइन execute करेगा, फिर दूसरी, फिर तीसरी।
लाइन-बाय-लाइन निष्पादन
तुरंत परिणाम दिखाता है
त्रुटि मिलते ही execution रुक जाती है
कोई अलग executable file generate नहीं होती
डिबगिंग आसान होती है
प्लेटफॉर्म स्वतंत्र: एक ही कोड किसी भी platform पर चल सकता है
डिबगिंग आसान: त्रुटि मिलते ही execution रुक जाती है
इंटरएक्टिव: execution के दौरान user input allow करता है
अलग compilation की आवश्यकता नहीं: बार-बार compile करने की जरूरत नहीं
निष्पादन धीमा: हर बार translation करना पड़ता है
कोई executable file नहीं: हर बार source code needed
रनटाइम त्रुटियाँ: Program run होने के बाद errors मिल सकती हैं
Python
JavaScript
Ruby
PHP
Perl
लोडर (Loader):
यह एक सैध्दान्तिक प्रोग्राम है जिसका उपयोग मशीनी भाषा प्रोग्राम को कम्प्यूटर की मेमोरी में संचित करने के लिए किया जाता है।
OR
लोडर (Loader) क्या है?
एक लोडर (Loader) एक महत्वपूर्ण सिस्टम सॉफ्टवेयर है जो कंप्यूटर की मुख्य मेमोरी (RAM) में प्रोग्राम को लोड करने और निष्पादन के लिए तैयार करने का कार्य करता है। यह ऑपरेटिंग सिस्टम का एक अभिन्न अंग है।
कल्पना कीजिए:
कम्पाइलर/असेम्बलर → किताब का लेखक (जो कहानी लिखता है)
ऑब्जेक्ट फाइल → लिखी हुई किताब
लोडर → लाइब्रेरियन (जो किताब को अलमारी से निकालकर पाठक को देता है)
मेमोरी → पाठक की मेज (जहाँ किताब पढ़ी जाती है)
लोडर का काम है executable फाइल को secondary memory (हार्ड डिस्क) से primary memory (RAM) में लाना ताकि CPU उसे execute कर सके।
अनुलग्नक (Linking):
विभिन्न ऑब्जेक्ट मॉड्यूल्स को जोड़ना
लाइब्रेरी रूटीन्स को जोड़ना
पुनः स्थान निर्धारण (Relocation):
मेमोरी एड्रेस को adjust करना
प्रोग्राम को मेमोरी के सही location पर लोड करना
लोडिंग:
executable फाइल को RAM में लोड करना
मेमोरी आवंटन करना
प्रारंभिककरण (Initialization):
प्रोग्राम काउंटर सेट करना
रजिस्टर्स को initialize करना
पूर्ण निरपेक्ष लोडर (Absolute Loader):
सबसे सरल प्रकार का लोडर
ऑब्जेक्ट कोड को पूर्वनिर्धारित मेमोरी location पर लोड करता है
कोई relocation की आवश्यकता नहीं
पुनः स्थाननशील लोडर (Relocating Loader):
ऑब्जेक्ट कोड को किसी भी available memory location पर लोड कर सकता है
addresses को automatically adjust करता है
डायरेक्ट लिंकिंग लोडर (Direct Linking Loader):
सबसे अधिक capability वाला लोडर
multiple object modules को link करता है
external references को resolve करता है
आवंटन (Allocation): प्रोग्राम के लिए मेमोरी स्पेस allocate करना
लोडिंग: executable कोड को memory में copy करना
पुनः स्थानन (Relocation): addresses को adjust करना
लिंकिंग: external references को resolve करना
प्रारंभिककरण: प्रोग्राम execution के लिए तैयार करना
मेमोरी प्रबंधन: efficient memory utilization
मल्टीप्रोग्रामिंग: multiple programs को simultaneously load करना
सुरक्षा: memory protection provide करना
लचीलापन: dynamic loading की सुविधा
आधुनिक ऑपरेटिंग सिस्टम में, लोडर के कार्यों को इन भागों में बाँटा गया है:
बूटलोडर (Bootstrap Loader): कंप्यूटर चालू होने पर OS को load करता है
एग्जिक्यूटिव लोडर: user programs को load करता है
डायनामिक लिंकर: runtime पर libraries को link करता है
उदाहरण:
Windows में - EXE लोडर
Linux में - ELF लोडर
Java में - Class लोडer
1 बैच सिस्टम् (Batch Systems)
2. इन्टिरैक्टिव सिस्टम् (Interactive Systems)
3. मल्टिप्रोग्रामिंग (Multiprogramming)
4. टाइम-शेरिंग कम्प्यूटिंग (Time-sharing computing)
5. मल्टिप्रोसोसिंग (Multiprocessing)
6. मल्टिटास्किंग (Multitasking)
7. मल्टियूजर ऑपरेटिंग सिस्टेम (Multiuser Operating System)
समस्या-परिभाषा Problem definition
समस्या, विचारार्थ या समाधान ढूँढ़ने के लिए उठाया गया प्रश्न है।
Read Full Blog...Simple Definition: Computers are electronic machines. They only understand two states: ON (1) and OFF (0). Therefore, all types of data-numbers, text, images, sound-must be converted into a language of 1s and 0s for the computer to process, store, and transmit it. This language is called the binary number system.
सरल परिभाषा: कंप्यूटर बिजली से चलने वाली मशीनें हैं। वे सिर्फ दो ही states समझते हैं: ON (1) और OFF (0)। इसलिए, हर तरह का डेटा-नंबर, टेक्स्ट, तस्वीर, आवाज-को कंप्यूटर के लिए 1 और 0 की भाषा में बदलना पड़ता है। इस भाषा को बाइनरी नंबर सिस्टम कहते हैं।
The smallest unit of this data is called a Bit (Binary Digit). A group of 8 bits is called a Byte. One byte is enough to represent one character (like a letter 'A' or a number '5').
नंबरों को सीधे बाइनरी में बदला जाता है।
पूर्णांक (Integers): सीधे बाइनरी में कन्वर्ट किए जाते हैं।
नकारात्मक संख्याएं (Negative Numbers): इन्हें 2's Complement विधि से दर्शाया जाता है।
उदाहरण:
दशमलव (Decimal) 5 = बाइनरी 101
दशमलव 10 = बाइनरी 1010
हर अक्षर, अंक या प्रतीक (जैसे A, 5, @) का एक विशेष बाइनरी कोड होता है। इसे Encoding कहते हैं। सबसे common encoding standards हैं ASCII और Unicode।
उदाहरण (ASCII Code):
'A' = 01000001
'5' = 00110101
इमेज्स को छोटे-छोटे डॉट्स में बाँटा जाता है, जिन्हें पिक्सेल कहते हैं। हर पिक्सेल का एक रंग होता है, जिसे numbers से दर्शाया जाता है।
RGB Color Model:
हर रंग Red, Green, Blue के combination से बनता है।
हर colour की value 0 से 255 के बीच होती है।
उदाहरण: सफेद = (255, 255, 255), काला = (0, 0, 0)
ऑडियो एक तरंग (wave) होती है। कंप्यूटर इस wave को Sample करता है, यानि हर छोटे समयांतराल पर उसकी ऊँचाई (Amplitude) measure करता है और उसे एक number assign कर देता है। इस process को Analog to Digital Conversion (ADC) कहते हैं।
उदाहरण:
ज्यादा Samples = बेहतर Sound Quality
इन Samples को बाइनरी में store किया जाता है।
Read Full Blog...
Simple Definition: Computer System Architecture refers to the design, structure, and interaction of the major components that make up a computer system. It's like the blueprint of a computer that defines how all the parts work together to execute instructions and process data.
सरल परिभाषा: कंप्यूटर सिस्टम आर्किटेक्चर, कंप्यूटर सिस्टम के प्रमुख घटकों (components) के डिजाइन, संरचना और आपसी तालमेल को कहते हैं। यह एक कंप्यूटर का वह नक्शा (blueprint) होता है जो बताता है कि सारे parts मिलकर instructions को run करने और data को process करने का काम कैसे करते हैं।
The core of this architecture is based on the Von Neumann Architecture, which is the fundamental design upon which almost all modern computers are built.
Its main concept is the Stored-Program Concept, where both the instructions (program) and the data are stored in the same memory (RAM).
Now, let's understand each component in detail.
1. Central Processing Unit (CPU) - प्रोसेसर (दिमाग)
The CPU is the brain of the computer. It performs all the processing and controls the operation of all other components.
Its main parts are:
Control Unit (CU) - नियंत्रण इकाई: This is the manager of the CPU. It fetches instructions from memory, decodes them, and then directs other components (like the ALU) to execute them. It doesn't perform actual calculations but coordinates everything.
Arithmetic Logic Unit (ALU) - अंकगणित तर्क इकाई: This is the calculator of the CPU. It performs all mathematical calculations (like +, -, *, /) and logical operations (like comparisons: >, <, ==).
Registers - रजिस्टर्स: These are extremely fast, small memory locations inside the CPU itself. They are used to hold temporary data and instructions that the CPU is currently working on. Think of them as the CPU's personal notepad.
2. Memory (मेमोरी) - स्मृति
This is where the computer stores data and instructions. It's of two primary types:
Main Memory (Primary Storage) - RAM (रैंडम एक्सेस मेमोरी): This is the computer's short-term memory. It is very fast and volatile (its contents are lost when the power is turned off). It holds the data and programs that are currently in use by the CPU. The more RAM a computer has, the more applications it can run smoothly at the same time.
Cache Memory (कैशे मेमोरी): This is a very small, extremely fast memory located inside or very close to the CPU. It acts as a buffer and holds the most frequently used data from RAM to speed up the CPU's access time.
3. Input/Output (I/O) Devices - इनपुट/आउटपुट उपकरण
These are the components that allow the computer to interact with the outside world.
Input Devices: These bring information into the computer. Examples: Keyboard (कीबोर्ड), Mouse (माउस), Scanner (स्कैनर), Microphone (माइक्रोफोन).
Output Devices: These send information out from the computer. Examples: Monitor (मॉनिटर), Printer (प्रिंटर), Speakers (स्पीकर्स).
4. Storage Unit (संचयन इकाई) - Secondary Storage
This is the computer's long-term memory. It is non-volatile (data is retained even after the power is off). It is used to store data, programs, and the operating system permanently. It is slower than RAM but has much larger capacity. Examples: Hard Disk Drive (HDD - हार्ड डिस्क), Solid State Drive (SSD - एसएसडी), USB Flash Drives (पेनड्राइव).
5. System Bus (सिस्टम बस) - डेटा हाईवे
The bus is a communication system that transfers data and signals between these components. It's like a network of highways inside the computer.
Data Bus (डेटा बस): Carries the actual data being processed.
Address Bus (एड्रेस बस): Carries the location (address) in memory where the data needs to be read from or written to.
Control Bus (कंट्रोल बस): Carries control signals (like read, write) from the Control Unit to other parts.
The process follows a cycle called the Fetch-Decode-Execute Cycle:
Fetch (ले आओ): The CPU's Control Unit fetches the next instruction from the Main Memory (RAM).
Decode (समझो): The Control Unit decodes the instruction to understand what needs to be done (e.g., add two numbers).
Execute (निष्पादित करो): The Control Unit directs the ALU to perform the actual operation (e.g., performs the addition). It might need to fetch data from memory for this.
Store (संग्रहित करो): The result of the operation is then written back to either a register or the main memory.
This cycle repeats millions of times per second, making the computer work.
I want to Hire a Professional..
--icon----> --icon---->