Задание № 5. Программирование вычислительных задач циклической структуры

Постановка задачи

Вычислить значение функции f = 3k2 – 2p, где

k =

 

 

при значениях Х, изменяющегося от 1 до 11 с шагом 0,5.

Анализ задачи

Анализ постановки задачи показывает, что данный вычислительный процесс является циклическим и значение Х изменяется от начального значения Хн до конечного Хк с шагом ∆Х. Формулы для вычисления требуемых параметров такие же, как в задании № 4. Однако выдача многократно вычисляемых промежуточных величин К, Р и результирующей f необходимо каждый раз выдавать на форму, а не на этикетки, как это сделано в задании № 4. Поэтому в программе из задания № 4 должны быть внесены изменения в выдаче вычисляемых величин. Исходные данные: Хн, Хк и dХ.

Алгоритм задачи

Блок-схема алгоритма изображает циклический алгоритм, а телом цикла является предыдущий блок алгоритма разветвляющейся структуры. Поэтому на блок-схеме циклического алгоритма (см. рис. 5.1) предыдущий блок подробно не приводится, а обозначен пунктирным прямоугольником. Следует отметить, что если программа задания № 4 требует некоторого изменения, блок-схему этого задания изменять не нужно.

 

 

Разработка пользовательского интерфейса

Откройте из своей папки свой проект Программы_ВашаФамилия.vbp. Введите новую дочернюю формы с названием, например, Цикл For…Next с именем frmCycle, для чего свойству MDIChild формы frmCycle задайте значение True. Добавьте новый пункт меню (Цикл) в родительскую форму для загрузки этой новой формы.

Затем разработаем интерфейс новой формы. То есть спланируем, какие элементы управления разместить на форме, чтобы интерфейс формы был удобным и понятным для пользователя вашей программы. Чтобы лучше понимать, почему выбирались те или иные элементы управления, приведем на рис. 5.2 вид формы, которая она будет иметь после запуска программы.

Нас должен интересовать интерфейс, связанный с тремя основными блоками: ввода исходных данных, блока вычислений, вывода результатов.

Ввод исходных данных, т. е. значения Хн, Хк и dX здесь проще всего осуществлять с помощью трех Текстовых полей и одной НадписиВведите Хн, Хк, dX перед этими тремя текстовыми полями. Разместить это лучше в верхней части формы.

Блок вычислений. Все вычисления будут запрограммированы в программе (процедуре). Но для начала вычислений необходимо предусмотреть на форме Кнопку с названием Вычислить, которая и будет запускать на выполнение такую процедуру. Еще одна Кнопкас названием Выход (или Конец, или END) необходимо построить на форме для завершения работы с формой. Кнопки разместить справа вверху на форме.

Вывод результатов. На форме разместите одну Этикетку (Label) для выдачи заголовка Результаты расчетов. Выдачу результатов расчетов на форму с помощью оператора Print запрограммируйте в процедуре, связанной с обработкой события Click кнопки cmdВычислить.

Начало программирования в программе задается с помощью операторов CurrentX и CurrentY. Чтобы не подбирать эти текущие координаты курсора при печати, можно поступить следующим образом. На форме в режиме конструктора в место, где предполагается начало печати, построить очень маленькую линию (объект), которая строится так же, как любой элемент управления с панели элементов управления. Затем в окне свойств для линии выписать ее координаты, например X1 и Y1. Эти координаты и задать для CurrentX и CurrentY.

В табл. 5.1 приведены спланированные элементы управления.

Таблица 5.1

Объект Свойство Установленное значение
Label1 Caption Введите значение Хн, Хк, dX:
Text1 Имя txtXn
  Text Пусто (для ввода Хн)
Text2 Имя txtXk
  Text Пусто (для ввода Хк)
Text3 Имя txtDX
  Text Пусто (для ввода dX)
Label2 Caption Результаты расчетов
  ForeColor Темно-коричневый
Command1 Имя cmdВычислить
  Caption Вычислить
Command2 Имя cmdEnd
  Caption Выход

 

Для формы, после ее выделения, в окне свойств для свойства AutoRedraw (Автоперерисовка) задать значение True. Это значит, что если результаты выдачи результатов не поместятся на форме, то после увеличения ее размера данные на форме появятся.

Написание программного кода

Для события Click кнопки cmdВычислить (<Вычислить>) напишите следующий код:

Private Sub cmdВычислить_Click()

Dim xn As Single, xk As Single, dx As Single

Dim k As Single, x As Single, blnДалее As Boolean

Dim p As Single, f As Single

‘ значения, введенные в текстовые поля, присваиваем переменным

‘ xn, xk, dx:

xn = Val(txtXn): xk = Val(txtXk): dx = Val(txtDX)

Cls

CurrentX = 240: CurrentY = 1080 ‘ координаты начала выдачи

Print " X K P F "

Print "___________________________________________"

For x = xn To xk Step dx

If x > 2 And x <= 6 Then

k = FormatNumber(((2 * x ^ 2 + Exp(x)) / 2 / x), 3)

blnДалее = True

ElseIf x > 6 Then

k = FormatNumber((3 * x + 4 * (Cos(x)) ^ 2), 3)

blnДалее = True

End If

If blnДалее Then

p = FormatNumber(((2 * x + k) / k ^ 2), 3)

f = Format((3 * k ^ 2 - 2 * p), "000000.###")

Print Tab(4); FormatNumber(x, 1); Tab(11); k; _

Tab(21); p; Tab(31); f

Else

Print Tab(4); x; Tab(10); " Нет решения"

End If

Next x

End Sub

Для события Click кнопки cmdEnd (<Выход>) напишите следующий код:

Private Sub cmdEnd_Click()

Unload Me ‘Закрытие формы frmCycle

End Sub

Если написать следующую любопытную процедуру, можно будет в режиме выполнения программы прямо на форме мышью можно нарисовать, по желанию, любую таблицу.

Private Sub Form_MouseDown(Button As Integer, _

Shift As Integer, X As Single, Y As Single)

Static Xp As Integer, Yp As Integer

Select Case Button ‘ регистрирует нажатие кнопки

Case 4 'средняя кнопка отмечает точку - начало рисования

PSet (X, Y): Xp = X: Yp = Y

Case 2 'правая кнопка мыши рисует горизонталь

Line (Xp, Yp)-(X, Yp)

Case 1 'левая кнопка мыши рисует вертикаль

Line (Xp, Yp)-(Xp, Y)

End Select

End Sub

Еще одна занятная процедура стирает все, что выдано на форме или нарисуется с помощью предыдущей процедуры.

Public Sub Form_MouseMove(Button As Integer, _

Shift As Integer, X As Single, Y As Single)

Dim col As Single

col = frmCicl.BackColor ‘ устанавливаем цвет формы

‘ «стиралка»: нажав ЛКМ, перемещаем к любому

‘ символу на форме и стираем его

If Button = 1 Then Circle (X, Y), 100, col

End Sub

Последние две процедуры – это процедуры обработки событий мыши: MousDown – нажатие кнопки мыши, MousMove – перемещение мыши.

Стирание происходит путем рисования окружности цветом формы.

После выполнения этого задания получить у преподавателя свой вариант задачи и выполнить его самостоятельно. Перед программированием на компьютере в тетради составить алгоритм задачи, разработку интерфейса формы и написать коды программы.








Дата добавления: 2015-02-05; просмотров: 1309;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.015 сек.