Else

advertisement
Лабораторная
работа по
информатике
Тема:
«Реализация разветвляющихся
вычислительных процессов
средствами 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
x3
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
. При вычислении учитываем, что знаменатель не
x3
должен равняться нулю. Таким образом, получаем:
если
x-3 <> 0
y
1
x3
печать у
иначе
«ФНО»
все_если
Блок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
x3
печать у
иначе
«ФНО»
все_если
иначе
если 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
Download