VBScript วนซ้ำ: ทำในขณะที่ ทำจนกระทั่ง ในขณะที่ สำหรับแต่ละ (ตัวอย่าง)

เหตุใดจึงใช้ Loops ใน VBScript

ลูปใช้เพื่อดำเนินการบล็อกโค้ดเดียวกันซ้ำแล้วซ้ำอีก มีคำสั่งวนซ้ำ VBScript จำนวนมาก คำสั่งวนซ้ำ VBScript บางส่วนได้แก่ Do While, Do Until, For…..Next และอื่นๆ แล้วคุณจะตัดสินใจได้อย่างไรว่าจะใช้คำสั่ง looping ใดให้ตรงกับความต้องการของคุณ?

ขณะดำเนินการลูป คุณอาจทราบหรือไม่ทราบจำนวนครั้งที่คุณต้องการดำเนินการชุดคำสั่ง ตัวอย่างเช่น คุณต้องการคำนวณผลรวมของตัวเลขสองตัวสิบครั้ง ในกรณีนี้ คุณทราบอยู่แล้วว่าคุณต้องการทำซ้ำบล็อกของโค้ด 10 ครั้ง สมมติว่า คุณต้องการคำนวณผลรวมของตัวเลขสองตัวจนกว่าตัวแปรตัวใดตัวหนึ่งจะกลายเป็นจริง ในกรณีนี้ คุณไม่ทราบว่าต้องดำเนินการลูปกี่ครั้ง ดังนั้น ขึ้นอยู่กับว่าคุณทราบหรือไม่ทราบจำนวนครั้งที่ดำเนินการ คุณสามารถใช้คำสั่งวนซ้ำประเภทต่างๆ ได้

สำหรับ...คำสั่งวนรอบถัดไปจะใช้ถ้าคุณต้องการทำซ้ำบล็อกของโค้ดในจำนวนจำกัด ซึ่งถ้าคุณทราบจำนวนครั้งถ้าคุณต้องการทำซ้ำบล็อกของโค้ด

คำสั่ง Do While และ Do Until looping ถูกใช้เมื่อคุณต้องการทำซ้ำบล็อกของโค้ดจนกว่าเงื่อนไขจะกลายเป็นจริงหรือเท็จ นั่นคือเมื่อคุณไม่ทราบจำนวนครั้งที่คุณต้องการดำเนินการบล็อกของโค้ด

ลองมาดูที่คำสั่งวนซ้ำเหล่านี้ทีละรายการ

VBScript ทำในขณะที่วนซ้ำ

หากคุณไม่ทราบจำนวนครั้งที่คุณต้องดำเนินการบล็อกโค้ด คุณจะต้องใช้ลูป Do While ตัวอย่างเช่น คุณต้องการแสดงข้อความ “ยินดีต้อนรับ” ในขณะที่ค่าของตัวแปร x น้อยกว่า 5 ในกรณีนี้ จะใช้ลูป Do While

<script type="text/vbscript">
Dim x
x=1
Do While x<5
document.write("Welcome.")
x=x+1
Loop
</script>

หากคุณลองรันโค้ด คุณจะได้ผลลัพธ์ดังนี้:

VBScript ทำในขณะที่วนซ้ำ

บล็อกจะถูกดำเนินการสี่ครั้ง (เมื่อ x=1,2,3 และ 4) และการวนซ้ำจะสิ้นสุดเมื่อค่าของ x กลายเป็น 5 หากคุณลืมคำสั่ง x=x+1 การวนซ้ำของคุณจะกลายเป็นการวนซ้ำที่ไม่มีวันสิ้นสุด หนึ่ง. ลูปประเภทนี้เรียกว่า ลูปอนันต์- การวนซ้ำไม่สิ้นสุดอาจทำให้ระบบของคุณเสียหายได้ ดังนั้น ขณะใช้คำสั่ง Do While looping คุณควรตรวจสอบให้แน่ใจว่ามีโค้ดบางตัวที่จะทำให้เงื่อนไขการวนลูปเป็นจริง ณ จุดใดจุดหนึ่ง

หากคุณกำหนดค่า 7 ให้กับตัวแปร x ที่จุดเริ่มต้น บล็อกโค้ดจะไม่ถูกดำเนินการแม้แต่ครั้งเดียว สมมติว่าคุณต้องการรันบล็อกโค้ดอย่างน้อยหนึ่งครั้งโดยไม่คำนึงถึงเงื่อนไข จากนั้นคุณสามารถใช้ลูป Do While ได้ เปลี่ยนรหัสดังนี้:

ตัวอย่าง VBScript:

<script type="text/vbscript">
Dim x
x=7
Do 
document.write("Welcome.")
x=x+1
Loop While x<5
</script>

หากคุณรันโค้ดนี้ คุณจะได้รับข้อความ "ยินดีต้อนรับ" เพียงครั้งเดียว ในที่นี้เงื่อนไขจะถูกตรวจสอบหลังจากดำเนินการวนซ้ำเพียงครั้งเดียวเท่านั้น

VBScript ทำจนกระทั่งวนซ้ำ

ลูป 'Do Until' ยังใช้เมื่อคุณไม่ทราบจำนวนครั้งที่คุณต้องรันบล็อกโค้ด บล็อกแรกของโค้ดใน Do Until loop (Do While x<5) เทียบเท่ากับบล็อกโค้ดที่ระบุด้านล่าง

<script type="text/vbscript">
Dim x
x=1
Do Until x=5
document.write("Welcome.")
x=x+1
Loop
</script>

สิ่งนี้จะให้ผลลัพธ์เดียวกันกับบล็อกแรกของโค้ดในลูป Do While คุณจะเห็นข้อความต้อนรับสี่ครั้ง คล้ายกับ Do …..Loop While เราก็ต้องทำ…Loop Until เช่นกัน

หากคุณต้องการออกจากลูป Do While หรือ Do Until ระหว่างนั้น คุณสามารถใช้คำสั่ง Exit Do ได้ สมมติว่าคุณต้องการออกจากบล็อกเมื่อค่าของ x กลายเป็น 3 ในโปรแกรมข้างต้น คุณจะต้องเขียนโค้ดดังนี้:

<script type="text/vbscript">
Dim x
x=1
Do Until x=5
If x=3 Then Exit Do
document.write("Welcome.")
x=x+1
Loop
</script>

หากคุณรันโค้ด ผลลัพธ์ของคุณจะมีลักษณะดังนี้:

VBScript ทำจนกระทั่งวนซ้ำ

ที่นี่การวนซ้ำจะออกจากเมื่อค่า x กลายเป็น 3

VBScript ในขณะที่วนซ้ำ

While…Wend loop คล้ายกับ Do While loop แม้ว่าจะไม่ได้ใช้กันทั่วไปก็ตาม เนื่องจาก Do While มีโครงสร้างมากกว่า While…..Wend loop โปรแกรมเมอร์มักจะใช้คำสั่ง Do While

<script type="text/vbscript">
Dim x
x = 1   
While x < 5   
document.write("Welcome.")
x=x+1
Wend  
</script>	

ผลลัพธ์ที่ได้จะเป็น

VBScript ในขณะที่วนซ้ำ

VBScript สำหรับวงถัดไป

ลูป For-Next สามารถใช้เพื่อดำเนินการบล็อกโค้ดตามจำนวนครั้งที่ระบุ “VBScript For loop” ระบุตัวแปรตัวนับและค่าเริ่มต้นและสิ้นสุด คำสั่ง Next จะเพิ่มตัวแปรตัวนับทีละตัว

For i = 1 To 5
  document.write("The number is " & i & "
")
Next

หากคุณรันโค้ดคุณจะได้ผลลัพธ์ดังนี้:

VBScript สำหรับวงถัดไป

VBScript สำหรับขั้นตอนถัดไปวนซ้ำ

ตามค่าเริ่มต้น ตัวแปรตัวนับจะเพิ่มขึ้นทีละหนึ่ง หากคุณต้องการเพิ่มหรือลดตัวแปรตัวนับตามค่าที่คุณระบุ คุณสามารถใช้ For….Step….Next loop สมมติว่าในโค้ดด้านบน คุณต้องการเพิ่มตัวนับ 2 จากนั้นแก้ไขโค้ดของคุณดังนี้:

For i = 1 To 5 Step 2
  document.write("The number is " & i & "<br />")
Next
</script>

ผลลัพธ์ของรหัสนี้จะเป็น:

VBScript สำหรับขั้นตอนถัดไปวนซ้ำ

หากคุณต้องการออกจากลูป For Next หรือ For Step Next ในระหว่างนั้น คุณสามารถใช้ Exit สำหรับคำสั่งได้ สมมติว่าคุณต้องการออกจากบล็อกเมื่อค่าของ i กลายเป็น 3 ในโปรแกรมข้างต้น คุณจะต้องเขียนโค้ดดังนี้:

<script type="text/vbscript">
For i = 1 To 5 Step 2
  If i=3 Then Exit For
  document.write("The number is " & i & "<br />")
Next
</script>

การส่งออกจะได้รับ:

VBScript สำหรับขั้นตอนถัดไปวนซ้ำ

VBScript สำหรับแต่ละวงถัดไป

หากคุณต้องการทำซ้ำบล็อกโค้ดสำหรับแต่ละรายการในคอลเลกชันหรือสำหรับแต่ละองค์ประกอบของอาร์เรย์ VBS คุณจะต้องใช้ For…Each…Next loop

<script type="text/vbscript">
Dim students(4)
students(0)="John"
students(1)="Hanah"
students(2)="Sarah"
students(3)="Kevin"
students(4)="Emma"

For Each x In students
  document.write(x & "<br />")
Next
</script>

ผลลัพธ์ของรหัสที่ระบุข้างต้นจะเป็น

VBScript สำหรับแต่ละวงถัดไป

ตัวอย่างรหัส

<html>
<head>

<script type="text/vbscript">
Dim name, length
name = InputBox("Enter your name")
length = Len(name)’Gives length of the input string

For i = 1 To length
  txt = Mid(name,i,1)'Returns a specified number of characters from a string, the first parameter is the string, second parameter is the starting position and third parameter is the number of characters to return
  If txt="a" or txt="A" or txt="e" or txt="E" or txt="i" or txt="I" or txt="o" or txt="O" or txt="u" or txt="U" Then 
  counter = counter+1
  End If
Next
document.write("Hi " & name & "!!!Your name contains " & counter & " vowels.")
</script>

</head>
<body>

</body>
</html>

บันทึกไฟล์เป็น loop.html ในตำแหน่งที่คุณต้องการ จากนั้นเปิดไฟล์ใน Internet Explorer แล้วคุณจะเห็นกล่องข้อความขอให้คุณป้อนชื่อของคุณ ป้อนชื่อ เช่น Aaron เช่นนี้:

VBScript สำหรับแต่ละวงถัดไป

คลิกตกลงและผลลัพธ์ของคุณจะมีลักษณะดังนี้:

VBScript สำหรับแต่ละวงถัดไป

สรุป

  • คำสั่งวนซ้ำใช้เพื่อดำเนินการบล็อกโค้ดเดียวกันซ้ำแล้วซ้ำอีก
  • คุณจะใช้ลูป Do-While, Do-Until และ While-Wend เมื่อคุณไม่ทราบล่วงหน้าว่าจะต้องดำเนินการบล็อกกี่ครั้ง
  • คุณจะใช้ลูป For-Next, For-Next-Step และ For-Each-Next หากคุณทราบจำนวนครั้งที่คุณต้องดำเนินการบล็อกโค้ดแล้ว

อ่านเพิ่มเติม readmore