Скачиваний:
27
Добавлен:
06.11.2017
Размер:
513.03 Кб
Скачать

Блок-схема.

Реализация 2-го задания

Задание

Построить проект для формирования таблицы значений функции f(x,y) = ((x-1+y)^(1/3))*x при изменении x на отрезке [a,b] с шагом h1 и y на отрезке [c,d] с шагом h2. Найдите наибольшее значение функции на этом же отрезке.

Формализация и уточнение задания

Для решения задачи табуляции функции на заданном интервале следует использовать алгоритмическую структуру регулярного типа, так как заданы начальное и конечное значения аргумента, а также шаг его изменения. Таким образом, в данном случае можно заранее определить количество вычисленных значений.

Графический интерфейс

Таблица элементов.

Имя объекта

Свойство

Значение свойства

Form1

Text

Form1

Label1

Name

Label1

Text

Тема 4.5. Программирование алгоритмов регулярных циклических структур и цикл в цикле

Label3

Name

Label3

Text

A=

Label4

Name

Label4

Text

B=

Label5

Name

Label5

Text

H1=

Label6

Name

Label6

Text

C=

Label7

Name

Label7

Text

D=

Label8

Name

Label8

Text

H2=

Label9

Name

Label9

Text

Минимальное значение z =

TextBox1

Name

TextBox1

TextBox2

Name

TextBox2

TextBox3

Name

TextBox3

TextBox4

Name

TextBox4

TextBox5

Name

TextBox5

TextBox6

Name

TextBox6

TextBox7

Name

TextBox7

ListBox1

Name

ListBox1

Button1

Name

Button1

Text

Выполнить

Button2

Name

Button2

Text

Повторить

Button3

Name

Button3

Text

Выход

Программный код.

Option Strict On

Option Explicit On

Imports System.Math

Public Class Form1

Sub vivod(ByVal w As Double, ByVal T As TextBox)

T.Text = CStr(w)

End Sub

Function vvod(ByVal T As TextBox) As Double

Return CSng(Val(T.Text))

End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim a, b, c, d, h1, h2 As Double

Dim n1, n2 As Integer

a = CDbl(vvod(TextBox1))

b = CDbl(vvod(TextBox2))

h1 = CDbl(vvod(TextBox3))

c = CDbl(vvod(TextBox4))

d = CDbl(vvod(TextBox5))

h2 = CDbl(vvod(TextBox6))

n1 = zikl(a, b, h1)

n2 = zikl(c, d, h2)

list(a, b, c, d, n1, n2, h1, h2)

End Sub

Function zikl(ByVal a As Double, ByVal b As Double, ByVal h As Double) As Integer

Return CInt(Fix((Abs(a - b) / h)) + 1)

End Function

Function func(ByVal x As Double, ByVal y As Double) As Double

Return x * Sqrt(Sqrt(x - 1 + y))

End Function

Sub list(ByVal a As Double, ByVal b As Double, ByVal c As Double, ByVal d As Double, ByVal n1 As Integer, ByVal n2 As Double, ByVal h1 As Double, ByVal h2 As Double)

Dim min, x, y, z As Double

Dim str1, str2, str3, str4 As String

Dim str, divider As String

Dim i As Integer

str = " "

str1 = " N |"

str2 = " X |"

str3 = " Y |"

str4 = " Z |"

divider = "____________________________"

min = System.Double.MaxValue

For i = 1 To n1

y = c

For j = 1 To n2

z = func(x, y)

If z < min Then min = z

str1 = str1 + Format(i, "000") + Space(6) + "|" + Space(2)

str2 = str2 + Format(x, "0.000") + Space(6) + "|" + Space(2)

str3 = str3 + Format(y, "0.000") + Space(6) + "|" + Space(2)

str4 = str4 + Format(z, "0.000") + Space(6) + "|" + Space(2)

y = y + h2

Next

x = x + h1

Next

ListBox1.Items.Add(str)

ListBox1.Items.Add(divider)

ListBox1.Items.Add(str1)

ListBox1.Items.Add(divider)

ListBox1.Items.Add(divider)

ListBox1.Items.Add(str2)

ListBox1.Items.Add(divider)

ListBox1.Items.Add(divider)

ListBox1.Items.Add(str3)

ListBox1.Items.Add(divider)

ListBox1.Items.Add(divider)

ListBox1.Items.Add(str4)

ListBox1.Items.Add(divider)

ListBox1.Items.Add(str)

vivod(min, TextBox7)

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()

TextBox6.Clear()

TextBox7.Clear()

ListBox1.Items.Clear()

End Sub

End Class