Средства программирования разветвляющихся структур

Тема 4.4

Алгоритмы разветвляющихся структур

 

Программирование на основе событий

Средства программирования разветвляющихся структур

 

Базовые алгоритмы разветвляющихся структур и примеры их программирование

Тестовые задания

 

4.4.5. Лабораторная работа по теме «Программирование алгоритмов разветвляющихся структур»

 

Вопросы, подлежащие изучению

Общее задание на разработку проекта

Варианты индивидуальных заданий

 

Программирование на основе событий

 

Программные проекты, которые были рассмотрены в предыдущих темах, перед тем как выполнить какие-либо вычисления (действия), ожидали реакции пользователя приложения, и только затем обра­батывали эти действия. Эта методология известна как программирование на основе событий. При создании программного проекта, со­здается группа объектов, которые знают, как реагировать на попытки пользователя приложения взаимодействовать с ними, а затем команды программного проекта обрабатывают ввод с помощью процедур событий, связанных с этими объектами.

События также могут поступать из самого компьютера. Напри­мер, программа может получать уведомление о том, что получено сооб­щение электронной почты, или о том, что по системным часам прошел некоторый период времени. Эти события генерирует компьютер, а не пользователь. Независимо от того, как генерируется событие, VBреагирует на него, вызывая процедуру события, которая ассоциируется с объектом, распознающим это событие. До сих пор мы, в основном, имели дело с событиями Click. Одна­ко объекты VB также могут реагировать на множество других событий.

Привязка к событиям в VB означает, что большинство вы­числений, производимых программой, выполняется в процедурах собы­тий.

Каждый объект в VB имеет предопределенный набор событий, на кото­рые он может реагировать. Список этих событий можно увидеть, если в Имя класса в верхней части окна Редактора кодавыделить имя объекта, а за­тем щелкнуть на стрелке Имя метода. Необходимо отметить, что события визуально иден­тифицируются по пиктограмме в форме молнии, добавляемой VS к их именам. Можно написать процедуру события для любого из этих событий и, если это событие в программе произойдет, VBвыполнит процедуру со­бытия, ассоциированную с ним. Например, объект списка поддерживает более 60 событий, в том числе Click, DoubleClick, DragDrop, DragOver, GotFocus. Обычно в приложениях не потребуется писать программный код более чем для трех или четырех из этих событий, но при создании элементов ин­терфейса следует знать, что есть такой большой выбор.

Однако, наряду с внешними событиями по отношению к программному коду процедур пользователя, необходимо иметь программные средства для сравнения переменных, свойств и значений, а также те средства, которые в соот­ветствии с результатом этого сравнения могут выполнить один или несколько операторов. Такими средствами в VBявляются операторы языка программирования – оператор условного перехода.

Средства программирования разветвляющихся структур

Разветвляющимися алгоритмическими струк­турами называются такие структуры, в которых порядок выполнения блоков операторов определяется значе­ниями логических выражений. Разветвляющийся алгоритм может состоять из нескольких ветвей, каждая из которых может содержать любую, сколь угодно сложную, алгоритми­ческую структуру. В процессе работы разветвляющегося алгоритма в первую очередь вычисляются логиче­ские выражения 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 и оператор выбора Select Case.

 

Таблица 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 имеет следующий формат:

 

If L Then оператор(ы) [Else оператор(ы)]

 

Порядок выполнения конструкции следующий: если значение логического выражения L равно True, то выполняется оператор (или операторы, отделенные друг от друга двоеточием), стоящий после Then, в противном случае выполняются операторы, стоящие после Else. В операторе If конструкция Else может от­сутствовать (в формате она взята в квадрат­ные скобки), такое разветвление называется усеченным.

Особенностью однострочного оператора If является то, что он должен располагаться в одной строке программы.

Приведем примеры записи однострочного оператора If:

 

If x > 0 Then y = Sqrt(x) Else y = 1 If d=>10 Then 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 и далее управление передается оператору, следующему после End If.

· если значение 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