Visual Basic. Теория. Нагина Е.К - 55 стр.

UptoLike

Составители: 

55
конце цикла гарантирует, что он будет выполнен хотя бы один раз . Во-
вторых, условие можно сделать критерием как выполнения цикла Do-
Loop, так и его завершения. Последняя возможность в цикле While-Wend
также доступна чтобы цикл выполнялся, пока не соблюдено некоторое
условие, его надо указать в структуре While с логическим оператором Not.
Рассмотрим несколько простых примеров. В программе Proc34 инст-
рукция While-Wend применялась для определения момента , когда в после -
довательности случайных чисел появлялась семерка. В Proc35 та же опе-
рация осуществляется циклом Do-Loop.
Sub Proc35_DoWileLoop ( )
Dim LotteryEntry As Integer
LotteryEntry = 0
Do While LotteryEntry <> 7
LotteryEntry = Int (10*Rnd ( ))
Beep
Loop
MsgBox Your number is & LotteryEntry &. You Win!!
End Sub
Эта программа мало отличается от примера 34: во - первых, перед
ключевым словом While появилось слово Do, во - вторых, в конце цикла
вместо Wend стоит Loop. Однако цикл Do-Loop позволяет переписать эту
процедуру еще несколькими способами. В примере 36 слово While замене-
но словом Until, а вместо оператора неравенства в сравнении LotteryEntry и
7 задан оператор равенства.
Sub Proc_DoUntilLoop ( )
Dim LotteryEntry As Integer
LotteryEntry = 0
Do Until LotteryEntry = 7
LotteryEntry = Int (10*Rnd ( ))
Beep
Loop
MsgBox Your number is & LotteryEntry &. You Win!!
End Sub
Цикл Do - Loop позволяет внести в эту процедуру еще несколько из-
менений . Например , в программе Proc37 ключевое слово Do оставлено в
начале цикла, а условие завершения и ключевое слово Until переместилось
в его конец , за ключевое слово Loop. В таком варианте цикл обязательно
выполняется хотя бы один раз , поскольку условие завершения не проверя -
ется , пока не будут выполнены все операторы из тела цикла. Поэтому
можно убрать оператор для инициализации переменной Lottery Entry.
Sub Proc37__DoLoopUntil ()
Dim LotteryEntry As Integer
Do
                                       55
ко нц е ц икла гарантирует, что о н будетвы по лнен хо тя бы о дин раз. В о -
вто ры х, усло вие мо ж но сделать критерием как вы по лнения ц икла Do-
Loop, так и ег   о заверш ения. П о следняя во змо ж но сть в ц икле While-Wend
такж е до ступна – что бы ц икл вы по лнялся, по ка не со блю дено неко то ро е
усло вие, ег о надо указать вструктуре While с ло гическим о перато ро м Not.
       Рассмо трим неско лько про сты х примеро в. В про г  рамме Proc34 инст-
рукц ия While-Wend применялась для о пределения мо мента, ко г       да в по сле-
до вательно сти случай ны х чисел по являлась семерка. В Proc35 та ж е о пе-
рац ия о сущ ествляется ц икло м Do-Loop.

Sub Proc35_DoWileLoop ( )
     Dim LotteryEntry As Integer
     LotteryEntry = 0
     Do While LotteryEntry <> 7
             LotteryEntry = Int (10*Rnd ( ))
             Beep
     Loop
     MsgBox “Your number is “& LotteryEntry &”. You Win!!”
End Sub
       Э та про грамма мало о тличается о т примера 34: во -первы х, перед
клю чевы м сло во м While по явило сь сло во Do, во -вто ры х, в ко нц е ц икла
вместо Wend сто итLoop. О днако ц икл Do-Loop по зво ляетпереписать эту
про ц едуруещ е неско лькими спо со бами. В примере 36 сло во While замене-
но сло во м Until, авместо о ператоранеравенствавсравнении LotteryEntry и
7 задан о перато рравенства.
Sub Proc_DoUntilLoop ( )
     Dim LotteryEntry As Integer
     LotteryEntry = 0
     Do Until LotteryEntry = 7
          LotteryEntry = Int (10*Rnd ( ))
          Beep
     Loop
     MsgBox “Your number is “& LotteryEntry &”. You Win!!”
End Sub
       Ц икл Do - Loop по зво ляетвнести вэтупро ц едуруещ е неско лько из-
менений . Н апример, в про г   рамме Proc37 клю чево е сло во Do о ставлено в
начале ц икла, аусло вие заверш ения и клю чево е сло во Until переместило сь
в его ко нец , за клю чево е сло во Loop. В тако м варианте ц икл о бязательно
вы по лняется хо тя бы о дин раз, по ско лькуусло вие заверш ения не про веря-
ется, по ка не будут вы по лнены все о перато ры из тела ц икла. П о это му
мо ж но убрать о перато рдля иниц иализац иипеременно й Lottery Entry.

Sub Proc37__DoLoopUntil ()
     Dim LotteryEntry As Integer
     Do