Цикли на VBScript: Do While, Do Until, While, For Every (Пример)

Защо Loops се използват във VBScript?

Циклите се използват за изпълнение на същия блок код отново и отново. Има редица VBScript оператори за цикъл. Някои от инструкциите за цикъл на VBScript са Do While, Do Until, For…..Next и т.н. И така, как ще решите кой оператор за цикъл да използвате за вашите нужди?

Докато изпълнявате циклите, може или може да не сте наясно колко пъти искате да изпълните набор от инструкции. Например искате да изчислите сумата от две числа десет пъти. В този случай вече знаете, че искате да повторите блок от код 10 пъти. Да предположим, че искате да изчислите сумата от две числа, докато определена променлива стане вярна. Тук не знаете колко пъти трябва да се изпълни цикълът. Така че в зависимост от това дали знаете или не броя на изпълненията, можете да използвате различни типове оператори за цикъл.

For…Next операторите за цикъл се използват, ако искате да повторите блок от код краен брой пъти, ако знаете броя пъти, ако искате да повторите блока от код.

Операциите за цикъл Do While и Do Until се използват, когато искате да повторите блок от код, докато дадено условие стане вярно или невярно, т.е. когато не знаете колко пъти искате да изпълните блока от код.

Нека да разгледаме тези зациклящи изрази един по един.

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, трябва да се уверите, че има някакъв код, който ще направи условието за цикъл вярно в един или друг момент.

Ако присвоите стойност 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 Loop

Цикълът „Do Until“ също се използва, когато не знаете колко време трябва да изпълните блок от код. Първият блок от код в Do Until цикъл (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, ние също трябва да Do…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 Do Until Loop

Тук цикълът излиза, когато стойността на x стане 3.

VBScript Докато цикъл

Цикълът While...Wend е подобен на цикъла Do While, но не се използва често. Тъй като Do While е по-структуриран от цикъла While…..Wend, програмистите обикновено използват изрази 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“ указва променливата на брояча и нейните начална и крайна стойност. Операторът Next увеличава променливата на брояча с единица.

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

Ако изпълните кода, ще получите резултата по следния начин:

VBScript за следващ цикъл

VBScript For-Step-Next Loop

По подразбиране променливата на брояча се увеличава с единица. Ако искате да увеличите или намалите променливата на брояча със стойността, която сте посочили, тогава можете да използвате For….Step….Next цикъл. Да предположим, че в горния код искате да увеличите брояча с 2, след което променете кода си по следния начин:

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

Резултатът от този код ще бъде:

VBScript For-Step-Next Loop

Ако искате да излезете от цикъл 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 For-Step-Next Loop

VBScript за всеки следващ цикъл

Ако искате да повторите блок от код за всеки елемент в колекция или за всеки елемент от VBS масив, тогава трябва да използвате For…Each…Next цикъл.

<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 и ще получите поле с молба да въведете вашето име. Въведете име, кажете Аарон, като това:

VBScript за всеки следващ цикъл

Щракнете върху OK и изходът ви ще изглежда така:

VBScript за всеки следващ цикъл

Oбобщение

  • Изявленията за цикъл се използват за изпълнение на един и същ блок код отново и отново.
  • Ще използвате Do-While, Do-Until и While-Wend цикли, когато не знаете предварително колко пъти трябва да се изпълни блокът.
  • Ще използвате цикли For-Next, For-Next-Step и For-Each-Next, ако вече знаете колко пъти трябва да изпълните блока от код.