Лабораторная работа по информатике Тема: «Реализация разветвляющихся вычислительных процессов средствами Excel » Выполнил Студент ФИТ ПИН 1206 Бутко Сергей СОДЕРЖАНИЕ Постановка задачи и алгоритма……………………………………………………. 2 Разбитие функций на блоки, составление алгоритма……………………….. 3 Вычисления в каждом из блоков……………………………………………………... 4 Реализация кода в VBA и в Еxcel’e…………………….…………………………..... 6 1 ЛАБОРАТОРНАЯ РАБОТА №2. РЕАЛИЗАЦИЯ РАЗВЕТВЛЯЮЩИХСЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ СРЕДСТВАМИ EXCEL. Задание: Разработать алгоритм для вычисления значений функции 1 x 3, x 5 y cos x, 15 x 20 ln 205 x , x 50 (разветвляющийся вычислительный процесс) и реализовать его в Excel. АЛГОРИТМ В задаче требуется вычислить функцию, вид которой зависит от значения аргумента. Поэтому разобьем числовую ось значениями, указанными в формуле на несколько промежутков, указав при этом, какой должен быть результат вычислений на каждом промежутке: y 1 x3 y cos x 5 ФНЗ 15 y ln 205 x 20 ФНЗ 50 ФНЗ-функция неопределенна на промежутках При разработке алгоритма будем рассматривать промежутки числовой оси слева направо. Обозначения в алгоритме: ФНЗ – функция не задана; ФНО – функция не определена. Записывая основной алгоритм решения задачи, вместо вычислений каждой части функции для упрощения будем писать блок1, блок2 и блок3. Поставим в соответствие каждому блоку алгоритм вычисления конкретной функции с учетом её области определения. Последний этап разработки 2 алгоритма решения исходной задачи – подстановка в основной алгоритм вместо блоков 1,2,3 соответствующих вычислительных алгоритмов. РАЗБИТИЕ ФУНКЦИЙ НА БЛОКИ блок 1 = 1/(x-3) блок 2 = cos x блок 3 = ln(205 – x)^0,5 СОСТАВЛЕНИЕ АЛГОРИТМА ввод х если х<5 блок1 иначе если x<15 «ФНЗ» иначе если x<20 блок2 иначе если х<=50 «ФНЗ» иначе блок3 все_если все_если все_если все_если 3 ВЫЧИСЛЕНИЯ В КАЖДОМ ИЗ БЛОКОВ Блок1. Требуется вычислить функцию y 1 . При вычислении учитываем, что знаменатель не x3 должен равняться нулю. Таким образом, получаем: если x-3 <> 0 y 1 x3 печать у иначе «ФНО» все_если Блок2. Требуется вычислить функцию y=cos x. Здесь никаких ограничений на вычисления нет. Таким образом, получаем: y = cos x печать у Блок3. Требуется вычислить функцию y ln 205 x . При вычислении учитываем, что подкоренное выражение должно быть больше или равно. Таким образом, получаем: если 205-х>=1 y ln 205 x печать у иначе «ФНО» все_если В основной алгоритм вместо блоков 1,2,3 подставим алгоритмы вычисления соответствующих частей функции. В итоге получаем алгоритм решения исходной задачи. ввод х если х<5 4 если x-3<>0 y 1 x3 печать у иначе «ФНО» все_если иначе если x<15 «ФНЗ» иначе если x<20 y cos x печать у иначе если х<=50 «ФНЗ» иначе если 205-х>=1 y ln 205 x печать у иначе «ФНО» все_если все_если все_если все_если все_если 5 РЕАЛИЗАЦИЯ КОДА В VBA И В EXCEL’E 1.Excel =ECKB(B2-3=0;”ФНО” ЕСЛИB2<5 И B2-3<>0;1/(B2-3); ЕСЛИ(B2<15;"ФНЗ"; ЕСЛИ(B2<20;cos(B2); ЕСЛИ(B2<50;"ФНЗ"; ЕСЛИ((250-B2)>0; (LN(КОРЕНЬ(250-B2));"ФНО" ) ) ) ) ) ) 2.VBA(Object Range) Private Sub CommandButton1_Click() Dim res As range Dim x, y As Single x = range("B4").Value If x < 5 and x-3 <>0 Then y= 1/(x-3) Else If x -3 = 0 Then range("C4").Value = "FNO" ' Else If x < 15 Then 6 range("C4").Value = "ФНЗ" Else If x < 20 Then y = cos x range("C4").Value = y Else If x <= 50 Then range("C4").Value = "ФНЗ" Else If 250 - x <> 0 and 250 – x >0 Then y = ln(sqr(250-x)) range("C4").Value = y Else range("C4").Value = "FNO" End If End If End If End If End If End Sub 3.VBA(cells) Private Sub CommandButton1_Click() Dim x, y As Single x = cells(2,4).Value If x < 5 and x-3 <>0 Then y= 1/(x-3) Else If x -3 = 0 Then 7 cells(3,4).Value = "FNO" ' Else If x < 15 Then cells(3,4).Value = "ФНЗ" Else If x < 20 Then y = cos x cells(3,4).Value = y Else If x <= 50 Then cells(3,4).Value = "ФНЗ" Else If 250 - x <> 0 and 250 – x >0 Then y = ln(sqr(250-x)) cells(3,4).Value = y Else cells(3,4).Value = "FNO" End If End If End If End If End If End Sub 4.VBA(MsgBox) Private Sub CommandButton1_Click() Dim x, y As Single x = cells(2,4).Value 8 If x < 5 and x-3 <>0 Then y= 1/(x-3) MsgBox "y=" & CStr(y) Else If x -3 = 0 Then cells(3,4).Value = "FNO" ' Else If x < 15 Then cells(3,4).Value = "ФНЗ" Else If x < 20 Then y = cos x MsgBox "y=" & CStr(y) Else If x <= 50 Then cells(3,4).Value = "ФНЗ" Else If 250 - x <> 0 and 250 – x >0 Then y = ln(sqr(250-x)) MsgBox "y=" & CStr(y) Else cells(3,4).Value = "FNO" End If End If End If End If End If End Sub 9