Для решения задачи табуляции функции на заданном интервале следует использовать алгоритмическую структуру регулярного типа, т.к. заданы начальное и конечное значения аргумента, а также шаг его изменения. Таким образом, в данном случае можно заранее определить количество вычисленных значений.
2.4) Элементы, разрабатываемого проекта:
2.4.1) Графический интерфейс пользователя:
Форма приложения может иметь такой же вид, как на
рис. 4.5.4-1.
При размещении первого элемента управления ListBo x в форму на экране появляется пустой прямоугольник, внутри которого находится текст ListBox1. В этом списке нет ни полосы прокрутки, ни элементов. Вертикальная полоса прокрутки появляется автоматически, в том случае, когда новый добавляемый элемент не может быть размещен в выделенной для списка области экрана. В данном проекте два элемента ListBox располагаются на элементе управления (служит для объединения нескольких элементов в одну группу) и поэтому будут иметь одну общую полосу прокрутки.
Однако данные можно занести в список и на стадии разработки проекта. Для этого надо поместить элементы списка в свойство Items (Collections), которое имеется в окне Свойства элемента управления ListBox, щелкнув кнопку с тремя точками и составив нужный список в открывшемся диалоговом окне. Каждая строка этого свойства задает один элемент, для перехода на следующую строку надо нажать клавишу <Enter>, после набора всех элементов – щелкнуть ОК.
На кнопке с именем Button1 поместите надпись:
Выполните, а на кнопке Button2 – надпись Конец.
Рис 4.5.4 - 1. Форма проекта 1-го задания Проект 5-1:
Формирование таблицы значений функции y=f(x) на отрезке
[a; b] с шагом h
2.4.2) Таблица свойств объектов:
Определите, установите и сведите в таблицу табл. 4.5.4-3
свойства всех объектов.
Таблица 4.5.4-3
Имя объекта | Свойство | Значениесвойства |
Form1 | Text | Тема 4.5. Программирование алгоритмов регулярных циклических структур и цикл в цикле |
Label1 | Name | Label1 |
Text | Начальное значение | |
ForeColor | Синий | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
Label2 | Name | Label2 |
Text | Конечное значение | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
Label3 | Name | Label3 |
Text | Шаг | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
Label4 | Name | Label4 |
Text | n= | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
Label5 | Name | Label5 |
Text | Задание | |
ForeColor | Красный | |
Font | Arial, Жирный, 12 пунктов | |
TextBox1 | Name | TextBox1 |
Text | Протабулировать функцию f(x)=sin(x+2)*12+cos(x*4)*15 | |
ForeColor | Красный | |
Font | Microsoft Sans Serif, Жирный, 10 пунктов | |
TextBox2 | Name | TextBox2 |
Text | Аргумент х | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
TextBox3 | Name | TextBox3 |
Text | Функция f(x) | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
TextBox8 | Name | TextBox8 |
Text | Наибольшее значение функции | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
TextBox10 | Name | TextBox10 |
Text | Наименьшее значение функции | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
TextBox12 | Name | TextBox12 |
Text | Число положительных элементов | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
TextBox14 | Name | TextBox7 |
Text | Число отрицательных элементов | |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
TextBox4 TextBox5 TextBox6 TextBox7 TextBox9 TextBox11 TextBox13 TextBox15 | Name | TextBox4, TextBox5, TextBox6, TextBox7, TextBox9, TextBox11, TextBox13, TextBox15 |
Text | ||
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
ListBox1 | Name | ListBox1 |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
ListBox2 | Name | ListBox2 |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
Panel1 | Name | Panel1 |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
AutoScroll | True | |
Button1 | Name | Button1 |
Text | Выполнить | |
Button2 | Name | Button2 |
Text | Конец |
2.4.3) Схемы алгоритмов:
Схемы алгоритмов представлены на рис. 4.5.4-2.
Рис. 4.5.4-2. Схемы алгоритмов процедур Fun(x) и RegCikl проекта 1-го задания Проект 5-1: Формирование таблицы значений функции y=f(x) на отрезке [a; b] с шагом h
2.4.4) Программный код проекта:
Программный код проекта приведен в на рис. 4.5.4-3.
Imports System.Math Public Class Form1 'Функция ввода исходных данных из TextBox Function vvod(ByVal T As TextBox) As Double Return Val(T.Text) End Function 'Процедура вывода результата в TextBox Sub vivod(ByVal Z As Double, ByVal T As TextBox) T.Text = Format(Z, "00.0000") End Sub 'Процедура вывода результата в ListBox Sub vivodList(ByVal Z As Double, ByVal LB As ListBox) LB.Items.Add(Format(Z, "00.0000")) End Sub 'Процедура вывода целого результата в TextBox Sub vivodint(ByVal Z As Integer, ByVal T As TextBox) T.Text = CStr(Z) End Sub 'Функция вычисления значения функции Public Function Fun(ByVal x As Double) As Double Return Sin(x + 2) * 12 + Cos(x * 4) * 15 End Function 'Процедура решения задачи Public Sub RegCikl(ByVal a As Double, ByVal b As Double,_ ByVal h As Double, ByRef max As Double, _ ByRef min As Double, ByRef n1 As Integer, _ ByRef n2 As Integer) Dim i As Integer, n As Integer, y As Double, x As Double n = CInt((b - a) / h + 1) 'количество значений функции vivodint(n, TextBox7) x = a: n1 = 0: n2 = 0 max = Double.MinValue: min = Double.MaxValue For i = 1 To n y = Fun(x) If y > max Then max = y: If y < min Then min = y If y > 0 Then n1 = n1 + 1: If y < 0 Then n2 = n2 + 1 vivodList(x, ListBox1): vivodList(y, ListBox2) x = x + h Next End Sub Private Sub Button1_Click(sender As Object, _ e As EventArgs) Handles Button1.Click Dim nn1 As Integer, nn2 As Integer Dim mm1 As Double, mm2 As Double Dim a As Double, b As Double, h As Double a = vvod(TextBox4): b = vvod(TextBox5): h = vvod(TextBox6) RegCikl(a, b, h, mm1, mm2, nn1, nn2) 'вызов проц. реш.задачи vivod(mm1, TextBox9): vivod(mm2, TextBox11) vivodint(nn1, TextBox13): vivodint(nn2, TextBox15) End Sub Private Sub Button2_Click(sender As Object, _ e As EventArgs) Handles Button2.Click End End Sub End Class |
Рис. 4.5.4-3. Программный код проекта 1-го задания Проект 4.5-1: Формирование таблицы значений функции y=f(x) на отрезке [a;b] с шагом h
2.5) Результаты выполнения проекта:
Результат выполнения программы приведен на рис. 4.5.4-4.
Рис 4.5.4-4. Результаты выполнения проекта 1-го задания Проект 5-1: Формирование таблицы значений функции y=f(x) на отрезке [a;b] с шагом h
2.6) Доказательства правильности результатов:
Для доказательства правильности результата протабулируйте свой вариант функции с использованием программы Microsoft Excel, сделайте вывод о том, что полученные результаты подтверждают правильность выполнения программы.
3) Реализация 2-го задания:
3.1) Тема и название лабораторной работы:
Программирование алгоритмов циклических структур и цикл в
цикле.
Формирования таблицы значений функции y1(x, y) при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
3.2) Задание на разработку задачи:
Создайте проект Проект 5-2 для формирования таблицы значений
функции y1(x, y) при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2 (а=-1; в=2; с=-1; d=2; h1=1; y2=1).
3.3) Формализация и уточнение задания:
Для решения задачи табуляции функции на заданных интервалах следует использовать алгоритмическую структуру регулярного типа, т.к. заданы начальные и конечные значения аргумента, а также шаги их изменения, то есть в этом случае можно заранее определить количество вычисленных значений.
3.4) Элементы, разрабатываемого проекта:
3.4.1) Графический интерфейс пользователя:
Форма приложения может иметь такой же вид,
как на рис. 4.5.4-5.
Рис. 4.5.4-5. Форма проекта 2-го задания Проект 5-2: Формирования таблицы значений функции y1(x, y) при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2
3.4.2) Таблица свойств объектов:
Таблицу свойств объектов разработайте
самостоятельно.
3.4.3) Схемы алгоритмов:
Схемы алгоритмов представлены на рис.4.5.4-6.
Рис. 4.5.4-6. Схемы алгоритмов процедур fun1(), fun2() и Cikl()
проекта 2-го задания Проект 5-2:
Формирования таблицы значений функции y1(x, y) при изменении x на отрезке [a;b] с шагом h1 и y на отрезке [c;d] с шагом h2
Программный код проекта;
Программный код проекта 2-го задания – на рис. 4.5.4 -7.
Public Class Form1 Function vvod(ByVal t As TextBox) As Double Return Val(t.Text) End Function Sub vivodlist(ByVal z As Double, ByVal lb As ListBox) lb.Items.Add(Format(z, "00.0000")) End Sub Public Function fun1(ByVal x As Double, _ ByVal y As Double) As Double Return x ^ 2 + y ^ 2 End Function Public Function fun2(ByVal x As Double, _ ByVal y As Double) As Double Return x + y End Function Public Sub Cikl(ByVal a As Double, ByVal b As Double,_ ByVal c As Double, ByVal d As Double, _ ByVal h1 As Double, ByVal h2 As Double) Dim i, j, n1, n2 As Integer Dim x, y, y1 As Double n1 = CInt(Fix(b - a)/h1 + 1): n2 = CInt(Fix(d - c)/h2 + 1) x = a For i = 1 To n1 y = b For j = 1 To n2 If (x > 0 And x < 1) And (y > 0 And y < 1) Then y1 = fun1(x, y) Else y1 = fun2(x, y) End If vivodlist(x, ListBox1): vivodlist(y, ListBox2) vivodlist(y1, ListBox3) y = y + h2 Next x = x + h1 Next End Sub Private Sub Button1_Click(sender As Object, _ e As EventArgs) Handles Button1.Click Dim a, b, c, d, h1, h2 As Double a = vvod(TextBox1): b = vvod(TextBox2) c = vvod(TextBox3): d = vvod(TextBox4) h1 = vvod(TextBox5) h2 = vvod(TextBox6) Cikl(a, b, c, d, h1, h2) End Sub Private Sub Button2_Click(sender As Object,_ e As EventArgs) Handles Button2.Click End End Sub End Class |
Рис. 4.5.4 -7. Программный код проекта 2-го задания Проект 5-2: Формирования таблицы значений функции y1(x, y) при изменении x на отрезке [a;b] с шагом h1 и y на отрезке [c;d] с шагом h2
Результаты выполнения проекта приведены на рис. 4.5.4 -8.
Рис. 4.5.4 -8. Результаты выполнение проекта [OV1] 2-го задания Проект 5-2: Формирования таблицы значений функции y1(x, y) при изменении x на отрезке [a;b] с шагом h1 и y на отрезке [c;d] с шагом h2
3.6) Доказательства правильности результатов:
Для доказательства правильности результата протабулируйте свой вариант функции в ручную, сделайте вывод о том, что полученные результаты подтверждают правильность выполнения программы.
Контрольные вопросы
1) Что называется, циклическим алгоритмом?
2) Как записывается цикл с оператором For в блок-схемах?
3) Как записывается цикл с оператором For в программах?
4) Как работает цикл с оператором For?
5) Что называется, циклом?
6) Что называется, регулярным циклом?
7) Какой оператор языка VB служит для организации регулярных циклов и как он работает?
8) Что такое параметр цикла, и какой тип данных рекомендуется использовать для его описания?
9) Каким образом определить число повторений цикла, если переменная, меняющая свое значение от цикла к циклу, вещественного типа?
10) Что такое вложенные циклы, каким образом они изображаются в схеме алгоритма и в программе?
11) Для чего служит оператор Exit For?
12) В чем суть базовых алгоритмов: табулирование функции в заданном диапазоне изменения аргумента; определение суммы (произведения) значений функции в границах изменения аргумента;
13) поиск минимального (максимального) значения функции в заданном диапазоне изменения аргумента?
14) В чем суть алгоритма табулирования функции в заданном диапазоне изменения аргумента?
15) В чем суть алгоритма определения суммы (произведения) значений функции в пределах заданных границ изменения аргумента?
16) В чем суть алгоритма поиска минимального (максимального) значения функции в заданном диапазоне изменения аргумента?
17) Как называется переменная, изменяющая свое значение при каждом новом вхождении в цикл?
18) Как называется многократно повторяющаяся часть алгоритма?
19) Как определяется число повторений операторов тела цикла в регулярной циклической структуре?
20) Что является телом цикла в операторе Fоr … Next?
21) Что необходимо для досрочного прекращения регулярного цикла?
22) Для чего необходимо ключевое слово Step?
23) Что следует принять за начальное наименьшее значение для нахождения наименьшего значения числовой функции от аргумента, значение которого изменяется на заданном интервале?
24) Что следует принять за начальное значение произведения для нахождения значения произведения числовой функции от аргумента, значение которого изменяется на заданном интервале?
[OV1]ения