Total Pageviews

Monday, June 20, 2022

सी. शार्प में लूपिंग कथन (Looping Statements in C#)

 

लूपिंग कथन कोड के किसी भाग की बार-बार पुनरावृत्ति कराने की सुविधा प्रदान करते हैं। इनमें शर्त प्रदान करने की सुविधा होती है जिसके पूर्ण होने पर इनके अंदर का कोड संसाधित होता है। सी. शार्प में प्रयुक्त होने वाले लूपिंग कथन इस प्रकार हैं:

1.       For : इसमें लूप की बॉडी (body of loop) को तब तक संसाधित किया जाता है जब तक परीक्षण अभिव्यक्ति (test expression) का वैल्यू सत्य हो। इसके मुख्यत: तीन भाग हैं:


उदाहरण:

for (int i=0; i<=10; i++)

{

int x = i+1;

messageBox.show (x.ToString);

}

इस उदाहरण में दोनों छोटे कोष्ठकों के बीच लूप के तीनों भागों को देखा जा सकता है। प्रथम भाग में लूप को आरंभ किया गया है। इसके लिए ‘int i=0’ अभिव्यक्ति दी गई है, जिसका अर्थ है- एक int टाइप का चर ‘i' लें और इसके वैल्यू को ‘0’ मान लें। हम इसे कितना भी मान सकते हैं। दूसरे भाग में ‘i' के मूल्य का परीक्षण किया जाना है। अत: परीक्षण के लिए भी एक मूल्य ‘i<=10’ दिया गया है जिसका अर्थ है ‘i' का मूल्य ‘10’ से कम हो या बराबर हो। अर्थात् यह लूप तब तक चलता रहेगा जब तक ‘i' का मूल्य 10 के बराबर हो जाए या उससे कम रहे। जो आरंभ में ‘0’ है। तीसरे भाग में वृद्धि (increment) को ‘i++’ द्वारा दर्शाया गया है जिसका अर्थ है जितनी बार लूप अपने कोड को संसाधित कर ले उतनी बार ‘i’ के मूल्य में एक की वृद्धि हो जाए। इसे हम ‘i = i+1’ भी लिख सकते हैं।

लूप की बॉडी में भी एक int टाइप का चर ‘x’ लिया गया है। संसाधन के दौरान इसके मूल्य में ‘i’ के मूल्य के साथ-साथ ‘1’ जोड़ दिया जाता है। अत: यदि ‘i’ का मूल्य ‘0’ है तो इसका मूल्य ‘0+1=1’ होगा, यदि ‘i’ का मूल्य 1 है तो इसका मूल्य ‘1+1=2’ होगा, आदि। अत: इसे रन करने पर परिणाम के रूप में मैसेजबॉक्स में बारी-बारी से 1,2,3,4,5,6,7,8,9,10, 11 प्रदर्शित होगा।

For लूप की व्याख्या इस प्रकार से भी की जा सकती है:

                आरंभ         परीक्षण         वृद्धि

for (int i = 0;      i<= 10;       i = i + 1)

{

       messageBox.Show (i.ToString());         

}

या

              आरंभ             परीक्षण              वृद्धि

for (int i = 10;      i>= 1;            i = i - 1)

{

       messageBox.Show (i.ToString());         

}

इसके अतिरिक्त एक लूप के आरंभ, परीक्षण और वृद्धि में एक से अधिक चरों का भी प्रयोग किया जा सकता है:

for (int i=0; j=20; i<=10; j>=1; i++; j--)

{

int x = i+1;

messageBox.show (x.ToString());

int y = j;

messageBox.show (y.ToString());

}

इसमें दो चरों ‘i’ और ‘j’ का प्रयोग किया गया है। दोनों को अलग-अलग मूल्यों से आरंभ किया गया है। इसके अतिरिक्त दोनों के परीक्षण मूल्य भी अलग हैं। तीसरे स्थान पर एक में वृद्धि हो रही है तो दूसरे में कमी। इस प्रकार से भी लूप बनाए जाते हैं।

1.       While: इस लूप में आरंभ में ही सबसे ऊपर (top पर) परीक्षण किया जाता है:

संक्रम (Syntax):

while (text expression/condition)

{

       staement1;

       statement2;

 

       increment;

}

उदाहरण:

while (int i <= loop end )

{

x = x+i;

i++;

}

2.       Do…while: इस लूप में परीक्षण अभिव्यक्ति को अंत में दिया जाता है। अत: कोड कम से कम एक बार अवश्य रन करता है।

संक्रम (Syntax):

do

{

       statements;

 

increment;

   } while (test expression)

 

 

उदाहरण :

do

{

    x = x+i;

i++;

} while (i <= 100)

ध्यान दीजिए: उपर्युक्त दोनों लूपों में वृद्धि (increment) बॉडी में ही आ रही है। अत: इन्हें याद रखते हुए जरूर दे देना चाहिए, नहीं तो प्रोग्राम हैंग हो जाएगा।

3.       Foreach: इस लूप का प्रयोग तब किया जाता है जब किसी समूह (collection) के प्रत्येक मद को access करना हो। प्राय: इसका प्रयोग एरे, डाटाबेस और लिस्टबॉक्स के साथ काम करने पर प्रत्येक मद का बारी-बारी से प्रोग्राम में सरलतापूर्वक उपयोग करने के लिए किया जाता है।

संक्रम (Syntax):

foreach (string element in collection)

{

       Statements;

}

उदाहरण:

{

string[] arStrings;

arStrings = new strings [5];

arStrings [0] = “This”;

arStrings [1] = “is”;

arStrings [2] = “a”;

arStrings [3] = “black”;

arStrings [4] = “cow”;

foreach (string arElement in arString)

    {

   listBox1.items.add (arElement);

   }

    }

इसमें arStrings नामक एक एरे लिया गया है। इसका आकार ‘5’ घटकों तक लंबा है। इसके प्रत्येक सदस्य घटक में क्रमश: ‘this’, ‘is’, ‘a’ , ‘black’, और ‘cow’ शब्दों को रखा गया। अब प्रत्येक घटक को लिस्टबॉक्स में रखने के लिए foreach लूप का प्रयोग किया गया है।


सी.शार्प में ‘गणक’ का विकास (Developing ‘Calculator’ in C#)

     

सी.शार्प में गणकका विकास करने के लिए सर्वप्रथम आरंभ पृष्ठ पर जाएँ और ‘New Project’ पर क्लिक करें। अब New Project विंडो में Application Name में प्रोजेक्ट का नाम ‘Calculator’ रखिए। इसके बाद Location के आगे प्रोजेक्ट को संग्रहीत करने का स्थान निर्दिष्ट कर OK बटन को क्लिक करें। अब कार्य विंडो खुल जाएगी। इसमें टूलबॉक्स से निम्नलिखित कंट्रोलों को फॉर्म पर लाना है:

Ø  एक टेक्स्टबॉक्स

Ø  17 बटन कंट्रोल

अब इन्हें एक गणक में पाए जाने वाले बटनों की तरह व्यवस्थित करें जिससे कि ये इस प्रकार दिखने लगेंगे :

      

प्रापर्टी परिवर्तित करना :

1.       Text Property: अब इन बटनों की text प्रापर्टी में संख्याओं और गणितीय संचालकों को अंकित करें जिससे कि यह गणक की तरह दिखने लगे :

           

2.       Backcolor : इसे क्लिक करके अपनी पसंद के किसी के किसी पृष्ठ रंग का चयन करें; जैसे: इस प्रोग्राम में फॉर्म के पृष्ठ रंग के लिए ‘ActiveCaption’ का चयन किया गया है। संख्यात्मक बटनों के पृष्ठ रंग के लिए ‘GreyText’ और अन्य बटनों के लिए ‘ControlLight’ का चयन किया गया है।

3.       Font : सबको एक साथ सलेक्ट करके फॉन्ट Style को ‘Bold’ और Size को ‘12’ करें। अब फॉर्म इस प्रकार दिखना चाहिए :


 

4.       Name Property: सभी संख्यात्मक बटनों को क्रमश: b1, b2, b3….b9 और b0 नाम दें। इसके बाद अन्य बटनों का नाम bPlus, bMinus, bMulti, bDevide, bDot, bClear और bResult रखें। इसमें ‘b’ ‘button’ का संक्षिप्त रूप है जिससे कि इन्हें हम कोड में आसानीपूर्वक पहचान सकेंगे। टेक्स्टबॉक्स का नाम calTb (calculation textbox) रखें।

कोडिंग :

1.       संख्यात्मक मूल्य वाले बटनों की कोडिंग : यहाँ पर संख्यात्मक मूल्य वाले बटनों की कोडिंग करते हुए हमें यह ध्यान रखना चाहिए कि इसे क्लिक करने के परिणामस्वरूप क्या होना चाहिए? यहाँ पर केवल इतना करना है कि किसी भी संख्यात्मक बटन को क्लिक करते ही उस पर अंकित पाठ (text, जैसे: 1, 2, 3.... आदि) टेक्स्टबॉक्स में आ जाए। किंतु टेक्स्टबॉक्स में पहले से उपलब्ध संख्या भी उसमें रहनी चाहिए। अब हमें यह याद रखना चाहिए कि टेक्स्टबॉक्स में केवल text टाइप के वैल्यू ही रहते हैं, जिन्हें तकनीकी रूप से string कहा जाता है। अब इनके साथ बटनों के ऊपर अंकित text जोड़ने के लिए string concatenation संचालक (+) का प्रयोग करना होगा। यहाँ पर यह गणितीय योजक की तरह संख्याओं को जोड़ने का कार्य नहीं बल्कि वर्णों के आगे वर्ण जोड़ने का कार्य करता है; जैसे: ram + a =rama, इसी प्रकार 12 + 3 = 123 होगा। अत: प्रत्येक संख्यात्मक बटन double click करके उनकी कोडिंग इस प्रकार करें:

         private void b1_Click(object sender, EventArgs e)

        {

            calTb.Text += b1.Text;

        }

        private void b2_Click(object sender, EventArgs e)

        {

            calTb.Text += b2.Text;

        }

        private void b3_Click(object sender, EventArgs e)

        {

            calTb.Text += b3.Text;

        }

        private void b4_Click(object sender, EventArgs e)

        {

            calTb.Text += b4.Text;

        }

        private void b5_Click(object sender, EventArgs e)

        {

            calTb.Text += b5.Text;

        }

        private void b6_Click(object sender, EventArgs e)

        {

            calTb.Text += b6.Text;

        }

 

        private void b7_Click(object sender, EventArgs e)

        {

            calTb.Text += b7.Text;

        }

        private void b8_Click(object sender, EventArgs e)

        {

            calTb.Text += b8.Text;

        }

        private void b9_Click(object sender, EventArgs e)

        {

            calTb.Text += b9.Text;

        }

        private void b0_Click(object sender, EventArgs e)

        {

            calTb.Text += b0.Text;

        }

        private void bDot_Click(object sender, EventArgs e)

        {

            calTb.Text += bDot.Text;

      }

2.       Clear बटन : इसको दबाने पर टेक्स्टबॉक्स खाली हो जाना चाहिए। इसलिए इसकी कोडिंग इस प्रकार करें :

        private void bClear_Click(object sender, EventArgs e)

        {

            calTb.Clear();

        }

3.       गणना बटन (+, -, *, /): इनको क्लिक करने पर टेक्स्टबॉक्स में आई संख्या को प्रथम चर (variable) में चली जानी चाहिए और इसके बाद हमें यह भी पता चलना चाहिए कि किस बटन को दबाया गया है। अत: सर्वप्रथम हमें तीन चरों को declare करना होगा। जो double[1] टाइप के होंगे। इनके अतिरिक्त एक string टाइप का चर लेंगे जो यह सूचित करेगा कि किस बटन को दबाया गया है। इन चरों को किसी भी बटन के मझोले कोष्ठकों के अंदर declare नहीं कर सकते हैं क्योंकि इनका उपयोग एक से अधिक बटनों द्वारा किया जाना है। अत: सर्वप्रथम कर्सर को private void bPlus_Click(object sender, EventArgs e) के पहले लाकर इंटर दबाएं जिससे कि यह एक पंक्ति नीचे आ जाए। अब ऊपर की पंक्ति में तीन double चर और एक string चर declare करके इन बटनों में इस प्रकार कोड करें :

        double frstNo, scndNo, rsltNo;

        string btnPressed;

        private void bPlus_Click(object sender, EventArgs e)

        {

            btnPressed = bPlus.Text;

            frstNo =double.Parse(calTb.Text);

            calTb.Clear();

        }

        private void bMinus_Click(object sender, EventArgs e)

        {

            btnPressed = bMinus.Text;

            frstNo = double.Parse(calTb.Text);

            calTb.Clear();

        }

        private void bMulti_Click(object sender, EventArgs e)

        {

            btnPressed = bMulti.Text;

            frstNo = double.Parse(calTb.Text);

            calTb.Clear();

        }

        private void bDevide_Click(object sender, EventArgs e)

        {

            btnPressed = bDevide.Text;

            frstNo = double.Parse(calTb.Text);

            calTb.Clear();

        }

इनमें चरों का declaration इस प्रकार दिखना चाहिए :

  

प्रत्येक बटन को क्लिक करते ही पहली संख्या पहले चर में चले जाने के अलावा टेक्स्टबॉक्स खाली भी हो जाना चाहिए क्योंकि तभी दूसरी संख्या डाली जा सकती है। अत: टेक्स्टबॉक्स को खाली करने के लिए प्रत्येक बटन के कोड में ‘calTb.Clear()’ मेथड का प्रयोग किया गया है।

4.       परिणाम बटन (=): इसको क्लिक करते ही दूसरी संख्या दूसरे चर में चली जानी चाहिए। अत: सर्वप्रथम दूसरे चर को वैल्यू assign करने का कोड लिखेंगे :

            scndNo = double.Parse(calTb.Text);

इसके बाद यह देखा जाएगा कि किस बटन को क्लिक किया गया है? इसके लिए conditional संचालकों का प्रयोग किया जाएगा। और जैसा कि ऊपर बताया जा चुका है कि क्लिक किए गए बटन को पहचानने के लिए ‘btnPressed’ चर को प्रत्येक बटन में वैल्यू दिया गया है जो बटन के टेक्स्ट (+, -,*,/) में से कोई एक होगा। अत: ‘if…else if’ का प्रयोग करके इसका परीक्षण किया जाना है। इसके बाद जो वैल्यू सत्य हो उसके अंदर लिखे गए कथन के अनुसार गणना की जाएगी। अत: इसकी कोडिंग इस प्रकार की जाएगी :

अब प्रोग्राम को रन करके बटनों को क्लिक कर वैल्यू डालें फिर आवश्यक गणना का कार्य करें क्योंकि आपका गणक तैयार हो चुका है।



[1]  यहाँ double इसलिए दिया गया है क्योंकि इनपुट के रूप में दी गई संख्याएँ दशमलव से युक्त भी हो सकती हैं।