ЗОТФ-ЗФ / 4.4. Программирование алгоритмов разветвляющихся структур / Оформление3
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
СВЯЗИ И ИНФОРМАТИКИ
Кафедра информатики
Лабораторная работа
по теме: «4.4. Программирование алгоритмов разветвляющихся структур»
Задание
Формализация и уточнение задания
Алгоритм решения данной задачи представляет собой комбинацию вычисления сложной функции с условием и выбора наименьшего (наибольшего) из нескольких значений. Он использует все виды разветвлений, и программируется с использованием как однострочных, так и блочных операторов If.
Данная задача решается с помощью процедуры Razv(), которая, получив в качестве входных параметров аргументы x, y, a, b, возвращает вычисленное значение z и номер ветки разветвляющейся функции n. Процедура vivod() предназначена для вывода в текстовое поле полученного значения функции r вещественного типа (Double) и для вывода номера n ветки разветвления целого типа (Integer), т.е. имеет аргументы разного типа, поэтому она является перегружаемой и объявлена как Overloads.
Графический интерфейс
Таблица элементов.
Объект Таблица П.4-2 Объект |
Имя объекта |
Свойство |
Значение свойства |
Форма |
Form1 |
Name |
Form1 |
Метка
|
Label1
|
Text
|
Тема 4.4. Программирование алгоритмов разветвляющихся структур |
Метка |
Label2 |
Text |
Ввод переменных: |
Метка |
Label3 |
Text |
X= |
Метка |
Label4 |
Text |
Ввод коэффициентов: |
Метка |
Label5 |
Text |
Y= |
Метка |
Label6 |
Text |
A= |
Метка |
Label7 |
Text |
B= |
Метка |
Label8 |
Text |
z полученное в результате вычислений: |
Текстовое поле
|
TextBox1
|
Name |
TextBox1
|
Текстовое поле
|
TextBox2
|
Name |
TextBox2
|
Текстовое поле
|
TextBox3
|
Name |
TextBox3
|
Текстовое поле
|
TextBox4
|
Name |
TextBox4
|
Текстовое поле
|
TextBox5
|
Name |
TextBox5
|
Кнопка
|
Button1
|
Name |
Button1
|
Text |
Вычислить |
||
Кнопка
|
Button2
|
Name |
Button2
|
Text |
Повторить |
||
Кнопка
|
Button3
|
Name |
Button3
|
Text |
Выход |
Программный код
Imports System.Math
Public Class Form1
'Функция ввода в Textbox
Function vvod(ByVal T As TextBox) As Double
Return Val(T.Text)
End Function
'Перегружаемая процедура вывода веществ. результата в TextBox
Overloads Sub vivod(ByVal Z As Double, ByVal T As TextBox)
T.Text = CStr(Z)
End Sub
'Перегружаемая процедура вывода целого результата в TextBox
Overloads Sub vivod(ByVal Z As Integer, ByVal T As TextBox)
T.Text = CStr(Z)
End Sub
Sub Razv(ByVal x As Double, ByVal y As Double, ByVal a As Double, ByVal b As Double, ByRef z As Double, ByRef n As Integer)
Dim z1, z2 As Double
If x < y Then
z1 = a - Cos(x) : z2 = (Sin(y)) ^ 2
z = (a / (b + y))
If z1 < z Then
z = z1
End If
If z2 < z Then
z = z2
End If
n = 1 '1 ветвь разветвл. ф-ции
vivod(z, TextBox5)
MsgBox("Расчет пошел по условию x < y")
ElseIf x >= y And x < y + 5 Then
z1 = Log((x ^ 2) + (y ^ 2)) : z2 = a ^ 3
If z1 > z2 Then
z = z1
Else
z = z2
End If
n = 2 '2 ветвь разветвл. ф-ции
vivod(z, TextBox5)
MsgBox("Расчет пошел по условию y <= x < y + 5")
Else
z = a + (Cos(x - y)) ^ 3
n = 3 'ветвь разветвл. ф-ции
vivod(z, TextBox5)
MsgBox("Расчет пошел по условию x >= y + 5")
End If
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim x, y, a, b, z As Double
Dim n As Integer
x = vvod(TextBox1) : y = vvod(TextBox2) : a = vvod(TextBox3) : b = vvod(TextBox4)
Razv(x, y, a, b, z, n)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Application.Exit()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox4.Clear()
TextBox5.Clear()
End Sub
End Class
Блок-схема
Доказательство результатов
Введем коэффициенты а=5 и b=3.
При вводе х=2 и у=4, решение идет по первому условию, где х<y
-
a – cos(x) = 5-cos2 = 5,141614683655
-
a/(b+y) = 0,714285714
-
sin2(y) = 0,572750016904
-
min = 0,572750016904
При вводе х=5 и у=5, решение идет по первому условию, где y<=х<y+5
-
a3 = 125
-
ln(x2+y2)= ln(50)= 3,912023005
-
max = 125
При вводе х=10 и у=5, решение идет по первому условию, где х=>y+5
a+cos3(x-y)= 5+cos3(10-5)= 5,02282466088
~