Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
06.11.2017
Размер:
337.08 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

СВЯЗИ И ИНФОРМАТИКИ

Кафедра информатики

Лабораторная работа

по теме: «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

  1. a – cos(x) = 5-cos2 = 5,141614683655

  2. a/(b+y) = 0,714285714

  3. sin2(y) = 0,572750016904

  • min = 0,572750016904

При вводе х=5 и у=5, решение идет по первому условию, где y<=х<y+5

  1. a3 = 125

  2. ln(x2+y2)= ln(50)= 3,912023005

  • max = 125

При вводе х=10 и у=5, решение идет по первому условию, где х=>y+5

a+cos3(x-y)= 5+cos3(10-5)= 5,02282466088

~ 8 ~

Соседние файлы в папке 4.4. Программирование алгоритмов разветвляющихся структур