Visual Basic .NET Language
लूपिंग
खोज…
अगले के लिए
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