Опубликован: 04.07.2006 | Доступ: свободный | Студентов: 5582 / 686 | Оценка: 4.11 / 3.96 | Длительность: 11:08:00
Лекция 2:

Управление ходом выполнения программ. Примеры типовых алгоритмов

Повтор набора инструкций - 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

  1. Создать на форме 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
  2. стартовать проект, щелчками на командных кнопках выполнить оба цикла.

Цикл 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
Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова