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

 

Алгоритмы разветвляющихся структур позволяют описывать широкий класс задач:

· Вычисление значений сложных функций, зависящих от условий.

· Нахождение максимума и минимума среди нескольких переменных.

· Выбора различных путей вычислительного процессаи т.д.

 

В примерах 4.4.3-1 – 4.4.3-6 описаны алгоритмы и процедуры наиболее часто встречающихся задач, включающие базовые алгоритмы разветвляющих структур.

Ввиду сложности понимания и оформления процедур-Sub и процедур-Function необходимо сделать несколько замечаний.

Если процедура не содержит ни входных, ни выходных параметров (является автономной функционально полной функцией), то она может быть оформлена как процедура-Sub и как процедура-Function.

Если процедура содержит несколько входных параметров (с атрибутом ByVal) и несколько выходных параметров (с атрибутом ByRef), два и более, то эту процедуру следует оформлять как процедуру-Sub.

Если процедура содержит несколько входных параметров (с атрибутом ByVal) и один выходной параметр (с атрибутом ByRef), то она может быть оформлена и как процедура-Sub, и как процедура-Function.

Этими замечаниями воспользуемся при написании процедур следующих примеров.

 

Пример 4.4.3-1.Написать процедуру вычисления значения функции:

1, если x = 0;

y(x)=

Sin(x), если х > 0 или х < 0, где x – вводимое значение.

Схема алгоритма и программный код процедуры приведены на рис. 4.4.3-1. Процедуры vvodDbl2() и vivodDbl2() взяты из 4.3.4-2.

 

Function Pr431() As Double Dim x As Double Dim y As Double x = vvodDbl2("Ввод x = ",TextBox1) If x = 0 Then y = 1 Else y = Sin(x) vivodDbl2(у, " у= ",TextBox2) Return y End Function

Рис.4.4.3-1. Схема алгоритма и программный код процедуры Pr431()

проекта Пример 4.3-1

Процедура-Function Pr431()может быть вызвана, как на рис. 4.4.3-2.

 

Dim YY As Double YY=Pr431()

Рис.4.4.3-2. Пример вызова процедуры Pr431()

проектаПример 4.3-1

Function Pr433(ByVal x As Double) As Double Dim y As Double If x = 0 Then y = 1 Else y = Sin(x) Return y End Function

Рис.4.4.3-3. Схема алгоритма и программный код процедуры Pr433()
проектаПример 4.3-1

Если процедура-Functionне будет содержать ввода и вывода данных, то она будет выглядеть, как на рис. 4.4.3-3. В этом случае необходимо использование параметра функции для передачи значения x в вызываемую процедуру-Function Pr433().

Процедура-Function Pr433() может быть вызвана из любой другой процедуры или из модуля формы, например, как на рис. 4.4.3-4.

 

Dim YY, x As Double x = vvodDbl2("Ввод x=", TextBox1) YY = Pr433( x ) vivodDbl2(YY," YY", TextBox2)

 

Рис.4.4.3-4. Пример вызова процедуры Pr433()

проектаПример 4.3-1

Оформим решение примера как процедуру-Sub. Программный код процедуры-Subи соответствующее обращение к ней приведены на рис. 4.4.3-5 и рис. 4.4.3-6 соответственно. При создании процедуры типа Sub необходимо ввести еще один параметр yy, который передает в процедуру значение параметра по ссылке (ByRef), так как именно через этот параметр происходит возврат результата работы процедуры-Sub в вызывающую процедуру. Здесь xx и yy – фактические параметры, на которые заменяются формальные параметры x и y при работе (вызове) процедуры Pr435( ).

Sub Pr435(ByVal x As Double, ByRef y As Double) If x = 0 Then y = 1 Else y = Sin(x) End Sub

Рис.4.4.3-5. Схема алгоритма и программный код процедуры Pr435()
проектаПримера 4.3-1

Dim XX, YY As Double XX=vvodDbl2("Ввод x=", TextBox1) Pr435( XX, YY) vivodDbl2(YY,"Значение функции YY", TextBox2)

 

Рис. 4.4.3-6. Схема алгоритма и программный код процедуры Pr435()
проектаПример 4.3-1