Лабораторная работа по информатике Тема:

advertisement
Лабораторная
работа по
информатике
Тема:
«Реализация разветвляющихся вычислительных процессов
средствами Excel »
Выполнил
Студент ФИТ
ПИН 1206
Ахмедов Кирилл
ЛАБОРАТОРНАЯ РАБОТА №2.
РЕАЛИЗАЦИЯ РАЗВЕТВЛЯЮЩИХСЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ СРЕДСТВАМИ EXCEL.
Разработать алгоритм для вычисления значений функции
1
 2x , x  5

y  cos x, 10  x  20

 205  x , x  150

и реализовать его в Excel.
АЛГОРИТМ
В задаче требуется вычислить функцию, вид которой зависит от значения
аргумента. Поэтому разобьем числовую ось значениями, указанными в формуле на
несколько промежутков, указав при этом, какой должен быть результат вычислений на
каждом промежутке:
5
y
ФНЗ
10
1
2x
20
y  cos x
ФНЗ
150
y  205  x
ФНЗ-функция неопределенна на промежутках
При разработке алгоритма будем рассматривать промежутки числовой оси слева
направо. Обозначения: ФНЗ – функция не задана; ФНО – функция не определена.
Записывая основной алгоритм решения задачи, вместо вычислений каждой части
функции для упрощения будем писать блок1, блок2 и блок3. Поставим в соответствие
каждому блоку алгоритм вычисления конкретной функции с учетом её области
определения. Последний этап разработки алгоритма решения исходной задачи –
подстановка в основной алгоритм вместо блоков 1,2,3 соответствующих
вычислительных алгоритмов.
РАЗБИТИЕ ФУНКЦИЙ НА БЛОКИ
 блок 1=1/2x
 блок 2 = cos x
 блок 3 = (205 – x)^0,5
СОСТАВЛЕНИЕ АЛГОРИТМА
ввод х
если х<5
блок1
иначе
еслиx<10
«ФНЗ»
иначе
еслиx<20
блок2
иначе
если х<=150
«ФНЗ»
иначе
блок3
все_если
все_если
все_если
все_если
ВЫЧИСЛЕНИЯ В КАЖДОМ ИЗ БЛОКОВ
Блок1. Требуется вычислить функцию y 
нулю. Таким образом, получаем:
Если x-3 <> 0
y 1
2x
печать у
иначе
«ФНО»
все_если
1 . При вычислении учитываем,что знаменатель не должен равняться
2x
Блок2. Требуется вычислить функцию
y=cosx. Здесь никаких ограничений на вычисления нет. Таким образом,
получаем:
y = cos x
печать у
Блок3. Требуется вычислить функцию
y  205  x . При вычислении учитываем, что подкоренное выражение
должно быть больше или равно. Получаем:
если 205-х>=1
y  205  x
печать у
иначе
«ФНО»
все_если
В основной алгоритм вместо блоков 1,2,3 подставим алгоритмы вычисления соответствующих частей функции. В
итоге получаем алгоритм решения исходной задачи.
ввод х
если х<5
если x-3<>0
y 1
2x
печать у
иначе
«ФНО»
все_если
иначе
если x<10
«ФНЗ»
иначе
если x<20
y  cos x
печать у
иначе
если х<=150
«ФНЗ»
иначе
если 205-х>=1
y  205  x
печать у
иначе
«ФНО»
все_если
все_если
все_если
все_если
все_если
РЕАЛИЗАЦИЯ КОДА В VBA И В EXCEL
1.Excel
=ECKB(B2-3=0;”ФНО”
ЕСЛИB2<5ИB2-3<>0;1/(1\2*2B);
ЕСЛИ(B2<10;"ФНЗ";
ЕСЛИ(B2<20;cos(B2);
ЕСЛИ(B2<150;"ФНЗ";
ЕСЛИ((250-B2)>0; (250-B2);"ФНО"
)
)
)
)
)
)
2.VBA(ObjectRange)
Private Sub CommandButton1_Click()
Dim res As range
Dim x, yAs Single
x = range("B4").Value
If x < 5 and 2*x<>0 Then
y= 1/(2*x)
Else
Ifx -3=0 Then
range("C4").Value = "FNO" '
Else
Ifx<10Then
range("C4").Value = "ФНЗ"
Else
Ifx<20 Then
y = cos x
range("C4").Value = y
Else
Ifx<= 150 Then
range("C4").Value = "ФНЗ"
Else
If250 - x<> 0 and 250 – x >0Then
y = sqr(250-x)
range("C4").Value = y
Else
range("C4").Value = "FNO"
End If
End If
End If
End If
EndIf
EndSub
3.VBA(cells)
Private Sub CommandButton1_Click()
Dimx, yAsSingle
x = cells(2,4).Value
If x < 5 and 2*x <>0 Then
y= 1/(2*x)
Else
Ifx -3 = 0 Then
cells(3,4).Value = "FNO" '
Else
Ifx<10Then
cells(3,4).Value= "ФНЗ"
Else
Ifx<20 Then
y = cos x
cells(3,4).Value= y
Else
Ifx<= 150 Then
cells(3,4).Value= "ФНЗ"
Else
If 250 - x<> 0 and 250 – x >0Then
y = sqr(250-x)
cells(3,4).Value= y
Else
cells(3,4).Value = "FNO"
End If
End If
End If
End If
EndIf
EndSub
4.VBA(MsgBox)
Private Sub CommandButton1_Click()
Dimx, yAsSingle
x = cells(2,4).Value
If x < 5 and 2*x <>0 Then
y= 1/(2*x)
MsgBox "y=" &CStr(y)
Else
If 2*x= 0 Then
cells(3,4).Value = "FNO" '
Else
Ifx<10Then
cells(3,4).Value= "ФНЗ"
Else
Ifx<20 Then
y = cos x
MsgBox "y=" & CStr(y)
Else
Ifx<=1 50 Then
cells(3,4).Value= "ФНЗ"
Else
If 250 - x<> 0 and 250 – x >0Then
y = sqr(250-x)
MsgBox "y=" &CStr(y)
Else
cells(3,4).Value = "FNO"
End If
End If
End If
End If
EndIf
EndSub
Download