Easy way to Learn C Language ,Hindi-English edition
Easy way to Learn C Language
Introduction to Programming
एक computer
scientist सिर्फ programming ही नहीं करता है, लेकिन programming
computer science का बहुत ही महत्वपूर्ण part है। इसलिए एक
शुरआती programmer होने के नाते
आपके लिए programming और उससे related
components का concept ठीक से समझना बहुत जरुरी है। कितने ही ऐसे programmers होते है जो programming तो कर रहे होते है लेकिन उनको programming
के पीछे का concept नहीं पता होता है। आइये इसके बारे में जानने का प्रयास
करते है।
आसान शब्दों में कहा जाये तो programming एक ऐसी process होती है जिसमें
एक programmer CPU
(Central Processing Unit) को कोई task perform करने के instructions देता है। ये task कुछ भी हो सकता
है जैसे की दो numbers को add करना आदि।
Programming कुछ components से मिलकर एक समग्र रूप धारण करती है।
1.
Programming Language
2.
Compiler / Interpreter
3.
Programmer
इन components के बारे में निचे detail से बताया जा रहा है।
Programming
Language
Humans जब भी interact करते है तो किसी language के माध्यम से
करते है। एक CPU को भी आप language के माध्यम से ही instructions देते है। ऐसी language जो CPU को instructions देने के लिए programmers यूज़ करते है programming
language कहलाती है।
CPU सिर्फ binary language (0 & 1) को ही समझता है।
लेकिन किसी भी human के लिए binary
language में programming करना असंभव है। इसलिए simple English sentences को यूज़ करते हुए
programming
languages develop की गयी।
ऐसा करने से programming करना बहुत अधिक आसान हो गया। अब
जैसा की आप देख सकते है हर कोई basic information प्राप्त करके programming करना सिख सकता
है। लेकिन पहले ऐसा संभव नहीं था।
Types of Programming Languages
अब तक 256 से अधिक programming languages develop की जा चुकी है।
हर language को एक different
purpose के लिए develop किया गया है। Purpose के according programming languages को mainly 5
categories में divide किया गया है।
1.
Machine Language / Machine Code - ये वो code होता है जिसे CPU directly
execute करता है। Machine code hexadecimal में होता है। ये hardware के बहुत ही करीब
होता है। इसे low level
language भी कहा जाता है।
2.
Assembly Language - Machine code को और भी अधिक readable बनाने के लिए assembly
language create की गयी। इसमें labels को add किया गया है जिससे tasks perform करना और भी आसान
हो जाता है। ये भी एक low level language होती है।
3.
High-Level Language - High level languages hardware से independent होती है जैसे की c, c++, java आदि। इन languages का code directly
machine code में convert नहीं होता है।
4.
System Language - इस प्रकार की languages computer को manage करने के लिए यूज़
की जाती है। इन्हें low level tasks perform करने के लिए यूज़ किया जाता है। जैसे की memory
management, process management आदि।
5.
Scripting Languages - इस प्रकार की languages system
और दूसरी applications के बीच में bridge की तरह काम करती
है। जैसे की PHP आदि।
Some Common Programming
Languages
यँहा पर कुछ programming languages की list दी जा रही है।
इनमें से कुछ के बारे में आप सुन चुके होंगे।
1.
C Language
2.
C++
3.
Java
4.
C#
5.
PHP
6.
HTML
7.
JavaScript
8.
Pascal
9.
Visual Basic
10.
FORTRAN
Compiler / Interpreter
जैसा की मैने आपको बताया computer सिर्फ binary language समझता है और humans का binary में programming करना बहुत
मुश्किल है। इसलिए एक ऐसा program develop किया गया जो programmers से simple English
statements के रूप में instructions ले सके और उसे binary में convert करके CPU को pass कर दे। इस program को compiler कहते है।
Compiler एक programmer और CPU के बीच bridge की तरह काम करता है। इसे आप translator भी कह सकते है।
एक compiler बहुत से tasks perform करता है इनके
बारे में निचे दिया जा रहा है।
·
Compiler syntax error check करता है। यदि कोई
syntax error होती है तो इसके
बारे में programmer को notify किया जाता है।
·
Compiler source code को machine language
में convert करता है।
·
Compiler एक machine executable file generate करता है।
आइये अब interpreter के बारे में जानने का प्रयास करते है।
कुछ languages compiler की जगह interpreter भी use करती है। Compiler और interpreter दोनों एक ही काम करते है। फर्क सिर्फ इतना होता है की
compiler पुरे source
code को एक साथ compile करके machine code generate करता है जिसे एक
बारे में completely
execute किया जा सकता है। जबकि एक interpreter एक एक instructions को machine code में convert करता है और साथ
की साथ execute करता जाता है।
अपनी need के according
languages compiler और interpreter को यूज़ करती है।
Programmer
शुरूआती दिनों में लोग interest की वजह से programming करते थे लेकिन अब
इसने एक job का रूप धारण कर
लिया है। Programmer वह person होता है जिसे की
किसी programming
language का ज्ञान होता है। एक programmer अपने ज्ञान को
यूज़ करते हुए programming
language की मदद से real world problems को solve करता है।
Introduction to C language
C एक बहुत ही popular programming language है। आज भी C की popularity में कोई कमी नहीं आई है। किसी भी दूसरी language को सिखने से पहले C को सीखना बहुत जरुरी है। क्योंकि C के बाद जितनी भी programming languages आई उन्होंने
किसी न किसी तरह C के features को adopt किया है। आइये C के बारे में detail
से जानने का प्रयास करते है।
History
C एक structured general
purpose programming language है। इसे UNIX operating system को दुबारा लिखने के लिए develop किया गया था। इससे पहले UNIX operating system को B language में लिखा गया
था। पूरा UNIX operating system और उस पर run होने वाले ज्यादातर programs C language में ही लिखे
गए है।
B language Ken Thompson के द्वारा 1970 में Bell laboratories में लिखी गई
थी। B एक type less language थी। C language को Dennis Ritchie ने 1972 में Bell laboratories में ही develop किया था। C language बहुत से data types provide करती है।
C language के syntax को बहुत सी popular languages ने follow किया है। C का improved version C# है। C के features को Java और C++ जैसी languages ने follow किया है।
Characteristics &
Features
·
C एक modular language है। C में
एक बड़े program को छोटे छोटे modules
(functions) के रूप में divide किया जाता है।
ऐसा करने से programs को manage
और debug करने में
आसानी रहती है।
·
C एक flexible language है। C 32
reserved keywords provide करती है। ये keywords programmer को language
पर control provide करते
है। इन keywords की मदद से program
के structure को भी
modify किया जा सकता है।
·
C language Assembly language के
बाद सबसे fast language मानी जाती है। इसे कई बार low level language भी कहा जाता है। C language hardware के बहुत करीब होती हैं। इसलिए ये
दूसरी programming languages से fast होती
है।
·
C एक case sensitive language है।
·
C High level और low level दोनों तरह के programs create करने में सक्षम है।
·
C एक extendable language है। C
programs में libraries के
द्वारा आप कभी भी नए features add कर सकते है।
Limitations
·
C language में run time type checking नहीं होती है।
C language run time में किसी भी variable के data
type को identify करने
में असमर्थ होती है। उदाहरण के लिए float data type में integer value डाली जा सकती है।
·
C language में object oriented concepts नहीं होते है।
·
C language में constructors और destructors का concept भी नहीं होता है।
·
C language में namespaces का concept
नहीं होता है। इसलिए different
programmers के code को एक ही project में यूज़ करना बहुत मुश्किल होता है।
·
C language code की re-usability को support
नहीं करती है।
·
C language में exceptions को run
time में handle नहीं किया जा
सकता है।
Applications
·
ज्यादतर operating
systems C language में ही बनाए जाते है। जैसे की UNIX, Windows आदि।
·
किसी भी नयी programming
language को compile करने के लिए compilers की आवश्यकता होती है। C language में compilers
भी create किये जाते है।
उदाहरण के लिए java का compiler
javac भी C language में
ही बनाया गया है।
·
C language में
कई प्रकार के assemblers भी create
किये जाते है। Assembler basic
instructions को bits में convert करते है।
·
C language में text editors भी create
किये जा सकते है। जैसे की gedit,
आदि।
·
C language में network drivers भी create
किये जाते है।
·
C language में database systems भी लिखे जाते है। जैसे की oracle database C में ही लिखा गया है।
A
simple program in C language
#include <stdio.h>
int main() { printf("Hello Reader\n"); return 0; } |
ऊपर दिया गया program
निचे दिया गया output
generate करता है।
Hello
Reader |
Introduction to C
Tokens
C language का syntax कई दूसरी popular languages के द्वारा follow किया गया है, इसलिए C का syntax समझना आपके लिए बहुत आवश्यक है। C program tokens से मिलकर बना होता है। जैसे की निचे दिए गए program को देखिये। ये program tokens का सही क्रम
में यूज़ है और इसके सिवा कुछ भी नहीं है। यदि आप C के सभी tokens को यूज़ करना सिख ले तो आप C के expert बन जायेंगे।
#include <stdio.h>
int main() { printf("Software programming is
cool"); printf("%d",5); } |
Tokens 6 types के होते है। इनकी list निचे दी जा रही है।
·
Identifier
·
Keyword
·
Constant
·
Variable
·
String
·
Operator
यदि इस list के according आप देखें तो ऊपर दिए गए program में int, main,
printf ,+ और Software programming is cool आदि सब कुछ tokens ही है। इनमें से सभी tokens के बारे में अभी ना बताकर में
यँहा पर आपको सिर्फ Identifiers और keywords के बारे में
बताने जा रहा हूँ। बाकि tokens के बारे में
आपको आगे की tutorials में बताया जायेगा।
मै समझता हूँ की आपको tokens क्या है ये concept clear हो गया होगा।
अगर ऐसा है तो आइये कुछ tokens के बारे में detail से जानने का प्रयास करते है।
लेकिन इससे से पहले में आपको C language के character set के बारे में
बताने जा रहा हूँ।
C Character Set
C language में आप program characters की sequence में लिखते
है। जैसे की #include <stdio.h> ये statement characters से ही बना
है। यँहा पर i,n,c,l और h आदि characters है। लेकिन ऐसा
नहीं है की आप C program में कोई भी character यूज़ कर सकते है। इसके लिए C के द्वारा character set define किया गया है।
जो characters इस set में है केवल
वे ही एक C program में यूज़ किये जा सकते है।
Alphabet
Alphabet characters में आप A से Z upper case
और a से z lower case
characters को यूज़ कर सकते है।
Digits
Digits में आप 0 से लेकर 9 तक की कोई भी digits यूज़ कर सकते है।
Special characters
Special characters में आप निचे दिए गए characters को यूज़ कर सकते है।
! @ # $ % ^ & * ( ) _ - + = | \ { } [ ] <
> ", ? /
इन alphabet digits और special
characters के अलावा आप कोई और character C language में यूज़
नहीं कर सकते है। इसे ही C का character set कहते है।
Identifiers
Identifiers वो नाम होते है जो आप variables, constants और functions आदि को देते है। इन नामों को
देने के लिए भी कुछ नियम है जो आप follow करते है। यदि
आप इन नियमों को follow नहीं करते है तो program में error आ जाती है।
ये नियम आगे बताये जा रहे है।
1.
Identifiers में @, %, - characters allowed नहीं है।
2.
C case sensitive language है। इसलिए age और Age 2
different identifiers है।
3.
Identifiers में आप operators नहीं यूज़ कर सकते है।
4.
Identifier की शुरआत आप
या तो character या underscore से कर सकते
है। Digits से identifier को start नहीं किया जा सकता है।
5.
आप A से लेकर Z तक के small और capital दोनों तरह के letters या फिर underscore में से किसी के साथ भी identifiers को start कर सकते है।
इसके बाद आप digits और दूसरे characters या underscore यूज़ कर सकते
है।
Example
_age //
Valid
2name // Invalid
Emp-name // Invalid
Emp_2_age // Valid
|
Keywords
Keywords को predefined
tokens या reserved words भी कहते है। C language 32 keywords provide करती है। हर keyword का एक खास मतलब होता है। हर keyword को एक particular
task perform करने के लिए define किये गया है। इन keywords की list निचे दी जा
रही है। इन keywords को यँहा पर explain नहीं किया जा रहा है। इनके बारे
में आप धीरे धीरे आगे आने वाली tutorials में जानेंगे।
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 |
Introduction to C Data Types
जब भी आप कोई variable create करते है तो उससे पहले compiler को बताते है की
आप किस तरह का data उस variable में store करेंगे। इससे compiler उतनी ही memory उस variable को computer की memory में से allot कर देता है। जैसे की
निचे दिए गए statement को देखिये।
int age; |
ऊपर दिया गया statement compiler को बताता है की आप age variable में एक whole number
store करने वाले है। किसी भी whole number को store करने के लिए
जितनी memory की आवश्यकता होती
है compiler उतनी इस variable को allot कर देता है। जो
की 2 bytes है।
अब आप सोच सकते है की यदि किसी programming language में data types ना हो तो
कितनी memory waste हो सकती है। जँहा
पर 2 bytes की requirement हो वँहा 20 bytes आप waste कर सकते है।
इस प्रकार जितनी भी तरह का data आप store कर सकते है उसके
लिए पहले से ही maximum memory
limit define की गई है। आइये अब C के अलग अलग तरह
के data types के बारे में
जानने का प्रयास करते है।
Different C Data Types
C language 3 तरह के data types को support करती है। इन्हें primitive types भी कहते है।
·
Integer
o
int
o
short int
o
long int
o
singed int
o
unsigned int
·
Floating point
o
float
o
double
·
Character
o
char
Integer
Integer types किसी भी whole number (बिना दशमलव के) को store करने के लिए यूज़
किये जाते है। Integer types 5 प्रकार के होते है।
हालांकि ये सभी whole number को store करते है। लेकिन memory size और range के base पर इन्हें categories किया गया है।
Data type |
Size (Bytes) |
Range |
int |
2 |
-32768 से 32767 |
short int |
1 |
-128 से 127 |
long int |
4 |
-2,147,483,648 से 2,147,483,647 |
signed int |
2 |
-32768 - 32767 |
unsigned int |
2 |
0 - 65535 |
Example
long int population = 200000000; |
Floating point
Floating point data types को दशमलव संख्याओं को store करने के लिए define किया गया है। Floating point
data types 2 तरह के होते है। इनको size और range के base पर categories किया गया है। Float type में आप दशमलव के बाद
7 digits तक store कर सकते है। Double type में दशमलव के बाद 17 digits तक store की जा सकती है।
Data types |
Size (Bytes) |
Range |
Float |
4 |
3.4E-38 से 3.4E+38 |
Double |
8 |
1.7E-308 से 1.7E+308 |
Example
double balance=810.12354984; |
Character
Character type को एक character store करने के लिए यूज़ किया जाता है। इनको 2 categories में divide किया गया है।
Data type |
Size (Bytes) |
Range |
char |
1 |
-128 से 127 |
unsigned char |
1 |
0 से 255 |
Example
char bestlanguage = "C"; |
Void Type
Void type को उन situations में यूज़ किया जाता है जब आपको value के बारे में कोई
जानकारी ना हो। इसे functions के साथ ज्यादातर यूज़ किया जाता है। C में void type को आप इन situations
में यूज़ कर सकते है।
1.
यदि आपका function कोई value return नहीं करता है तो आप उसका return type void define करते है। उदाहरण
के लिए आप इस प्रकार function define कर सकते है। void myFunction();।
2.
यदि आप function में कोई parameters नहीं ले रहे है तो आप वँहा पर void define कर सकते है। Void type से पता चलता है
की इस function में कोई argument नहीं लिया जाता
है। उदाहरण के लिए आप इस प्रकार void को parameter के रूप में pass कर सकते है। int
myFunction(void);।
3.
यदि आप sure नहीं है की pointer variable किस type के variable को point करेगा तो आप उसका
type void
declare कर सकते है। इसके बाद आप void pointer से किसी भी variable को point कर सकते है।
Introduction to C Variables
यदि आप computer की memory में data को store करना चाहते है तो इसके लिए पहले आपको उस memory location के लिए नाम देना
होता है। Variable
memory में किसी location का नाम होता है।
मान लीजिए ये आपका computer
memory space है। आप इसमें कुछ data store करवाना चाहते है। जैसे की किसी व्यक्ति की उम्र आदि। Computer की memory में data store करवाने से पहले आप बताते ही की आप किस तरह का data store करेंगे। ये आप data types के द्वारा define करते है। उसी के according आपको memory में space मिलता है। यानि की यदि आपने int define किया है तो 2 bytes आपको memory में compiler allot करेगा।
इसके साथ ही आपको उस memory
location का नाम भी define करना होता है। ताकि आप जब भी चाहे उस memory
location में store की गई value को इस नाम के द्वारा access कर सके। इस नाम को ही variable कहते है। Variables की values changeable होती है। आप एक value को हटाकर दूसरी value डाल सकते है। ऐसा आप manually खुद भी कर सकते है या फिर dynamically (program execution
के दौरान) भी कर सकते है।
Creating Variables in C
Variables create करने के लिए सबसे पहले आप data type define करते है। इसके
बाद आप एक unique name
define करते है। इसका structure इस प्रकार होता है।
dataType variableName;
// without assigning value
dataType variableName = value;
// with value assignment |
उदाहरण के लिए निचे दिए गए statement को देखिये।
int Age = 25; |
इस statement के द्वारा एक integer variable create किया गया है, जिसका नाम Age है और इस variable को 25 value assign की गई है। आइये अब समझते है की compiler इस statement को किस प्रकार interpret करता है।
जब compiler सबसे पहले int को interpret करता है तो वह computer की memory में से 2 bytes की memory allot करता है। इसके बाद जब compiler Age को interpret करता है तो वह उस 2 bytes की memory को age नाम दे देता है। इसके बाद जब compiler = 25 को interpret करता है तो 25 को इस memory location store कर देता है।
अब जब भी आप इस value को access करना चाहते है Age के द्वारा इसे access कर सकते है।
Scope of Variables
कोई variable program में कँहा तक काम कर सकता है। ये उसका scope होता है। Scope के according
variables को 2 categories में divide किया गया है।
Local Variables
Local variables वो variables होते है जो program के किसी छोटे block में define किये जाते है
जैसे की function या control
statement blocks या कोई और block ({ }) भी हो सकता है। इस तरह के variables का यूज़ सिर्फ इस block तक ही limited रहता है। जैसे की यदि आपने किसी function में कोई variable create किया है तो आप उस
variable को उस function के बाहर access नहीं कर सकते है।
उदाहरण के लिए निचे दिए गए program को देखिये।
#include <stdio.h>
int main() { myFunction(); printf("Num in main() :
%d", num);
}
void myFunction() { int num=
5;
printf("Num in myFunction : %d\n",num); } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Num in myFuntion() : 5 Num in main() : 6 |
Global Variables
Global variables वो variables होते है जिनका scope पुरे program में होता है। इन variables को आप पुरे program में कंही भी access कर सकते है। इसका
उदाहरण निचे दिया जा रहा है।
#include <stdio.h>
int num=5; int main() { myFunction(); printf("Num in main() :
%d",num); return 0; } void myFunction() { printf("Num in myFunction :
%d\n",num); } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Num in myFunction() : 5 Num in main() : 5 |
Constants in C
Constants वो variables होते है जिनकी value change नहीं होती है। जब
भी आप कोई constant declare
करते है तो program के execution के दौरान उसकी value fixed रहती है। यदि
इसकी value change करने की कोशिश की
जाती है तो program में error आ जाती है।
इन्हें literals भी कहा जाता है।
Constants को आप 2 तरह से declare कर सकते है।
·
Using #define
·
Using Const keyword
Using #define
#define एक pre-processor है इसे यूज़ करके आप constant declare कर सकते है। इसका
उदाहरण निचे दिया जा रहा है।
# include <stdio.h> #define result 10 int main() { int a=5, b=6; result = a + b; /* WRONG,
(ERROR) Value of constant result variable can not be changed. */ printf("%d", result); return 0; } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
error : lvalue required as left operand of assignment result =
a + b;
^ |
Using const Keyword
Const keyword के द्वारा भी आप constants declare कर सकते है। इसका उदाहरण निचे दिया जा रहा है।
#include <stdio.h>
int main() { const int a=5;
c = a+b;
printf("Result is : %d",a);
return 0; } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Result is : 11 |
C Program Development Life Cycle
C में कोई भी program create करने के 4 steps हो सकते है। ये steps एक particular order
में होते है और इनका अपना कुछ महत्व होता है। आइये पहला C program create
करने से पहले इस process को समझने का प्रयास करते है।
1.
सबसे पहले आप एक program को लिखते है। इसे program development life cycle
का editing part भी कहते है। ये program human readable format में होता है।
2.
इसके बाद आप program को compile करते हैं। ये development life cycle का second step होता है। इस part में सभी bugs को remove करके program को binary format में convert किया जाता है
ताकि computer इसे process कर सके।
3.
इसके बाद linking process आती है। इस process में program को necessary
libraries के साथ link किया जाता है। जैसे की आपको पता है की C का basic program भी बिना library को include किये नहीं execute हो सकता है। Libraries C
program को execute होने के लिए environment provide करती है।
4.
इसके बाद executable file produce कर दी जाती है।
जिसे आप जितनी बार चाहे execute कर सकते है। Editing process का output .c
source file होती है। Compiling process का input source file होती है और output .obj files होती है। Linking process का input .obj file होती है और output .exe file
होती है।
Structure of A C program
Your First C Program
#include <stdio.h>
int main() { printf("Hello Readers!"); } |
ऊपर दिया गया program निचे दिया output generate करता है।
Hello Readers! |
सबसे पहली line में <stdio.h> header file को program में include किया गया है। ये एक standard
input/output header file होती है जो program में input और output को handle करती है। इन्हें pre processor
directives भी कहते है।
इसके बाद main() method को start किया गया है। Main method से ही program का execution start होता है। इसी method में सभी instructions लिखे जाते है। Main method का start और end curly
brackets के द्वारा show किया जाता है। इन curly brackets के भीतर के सभी instructions execute
किये जाते है।
Main function को int type के साथ define किया गया है। ये एक standard है। Int type के बारे में आप
आगे की tutorials में जानेंगें। Main function को एक integer value
return करनी होती है। यदि आप program में main()
function से कोई value return नहीं करते है तो program के आखिर में return 0
statement define करते है।
Commenting
Comments आपके program में वो text होता है जिसे compiler ignore कर देता है। ये text बाकी statements की तरह execute नहीं होता है। Comments program
में किसी statement को या फिर program को define करने के लिए यूज़ किये जाते है।
C language में commenting की general form नीचे दी जा रही है।
/* your comment text here */ |
आइये अब comments के यूज़ को एक उदाहरण से समझने का प्रयास करते है।
/* This is a c program which shows Hello World message
on execution */
#include <stdio.h>
int main() /* Main function starts from here*/ { printf("Hello World!"); /* This
statement will print Hello World message */ return 0; } |
जैसा की आप ऊपर दिए गए program में देख सकते है, comments के माध्यम से program और दूसरे statements के बारे में explanation दी गयी है। ये program निचे दिया गया output generate करता है।
Hello World! |
Introduction to Flow Chart
Flow chart किसी process का graphical representation होता है। C language के सन्दर्भ में
यह program के execution flow का graphical
presentation होता है।
प्रायः जब भी आप कोई program लिखते है तो बिना
किसी flow chart के लिखते है। किसी दूसरे व्यक्ति द्वारा
इसे समझना असंभव होता है। Flow chart के माध्यम से आप अपने program को graphically
represent करते है। ऐसा करने से कोई भी आपके program के logic को आपके बिना भी
समझ सकता है।
जब आप किसी company के लिए programmer के रूप में काम करते है तो coding से पहले flow chart बनाना अनिवार्य
होता है। ऐसा इसलिए किया जाता है क्योंकि companies में अक्सर programmers बदलते रहते है।
आपके द्वारा बनाये गए किसी project को कोई दूसरा व्यक्ति आसानी से समझ सके और उस पर काम
कर सके इसलिए आपको flow charts create करना अनिवार्य होता है।
Flow chart create करने का एक महत्वपूर्ण कारण ये है की इससे आपको program की गहरी समझ प्राप्त होती
है। आप coding से पहले ही उसमे
आने वाली errors और result को देख पाते है।
यदि flow chart
completly prepare कर लिया गया है तो coding सिर्फ एक simple process रह जाती है जिसमे
programmer को flow chart के अनुसार code लिखना होता है।
Flow chart की सबसे बड़ी विशेषता ये होती है की flow chart किसी विशेष programming
language के लिए नहीं होता है। Flow chart को देखकर आप किसी
भी programming
language में process को implement कर सकते है।
बड़ी companies project develop करने से पहले flow chart पर बहुत सा समय
लगाती है। Flow chart आपके program का blue print होता है। ये मकान बनाने से
पहले उसका नक्शा बनाने जैसा
होता है। जितना समय coding में लगता है उससे
कई अधिक समय flow chart में लगाया जाता
है। Algorithms भी flow chart के अनुसार ही
बनायीं जाती है।
हर अच्छे programmer को इसे सीखना चाहिए क्योंकि यह एक बहुत ही powerful tool है। आज कल बहुत
से modern text
editors जैसे की Microsoft word आदि flow chart create करने के लिए built in options provide करते है। आप
इन्हें यूज़ करके भी flow charts create कर सकते है।
Symbols of Flow Chart
किसी program को graphically समझाने के लिए कुछ symbols का प्रयोग किया जाता है। ये
symbols आपको पहले से provide किये गए है।
इन्हें flow chart
symbols कहा जाता है। हर symbol का एक मतलब होता है जिससे flow chart देखने वाला आसानी
से उसे समझ सकता है। निचे आपको table के माध्यम से flow chart symbols के बारे में
बताया जा रहा है।
Name |
Symbol |
Explanation |
Begin/End |
|
ये oval symbol होता है।
इसे terminal symbol भी कहा जाता है। इसे flow chart
को start और end करने के लिए यूज़ किया जाता
है। किसी भी processing से पहले program का start और end point define करना अत्यंत आवश्यक है। |
Processing |
जब भी आप कोई execution करते है या
फिर कोई ऐसा statement जिसमे processing हो रही है उसे processing symbol से दर्शाया
जाता है। |
|
Input/Output |
|
Program के input
और output को
दर्शाने के लिए आप parallelogram का
इस्तेमाल करते है। |
Decision |
|
Program के decision
making statements को दर्शाने के लिए diamond
symbol यूज़ किया जाता है। |
Arrow (Flow) |
|
Program का flow दिखाने के
लिए arrow symbol यूज़ किया जाता है। इसे हर symbol के बाद flow दिखाने के लिए यूज़ किया जाता
है। |
Introduction to C Operators
Variables के अंदर values store करवाकर आप उन variables पर कई प्रकार के operations
perform कर सकते है। उदहारण के लिए दो integer variables के अंदर value store करवाकर आप addition का operation
perform कर सकते है और उन दोनों variables की values के sum को print करवा सकते है।
इसी प्रकार आप और भी अलग अलग operations variables के साथ perform कर सकते है।
Variables के साथ operations perform करने के लिए आपको अलग अलग operators यूज़ करने पड़ते
है। इस chapter में आपको ऐसे ही operators के बारे में
बताया जा रहा है।
Operations में operators के साथ जो variables यूज़ होते है वो operand कहलाते है।
उदाहरण के लिए नीचे दिए गए statement को देखिये।
c = a + b; |
उपर दिए गए statement में a और b को operator (+) के साथ यूज़ किया गया है इसलिए ये दोनों variables
operands कहलायेंगे।
Operators 2 प्रकार के होते है।
·
Unary - इस प्रकार के operators सिर्फ एक ही operand के साथ यूज़ किये
जाते है।
·
Binary - इस प्रकार के operators के साथ 2 operands यूज़ किये जाते
है।
आइये अब C language में यूज़ होने वाले अलग अलग operators के बारे में
जानने का प्रयास करते है।
Arithmetic Operators
Arithmetic operators mathematical operations perform करने के लिए यूज़
किये जाते है। जैसे की addition, subtraction, division और multiplication आदि। Arithmetic
operators 5 प्रकार के होते है। ये basic mathematical operators होते है।
Operators |
Description |
+ (Addition) |
ये operator दो variables की values को add करता है। |
- (Subtraction) |
ये operator एक variable की value में से
दूसरे variable की value
subtract करता है। |
* (Multiplication) |
ये operator 2 variables की values को multiply करता है।
|
/ (Division) |
ये operator एक variable की value से दूसरे variable की value को divide करता है। |
% (Modulus) |
ये operator division के बाद शेष
बची हुई value को प्राप्त करने के लिए यूज़
किया जाता है। |
Relational Operators
Relational operators दो variables की values को compare करने के लिए यूज़ किये जाते है। जैसे की आप इन operators का यूज़ करके पता
लगा सकते है की क्या किन्ही दो variables की values बराबर है और यदि बराबर नहीं है तो कौनसे variable की value बड़ी है और कौनसे
variable की value छोटी है।
इस तरह के operators को conditional statements (if,if-else,switch,for,while आदि) के साथ यूज़
किया जाता है। ये operators
condition check करने के लिए यूज़ किये जाते है। Condition true होने पर value true हो जाती है और condition false होने पर value false हो जाती है।
C language में यूज़ होने वाले सभी relational
operators के बारे में नीचे दिया जा रहा है।
Operators |
Description |
== (Equal To) |
ये operator check करता है की
क्या दोनों variables की values
equal है। |
!= (Not Equal To) |
ये operator check करता है की
क्या दोनों variables की values non
equal है। |
< (Lesser Than) |
ये operator check करता है की क्या left operand की value right operand से छोटी
है। |
> (Greater Than) |
ये operator check करता है की
क्या left operand की value
right operand से बड़ी है। |
<= (Lesser than equal) |
ये operator check करता है की
क्या left operand की value
right operand से छोटी या उसके समान है। |
>= (Greater than equal) |
ये operator check करता है की
क्या left operand की value
right operand से बड़ी या उसके समान है। |
Logical Operators
Logical operators को decision making statements के साथ यूज़ किया
जाता है। ये operators
control statements में एक साथ दो condition को check करने के लिए यूज़ किये जाते है। उदाहरण के लिए आप
किसी if statement में एक की जगह 2 conditions
check कर सकते है। Logical operators के बारे में नीचे दिया जा रहा है।
Operators |
Description |
&&(AND) |
जब दोनों conditions true होती है तब
control statement की value true हो जाती है। |
|| (OR) |
जब कोई भी एक condition true हो तो भी control statement की value true हो जाती है। |
! (NOT) |
ये operator एक ही condition के साथ यूज़ किया जाता है। जब
वो condition false होती है तो control statement की value true हो जाती है। |
Bit Wise
Operators
Bit wise operators दिए गए variables पर bit level operations perform करने के लिए यूज़
किये जाते है। Variables की decimal values
bits में convert की जाती है। इसके बाद उन bits पर operations
perform किये जाते है।
C language में यूज़ होने वाले bit wise operators के बारे में नीचे
दिया जा रहा है।
Operators |
Description |
& (Bit wise AND) |
इस operator के द्वारा
दोनों variables की same
position वाली bits के साथ AND operation perform किया जाता
है। |
| (Bit wise OR) |
इस operator के द्वारा
दोनों variables की same
position वाली bits के साथ OR operation perform किया जाता
है। |
~ (Bit wise NOT) |
ये operator सिर्फ एक
ही operand के साथ यूज़ किया जाता है।
जिस variable के साथ इसे यूज़ किया जाता है
उस variable की value की सभी bits
opposite हो जाती है। जैसे की 0 है तो 1 हो जाती है और 1 है तो zero हो जाती है। |
^ (XOR) |
ये एक special type का OR operator होता है। ये operator
opposite bits होने पर 1 return करता है और
same bits होने पर 0 return करता है। |
<< (Left Shift) |
ये operator left side के variable की bits को right side के variable में दी गयी
value जितना left में shift करता है। |
>> (Right Shift) |
ये operator left side के variables की bits को right side के variable में दी गयी
value जितना right में shift करता है। |
जैसा की आपको पता है bit wise operators bits के साथ work करते है। मान
लीजिये आपने program में 2 variables a और b create किये हुए है। इन
दोनों variables में आपने क्रमशः 3 और 5 values store करवाई हुई है।
इनकी bits पर work करने के लिए सबसे
पहले आप इन्हें binary में convert कर सकते है।
3 = 00000011
5 = 00000101
सिर्फ आपको समझाने के purpose से इन्हें binary में convert किया गया है।
आपको program में binary values
insert करवाने की आवश्यकता नहीं है। Computer information को binary form में ही store करता है। ऊपर define किये गए सभी operations इन bits पर ही perform किये जायेंगे।
Assignment Operators
Assignment operators variables की values को एक दूसरे को assign करने के लिए यूज़
किये जाते है। C language में यूज़ होने
वाले विभिन्न assignment
operators के बारे में नीचे दिया जा रहा है।
Operators |
Description |
= |
ये operator right side के operand की value को left side के operand को assign करता है। |
+= |
ये operator left side के operand में right side
के operand की value को add करके result left side वाले operand
को assign करता है।
इसे आप इस प्रकार भी लिख सकते है।
a = a+b; |
-= |
ये operator left side के operand की value में से right side के operand की value को subtract करके result left side के variable में store करवाता है। इसे आप इस प्रकार
भी लिख सकते है। a=a-b; |
*= |
ये operator left side के operand की value को right side के operand की value से multiply करके result को left side के operand में store करता है। |
/= |
ये operator left operand की value को right
operand की value से divide करके result को left side के operand में store करता है। |
%= |
ये operator left side के operand की value को right side के operand की value से divide करके शेष
बचे हुए result को left side के operand में store करता है। |
Increment/Decrements
operators
किसी भी variable की value को एक number से instantly increase या decrease करने के लिए आप increment/ decrements
operators यूज़ कर सकते है। इनके बारे में नीचे दिया जा रहा है।
Operators |
Description |
++ (increment) |
ये एक unary operator होता है।
ये operand की value को एक number से increase करता है।
जब यह operand के पहले लगता है तो value पहले increment होती है और बाद में यूज़ की जाती है।
जब ये operator operand के बाद लगता है तो operand की value यूज़ होने
के बाद increment होती है। |
--(decrements) |
ये भी एक unary operator होता है।
ये operand की value को एक number से decrease करता है।
जब इसे operand से पहले यूज़ किया जाता है तो
value यूज़ होने से पहले decrease होती है। जब इसे variable के बाद यूज़ किया जाता है तो value पहले यूज़ होती है और बाद में
decrease होती है। |
Conditional (?:) Operator
Conditional operator को ternary operator भी कहा जाता है। ये if-else statement की short form होती है। इसका general
structure इस प्रकार होता है।
contion ? stmnt1 : stmnt 2; |
यदि condition true हो तो statement one return होगा नही तो statement 2
return होगा। इसका उदाहरण निचे दिया जा रहा है।
5>3 ? true : false; |
Special C Operators
Operators |
Description |
sizeof (var_name ) |
ये operator memory में variables की size
return करता है। |
& |
ये operator variables का memory address return करता है। |
* |
ये operator variable का pointer return करता है। |
Introduction to C Decision Making
आप अपने program में कौनसे statements को execute करना चाहते है और कौनसे statements को skip करना चाहते है ये
आप खुद decide कर सकते है। इसे decision making कहते है।
ज्यादातर decision making किसी condition के base पर की जाती है।
एक particular condition आने पर आप मनचाहे statements
को execute कर सकते है। इसके लिए आप कुछ built in
statements को यूज़ करते है। क्योंकि ये statements conditions के साथ काम करते
है इसलिए इन्हें conditional statement भी कहा जाता है। और क्योंकि ये statement
program में execution को control करते है इसलिए इन्हें control statements भी कहा जाता है।
इन statements के बारे में जानने से पहले आइये decision making को एक उदाहरण से
समझने का प्रयास करते है।
मान लीजिये आप किन्हीं दो students में से जिसकी age अधिक हो उसका नाम print करना चाहते है।
आप ऐसा किस प्रकार कर सकते है? नीचे दिए हुए program को देखिये।
#include <stdio.h> #include <conio.h>
void main() { raviAge = 40; ankitAge = 32; } |
उपर दिए गए उदाहरण में 2 students की age 2 variables में store की गयी है। लेकिन
आपको सिर्फ उसी student की age print करनी है जिसकी age सबसे ज्यादा हो। इस situation में आपको decision लेने की आवश्यकता
है। ऐसा आप किसी भी decision making statement (If, If-else, Switch) के द्वारा कर
सकते है।
आइये इन statements के बारे में detail से जानने का
प्रयास करते है।
If Statement
If statement का general syntax निचे दिया जा रहा
है।
if(condition) { // statements } |
If statement curly braces {} के द्वारा एक block define करता है। जब condition true होती है तो इस block में दिए गए statement
execute होते है। यदि condition false हो तो इस पुरे block को compiler skip कर देता है। यदि
उपर दिए गए example में if statement का यूज़ किया
जाये तो program को इस प्रकार
लिखा जा सकता है।
#include <stdio.h>
int main() { int raviAge = 40; int ankitAge = 32;
if(raviAge > ankitAge) { printf("Ravi is elder."); }
} |
उपर दिए गए उदाहरण में conditional operator का यूज़ करते हुए
एक condition लगायी गयी है।
यदि Ravi की age Ankit से अधिक है तो if statement में दिया गया printf()
statement execute होगा है। लेकिन यदि ऐसा नहीं है तो ये statement
execute नहीं होगा। ये program निचे दिया गया output generate करेगा।
Ravi is elder. |
If-Else Statement
If else statement को if statement का ही part माना जाता है। लेकिन इसमें else block और add किया जाता है। Else block में दिए गए statement तब execute होते है जब if की condition false हो जाती है। If-else
statement का general syntax नीचे दिया जा रहा है।
if(condition) { //statements } else { //statements } |
जैसा की आपको पता है if की condition true होने पर if block में दिए गए statements
execute होते है। लेकिन आप ये भी decide कर सकते है की
यदि condition false हो तो क्या किया
जाना चाहिए। इसके लिए आप else block यूज़ करते है। ये block हमेशा if block के बाद में आता
है। इस block में वो statements लिखे जाते है जो
की condition false होने पर execute होंगे। यदि ऊपर
दिए गए उदाहरण में if else statement का प्रयोग किया जाये तो आप उसे इस प्रकार लिख
सकते है।
#include <stdio.h>
void main() { int raviAge = 20; int ankitAge = 32;
if(raviAge > ankitAge) { printf("Ravi is
elder"); } else { printf("Ankit is
elder"); } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Ankit is elder. |
else if
यदि आप if और else के बीच में एक और condition लगाना चाहते है
तो ऐसा आप else if block
define करके कर सकते है।
if(raviAge > ankitAge) { printf("Ravi is elder"); } else if(ankitAge > raviAge) { printf("Ankit is elder"); } else { printf("Both are equal"); } |
Switch Statement
Switch statement भी if statement की तरह ही होता है लेकिन इसमें condition check करने की बजाय case check किया जाता है। एक
particular case आने पर आप जो statements
execute करना चाहते है उन्हें आप case के अंदर लिखते
है।
Case एक integer variable से match किया जाता है। जो case integer variable से match हो जाता है वही case execute हो जाता है
Switch statement का general syntax नीचे दिया जा रहा
है।
int caseNumber = n;
switch(caseNumber) { case 1:
//statements to be executed break;
case 2:
//statements to be executed break;
default:
//statements to be executed break; } |
जब आप caseNumber variable को किसी integer value के साथ set करते है और इसे switch statement
में pass करते है तो ये number जिस caseNumber से match करेगा वही case execute होगा।
जैसे की यदि आपने case number में 2 pass किया है तो second number का case execute होगा और break से पहले के सभी statements
execute हो जायेंगे।
यदि कोई case match नहीं करता है तो default case execute होता है। यदि हर case के बाद break statement ना यूज़ किया
जाये तो सभी case execute हो जाएंगे। Case को आप alphabets से भी define कर सकते है।
आइये switch statement को एक उदाहरण के माध्यम से समझने का प्रयास करते है।
#include <stdio.h> void main() { int caseNumber; printf("Enter a number "); scanf("%d",&caseNumber); switch(caseNumber) { case 1:
printf("\nFirst Case executed....");
break;
case 2:
printf("\nSecond Case executed....");
break;
default:
printf("\nNone of the case matched. You can only enter 1 or
2");
break; }
} |
उपर दिए गए उदाहरण में user से एक number enter करवाया जा रहा है
और उस number के base पर matching case
execute करवाया जा रहा है। ये program निचे दिया गया output generate करता है।
Enter a number : 2 Second case executed.... |
Introduction to C Language Looping
यदि मै आपसे कहुँ की आपको C language in Hindi 10 बार print करवाना है तो ऐसा
आप किस तरह करेंगे? सामान्यतया: ऐसा करने के लिए आप 10 printf()
statements लिखेंगे। ये एक बेकार approach है। ऐसा करने से programmer का time और computer की memory waste होती है।
C language में आपको loops provide किये गए है। Loops की मदद से आप एक
ही statement को बार बार execute करवा सकते है। हर
तरह का loop एक block provide करता है जिसमे वो
statements लिखे जाते है
जिन्हें आप एक से ज्यादा बार execute करवाना चाहते है।
Loop 3 चीज़ों से मिलकर बना होता है।
·
Initial variable - ये वो variable होता है जँहा से आप loop को start करते है। ये एक integer variable
होता है। इस variable को तब तक increment किया जाता है जब तक की दी गयी condition false ना हो जाये। इस variable को loop की condition में include किया जाता है।
·
Condition - ये वो condition होती है जो loop को control करती है। जब तक
ये condition true रहती है loop execute होता रहता है।
जैसे ही ये condition false होती है loop terminate हो जाता है।
·
Increment - आप कितने number से या कैसे initial variable/condition को increment करना चाहते है ये
increment part में define किया जाता है।
C language आपको 3 तरह के loops प्रोवाइड करती है।
·
While loop
·
Do-while loop
·
For loop
आइये अब C language में use होने वाले इन loops के बारे में detail से जानने का प्रयास
करते है।
C While Loop
While एक simple loop होता है ये जब तक condition true रहती है तब तक execute होता है। Condition के false होने पर ये loop terminate हो जाता है। While loop का general syntax नीचे दिया जा रहा
है।
initial variable declaration; while(condition) {
//statements //increment } |
Condition यदि पहली बार में ही false हो तो compiler loop में enter ही नहीं होता है।
Loop को totally skip कर दिया जाता है।
आइये while लूप को एक उदाहरण
से समझने का प्रयास करते है।
#include<stdio.h>
void main() { int num=1;
while(num<=10) {
printf("%d\t",num); num++; } } |
ऊपर दिए गए उदाहरण में पहले num variable को 1 value के साथ set किया गया है। Loop के अंदर condition दी गयी है की जब
तक num 10 से काम या 10 के बराबर ना हो loop execute होता रहे। Loop के अंदर हर iteration में num variable की value print की जा रही है।
इसके बाद num variable को increment किया जा रहा है।
ये program निचे दिया गया output generate करता है।
1 2 3 4 5 6 7
8 9 10 |
यदि initial variable को increment ना किया जाये तो condition कभी false नहीं होगी। ऐसे
में loop infinite
time तक चलता जायेगा।
C Do-while Loop
Do while loop भी while loop की तरह ही होता है। लेकिन इस loop में पहले condition check होने के बजाय
पहले statements
execute होते है उसके बाद में condition check होती है। लेकिन
ऐसा सिर्फ first time होता है। Do while
loop का general syntax नीचे दिया जा रहा है।
do { //statements; //increment; }while(condition); |
जैसे ही compiler do section में आता है तो do block के सभी statements
execute कर दिए जाते है और initial variable को increment कर दिया जाता है।
इसके बाद compiler while
condition को check करता है। यदि condition true होती है तो do block को वापस execute किया जाता है।
लेकिन यदि condition false हो तो loop terminate करके compiler आगे बढ़ जाता है।
While की condition चाहे true हो या false do block के statements एक बार जरूर execute होते है। आइये do while loop को एक उदाहरण से
समझने का प्रयास करते है।
#include<stdio.h>
void main() { int num=1; do {
printf("%d\n",num); num++; }while(num>2);
printf("Num is not greater than 2
that is why loop terminated!!");
} |
उपर दिए गए उदाहरण में हालाँकि condition false है लेकिन फिर भी do block में दिया गया statement एक बार जरूर execute होगा। ये program निचे दिया गया output generate करता है।
1 Num is not greater than 2 that is why loop
terminated!! |
C For Loop
C loops में for loop सबसे ज्यादा use किया जाता है। ये
loop बहुत ही easy होता है और एक single statement
में define हो जाता है। इस loop का general
structure नीचे दिया जा रहा है।
for(initialvariable;condition;increment) { //statements } |
For loop के बारे में खास बात ये है की आप एक statement में तीनों elements define किये जाते है। इस loop को नीचे उदाहरण
द्वारा समझाया गया है।
#include<stdio.h> void main() { int num; for(num=1;num<=10;num++) {
printf("%d",num); } } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
1 2 3 4 5 6 7
8 9 |
C Loop Control Statements
Loop control statements वे statements होते है जो किसी condition के अनुसार loop के execution को change कर देते है। ये statements loop को अपने अनुसार change करने के लिए बहुत
उपयोगी होते है।
C language में available loop control statements के बारे में निचे
बताया जा रहा है।
break Statement
Loop को terminate करने के लिए break statement का प्रयोग किया
जाता है। जब किसी loop के अंदर break statement execute होता है तो वह loop उसी समय terminate हो जाता है और उस
loop के बाद के next statement का execution शुरू हो जाता है।
C break statement का general syntax निचे दिया जा रहा है।
break; |
निचे break statement का एक simple उदाहरण दिया जा रहा है।
#include<stdio.h> |
ऊपर दिए गए उदाहरण में जैसे ही loop की तीसरी iteration आती है break statement
execute होता है और loop terminate हो जाता है। यह उदाहरण निचे दिया गया output generate करता है।
1 |
continue Statement
C language में continue statement loop की किसी iteration को skip करने के लिए
प्रयोग किया जाता है। उदाहरण के लिए आप चाहते है की loop की तीसरी iteration
execute ना हो तो उसके लिए आप condition द्वारा third iteration
detect करके continue statement द्वारा उसे skip कर सकते है।
C continue statement का general syntax निचे दिया जा रहा है।
continue; |
निचे continue statement का एक simple उदाहरण दिया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
1 |
goto Statement
C language में goto statement program के अंदर एक जगह
से दूसरी जगह jump करने के लिए
प्रयोग किया जाता है। यह jump define किये गए label पर किया जाता है।
C goto statement का general syntax निचे दिया जा रहा है।
... |
जैसा की आप ऊपर दिए गए syntax में देख सकते है label को define करने के लिए label का नाम लिखकर colon (:) लगाया जाता है। Label पर jump करने के लिए goto statement के बाद label का नाम लिखा जाता
है।
निचे goto statement को एक simple उदाहरण द्वारा समझाया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
I dont want to print Hello. Jumping... |
Introduction to C Arrays
मान लीजिये आप एक ऐसा प्रोग्राम बना रहे है जो employees का नाम computer में store करता है। अब मान
लीजिये आपकी company में 200 employees है। आप इन 200 employees के नाम किस तरह
से store करेंगे। यदि आप
सोच रहे है की आप 200 variables create करेंगे तो ये एक बहुत ही complex approach होगी।
इसमें आपको program बनाने में बहुत समय लग जायेगा और program भी हद से ज्यादा
बड़ा हो जायेगा। ये आपके time और computer memory space दोनों का wastage है। और साथ ही आप
इतने सारे variables के नाम सोच भी
नहीं सकते है और यदि सोच भी लेंगे तो program में यूज़ करने के लिए उन्हें याद तो definitely नहीं रख सकते है।
मेरे पास आपके लिए इससे भी better approach है और उस approach को C language में array कहते है। Array similar
type की values का collection होता है। Similar type से यँहा मेरा मतलब similar data type से है जसे की int, float ,
Char आदि।
C आपको arrays के द्वारा ऐसी facility provide करती है की आप सिर्फ एक variable create करे और उस variable में 200 employees के नाम (या जो भी
information आप store करना चाहते है) store कर ले। आप सोच
रहे होंगे की एक variable में इतने सारे नाम कैसे store करेंगे। इसके
बारे में मुझे आपको बताने में
बहुत ख़ुशी होगी। लेकिन उससे पहले आइये देखते है की array को create कैसे करते है।
Creating C Arrays
Array एक structured data type होता है। जैसा की
आपने C Structures की tutorial में पढ़ा होगा की
एक structure में आप कई variables create
कर सकते है। यँहा भी situation कुछ कुछ वैसी ही
है। जब भी आप एक array create करते है तो आप array का नाम और आप उसमे कितनी values store करने वाले है ये define करते है।
जैसे की मान लीजिये आप 5 numbers store करना चाहते है तो
उसके लिए आप array
create कर सकते है। C में arrays create करने का general structure नीचे दिया गया है।
data_type array-name[size]; |
size से आप define करते है की आप कितनी values store करना चाहते है।
इसका उदाहरण नीचे दिया जा रहा है।
int num[5]; |
उपर दिए गए उदाहरण में array का नाम num है और उसमे आप
कोई भी 5 integer values
store कर सकते है।
Initializing C Arrays
यँहा तक मैने आपको बताया है की array कैसे create करते है। अब आपके सबसे महत्वपूर्ण question पर आते है की आप
इस array में 5 values कैसे store करेंगे। तो में
आपको बता दूँ की जब भी आप array create करते है तो जितनी उसकी size होती है उतनी ही locations उस array को memory में allocate हो जाती है। और
वो locations उतने ही index numbers के नाम से allocate होती है।
Index numbers हर location का एक unique नाम होता है। जैसे की यँहा ऊपर दिए उदाहरण में 5 index numbers होंगे। आपको एक
बात हमेशा याद रखनी चाहिए की array की index हमेशा zero से शुरू होती है।
num[0] num[1] num[2] num[3] num[4] |
Array के नाम और index number से आप create की गयी हर location में value store करवा सकते है और बाद में उससे value access भी कर सकते है।
(Note : Arrays की index हमेशा zero से शुरू होती है। )
जैसे की ऊपर create किये गए array में आप इस प्रकार value insert करवा सकते है।
num[0] = 50; num[1] = 100; num[2] = 150; num[3] = 200; num[4] = 250; |
आप चाहे तो हर location को अलग से value assign करने की बजाय एक साथ भी सभी values को assign कर सकते है। ऐसा
आप इस प्रकार कर सकते है।
int num[5] = {50,100,150,200,250}; |
और यदि आप values यूज़र से run time में store करवाना चाहते है तो ऐसा आप इस प्रकार कर
सकते है।
for(int i=0; i<=5; i++) { scanf("%d",&num[i]); } |
Accessing Array Elements
अब तक मैने आपको arrays create करना और उनमे values store करना बताया है।
इस section में में आपको उन values को access करना बताऊंगा। Array elements को access करके आप उन पर वो
सभी operations
perform कर सकते है जो आप normal variables के साथ perform कर सकते है।
उदाहरण के लिए आप 2 array elements को add करवा सकते है।
जँहा भी array element को access करना चाहते है उस जगह आप array का नाम और index number लिखते है। उदाहरण
के लिए निचे लिखे गए statement को देखिये।
num[2] = num[0] + num [1]; |
ऊपर दिए गए statement में शुरू की 2 values को add करके 3 location पर store करवाया गया है।
यदि आप किसी एक value को print करवाना चाहते है तो ऐसा आप इस प्रकार कर सकते है।
printf("%d",num[3]); |
ऊपर दिया गया statement 4th location की value print करेगा जो की यँहा
दिए गए example में 200 है।
यदि आप पुरे array को एक साथ print करना चाहते है तो ऐसा आप loop की मदद से कर
सकते है। ये ध्यान रखे की loop उतना ही चले जितनी की values आपके array में है। इसका
उदाहरण नीचे दिया जा रहा है।
for(int i=0; i<=5;i++) { printf("%d",num[i]); } |
Example
#include <stdio.h> #include <conio.h>
int main() { int arr[5]; printf("Please enter 5 array
elements : \n"); for(i=0;i<=4;i++) {
scanf("%d",arr[i]); }
printf("Array is:"); for(i=0;i<=4;i++) {
printf("%d\t",arr[i]); }
return 0; } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Please enter 5 array elements : 5 4 3 2 1 Array is : 5 4 3 2 1 |
Two Dimensional Arrays
एक normal array में data list की form में store किया जाता है जिसमें एक के बाद दूसरा element होता है। यदि आप data tabular
form में store करना चाहते है तो इसके लिए आप two dimensional
array create कर सकते है। उदाहरण के लिए आप 4 employees की id और उनका phone
number store करना चाहते है। इसके लिए table इस प्रकार बनेगी।
101 |
7599393 |
102 |
9384940 |
103 |
9458940 |
104 |
9129399 |
इस प्रकार की table आप two dimensional array के द्वारा memory में create कर सकते है।
Creating Two Dimensional Array
C language में two dimensional array create करने का general syntax निचे दिया जा रहा
है।
data-type array_name[row][column]; |
Two dimensional array को row और column के संदर्भ में define किया जाता है।
सबसे पहले आप array का type define करते है। इसके
बाद आप array का एक unique नाम define करते है। इसके
बाद आप जितनी row create करना चाहते है
उतनी संख्या angular bracket में define करेंगे। इसके बाद
आप जितने columns create करना चाहते है
उतनी संख्या दूसरे angular bracket में define करेंगे।
उदाहरण के लिए ऊपर दी गयी table आप two dimensional
array के माध्यम से memory में इस प्रकार create करेंगे।
int myArray[4][2]; |
ऊपर दिया गया statement memory में एक table (two dimensional array) create करेगा जिसकी 4 rows और 2 columns होंगे।
Initializing Two Dimensional
Array
Two dimensional array को आप किसी variable की तरह initialize कर सकते है। जब
आप इस प्रकार initialize करते है तो हर position के लिए separately value
assign करते है। उदाहरण के लिए आप पहली row के पहले column में value store करना चाहते है तो
ऐसा आप इस प्रकार करेंगे।
myArray[1][1]=101; |
इसी प्रकार second column में phone number आप इस प्रकार store कर सकते है।
myArray[1][2]=7599393; |
यदि आप user से इस array में value input करवाना चाहते है तो इसके लिए आप 2 loops use करेंगे। पहला loop rows को iterate करेगा और इसे row की संख्या तक ही
चलाया जायेगा। दूसरा loop columns को iterate करेगा और इसे भी columns की संख्या तक ही चलाया जायेगा।
इसका उदाहरण निचे दिया जा रहा है।
for(int i=0;i<4;i++) |
Accessing Two Dimensional Array
Two dimensional array में से यदि आप किसी single element को access करना चाहते है तो
ऐसा आप उसकी position index को access करके कर सकते है।
उदाहरण के लिए यदि आप 2nd row के 1st column की value print करना चाहते है तो इसके लिए आप इस प्रकार statement लिखेंगे।
printf("Element at 2nd row 1st column is
:%d",myArray[2][1]); |
यदि आप array के सभी elements को एक बार में print करना चाहते है तो
इसके लिए आप 2 loops use करते है। इसका
उदाहरण निचे दिया जा रहा है।
for(int i=0;i<4;i++) |
Example
#include <stdio.h>
int main() { int myArray[4][2]; int i,j; printf("Please enter array
elements : ")
} |
ऊपर दिया program निचे दिया गया output generate करता है।
Please enter array elements : 1 2 3 4 5 6 7 8 Arrays is : 1 2 3 4 5 6 7 8 |
Passing Array to Function
आप चाहे तो एक array को किसी function में argument के रूप में भी pass कर सकते है। इसके
लिए function में parameter
declare करने का general syntax निचे दिया जा रहा है।
return-type function-name(array-type array-name[]) |
Functions में array pass करना simple उदाहरण द्वारा समझाया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
Sum of array is 10 |
Returning Array from
Function
Normal variables के अलावा किसी function से array भी return किया जा सकता है। C language में एक complete array को return करना allow नहीं है लेकिन आप
array का pointer return कर सकते है। इसके
लिए आपको array का नाम बिना index के साथ specify करना होगा।
एक महत्वपूर्ण बात आपको ये ध्यान रखनी चाहिए की C language
function के किसी local variable का address return किया जाना allow नहीं करती है। इसलिए आप जिस को return करना चाहते है
उसे आपको static define करना होगा।
जिस function से आप array return करना चाहते है उसका return आपको pointer के साथ declare करना होगा।
क्योंकि जैसा की मैने पहले बताया C language में array का pointer return करना ही allow है। इसका syntax निचे दिया जा रहा है।
return-type * function-name |
C language में function से array return करने का उदाहरण निचे दिया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
Please enter a number to generate its table. |
Pointer to Array
एक array का नाम constant pointer होता है। यह pointer array के first element को point करता है। जब भी
आप कोई array create करते है तो यह pointer
automatically create हो जाता है।
इसलिए यदि आप किसी array के नाम को किसी pointer variable
को assign करते है तो इसके लिए आपको array के नाम से पहले address of
(&) operator define करने की आवश्यकता नहीं होती है। क्योंकि जैसा की मैने पहले
बताया एक array का नाम already constant
pointer होता है।
उदाहरण के लिए आपने एक array create किया है Num नाम से जिसमें 5 integer
numbers है।
int Num[5] = {1,2,3,4,5}; |
यदि इसी array के नाम को किसी integer pointer variable को assign किया जाता है तो
वह variable Num
array के first element 1 को point करेगा।
int *n; |
इस situation में pointer variable n array के first variable का address hold करता है। यदि इसे
value at (*)
operator के साथ use किया जाए तो यह variable 1 print करता है। इसी
प्रकार आप इस pointer variable
द्वारा array के सभी elements को access कर सकते है।
Array और pointers का एक simple उदाहरण निचे दिया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
3 |
Introduction to C Strings
C language में strings create करने के लिए कोई data type available नहीं है। C language में string
store करने के लिए आप char array create करते है। इसलिए C में character array
को string भी कहते है। C language में strings null character (\0) से terminate होती है।
C में आप strings 2 तरह से declare और initialize कर सकते है। पहले तरीके में आप एक finite number का array create करते है और उसकी
हर index में string का एक एक character store करवाते है। इस array की last index में null character
(\0) store करवाया जाता है। ऐसा करना necessary होता है। इसका
उदाहरण नीचे दिया जा रहा है।
char myArray[4] = {B,H,T,\0}; |
दूसरे तरीके में आप एक undefined char array create करते है और उसे
एक string assign कर देते है। Array
automatically उतनी ही size का हो जाता है जितनी की string की size है। इस तरह के initialization में null character
(\0) automatically add हो जाता है। ये तरीका C में string create करने का बहुत ही
आसान तरीका है इसलिए इसे अधिक यूज़ किया जाता है। इसका उदाहरण नीचे दिया जा रहा है।
char myArray[] = "BHT"; |
जब आप इस तरीके से string declare करते है तो उसे
कभी change नहीं कर सकते है।
C language में strings को किस प्रकार use करते है इसका complete उदाहरण नीचे दिया
जा रहा है।
#include <stdio.h>
int main() { char myArrayF[4] = {'B','H','T','\0'}; char myArrayS[] = "BHT"; printf("First Way :
%s\n",myArrayF); printf("Second Way : %s",
myArrayS); } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
First Way : BHT Second Way : BHT |
gets() and puts() Functions
यदि आप string user से run time पर read करना चाहते है तो इसके लिए आप gets() function यूज़ कर सकते है।
इस function को इसी purpose के लिए define किया गया है। इस function में आप उस char array का नाम pass करते है जिसमे आप
string store करवाना चाहते है।
इस function का general
structure नीचे दिया जा रहा है।
gets(char_Array_Name); |
जो भी string आप pass करते है वह दिए गए char array में store हो जाती है। अब
यदि आप इस array से उस string को print करवाएंगे तो आपको
loop का इस्तेमाल करना
पड़ेगा। लेकिन आपको ऐसा करने की जरुरत नहीं है। C language आपको किसी char array को एक complete string के रूप में print करने के लिए puts() function
provide करवाती है। इस function में वो char array pass किया जाता है जिसे आप complete string के रूप में print करवाना चाहते है।
इसका general
structure नीचे दिया जा रहा है।
puts(char_Array_Name); |
इन दोनों functions का यूज़ complete उदाहरण के साथ नीचे समझाया जा रहा है।
#include <stdio.h> #include <conio.h>
int main() { char answer[50]; printf("What is BHT?"); gets(answer); printf("\nAnswer is : "); puts(answer); } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
What is BHT? Best Hindi Tutorials
(input) Answer is : Best Hindi Tutorials |
Other String Functions
Strings के साथ operations perform करने के लिए C language आपको और भी functions
provide करती है। इन सभी functions के बारे में नीचे दिया जा रहा है।
strlen()
ये function string की length calculate करने के लिए यूज़ किया जाता है। इस function में आप उस char array का नाम pass करते है जिसमे string को store किया गया है।
इसका syntax नीचे दिया जा रहा
है।
strlen(char_Array_Name); //will return the length
of string |
strcpy()
ये function एक array से string को दूसरे array में copy करने के लिए यूज़ किया जाता है। इस function का पहला argument वह char array होता है जिसमे आप
string को copy करना चाहते है और
दूसरा argument वह char array होता है जिससे आप string को copy करना चाहते है।
इस function का syntax नीचे दिया जा रहा
है।
strcpy(destinationCharArray, sourceCharArray); |
strcat()
ये function दो strings को combine (concatenate) करता है। इस function में दो arguments पास किये जाते
है। ये दोनों argument ही character array होते है। जब ये function call होता है तो दोनों
strings combine हो जाती है और result दूसरे किसी char
array में store किया जाता है।
strcat(charArray1,charArray2); //combine both
strings and store result in first one. |
Introduction to C
Functions
कई बार आपके program में कुछ ऐसे statements हो सकते है
जिन्हें आपको बार बार execute करवाने की आवश्यकता होती है। ऐसी situation में इन statements को बार बार लिखना
आपके लिए time consuming भी हो सकता है और
साथ ही program को lengthy और unreadable भी बनाता है।
इस situation से बचने के लिए C आपको एक mechanism
provide करती है जिसे function कहते है। जिन भी statements को आप program में कई जगह बार बार execute करवाना चाहते है
उन्हें एक block में लिखते है और
इस block को एक unique नाम देते है।
इसके बाद program में जँहा भी इन statements को आप दुबारा execute करवाना चाहते है
तो नाम के द्वारा उन statements को call कर लेते है।
C में 2 तरह के functions होते है। इनके बारे में आप आगे जानेंगे।
Function का नाम और parameters (इनके बारे में आप आगे पढ़ेंगे) जब आप लिखते है तो उसे
function
declaration कहा जाता है। जब आप function में execute होने वाले सभी statements लिखते है तो उसे function
definition कहा जाता है। जब आप पुरे program में कँही भी function को यूज़ करते है
तो उसे function call कहा जाता है।
Predefined & User Defined Functions
जैसा की मैने आपको पहले बताया C में 2 तरह के functions पाए जाते है।
·
Predefined functions
·
User defined functions
आइये इनके बारे में detail से जानने का
प्रयास करते है।
Predefined Functions
Predefined functions वो functions होते है जो C library में पहले से define किये गए है। इन function को पहले से ही declare और define किया गया होता
है। बस आपको इन्हें use करने के लिए header files को include करना होता है। उदाहरण के लिए यदि आप अपने program में scanf और printf functions
use करना चाहते है तो इसके लिए आप <stdio> header file को अपने program में include करते है। ये
दोनों ही predefined
functions होते है। Predefined functions के कुछ उदाहरण
नीचे दिए जा रहे है।
·
scanf
·
printf
·
strcpy
·
vod *malloc()
·
int to lower()
User Defined Functions
User defined functions वो function होते है जो programmer खुद create करता है। Programmer अपनी need के according कितने भी functions create
कर सकता है। ये functions कैसे create किये जाते है और कैसे use किये जाते है
इसके बारे में आगे बताया जायेगा।
Advantages of Functions
1.
Functions create करने से programmer का time और computer की memory बचती है।
2.
एक ही code को आसानी से बार बार use करने से re-usability बढ़ती है।
3.
Program functions में divide हो जाता है जिससे उसे आसानी से manage और debug किया जा सकता है।
4.
Program की readability बढ़ती है।
Creating & Using Functions in C
C में functions create करना और उन्हें use करना बहुत ही आसान है। इस process के 3 major steps होते है।
·
Function declaration
·
Function definition
·
Function call
इनमें से हर step को आगे detail से explain किया गया है। आइये इनके बारे में जानने का प्रयास
करते है।
Function Declaration
इस part में आप function का नाम, उसका return type और parameters define करते है। Function declaration का basic structure नीचे दिया गया
है।
return_type functionName (parameters_list); |
·
return_type - आपका function
execution complete होने पर किस प्रकार की value return करेगा ये आप return type के द्वारा define करते है। उदाहरण
के लिए यदि आप एक addition का program बना रहे है जो 2 whole numbers को add करता है तो आपका return type int होगा।
·
functionName - ये आपके function का नाम होता है।
ये पुरे program में unique होना चाहिए। जब
आप function को call करते है तो इस
नाम को ही लिखते है।
·
Parameters-list - ये उन variables की list होती है जो आप function को call करते समय pass करेंगे।
उदाहरण के लिए आप addition का function बना रहे है तो parameters में आप 2 numbers या 2 variables user
से pass करवा सकते है। और फिर function के अंदर उन variables को add करके आप result show कर सकते है। इसका
उदाहरण आगे दिया जायेगा।
Function declaration का उदाहरण नीचे दिया जा रहा है। एक बात आपको हमेशा
याद रखनी चाहिए की function declaration statement को आप semicolon से terminate करते है। लेकिन function definition के साथ ऐसा नहीं
होता है। मान लीजिये की आप
addition का function बनाने जा रहे है
तो उसे आप इस प्रकार declare कर सकते है।
int add(int a, int b); |
Function Definition
इस part को function body भी कहा जाता है। इसमें आप वो statements लिखते है जिन्हें
आप execute करवाना चाहते है।
Function
definition का basic structure नीचे दिया जा रहा है।
return_type functionName (Parameters_list) {
statement 1; statement 2; . . statement n; } |
Function definition में return_type, functionName और parameters list उसी प्रकार होते
है जैसे की function
declaration में होते है। इनके बाद में curly braces के block में वो statements दिए जाते है जो
आप execute करवाना चाहते है।
उदाहरण के लिए यदि आप addition का function बना रहे है तो उसकी definition आप इस प्रकार लिख
सकते है।
int add(int a, int b) { int c; c = a+b; return c; } |
Function Call
Program में जँहा भी आप function को use करवाना चाहते है तो उसे call करते है। Function call का basic structure इस प्रकार होता
है।
functionName(arguments_list); |
Parameters/argument_list - Arguments वो values होती है जो आप function को call करते समय pass करते है। ये values function
definition के parameters को assign होती है। इसके बाद इन values पर processing होती है और result return किया जाता है।
उदाहरण के लिए यदि आप addition के function को call करते समय 2 values पास करेंगे जैसे की 2 और 7 ।
ये values parameter variables a और b को assign हो जाएँगी और function के अंदर इन variables पर ही processing होती है। ऐसे functions जिनमें parameters
define किये गए है और यदि आप function call करते समय arguments pass नहीं करते है तो program में error आती है।
उदाहरण के लिए यदि आपने addition का function create किया है तो आप
उसे इस प्रकार call कर सकते है।
add(2,7); |
C language में functions को 2 प्रकार से call किया जा सकता है।
·
call by value
·
call by reference
इन दोनों तरह के function calls के बारे में आगे उदाहरण सहित बताया जाएगा। लेकिन उससे
पहले C language में functions का एक उदाहरण
दिया जा रहा है।
Example
C language में functions को use करने का एक simple उदाहरण निचे दिया
जा रहा है।
#include<stdio.h>
int add(int a, int b); /* function declaration */
int main() { int result; printf("This is addition
program using function!\n"); result = add(2,7); /* function call
*/ printf("Result is : %d",
result); }
int add(int a, int b) /* function definition */ {
int c; c = a + b; return c; } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
This is addition program using function! Result is : 9 |
Call by Value
जब आप function को call करते समय कोई variable pass करते है तो असल
में वह variable
function में pass नहीं किया जाता है बल्कि उस variable की value parameter
variable में copy की जाती है और उसके बाद उस parameter variable पर operations
perform किये जाते है।
उदाहरण के लिए यदि ऊपर दिए गए addition के function को call करते समय दो integer
variables x और y pass किये जाएँ तो ऐसा करने पर उन दोनों variables की value parameter
variables a और b में copy हो जायेगी और उन पर addition perform करके result return किया जाएगा।
इस तरह के function call को call by value कहा जाता है। इसमें actual argument variables की value change नहीं होती है और
जो भी operation होता है वह parameter
variables पर ही perform होता है। इसका उदाहरण निचे दिया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
This addition is performed using function call by value |
Call by Reference
किसी function को call करते समय actual argument variables pass करने की बजाय
उनका address भी pass किया जा सकता है।
ऐसा करने पर उन variables का address
parameter variables में copy होगा और parameter variables memory में actual argument
variables को ही point करेंगे।
इस तरह के function call को call by reference कहा जाता है। इस तरह के function call में actual argument
variables का address pass किया जाता है। ऐसा करने से function के अंदर यदि variables की values में changes आते है तो उससे actual arguments
की values में भी changes आते है। यानी parameters में change आने पर arguments भी change हो जाते है।
इस तरह के function call में arguments को address of operator (&) के साथ pass किया जाता है। यह
operator
arguments का address parameter variables को pass करता है। इसके
अलावा function के declaration और definition में parameters को value at (*)
operator के साथ define किया जाता है।
Function call by reference का उदाहरण निचे दिया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
Call by Reference Demo |
Introduction to C Structures
आपने data types के बारे में तो पढ़ा ही होगा। Predefined data
types (int, char, float आदि) की तरह C user defined data types (structure, unions आदि) भी allow करती है। ऐसे ही
एक user defined
data type को structure कहा जाता है।
Structure में आप दूसरे predefined data
types को store कर सकते है और एक record तैयार कर सकते
है। जैसे की आप किसी व्यक्ति के बारे में उसका नाम,पता और उम्र store करवाना चाहते है
तो उस व्यक्ति के नाम से एक structure create कर सकते है और उसमे ये तीन variables create कर सकते है। ऐसा
करने से सारी information एक ही नाम के
द्वारा access की जा सकती है।
Structure किसी array की तरह ही होता
है। इन में difference इतना होता है की array में आप एक ही तरह
के data type को store कर सकते है लेकिन
structure में आप different data
types को store कर सकते है।
जब एक बार आप कोई structure create करते है तो ये एक
data type बन जाता है। अब
आप इस data type के कितने भी variables create
कर सकते है। और आप इस data type का array भी create कर सकते है।
लेकिन जब आप इस तरह के variable की value initialize करंगे तो आपको उस structure में define किये गए सभी variables की value initialize
करनी होगी।
Structure को main method से पहले ही आप define कर सकते है।
Defining a Structure
Structure के साथ काम करना
बहुत ही आसान होता है। जैसा की मैने आपको पहले बताया ये किसी array की तरह ही होता
है। आइये अब देखते है की structure को कैसे define किया जाता है और कैसे use किया जाता है।
Structure को define करने के लिए struct keyword use किया जाता है। इस
keyword के बाद structure का unique नाम दिया जाता
है। इसके बाद curly braces में variables create
किये जाते है। और ending curly bracket के बाद semicolon लगाया जाता है। Structure
create करने का basic syntax नीचे दिया जा रहा है।
struct struct_Name {
//Statement 1;
}; |
मान लीजिये आप किसी tShirt का record store करने के लिए एक structure बना रहे है तो
उसे इस प्रकार define कर सकते है।
struct tShirt { int price; }; |
यँहा पर tShirt नाम से एक structure create किया गया है। इस structure में price नाम से एक variable
create किया गया है। आप एक से ज्यादा variables भी create कर सकते है। आप इन variables को structure के अंदर initialize नहीं कर सकते है।
क्योंकि पहले struct (tShirt)
type का variable create किया जायेगा फिर उस variable के माध्यम से हर record के लिए अलग से इन
variables को initialize किया जाता है। इन
variables को structure
members कहा जाता है। जैसा की मैने आपको पहले बताया था उसी प्रकार ending curly
braces के बाद semicolon लगाया गया है।
Creating Structure Variables
Structure
variables आप 2 तरह से create कर सकते है।
·
With structure definition
·
Without structure definition
With Structure Definition
जब आप structure definition के साथ ही उस type के variables create
करते है तो ending semicolon से पहले आप variables को comma से separate करके लिख देते है। जैसे की नीचे दिए गए उदाहरण में
किया गया है।
struct tShirt { int price; }t1,t2; |
Without Structure Definition
जब आप structure definition के बिना variables create
करते है तो struct keyword use करते है। Struct keyword के बाद structure का नाम लिखा जाता है। और इसके बाद comma से separate करके जितने चाहो
उतने variables लिख सकते है।
इसका उदाहरण नीचे दिया जा रहा है।
struct tShirt t1, t2, t3; |
Accessing Structure Members
Structure
members को आप 2 वजह से access करते है। या तो आप members को values assign करवाने के लिए या
फिर उनकी values को output के रूप में print करवाने के लिए आप
structure
members को access करते है। जब भी आप किसी भी structure member को access करते है तो ऐसा आप (.) dot operator द्वारा करते है।
मान लीजिये आप tShirt structure के variables को values assign करवाना चाहते है तो आप ये इस प्रकार कर सकते है।
t1.price=1000; |
यदि आप tShirt structure के variables को output के रूप में print करवाना चाहते है
तो ऐसा आप इस प्रकार कर सकते है।
printf("%d",t1.price); |
Example
#include <stdio.h>
struct tShirt { int price; };
int main() { struct tShirt t1;
t1.price=1000;
printf("Price of tShirt is :
%d",t1.price);
return 0; } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Price of tShirt is : 1000 |
Structure as Function Argument
एक structure को आप किसी function में argument के रूप में भी pass कर सकते है। इसके
लिए आपको किसी प्रकार के special operator की आवश्यकता नहीं होती है। जिस प्रकार आप normal variables
को function arguments के रूप में pass करते है उसी
प्रकार आप structure object
को भी function में pass करते है।
लेकिन आपको function declaration और definition में parameter को struct keyword के साथ define करना होगा। इसका syntax निचे दिया जा रहा
है।
return-type function-name(struct-keyword struct-name
obj-name) |
Function में structure को argument के रूप में pass करना निचे उदाहरण
द्वारा समझाया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
Id : 101 |
Pointer to Structure
Structure
variables के pointers भी create किये जा सकते है। ये उसी तरह create किये जाते है
जैसे की आप किसी normal variable के pointers create करते है।
Structure
variables के pointers create करने का syntax निचे दिया जा रहा है।
struct-keyword struct-name
*struct-pointer-variable; //Creating pointer of struct |
Structure के pointers create करना और use करना निचे उदाहरण द्वारा समझाया जा रहा है।
#include<stdio.h> |
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
Employee Id : 101 |
BitFields
C language आपको memory को सही तरीके से utilize करने की capability
provide करती है। यदि आप structure के अंदर ऐसे variables create कर रहे है जो
पूरी memory को utilize नहीं करते है तो
इस situation में आप उन variables की size define
कर सकते है और बता सकते है की उस variable के लिए कितनी memory assign की जानी चाहिए।
आपको एक बात ध्यान रखनी चाहिए की ये आप सिर्फ structure और union members के साथ ही कर
सकते है। ऐसा किसी normal variable के साथ नहीं किया जा सकता है।
इसका मुख्य उद्देश्य memory को सही utilization है। जब आपको पता
हो की किसी struct member की value निश्चित size से अधिक नहीं
होगी तो आप ऐसा कर सकते है।
Variable की size आप bits में define करते है। यही reason होता है की ऐसे variables को bitfields कहा जाता है।
C language में bit fields create करने के general syntax निचे दिया जा रहा है।
struct struct-name |
C language में bitfields के साथ work करना निचे उदाहरण द्वारा समझाया जा रहा है।
#include<stdio.h> |
ऊपर दिए गए उदाहरण में यदि आप age variable की value 5 bit से अधिक input करते है तो value minus में show होगी। यह उदाहरण निचे दिया गया output generate करता है।
Age is 5 |
Introduction to C Unions
C आपको एक विशेष data type provide करती है। इस data type को union कहते है। Unions के द्वारा आप एक ही memory location में कई प्रकार के
data type store कर सकते है। आप unions के अंदर अलग अलग data type के कई variables create
कर सकते है। लेकिन एक समय में एक ही variable में value store की जा सकती है। Unions के द्वारा आप एक
ही memory location को कई तरह से
यूज़ कर सकते है।
Unions c language में structures की तरह ही होते है। बस इनमें difference ये होता है की structure का हर member एक separate memory
location occupy करता है और उन सब की sizes अलग अलग होती है। लेकिन union के सभी members एक ही memory location को यूज़ करते है
और उसकी size सबसे बड़ी size वाले member जितनी होती है।
Defining a Union
Unions define करने के लिए आप union keyword यूज़ करते है। ये structure को define करने जैसा ही
होता है। Unions का basic syntax इस प्रकार होता
है।
union union_name { data_type var1; data_type var2; .. .. data_type varn;
}u1.u2,....un; |
सबसे पहले आप union keyword और unique union name define करते है। इसके
बाद आप curly
brackets में variables define करते है। इसके बाद ending curly brackets के बाद comma लगाकर union variables
create करते है। इसका उदाहरण नीचे दिया जा रहा है।
union input { int a; float b; }in; |
अब in variable जो की input type का है एक integer value store कर सकता है या
फिर एक float value
store कर सकता है। आप इसके दोनों variables में एक साथ value store नहीं कर सकते है।
Accessing Union Member Variables
Union members भी आप उस तरह ही access करते है जैसे structure members access किये जाते है।
सबसे पहले आप union का नाम लिखते है।
उसके बाद dot (.) operator
लगाकर member का नाम लिखा जाता है। उदाहरण के लिए आप union members को value इस प्रकार assign कर सकते है।
in.a = 10; |
यदि आप किसी union member को print करना चाहते है तो ऐसा आप इस प्रकार कर सकते है।
printf("%d",in.a); |
A Complete Example
यदि आप union के सभी members को एक साथ value assign करके एक साथ print करवाने के कोशिश
करेंगे तो output invalid
show होगा। जब आप एक के बाद किसी दूसरे variable को value assign करते है तो memory में value उसी की रहेगी।
आसान शब्दो में कहे तो जो member सबसे last में initialize किया जायेगा उसी की value memory में store होगी। इसका
उदाहरण नीचे दिया जा रहा है।
#include <stdio.h>
union input { int a; float b; }in;
int main() { in.a = 15; printf("Value of a is :
%d\n",in.a);
in.b = 20; printf("Value of b is :
%f",in.b);
} |
उपर दिए गए program में पहले a की value set की गयी है और उसे print किया गया है।
इसके बाद b variable की value set की गयी है और उसे
print किया गया है।
जैसा की मैने पहले आपको बताया था की जिस variable की value सबसे last में set की जाएगी उसी की value union
variable में रहेगी। इसलिए हर बार पहले value set की गयी है और
दूसरे member की value set करने से पहले
पुराने variable की value print की गयी है। ये program निचे दिया गया output generate करता है।
Value of a is : 15 Value of b is : 20.00000 |
Introduction to C typedef Keyword
C language में typedef एक keyword है। यह keyword किसी data type के existing name को नया नाम देने के लिए use किया जाता है। इस
keyword द्वारा आप built in और user defined दोनों तरह के data types को नया नाम दे
सकते है।
इस keyword को मुख्यतः user defined data types जैसे की structure आदि के साथ
प्रयोग किया जाता है। जब program में data types के नाम जटिल हो तो इस keyword द्वारा आप उनके
सरल नाम define कर सकते है। इस keyword के प्रयोग से code short हो जाता है और program की readability बढ़ती है।
उदाहरण के लिए निचे दिए गए structure को देखिये।
struct Employee |
ऊपर दिए structure के variables आप इस प्रकार create कर सकते है।
struct Employee e1; |
ऊपर दिए गए declaration में e1 को create करने के लिए struct Employee भी declare किया गया है। आप
जब भी structure का variable create करेंगे तो इसी
प्रकार करेंगे।
लेकिन आप typedef keyword के प्रयोग से इस declaration का छोटा और आसान word बना सकते है। ऐसा
करके आप हर बार उसी word को use कर सकते है।
Syntax of C typedef
Keyword
C language में typedef keyword का general syntax निचे दिया जा रहा है।
typedef-keyword data-type-name new-name; |
जैसा की आप ऊपर दिए गए syntax में देख सकते है
सबसे पहले typedef keyword
declare किया जाता है। उसके बाद उस type का नाम declare किया जाता है
जिसे आप change करना चाहते है।
आखिर में वह नया नाम लिखा जाता है जिसे आप use करना चाहते है।
Example of C typedef
Keyword
C language में typedef keyword के उपयोग को निचे उदाहरण द्वारा समझाया जा रहा है।
#include<stdio.h> |
ऊपर दिए गए उदाहरण में typedef keyword द्वारा struct Employee
declaration को emp में convert किया गया है। यह उदाहरण निचे दिया गया output generate करता है।
Employee Id is 101 and salary is 10000 |
Introduction to C Recursion
C language में recursion एक ऐसी process होती है जिसमें एक function खुद को ही call करता है। ऐसा किसी problem को small parts में divide करके solve करने के लिए किया जाता है। ऐसे functions जो स्वयं को call करते है उन्हें recursive functions कहा जाता है।
मान लीजिये आप किसी problem को solve करने के लिए कोई function create कर रहे है और
इसका जो initial result है वो end result नहीं है। End result प्राप्त करने के लिए आपको इस process को वापस repeat करने की आवश्यकता है। ऐसी situation में आप same process execute करने के लिए iteration करने के बजाय
इसी function को शुरूआती result के साथ call करते है। जब तक end
result नहीं प्राप्त हो जाता यह process चलती रहती है। End result को condition द्वारा determine किया जाता है।
End result प्राप्त होने पर इस process को terminate कर दिया जाता
है। यदि इस function को terminate नहीं किया जाता है तो ये infinite time तक चलता
जायेगा।
Advantages of Recursion
1.
जब आप recursion
के द्वारा किसी problem को solve करते है तो आपको बार बार function को call करने
की जरुरत नहीं होती है। आप सिर्फ एक बार function
को call करते है और end result नहीं आने तक वह स्वयं ही call होता रहता है।
2.
Iteration के
द्वारा problems को solve करना
बहुत complex रहता है लेकिन recursion
में same problem बहुत
ही आसानी से solve हो जाती है।
Structure of Recursive Function
एक recursive
function का general structure निचे दिया जा
रहा है।
return type myFunction(Parameters-list) { statement 1; statement 2; ... statement N; myFunction(Arguments-list); //Calling it
self , Recursive process. ... other statements; } |
Disadvantages of Recursion
हालाँकि recursion के द्वारा problem कम code में आसानी से solve की जा सकती है लेकिन recursive process की कुछ disadvantages भी होती है।
इनके बारे में निचे दिया जा रहा है।
1.
Slower - Recursive programs साधारण
programs से slow होते
है। Function को बार बार call होने
के लिए और end result show करने में recursive
programs को normal programs से
अधिक समय लगता है।
2.
Requires extra memory - साधारण
programs की तुलना में recursive
programs को execute होने के लिए extra memory की आवश्यकता होती है।
Types of Recursion
C language में recursion 2 type का होता है। दोनों types के बारे में निचे detail से बताया जा रहा है।
Direct Recursion
Direct recursion वह recursion होता है
जिसमें एक function स्वयं को call करता है। इस तरह के recursion का general structure निचे दिया जा
रहा है।
return_type MyFunction(parameter-list) |
Indirect Recursion
Indirect recursion वह recursion होता है
जिसमें एक function किसी दूसरे ऐसे function
को call करता है जो वापस उसे ही call करता है। इस तरह के recursion का general structure निचे दिया जा
रहा है।
First Function
return_type FunctionOne(parameter-list) |
Second Function
return-type
FunctionTwo(parameter-list) {
.....statements;
FunctionOne(argument-list);
.....other statements; } |
Example of Recursion
(Factorial)
Recursion को example के द्वारा समझाने के लिए यँहा पर factorial का उदाहरण
दिया जा रहा है। एक factorial number 1 से लेकर जिस भी number
का आप factorial पाना चाहते है उस number तक के सभी numbers का product (multiplication) होता है।
उदाहरण के लिए आप 5 का factorial calculate करना चाहते
है। इसके लिए आपको 1 से लेकर 5 तक के सभी numbers को multiply करना होगा। सभी numbers
को multiply करने के बाद जो result
प्राप्त होगा वही 5 का factorial होगा।
1*2*3*4*5 = 120
C program के द्वारा किसी number का factorial calculate करने के दो
तरीके हो सकते है।
1.
Using iteration - इस
तरीके में आप 1 से लेकर दिए गए number तक loop चला
सकते है और सभी numbers को multiply
करके result print कर
सकते है।
2.
Using recursion - इस
तरीके में आप एक function create कर सकते है जो
दिए गए number को एक number
कम से multiply करता
है और स्वयं को उसी number के साथ call करता है।
इन दोनों ही तरीकों को निचे उदाहरण के माध्यम से समझाया जा
रहा है।
Calculating Factorial of a Number Using
Iteration
#include
<stdio.h> int main() { int
num,i; int
result=1;
printf("Enter number to find out its factorial.....");
scanf("%d",&num);
for(i=1; i<=num; i++)
result = result*i;
printf("\nFactorial of %d is %d",num,result);
return 0; } |
ऊपर दिया गया program
निचे दिया गया output
generate करता है।
Enter a number to find out its factorial.. |
Calculating Factorial of a Number Using
Recursion
#include
<stdio.h> int
MyFactFunction(int n); int main() {
printf("Enter a number to find its factorial...");
scanf("%d",&num);
printf("Factorial of %d is : %d",num,MyFactFunction(num));
return 0; } int
MyFactFunction(num) {
if(num >= 1)
return num*MyFactFunction(num-1);
else
return 1; } |
ऊपर दिए गए उदाहरण में MyFactFunction एक recursive function है। ये दिए गए
number से एक number कम के साथ वापस स्वयं को call करता है और original value से (जिसके साथ function को call किया गया था) multiply करता है। ऐसा ये तब तक करता है जब तक
original value 1 से अधिक होती है। जैसे ही यह value 1 हो जाती है, यह function terminate हो जाता है।
ये program निचे दिया गया output generate करता है।
Enter a number to find its factorial.... 6 Factorial is : 720 |
Introduction to C Pointers
Pointers वो variables होते है जो दूसरे
variables के address को store करते है। जैसा की आपको पता है
हर variable का memory में एक unique address होता है। ये address
hexadecimal form में होता है। इसलिए इस address को आप किसी normal variable में store नहीं कर सकते है।
किसी भी variable के address को store करवाने के लिए आप
pointer variable
create करते है। आइये इसे एक उदाहरण से समझने का प्रयास करते है।
मान लीजिये आपने एक variable create किया है। इस variable का नाम Age है। और आपने
इसमें 55 value assign करवायी है। इस variable की memory में location
(address) 21F है। अब यदि आप चाहे तो इस address को एक pointer variable
में store करवा सकते है। Pointers को यूज़ करने की
कुछ advantages निचे दी जा रही
है।
Advantages of Using Pointers
1.
Pointers की मदद से आप dynamically memory allocate कर सकते है।
2.
Pointers की मदद से आप data structures (linked-list,
stack, queue) create कर सकते है।
3.
Pointers use करने से program का execution time कम हो जाता है।
4.
Pointers की मदद से आप function से एक से अधिक values return कर सकते है।
5.
Pointers की मदद से argument passing के दौरान आप variable की copy के बजाय original variable पर काम कर सकते
है।
6.
Pointers के द्वारा large data को search और sort करना बहुत आसान होता है।
यदि pointers को properly use ना किया जाये तो इसके कुछ disadvantages होते है। इनके
बारे में निचे दिया जा रहा है।
Disadvantages of Using Pointers
1.
कई बार pointers की वजह से program में ऐसी error आ जाती है जिसे diagnose करना बहुत difficult होता है।
2.
Pointers की वजह से memory में leaks create हो जाते है।
3.
यदि run time के दौरान pointers को hold करने के लिए extra memory ना हो तो program crash हो जाता है।
4.
Pointers की मदद से restricted memory को access किया जा सकता है।
Working With Pointers
यदि आपको एक बार ठीक से समझ आ जाये तो pointers के साथ काम करना
बहुत ही आसान है। C language में pointers के साथ काम करने के 2 steps है।
1.
Declaring a pointer
2.
Initializing a pointer
इन दोनों steps के बारे में निचे detail से समझाया जा रहा
है।
Declaring Pointers
C में pointers declare
करने का general syntax निचे दिया जा रहा है।
data_type *pointer_name; |
C में pointers को declare करने के लिए सबसे
पहले आप data type
declare करते है। ऐसा इसलिए किया जाता है क्योंकि int type का pointer variable
सिर्फ int type के variables का ही address store कर सकता है। इसके बाद आप asterisk (*) operator को declare करते है। इस operator के बाद आप pointer का unique नाम declare करते है। आइये
इसे कुछ उदाहरण से समझने
का प्रयास करते है।
int *int_pntr;
//Pointer for integer variable
double *dbl_pntr; //Pointer for
double variable
char *chr_pntr;
//Pointer for char variable |
Initializing Pointers
C में pointers को initialize करने का syntax निचे दिया जा रहा
है।
pntr_variable = &variable_name; |
C में pointers
initialize करने के लिए सबसे पहले आप pointer variable को लिखते है। (Initialization
part में pointer variable को बिना asterisk operator (*) के लिखा जाता है।)
इसके बाद assignment
operator (=) लिखा जाता है। इसके बाद आप ampersand operator (&) (इसे address-of
operator भी कहा जाता है।) define करते है। इस operator के बाद आप बिना
कोई space दिए variable का नाम लिखते है।
आइये इसे एक उदाहरण से समझने का प्रयास करते है।
int age = 55;
//Declaring a variable
int *age-pntr;
//Declaring a pointer
age-pntr = &age;
//Initializing a pointer |
Operators Used with Pointers
1.
& (Address-of ) operator - ये operator
variable के address को point करता है। इससे से आप किसी भी variable का address प्राप्त कर सकते
है।
2.
* (Value-at) operator - ये operator सिर्फ pointer
variables के साथ काम करता है। ये operator किसी particular
address पर store की गयी value को represent करता है।
Example
#include<stdio.h> int main() { int age = 55; int *pntr; pntr = &age; printf("Address of age variable is :
%d\n",pntr); printf("Value of age variable is :
%d",*pntr); } |
इस उदाहरण में pointers के द्वारा एक variable का address और उसकी value print करवाई गयी है। ये
pointers की working का एक बहुत ही simple उदाहरण है। ये program निचे दिया गया output generate करता है।
Address of age variables is : -1074204644; Value of age variables is : 55 |
Introduction to C Type Casting
C language में type casting एक ऐसी process होती है जिसमें एक data type के variable का दूसरे data type में conversion होता है। कई बार
ये variables
automatically convert हो जाते है और कई बार आप इन्हें manually भी convert करते है।
कई बार बहुत से students type casting या type conversion के बीच confuse हो जाते है।
इसलिए मैं आपको बताना चाहूंगा की C language में एक data type जब दूसरे data type में automatically बदलता है तो उसे type conversion कहा जाता है। लेकिन जब आप explicitly या manually type
cast operator का use करते हुए किसी data type के variable को दूसरे data type में बदलते है तो उसे type casting कहा जाता है।
C language में casting/conversion की process 2
प्रकार की होती है। इनके बारे में निचे दिया जा रहा है।
From Higher Type to Lower
Type
इस तरह की casting में एक ऐसे data type का variable जो अधिक size की value store करता है उसको ऐसे data type में convert किया जाता है जो
कम size की value store
करता है। इस तरह के conversion में data का loss होता है।
int result = 5/2; /*
Higher type to lower type */ |
उदाहरण के लिए यदि आप 5 को 2 से divide करेंगे तो 2.5 result प्राप्त होगा।
यदि इस result को आप किसी integer
variable में store करने का प्रयास करेंगे तो सिर्फ 2 ही result के रूप में store होगा। यँहा पर .5 का loss हुआ है। ये एक higher type
(float) से lower type (int) में conversion है।
From Lower Type to Higher
Type
इस तरह की casting में कम size की value store करने वाले data type के variable को अधिक size की value store करने वाले data type में convert किया जाता है।
long result = 2+2; /*
Lower to higher type */ |
उदाहरण के लिए यदि आप किसी integer result को long type के variable में store करने का प्रयास
करते है तो ऐसी casting lower
type से higher type casting होती है।
Type Conversion (Implicit/Automatic)
जैसा की आपको पता है type conversion automatically
compiler द्वारा perform किया जाता है। इसमें आपको कुछ भी करने की आवश्यकता
नहीं होती है और ना ही इसमें किसी तरह के operator की आवश्यकता होती
है। ये compatible type के बीच में ही perform होता है। Compatible types
ऐसे data types होते है जिनमें type conversion possible है। इसे निचे
उदाहरण के माध्यम से समझाया जा रहा है।
#include <stdio.h> #include <conio.h> int main() { int num = 5; float fnum; fnum = num; /*
Type Conversion */
printf("Number is :%f",fnum); } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Number is : 5.000000 |
Type Casting
(Explicit/Manually)
Type casting आप खुद perform करते है। इसके लिए आप type cast operator यूज़ करते है। C language में () को type cast
operator कहा जाता है। इस operator को आप किसी expression से पहले use करते है। इन brackets में आप उस data type का नाम लिखते है
जिसमें आप expression के result को convert करना चाहते है।
इसको निचे उदाहरण के माध्यम से समझाया जा रहा है।
#include <stdio.h> int main() { int num = 5; char cnum; cnum = (char)
num; /* Type Casting */ return
0; } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Number is : 5 |
Strings Type Casting
Functions
C language string के लिए अलग से data type नहीं provide करती है। C में string के लिए आप character array define करते है। इसलिए casting operator
द्वारा string को cast करना संभव नहीं है। Strings के साथ casting
operations perform करने के लिए C language आपको 5 built in functions provide करती है। इन functions को use करने के लिए आपको
program में
<stdlib.h> header file include करनी होती है। इन functions को use करके आप strings के साथ भी casting perform कर सकते है।
atof()
ये function string data type को float data type में convert करने के लिए use किया जाता है। ये
function एक float value
return करता है इसमें आप argument के रूप में एक string pass करते है। इसका general syntax निचे दिया जा रहा
है।
double atof(const char*
string); |
atoi()
ये function string data type को integer data
type में convert करने के लिए use किया जाता है।
इसका general syntax निचे दिया जा रहा
है।
int atoi(const char*
string); |
atol()
ये function string data type को long data type में convert करने के लिए use किया जाता है।
इसका general syntax निचे दिया जा रहा
है।
long int
atol(const char* string); |
itoa()
ये function integer data type को string data
type में convert करने के लिए use किया जाता है।
इसका general syntax निचे दिया जा रहा
है। इस function में argument के रूप में आप एक
integer value, एक character array और number system
base pass करते है।
char* itoa(int value, cha*
string, int base); |
ltoa()
ये function long data type को string data type
में convert करने के लिए use किया जाता है।
इसका general syntax निचे दिया जा रहा
है।
char* ltoa(long value, char*
string, int base); |
Introduction to C Storage Classes
एक storage class variables और functions का scope और lifetime define करती है। Basically ये एक keyword होता है जो की variable या function के declaration से पहले यूज़
किया जाता है। ये keyword उस variable या function के काम करने के तरीके को बदल देता है।
C language आपको 4 storage classes provide करती है। इनकी list निचे दी जा रही
है।
1.
auto storage class
2.
register storage class
3.
static storage class
4.
extern storage class
निचे इन storage classes के बारे में detail से दिया जा रहा
है। आइये इनके बारे में जानने का प्रयास करते है।
C Auto Storage Class
C की auto storage class सभी local variables के लिए default class मानी जाती है। जब
भी आप कोई local variable
create करते है और उसके साथ कोई दूसरी storage class define नहीं करते है तो वह by default
(automatically) auto storage class को belong करता है।
इस तरह के variables को automatic variables भी कहा जाता है।
इन्हें दर्शाने के लिए आप चाहे तो auto keyword भी यूज़ कर सकते है। आप auto keyword को सिर्फ किसी functions के अंदर ही यूज़
कर सकते है। जब भी function call होता है तो ये variables create होते है और function के exit होने के साथ ही
ये destroy हो जाते है।
Auto storage class
का उदाहरण निचे दिया जा रहा है।
int myFunction() { int a; auto int a; } |
ऊपर define किये गए दोनों variables ही auto storage
class को belong करते है।
C Register Storage Class
Register storage class ऐसे variables declare करने के लिए यूज़ की जाती है जिन्हें आप RAM की जगह register में store करवाना चाहते है।
अकसर ऐसा fast data access
के लिए किया जाता है।
एक register computer processor का part होता है जो की small data को hold करता है। लेकिन
ये बहुत छोटी value को ही hold कर सकता है। ये RAM से कई गुना तेज
होता है।
इसलिए अपने program में आपको जँहा भी तेज data access की requirement हो तो आप इस storage class को यूज़ कर सकते
है। एक बात आपको ये भी ध्यान रखनी चाहिए की जरुरी नहीं की variable को register define करने से ही वो register में save हो जायेगा। ये
आपके hardware
configuration पर depend करता है।
Register storage class का उदाहरण निचे दिया जा रहा है।
register int age; |
C Static Storage Class
Static storage class compiler को बताती है की variable program के end तक consistent रहेगा। यँहा पर consistent से मेरा मतलब की variable बार बार create और destroy नहीं होगा।
मान लीजिये आपने function के अंदर एक variable create किया है। जब भी
आप इस function को call करते है तो ये variable create होता है और function के end होने के साथ ही
ये destroy हो जाता है।
यानि यदि आप function को call करके उस variable में कोई changes करते है तो function exit होने के बाद वो changes भी नहीं रहेंगे।
जब आप दुबारा function को call करेंगे तो variable उसकी initial value के साथ create होगा।
लेकिन यदि आप static keyword को यूज़ करते है तो variable पुरे program में सिर्फ एक ही
बार create होगा और program के end में destroy होगा। और जितनी
भी बार आप variable की value change करेंगे वो changes भी पुरे program के दौरान रहेंगे।
Static storage class का उदाहरण निचे दिया जा रहा है।
#include <stdio.h>
void numFunction(); int main() { numFunction(); numFunction(); numFunction(); numFunction(); } void numFunction { static int num=0; num=num+2; printf("%d\t",num); } |
ऊपर दिए गए program में इस बात से कोई फर्क नहीं पड़ता की आप numFunction() को कितनी बार call कर रहे है। जब भी
आप इसे call करेंगे ये function पुराने function call के द्वारा change की गयी num variable की value को ही यूज़
करेगा। ये program निचे दिया गया output generate करेगा।
2 4 6 8 |
C Extern Storage Class
कई बार ऐसा होता है की आप किसी बड़े project पर काम कर रहे हो
तो आपको एक से अधिक program files को handle करना पड़ता है। ऐसी situation में extern storage
class बहुत ही helpful होती है।
मान लीजिये आपने एक program file में एक variable declare
किया है। ये variable एक global variable है। अब आप इस variable को इसी project की किसी दूसरी program file में यूज़ करना
चाहते है तो आप extern keyword का यूज़ करते है।
Basically extern keyword compiler को बताता है की ये variable पहले ही किसी class में create किया जा चूका है
और आप इसे इस program file में यूज़ करने
वाले है। ये keyword पहले से create किये गए किसी variable या function का reference देता है।
आइये इसे एक उदाहरण से समझने का प्रयास करते है।
File 1
#include <stdio.h>
int num = 5; int main() { printf("%d",num); } |
File 2
#include <stdio.h>
extern int num;
int main() { printf("%d",num); } |
ऊपर दिए गए उदाहरण में file 2 में compiler को extern keyword द्वारा ये बताया
जा रहा है की इस file num variable को यूज़ किया गया है जो की पहले ही दूसरी file में declare हो चूका है।
Introduction to C Console I/O
C language में input और output को 2 तरीके से process किया जा सकता है। एक तो आप console के माध्यम से input दे सकते है और output देख सकते है। C language में input और output के लिए ये standard और default तरीका होता है।
Console एक black window होती है जो input के समय compiler के द्वारा show की जाती है। Program के execution के बाद उसका result भी इसी window में दिखाया जाता
है।
दूसरे तरीके में आप disk files को यूज़ करते हुए
भी input दे सकते है और
उनमें output भी store कर सकते है। ये totally
application की need पर depend करता है की आप कौनसा तरीका यूज़ करते है।
Console के माध्यम से आप इस तरह का data input कर सकते है।
1.
Strings
2.
Numbers
3.
Characters
4.
All primitive types of data (float, double, long
etc)
Console I/O के लिए 2 standard device होते है।
1.
Keyboard - Keyboard एक standard input
device है। By default एक C program keyboard के माध्यम से ही input लेता है।
2.
Monitor - Monitor (screen, LCD) एक standard output
device होता है। यदि आप कोई दूसरा तरीका यूज़ नहीं करते है तो by default एक C program
monitor पर ही output दिखाता है। लेकिन आप चाहे तो किसी external device पर भी output show कर सकते है।
C Console I/O Functions
Console के माध्यम से input output perform करने के लिए C language आपको built in
functions provide करती है। इनमें से कुछ के बारे में आप पहले भी पढ़ चुके है।
निचे इनके बारे में उदाहरण सहित समझाया जा रहा है।
scanf()
scanf() एक input function है। ये user से keyboard के माध्यम से input लेने के लिए use किया जाता है।
इसके माध्यम से आप user से सभी तरह के primitive types का data input के रूप में ले सकते है। इस function का general
syntax निचे दिया जा रहा है।
scanf("%d",&variable-name); |
ऊपर दिए गए syntax में %d एक format specifier है जो compiler को बताता है की input के रूप में integer value ली जायेगी। हर type के लिए C language में पहले से ही
एक format specifier
define किया गया है। कुछ common format specifiers की list निचे दी जा रही
है।
1.
%d - जब आप किसी integer variable में value store करना चाहते है तो
इस format specifier
को यूज़ करते है।
2.
%c - किसी character variable में value store करने के लिए आप %c format specifier को use करते है।
3.
%f - Float variables में values store करने के लिए आप %f format
specifier यूज़ करते है।
4.
%s - Strings के लिए आप %s format specifier यूज़ करते है।
& symbol memory के संदर्भ में यूज़ किया जाता है। इसे address of
operator कहा जाता है। जब आप एक variable को initialize करते है तो उस variable के नाम से memory में space allot होता है। & के माध्यम से उस space को target किया जाता है।
आइये अब scanf() function
के use को एक उदाहरण के माध्यम से समझने का प्रयास करते है।
#include <stdio.h> int main() { int num;
printf("Enter a number:");
scanf("%d",&num);
printf("\nYour entered number is: %d",num); } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Enter a number : 7 Your entered number is : 7 |
printf()
printf() एक output function है। ये user को monitor के माध्यम से output show करने के लिए यूज़
किया जाता है। इस function के द्वारा आप सभी तरह के primitive types का data यूज़र को show कर सकते है। इस function में आप print करने के directly string भी pass कर सकते है या
फिर कोई variable भी pass कर सकते है जिसकी
value आप print करना चाहते है। String को double quotes में लिखा जाता
है। आप चाहे तो string और variable दोनों एक साथ भी pass कर सकते है।
Variable की value को किसी निश्चित जगह पर print() करने के लिए आप format specifier
भी यूज़ कर सकते है।
इसका general syntax निचे दिया जा रहा है।
printf("string/variable"); |
or
printf("string
format-specifier string",variable-name) |
printf() function के यूज़ को निचे उदाहरण के माध्यम से समझाया जा रहा है।
#include <stdio.h> int main() { int a=5; int b=4; int result; result = a+b;
printf("Sum of %d and %d is : %d",a,b,result); } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Sum of 5 and 4 is : 9 |
getchar() & putchar()
getchar() function console के माध्यम से single character read करता है। इस character को ये integer के रूप में return करता है। यानी
इसके result को आप किसी integer variable
में store करते है। C में characters integer type के होते है। C में int और char को आसानी से assignment के द्वारा ही cast किया जा सकता
है।चाहे आप कितने भी characters enter करें लेकिन ये एक बार में एक ही character read करता है। यदि आप
एक से अधिक characters read करना चाहते है तो
इस function को loop में use कर सकते है।
putchar() function को इसमें pass किये गए character को screen पर display करने के लिए use किया जाता है। ये
function भी एक बार में एक
character ही screen पर display करता है। यदि आप
एक से अधिक characters
screen पर display करना चाहते है तो इस function को loop में use कर सकते है।
इन दोनों functions को निचे उदाहरण के माध्यम से समझाया गया है।
#include <stdio.h> int main() { char data;
printf("Enter some characters. To exit enter @ symbol."); while(data !=
'@') {
data = getchar();
printf("\nYou entered this character :",putchar(data));
} return 0; } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Enter some characters. To exit enter @ symbol. a You entered this character : a b You entered this character : b @ You entered this character : @ |
gets() and puts()
gets() function keyboard से string read करने के लिए use किया जाता है। Read की गयी string को एक character array में store किया जाता है। ये
function
argument के रूप में character array लेता है।
puts() function के माध्यम से एक string को screen पर display किया जाता है। इस function में भी argument के रूप में character array
pass किया जाता है।
इन दोनों functions को निचे उदाहरण के माध्यम से समझाया गया है।
#include <stdio.h> int main() { char arr[60];
printf("Enter a string : "); gets(arr);
printf("\nYou entered following string:") puts(arr); return 0; } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Enter a string : Best Hindi Tutorials You entered following string : Best Hindi Tutorials |
Introduction to C File Handling
एक file bytes की sequence होती है। File किसी भी data को store करने के लिए यूज़ की जाती है। Files को permanent
storage के लिए यूज़ किया जाता है। जब आप किसी program को run करवाते है और
उसका output देखने के बाद उसे
बंद कर देते है तो उसका output वहीँ remove हो जाता है। यदि आप इस output को permanently
store करना चाहते है तो C language के file handling
feature को यूज़ कर सकते है।
C file handling का यूज़ यँही ख़त्म नहीं होता है। यदि program में दिए जाने
वाला input भी बहुत अधिक है
तो किसी human द्वारा इसे enter कराने के बजाय आप
file का यूज़ कर सकते
है। इससे program
automatically file से ही input ले लेगा।
C language के द्वारा आप files से related ये काम कर सकते है।
1.
Existing files को open कर सकते है or नयी files create कर सकते है।
2.
किसी भी program के output को file में store कर सकते है।
3.
File के द्वारा किसी भी program में input भी दे सकते है।
4.
सभी operations perform होने के बाद files को close कर सकते है।
Opening a File
किसी भी file में output store करने या उसमें से input लेने से पहले उसे open किया जाता है। File open करने के लिए आप fopen()
function को use करते है।
जब आप किसी ऐसी file को open करने के कोशिश करते है जो exist ही नहीं करती तो
वो file
automatically create हो जाती है। यदि file पहले से exist करती है तो वह open हो जाती है। आप
किस mode में file को open करते है ये उस पर
depend करता है।
C language के द्वारा आप files को अलग अलग modes में open कर सकते है। ये mode आप function को call करते समय define करते है। उदाहरण
के लिए यदि आप किसी file से सिर्फ data read करने वाले है तो आप उसको read mode में open कर सकते है। और
यदि आप file में output store करना चाहते है तो
उसे write mode
में open कर सकते है। और आप चाहे तो किसी file को दोनों modes में भी open कर सकते है।
File Opening Modes
File open करते समय यूज़
किये जाने वाले सभी modes के बारे में नीचे दिया जा रहा है।
44 |
Description |
r |
इस mode से आप एक existing file को open कर सकते
है। इस mode में आप files को सिर्फ read कर सकते है। |
w |
इस mode से आप
सिर्फ files में write कर सकते
है। यदि file पहले से exist नहीं करती है तो वह create हो जाती है। |
a |
इस mode से आप output write करते है। इस mode में open की गयी file यदि exist करती है तो
वह open हो जाती है और उसमें जो data होता है उसी के बाद से नया data add हो जाता है। यदि file exist नहीं करती है तो नयी file create हो जाती है। |
r+ |
इस mode में आप एक file को reading और writing दोनों purposes के लिए open कर सकते है। |
w+ |
इस mode में file reading और writing दोनों purposes के लिए open की जाती है। Write करने के लिए इस mode में पहले file zero length तक truncate की जाती है। |
a+ |
इस mode में file reading और writing दोनों modes में open होती है।
यदि file exist नहीं करती तो create हो जाती है। और writing हमेशा existing data के बाद शुरू होती है। |
fopen() function
का general structure निचे दिया जा रहा है।
FILE *fopen(const char * file_name, const char * mode
); |
इस function में 2 arguments pass किये जाते है। एक तो hard disk पर file का address और दूसरा वह mode जिसमें आप file open करना चाहते है।
ये function FILE
type का एक object return करता है। इसलिए इसका return type FILE होता है। और इसी लिए आप इस function के द्वारा return किये गए object को FILE type के दूसरे object में store करेंगे। इसका
उदाहरण आप आगे देखेंगे।
Reading From a File
C language के द्वारा किसी file को read करने के लिए आप 2 functions यूज़ कर सकते है।
1.
fgetc()
2.
fgets()
fgetc() function
एक बार में एक ही character read करता है लेकिन
इसे आप loop में यूज़ करके
पूरी file को read कर सकते है। इस function में open की गयी file के pointer के रूप में एक ही
argument pass किया जाता है। इसका उदाहरण नीचे
दिया जा रहा है।
#include<stdio.h> int main() { FILE *fp; char data[1]; fp =
fopen("input.txt","r"); data=fgetc(fp); printf("%s",data[]); fclose(fp); } |
उपर दिए गए उदाहरण में fgetc() function का यूज़ करते हुए
file में से एक character read किया गया है। ये program
input.txt file से एक character read करता है। यदि file exist नहीं करती है तो run time error
generate होती है।
fgets function से आप define किये गए characters तक file को read कर सकते है। इस function में 3 arguments pass
किये जाते है। पहला argument एक character array होता है। ये वो array होता है जिसमे read किया गया data store किया जाता है। दूसरा argument जितने characters आप read करना चाहते है
उनकी size होती है। तीसरा argument file
pointer होता है। इसका उदाहरण नीचे दिया जा रहा है।
#include<stdio.h> int main() { FILE *fp; char data[100];
fp=fopen("test.txt","r"); fgets(data,100,fp); printf("%s",data); fclose(fp); } |
ऊपर दिया गया program test.txt file से 100 characters
read करता है। यदि file पहले से exist नहीं करती है तो run time error generate होती है।
Writing to a File
C language के द्वारा किसी file में data write करने के लिए आप 2 functions यूज़ कर सकते है।
1.
fputc()
2.
fputs()
यँहा पर fputs() function का example नीचे दिया जा रहा है। इस function में 2 arguments pass
किये जाते है। पहला argument वो string होती है जिसे आप file में store करना चाहते है।
और दूसरा argument file
pointer होता है।
#include <stdio.h> int main() |
ऊपर दिया गया program test.txt file में This is a string
write करता है।
Closing a File
File को close करने के लिए आप fclose()
function को यूज़ करते है। इसका general structure नीचे दिया जा
रहा है।
int fclose(FILE *fp); |
उपर दिए गए function में *fp वो FILE type object है जिसमे आपने fopen() function
के द्वारा return किये गए object को store किया था।
Introduction to C Error
Handling
Errors किसी भी program में आ सकती है। इन्हें exceptions भी कहा जाता है।
ये वो errors होती है जो program के run होते हुए समय आती
है। इनके आने से program का execution रुक जाता है। C
programming error handling को support नहीं करती है।
लेकिन c program में errors को आप return values से पहचान सकते है। जब भी C program में कोई exception आती है तो functions -1 या NULL value
return करते है। इन values को पहचान कर आप पता लगा सकते है की error आयी है या नहीं।
errno Variable
C programming आपको errno नाम का एक global variable provide करती है। जब भी program में कोई exception आती है तो इस variable को error number के साथ set कर दिया जाता है।
एक error
number <error.h> header
file में एक particular error को represent करता है। सभी errors इसी header file में define की गयी है।
इस variable को आपको अपने program में यूज़ करने के
लिए इस तरह define करना चाहिए।
extern int errno; |
इस variable को initially zero के साथ define करना और भी अच्छा
माना जाता है। क्योंकि zero का मतलब होता है की कोई error नहीं है। साथ ही
आपको <errno.h>
header file को भी अपने program में include करना पड़ेगा।
Functions for Error
Handling
C language आपको errors को represent करने के लिए 2 functions provide करती है।
·
perror() - ये function आपके द्वारा pass की गयी string को print करता है और साथ
ही जो error generate हुई है उसका description
print किया जाता है। इस function से ये पता चल
जाता है की कौनसी error आयी है।
·
strerror() - ये function generate की गयी error के textual representation का pointer return करता है। ये function
standard errors को point करता है।
निचे perror() function का example दिया जा रहा है।
#include <stdio.h> #include <errno.h>
extern int errno;
int main() { FILE *fp; fp =
fopen("test.txt","r");
if(fp == NULL) {
fprintf(stderr,"Error Number : %d\n",errno); perror("Error
Description : "); } else { fclose(fp); }
} |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Error Number : 2 Error Description : No such file or directory |
exit() Function
जब भी आपका program execute होता है तो आप exit status
return कर सकते है। ये status बताता है की आपका program successfully
execute हुआ है या error आने से terminate हुआ है। Exit function के और भी यूज़ है
लेकिन यँहा पर errors के संदर्भ में आप
इसे 2 तरह से यूज़ कर
सकते है।
यदि आपका program किसी error की वजह से terminate हो रहा है तो आप exit function को -1 या EXIT_FAILURE
string के साथ call कर सकते है। यदि आपका program बिना किसी error के successfully
terminate हो रहा है तो आप exit function को 0 या EXIT_SUCCESS string के साथ call कर सकते है।
उपर दिए गए उदाहरण को exit function के साथ निचे दिया
जा रहा है।
#include <stdio.h> #include <errno.h> extern int errno; int main() { FILE *fp;
fp=fopen("test.txt","r"); if(fp == NULL) { fprintf(stderr,"Error
Number : %d", errno); perror("Error
Description "); exit(-1); } else { fclose(fp); } } |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Error Number : 2 Error Description : No such file or directory Exiting due to error..... |
Introduction to C Header Files
अभी तक आपने हर C program में header file का प्रयोग किया है। कई बार कुछ ऐसे functions या macros होते है जिनकी
जरुरत बार बार अलग अलग projects में पड़ती है। इन functions आदि को एक particular
extension (.h) वाली file में store कर लिया जाता है। बाद में जब भी आपको इन functions आदि की जिस भी program में जरुरत हो
वँहा इस file को include कर लेते है।
Header files वो files होती है जिनमें function का declaration आदि किसी दूसरी file में यूज़ करने के
लिए declare किया जाता है। Header files में macro को भी define किया जाता है।
Header files को program में यूज़ करने से आप एक ही code को बार बार लिखने
से बच जाते है। इससे समय की बचत होती है। साथ ही program भी short और readable हो जाता है।
Types of Header Files
C language में header files 2 प्रकार की होती है।
·
Built in Header files
·
User defined header files
Built in Header Files
Built in header files वो header files होती है जो compiler आपको provide करता है। इन header files में आप कोई changes नहीं कर सकते है।
इस तरह की header files
basic programming functionality provide करती है। जैसे की conio.h header file एक built in header
file है और ये आपको basic console input/output functionality provide करती है।
एक ऐसी ही common built in header file stdio.h होती है। ये header file
program में input/output को support करती है। इस header file में scanf(),
printf() आदि functions defined होते है। इस header file को अपने program में include करके आप इन functions को यूज़ कर सकते
है।
User Defined Header
Files
User defined header files programmers के द्वारा create की जाती है। ये header files भी built in header
files की तरह ही प्रयोग की जाती है। लेकिन इनको use करने का तरीका different होता है।
Working with Header
Files
Header files के साथ काम करना बहुत ही आसान है। आइये सबसे पहले header files को create करना देखते है।
Creating Header Files
Header files को आप आसानी से create कर सकते है। इसके लिए आपको नीचे दी गयी 2 बातें हमेशा याद
रखनी चाहिए।
·
किसी भी header file में main() function नहीं होता है।
·
Header files को हमेशा .h extension से save करना चाहिए।
जब भी आप कोई header file create करते है तो उसमे normal C program की तरह functions आदि define करते है। ये functions बिना किसी main() function के define किये जाते है।
क्योंकि main() function उस file में होता है जो
इस header file को include करेगी।
Functions आदि define करने के बाद आप उस file को .h extension के साथ save कर देते है। अब
इस file को आप किसी भी C program में यूज़ कर सकते
है।
Using Header Files
Header files को अपने program में add करने के लिए आप #include directive यूज़ करते है। ये
एक pre-processor होता है, इनके बारे में आप
दूसरी tutorial में जानेंगे। जब आप किसी built in header
file को include करते है तो उसे angle brackets < > में लिखते है। और
जब आप किसी user defined
header file को यूज़ करते है तो उसे quotation mark " "
के अंदर लिखते है।
C header files के साथ कैसे काम करते है इसका complete example नीचे दिया जा रहा
है।
myHeaderfile.h |
mySourcefile.c |
int add(int a, int b); int multiply(int a, int b);
add(int a, int b) { return a+b; } multiply(int a, int b) { return a*b; } |
#include <conio.h>
#include "myHeaderFile.h"
int main() { int a,b;
printf("Enter first number :
"); scanf("%d",
&a);
printf("Enter second number :
"); scanf("%d",&b);
printf("Sum is : %d
",add(a,b)); printf("Multiplication is :
%d",multiply(a,b));
} |
ऊपर दिया गया program निचे दिया गया output generate करता है।
Enter first number : 5 Enter second number : 3 Sum is : 8 Multiplication is : 15 |
Introduction to C Preprocessor Directives
Preprocessor C
language का एक बहुत ही powerful tool है। कोई भी C program compiler द्वारा compile किये जाने से
पहले preprocessor के द्वारा process किया जाता है। Preprocessor का काम preprocessor
directives को process करना होता है। आपके program की कोई भी वो line जो # से शुरू होती है preprocessor
directive कहलाती है।
उदाहरण के लिए यदि आपने program में #include
directive यूज़ किया है, तो preprocessor के द्वारा process किये जाने के बाद ये line header file के actual content से replace कर दी जाती है।
इस process को pre-processing कहा जाता है।
C programs में अलग अलग तरह के preprocessor directives यूज़ किये जाते
है। इनके बारे में detail से नीचे दिया जा रहा है।
#include
ये C programming में commonly यूज़ किये जाने वाला preprocessor directive है। ये directive किसी header file के content को जिस file में इसे include किया जाता है उस
में copy कर देता है। इस directive का general syntax नीचे दिया जा रहा
है।
#include <file.h> //for
built-in header files
#include "file.h" // for
user defined header files |
#define
ये directive C program में constants और macros define
करने के लिए यूज़ किया जाता है। इसलिए आप इसे 2 प्रकार से यूज़
कर सकते है।
#define को आप कोई constant define करने के लिए यूज़
कर सकते है। इसका general syntax इस प्रकार होता है।
#define PI 3.14; |
इस statement को program में define करने के बाद जँहा भी आप program में PI को यूज़ करेंगे
तो PI 3.14 से replace कर दिया जायेगा।
#define directive को macros define करने के लिए भी यूज़ किया जाता है। एक macro code की एक line होती है जिसे program में macro name से replace कर दिया जाता है।
ये एक function की तरह भी हो सकता है।
इसका उदाहारण नीचे दिया जा रहा है।
#define square(n) (n*n); |
जँहा भी आप program में square को यूज़ करेंगे और उसमे कोई number pass करेंगे तो वह उस number के square से replace हो जायेगा।
#undef
ये directive #define directive द्वारा define किये गए constant या macro को undefine करने के लिए यूज़
किया जाता है। इसके आगे आप constant या macro का सिर्फ नाम लिखते है। इसका उदाहरण नीचे
दिया जा रहा है।
#define PI 3.14; //defining constant
.................. //other statements
#undefine PI; // undefine constant |
#ifdef, #else, #endif
ये directive ये check करने के लिए यूज़ किया जाता है की क्या दिए गए नाम से
कोई macro define किया गया है। यदि
define किया गया है तो #ifdef के बाद का code execute हो जाता है नहीं
तो #else के बाद का का code execute होता है। यदि आप #else नहीं यूज़ कर रहे
है तो #ifdef को आप #endif से terminate करते है। इसका
उदाहरण नीचे दिया जा रहा है।
#ifdef Square
#undef Square #else #define Square(n) (n*n); #endif |
ऊपर दिया गया code check करता है की क्या कोई Square नाम से macro define किया गया है। यदि
macro पहले से defined है तो उसे undefine किया जायेगा। और
यदि macro पहले से define नहीं है तो उसे define किया जायेगा।
इसी प्रकार #ifndef directive भी होता है जो code को तब execute करता है जब दिए
गए नाम वाला macro define न किया गया हो।
#error
मान लीजिये की आपके program में किसी macro की आवश्यकता है
और यदि वो macro define नहीं किया गया है
तो आप इस situation से related एक error show कर सकते है। इसके
लिए आप #error directive
यूज़ करते है। इसका उदाहरण नीचे दिया जा रहा है।
#ifndef Square #error Please define the marco first #endif |
#pragma
ये directive compiler को additional information देने के लिए यूज़
किया जाता है। मान लीजिये की आपने एक function create किया है अब आप इस function के बारे में compiler को additional
information दे सकते है। इसका उदाहरण नीचे दिया जा रहा है।
#pragma token |
No comments: