C भाषा का इतिहास
Algol से Traditional C तक
1. Algol (Algorithmic Language)
· वर्ष: 1950 के दशक
· क्या है: Algol एक शुरुआती उच्च स्तरीय प्रोग्रामिंग भाषा थी। इसका उपयोग गणितीय और वैज्ञानिक गणनाओं के लिए किया जाता था।
· महत्व: Algol ने प्रोग्रामिंग भाषाओं की संरचना (structure) और सिंटैक्स (syntax) की नींव रखी।
2. BCPL (Basic Combined Programming Language)
· वर्ष: 1966
· डेवलपर: मार्टिन रिचर्ड्स (Martin Richards)
· क्या है: BCPL एक सरल और शक्तिशाली भाषा थी, जिसे सिस्टम प्रोग्रामिंग के लिए बनाया गया। यह C भाषा के विकास के लिए एक आधार बनी।
3. B Language
· वर्ष: 1969
· डेवलपर: केन थॉम्पसन (Ken Thompson)
· क्या है: B भाषा BCPL से प्रेरित थी। इसे UNIX ऑपरेटिंग सिस्टम के लिए बनाया गया। B भाषा में भी सिस्टम प्रोग्रामिंग के लिए सुविधाएँ थीं, लेकिन यह सीमित थी।
4. C Language
· वर्ष: 1972
· डेवलपर: डेनिस रिची (Dennis Ritchie)
· क्या है:
o C भाषा को बेल लैब्स (Bell Labs) में विकसित किया गया।
o इसका उद्देश्य UNIX ऑपरेटिंग सिस्टम के लिए एक शक्तिशाली और लो लेवल भाषा बनाना था।
o यह B भाषा से विकसित हुई और इसमें नए फीचर्स जैसे डेटा टाइप, फंक्शन आदि जोड़े गए।
o C भाषा ने प्रोग्रामिंग को ज्यादा सरल, प्रभावी और पोर्टेबल बनाया।
5. Traditional C
· वर्ष: 1978
· महत्वपूर्ण किताब: The C Programming Language (डेनिस रिची और ब्रायन कर्निहन द्वारा)
· क्या है:
o इस किताब में C भाषा की पूरी व्याख्या की गई। इसे "कर्निहन और रिची" की किताब कहा जाता है।
o इस संस्करण को 'Traditional C' या 'K&R C' भी कहा जाता है।
o इसमें C भाषा का पहला स्थिर और व्यापक मानक तैयार किया गया।
C भाषा के विकास में मुख्य योगदानकर्ता
नाम |
योगदान |
डेनिस रिची (Dennis Ritchie) |
C भाषा के आविष्कारक। UNIX OS के विकास में मुख्य भूमिका। |
केन थॉम्पसन (Ken Thompson) |
B भाषा के निर्माता। UNIX OS के सह-निर्माता। |
मार्टिन रिचर्ड्स (Martin Richards) |
BCPL भाषा के डेवलपर, जिसने C के विकास को प्रभावित किया। |
· Algol → आधारभूत भाषा जो आधुनिक भाषाओं को प्रभावित किया।
· BCPL → सरल प्रणाली भाषा।
· B भाषा → BCPL की संशोधित रूप, UNIX के लिए।
· C भाषा → डेनिस रिची द्वारा विकसित, शक्तिशाली, पोर्टेबल सिस्टम प्रोग्रामिंग भाषा।
· Traditional C → पहली स्थिर मानक भाषा।
C भाषा का इतिहास (History of C Language)
-
डेनिस मैकएलिस्टर रिची (Dennis MacAlistair Ritchie)
(9 सितंबर 1941 – लगभग 12 अक्टूबर 2011)डेनिस रिची एक प्रसिद्ध अमेरिकी कंप्यूटर वैज्ञानिक थे। उन्होंने अपने साथी केन थॉम्पसन (Ken Thompson) के साथ मिलकर C प्रोग्रामिंग भाषा, B भाषा, और Unix ऑपरेटिंग सिस्टम का निर्माण किया।
- इसे Unix Operating System के विकास के लिए बनाया गया था।
- यह भाषा B भाषा से विकसित हुई थी, जो एक पुरानी प्रोग्रामिंग भाषा थी।
- C भाषा की लोकप्रियता तेजी से बढ़ी
और यह आज भी कई सिस्टम और एप्लिकेशन बनाने में प्रयोग होती है।
C भाषा
के लाभ (Advantages of C Language)
- तेज़ और कुशल (Fast and Efficient):
C भाषा बहुत तेज़ और कम संसाधनों का उपयोग करती है। - सिस्टम प्रोग्रामिंग के लिए उत्तम
(Best
for System Programming):
ऑपरेटिंग सिस्टम, ड्राइवर आदि बनाने के लिए उपयुक्त। - स्ट्रक्चर्ड प्रोग्रामिंग (Structured Programming):
यह कोड को फंक्शन्स में बाँटकर प्रोग्रामिंग को आसान बनाती है। - लर्निंग की मजबूत नींव (Strong Foundation for Other
Languages):
C सीखने से C++, Java, Python जैसी भाषाएँ सीखना आसान हो जाता है। - हार्डवेयर के नजदीक (Close to Hardware):
इससे मेमोरी और हार्डवेयर को सीधे कंट्रोल करना आसान होता है।
C भाषा की सीमाएँ (Disadvantages of C
Language)
- ऑब्जेक्ट ओरिएंटेड नहीं (Not Object-Oriented):
इसमें Class और Object की सुविधा नहीं होती। - सेफ़्टी कम (Less Secure):
इसमें मेमोरी को मैन्युअली मैनेज करना पड़ता है, जिससे गलतियाँ हो सकती हैं। - इनबिल्ट GUI सपोर्ट नहीं (No Built-in Graphics):
C भाषा में ग्राफिक्स या यूजर इंटरफेस के लिए अतिरिक्त लाइब्रेरी की जरूरत होती है। - एरर हेंडलिंग कठिन (Error Handling is Difficult):
अन्य भाषाओं की तुलना में त्रुटियों को पहचानना और संभालना मुश्किल होता है।
प्रोसीजर
ओरिएंटेड प्रोग्रामिंग (Procedure Oriented Programming - POP)
प्रोसीजर ओरिएंटेड प्रोग्रामिंग में प्रोग्राम को छोटे-छोटे फंक्शन या प्रक्रियाओं (Procedures) में बाँटा जाता है। यह डेटा से ज़्यादा प्रोसेस (Process) या लॉजिक पर ध्यान देती है।
विशेषताएँ:
· डेटा और फंक्शन अलग-अलग रहते हैं।
· कोड को दोबारा इस्तेमाल करना मुश्किल होता है।
· प्रोग्रामिंग की पारंपरिक विधि है।
· उदाहरण: C भाषा, Pascal, FORTRAN आदि।
ऑब्जेक्ट
ओरिएंटेड प्रोग्रामिंग (Object Oriented Programming - OOP)
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में प्रोग्राम को ऑब्जेक्ट्स (वस्तुओं) के रूप में बनाया जाता है। यह डेटा और उस पर काम करने वाले फंक्शन्स को एक साथ क्लास में संगठित करता है।
विशेषताएँ:
· डेटा और फंक्शन को एक साथ ऑब्जेक्ट में बाँधता है।
· कोड को दोबारा इस्तेमाल (Reusability) और विस्तार करना आसान होता है।
· सिक्योरिटी (Encapsulation) और इनहेरिटेंस जैसी आधुनिक सुविधाएँ मिलती हैं।
· उदाहरण: C++, Java, Python, C# आदि।
OOP और POP में अंतर (Difference between POP and OOP)
विशेषता |
प्रोसीजर
ओरिएंटेड प्रोग्रामिंग (POP) |
ऑब्जेक्ट
ओरिएंटेड प्रोग्रामिंग (OOP) |
1. आधार |
प्रक्रिया (Process)
पर आधारित |
ऑब्जेक्ट (Object) पर
आधारित |
2. डेटा
सुरक्षा |
डेटा असुरक्षित रहता है |
डेटा सुरक्षित रहता है (Encapsulation) |
3. संरचना |
फंक्शन और डेटा अलग रहते हैं |
फंक्शन और डेटा एक साथ ऑब्जेक्ट में |
4. पुनः
प्रयोग |
कोड को दोबारा उपयोग करना कठिन |
कोड को दोबारा उपयोग करना आसान |
5. उदाहरण |
C, Pascal, FORTRAN |
C++, Java, Python |
6. जटिलता |
बड़े प्रोग्राम में प्रबंधन कठिन |
बड़े प्रोग्राम में प्रबंधन आसान |
7. विकास |
पारंपरिक प्रणाली |
आधुनिक प्रणाली |
1. Character Set (अक्षर समूह)
C भाषा में प्रोग्राम लिखने के लिए जो वर्ण (characters) उपयोग किए जाते हैं, उन्हें मिलाकर Character Set कहा जाता है। ये निम्नलिखित प्रकार के होते हैं:
(i) Letters (अक्षर):
·
छोटे
(Small Letters): a to z
·
बड़े
(Capital Letters): A to Z
(ii) Digits (अंक):
·
0 to 9
(iii) Special Characters (विशेष चिन्ह):
Special
Character |
Name in
English |
नाम
हिंदी में |
|
Exclamation
mark |
विस्मयादिबोधक
चिन्ह |
|
At symbol |
ऐट
चिन्ह |
|
Hash /
Number sign |
हैश
/ संख्या चिन्ह |
|
Dollar
sign |
डॉलर
चिन्ह |
|
Percent
sign |
प्रतिशत
चिन्ह |
|
Caret |
कैरेट
(घात के लिए प्रयोग) |
|
Ampersand |
एंड
/ संयोजन चिन्ह |
|
Asterisk |
तारक
चिन्ह / गुणा चिन्ह |
|
Left
parenthesis |
बाँया
कोष्ठक (ब्रैकेट) |
|
Right
parenthesis |
दायाँ
कोष्ठक (ब्रैकेट) |
|
Hyphen /
Minus |
ऋण
चिन्ह / माइनस |
|
Underscore |
अधोरेखा |
|
Equal
sign |
समानता
चिन्ह (=) |
|
Plus sign |
जोड़
चिन्ह / प्लस |
|
Left
curly brace |
बाँया
घुंघराला ब्रैकेट |
|
Right
curly brace |
दायाँ
घुंघराला ब्रैकेट |
|
Left
square bracket |
बाँया
वर्ग कोष्ठक |
|
Right
square bracket |
दायाँ
वर्ग कोष्ठक |
|
Colon |
कोलन
(:) |
|
Semicolon |
अर्धविराम |
|
Double
quote |
डबल
कोट्स |
|
Single
quote |
सिंगल
कोट्स |
|
Less than |
से
कम (<) |
|
Greater than |
से
अधिक (>) |
|
Comma |
अल्पविराम
(, ) |
|
Period /
Dot |
पूर्णविराम
/ बिंदु |
|
Question
mark |
प्रश्नवाचक
चिन्ह |
|
Forward
slash |
स्लैश
/ भाग चिन्ह |
|
Backslash |
बैकस्लैश |
` |
` |
Vertical
bar / Pipe |
|
Tilde |
टिल्ड
(~) |
(iv) White Spaces (रिक्त स्थान):
· Space (खाली जगह)
· Tab
· New Line (Enter)
Keywords (कीवर्ड्स)
परिभाषा:
Keywords वे आरक्षित शब्द (Reserved Words) होते हैं जिनका विशेष अर्थ होता है
C भाषा के प्रमुख 32 Keywords:
auto
break case char
const
continue default do
double
else enum extern
float
for goto if
int
long register return
short
signed sizeof static
struct
switch typedef union
unsigned
void volatile while
Identifier
C भाषा
में Identifier उस नाम को कहते हैं जो Variable, Function, Array, Structure
आदि को पहचानने के लिए दिया जाता है।
dentifier लिखने के नियम (Rules for Writing Identifiers in C)
क्रम |
नियम
(Rule) |
विवरण
(Explanation) |
1 |
केवल
अक्षर (A-Z, a-z), अंक (0-9) और
अंडरस्कोर |
लेकिन
नाम की शुरुआत कभी अंक (digit) से
नहीं हो सकती। |
2 |
Identifier
की शुरुआत अक्षर
या |
उदाहरण: |
3 |
C के कीवर्ड्स (Keywords) को
Identifier के रूप में प्रयोग नहीं कर सकते। |
जैसे: |
4 |
C भाषा
में Identifiers case sensitive होते
हैं। |
|
5 |
Identifier
का नाम अर्थपूर्ण (meaningful) और
स्पष्ट होना चाहिए। |
जैसे |
6 |
Identifier की
अधिकतम लंबाई C Compiler पर
निर्भर करती है। |
सामान्यतः पहले 31
characters माने जाते हैं। |
DATA TYPES:-
1 प्राथमिक (मूल) डेटा टाइप्स – Primary (Fundamental) Data Types32-बिट सिस्टम के लिए)
डेटा टाइप |
वैल्यू रेंज |
|
-128 से 127 |
|
0 से 255 |
|
-2,14,74,83,648 से 2,14,74,83,647 |
|
0 से 4,29,49,67,295 |
|
-32,768 से 32,767 |
|
लगभग -2 अरब से +2 अरब |
|
लगभग 6 दशमलव अंकों की शुद्धता |
|
लगभग 15 दशमलव अंकों की शुद्धता |
महत्वपूर्ण बातें (Key Notes)
- char टाइप असल में एक integer टाइप होता है जो अक्षरों के ASCII मान को स्टोर करता है।
- short, int, long, long long टाइप integer वैल्यू के लिए होते हैं — बस उनका रेंज अलग होता है।
- unsigned टाइप में कोई नकारात्मक (negative) मान नहीं होता।
- float, double, और long double का उपयोग दशमलव
(decimal) संख्या स्टोर करने के लिए किया जाता है।
2– User-defined Data Types
Ø struct
(संरचना)
Ø union
(यूनियन)
Ø enum
(एन्यूम)
Ø typedef
(टाइपडिफ – नए नाम बनाने के लिए)
2– Derived Data Types
ये मूल डेटा टाइप्स से बनाए जाते हैं:
·
Array (सरणी):
एक ही प्रकार के डेटा का समूह
— int arr[5];
·
Pointer (संकेतक):
किसी वैरिएबल का एड्रेस स्टोर करता है
— int *ptr;
·
Function (कार्य):
जो वैल्यू वापस करते हैं
— int sum(int a, int b);
· Structure/Union: उपयोगकर्ता द्वारा परिभाषित प्रकार
Operator
Operator एक चिन्ह (symbol) होता है, जो किसी वैरिएबल (variable) या मान (value) पर कोई क्रिया (क्रिया जैसे जोड़ना, घटाना आदि) करता है।
उदाहरण:
int a =
5 +
3;
यहाँ +
एक operator
है, जो 5 और 3 को जोड़ रहा है।
C भाषा में मुख्य प्रकार के ऑपरेटर्स:
1Arithmetic Operators (गणितीय ऑपरेटर)
Operator |
अर्थ
(काम) |
उदाहरण
( |
Output |
|
जोड़ |
|
15 |
|
घटाना |
|
5 |
|
गुणा |
|
50 |
|
भाग |
|
2 |
|
शेषफल (modulus) |
|
0 |
2 Relational Operators (तुलनात्मक ऑपरेटर)
ये ऑपरेटर दो मानों की तुलना करते हैं और सच (1) या झूठ (0) लौटाते हैं।
Operator |
अर्थ |
उदाहरण
( |
Output |
|
बराबर है क्या? |
|
0 |
|
बराबर नहीं है क्या? |
|
1 |
|
बड़ा है क्या? |
|
1 |
|
छोटा है क्या? |
|
0 |
|
बड़ा या बराबर? |
|
1 |
|
छोटा या बराबर? |
|
0 |
3 Logical Operators (तार्किक ऑपरेटर)
ये ऑपरेटर शर्तों को जोड़ने या जांचने के लिए होते हैं।
Operator |
नाम |
अर्थ |
|
AND |
दोनों शर्तें सही हों तभी सही (true) |
` |
` |
|
|
NOT |
सही को गलत और गलत को सही करता है |
उदाहरण:
(a >
5 && b <
10)
// true (1)
4 Assignment Operators (सौंपने वाले ऑपरेटर)
Operator |
अर्थ |
उदाहरण |
|
मान सौंपना |
|
|
जोड़कर सौंपना |
|
|
घटाकर सौंपना |
|
|
गुणा करके सौंपना |
|
|
भाग देकर सौंपना |
|
5 Increment & Decrement Operators (बढ़ाना/घटाना)
Operator |
अर्थ |
उदाहरण |
|
1 से बढ़ाना |
|
|
1 से घटाना |
|
6 Bitwise
Operators :- बिटवाइज़ ऑपरेटर (Bitwise
Operators) C भाषा में ऐसे ऑपरेटर होते हैं जो बाइनरी (binary) बिट्स पर ऑपरेशन करते हैं। यानी ये ऑपरेटर एक-एक बिट पर कार्य करते हैं, न कि पूरे नंबर पर एक साथ।
1. & (Bitwise
AND)
यह ऑपरेटर दोनों ऑपरेड के बिट्स की तुलना करता है और तभी 1 देता है जब दोनों बिट्स 1 हों।
उदाहरण:
int a = 5; // 0101
int b = 3; // 0011
int c = a & b; // 0001 -> 1
2. | (Bitwise OR)
यह ऑपरेटर किसी भी बिट के 1 होने पर 1 देता है।
उदाहरण:
int a = 5; // 0101
int b = 3; // 0011
int c = a | b; // 0111 -> 7
3. ^ (Bitwise XOR)
जब दो बिट्स अलग-अलग हों (एक 0 और एक 1), तब 1 देता है।
उदाहरण:
int a = 5; // 0101
int b = 3; // 0011
int c = a ^ b; // 0110 -> 6
4. ~ (Bitwise
NOT)
यह एक यूनरी ऑपरेटर है जो बिट्स को उलट देता है (0 को 1 और 1 को 0 में बदल देता है)।
नोट: इसका आउटपुट signed
integers में negative रूप में आता है।
उदाहरण:
int a = 5; // 0101
int c = ~a; // 1010 (in binary, actual output is -6 in
2's complement)
5. << (Left Shift)
यह सभी बिट्स को बाईं ओर शिफ्ट करता है और दाईं ओर 0 भर देता है।
उदाहरण:
int a = 5; // 0101
int c = a << 1; // 1010 -> 10
6. >> (Right Shift)
यह सभी बिट्स को दाईं ओर शिफ्ट करता है। बाईं ओर साइन बिट भरता है।
उदाहरण:
int a = 5; // 0101
int c = a >> 1; // 0010 -> 2
Conditional Operator :-
C भाषा में Conditional Operator को Ternary
Operator भी कहा जाता है क्योंकि यह तीन ऑपरेन्ड्स के साथ काम करता है। यह एक शॉर्टकट तरीका है if-else का उपयोग करने का।
सिंटैक्स (Syntax):
condition ? expression_if_true
: expression_if_false;
- condition → यह कोई वैध तर्क
(logical) या तुलना (comparison) हो सकता है।
- यदि
condition सही (true) है, तो expression_if_true का मान लिया जाएगा।
- यदि
condition गलत (false) है, तो expression_if_false का मान लिया जाएगा।
उदाहरण:
#include <stdio.h>
int main() {
int a = 10, b = 20;
int max;
max = (a > b) ? a : b;
printf("सबसे बड़ा मान है: %d\n", max);
return 0;
}
Sizeof:-
sizeof एक unary compile-time operator है जो किसी data type या variable के memory size (bytes) को बताता है।
सिंटैक्स (Syntax):
sizeof(type)
या
sizeof(variable)
यह कंपाइलर को बताता है कि दिए गए टाइप या वैरिएबल का साइज़ (memory में) कितना है।
🔹 उदाहरण (Examples):
#include <stdio.h>
int main() {
int a;
float b;
char c;
double d;
printf("int का साइज़: %lu bytes\n",
sizeof(a));
printf("float का साइज़: %lu bytes\n",
sizeof(b));
printf("char का साइज़: %lu bytes\n",
sizeof(c));
printf("double का साइज़: %lu bytes\n",
sizeof(d));
return 0;
}
Note: %lu का उपयोग unsigned long के लिए किया जाता है क्योंकि sizeof का रिटर्न टाइप
size_t होता है, जो एक unsigned
integer टाइप है।
Statement
परिभाषा (Definition):
Statement वह निर्देश
(instruction) होता है जिसे कंपाइलर अनुपालन (execute) करता है।
C प्रोग्राम कई स्टेटमेंट्स से मिलकर बनता है, और हर स्टेटमेंट एक निश्चित कार्य करता है।
प्रत्येक C स्टेटमेंट semicolon (;) से समाप्त होता है।
🔹 C में स्टेटमेंट्स के प्रकार (Types of
Statements in C):
1.
Expression Statement
o
यह किसी expression को execute करता है।
o
Example:
a = b + 5;
i++;
2.
Declaration Statement
o
यह वैरिएबल या फंक्शन को डिक्लेयर करता है।
o
Example:
int x;
float pi;
3.
Compound Statement (Block)
o
Multiple statements को {} के अंदर एक साथ रखा जाता है।
o Example:
{
int a = 10;
a = a + 5;
printf("%d", a);
}
4.
Control Flow Statements
o
ये स्टेटमेंट्स प्रोग्राम के फ्लो को control करते हैं।
o
इसके उप-प्रकार:
§ Selection
statements → if, if-else, switch
§ Looping
statements → for, while, do-while
§ Jump
statements → break, continue, goto, return
5.
Null Statement
o
केवल एक (;) होता है, कोई कार्य नहीं करता।
o
Example:
;
उदाहरण (Simple Example):
#include <stdio.h>
int main() {
int a = 10; // Declaration + Expression
Statement
if (a > 5) { // Selection Statement
printf("a is big"); // Expression Statement
}
return 0; // Jump Statement
}
No comments:
Post a Comment