Использование операторов Do While и Do Until для организация цикла с защитой входа

Оператор цикла For ... Next

Простые циклические программы с оператором IF

Глава 15. Организация циклических программ в VBA

End Sub

End Sub

End Select

Селектор – переменная, значение которой до входа в оператор Select Case должно быть известно. Если это значение совпадает с 1-м установленным заранее диапазоном значений, то выполняется оператор 1 и управление передается на End Select. Если значение не совпадает, происходит сравнение со вторым диапазоном и т.д.

 
 
Способы задания установленного значения селектора: 1. Перечнем значений через запятую (например: Case 2,5,8 ...) 2. Диапазоном значений ( Case2 to 10) 3. Ключевым словом Is, справа от которого записывается оператор отношения, например, Case is < 2.

 


Запишем процедуру отклика командной кнопки CommandButton1 для решения данной задачи:

Private Sub CommandButton1_Click()

Dim x, y As Single 'Объявление типов переменных Х и Y

x = Val(InputBox(" Введите значение х ")) ' Ввод текущего значения Х

Select Case x ' Начало оператора Select Case

Case 1,3,5,6: y=sin(x)

Case 8 to 10 : y=Tan(x)

Case 15 to 20: y=Log(x)

Case is >30: y=x^2.5

Case Else: y=0 ' В остальных случаях

End Select ' Конец оператора Select

MsgBox “y=” & y

Пример 14.4. По вводимым буквам русского алфавита А, Б, Д вывести слова Одесса, Николаев, Херсон. Сделать контроль ввода.

Private Sub CommandButton2_Click()

Dim x, y As String 'Объявление типов переменных Х и Y

x = InputBox(" Введите заданный символ") 'Ввод текущей буквы

Select Case x ' Начало оператора Select Case

Case “А“: y = " Одесса "

Case “Б“ : y = " Николаев "

Case “Д“: y = " Херсон "

Case Else: MsgBox " Ошибочный ввод" ' Проверка ввода

End Select ' Конец оператора Select

MsgBox y

Пример 15.1. Составить программу для решения задачи табулирования функции у=х2 при х=xn, xk, dx т.е. параметр цикла х изменяется от xn до xk с шагом dx.

Используем простой циклический алгоритм (глава 10. рис. 10.5,а ).

Процедура отклика командной кнопки

 
 
Private Sub CommanButton1_Click Dim x, y, xn, xk, dx As Single xn=-1: xk=1: dx=0.2 x=xn 1: y=x^2 Debug.Print “ x= “; x ; “ y=”; y x=x+dx If x<=xk Then GOTO 1 End Sub

 


Алгоритм и программа могут быть представлены более компактно, если применить блок модификации и соответствующий ему оператор цикла For ..Next.

 

Предназначен для организации циклов.

Синтаксис оператора:

Forх = xn to xk [step x ]

Операторы тела цикла

Next [x]

где: x – параметр цикла (переменная);

xn, xk - начальное и конечное значение (арифметические выражения);

 

step x – шаг изменения х (по умолчанию шаг =1);

Next - конец области действия оператора цикла.

Функционирование оператора определяется из его блок – схемного представления. Полная блок – схема For ... Next (рис. 15.1). Блок — схема с блоком модификации (рис. 15.2). Выход из цикла при x>xk.

Таким образом, алгоритм и программа будет выглядеть следующим образом (рис. 15.3):

 

 

       
   
Private Sub CommanButton1_Click Dim x, y, xn, xk, dx As Single xn=-1: xk=1: dx=0.2 For x=xn to xk step dx y=x^2 Debug.Print “ x= “; x ; “ y=”; y Next x End Sub
 
 

 


Рис. 15.3. Блок – схема с защитой входа

15.3. Операторы циклов типа Do (выполнить)

Существуют два оператора Do While(пока)иDo Until(до).

С помощью этих операторов могут быть организованы два типа циклов:

1. С защитой входа в цикл (с предусловием).

2. С свободным входом в цикл (с послеусловием)

Синтаксис операторов:

Do While <ЛВ> (ложь) Do Until < ЛВ> (истина)

(истина) ( ложь)

Операторы тела цикла Операторы тела цикла