खोज…


अगले के लिए

For ... Next लूप का उपयोग परिमित संख्या के लिए एक ही क्रिया को दोहराने के लिए किया जाता है। निम्नलिखित लूप के अंदर बयानों को 11 बार निष्पादित किया जाएगा। पहली बार, i पास मान 0 होगा, दूसरी बार इसका मान 1 होगा, पिछली बार इसका मान 10 होगा।

For i As Integer = 0 To 10
    'Execute the action
    Console.Writeline(i.ToString)
Next

किसी भी पूर्णांक अभिव्यक्ति का उपयोग लूप को पैरामीटर करने के लिए किया जा सकता है। यह अनुमति है, लेकिन आवश्यक नहीं है, नियंत्रण चर (इस मामले में i ) के लिए भी Next बाद कहा जा सकता है। के लिए नियंत्रण चर बल्कि भीतर से पहले से घोषित किया जाना है, यह अनुमति दी है For बयान।

Dim StartIndex As Integer = 3
Dim EndIndex As Integer = 7
Dim i As Integer

For i = StartIndex To EndIndex - 1
    'Execute the action
    Console.Writeline(i.ToString)
Next i

स्टार्ट एंड एंड पूर्णांक को परिभाषित करने में सक्षम होने के कारण लूप्स को बनाने की अनुमति मिलती है जो सीधे अन्य वस्तुओं को संदर्भित करते हैं, जैसे:

For i = 0 to DataGridView1.Rows.Count - 1
    Console.Writeline(DataGridView1.Rows(i).Cells(0).Value.ToString)
Next

यह तब DataGridView1 में हर पंक्ति के माध्यम से लूप करेगा और कंसोल के लिए कॉलम 1 का मान लिखने की क्रिया करेगा। (-1, क्योंकि गिने पंक्तियों की पहली पंक्ति 1 होगी, 0 नहीं)

यह भी परिभाषित करना संभव है कि नियंत्रण चर को कैसे बढ़ाना चाहिए।

For i As Integer = 1 To 10 Step 2
    Console.Writeline(i.ToString)
Next 

यह आउटपुट:

१ ३ ५ 9 ९

नियंत्रण चर (गिनती नीचे) को घटाना भी संभव है।

For i As Integer = 10 To 1 Step -1
    Console.Writeline(i.ToString)
Next

यह आउटपुट:

१० ९ 5 7 ६ ५ ४ ३ २ १

आपको लूप के बाहर नियंत्रण चर का उपयोग (पढ़ने या अपडेट) करने का प्रयास नहीं करना चाहिए।

प्रत्येक के लिए ... आइटम के संग्रह के माध्यम से पाशन के लिए अगला लूप

आप For Each...Next उपयोग कर सकते हैं For Each...Next किसी भी IEnumerable प्रकार के माध्यम से पुनरावृति करने के लिए For Each...Next लूप। इसमें सरणियाँ, सूचियाँ, और कुछ भी शामिल हो सकता है जो IEnumerable प्रकार का हो या एक IEnumerable देता है।

DataTable की पंक्तियों की संपत्ति के माध्यम से लूपिंग का एक उदाहरण इस तरह दिखेगा:

For Each row As DataRow In DataTable1.Rows
    'Each time this loops, row will be the next item out of Rows
    'Here we print the first column's value from the row variable.
    Debug.Print(Row.Item(0))
Next 

एक महत्वपूर्ण बात यह है कि संग्रह को For Each लूप में रहते हुए संशोधित नहीं किया जाना चाहिए। ऐसा करने से एक System.InvalidOperationException संदेश के साथ होगा:

संग्रह को संशोधित किया गया था; गणना संचालन निष्पादित नहीं हो सकता है।

जबकि लूप को इट्रेट करने के लिए जबकि कुछ स्थिति सही है

एक While एक शर्त का मूल्यांकन करके पाश शुरू होता है। यदि यह सही है, तो लूप के शरीर को निष्पादित किया जाता है। लूप के शरीर के बाद क्रियान्वित किया जाता है, While हालत यह निर्धारित करने के लिए कि क्या शरीर फिर से निष्पादित फिर से मूल्यांकन किया जाता है।

Dim iteration As Integer = 1
While iteration <= 10
  Console.Writeline(iteration.ToString() & " ")

  iteration += 1
End While

यह आउटपुट:

1 2 3 4 5 6 7 8 9 10

चेतावनी: एक While पाश अनंत लूप हो सकता है। विचार करें कि क्या होगा अगर कोड की लाइन जो वेतन वृद्धि को iteration है। ऐसी स्थिति में स्थिति कभी सही नहीं होगी और लूप अनिश्चित काल तक जारी रहेगा।

करो ... लूप

Do...Loop प्रयोग Do...Loop स्टेटमेंट्स के एक ब्लॉक को दोहराने के लिए Do...Loop करें While Until कोई शर्त सही न हो, शुरुआत या लूप के अंत में स्थिति की जाँच करें।

Dim x As Integer = 0
Do
    Console.Write(x & " ")
    x += 1
Loop While x < 10

या

Dim x As Integer = 0
Do While x < 10
    Console.Write(x & " ")
    x += 1
Loop

0 1 2 3 4 5 6 7 8 9

Dim x As Integer = 0
Do
    Console.Write(x & " ")
    x += 1
Loop Until x = 10

या

Dim x As Integer = 0
Do Until x = 10
    Console.Write(x & " ")
    x += 1
Loop

0 1 2 3 4 5 6 7 8 9

Continue Do उपयोग लूप के अगले पुनरावृत्ति को छोड़ने के लिए किया जा सकता है:

Dim x As Integer = 0
Do While x < 10
    x += 1
    If x Mod 2 = 0 Then
        Continue Do
    End If
    Console.Write(x & " ")
Loop

१ ३ ५ 9 ९

आप लूप को Exit Do समाप्त कर सकते हैं - ध्यान दें कि इस उदाहरण में, किसी भी स्थिति की कमी अन्यथा अनंत लूप का कारण बनेगी:

Dim x As Integer = 0
Do
    Console.Write(x & " ")
    x += 1
    If x = 10 Then
        Exit Do
    End If
Loop

0 1 2 3 4 5 6 7 8 9

लघु सर्किटिंग

किसी भी लूप को किसी भी बिंदु पर Exit या Continue बयानों का उपयोग करके समाप्त या जारी रखा जा सकता है।

बाहर निकल रहा है

जल्दी निकलने से आप किसी भी लूप को रोक सकते हैं। ऐसा करने के लिए, आप लूप के नाम के साथ कीवर्ड Exit उपयोग कर सकते हैं।

लूप एग्जिट स्टेटमेंट
के लिये Exit For
प्रत्येक के लिए Exit For
जबकि ऐसा Exit Do
जबकि Exit While

आवेदन की जरूरतों को पूरा करने के लिए आवश्यक समय की केवल लूपिंग द्वारा प्रदर्शन को बढ़ावा देने के लिए एक लूप से जल्दी बाहर निकलना एक शानदार तरीका है। नीचे उदाहरण दिया गया है कि 2 नंबर मिलते ही लूप बाहर निकल जाएगा।

Dim Numbers As Integer() = {1,2,3,4,5}
Dim SoughtValue As Integer = 2
Dim SoughtIndex
For Each i In Numbers
    If i = 2 Then 
        SoughtIndex = i
        Exit For
    End If
Next
Debug.Print(SoughtIndex)

सतत

जल्दी बाहर निकलने के साथ, आप यह भी तय कर सकते हैं कि आपको अगले लूप पुनरावृत्ति पर जाने की आवश्यकता है। यह आसानी से Continue बयान का उपयोग करके किया जाता है। Exit तरह, यह लूप नाम से आगे बढ़ा है।

लूप जारी बयान
के लिये Continue For
प्रत्येक के लिए Continue For
जबकि ऐसा Continue Do
जबकि Continue While

यहां सम संख्याओं को योग में जोड़े जाने से रोकने का एक उदाहरण है।

Dim Numbers As Integer() = {1,2,3,4,5}
Dim SumOdd As Integer = 0
For Each i In Numbers
    If Numbers(i) \ 2 = 0 Then Continue For
    SumOdd += Numbers(i)
Next

उपयोग की सलाह

दो वैकल्पिक तकनीकें हैं जिनका उपयोग Exit या Continue बजाय किया जा सकता है।

आप एक नए बूलियन चर की घोषणा कर सकते हैं, इसे एक मूल्य से शुरू कर सकते हैं और इसे लूप के अंदर अन्य मूल्य पर सशर्त रूप से सेट कर सकते हैं; आप तो एक सशर्त बयान (जैसे का उपयोग If ) बाद पुनरावृत्तियों में पाश के अंदर बयान के बचने निष्पादन के लिए कि चर के आधार पर।

Dim Found As Boolean = False
Dim FoundIndex As Integer
For i As Integer = 0 To N - 1
    If Not Found AndAlso A(i) = SoughtValue Then
        FoundIndex = i
        Found = True
    End If
Next

इस तकनीक पर एक आपत्ति यह है कि यह अक्षम हो सकती है। उदाहरण के लिए, यदि उपर्युक्त उदाहरण में N 1000000 है और सरणी A का पहला तत्व SoughtValue बराबर है, तो लूप कुछ भी उपयोगी किए बिना 999999 बार एक और पुनरावृति करेगा। हालांकि, इस तकनीक से कुछ मामलों में अधिक स्पष्टता का लाभ हो सकता है।

लूप से बाहर निकलने के लिए आप GoTo स्टेटमेंट का उपयोग कर सकते हैं। ध्यान दें कि आप लूप में कूदने के लिए GoTo का उपयोग नहीं कर सकते हैं।

    Dim FoundIndex As Integer
    For i As Integer = 0 To N - 1
        If A(i) = SoughtValue Then
            FoundIndex = i
            GoTo Found
        End If
    Next
    Debug.Print("Not found")
Found:
    Debug.Print(FoundIndex)

यह तकनीक कभी-कभी लूप से बाहर निकलने का सबसे साफ तरीका हो सकता है और एक या एक से अधिक बयानों से बच सकता है जो लूप के प्राकृतिक अंत के तुरंत बाद निष्पादित होते हैं।

आपको सभी विकल्पों पर विचार करना चाहिए, और जो भी आपकी आवश्यकताओं को पूरा करता है, दक्षता, कोड लिखने की गति, और पठनीयता (इस प्रकार स्थिरता) पर विचार करते हुए, जो भी आपकी आवश्यकताओं को पूरा करता है, का उपयोग करें।

उन अवसरों पर GoTo का उपयोग करना बंद न करें जब यह सबसे अच्छा विकल्प है।

अंतर प्रविष्ट पाश

A nested loop is a loop within a loop, an inner loop within the body of an outer one. How this works is that the first pass of the outer loop triggers the inner loop, which executes to completion. Then the second pass of the outer loop triggers the inner loop again. This repeats until the outer loop finishes. a break within either the inner or outer loop would interrupt this process.

अगले नेस्टेड लूप के लिए संरचना है:

For counter1=startNumber to endNumber (Step increment)

    For counter2=startNumber to endNumber (Step increment)

        One or more VB statements

    Next counter2

Next  counter1

उदाहरण :

    For  firstCounter = 1 to 5

      Print “First Loop of ” + firstCounter

    For   secondCounter= 1 to 4

      Print “Second Loop of ” + secondCounter

    Next secondCounter

  Next firstCounter


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow