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



अधिकांश कंप्यूटर प्रोग्रामिंग लैंग्वेज में डू घुमाव के दौरान एक बहाव को काबू करें   बयान (कंप्यूटर विज्ञान)  है जो कोड के एक ब्लॉक को निष्पादित करता है और फिर या तो ब्लॉक को दोहराता है या किसी दिए गए बूलियन डेटा प्रकार की स्थिति के आधार पर लूप से बाहर निकलता है।

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

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

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

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

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

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

इस तरीके से, do ... while लूप प्रारंभिक लूप प्राइमिंग को बचाता है  लाइन से पहले   कुंडली।

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

या

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

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

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

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

फोरट्रान 90 और बाद में कोई डू-जबकि निर्माण नहीं होता है, लेकिन इसमें एक while_loop#Fortran निर्माण होता है जो कीवर्ड do while का उपयोग करता है और इस प्रकार यह वास्तव में for लूप के समान है।

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

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

 काउंटर निश्चित प्रारंभिक (5) घोषित करें; फैक्टोरियल फिक्स्ड इनिशियल (1) घोषित करें;

तब तक करें (काउंटर <= 0); फैक्टोरियल = फैक्टोरियल * काउंटर; काउंटर = काउंटर - 1; अंत;

पुट (तथ्यात्मक); 

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

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

इसकी तुलना रैकेट के लिए जबकि लूप#रैकेट उदाहरण के पहले उदाहरण से करें। विदित हो कि एक नामित let तर्क भी ले सकता है।

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

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

यह भी देखें

 * बहाव को काबू करें
 * पाश के लिए
 * प्रत्येक के लिए
 * रिपीट लूप (बहुविकल्पी)
 * घुमाव के दौरान

बाहरी संबंध

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

Schleife (Programmierung)