lr_2x

advertisement
Реализация «Разветвляющихся вычислительных процессов» средствами Excel
Постановка задачи
Разработать алгоритм для вычисления значений функции
ln x 2 , x  4
 1

8. y  e x 15 , 10  x  16
45, x  20


(разветвляющийся вычислительный процесс) и реализовать его в Excel.
Реализация задачи
В задаче требуется вычислить функцию, вид которой зависит от значения аргумента.
При разработке алгоритма будем рассматривать промежутки числовой оси слева
направо. Обозначения в алгоритме: ФНЗ – функция не задана; ФНО – функция не
определена.
Записывая основной алгоритм решения задачи, вместо вычислений каждой части
функции для упрощения будем писать блок1, блок2 и блок3. Поставим в соответствие
каждому блоку алгоритм вычисления конкретной функции с учетом её области
определения. Последний этап разработки алгоритма решения исходной задачи –
подстановка в основной алгоритм вместо блоков 1,2,3 соответствующих вычислительных
алгоритмов.
Сделаем небольшое замечание относительно записи текста алгоритма.
Рекомендуется записывать текст алгоритма «ступеньками», т.е. новый блок «если –
иначе» нужно записывать с отступом относительно предыдущего блока «если – иначе» и
т.д. Так же следует поступать и при записи текста программы, соответствующей
алгоритму. Одной из причин этого является то, что структура алгоритма и программы
хорошо просматривается, что может помочь при обнаружении синтаксических ошибок.
Основной алгоритм:
ввод х
если х<4
блок1
если x<16
если x≠15
блок2
все_если
иначе
если х<=10
"ФНЗ"
если x>20
блок3
иначе
"ФНЗ"
все_если
все_если
все_если
все_если
Рассмотрим вычисления в каждом из блоков 1, 2 и 3 отдельно.
Блок1.
Требуется вычислить функцию ln x 2 .Ограничений нет т.к. "x" стоит в
квадрате
y = lnx2
печать y
1
Блок2. Требуется вычислить функцию y  e x  15 . "x" не должен быть равен 15
если x≠15
1
y  e x  15
иначе "ФНО"
печать у
все_если
Блок3.
Требуется вычислить функцию y=45.ограничений нет
y=45
печать y
В основной алгоритм вместо блоков 1,2,3 подставим алгоритмы вычисления
соответствующих частей функции. В итоге получаем алгоритм решения исходной задачи.
ввод х
если х<4
y = lnx2
печать у
иначе
«ФНЗ»
если x<16
если x≠15
1
y  e x  15
иначе "ФНО"
все_если
печать у
если x<=10
"ФНЗ"
иначе
если x>20
y=45
печать y
иначе
"ФНЗ"
все_если
все_если
все_если
все_если
Для построения функции Excel необходимо использовать логическую функцию
ЕСЛИ(), которая устроена следующим образом.
Эта функция может в качестве аргументов использовать другие функции ЕСЛИ().
Таким образом, при условии, что в ячейке А11 будет вводиться значение переменной
х, то, например, в ячейку В11 можно ввести формулу Excel для вычисления значения
заданной функции.
КОД ДЛЯ Input Box:
Dim x, y As Single
"объявление переменных x,у как вещ
Dim ans As String
" объявление переменной ans как строки
x = CSng(InputBox("x="))
" ввести х
If x < 4 Then
"если x<4 то
y = Log(x ^ 2)
"блок 1
ans = CStr(y)
"ans = значению y
Else
" иначе
ans = "FNZ"
End If
If x >= 10 And x < 16 And x <> 15 Then
"Если x >= 10 и x<16 и x ≠15 то
y = (Exp(1)) ^ (1 / (x - 15))
"блок 2
ans = CStr(y)
"ans = значению y
Else
"иначе
ans = "FNZ"
End If
If x > 20 Then
"если x>20 то
y = 45
"блок 3
ans = CStr(y)
"ans = значению y
Else
"иначе
ans = "FNZ"
End If
"Все_если
MsgBox "y=" & CStr(y)
"вывод окна сообщения со значением у
КОД ДЛЯ RANGE :
Dim x, y As Single
Dim ans As String
x = Range("A2").Value
"Значение x брать с ячейки A2
If x < 4 Then
y = Log(x ^ 2)
ans = CStr(y)
Else
ans = "FNZ"
End If
If x >= 10 And x < 16 And x <> 15 Then
y = (Exp(1)) ^ (1 / (x - 15))
ans = CStr(y)
Else
ans = "FNZ"
End If
If x > 20 Then
y = 45
ans = CStr(y)
Else
ans = "FNZ"
End If
MsgBox "y=" & CStr(y)
КОД ДЛЯ CELLS:
Dim x, y As Single
Dim ans As String
x = Cells(4, 1).Value
"Значение x брать с ячейки с номером строки 4 и номером столбца 1
If x < 4 Then
y = Log(x ^ 2)
ans = CStr(y)
Else
ans = "FNZ"
End If
If x >= 10 And x < 16 And x <> 15 Then
y = (Exp(1)) ^ (1 / (x - 15))
ans = CStr(y)
Else
ans = "FNZ"
End If
If x > 20 Then
y = 45
ans = CStr(y)
Else
ans = "FNZ"
End If
MsgBox "y=" & CStr(y)
Download