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

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

Московский технический университет

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

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

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

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

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

Задание

Построить проект для формирования таблицы значений функции f(x) = x*exp(-x) при изменении x на отрезке [a,b] с шагом h (a=0.1, b=1.5, h=0.1). Найдите наибольшее значение функции на этом же отрезке.

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

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

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

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

Имя объекта

Свойство

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

Form1

Text

Form1

Label1

Name

Label1

Text

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

ForeColor

Blue

Font

Microsoft Sans Serif, полужирный, 15 пунктов

Label3

Name

Label3

Text

A=

ForeColor

Черный

Font

Microsoft Sans Serif, полужирный, 10 пунктов

Label4

Name

Label4

Text

B=

ForeColor

Черный

Font

Microsoft Sans Serif, полужирный, 10 пунктов

Label5

Name

Label5

Text

H=

ForeColor

Черный

Font

Microsoft Sans Serif, полужирный, 10 пунктов

Label6

Name

Label6

Text

Максимальное значение y =

ForeColor

64; 0; 0

Font

Microsoft Sans Serif, полужирный, 11 пунктов

TextBox1

Name

TextBox1

TextBox2

Name

TextBox2

TextBox3

Name

TextBox3

TextBox4

Name

TextBox4

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, h As Double

Dim n As Integer

a = CDbl(vvod(TextBox1))

b = CDbl(vvod(TextBox2))

h = CDbl(vvod(TextBox3))

n = zikl(a, b, h)

list(a, b, n, h)

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) As Double

Return x * Exp(-x)

End Function

Sub list(ByVal a As Double, ByVal b As Double, ByVal n As Integer, ByVal h As Double)

Dim max, x, y As Double

Dim str1, str2, str3 As String

Dim str, divider As String

Dim i As Integer

str = " "

str1 = " N |"

str2 = " X |"

str3 = " Y |"

divider = "____________________________"

max = System.Double.MinValue

For i = 1 To n

y = func(x)

If y > max Then max = y

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)

divider = divider + "____________"

x = x + h

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

vivod(max, TextBox4)

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

ListBox1.Items.Clear()

End Sub

End Class