नेस्टेड लूप का अर्थ होता है एक लूप के भीतर दूसरे लूप का उपयोग करना। जब हम एक लूप के भीतर एक और लूप बनाते हैं, तो यह नेस्टेड लूप बन जाता है। नेस्टेड लूप का उपयोग दो चरणों के लिए किया जाता है: एक समूह में अनुक्रमणिका के संभवतः सभी तत्वों के लिए जब आप एक बार में एक तत्व पर काम करना चाहते हैं या एक बार में दो से अधिक तत्वों को एक साथ एक समूह में अपडेट करना चाहते हैं।
C भाषा में तीन तरह के Nested Loop होते हैं:
Nested For Loop
Syntax:
for (init; condition; increment/decrement) {
for (init; condition; increment/decrement) {
// Inner loop statements
}
// Outer loop statements
}
Nested While Loop
Syntax:
while (condition) {
while (condition) {
// Inner loop statements
}
// Outer loop statements
}
Nested do-while Loop
Syntax:
do {
do {
// Inner loop statements
} while (condition);
// Outer loop statements
} while (condition);
ऊपर दिए गए सिंटैक्स के अनुसार, हम पहले बाहरी लूप का शुरुआत, शर्त और इंक्रीमेंट/डेक्रीमेंट करते हैं। उसके बाद हम अंदर के लूप को शुरुआत, शर्त और इंक्रीमेंट/डेक्रीमेंट करते हैं। आखिर में, हम अंदर के लूप और बाहरी लूप के लिए अलग-अलग स्टेटमेंट्स लिखते हैं।
अंदरी लूप के बीच में, हम अधिक से अधिक नेस्टेड लूप भी लिख सकते हैं। यहीं, हमें नेस्टेड लूप का उपयोग बड़े डेटा सेट्स को लेकर तैयारी करने जैसे दो विभिन्न सूचियों से एक नयी सूची बनाने के लिए करना होता है।
यहां एक उदाहरण है जो दो नेस्टेड लूप का उपयोग करता है:
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 5; i++) {
for (j = 1; j <= i; j++) {
printf("%d ", j);
}
printf("\n");
}
return 0;
}
इस उदाहरण में, हम दो नेस्टेड लूप का उपयोग कर रहे हैं। पहले लूप में i की मान 1 से 5 तक बढ़ते हुए चलता है। दूसरे लूप में j की मान 1 से i तक बढ़ते हुए चलता है। इसके बाद, हम printf() का उपयोग करते हुए प्रत्येक स्तंभ में j के मान को प्रिंट करते हैं। एक स्तंभ के अंत में, हम एक नई पंक्ति प्रिंट करते है।
तीनो nested loop के उद्धरण
चलिए, हम तीन अलग-अलग प्रकार के Nested Loop के उदाहरण समझते हैं:
Nested For Loop
#include <stdio.h>
int main() {
int i, j;
for(i = 1; i <= 3; i++) {
for(j = 1; j <= 3; j++) {
printf("i=%d, j=%d\n", i, j);
}
}
return 0;
}
इसमें हम एक बाहरी for loop के भीतर एक अंदरी for loop लिखते हैं। इसके परिणामस्वरूप, अंदरी लूप को बाहरी लूप के प्रत्येक प्रवेश में प्रवेश करना होगा।
उपरोक्त कोड का उत्पादन निम्नलिखित आउटपुट देता है:
i=1, j=1
i=1, j=2
i=1, j=3
i=2, j=1
i=2, j=2
i=2, j=3
i=3, j=1
i=3, j=2
i=3, j=3
Nested While Loop
#include <stdio.h>
int main() {
int i = 1, j;
while(i <= 3) {
j = 1;
while(j <= 3) {
printf("i=%d, j=%d\n", i, j);
j++;
}
i++;
}
return 0;
}
इसमें हम एक बाहरी while loop के भीतर एक अंदरी while loop लिखते हैं। इसके परिणामस्वरूप, अंदरी लूप को बाहरी लूप के प्रत्येक प्रवेश में प्रवेश करना होगा।
उपरोक्त कोड का उत्पादन निम्नलिखित आउटपुट देता है:
i=1, j=1
i=1, j=2
i=1, j=3
i=2, j=1
i=2, j=2
i=2, j=3
i=3, j=1
i=3, j=2
i=3, j=3
Nested do-while Loop
#include <stdio.h>
int main() {
int i = 1, j = 1;
do {
printf("i = %d\n", i);
j = 1;
do {
printf(" j = %d\n", j);
j++;
} while(j <= 3);
i++;
} while(i <= 5);
return 0;
}
इस कोड में, हमने एक do-while लूप में एक और do-while लूप को नेस्ट कर दिया है। बाहरी do-while लूप को 5 बार चलाया जाता है, जबकि अंतर्निहित do-while लूप को 3 बार चलाया जाता है। इस प्रोग्राम के आउटपुट में हमें i और j की मानों के लिए संदेश दिखाई देते हैं।
यह उपरोक्त कोड का आउटपुट होगा:
i = 1
j = 1
j = 2
j = 3
i = 2
j = 1
j = 2
j = 3
i = 3
j = 1
j = 2
j = 3
i = 4
j = 1
j = 2
j = 3
i = 5
j = 1
j = 2
j = 3
इस उदाहरण में, बाहरी लूप को 5 बार चलाया गया है जबकि अंतर्निहित लूप को 3 बार चलाया गया है। अंतर्निहित लूप एक विशेष संदेश के साथ 3 बार चलता है, जिसमें इसके लेखक ने i और j की मानों को प्रिंट किया है।
10 से 100 तक की गिनती को 10 row और 10 column में प्रिंट करने के program कोड
यहाँ हम 10 अंकों की गिनती को 10 पंक्तियों और 10 स्तंभों में प्रिंट करने के लिए nested for loops का उपयोग करेंगे।
#include <stdio.h>
int main() {
int i, j, k = 1;
// nested loop to print the numbers in a 10x10 grid
for (i = 1; i <= 10; i++) {
for (j = 1; j <= 10; j++) {
printf("%d\t", k);
k++;
}
printf("\n");
}
return 0;
}
इस program में, i एक पंक्ति को दर्शाता है, j एक स्तंभ को दर्शाता है, और k 10 तक के संख्याओं को दर्शाता है। for loop का उपयोग 10 पंक्तियों और 10 स्तंभों के लिए संख्याएं मुद्रित करने के लिए किया गया है। printf() फ़ंक्शन का उपयोग संख्या मुद्रित करने के लिए किया जाता है, और \t टैब स्पेस जोड़ता है ताकि संख्याएं स्थानों के बीच दूरी बनाए रख सकें। printf("\n") का उपयोग नई पंक्ति में जाने के लिए किया जाता है।
यहाँ इसी program कोड को हम एक नेस्टेड do-while लूप का उपयोग करके 10 से 100 तक की गिनती को 10 row और 10 column में प्रिंट करेंगे।
#include <stdio.h>
int main() {
int i = 10, j;
do {
j = 1;
do {
printf("%4d", i*j);
j++;
} while (j <= 10);
printf("\n");
i++;
} while (i <= 100);
return 0;
}
इस कोड में, बाहरी do-while लूप की मदद से हम 10 से 100 तक की संख्याओं को प्रिंट करते हैं। अंतर्निहित do-while लूप की मदद से हम प्रत्येक पंक्ति में 1 से 10 तक के गुणों को प्रिंट करते हैं। हम printf फंक्शन का उपयोग करके प्रत्येक संख्या को 4 अक्षरों में प्रिंट करते हैं ताकि सभी संख्याएं एक दूसरे के समान अंतराल पर हों।
उपरोक्त कोड का आउटपुट निम्नलिखित होगा:
10 20 30 40 50 60 70 80 90 100
20 40 60 80 100 120 140 160 180 200
30 60 90 120 150 180 210 240 270 300
40 80 120 160 200 240 280 320 360 400
50 100 150 200 250 300 350 400 450 500
60 120 180 240 300 360 420 480 540 600
70 140 210 280 350 420 490 560 630 700
80 160 240 320 400 480 560 640 720 800
90 180 270 360 450 540 630 720 810 900
100 200 300 400 500 600 700 800 900 1000
C भाषा में 10 से 100 तक की गिनती को 10 row और 10 column में प्रिंट करने के nested while loop का उपयोग कर program कोड लिखे
यहाँ इसी program कोड को हम दो while लूप का उपयोग करके 10 से 100 तक की गिनती को 10 बार 10 स्टाइल में प्रिंट करने के लिए कोड दे रहे हैं।
#include <stdio.h>
int main() {
int i = 10;
int row = 1, col = 1;
while(row <= 10) {
while(col <= 10) {
printf("%d\t", i);
i++;
col++;
}
printf("\n");
row++;
col = 1;
}
return 0;
}
इस कोड में, हम दो while लूप का उपयोग करते हैं। पहले while लूप 10 से 100 तक की गिनती को प्रिंट करता है, जबकि दूसरा while लूप प्रत्येक पंक्ति के लिए उपयोग किया जाता है। इस तरह, हम प्रत्येक पंक्ति में 10 संख्याओं को प्रिंट करते हैं।
उपरोक्त कोड का आउटपुट निम्नलिखित होगा।
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
100
break ब्रेक स्टेटमेंट
C भाषा में, break स्टेटमेंट लूप या switch स्टेटमेंट को तुरंत बंद करता है। जब भी break स्टेटमेंट को लूप या switch स्टेटमेंट के भीतर एक्सिक्यूट किया जाता है, तो लूप या switch स्टेटमेंट का एक्सिक्यूशन तुरंत बंद हो जाता है और इसके बाद की सभी इनस्ट्रक्शन को इग्नोर कर दिया जाता है।
यह बहुत उपयोगी होता है जब हम किसी शर्त के संतुष्ट न होने पर लूप को तुरंत बंद करना चाहते हैं या फिर जब हम स्विच स्टेटमेंट से बाहर निकलना चाहते हैं।
C प्रोग्रामिंग लैंग्वेज में ब्रेक स्टेटमेंट के निम्नलिखित दो उपयोग हैं:
- जब लूप के अंदर ब्रेक स्टेटमेंट सामने आता है, तो लूप तुरंत समाप्त हो जाता है और लूप के बाद अगले स्टेटमेंट पर प्रोग्राम कंट्रोल फिर से शुरू हो जाता है।
- इसका उपयोग स्विच स्टेटमेंट (अगले अध्याय में शामिल) में किसी मामले को समाप्त करने के लिए किया जा सकता है। यदि आप नेस्टेड लूप्स का उपयोग कर रहे हैं (यानी, एक लूप दूसरे लूप के अंदर), तो ब्रेक स्टेटमेंट अंतरतम लूप के निष्पादन को रोक देगा और ब्लॉक के बाद कोड की अगली पंक्ति को निष्पादित करना शुरू कर देगा।
सिंटैक्स C में एक ब्रेक स्टेटमेंट का सिंटैक्स इस प्रकार है:
break;
यहाँ एक उदाहरण है, जहाँ हम 1 से 10 तक के नंबरों का लूप चला रहे हैं और जब नंबर 5 आता है तो लूप को तुरंत बंद करते हैं:
#include <stdio.h>
int main() {
int i;
for(i=1; i<=10; i++) {
printf("%d ", i);
if(i == 5) {
break;
}
}
printf("\nLoop is terminated.");
return 0;
}
इस प्रोग्राम के आउटपुट में, आप 1 से 5 तक के सभी नंबर देखेंगे, और फिर लूप तुरंत बंद हो जाएगा। उसके बाद एक संदेश "Loop is terminated." प्रिंट होगा।
while loop और do while loop में break
जबकि while loop और do-while loop दोनों में break का उपयोग किया जा सकता है, लेकिन दोनों में कुछ अंतर होता है।
जब हम while loop में break का उपयोग करते हैं, तब यह loop को तुरंत बंद कर देता है, और यह loop का execution control statement को loop से बाहर निकाल देता है। यदि उन्होंने break का उपयोग किया है, तो वे कोई भी बाकी कोड execute नहीं करते हैं।
दूसरी ओर, do-while loop में, जब हम break का उपयोग करते हैं, तो यह loop का control statement के बाद होता है। अर्थात अगर break के बाद लिखा कोड हो तो वह execute होता है। इसलिए, do-while loop में break का उपयोग करते समय, loop को तुरंत बंद नहीं किया जाता है, बल्कि ब्रेक के बाद के सभी कोड को एक बार execute किया जाता है।
यहां, while और do-while loop का उदाहरण है जिसमें हमने break का उपयोग किया है।
उदाहरण:
#include <stdio.h>
int main() {
int i = 1;
// While loop example
printf("While Loop:\n");
while(i <= 10) {
if(i == 5) {
break; // loop को तुरंत बंद करें
}
printf("%d\n", i);
i++;
}
i = 1; // फिर से i को 1 करें
// Do-While loop example
printf("Do-While Loop:\n");
do {
if(i == 5) {
break; // loop को तुरंत बंद नहीं करें, लेकिन break के बाद के सभी कोड को execute करें
}
printf("%d\n", i);
i++;
}
Continue कंटिन्कंयू स्टेटमेंट
C भाषा में continue स्टेटमेंट एक loop control statement है जो loop को आगे बढ़ने के लिए प्रेरित करता है, लेकिन loop body में उपस्थित code को स्किप कर देता है।
जब continue statement एक loop में execute होता है, तो loop body के उपरांत के code को नष्ट किया जाता है और loop condition की जाँच फिर से की जाती है। अगर loop condition true होती है, तो loop आगे बढ़ता है और अन्यथा loop से बाहर निकल जाता है। C प्रोग्रामिंग लैंग्वेज में कंटीन्यू स्टेटमेंट कुछ हद तक ब्रेक स्टेटमेंट की तरह काम करता है। समाप्ति के लिए मजबूर करने के बजाय, जारी रखें लूप के अगले पुनरावृत्ति को होने के लिए मजबूर करता है, बीच में किसी भी कोड को छोड़ देता है। लूप के लिए, जारी बयान लूप के सशर्त परीक्षण और वृद्धि भागों को निष्पादित करने का कारण बनता है। थोड़ी देर के लिए और करो...जबकि लूप, जारी बयान के कारण प्रोग्राम नियंत्रण सशर्त परीक्षणों में गुजरता है।
सिंटैक्स C में एक कंटीन्यू स्टेटमेंट के लिए सिंटैक्स इस प्रकार है:
continue ;
इसके उपयोग से आप loop में कुछ code को अनदेखा कर सकते हैं जो अपने उद्देश्य के लिए कारगर नहीं होता है।
इसका syntax निम्नलिखित है:
while(condition){
// code to execute
if(some condition){
continue; //skip to next iteration of loop
}
//code to execute if continue not executed
}
उदाहरण के रूप में, यदि हम एक loop में 1 से 10 तक सभी संख्याओं का योग करना चाहते हैं, लेकिन संख्या 5 को छोड़ देना चाहते हैं, तो हम निम्नलिखित कोड का उपयोग कर सकते हैं:
#include <stdio.h>
int main() {
int sum = 0;
int i = 0;
while(i<10){
i++;
if(i==5){
continue;
}
sum = sum + i;
}
printf("Sum of numbers from 1 to 10 except 5 is: %d", sum);
return 0;
}
इस प्रोग्राम में, i को 1 से बढ़ाते हुए while loop के भीतर आते हैं, और यदि i की मान 5 होती है, तो continue statement योग किया जाता है
यहां एक और उदाहरण है जो तीन नेस्टेड लूप का उपयोग करता है:
#include <stdio.h>
int main() {
int i, j, k;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {
for (k = 1; k <= 3; k++) {
printf("%d %d %d\n", i, j, k);
}
}
}
return 0;
}
इस उदाहरण में, हम तीन नेस्टेड लूप का उपयोग कर रहे हैं। पहला लूप i की मान 1 से 3 तक बढ़ते हुए चलता है। दूसरा लूप j की मान 1 से 3 तक बढ़ते हुए चलता है। तीसरा लूप k की मान 1 से 3 तक बढ़ते हुए चलता है। तीनों लूप के भीतर, हम printf() का उपयोग करते हुए i, j और k के मानों को प्रिंट करते हैं। इस उदाहरण में, हम तीन नेस्टेड लूप का उपयोग करके 1 से 3 तक संख्याओं का संभव समूह बना रहे हैं।
नेस्टेड लूप का उपयोग बहुत ही बड़ी डेटा सेट जैसे मैट्रिक्स और अधिकतम मान की खोज में किया जाता है। नेस्टेड लूप का उपयोग दिनमान समस्याओं के लिए भी किया जाता है जहां हमें दो विभिन्न सूची या सर्कल में से तत्वों की एक नयी सूची तैयार करनी होती है।
continue एक control statement है जो loops में उपयोग किया जाता है। इसका उपयोग उन स्थितियों में किया जाता है जब हमें कुछ विशिष्ट शर्त पूरी करने की जगह अपने code को सीधा स्किप करना होता है और फिर loop के अगले iteration से जारी रखना होता है।
जब कोई loop समय से पहले terminate हो जाता है, तो उसके बाद के statements को execute नहीं किया जाता है और loop से बाहर निकल जाता है। लेकिन continue statement का इससे भिन्न होता है क्योंकि यह loop के बाकी statements को skip करता है और loop के अगले iteration से जारी रखता है।
यह एक उदाहरण है जो दिखाता है कि continue कैसे इस्तेमाल किया जाता है।
#include <stdio.h>
int main() {
int i = 1;
while(i <= 10) {
if(i == 5) {
i++;
continue;
}
printf("%d ", i);
i++;
}
return 0;
}
इस code में, continue statement का उपयोग उस स्थिति में किया गया है जब i की मान 5 है। इस स्थिति में, i को बढ़ाया जाता है और फिर continue statement का उपयोग करके लूप का अंतराल स्किप कर दिया जाता है जिससे 5 print नहीं होगा। इसके बाद से लूप सामान्य रूप से जारी रहेगा और 6 से शुरू होकर 10 तक print किया जाएगा।
उपरोक्त उदाहरण को do while लूप से निम्नलिखित रूप में लिखा जा सकता है:
int i = 10, j;
do {
j = 1;
do {
printf("%d ", i*j);
j++;
} while (j <= 10);
printf("\n");
i++;
} while (i <= 100);
इसमें भी दो while loop का इस्तेमाल किया गया है। पहला लूप i को 10 से 100 तक बढ़ाता है जबकि दूसरा लूप j को 1 से 10 तक बढ़ाता है। इसके अंदर printf() स्टेटमेंट द्वारा गुणा जोड़ कर प्रिंट किया जाता है। यदि i या j कोई 11 से ज्यादा हो जाता है, तो continue स्टेटमेंट द्वारा लूप फिर से शुरू हो जाता है।
यदि हम उपरोक्त कोड को कंपाइल करते हैं तो उसका आउटपुट निम्नलिखित होगा:
1
3
5
7
9
इसका कारण है कि पहली बार, जब i का मान 1 होता है, तब यह बात सत्य होती है कि i%2 का मान अधिकतम होता है और इसलिए पहला नंबर 1 प्रिंट होता है। फिर से दूसरी बार जब i का मान 2 होता है, तो i%2 का मान 0 होता है और इसलिए यह बात सत्य नहीं होती है कि i%2 का मान अधिकतम होता है, इसलिए दूसरा नंबर प्रिंट नहीं होता है। इसी तरह, i के मान को बढ़ाते हुए शर्तों के समूह परिक्रमा करते हुए सभी अधिकतम संख्याएं प्रिंट होती हैं जिनका अर्थात बचता है कि i%2 का मान 1 है।
break और continue में अंतर
ब्रेक और कंटिन्यू दोनों स्टेटमेंट लूप से निकलने के लिए उपयोग किए जाते हैं, लेकिन दोनों का उपयोग अलग-अलग होता है।
ब्रेक स्टेटमेंट लूप के बाहर निकलने के लिए उपयोग किया जाता है, जबकि कंटिन्यू स्टेटमेंट लूप के अंदर ही रहता है।
ब्रेक स्टेटमेंट का उपयोग लूप को तुरंत बंद करने के लिए किया जाता है, जब एक निश्चित स्थिति पूरी हो जाती है। यदि आप एक लूप को पूर्णता तक नहीं चलाना चाहते हैं, तो ब्रेक स्टेटमेंट आपके लिए सही विकल्प हो सकता है।
कंटिन्यू स्टेटमेंट का उपयोग लूप के एक या एक से अधिक शर्तों को छोड़ने के लिए किया जाता है। यदि आप लूप के आवेदन का उत्पादन करना चाहते हैं लेकिन कुछ शर्तें नहीं चाहते हैं, तो कंटिन्यू स्टेटमेंट आपके लिए सही विकल्प हो सकता है।
अगर हमें किसी loop को बंद करना हो तो हम break स्टेटमेंट का उपयोग करते हैं, जबकि continue स्टेटमेंट का उपयोग लूप के आवेदनों को छोड़ने के लिए किया जाता है।
यहां हम एक for लूप में 1 से 10 तक के सभी अंकों को प्रिंट कर रहे हैं, लेकिन if स्टेटमेंट में एक शर्त है जो कि 5 पर true हो जाती है और जब यह होता है तो continue स्टेटमेंट की मदद से उन अंकों को छोड़ दिया जाता है।
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
continue;
}
printf("%d ", i);
}
return 0;
}
यहां हम एक while लूप में 1 से 10 तक के सभी अंकों को प्रिंट कर रहे हैं, लेकिन if स्टेटमेंट में एक शर्त है जो कि 7 पर true हो जाती है और जब यह होता है तो break स्टेटमेंट की मदद से लूप से बाहर निकल जाते हैं।
#include <stdio.h>
int main() {
int i = 1;
while (i <= 10) {
printf("%d ", i);
if (i == 7) {
break;
}
i++;
}
return 0;
}
goto गोटू स्टेटमेंट
C प्रोग्रामिंग लैंग्वेज में एक goto स्टेटमेंट एक ही फंक्शन में goto से एक लेबल वाले स्टेटमेंट तक बिना शर्त छलांग प्रदान करता है। नोट: किसी भी प्रोग्रामिंग भाषा में goto स्टेटमेंट का उपयोग अत्यधिक हतोत्साहित किया जाता है क्योंकि इससे प्रोग्राम के नियंत्रण प्रवाह का पता लगाना मुश्किल हो जाता है, जिससे प्रोग्राम को समझना मुश्किल हो जाता है और संशोधित करना मुश्किल हो जाता है। goto का उपयोग करने वाले किसी भी प्रोग्राम को फिर से लिखा जा सकता है ताकि उसे goto की आवश्यकता न पड़े।
सिंटेक्स सी में एक goto स्टेटमेंट के लिए सिंटैक्स इस प्रकार है:
goto label; ...
Label: Statement;
यहाँ लेबल C कीवर्ड को छोड़कर कोई भी सादा पाठ हो सकता है और इसे goto स्टेटमेंट के ऊपर या नीचे C प्रोग्राम में कहीं भी सेट किया जा सकता है।
C भाषा में goto स्टेटमेंट का उपयोग लेबल्स के साथ आदेश को कहता है कि कंप्यूटर को उस लेबल के बाद आने वाले आदेश पर जाना होता है। इसका उपयोग एक आदेश या कुछ आदेशों को छोड़ने के लिए किया जाता है जो की प्रोग्राम में कहीं और हो सकते हैं।
goto स्टेटमेंट के उदाहरण के रूप में निम्नलिखित कोड देखें:
#include <stdio.h>
int main() {
int num = 10;
LOOP:do {
if( num == 15) {
/* कंप्यूटर को LOOP लेबल के बाद के आदेश पर जाना होता है */
num = num + 1;
goto LOOP;
}
printf("num का मान है: %d\n", num);
num++;
} while( num <= 20 );
return 0;
}
इसका उत्पाद (execute) निम्न होगा:
num का मान है: 10
num का मान है: 11
num का मान है: 12
num का मान है: 13
num का मान है: 14
num का मान है: 16
num का मान है: 17
num का मान है: 18
num का मान है: 19
num का मान है: 20
इस उदाहरण में, goto स्टेटमेंट LOOP लेबल पर पहुंच के बाद, कंप्यूटर को num वेरिएबल के मान को एक बढ़ाना है। यह स्थिति जाँचता है कि num लेबल LOOP से ऊपर है या नहीं। अगर यह सत्य होता है, तो num को बढ़ाया जाता है।
जैसा कि हमने पहले उदाहरण में देखा था, goto स्टेटमेंट का उपयोग एक स्थान से दूसरे स्थान पर प्रोग्राम के नियंत्रण को भेजने के लिए किया जाता है। यहां हम दूसरे उदाहरण के माध्यम से goto स्टेटमेंट का उपयोग करने के बारे में देखेंगे।
#include <stdio.h>
int main() {
int i = 1;
LOOP: // एक label हैं जो LOOP हैं
printf("%d ", i);
i++;
if(i<=10) {
goto LOOP; // goto स्टेटमेंट के माध्यम से लेबल को फिर से कॉल किया जाता हैं
}
return 0;
}
इस कोड में, एक label के रूप में LOOP नाम का एक स्थान परिभाषित है। while loop के साथ समान लूप होता हैं, जो i की मान से निर्धारित होता हैं और i 10 से कम होने तक प्रत्येक समय चलता रहता हैं। goto स्टेटमेंट के माध्यम से LOOP लेबल को फिर से कॉल किया जाता हैं, यह उन्हें पहले लेबल के बाद फिर से स्थानांतरण करता हैं।
इसका उपयोग प्रोग्राम में कहीं-कहीं आवश्यक होता हैं, जहां आप किसी विशिष्ट स्थान पर पहुँचना चाहते हैं और किसी अन्य विशिष्ट स्थान पर जाना चाहते हैं, इसलिए यह बहुत ही उपयोगी स्टेटम
break, continue और goto का एक उदाहरण
ये सभी शब्द C प्रोग्रामिंग में उपयोग किए जाने वाले control flow statements हैं। इनका उपयोग प्रोग्राम के विभिन्न हिस्सों को निर्देशित करने में किया जाता है।
इसलिए, ये सभी statements प्रोग्राम के निर्देशांकों (statements) को निर्देशित करने के लिए उपयोग किए जाते हैं।
यहां, मैं एक उदाहरण देता हूं जो इन statements का उपयोग बताता है।
#include <stdio.h>
int main() {
int i;
// continue statement
for(i = 1; i <= 10; i++) {
if(i == 5) {
continue; // skip i = 5
}
printf("%d ", i);
}
printf("\n");
// break statement
for(i = 1; i <= 10; i++) {
if(i == 5) {
break; // exit the loop when i = 5
}
printf("%d ", i);
}
printf("\n");
// goto statement
for(i = 1; i <= 10; i++) {
if(i == 5) {
goto end; // jump to the end label when i = 5
}
printf("%d ", i);
}
printf("\n");
end:
printf("End of program\n");
return 0;
}
यहां, तीन अलग-अलग for loops उपलब्ध हैं, जहां हर एक लूप एक control flow statement का उपयोग करता है।
continue statement: यह लूप के एक निर्देशांक (statement) को छोड़ता है और उसके बाद से आगे की execution शुरू करता है। इस उदाहरण में, continue statement i = 5 को छोड़ देता है और उसके बाद से आगे की सभी execution जारी रहती है।
break statement: यह लूप को तुरंत बंद कर देता ह है। इस उदाहरण में, break statement i = 5 पर आगमन पर loop को तुरंत बंद कर देता है और उसके बाद की execution नहीं होती है।
goto statement: यह एक निश्चित निर्देशांक (label) पर पहुंचने के लिए लूप की execution को उतार देता है। इस उदाहरण में, goto statement i = 5 पर आगमन पर "end" निर्देशांक पर जाकर program execution को वहां से शुरू कर देता है।
यह उदाहरण control flow statements का उपयोग बताने के लिए बनाया गया है। इसे आप एक C compiler में कॉपी करके चलाकर उनके काम को अधिक स्पष्ट रूप से समझ सकते हैं।
C भाषा में Infinite Loop
एक असीमित लूप (Infinite Loop) एक ऐसा लूप होता है जो कभी खत्म नहीं होता है। इसका मतलब होता है कि जब तक इस लूप के चलने के लिए दिए गए शर्तों में कोई बदलाव नहीं होता है, तब तक लूप हमेशा चलता रहता है। इससे प्रोग्राम को विफलता का सामना करना पड़ सकता है।
C में, इस लूप को दो तरीकों से बनाया जा सकता है। पहला तरीका while लूप का उपयोग करना होता है जबकि दूसरा तरीका for लूप का उपयोग करना होता है। इन दोनों तरीकों में, शर्त सत्य होने पर लूप को हमेशा चलाया जाता है और उसमें कोई बाधा नहीं होती है, जिससे एक असीमित लूप उत्पन्न होता है।
एक सरल उदाहरण के रूप में, निम्नलिखित कोड एक असीमित लूप बनाता है:
while(1){
// statements
}
यहाँ, while कंडीशन सदैव सत्य होता है (1 सत्य है) जिससे लूप हमेशा चलता रहता है और इससे प्रोग्राम विफलता का सामना करता है।
इससे बचने के लिए, एक असीमित लूप से बाहर निकलने के लिए, सामान्य रूप से दो तरीके होते हैं। एक तरीका, break कंडीशन का उपयोग करना है, जबकि दूसरा तरीका, समाप्ति कंडीशन का उपयोग करना है।
C भाषा में, असीमित लूप का उपयोग अक्सर उपयोगकर्ता के अनुभव या प्रोग्रामिंग त्रुटियों के कारण होता है। इससे प्रोग्राम धीमा होता है और कंप्यूटर के संसाधनों का उपयोग बढ़ जाता है। उत्पादकता को कम करने के लिए, हमेशा समाप्ति कंडीशन के साथ लूप लिखने की सलाह दी जाती है।
infinite loop का उदाहरण
यहां कुछ उदाहरण हैं जो C भाषा में असीमित लूप का उपयोग दिखाते हैं:
उदाहरण 1: एक सामान्य असीमित लूप जो बंद नहीं होगा
while(1) {
// code that will run indefinitely
}
उदाहरण 2: एक असीमित लूप जो बंद नहीं होगा
for(;;) {
// code that will run indefinitely
}
उदाहरण 3: एक असीमित लूप जो सिर्फ एक बार रन होगा
do {
// code that will run once
} while(0==1);
उदाहरण 4: एक असीमित लूप जो सिर्फ उस समय तक चलेगा जब तक उपयोगकर्ता कुंजी दबाता है
while(!kbhit()) {
// code that will run as long as the user hasn't pressed a key
}


