Пример 4.4.2-1. Написать процедуры ввода/вывода, которые будут использоваться в алгоритмах разветвляющихся структур.
Тема 4.4
Программирование алгоритмов
разветвляющихся структур
Программирование на основе событий
Программные проекты, которые были рассмотрены в предыдущих темах, перед тем как выполнить какие-либо вычисления (действия), ожидали реакции пользователя приложения, и только затем обрабатывали эти действия. Эта методология известна как программирование на основе событий. При создании программного проекта, создается группа объектов, которые знают, как реагировать на попытки пользователя приложения взаимодействовать с ними, а затем команды программного проекта обрабатывают ввод с помощью процедур событий, связанных с этими объектами.
События также могут поступать из самого компьютера. Например, программа может получать уведомление о том, что получено сообщение электронной почты, или о том, что по системным часам прошел некоторый период времени. Эти события генерирует компьютер, а не пользователь. Независимо от того, как генерируется событие, VBреагирует на него, вызывая процедуру события, которая ассоциируется с объектом, распознающим это событие. До сих пор мы, в основном, имели дело с событиями Click. Однако объекты VB также могут реагировать на множество других событий.
Привязка к событиям в VB означает, что большинство вычислений, производимых программой, выполняется в процедурах событий.
Каждый объект в VB имеет предопределенный набор событий, на которые он может реагировать. Список этих событий можно увидеть, если в Имя класса в верхней части окна Редактора кодавыделить имя объекта, а затем щелкнуть на стрелке Имя метода. Необходимо отметить, что события визуально идентифицируются по пиктограмме в форме молнии, добавляемой VS к их именам. Можно написать процедуру события для любого из этих событий и, если это событие в программе произойдет, VBвыполнит процедуру события, ассоциированную с ним. Например, объект списка поддерживает более 60 событий, в том числе Click, DoubleClick, DragDrop, DragOver, GotFocus. Обычно в приложениях не потребуется писать программный код более чем для трех или четырех из этих событий, но при создании элементов интерфейса следует знать, что есть такой большой выбор.
|
|
Однако, наряду с внешними событиями по отношению к программному коду процедур пользователя, необходимо иметь программные средства для сравнения переменных, свойств и значений, а также те средства, которые в соответствии с результатом этого сравнения могут выполнить один или несколько операторов. Такими средствами в VBявляются операторы языка программирования – оператор условного перехода.
4.4.2. Средства программирования
разветвляющихся структур
|
|
Разветвляющимися алгоритмическими структурами называются такие структуры, в которых порядок выполнения блоков операторов определяется значениями логических выражений. Разветвляющийся алгоритм может состоять из нескольких ветвей, каждая из которых может содержать любую, сколь угодно сложную, алгоритмическую структуру. В процессе работы разветвляющегося алгоритма в первую очередь вычисляются логические выражения L(частным случаем логического выражения является логическая переменная или константа). Если результат вычисления логического выражения принимает значение True (Истина), то выполняется часть алгоритма, расположенная по ветви «Да», если значение – False (Ложь), то – по ветви Нет».
В VBопределен логический тип данных Boolean.Например, описание переменной L:
Dim L As Boolean |
Такая переменная Lможет иметь одно из двух значений: Trueили False.Причем при преобразовании числовых типов в логический тип значение 0 преобразуется в False,а все другие значения в 1. Например,
Dim f As Double = 6.8 L = CBool(f) 'врезультате L = True f=0 L = CBool(f) 'в результате L = False |
Логическое выражение может быть простым или сложным.
Простое логическое выражение – это два арифметических или строковых выражения, связанных операцией отношения (сравнения).
|
|
Операции отношения (сравнения) приведены в табл. 4.4.2-1.
Таблица 4.4.2-1
Операции отношения | Значение |
= | Равно |
< | Меньше, чем |
> | Больше, чем |
<= | Меньше или равно |
>= | Больше или равно |
<> | Не равно |
В таблице 4.4.2-2 приведены простые логических выражения.
Таблица 4.4.2-2
Логическое выражение | Результат |
5 < 10 | True,так как 5 меньше 10 |
5 > 10 | False,так как 5 не больше 10 |
7 <> 3 | True, так как 7 не равно 3 |
X > 45 | True, если X больше 45; в противном случае False |
TextBox1.Text="Stop" | True, если в первом текстовом поле содержится слово "Stop"; в противном случае False |
5-1 > 1+2 | True,так как первой вычисляется разность 5-1 (4), затем вычисляется сумма 1+2 (3) и наконец, проверяется условие 4 > 3,т.е. 4 больше 3 |
X >= y +z | True,если X больше или равно сумме значений переменных y и z; в противном случае False |
В отличие от арифметических операций, все операции сравнения имеют одинаковый приоритет, т.е., при наличии в логическом выражении нескольких операций сравнения проверяться условия будут в порядке их записи слева направо.
|
|
Кроме того, приоритет операций отношения ниже, чем приоритет арифметических операций, поэтому операции сравнения в табл. 4.4.2-3 выполняются после арифметических операций.
Например, выражениеNot 7<9 всегда принимает значение False, а
4 > 3 And 7 < 9принимает значение True.
В табл.4.4.2-4 приведено описание логических операций (таблица истинности). Здесь T (True)«Истина», а F (False) – «Ложь».
Разветвляющиеся алгоритмические структуры (рис. В.3-5–В.3-8) в языках программирования реализуются операторами условного перехода.
В VBдля реализации разветвляющихся алгоритмических структур используются три типа операторов: однострочный If, блочный Ifи оператор выбора SelectCase.
Таблица 4.4.2-3
Логические операции | Значение |
Not | Преобразует значение Trueв Falseи наоборот – Falseв True |
And | Для того чтобы сложное условие было истинным, истинными должны быть все входящие в его состав условия |
Or | Сложное условие истинно, если истинно хотябы одно из составляющих его условий |
Xor | Для того чтобы сложное условие было истинным, истинным должно быть только одно из его составляющих |
Таблица 4.4.2-4
Значения | Not x
| X And y
| X Or y
| x Xor y
| |
X | Y | ||||
T | T | F | T | T | F |
T | F | F | F | T | T |
F | T | T | F | T | T |
F | F | T | F | F | F |
Однострочный операторIfимеет следующий формат:
IfLThenоператор(ы)[Elseоператор(ы)] |
Порядок выполнения конструкции следующий: если значение логического выражения Lравно True, то выполняется оператор (или операторы, отделенные друг от друга двоеточием), стоящий после Then, в противном случае выполняются операторы, стоящие после Else. В операторе If конструкция Else может отсутствовать (в формате она взята в квадратные скобки), такое разветвление называется усеченным.
Особенностью однострочного оператора If является то, что он должен располагаться в одной строке программы.
Приведем примеры записи однострочного оператора If:
If x > 0 Then y = Sqrt(x) Else y = 1 If d=>10Then epsilon = 0.001 If lambda < 1 Or beta = 3 Then lambda = beta : x = 0 If x < 10 Then y = 1 Else If x < 100 Then y = 2 Else y = 4 |
Если запись оператора не умещается в пределах экрана, а также при программировании вложенных разветвлений, используется многострочныйоператор (блочный оператор)If. Он имеет следующий формат:
If L1 Then [блок_операторов_1] [ElseIf L2 Then [блок_операторов_2] . . . Else [блок_операторов_n] ] End If |
Порядок и правила выполнения конструкции многострочого оператора Ifследующий:
· если значение L1равно True, то выполняется блок_операторов_1 и далее управление передается оператору, следующему после EndIf.
· если значение L1равно False, то проверяется значение следующего выражения и так далее.
· после выполнения любого блока оператора If управление передается оператору, следующему после End If.
· оператор Ifможет содержать несколько конструкций типа ElseIf.
· блок операторов, следующий за словом Else, выполняется в том случае, если последовательные проверки всех выражений выше имеют значение False.
· конструкции ElseIfи Else могут отсутствовать, что и отмечается в синтаксисе оператора квадратными скобками.
· в многострочном операторе If слово Then должно быть последним в строке, а слово Else– единственным.
· слово ElseIfзаписывается слитно, а слова End If– через пробел.
Примеры блочных операторов If:
If x>0 Then y =Sqrt(x) z=1+y p=4 End If | If x < 10 Then y=1 Else y=2 z=4 End If |
Считается хорошим тоном выделять структуру операторов отступами, как это сделано в приведенных выше примерах. Это сделает программы «читабельными», т.е. в них будет легче разобраться.
Пример 4.4.2-1. Написать процедуры ввода/вывода, которые будут использоваться в алгоритмах разветвляющихся структур.
Требуемыми процедурами являются процедуры vvodDbl1()и
ViodDbl1() ввода и вывода данных типа Double в текстовые поля, процедуры vvodSng3()и vivodSng3() ввода и вывода данных типа Single в текстовые поля и процедуры vvodInt4( ) и vivodInt4( ) ввода и вывода данных типа Integer в текстовые поля.
Процедуры vvodDbl1(), vivodDbl1(), vvodSng3() и vivodSng3() приведены в Теме 4.4.3, а процедуры vvodInt4() и vivodInt4() представлены на рис. 4.4.2-1 и 4.4.2-2.
'процедура-Function ввода данных типа Integer 'изтекстовогополя TextBox Function vvodInt4(ByVal T As TextBox) As Integer Return CInt(T.Text) End Function |
Рис. 4.4.2-1. Процедура ввода данных типаIntegerиз поляTextBox
'Процедура-Sub вывода данных типа Integer в TextBox Sub vivodInt4(ByVal Z As Integer, ByVal T As TextBox) T.Text = CStr(Z) End Sub |
Рис. 4.4.2-2. Процедура вывода данных типа Integer в TextBox
Дата добавления: 2018-05-09; просмотров: 342; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!