Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_VB_ч_1_МГУС.doc
Скачиваний:
45
Добавлен:
23.08.2019
Размер:
1.41 Mб
Скачать

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

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

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

если 2 < x ≤ 6

если x > 6

k =

при трех исходных значениях Х, равных соответственно 1; 4; 7.

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

Анализ постановки задачи показывает, что данный вычислительный процесс является разветвляющимся и вычисление величины К выполняется по разным формулам в зависимости от значения Х. Исходные данные – значения Х, промежуточные – К, Р, результирующая – f.

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

Алгоритм задачи изображен на рис. 4.1.

Обсудим этот алгоритм. Опытный программист сразу обратит внимание на то, что алгоритм составлен не оптимально, а в «лоб». Просто следуем записи постановки задачи. Что видим, то поем, как акын казахских степей. Для инженера или другого специалиста, для которого программирование не основная специальность, надо быстро получить результат. А этот алгоритм, составляемый таким образом, позволяет решать любую задач подобного рода.

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

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

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

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

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

Ввод исходных данных

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

Б

Да

лок вычислений

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

Вывод результатов

Одна Надпись (Label) нужна для выдачи заголовка Результаты расчетов. Одна Надпись – для заголовка «К            Р            f» (вместо трех). Выдачу результатов K, P, f запрограммируем на три Надписи. Еще одна Надпись нужна для выдачи сообщения «Нет решения» в случаях, когда значение Х > 6. Но это сообщение можно выдавать на ту же Надпись, на которой будет записан заголовок Результаты расчетов. Но в этом случае придется запрограммировать выдачу сообщения Нет решения и восстановление заголовка Результаты расчетов в одном и том же элементе управления Надпись Таким образом, всего в этом блоке будет использовано 6 Надписей.

Все элементов управления, которые необходимо построить на форме frmIf, а также их свойства приведены в табл. 4.1.

В режиме выполнения этого приложения форма может выглядеть, например, так, как это изображено на рис. 4.2.

Меню Программы Выход, которые видны вверху после информационной строки, – это меню на MDI – форме, которое было создано при выполнении задания № 2.

Таблица 4.1

Объект

Свойство

Установленное

значение

Label1

Caption

Введите Х:

(Имя)

lblX

Text1

Text

Пусто (для ввода Х)

(Имя)

txtX

Alignment

1 – Правая привязка

Label2

Caption

Результаты расчетов

(Имя)

lblЗагол

Label3

Caption

К P f

(Имя)

lblKPF

Label4

Caption

Пусто (для выдачи К)

(Имя)

lblK

Alignment

1 – Правая привязка

BorderStyle

1-Фиксировано один

Label5

Caption

Пусто (для выдачи Р)

(Имя)

lblP

Alignment

1 – Правая привязка

BorderStyle

1-Фиксировано один

Label6

Caption

Пусто (для выдачи f)

(Имя)

lblF

Alignment

1 – Правая привязка

BorderStyle

1-Фиксировано один

Command1

(Имя)

cmdВычислить

Caption

Вычислить

Command2

(Имя)

cmdEnd

Caption

Выход

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

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

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

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

‘ Переменные р и f можно сразу рассчитать по формулам и

‘ их значения и присвоить их этикеткам lblP и lblF

‘ Булевская переменная blnДалее введена вместо переменной В,

‘ которая используется в блок-схеме

X = Val(txtX.Text)

blnДалее = True

If X > 2 And X <= 6 Then

k = (2 * X ^ 2 + Exp(X)) / 2 / X

ElseIf X > 6 Then

k = 3 * X + 4 * (Cos(X)) ^ 2

Else

blnДалее = False

End If

If blnДалее Then

lblK.Caption = FormatNumber (k, 4)

‘ ниже не приводим Caption и с помощью

‘ функции FormatNumber

‘ выдаем для вещественных чисел 4 знака после запятой

lblP = FormatNumber((2 * X + k) / k ^ 2, 4)

lblF = FormatNumber(3 * k ^ 2 - 2 * P, 4)

Else

lblЗагол.ForeColor = &HFF& ’устанавливаем красный цвет

lblЗагол.Caption = "Нет решения": blnДалее = True

End If

End Sub

Поскольку сообщение "Нет решения" красными буквами выдаем в надпись lblЗагол, то при вводе нового значения Х следует почистить этикетки lblK, lblP, lblF от прежних результатов и для этикетки lblЗагол восстановить надпись "Результаты расчетов" буквами черного цвета. Чтобы это происходило, записываем для события Change (Изменение) текстового поля txtX следующую процедуру:

Private Sub txtX_Change()

lblK.Caption = ""

lblP.Caption = ""

lblF.Caption = ""

lblЗагол.ForeColor = &H0& ‘восстанавливаем черный цвет текста

lblЗагол.Caption = "Результаты расчетов"

End Sub