लूप करते समय करें



अधिकांश कंप्यूटर प्रोग्रामिंग भाषाओं में डू वाइल लूप एक कंट्रोल फ्लो स्टेटमेंट है जो कोड के एक ब्लॉक को निष्पादित करता है और फिर या तो ब्लॉक को दोहराता है या दी गई बूलियन स्थिति के आधार पर लूप से बाहर निकलता है।

'डू व्हाइल' कंस्ट्रक्शन में एक प्रोसेस सिंबल और एक कंडीशन होती है। पहले ब्लॉक के अंदर कोड निष्पादित किया जाता है। फिर स्थिति का मूल्यांकन किया जाता है। यदि कंडीशन सत्य है तो ब्लॉक के अंदर कोड को फिर से निष्पादित किया जाता है। यह तब तक दोहराता है जब तक स्थिति झूठी (तर्क) नहीं बन जाती है ।

जब लूप कोड के ब्लॉक के निष्पादित होने के बाद स्थिति की जांच करें इस नियंत्रण संरचना को पोस्ट-टेस्ट लूप के रूप में जाना जा सकता है। इसका अर्थ है कि डू-जबकि लूप एक्जिट-कंडीशन लूप है। चूँकि थोड़ी देर का लूप ब्लॉक के अंदर कोड निष्पादित होने से पहले स्थिति का परीक्षण करेगा।

इसका अर्थ यह है कि कोड को सदैव पहले निष्पादित किया जाता है और फिर अभिव्यक्ति या परीक्षण की स्थिति का मूल्यांकन किया जाता है। यह प्रक्रिया तब तक दोहराई जाती है जब तक अभिव्यक्ति सत्य का मूल्यांकन करती है। यदि अभिव्यक्ति गलत है तो लूप समाप्त हो जाता है। कोड के निष्पादन के लिए आवश्यक स्थिति के रूप में थोड़ी देर लूप एक कथन की सचसच्चाई सेट करता है। एक डू-जबकि लूप क्रिया के चल रहे निष्पादन के लिए प्रदान करता है जब तक कि स्थिति अब सत्य नहीं है।

स्थिति का सदैव सत्य होना मूल्यांकन करना संभव है और कभी-कभी वांछनीय है। यह एक अनंत लूप बनाता है। जब एक अनंत लूप जानबूझकर बनाया जाता है तो सामान्यतः एक अन्य नियंत्रण संरचना होती है जो लूप को समाप्त करने की अनुमति देती है। उदाहरण के लिए एक ब्रेक स्टेटमेंट अनंत लूप को समाप्त करने की अनुमति देगा।

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

समकक्ष निर्माण
के समान है

इस विधि से, डू ... वाइल लूप प्रारंभिक लूप प्राइमिंग को   जबकि  से पहले लाइन पर है।

जब तक जारी कथन का उपयोग नहीं किया जाता है, तब तक उपरोक्त तकनीकी रूप से निम्नलिखित के समान है (चूँकि ये उदाहरण रोज़ के कंप्यूटरों में उपयोग की जाने वाली विशिष्ट या आधुनिक शैली नहीं हैं):

या

लूप करते समय प्रदर्शन करना
ये उदाहरण प्रोग्राम डू-वाइल लूप के लिए अपनी संबंधित भाषाओं के सिंटैक्स का उपयोग करके 5 के फैक्टोरियल की गणना करते हैं।

बेसिक
प्रारंभिक बेसिक्स (जैसे जीडब्ल्यू-बेसिक) ने WHILE/WEND सिंटैक्स का उपयोग किया पावरबेसिक जैसे आधुनिक बेसिक, WHILE/WEND और DO/LOOP दोनों संरचनाएँ प्रदान करते हैं जैसे कि DO WHILE/LOOP, DO UNTIL/LOOP, DO/LOOP WHILE, DO/LOOP UNTIL, और DO/LOOP (बाहरी परीक्षण के बिना किंतु लूप के अंदर कहीं एक नियम्बद्द निकास लूप के साथ) विशिष्ट बुनियादी स्रोत कोड:

C (प्रोग्रामिंग भाषा)
डू-वाइल (0) स्टेटमेंट्स का उपयोग सामान्यतः सी मैक्रोज़ में कई स्टेटमेंट्स को नियमित (कंपाउंड के विपरीत) स्टेटमेंट में लपेटने के विधि के रूप में किया जाता है। यह मैक्रो के बाद आवश्यक अर्धविराम बनाता है सरल पार्सर और प्रोग्रामर के साथ-साथ स्कोपिंग समस्या से बचने के लिए अधिक कार्य-जैसी उपस्थिति प्रदान करता है if. सर्ट सी कोडिंग मानक नियम प्री10-C में इसकी पक्षसमर्थन की गई है।

फोरट्रान
लीगेसी फोरट्रान 77 के साथ कोई डू-वाइल कंस्ट्रक्शन नहीं है, किंतु गोटो के साथ समान प्रभाव प्राप्त किया जा सकता है:

फोरट्रान 90 और बाद में कोई डू-जबकि निर्माण नहीं होता है किंतु इसमें एक वाइल _लूप या फोरट्रान निर्माण होता है जो कीवर्ड डू-वाइल का उपयोग करता है और इस प्रकार यह वास्तव में फॉर लूप के समान है।

जावा (प्रोग्रामिंग भाषा)
JavaScript

पास्कल (प्रोग्रामिंग भाषा)
पास्कल (प्रोग्रामिंग भाषा) में कोई कार्य/समय नहीं है; इसके अतिरिक्त यह एक दोहराना/तक है। जैसा कि परिचय में उल्लेख किया गया है एक 'डू कोड जबकि नॉट एक्सप्रेशन' निर्माण के समान होने के लिए एक दोहराने पर विचार कर सकता है।

पीएल/आई
PL/I DO स्टेटमेंट पोस्ट-टेस्ट लूप (तब तक करें) प्री-टेस्ट लूप (डू व्हाइल) और फॉर लूप के कार्यों को समाहित करता है। सभी कार्यों को एक ही कथन में सम्मिलित किया जा सकता है। उदाहरण केवल सिंटैक्स तक do दिखाता है।

पायथन (प्रोग्रामिंग भाषा)
प्रवाह नियंत्रण निर्माण के समय पायथन में एक विशिष्ट कार्य का अभाव है। चूँकि समतुल्य को ब्रेक के साथ थोड़ी देर के लूप से बनाया जा सकता है।

रैकेट (प्रोग्रामिंग भाषा)
रैकेट में जैसा कि अन्य योजना (प्रोग्रामिंग भाषा) कार्यान्वयन में है नाम-लेट लूप को प्रयुक्त करने का एक लोकप्रिय विधि है:

रैकेट में जैसा कि अन्य योजना कार्यान्वयन में है लूप को प्रयुक्त करने के लिए "नामित-लेट" एक लोकप्रिय विधि है:

रैकेट और स्कीम भी उचित डू लूप प्रदान करते हैं।

स्विफ्ट (प्रोग्रामिंग भाषा)
स्विफ्ट 2.x और बाद में: स्विफ्ट 1.x:

यह भी देखें

 * नियंत्रण प्रवाह
 * फॉर लूप
 * प्रत्येक के लिए
 * रिपीट लूप (बहुविकल्पी)
 * वाईल लूप

बाहरी संबंध

 * do {...} while (0) in C macros

Schleife (Programmierung)