Алгоритмизация и программирование разветвляющихся алгоритмов
Алгоритмизация и программирование разветвляющихся алгоритмов
Разветвляющимся называется алгоритм, в котором некоторые действия (в программе операторы) могут выполняться один раз или не выполняется в зависимости от заданного условия.
Для реализации разветвляющегося алгоритма в языке VBA есть два оператора:
If – условный оператор, Select Case – оператор выбора.
Эти операторы влияют на порядок выполнения других операторов программы.
Для записи условий в операторе if используются логические выражения.
Логические выражения
Л.в. состоят из арифметических выражений, операций отношения и логических операций. Они имеют тип Boolean и могут принимать одно из двух значений: True или False.
Операции отношения (= ; <> ; < ; <= ; > ; >=) выполняют сравнение двух операндов и определяют истинно выражение (его значение true) или ложно (его значение false).
a:=5; и b:=7; a<=b – true, a a=b – false
Логические операции (not; and; or) используются для образования сложных логических выражений. Операнды логических операций должны иметь логический (булевский) тип. Приоритет логических операций ниже, чем операций отношения.
Not – логическое отрицание.
Синтаксис:
not (<логическое выражение>)
Результат операции истина, если значение операнда ложь и наоборот.
Пример: not (a
And – логическое И.
Синтаксис:
(<логическое выражение 1>) and (<логическое выражение 2>)
Результат операции истина, если оба операнда имеют значение истина, и ложь в противном случае.
Пример: (a=7) and (b>3) – false
Or – логическое ИЛИ.
Синтаксис:
<логическое выражение 1> or <логическое выражение 2>
Результат операции истина, если хотя бы один из операндов имеет значение истина, и ложь, если оба операнда имеют значение ложь.
Пример: a=7 or b>3 – true
Примеры: Записать логическое выражения, которое имеет значение true, если:
значение переменной x принадлежит полуинтервалу (a;b]
x>a and x<=b
значение переменной x находится вне полуинтервала [a;b)
x<=a or x>b
Точка с координатами (х; y) находится внутри квадрата со стороной 1 x>=0 and x<=1 and y>=0 and y<=1
Даны два числа a и b,
они оба положительные
a>0 and b>0
хотя бы одно из них положительное
a>0 or b>0
нет ни одного положительного
a<=0 and b<=0
2. Условный оператор If
Имеет две формы: полную и сокращённую.
Для записи условий используются логические выражения.
Выполнение оператора:
Если значение логического выражения, записанного в условии true, то выполняется блок операторов 1, если false – блок операторов 2.
Если значение логического выражения true, то выполняется блок операторов 1, если false –оператор никаких действий не выполняет и происходит переход к следующему за If оператору.
При записи алгоритмов на языке VBA для каждой формы можно использовать однострочную и блочную структуры
Если каждый из блоков состоит только из одного оператора, то удобнее использовать при записи оператора if однострочную структуру.
Для полной формы:
If <условие> Then < оператор1> Else < оператор2>
Для сокращенной формы:
If <условие> Then < оператор1>
Если хотя бы один из блоков содержит более одного оператора, то необходимо использовать блочную структуру.
Для полной формы:
If <условие> Then
< Блок операторов 1>
Else
< Блок операторов 2>
End If
Для сокращенной формы:
If <условие> Then
< Блок операторов1>
End If
Пример: If (x>=10) and (x<=20) Then
MsgBox (‘Значение x в интервале [10,20] ‘)
Else
MsgBox (‘Значение x вне интервале [10,20] ‘)
End If
Операторы If могут быть вложены в другие операторы If.
If <условие 1> Then
If < условие 2> Then
<Блок операторов 1>
Else
<Блок операторов 2>
End If
Else
<Блок операторов 3>
End If
Если по ветке Else каждый раз проверяется условие, то можно использовать сжатую структуру оператора If.
If <условие 1> Then
<Блок операторов 1>
Else If < условие 2> Then
<Блок операторов 2>
Else If < условие 3> Then
<Блок операторов 3>
Else
<Блок операторов 4>
End If
Пример:
Найти максимум из чисел a, b, c.
Пример 1: Вычислить значение функции и определить номер формулы, по которой она вычислялась.

Таблица используемых переменных
|
Имя переменной в задаче |
Имя переменной в программе |
Тип переменной |
Комментарий |
|
x |
x |
вещественный |
аргумент функции, исходное данное |
|
y |
y |
вещественный |
значение функции, результат |
|
n |
byte |
N формулы, результат |
Sub prim2 ( )
Dim x As Single, y As Single
Dim n As byte
x = InputBox ("Введи x", "Ввод исходных данных")
MsgBox “x=” & x , , “Ввод”
Cells(1, 2) = "Исходные данные"
Cells(2, 2) = "x=" & x
If x >=-5 And x < 1 Then
y = Sqr (Abs(x))
n = 1
Else
If x > 1 And x <> 10 Then
y = x ^ 3
n = 2
Else
y = 2 * x^2 + 1
n = 3
End If
End If
MsgBox “y=” & y & “ N формулы” & n , , “Вывод”
Cells(3, 2) = "Результаты"
Cells(4, 2) = "y=" & y
Cells(4, 3) = "N формулы=" & n
End Sub
Тесты
Для задач с разветвляющимися алгоритмами тесты должны быть в каждом интервале вычисляемой функции и в каждой точке ветвления (значение аргумента, при котором изменяется выражение для вычисления функции)
x y N формулы
-6 73 3
-5 2,… 1
0 0 1
1 3 3
2 8 2
10 201 3
11 1331 2
Вывод тестов в ячейки рабочего листа
Для того, чтобы вывести несколько тестов в разные ячейки рабочего листа, можно ввести как исходные данные номер строки и номер столбца, в которые будут выводиться результаты, и использовать эти номера при выводе.
Пример:
k = InputBox ("Введите номер строки для вывода")
……………………..
Cells(k, 1) = "x=" & x
Cells(k, 2) = "y=" & y
Cells(k, 3) = "N формулы=" & n
Пример 2. Даны числа a, b. Если a<0, то найти min (a, b), если a=0, то найти max (a, b), в противном случае каждое число увеличить на 50%.

- Алгоритмические языки
- Алгоритмическое обеспечение
- Алгоритм лечения кишечной непроходимости
- Алгоритм обработки данных с помощью метода однофакторного дисперсионного анализа (ANOVA) и критерия Н-Краскала-Уоллеса
- Алгоритм. Понятие алгоритма. Типы алгоритмических процессов
- Алгоритм по управленческим решениям
- Алгоритм проведения SWOT анализа
- Алгоритм Дейкстры
- Алгоритм Дейкстры
- Алгоритм действий при поступлении сообщения о радиационной опасности
- Алгоритм затратного метода оценки недвижимости
- Алгоритм и его свойства
- Алгоритмизация и программирование
- Алгоритмизация и программирование на языке «Pascal»”