While Loop
While
Loop
For
Loop की तरह यह ही किसी Statement के दोहराने
का काम करता है , लेकिन फिर भी यह for Loop से काफी अलग है |
इस
Loop
में “C” के Keyword While का प्रयोग किया जाता है | While
Loop में While कोष्टक में केवल Condition
दी जाती है |
Variable
का प्रारम्भिक मान व Step Size While के
कोष्टक का हिस्सा नहीं होते हैं , बल्कि Variable का
प्रारम्भिक मान While Loop को शुरू करने के पहले ही Declare
व Initialize कर दिया जाता है और Loop की Step Size While Condition के Statement
Block का हिस्सा होता है |
While
Loop का Syntax निम्नानुसार होता है |
While
Statement के कोष्टक के बाद कभी भी , (Semi Colon) का प्रयोग नहीं किया जाता है |
जब While के बाद
केवल एक ही Statement का Execution करना
होता है , तब हमें मंझले कोष्टक का प्रयोग करने की जरुरत नहीं रहती है |
फिर
भी यदि मंझले कोष्टक का प्रयोग कर लिया जाए तो कोई फर्क नहीं पड़ता है |
सर्वप्रथम
हमें Loop
चलने वाले Variable को प्रारम्भिक मान देना
होता है | यह काम While
Loop के बाहर ही कर लिया जाता है |
जब
Program
Control , While Loop में प्रवेश करता है तो Program Control
, Condition check करता है |
यदि
Condition
सत्य होती है तो Program Control While Loop के Statement Block में प्रवेश करता है और Statement Block का Execution
करता है | Execution
के बाद Statement Size तय करता है , यानी Loop
के Variable का मान जरुरत के अनुसार Increment
या Decrement करता है |
यह
क्रम तब तक चलता रहता है जब तक कि While Condition असत्य नहीं हो जाती है | यदि
Condition
सत्य नहीं होती है तो Program Control While Loop के Statement Block में प्रवेश नहीं करता , बल्कि
सीधे ही Statement 1 पर चला जाता है |
Example
While
Loop का प्रयोग करते हुए एक ऐसा प्रोग्राम बनाए जिसमें 1 से 100 के बीच वह संख्या Print हो जिसमें 2 व 3 का पूरा –
पूरा भाग जाता है |
Program
Definition
किसी
भी Loop
को चलाने के लिए Loop
की आवश्यक तीनो बातें हमें पता होनी चाहिए |
पहली
बात ये कि Loop का प्रारंभ कहां से होगा , दूसरा
ये कि Loop का अंत कहाँ होना है और तीसरा ये कि Loop को किस क्रम में Increase या Decrease करना है | किसी
भी Loop
में किसी Variable द्वारा ये तीनों तय की जाती
है |
इस
प्रोग्राम में भी एक Variable x लिया ये तीनों
मान प्राप्त किये जा सकें | इस
प्रोग्राम में हमें 1 से 100 के बीच की संख्याओं पर प्रक्रिया करनी है इसलिए Loop के Variable का प्रारम्भिक मान 1 व अंतिम मान 100 Define किया
गया है और Step Size को एक के क्रम में ही बढाया गया है ताकि
ये पता लग सके कि कौनसा अंक ऐसा है , जिसमें 2 व 3 का भाग पूरा – पूरा जाता है |
इस
प्रोग्राम में हमें ये पता करना है कि किस संख्या में 2
व 3 का भाग पूरा – पूरा जाता है |
यह
काम हम if
Condition Statement द्वारा ही कर सकते हैं |
क्योंकि
हर Iteration
के बाद Loop चलाने वाले Variable का मान बढ़ जाया करेगा इसलिए हर अंक में 2 व 3
का भाग देना होगा और यदि संख्या में 2 व 3
का भाग पूरा – पूरा चला जाता है तो शेषफल शून्य प्राप्त होगा |
जिस
संख्या में 2 व 3 का भाग पूरा
– पूरा चला जाएगा वह संख्या Output में Print हो जाएगी | जो
संख्याएं If Condition को संतुष्ट नहीं करेगी |
यानि
जिस संख्या में 2 का भाग तो पूरा – पूरा
चला जाए लेकिन 3 का भाग न जाए या फिर जिस संख्या में 3
का भाग पूरा – पूरा चला जाए लेकिन 2 का ना जाए
तो Condition असत्य हो जाएगी और वह संख्या Output में Print नहीं होगी |
if
Condition के रूप में ये शर्त देनी होगी कि Output में वही संख्या Print हो जिसमें 2 व 3 का पूरा – पूरा भाग जाता है |
इस
शर्त को यदि हम ध्यान से समझते तो ये कह सकते है कि इस एक शर्त में दो शर्त है |
पहली
ये कि किसी संख्या में 2 का भाग पूरा – पूरा जाना
चाहिये और दूसरी ये कि उसी संख्या में 3
का भाग भी पूरा – पूरा जाना चाहिये तभी वह Condition पुर्ण रूप से सत्य होगी | इस
शर्त को यदि हम दूसरे शब्दों में कहें तो कह सकते हैं कि किसी संख्या में यदि 2
का भाग देने पर शेष फल शुन्य प्राप्त होता है तो Condition सत्य होती है |
यदि
इसे गणितीय रूप में लिखें तो x%2==0 लिख सकते हैं |
साथ
ही उसी संख्या में 3 का भाग भी पूरा – पूरा
जाना चाहिये यानी उसी संख्या में 3 को भाग देने पर भी शेषफल
शुन्य आना चाहिये इसे भी गणितीय रूप में x%3==0 लिख सकते हैं
| इस प्रकार दोनों Condition
सत्य होने पर ही Statement Block का Execution
होना चाहिये |
अतः
इन दोनों Condition को Logical Operator
AND (&&) द्वारा जोड़ कर if कोष्टक में
लिखना होगा | इस
प्रकार इस Loop की वास्तविक Condition
x%2==0&& x%3==0 होगी |
इस
प्रकार हमें इस प्रोग्राम की सभी आधारभूत चीजें प्राप्त हो जाती है जो निम्नानुसार
है
•
Loop
के Variable का प्रारम्भिक मान जिससे Loop
का Iteration शुरू होगा यानी 1
•
Loop के Variable का अंतिम मान जिसके बाद Loop
का Iteration रुक जाएगा , यानी 100
•
Loop के Variable की Step Size जिस क्रम में Loop के Variable का Increment होगा |
•
एक if
Condition जिसमें ये check होगा कि 1 से 100 के बीच कौनसी संख्याएं है जिनमें 2 व 3 दोनों का भाग पूरा – पूरा जाता है |
/* while Loop Example */
#include<stdio.h>
main()
{
int x;
x=1;
while(x<=100)
{
if(x%2==0&&x%3==0)
printf("%d\n",x);
x++;
}
getch();
}
Program
Declaration
इस
प्रोग्राम में int प्रकार का एक Variable x
Loop चलाने के लिए लिया गया है |
फिर
x
को प्रारम्भिक मान 1 Initialize किया गया है ,
क्योंकि while Loop में Loop चलाने
वाले Variable को While Loop के बाहर
ही प्रारम्भिक मान दिया जाता है |
अब
Program
Control While Loop को check करता है |
यहां
ये Check
होता है कि x का मान 100 से कम या बराबर है या नहीं | यहां
Condition
सत्य होती है , क्योंकि x का प्रारम्भिक मान 1
है , जो कि 100 से कम है |
इसलिए
Program
Control While Loop के Statement Block में
प्रवेश करता है | Statement Block में प्रवेश करते ही Program Control को एक if
Statement मिलती है जो यह check करने के लिए
है कि x के मान में 2 व 3 भाग पूरा – पूरा जाता है या नहीं |
यहां
x
का मान 1 है , इसलिए if Condition असत्य हो जाती है क्योंकि 1 में ना तो 2 का बाग पूरा – पूरा जाता है ना ही 3 का |
if Condition के असत्य होने से Printf() Function का Execution नहीं होता और Program Control सीधे ही x का मान Increment करने
वाले Statement पर पहुंच जाता है |
ध्यान
दें कि यहां Printf() Function का Execution क्यों नहीं हुआ | यहां
Printf()
Function का Execution इसलिए नहीं हुआ क्योंकि
if Condition असत्य हो गई है |
आप
सोचेंगे कि यदि if Condition असत्य होने से
printf() Function का Execution नहीं
हुआ तो फिर x के increment Statement का
Execution कैसे हुआ ?
ऐसा
इसलिए हुआ क्योंकि जब हमें किसी Control Statement के
बाद केवल एक ही Statement का Execution करना होता है तब उसके Statement को Block में लिखने की जरुरत नहीं होती है |
(
यदि उस Statement
को Block में लिख दिया जाए तो भी कोई फर्क
नहीं पड़ता है | )
क्योंकि Condition
सत्य होने पर Program Control सीधे ही उसके
आगे लिखे एक Statement का Execution कर
देता है | यदि Statement
एक से अधिक हो और हम Block का प्रयोग ना करें
तो Program Control , Control Statement की Condition
सत्य होने पर Control Statement के अगले एक Statement
का Execution कर देता है |
शेष
Statements
को छोड़ देता है , लेकिन यदि Condition असत्य
हो जाए तो Control Statement के बाद के एक Statement को छोड़ कर शेष Statements का Execution कर देता है |
इसलिए
Control
Statement के बाद यदि एक से अधिक Statements का
Execution करना हो तो हमें Block का
प्रयोग करना जरुरी हो जाता है |
इस
प्रोग्राम में Control Statement if के बाद केवल एक ही
Statement लिखा गया है |
यदि
Condition
सत्य होती है तो ये printf() Function Execute हो जाता है और यदि Condition असत्य हो जाती है तो ये
printf() Function Execute नहीं होता |
अब
प्रोग्राम Control को x++ Statement मिलती है | Program
Control x का मान बढा कर अब दो कर देता है |
वापस
while
Condition में x का मान check होता है कि x का मान 100 से कम
या बराबर है या नहीं | x=2
होने से वापस condition सत्य हो जाती है और Program
Control वापस Loop के Statement Block में पहुंचता है | यहां
वापस if
Condition check होती है |
यहां
x
= 2 होने से x में 2 का
भाग तो पूरा – पूरा जाता इसलिए Condition पुनः असत्य हो जाती
है और printf() Function Execute नहीं होता है |
इस
प्रकार यही क्रम चलता रहता है | जब
x
का मान Increment हो कर 6 होता है तब if Condition सत्य हो जाती है क्योंकि तब
x के मान 6 में 2 व 3
दोनों का भाग पूरा – पूरा जाता है , तब printf() Function
Execute होता है और Output में 6 print
हो जाता है |
यह
क्रम तब तक चलता रहता है जब तक कि x का मान 100
से अधिक नहीं हो जाता |
जैसे
ही x
का मान 101 होता है , while Loop की Condition असत्य हो जाती है और Program
Control सीधे ही getch() Function पर पहुँच कर
परिणाम को Output में Print कर देता है
|
No comments