Types of Instructions in C: C Language में किसी Program File में हम मुख्यतया तीन तरह के Instructions लिखते हैं। इन तीनों प्रकार के Instructions का एक विशेष काम होता है और हर प्रकार Instruction अपने उस विशेष काम को पूरा करता है। ये तीनों Instructions निम्नानुसार होते हैं:
Type Declaration Instruction
ये वे Instructions होते जिनका प्रयोग करके हम विभिन्न प्रकार के Data को Computer की Memory में Store करने के लिए Memory Reserve करते हैं। हम जिस किसी भी Data को Program में Process करना चाहते हैं, उस Data को Store करने के लिए हमें Memory की जरूरत होती है, जहां उन Process किए जाने वाले Data को Hold करके रखना होता है। Required Data के आधार पर हमें Memory में कुछ जगह Reserve करने के लिए जिन Instructions का प्रयोग करना होता है, उन्हें Type Declaration Instructions कहते हैं। इन Instructions का प्रयोग करके हम विभिन्न प्रकार के Variables Declare करते हैं।
एक C Program में हम कई तरह से Variables Create कर सकते हैं। Variables Declare करते समय ही हम उन Variables को Data Initialize कर सकते हैं। जैसेः
int i = 19, j = 23 * 3/2-1;
जब हम किसी Variable को Create करते समय ही उसमें कोई एक निश्चित मान Initialize कर देते हैं, तो इस प्रक्रिया को Implicit Initialization कहते हैं। उदाहरण के लिए उपरोक्त Instruction में Variable i को Declare करते समय ही उसमें मान 19 को Initialize कर दिया गया है, जो कि Implicit Initialization का उदाहरण है।
जब हम किसी Variable को Declare करते समय उसमें किसी प्रकार की Calculation से प्राप्त मान को Initialize करते हैं, तो इस प्रक्रिया को Explicit या Dynamic Initialization कहते हैं। उदाहरण के लिए उपरोक्त Statement में Variable j को Create करते समय उसमें जो मान Initialize किया जा रहा है, वह मान एक Calculation से Generate हो रहा है, इसलिए ये एक Explicit या Dynamic Initialization का उदाहरण है।
हम किसी Variable को Create करने के बाद यदि कोई दूसरा Variable Create करते हैं, तो उस दूसरे Variable में पहले Variable के मान को भी Initialize कर सकते हैं। जैसेः
int i = 19, j = i;
इस Statement में हमने जो मान Variable i में Store किया है, वही मान हमने Variable j में भी Store किया है। लेकिन यदि हम इस Declaration के क्रम को निम्नानुसार Change कर दें:
int j = i, i = 19;
तो Compiler हमें निम्नानुसार Error प्रदान करता हैः
Error: Undefined symbol ‘i’
Error: Multiple declaration for ‘i’
ऐसा इसलिए होता है, क्योंकि “C” का Compiler हर Instruction को Up to Down व Left to Right Execute करता है। इस स्थिति में Compiler सबसे पहले int j = i; Instruction को Execute करता है। इस Instruction के आधार पर Compiler जब Variable j के मान में Variable i का मान Initialize करने के लिए Variable i की Memory Location को खोजता है, तो उसे ऐसा कोई Memory Location प्राप्त नहीं होता है, जिसका नाम i है, क्योंकि Compiler ने अभी तक Variable i के लिए Memory में किसी Location को Reserve ही नहीं किया है और Compiler जब किसी ऐसे Variable को Memory में खोजता है, जिसे उसने किसी Memory Block के साथ Associate करके Define ही नहीं किया है, तो वह “Undefined symbol” का Error Message Generate करता है।
Compiler हमें दूसरी Error इसलिए Display करता है, क्योंकि Compiler जिस Variable i को पहले Memory में खोज चुका होता है, उसी नाम का Variable हम बाद में Define करने की कोशिश करते हैं। इस स्थिति में पहले Instruction के लिए तो Compiler ये समझता है, कि हमने variable i को Define नहीं किया है, जबकि दूसरे Instruction के लिए Compiler ये सोंचता है कि हम एक ही नाम के एक से ज्यादा Variables Define करने की कोशिश कर रहे हैं।
इस तरह से एक Misplaced Instruction एक से ज्यादा प्रकार की Errors को Generate कर रहा है। जब किसी Program में कोई एक गलत Instruction एक से ज्यादा प्रकार की Errors को Generate करने में सक्षम होता है, तो इस प्रकार के Error Instruction को “Error Generator Source Instruction” कहा जाता है।
कई बार हमें ऐसी जरूरत पडती है कि एक ही मान को एक से ज्यादा Variables में Assign या Initialize करना होता है। इस प्रकार की जरूरत को हम निम्नानुसार पूरा कर सकते हैं:
int x, y, z;
x = y = z = 100;
लेकिन यदि इन दोनों Instructions को हम एक Instruction के रूप में निम्नानुसार Use करें:
int x = y = z = 100;
तो ये एक गलत Instruction होगा और हमें फिर से “Undefined Symbol” की Error प्राप्त होगी। क्योंकि यहां फिर से हम उस Variable y का मान Variable x में Initialize करने की कोशिश कर रहे हैं, जिसे अभी तक Memory Allot नहीं किया गया है।
Arithmetical Instruction
एक Arithmetical Instruction में हमेंशा एक Assignment Operator का प्रयोग करके किसी Calculation से प्राप्त परिणाम को किसी Variable में Store करना होता है। Assignment Operator के Left Side में हमेंशा एक Variable ही हो सकता है, जबकि इसके Right Side में Calculation में भाग लेने वाले Variable व Constants का पूरा एक समूह हो सकता है। किसी Assignment Operator के Left Side में हम कभी भी किसी Constant Identifier को Place नहीं कर सकते हैं। यदि हम ऐसा करते हैं, तो Compiler हमें “Lvalue Required” नाम का एक Error प्रदान करता है। यानी
int x, y = 10;
x = y + 2;
यदि हम उपरोक्त Instruction लिखते हैं, तो Program में किसी तरह का कोई Error Generate नहीं होगा और y + 2 Expression से Generate होने वाला Resultant मान 12 Variable x में Store हो जाएगा। लेकिन यदि हम इसी Instruction के मानों की Position को निम्नानुसार Exchange कर दें, तो हमें “Lvalue Required” का Error Message प्राप्त होता हैः
int x, y = 10;
y + 2 = x; // Error: Lvalue required
ये Error हमें इसीलिए प्राप्त होता है, क्योंकि Assignment Operator ( = ) हमेंशा Right To Left Direction में Execute होता है और अपना पूरे Expression के Execute होने के बाद अपना काम अन्तिम Operation के रूप में करता है। यानी जिस Expression में Assignment Operator का प्रयोग किया जाता है, उस Expression में सबसे पहले Assignment Operator के Right Side के सभी Operations Perform होते है और इन Operations से जो Resultant मान Generate होता है, Assignment Operator उस मान को Expression के सबसे अन्तिम Operation के रूप में अपने Left Side में Place किए गए Variable में Store कर देता है।
अब यदि किसी Expression में Assignment Operator के Left Side में किसी Variable के स्थान पर कोई Constant हो, तो Assignment Operator कभी भी किसी मान को किसी Constant में Store नहीं कर सकता है, क्योंकि Constant पूरे Program में स्थिर होते है, जिनका मान Change नहीं हो सकता है, जबकि Assignment Operator अपने Left Side के Variable का मान Change करने का ही काम करता है।
जब हम “C” Program में pision की प्रक्रिया को Perform करते हैं, तब प्राप्त होने वाले Result का चिन्ह निम्नानुसार होता हैः
-20/4 = -5
20/-4 = +5
यानी यदि हम किसी Negative Sign वाली संख्या में किसी Positive Sign वाली संख्या का भाग देते हैं, तो Resultant मान भी Negative ही प्राप्त होता है। जबकि यदि हम किसी Positive Sign वाली संख्या में Negative Sing की संख्या का भाग देते हैं, तो प्राप्त होने वाला मान भी Positive Sign को होता है। सारांश ये है कि किसी “C” Program में भाग की प्रक्रिया करने पर Resultant मान का Sign Numerator या अंश के Sign के समान होता है।
हम हमारी जरूरत के आधार पर विभिन्न Characters को Computer की Memory में Store करते हैं। लेकिन Computer में कोई भी मान Character के रूप में Store नहीं होता है। हम जितने भी Character किसी Character Variable में Store करते हैं, वे सभी Characters Computer की Memory में Integers के रूप में ही Store होते हैं।
Computer में विभिन्न Characters को Represent करने के लिए एक Standard Code System Develop किया गया है। इस Code System में हर Character को एक Integer मान Assign किया गया है। हम जब भी किसी Character Identifier में किसी Character को Store करते हैं, वह Character उस Integer मान से Replace हो जाता है, और Computer की Memory में उस Character को Represent करने वाला Integer मान Store हो जाता है।
ठीक इसी तरह से जब हम उस Identifier में Stored Character को Display करना चाहते हैं, तब उस Character Identifier की Memory Location पर Stored Integer Code फिर से Character में Convert हो जाता है और हमें उस Character से Associated Code के स्थान पर वही Character दिखाई देता है। हर Character के साथ Associated Code को उस Character का ASCII Code कहते हैं।
उदाहरण के लिए यदि हम किसी Character प्रकार के Identifier में एक Character A Store करते हैं, तो वास्तव में Character A Computer की Memory में Store नहीं होता है, बल्कि ये Character A इसकी ASCII Code Value 65 से Replace हो जाता है और Identifier की Memory Location पर ये ASCII मान 65 Store हो जाता है। जब हम फिर से उस Character को Access करना चाहते हैं, तब Computer इस ASCII Code 65 को Character A से Replace कर देता है और हमें Screen पर Character A दिखाई देता है ना कि ASCII Code 65,
वास्तव में एक Character प्रकार का Identifier एक छोटे Size के Integer मान को ही Computer की Memory में Store करता है। इसलिए यदि हम किसी Character Type के Identifier के मान को %c Control String का प्रयोग करके Display करते हैं, तो हमें उस Identifier में Stored Character Screen पर Display होता है, जबकि यदि हम %d Control String का प्रयोग करके उस Identifier के मान को Display करते हैं, तो हमें उस Character का ASCII Code Screen पर Display होता है। इस प्रक्रिया को हम निम्न Program द्वारा समझ सकते हैं:
#include <stdio.h> #include <conio.h> main() { char x = 'A'; printf("n Character in the Identifier x is = %c ", x); printf("n ASCII Code of the Character %c is = %d ", x, x); getch(); } Output: Character in the Identifier x is = A ASCII Code of the Character A is = 65
हालांकि हम Integer व Float प्रकार के Identifiers के साथ विभिन्न प्रकार की Calculations करते हैं, लेकिन हम किसी Character प्रकार के Identifier के साथ भी विभिन्न प्रकार की प्रक्रियाएं कर सकते हैं। अन्तर केवल इतना है, कि जब हम किसी Character प्रकार के Identifier में किसी Character को Store करके उस पर किसी प्रकार की Calculation को Apply करते हैं, तो वह Calculation Character पर Perform नहीं होती है, बल्कि उस Character प्रकार के Identifier में Stored Character के ASCII Code पर Perform होती है। इस पूरी प्रक्रिया को हम निम्न Program द्वारा समझ सकते हैं:
#include <stdio.h> #include <conio.h> main() { char x = 'A', y = 'p'; printf("n x - y = %c ", y - x); printf("n x += 37 = %c ", x += 37); printf("n (++y + 53)-(x += 12) = %c", (++y + 53)-(x += 12)); printf("n x * 2 - 60 = %c", x * 2 - 60); printf("n y / 2 + 20 = %c", y / 2 + 20); getch(); } //Output: x - y = / x += 37 = f (++y + 53)-(x += 12) = 4 x * 2 - 15 = L y / 2 + 20 = L
हालांकि हम विभिन्न प्रकार के Mathematical Calculations को एक Computer Program द्वारा Perform करते हैं, लेकिन जिस तरह से हम Real Life के Mathematical Expressions को लिखते हैं, “C” Language में उस तरह से लिए गए Expression Run नहीं होते हैं। उदाहरण के लिए एक Real World Situation में निम्न Statement एक Valid Statement हैः
x = (p.n.y.3-2)(l.3/m+33)
यदि इसी Expression को हमें “C” Program में लिखना हो, तो हमें हर Symbol को Specify करना जरूरी होगा और इस Statement को निम्नानुसार लिखना पडेगाः
x = (p * n * y * 3 -2 ) * (l * 3 / m + 33)
Control Instruction
तीसरे प्रकार के Instructions को Control Instructions कहा जाता है। ये Instructions Computer को विभिन्न प्रकार के काम करने के लिए तथा Program के Flow को मनचाही दिशा देने के लिए Use किए जाते हैं। विभिन्न प्रकार के Decision Making Instructions द्वारा हम Computer को विभिन्न प्रकार के Decision लेने की क्षमता प्रदान करते हैं, तथा Iterative Instructions का प्रयोग करके हम Computer को Repetitive या बार-बार दोहराए जाने वाले कामों को करने के लिए Instructions देते हैं। Control Instructions मुख्यतया चार प्रकार के होते हैं, जो अग्रानुसार है:
- Sequence Control Instructions
- Selection or Decision Control Instructions
- Repetition or Loop Control Instructions
- Case Controls Instructions
Control Statements अपने आप में काफी महत्वपूर्ण Statement होते हैं क्योंकि पूरे Program के Flow को Control Flow Statements द्वारा ही Control किया जाता है। उदाहरण के लिए जब हमें किसी Statement को बार-बार Execute करना होता है, तब हमें Looping Statement की जरूरत होती है, जो कि एक Control Statement है और इसके अन्तर्गत for, while, do…while जैसे Statements आते हैं। इसी तरह से जब हमें किसी Specific Condition के आधार पर किसी Particular Statement या Statement Block को Execute करना होता है, तब हमें Decision Making Statements की जरूरत होती है, जिसके अन्तर्गत if, if…else, elseif, switch, goto जैसे Statements आते हैं।
इसलिए एक अच्छा Programmer बनने के लिए इन तीसरे प्रकार के Statements को अच्छी तरह से समझना व विभिन्न तरीकों से उपयोग में लेते हुए विभिन्न प्रकार की जरूरतों को पूरा करने के बारे में जानना सबसे जरूरी होता है और आपकी इस जरूरत को बेहतर तरीके से पूरा करने के लिए आप C Programming Language in Hindi पुस्तक की मदद ले सकते हैं, जो कि काफी सरल भाषा में व विभिन्न प्रकार के Example Programs को उपयोग में लेते हुए विभिन्न Programming प्रकार के Control Statements को समझने में आपकी काफी मदद कर सकता है। (Types of Instructions in C)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF