शर्त के साथ लूप स्टेटमेंट - जबकि


<वें स्कोप="col">काउंटर <शरीर> कार्यक्रम इस प्रकार रहेगा। <पूर्व> <कोड>var n, गिनती: पूर्णांक; शुरू     पढ़ें (एन);     गिनती := 0;     जबकि n <> 0 शुरू करने के लिए         गिनती += 1;         एन := एन div 10;     अंत;     writeln('संख्या - ', n, ' सम्‍मिलित है ', गिनती, ' अंक'); अंत। आपको इस कार्यक्रम को दिल से जानने की जरूरत है, क्योंकि। इसके आधार पर अंकों द्वारा संख्याओं की गणना से संबंधित अन्य अनेक समस्याओं का समाधान किया जाता है।

for लूप का अध्ययन करते समय, हमने कहा कि यदि किसी क्रिया के दोहराव की संख्या ज्ञात है, तो आप for लूप ऑपरेटर का उपयोग करके प्रोग्राम को छोटा कर सकते हैं। लेकिन क्या होगा अगर दोहराव की संख्या ज्ञात नहीं है? और ऐसा अक्सर होता है।
उदाहरण के लिए, आइए दशमलव संख्या प्रणाली से किसी अन्य संख्या में किसी संख्या के रूपांतरण को याद रखें: हमें संख्या प्रणाली के आधार द्वारा संख्या (और फिर विभाजन का परिणाम) को तब तक विभाजित करने की आवश्यकता है जब तक कि हमें उत्तर में शून्य न मिल जाए। हम कितनी बार साझा करेंगे अज्ञात है। और ऐसे कई प्रोग्राम हैं जो इस तरह के एल्गोरिद्म को लागू करते हैं। 
इसे कैसे लागू किया जाता है?
प्रोग्रामिंग में ऐसे मामलों के लिए, एक शर्त के साथ एक लूप ऑपरेटर होता है। 
पास्कल प्रोग्रामिंग लैंग्वेज में, एक कंडीशनल लूप स्टेटमेंट शब्द के साथ शुरू होता है और इसकी निम्नलिखित संरचना होती है। <पूर्व> जबकि <स्थिति> शुरू करो लूप बॉडी अंत जैसा कि हम पहले से ही जानते हैं:
- शर्त एक व्यंजक है, जिसका परिणाम या तो सत्य या असत्य हो सकता है (जैसा कि सशर्त कथन में होता है)
- लूप बॉडी वह कमांड है जिसे दोहराने की जरूरत होती है
- प्रारंभ और अंत को छोड़ा जा सकता है यदि लूप बॉडी में केवल एक ऑपरेटर हो

ऑपरेटर कैसे काम करता है:
1. सबसे पहले, कार्यक्रम शब्द के बाद की स्थिति का मूल्यांकन करता है। यदि शर्त पूरी होती है (सत्य), तो प्रोग्राम लूप बॉडी में निहित बयानों को निष्पादित करता है।
2. जैसा कि लूप के लिए होता है, यदि लूप बॉडी में केवल एक स्टेटमेंट होता है, तो लूप बॉडी को हाइलाइट करने वाले शब्दों को छोड़ा जा सकता है।
3. लूप बॉडी का निष्पादन पूरा होने के बाद, प्रोग्राम स्थिति की जांच करने के लिए वापस आता है और इसे फिर से जांचता है।
4. ये क्रियाएं (स्थिति की जांच - लूप बॉडी को निष्पादित करना) तब तक दोहराई जाती हैं जब तक कि स्थिति झूठी नहीं हो जाती।
5. यदि इस ऑपरेटर के पहले निष्पादन पर, स्थिति तुरंत संतुष्ट नहीं होती है (गलत), तो प्रोग्राम लूप बॉडी को कभी भी निष्पादित नहीं करेगा।

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

प्रोग्राम का एक उदाहरण जिसे हम "साइलेंट काउंट"
कहेंगे आइए, हमारी बजाय प्रोग्राम की गिनती करें, उदाहरण के लिए, 10 तक।
कार्यक्रम को "प्रारंभ" वाक्यांश को आउटपुट करना चाहिए और "समाप्त", और इन क्रियाओं के बीच उन संख्याओं को प्रदर्शित करते हैं जिनकी गणना की जा रही है।
इस तरह, 
शुरू
1 2 3 4 5 6 7 8 9 10
समाप्त
थोड़ी देर के लूप का उपयोग करने वाला प्रोग्राम इस तरह दिखेगा। <पूर्व> var i: पूर्णांक; शुरू     राइटलन (' प्रारंभ करें & #39;);     मैं := 1;     जबकि i <= 10 शुरू करते हैं         लिखें (मैं, ' ');         मैं + = 1; // ऑपरेटर जो स्थिति में चर के परिवर्तन को प्रभावित करता है         अंत;     राइटलन ();     राइटलन ('समाप्त करें'); अंत। इस प्रोग्राम में, हम वेरिएबल i := 1 - मूल
को एक मान प्रदान करते हैं इसके अलावा, जब तक हमारे पास वेरिएबल i का मान हमारे लिए आवश्यक मान से अधिक नहीं है (अर्थात, इससे कम या इसके बराबर), हम 
 1 - वेरिएबल i 
का मान प्रदर्शित करता है  2 - वेरिएबल i के मान को 1 से बढ़ाएँ - यह ऑपरेटर कोष्ठक में स्थिति के मान को प्रभावित करता है। वेरिएबल i बढ़ा हुआ है, यानी किसी बिंदु पर स्थिति i<=10 झूठी हो जाएगी। यह तब होगा जब i 11 के बराबर हो जाएगा। इस मामले में, लूप बॉडी को निष्पादित नहीं किया जाएगा, और प्रोग्राम लूप के बाद अगला स्टेटमेंट निष्पादित करेगा, अर्थात। लेखन ();
राइटलन('फिनिश');

आइए निम्नलिखित समस्या को हल करने के लिए एक प्रोग्राम लिखने का प्रयास करें:

आपको एक संख्या दर्ज करनी होगी (इसे 3,000,000 से कम होने दें) और इसमें अंकों की संख्या निर्धारित करें।

समाधान विचार


आइए किसी संख्या के अंकों का काउंटर शुरू करें। प्रारंभ में, काउंटर 0 है। हमें केवल संख्या से अंतिम अंक को क्रमिक रूप से काटने की आवश्यकता है (यह संख्या को 10 गुना कम करके, 10 से पूर्णांक विभाजन का उपयोग करके किया जा सकता है), और हर बार हमें काउंटर को बढ़ाने की आवश्यकता होती है 1. 
नतीजतन, जब हम सभी अंकों को काट देते हैं, तो काउंटर में हमें अंकों की संख्या मिल जाएगी।
दूसरे तरीके से, एल्गोरिथ्म को निम्नानुसार तैयार किया जा सकता है:
जब तक संख्या शून्य न हो जाए, इसे 10 गुना घटाएं और काउंटर को 1 से बढ़ाएं। <तालिका संरेखण = "केंद्र" सीमा = "1" सेलपैडिंग = "1" सेलस्पेसिंग = "1"> <सिर>
संख्या (n)
123 0
12 1
1 2
0 3

कार्य

प्रोग्राम का इनपुट डेटा स्ट्रीम है — पूर्णांकों का एक क्रम जो शून्य में समाप्त होता है (शून्य अनुक्रम में शामिल नहीं है)। आपको इस अनुक्रम के तत्वों का योग खोजने की आवश्यकता है।
 
एल्गोरिद्म हल करना
<पूर्व> योग = 0 इनपुट एक्स // पहला नंबर दर्ज करें जबकि x != 0 // इनपुट एंड साइन स्थिति में सेट है,  एनसी // यानी जब तक आप शून्य दर्ज नहीं करते    sum = sum + x // आप मूल संख्या के साथ कुछ कर सकते हैं। // आप कुछ शर्त आदि के लिए एक नंबर चेक जोड़ सकते हैं।    इनपुट x // अगला नंबर दर्ज करें के.टी.एस. प्रिंट राशि // परिणाम आउटपुट