Реализация «Разветвляющихся вычислительных процессов» средствами 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)