C भाषा while लूप र शर्त अभिव्यक्ति | आधारदेखि प्रयोगसम्म पूर्ण गाइड

目次

1. while वाक्यको विशेषता र प्रयोग गर्ने ठाउँ

सी भाषामा “while वाक्य” विशेष सर्त पूरा भएको अवधिमा एउटै प्रक्रिया दोहोर्याउन प्रयोग हुने नियन्त्रण संरचना हो। प्रोग्रामभित्र दोहोर्याइ प्रक्रिया आवश्यक पर्ने धेरै स्थितिहरू छन्, र while वाक्य विशेष गरी “दोहर्याउने次数 पूर्वनिर्धारित नभएको” केसहरूमा धेरै उपयोगी हुन्छ।

while वाक्यको विशेषता भनेको “सर्त अभिव्यक्ति सत्य रहँदा, कति पनि पटक लूप जारी राख्न सकिन्छ” भन्ने हो। सर्त अभिव्यक्ति झुठो (false) भएमा, तुरुन्तै लूपबाट बाहिरिएर अर्को प्रक्रियामा जान्छ। यो लचिलोपनको कारण, प्रयोगकर्ताबाट इनपुटको प्रतीक्षा, फाइलको अन्त्यसम्म प्रक्रिया दोहोर्याउन चाहिने अवस्था, सेन्सर मानजस्ता बाह्य परिवर्तनहरू निगरानी गर्न चाहिने अवस्था आदि विभिन्न परिस्थितिहरूमा प्रयोग गरिन्छ।

सी भाषामा “for वाक्य” र “do-while वाक्य” जस्ता दोहोर्याइ प्रक्रिया गर्ने संरचनाहरू पनि छन्, तर while वाक्य “दोहर्याउनुपर्ने次数 वा सर्त कार्यान्वयनको क्रममा परिवर्तन हुने” जस्ता प्रक्रियाहरूको लागि उपयुक्त छ। उदाहरणका लागि, “प्रयोगकर्ताले 0 इनपुट गर्ने सम्म संख्याहरूको योग जारी राख्ने” प्रक्रिया while वाक्यको विशेषता हो।

यसरी while वाक्य सी भाषामा लचिलो दोहोर्याइ प्रक्रिया कार्यान्वयन गर्न आधारभूत संरचनाहरू मध्ये एक हो। अर्को खण्डमा, while वाक्यको मूल संरचना र प्रक्रियाको प्रवाहबारे विस्तृत रूपमा व्याख्या गर्नेछौं।

2. मूल संरचना र प्रक्रिया प्रवाह

while वाक्य C भाषा मा दोहोर्याउने प्रक्रियाको मूल संरचनामा मध्ये एक हो। प्रयोग गर्न धेरै सरल छ, 「शर्त अभिव्यक्ति」 सत्य(true) भएको बेला, निर्दिष्ट प्रक्रिया ब्लकलाई धेरै पटक दोहोर्याइन्छ। यहाँ, मूल संरचना र यसको प्रवाहको बारेमा व्याख्या गरिन्छ।

while वाक्यको मूल संरचना

while (condition) {
    // लूप भित्र दोहोर्याउन चाहिने प्रक्रिया
}
  • whileको पछि आउने कोष्ठकभित्र (`) मा「शर्त अभिव्यक्ति」लाई लेखिन्छ।
  • शर्त अभिव्यक्ति「सत्य(1)」 भएको बेला, कर्ली ब्रेसेस {} भित्र लेखिएको प्रक्रिया दोहोर्याइँदै कार्यान्वयन हुन्छ।
  • शर्त अभिव्यक्ति「झूठ(0)」 भएमा, लूपबाट बाहिर निक्लिएर अर्को प्रक्रियामा जान्छ।

while वाक्यको प्रक्रिया प्रवाह

  1. पहिले, शर्त अभिव्यक्तिलाई मूल्यांकन गर्छ।
  2. शर्त अभिव्यक्ति सत्य(1) भएमा, ब्लकभित्रको प्रक्रिया १ पटक कार्यान्वयन हुन्छ।
  3. प्रक्रिया समाप्त भएपछि, फेरि शर्त अभिव्यक्तिको मूल्यांकनमा फर्किन्छ।
  4. शर्त अभिव्यक्ति झूठ(0) भएमा, लूप समाप्त हुन्छ, र while वाक्यको पछिको प्रक्रियामा जान्छ।

यो प्रवाहले while वाक्यलाई「शर्त सन्तुष्ट भएको बेला मात्र」समान प्रक्रिया दोहोर्याउन सक्षम बनाउँछ।

कार्यान्वयन उदाहरण: शर्त सुरुबाटै झूठ भएमा

while वाक्यले, पहिलो शर्त जाँचमा「झूठ」ठहरिएमा, लूपभित्रको प्रक्रिया एकपटक पनि कार्यान्वयन नहुन सक्छ र समाप्त हुन्छ। उदाहरणका लागि, तलको कोड जस्तै।

int n = 0;
while (n > 0) {
    printf("n एक सकारात्मक संख्या हो। n");
}

यस अवस्थामा, चलn 0 भएको कारण, शर्त अभिव्यक्तिn > 0 सुरुबाटै झूठ हो। त्यसैले, printf को लाइन एकपटक पनि कार्यान्वयन हुँदैन।

यसरी, while वाक्य「शर्त अभिव्यक्ति सन्तुष्ट भएको बेला मात्र प्रक्रिया दोहोर्याउने」सरल र शक्तिशाली नियन्त्रण संरचना हो।

年収訴求

3. नमुना कोडसँग चलन बुझ्नुहोस्

while文को आधारभूत प्रयोग र प्रवाह बुझिसकेपछि, वास्तविक नमुना कोड हेर्दै यसको कार्यलाई जाँचौं। यहाँ, साधारण काउन्टर लूप, स्ट्रिङ दोहोर्याउने आउटपुट आदि, शुरुआतीहरूका लागि बुझ्न सजिलो उदाहरणहरू प्रस्तुत गरिन्छ।

उदाहरण1: काउन्टर प्रयोग गरेर आधारभूत while लूप

#include <stdio.h>

int main() {
    int i = 1;
    while (i <= 5) {
        printf("i को मान %d हो।n", i);
        i = i + 1; // i लाई 1-1 गरेर बढाउनुहोस्
    }
    return 0;
}

यो कोडमा, चलi १ बाट सुरु हुन्छ, i <= 5 भन्ने शर्त सन्तुष्ट भएको बेला, लूप भित्रकोprintf कार्यान्वयन हुन्छ। प्रत्येक लूपमाi १ ले बढ्छ, र ५ सम्म दोहोर्याएर आउटपुट हुन्छ।

कार्यक्रम परिणाम उदाहरण:

i को मान 1 हो。
i को मान 2 हो。
i को मान 3 हो。
i को मान 4 हो。
i को मान 5 हो。

उदाहरण2: “こんにちは” लाई धेरै पटक आउटपुट गर्ने

#include <stdio.h>

int main() {
    int count = 0;
    while (count < 3) {
        printf("नमस्तेn");
        count++;
    }
    return 0;
}

यस उदाहरणमा, count ३ भन्दा सानो भएको बेला, “こんにちは” देखाउने प्रक्रिया दोहोर्याइन्छ।

कार्यक्रम परिणाम उदाहरण:

नमस्ते
नमस्ते
नमस्ते

उदाहरण3: प्रयोगकर्ताको इनपुट मान अनुसार दोहोर्याउने प्रक्रिया

#include <stdio.h>

int main() {
    int num;
    printf("0 इनपुट गर्दा समाप्त हुन्छ।n");
    while (1) {
        printf("कृपया संख्या प्रविष्ट गर्नुहोस्:");
        scanf("%d", #);
        if (num == 0) {
            break; // 0 इनपुट भए लूप समाप्त
        }
        printf("प्रविष्ट गरिएको मान %d हो।n", num);
    }
    printf("समाप्त हुन्छ।n");
    return 0;
}

यस उदाहरणमा, प्रयोगकर्ता “0” इनपुट नगरेसम्म, अंकको इनपुट र प्रदर्शन दोहोर्याइन्छ। 0 इनपुट भएमाbreak कथनले लूपबाट बाहिर निस्कन्छ, र प्रोग्राम समाप्त हुन्छ।

यसरी, while文 विभिन्न रूपले लचिलो रूपमा प्रयोग गर्न सकिन्छ। साधारण काउन्टर लूपदेखि, प्रयोगकर्ता इनपुट प्रयोग गर्ने प्रक्रिया सम्म, विस्तृत प्रयोगहरूमा सक्रिय हुन्छ।

4. do-while सँगको भिन्नता

C भाषा मा, while文 सँग मिल्दोजुल्दो “do-while文” नामक नियन्त्रण संरचना छ। दुवैले “शर्त पूरा हुने सम्म, दोहोर्याइ प्रक्रिया गर्ने” बिन्दुमा समान छन्, तर कार्यान्वयन क्रम र व्यवहारमा भिन्नता छ। यस अध्यायमा, while文 र do-while文 को भिन्नता र प्रयोगको विभाजनबारे व्याख्या गर्नेछौं।

while文 र do-while文 को संरचनात्मक भिन्नता

  • while文
while (शर्त अभिव्यक्ति) {
    // दोहराउन चाहिएको प्रक्रिया
}
- पहिलो "शर्त अभिव्यक्ति" जाँच गरिन्छ, र यदि सत्य (1) हो भने मात्र ब्लक भित्रको प्रक्रिया कार्यान्वयन हुन्छ।  
- शर्त अभिव्यक्ति असत्य (0) भएमा, एकपटक पनि कार्यान्वयन हुँदैन र अर्को प्रक्रियामा जान्छ।
  • do-while文
do {
    // पुनरावृत्ति गर्न चाहिएको प्रक्रिया
} while (शर्त अभिव्यक्ति);
- पहिले ब्लक भित्रको प्रक्रिया एक पटक चलाउनुहोस्, त्यसपछि 「शर्त」 जाँच गर्नुहोस्।
- शर्त सत्य (1) भएमा, पुनः प्रक्रिया ब्लक चलाउनुहोस्। असत्य (0) भएमा लूप समाप्त गर्नुहोस्।

कार्यान्वयन क्रमको भिन्नता र विशेषताहरू

  • while文 “पहिले शर्त जाँच” प्रकारको लूप हो। शर्त अभिव्यक्ति पहिलो पटक जाँचिने कारण, केही अवस्थामा एकपटक पनि प्रक्रिया नहुन सक्छ।
  • do-while文 “पछिल्लो शर्त जाँच” प्रकारको लूप हो। पहिलो पटक कम्तिमा एकपटक प्रक्रिया ब्लक चल्ने विशेषता छ।

उदाहरण: do-while文 को नमूना

#include <stdio.h>

int main() {
    int n = 0;
    do {
        printf("n को मान %d हो।n", n);
        n++;
    } while (n < 3);
    return 0;
}

यस अवस्थामा, n 0 बाट सुरु हुन्छ, र n < 3 सत्य हुने सम्म दोहोर्याइन्छ।

कार्य परिणामको उदाहरण:

n को मान 0 छ।
n को मान 1 छ।
n को मान 2 छ。

यदि n को प्रारम्भिक मान 3 भए पनि, do-while文 को अवस्थामा केवल एकपटक “n को मान 3 हो” देखाइन्छ।

सरल तुलना तालिका

 while文do-while文
निर्णय समयपहिले शर्त जाँचअन्तमा शर्त जाँच
चलाउने संख्या0 पटक वा बढी1 पटक वा बढी
प्रयोगको स्थानयदि अनिवार्य रूपमा चलाउन आवश्यक नहुनुकम्तिमा एकपटक अवश्य प्रक्रिया गर्न चाहनुहुन्छ भने

विभाजनको बिन्दुहरू

  • इनपुट मानको जाँच वा मेनु प्रदर्शन जस्ता “कम्तिमा एकपटक अवश्य प्रक्रिया गर्न चाहनुहुन्छ” स्थितिमा, do-while文 उपयुक्त हुन्छ।
  • केही शर्तहरूमा “एकपटक पनि चलाइँदैन” सम्भव भएमा, while文 सुरक्षित हुन्छ।

यसरी, दुवैको विशेषता बुझेर उपयुक्त रूपमा विभाजन गर्दा, अझ लचिलो दोहोर्याइ प्रक्रिया सम्भव हुन्छ।

5. break・continue द्वारा नियन्त्रण

while文लाई प्रयोग गरेर दोहोर्याइ प्रक्रिया गरिरहँदा,「विशिष्ट शर्तमा लूपलाई बीचमै समाप्त गर्न चाहन्छु」「केवल केही शर्तलाई स्किप गर्न चाहन्छु」जस्ता परिस्थितिहरू प्रायः देखिन्छ। यस्ता अवस्थामा उपयोगी हुने कुरा भनेको、breakवाक्य रcontinueवाक्य हो। यस अध्यायमा, प्रत्येकको प्रयोग तरिका र उदाहरणहरू प्रस्तुत गर्दछौं।

break वाक्य:लूपको तत्काल समाप्ति

breakवाक्यले, while文जस्ता लूप प्रक्रियालाई, शर्तसँग मेल खाने समयमा तुरुन्तै समाप्त गर्न प्रयोग गरिन्छ। उदाहरणका लागि,「विशिष्ट मान इनपुट भएमा लूपबाट बाहिरिन चाहन्छु」जस्ता अवस्थामा उपयोगी हुन्छ।

उदाहरण:विशिष्ट मानले लूप समाप्त गर्ने

#include <stdio.h>

int main() {
    int n;
    while (1) {  // अनन्त लूप
        printf("कृपया पूर्णांक प्रविष्ट गर्नुहोस् (0 बाट बाहिर निस्कनुहोस्):");
        scanf("%d", &n);
        if (n == 0) {
            break;  // 0 प्रविष्ट भएमा लूप समाप्त
        }
        printf("प्रविष्ट गरिएको मान %d हो।n", n);
    }
    printf("प्रोग्राम समाप्त हुन्छ।n");
    return 0;
}

continue वाक्य:१ पटकको प्रक्रिया स्किप गर्ने

continueवाक्यले, while लूपभित्र प्रयोग गर्दा「त्यो बिन्दु पछि को प्रक्रिया स्किप गरी, अर्को लूप शर्त जाँचमा फर्किने」भूमिका खेल्दछ। उदाहरणका लागि「जोड संख्याहरू मात्र प्रक्रिया स्किप गर्न चाहन्छु」जस्ता अवस्थामा उपयोगी हुन्छ।

उदाहरण:जोड संख्यामा मात्र प्रक्रिया स्किप गर्ने

#include <stdio.h>

int main() {
    int i = 1;
    while (i <= 5) {
        if (i % 2 == 0) {
            i++;          // iलाई बढाइराख्नुहोस्
            continue;     // यदि सम संख्या हो भने तलको भागलाई छोड्नुहोस्
        }
        printf("विषम:%dn", i);
        i++;
    }
    return 0;
}

कार्यान्वयन परिणाम उदाहरण:

विषम संख्या:1
विषम संख्या:3
विषम संख्या:5

सारांश

  • breakलाई लूपलाई बलपूर्वक समाप्त गर्न चाहँदा प्रयोग गरिन्छ
  • continueलाई, केही शर्तमा मात्र सो चक्रको प्रक्रिया स्किप गर्न चाहँदा प्रयोग गरिन्छ

यी दुई नियन्त्रण वाक्यहरूलाई संयोजन गरेर, while文को कार्यलाई अझ लचिलो र प्रभावकारी रूपमा नियन्त्रण गर्न सकिन्छ।

6. बहुशर्तहरूले शर्त अभिव्यक्तिलाई सुदृढ गर्ने

while वाक्यको शर्त अभिव्यक्तिमा, एकल तुलना मात्र होइन «बहुशर्तहरू» लाई संयोजन गरेर वर्णन गर्न सकिन्छ। यसले गर्दा, थप लचिलो र व्यावहारिक लूप नियन्त्रण सम्भव हुन्छ। यो अध्यायमा, बहुशर्तहरू प्रयोग गर्दा आधारभूत विधि, तार्किक सञ्चालनकर्ताहरूको प्रयोग, र विशिष्ट उदाहरणहरू प्रस्तुत गरिन्छ।

तार्किक सञ्चालनकर्ताहरूको आधारभूत

सी भाषामा, शर्त अभिव्यक्तिहरूलाई संयोजन गर्नका लागि मुख्य रूपमा निम्न तार्किक सञ्चालनकर्ताहरू प्रयोग गरिन्छ।

  • && (AND): दुवै शर्तहरू सत्य (true) भएमा मात्र समग्र सत्य हुन्छ
  • || (OR): कुनै एक शर्त पनि सत्य भएमा समग्र सत्य हुन्छ
  • ! (NOT): शर्तको सत्यता उल्टो बनाउँछ (सत्य→असत्य, असत्य→सत्य)

उदाहरण १: AND (&&) प्रयोग गरेर बहुशर्त

«a १ भन्दा माथि र b १० भन्दा तल» को बीचमा, लूप दोहोर्याउने अवस्था

#include <stdio.h>

int main() {
    int a = 1, b = 15;
    while (a < 5 && b > 10) {
        printf("a = %d, b = %dn", a, b);
        a++;
        b--;
    }
    return 0;
}

कार्यान्वयन परिणाम उदाहरण:

a = 1, b = 15
a = 2, b = 14
a = 3, b = 13
a = 4, b = 12

उदाहरण २: OR (||) प्रयोग गरेर बहुशर्त

«x ५ भन्दा कम वा y २० भन्दा कम» को बीचमा, लूप दोहोर्याउने अवस्था

#include <stdio.h>

int main() {
    int x = 3, y = 25;
    while (x < 5 || y < 20) {
        printf("x = %d, y = %dn", x, y);
        x++;
        y--;
    }
    return 0;
}

कार्यान्वयन परिणाम उदाहरण:

x = 3, y = 25
x = 4, y = 24
x = 5, y = 23
x = 6, y = 22
x = 7, y = 21
x = 8, y = 20
x = 9, y = 19

(y २० भन्दा कम नहुँदासम्म दोहोर्याइन्छ)

उदाहरण ३: NOT (!) प्रयोग गरेर शर्त अभिव्यक्ति

«flg असत्यको बीचमा» लूप गर्ने अवस्था

#include <stdio.h>

int main() {
    int flg = 0;
    while (!flg) {
        printf("flg 0 भएको कारण लूपमा छ।n");
        flg = 1; // flg लाई 1 बनाएर लूप समाप्त
    }
    return 0;
}

तार्किक सञ्चालनकर्ताहरूको प्राथमिकता क्रममा ध्यान दिनुहोस्

बहु तार्किक सञ्चालनकर्ताहरू एकैसाथ प्रयोग गर्दा, गणनाको क्रम (प्राथमिकता क्रम) मा ध्यान दिन आवश्यक छ।
आधारभूत रूपमा, !&&|| को क्रममा प्राथमिकता दिई मूल्यांकन गरिन्छ। आवश्यकता अनुसार () ले स्पष्ट रूपमा क्रम निर्दिष्ट गर्नुहोस्।

बहुशर्तहरू प्रयोग गरेर, थप जटिल निर्णय मापदण्डले लूप नियन्त्रण गर्न सम्भव छ।

7. इनपुट पर्खाइ र सेन्टिनेल नियन्त्रणको व्यावहारिक उदाहरणहरू

while कथन “बाह्य इनपुट” अनुसार दोहोर्याउने प्रक्रिया जारी राख्न वा समाप्त गर्नका केसहरूमा धेरै प्रयोग गरिन्छ। सामान्यतः प्रयोग हुने कुरा प्रयोगकर्ताको इनपुट मान वा फाइलको अन्त्यलाई निगरानी गर्ने “सेन्टिनेल नियन्त्रण” हो। यस अध्यायमा वास्तविक प्रयोग तरिका र मुख्य बुँदाहरू प्रस्तुत गरिन्छ।

सेन्टिनेल नियन्त्रण भनेको के?

सेन्टिनेल (sentinel) भनेको “रक्षक” वा “निगरानीकर्ता” जस्ता अर्थहरू हुन्छन्, र प्रोग्रामिङ संसारमा “लूप समाप्तिको संकेत गर्ने मान (समाप्ति शर्तको विशेष मान)” लाई जनाउँछ।
उदाहरणका लागि, “0 इनपुट भएमा लूप समाप्त” जस्ता, विशेष मानलाई “समाप्तिको संकेत” को रूपमा प्रयोग गरिन्छ।

उदाहरण 1: प्रयोगकर्ता इनपुट मानद्वारा लूप नियन्त्रण

#include <stdio.h>

int main() {
    int value, sum = 0;
    printf("कृपया पूर्णांक प्रविष्ट गर्नुहोस् (0 मा अन्त्य):n");
    while (1) {
        scanf("%d", &value);
        if (value == 0) {
            break; // सेन्टिनेल मान 0 मा अन्त्य
        }
        sum += value;
    }
    printf("कुल मान %d हो।n", sum);
    return 0;
}

यस उदाहरणमा, प्रयोगकर्ता 0 इनपुट गर्ने सम्म धेरै पटक मान स्वीकार गरी कुल गणना गरिन्छ। 0 इनपुट भएमा break कथनले लूप समाप्त हुन्छ।

उदाहरण 2: अक्षर इनपुटद्वारा लूप समाप्ति

#include <stdio.h>

int main() {
    char c;
    printf("क्यारेक्टर प्रविष्ट गर्नुहोस्(x ले अन्त्य):n");
    while (1) {
        scanf(" %c", &c); // पहिले स्पेस राखेर खाली अक्षरहरू पनि स्किप गर्नुहोस्
        if (c == 'x') {
            break;
        }
        printf("प्रविष्ट गरिएको क्यारेक्टर:%cn", c);
    }
    printf("समाप्त हुन्छ।n");
    return 0;
}

व्यावहारिक उदाहरण: फाइलको अन्त्यसम्म प्रक्रिया दोहोर्याउने

फाइल प्रोसेसिङमा पनि “सेन्टिनेल नियन्त्रण” बारम्बार प्रयोग हुन्छ। उदाहरणका लागि, फाइललाई एक लाइन씩 पढेर अन्त्य(EOF)सम्म दोहोर्याउने अवस्थामा:

#include <stdio.h>

int main() {
    FILE *fp = fopen("sample.txt", "r");
    char buf[100];
    if (fp == NULL) {
        printf("फाइल खोल्न सकिएन。n");
        return 1;
    }
    while (fgets(buf, sizeof(buf), fp) != NULL) {
        printf("%s", buf);
    }
    fclose(fp);
    return 0;
}

यस उदाहरणमा, fgets ले NULL फिर्ता गर्दा त्यो सेन्टिनेल बनिन्छ, र लूप समाप्त हुन्छ।

यसरी, while कथन इनपुट वा बाह्य डेटा निगरानी・प्रतीक्षा प्रक्रियामा अत्यन्त उपयोगी हुन्छ।

8. अनन्त लूप र समाप्ति नियन्त्रण

C भाषा मा दोहोर्याउने प्रक्रिया लेख्दा, “अनन्त लूप” प्रायः प्रयोग हुने प्रविधि मध्ये एक हो। अनन्त लूप भनेको, नामजस्तै “इच्छापूर्वक अन्त नहुने” लूप हो, जसलाई बाह्य इनपुट वा विशेष शर्त पूरा नहुन्जेल कार्यक्रम चलाइराख्न चाहिएको अवस्थामा प्रयोग गरिन्छ। यस अध्यायमा, अनन्त लूपको लेखन तरिका र सुरक्षित रूपमा समाप्त गर्ने विधिहरूको व्याख्या गरिनेछ।

अनन्त लूपको लेखन तरिका

C भाषामा, तल देखाइएका अनुसार while कथनको सर्तलाई “सधैं सत्य (1)” बनाएर अनन्त लूप प्राप्त गर्न सकिन्छ।

while (1) {
    // यस भित्रको प्रक्रिया अनन्तरूपमा दोहोर्याइन्छ
}

वा, “सर्त सधैं सत्य हुने गरी लेखेर” अनन्त लूप बनाइँछ।

int flag = 0;
while (flag == 0) {
    // जति सम्म flag 0 मा रहन्छ, तति सम्म अनन्तरूपमा चलिरहन्छ
}

for कथनमा अनन्त लूप

while कथन मात्र नभई, for कथनमा पनि तल देखाइएका अनुसार अनन्त लूप लेख्न सकिन्छ।

for (;;) {
    // अनन्त लूप
}

अनन्त लूपको प्रयोग उदाहरणहरू

  • प्रयोगकर्ताबाट इनपुटको निरन्तर प्रतीक्षा गर्नु
  • खेल वा एम्बेडेड प्रोग्राममा सधैं सेन्सर मानहरू निगरानी गर्नु
  • सर्भरले बाह्य जडानको प्रतीक्षा गर्दछ

अनन्त लूपलाई सुरक्षित रूपमा बाहिर निस्कने तरिका

अनन्त लूपलाई, break कथनजस्ता प्रयोग गरेर “केही शर्त पूरा भएमा मात्र” लूप समाप्त गर्नु सामान्य हो। उदाहरणका लागि, प्रयोगकर्ताले विशेष मान इनपुट गरेमा वा त्रुटि उत्पन्न भएमा लूपबाट बाहिर निस्किन्छ।

उदाहरण: प्रयोगकर्ताको इनपुटले लूप समाप्त

#include <stdio.h>

int main() {
    char c;
    while (1) {
        printf("समाप्त गर्न चाहनुहुन्छ भने q टाइप गर्नुहोस्:");
        scanf(" %c", &c);
        if (c == 'q') {
            break; // q प्रविष्ट गरिएमा अनन्त लूप समाप्त हुन्छ
        }
        printf("अहिले पनि लूपमा छ।n");
    }
    printf("लूपबाट बाहिर निस्किए।n");
    return 0;
}

ध्यान दिनु पर्ने बुँदाहरू

अनन्त लूप उपयोगी भए पनि, यदि अनजानेमा “बाहिर निस्कने मार्ग” तयार नगरिएमा, कार्यक्रम रोकिएन। हामीले ‘समाप्ति शर्त’ र ‘लूपबाट बाहिर निस्कने विधि’ अनिवार्य रूपमा तयार पार्नुपर्छ, र सुरक्षित कार्यक्रम सञ्चालनको ध्यान राख्नुपर्छ।

अनन्त लूपको प्रयोगमा निपुण भएमा, C भाषाको प्रयोग क्षमता अझ विस्तार हुन्छ।

9. शर्त अभिव्यक्तिको जाल र ध्यान दिनुपर्ने बुँदाहरू

while वाक्यको शर्त अभिव्यक्ति सरल देखिन्छ, तर वास्तविक प्रोग्राम लेख्दा “अप्रत्याशित जाल” मा फस्ने केसहरू धेरै हुन्छन्। यस अध्यायमा, विशेष गरी शुरुआतीहरूले गल्ती गर्न सजिलो बुँदाहरू र ध्यान दिनुपर्ने कुराहरूलाई व्यवस्थित गरी प्रस्तुत गर्छौं।

1. चलको अद्यावधिक नहुनुबाट हुने अनन्त लूप

while वाक्यभित्र लूप नियन्त्रणमा प्रयोग गरिने चललाई सही रूपमा अद्यावधिक नगरेमा, शर्त सधैं सत्य रहन्छ र अनपेक्षित अनन्त लूपमा फस्न सक्छ।

उदाहरण: अद्यावधिक नहुनुबाट हुने अनन्त लूप

int i = 0;
while (i < 5) {
    printf("i = %dn", i);
    // i++ को कथन नभएको कारण, i 0 मा रहन्छ
}

यस अवस्थामा, i बृद्धि हुँदैन, त्यसैले i < 5 सधैं सत्य रहन्छ, र प्रोग्राम रोकिएन।

2. तुलना अपरेटरको गल्ती (= र == को भ्रम)

C भाषामा, = लाई “असाइन अपरेटर”, == लाई “समानता तुलना अपरेटर” भनिन्छ। शर्त अभिव्यक्तिमा यसलाई गल्तीले प्रयोग गर्दा, अनपेक्षित व्यवहार वा बगको कारण बन्छ।

उदाहरण: असाइन र तुलना को भ्रम

int n = 3;
while (n = 0) { // वास्तवमा while (n == 0) लेखिनु पर्छ
    printf("n 0 छ। n");
}

यस अवस्थामा, n = 0 ले n लाई 0 मा असाइन गर्छ, र त्यो मान (0) शर्त अभिव्यक्तिमा प्रयोग हुन्छ, जसले गर्दा “शुरुबाटै शर्त असत्य” हुन्छ, र लूपको मुख्य भाग एकपटक पनि चल्दैन।

3. शर्त अभिव्यक्तिको मूल्यांकन नियम (0 असत्य, 0 बाहेक सबै सत्य)

C भाषामा, शर्त अभिव्यक्तिको मान “0” भए असत्य, “0 बाहेक” भए सत्य मानिन्छ। यो नियम नजानेले अनपेक्षित बग हुन सक्छ।

उदाहरण: संख्यालाई सिधै शर्त अभिव्यक्तिमा प्रयोग गर्नु

int flag = -1;
while (flag) {
    // flag 0 भन्दा बाहिरको समयसम्म लूप जारी रहन्छ
    flag = 0;
}

यसरी, नकारात्मक मान वा 1 बाहेकका संख्याहरू पनि “सत्य” को रूपमा व्यवहार गरिन्छ।

4. जटिल तर्क अभिव्यक्तिमा प्राथमिकता त्रुटि

धेरै तर्क अपरेटर (&&, ||, ! आदि) संयोजन गर्दा, प्राथमिकता गल्तीले अनपेक्षित शर्त मूल्यांकन हुन सक्छ। अस्पष्ट अवस्थामा सधैं कोष्ठक () प्रयोग गरी स्पष्ट बनाउनुहोस्।

5. इनपुट मान वा बाह्य डेटा को प्रमाणीकरण अभाव

जब while वाक्यलाई प्रयोगकर्ता इनपुट मान वा फाइल डेटा द्वारा नियन्त्रण गरिन्छ, “अवैध मान” वा “अनपेक्षित इनपुट” भए पनि सुरक्षित रूपमा चल्ने गरी ध्यान दिनुहोस्।

सारांश

  • चलको अद्यावधिक नहुनु, तुलना अपरेटरको गल्तीमा ध्यान दिनु
  • 0 र 0 बाहेकको सत्य/असत्य नियम बुझ्नु
  • तर्क अपरेटरको प्राथमिकता र कोष्ठक प्रयोग पनि महत्त्वपूर्ण
  • शर्त अभिव्यक्तिको डिजाइनमा बानी परेपछि, while वाक्यको बग धेरै घटाउन सकिन्छ

10. अक्सर सोधिने प्रश्न(FAQ)

C भाषाको while लूप र सर्त अभिव्यक्तिहरू सम्बन्धी, शिक्षार्थीहरू र शुरुआती प्रोग्रामरहरूबाट अक्सर सोधिने प्रश्नहरूलाई Q&A ढाँचामा संकलन गरेका छौं। प्रश्न बुँदाहरू र अड्किने बिन्दुहरूलाई व्यवस्थित गरी, सुरक्षित रूपमा while लूपलाई प्रयोग गर्न सकियोस् भनेर व्याख्या गर्दछौं।

Q1. while लूपको सर्त अभिव्यक्ति सुरुबाटै गलत (false) भएमा, लूप भित्र एकपटक पनि कार्यान्वयन हुँदैन?

A. हो, ठीकै हो। while लूप “पहिले सर्त जाँच” प्रकारको हो, त्यसैले सुरुको सर्त जाँच गलत (false、0) भएमा, लूपको मुख्य भाग एकपटक पनि चल्दैन र अर्को प्रक्रियामा जान्छ।
※यदि कम्तिमा एकपटक चलाउन चाहनुहुन्छ भने, do-while लूप प्रयोग गर्नुहोस्।

Q2. do-while लूप र while लूपको भिन्नता के हो?

A. मुख्य भिन्नता सर्त अभिव्यक्तिको मूल्यांकन गर्ने समय हो।

  • while लूप 「पहिले सर्त जाँच」 प्रकारको हो, सर्त गलत भएमा एकपटक पनि चल्दैन।
  • do-while लूप 「पछिल्लो सर्त जाँच」 प्रकारको हो, सर्तसँग सम्बन्ध नहुन पनि कम्तिमा एकपटक प्रक्रिया चल्दछ।

Q3. while लूपको सर्त अभिव्यक्तिमा बहु सर्तहरू संयोजन गर्न सकिन्छ?

A. हो, सम्भव छ। तार्किक अपरेटर(&&, ||, !) प्रयोग गरेर, बहु सर्तहरूलाई स्वतन्त्र रूपमा संयोजन गर्न सकिन्छ।
उदाहरण:while (a > 0 && b < 10) { ... }

Q4. अनन्त लूप नहुनको लागि सुझावहरू के हुन्?

A. लूप भेरिएबल र नियन्त्रण भेरिएबलको अद्यावधिक छुट्न नदिनुहोस्। साथै, 「लूपबाट बाहिर निस्कने निश्चित सर्त छ कि छैन」 भन्ने कुरा ध्यानमा राखी, break कथन र समाप्ति सर्तलाई सही रूपमा सेट गर्नु महत्त्वपूर्ण छ।
विशेष गरी शुरुआतीहरूलाई, 「भेरिएबल ठीकसँग परिवर्तन भइरहेको छ कि छैन」 भन्ने कुरा ध्यानमा राखेर लेख्दा त्रुटि रोक्न सकिन्छ।

Q5. प्रयोगकर्ता इनपुट वा बाह्य डेटा द्वारा while लूपको नियन्त्रण गर्न सकिन्छ?

A. अवश्य सम्भव छ। सेन्टिनेल मान(उदाहरण:0 वा विशेष अक्षर) वा फाइलको अन्त्य जस्ता, 「विशिष्ट मान इनपुट भएमा समाप्त」 गर्ने तरिकाले while लूपलाई नियन्त्रण गर्ने सामान्य हो।

Q6. if कथन र while लूपको सर्त अभिव्यक्तिमा भिन्नता छ?

A. सर्त अभिव्यक्तिको लेखन र मूल्यांकन नियम समान छन्, तर、

  • if कथन 「एकपटक मात्र」 सर्त जाँच गरी प्रक्रिया चलाउँछ।
  • while लूप 「सर्त साँचो रहँदा, धेरै पटक」 दोहोर्याइ प्रक्रिया चलाउँछ।

Q7. while लूपभित्र break वा continue धेरै प्रयोग गर्दा ठीक छ?

A. कार्यात्मक रूपमा समस्या छैन, तर धेरै जटिल भएमा 「के कारणले लूपबाट बाहिरियो」 वा 「प्रक्रियाको प्रवाह」 बुझ्न गाह्रो हुन्छ। पठनीयतालाई ध्यानमा राखी, सकेसम्म सरल नियन्त्रणको प्रयास गर्नुहोस्।

Q8. while लूपको बाहिर परिभाषित गरिएको भेरिएबल लूपभित्र पनि प्रयोग गर्न सकिन्छ?

A. हो, प्रयोग गर्न सकिन्छ। while लूपको बाहिर घोषणा र आरम्भ गरिएको भेरिएबल लूपभित्र स्वतन्त्र रूपमा सन्दर्भ र अद्यावधिक गर्न सकिन्छ। तर, भेरिएबलको स्कोप र मानको आरम्भ समयमा ध्यान दिनुहोस्।

यी प्रश्नहरूलाई एक-एक गरी समाधान गर्दा, while लूपको प्रयोग क्षमता क्रमशः बढ्छ। अर्को अध्यायमा, लेखको समग्र सारांश र भविष्यका चरणहरू प्रस्तुत गरिनेछ।

11. सारांश र आगामी चरण

C Gengo मा while वाक्यांशले, “शर्त सत्य रहँदा मात्र दोहोर्याइ प्रक्रिया गर्ने” को लागि, अत्यन्त लचिलो र शक्तिशाली नियन्त्रण संरचना हो। यो लेख मार्फत, while वाक्यांशको मूल संरचना र प्रयोगबाट, बहु शर्तको प्रयोग, do-while वाक्यांशसँगको भिन्नता, अनन्त लूपको नियन्त्रण, सामान्य त्रुटिहरू र FAQ सम्म, व्यापक रूपमा व्याख्या गरेका छौं।

while वाक्यांशका मुख्य बुँदाहरू तलका अनुसार छन्।

  • पहिले शर्त जाँच गर्ने लूपर, शर्त सुरुबाटै गलत भएमा एकपटक पनि प्रक्रिया हुँदैन
  • for वाक्यांश र do-while वाक्यांशसँगको भिन्नतालाई बुझ्न, उपयुक्त स्थानमा प्रयोग गर्ने कुरा महत्वपूर्ण छ
  • तर्कीय अपरेटर र सेन्टिनेल मानहरूलाई उपयोग गरेर, वास्तविक इनपुट निगरानी र जटिल नियन्त्रण पनि लचिलो रूपमा कार्यान्वयन गर्न सकिन्छ
  • अनन्त लूप वा break/continueद्वारा निकास/स्किप आदि पनि परिस्थितिअनुसार प्रयोग गर्न सकिन्छ
  • चलको अद्यावधिक बिर्सनु वा तुलना अपरेटरको त्रुटिजस्ता, शुरुआतीहरूलाई सजिलै पर्न सक्ने जालहरूमा ध्यान दिनु

while वाक्यांशको प्रयोगमा निपुण भएमा, C Gengo मा 「वास्तविक चल्ने प्रोग्राम」 लेख्ने क्षमता ठूलो रूपमा सुधारिन्छ।
प्रोग्रामिङ शुरुआतीहरूले, आफैं कोड लेखेर र परीक्षण गर्दै, 「कुन परिस्थितिमा while वाक्यांश उपयोगी हुन्छ?」लाई अनुभव गर्नु सबैभन्दा महत्वपूर्ण छ।

आगामीमा, तलका चरणहरू मार्फत कौशल वृद्धि लक्ष्य गरौं।

  • for वाक्यांश र if वाक्यांश जस्ता, अन्य नियन्त्रण संरचनासँगको संयोजन उदाहरणहरू अभ्यास गर्ने
  • एरे, फाइल इनपुट/आउटपुट, फलो आदि, while वाक्यांशसँग संयोजन गरेर वास्तविक प्रोग्राममा चुनौती दिने
  • विभिन्न प्रकारका त्रुटि र अपवाद ह्यान्डलिङ्ग पनि कार्यान्वयन गरी, अझ सुरक्षित र दृढ कोड लक्ष्य गर्ने

while वाक्यांशलाई स्वतन्त्र रूपमा प्रयोग गर्न सकिएमा, C Gengo को प्रयोग क्षेत्र ठूलो रूपमा विस्तार हुन्छ। कृपया, यस पटक सिकेको सामग्रीलाई उपयोग गरेर, अझ व्यावहारिक प्रोग्रामिङमा चुनौती दिनुहोस्।