Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Управление ходом выполнения программ. Примеры типовых алгоритмов
Повтор набора инструкций - Do : Loop
Цикл Do : Loop используется, если точное количество повторений действий заранее неизвестно или нужно дождаться выполнения некоторого условия. Цикл Do : Loop может выполняться бесконечно:
Do повторяющееся действие Loop
Различают 2 варианта цикла Do : Loop с завершением:
- цикл продолжает повторяться всe время, пока некоторое условие остаeтся истинным:
Do While условие инструкции Loop
- вместо условия продолжения вычислений формулируется условие его завершения:
Do Until условие инструкции Loop
Практическая работа 10. Циклы Do : Loop
Создать массивы, вычислить сумму их элементов.
10а. Do While : , Do Until
- Создать на форме 2 командные кнопки, 2 элемента управления Label, ввести код, данный ниже:
Private Sub Command1_Click() Dim sum As Integer, mas(5) As Integer, к As Integer mas(0) = 5: mas(1) = 6: mas(2) = 7: mas(3) = 6: mas(4) = 7 к = 0: sum = 0 ' здесь цикл повторяется до тех пор, пока значение ' переменной остается < 5 Do While к < 5 sum = sum + mas(к) к = к + 1 Loop lbl1.Caption = sum End Sub Private Sub Command2_Click() Dim sum As Integer, mas(5) As Integer, к As Integer mas(0) = 5: mas(1) = 6: mas(2) = 7: mas(3) = 6: mas(4) = 7 sum = 0: к = 0 Do Until к = 5 sum = sum + mas(к) к = к + 1 Loop lbl2.Caption = sum End Sub
- стартовать проект, щелчками на командных кнопках выполнить оба цикла.
Цикл Do : Loop часто применяется при считывании записей из файла:
Do While Not EOF #номер файла EOF (End of File) - признак конца файла.
Циклы Do :Loop могут управляться в конце. В примерах, данных ниже расположение условий в начале/конце циклов равноценно.
10b. Цикл Do : Loop; расположение условий в начале, конце
Создать необходимые объекты, очистить свойства Caption элементов управления Label, ввести код, cтартовать проект, выполнить оба цикла.
Private Sub Command1_Click() Dim i As Integer i = 0 Do While i < 7 lbl1.Caption = lbl1.Caption & " " & i i = i + 1 Loop End Sub Private Sub Command2_Click() Dim i As Integer i = 0 Do lbl2.Caption = lbl2.Caption & " " & i i = i+ 1 Loop While i < 7 End Sub
Условная инструкция Select Case: выбор ветви из набора условий
Использование блока Select Case позволяет принять решение при наличии нескольких условий; синтаксис:
Select Case переменная_выбора Case 1 значение 1 инструкция 1 Case 2 значение 2 инструкция 2 . ' Case Else выполняется, если не выполнено ни одно из ' предыдущих условий Case Else инструкция k End Select
Синтаксис Select Case разрешает использование условий < > =, при этом используется ключевое слово Is, пример:
Select Case people Case Is < 100000 инструкция 1 Case Is < 500000 инструкция 2 End Select
В качестве значения для Case можно указывать не одно значение, а несколько через запятую. Пример использования:
Dim A As Single A = Val(Text1.Text) Select Case A Case Is < 0: lbl1.Caption = "<0" Case Is = 0: lbl1.Caption = "0" Case Else: lbl1.Caption = ">0" End Select
Безусловный переход
Инструкция безусловного перехода - это GoTo. Безусловный переход выполняется без анализа условий. Часто используется совместно с инструкцией On Error в обработчиках ошибок, см. ниже, праkтическая работа 50.
Вызов
Вызов Call в процедуре временно передаeт управление другой процедуре, после завершения которой управление снова передаeтся той процедуре, из которой последовал вызов. Вызов процедуры может выглядеть так: Call имя_вызываемой_процедуры
при этом инструкция Call может отсутствовать. Часто требуется передавать процедуре значения параметров, необходимых для еe выполнения.
Примеры:
' процедура Sub Peter() вызывает процедуру Sub FrZeit(Zeit), ' передавая ей значение 7 для еe аргумента; после ' завершения процедуры Sub FrZeit(Zeit) управление ' ' возвращается к Sub Peter(). Далее Sub Peter() вызывает ' процедуру Sub Message(); после щелчка пользователя ' на кнопке окна, выводимого функцией MsgBox, управление ' возвращается к Sub Peter(), которая завершается. Sub Peter() FrZeit 7 Message End Sub Sub FrZeit(zeit) For i = 1 To zeit . Next End Sub Sub Message() MsgBox "Es ist zu frueh" ' слишком рано End Sub ' два способа вызова процедуры с несколькими аргументами Sub Paul() KlPause 15, 25 Call KlPause(11, 30) End Sub Sub KlPause(zeit As Integer, Dauer As Integer) If zeit >= 12 Then Dauer = Dauer*2 End If End Sub