- •Введение
- •Особенности программирования на Visual Basic
- •1.1. Интегрированная среда разработки ide
- •1.2. Проекты, программы
- •1.3. Стандартные элементы управления
- •Панель элементов управления
- •Написание скриптов с помощью объекта ScriptControl
- •Общие свойства элементов управления
- •1.4. Этапы программирования
- •Первый этап: выбор формы и настройка её свойств
- •Второй этап: разработка интерфейса
- •Третий этап: работа со свойствами элементов управления
- •Четвёртый этап: написание программного кода задачи
- •Начало написания программы
- •Набирайте текст программы только строчными буквами!
- •Объявление переменных
- •Ввод начальных данных
- •Программирование задачи
- •Вывод результатов
- •2. Практические задания по Visual Basic
- •Задание № 1. Знакомство с элементами управления
- •1. Постановка задачи. Последовательность
- •Задание № 2. Разработка многодокументного интерфейса
- •Задание № 3. Программирование задач с линейной структурой алгоритма
- •Задание № 4. Программирование вычислительных задач разветвляющейся структуры
- •Задание № 5. Программирование вычислительных задач циклической структуры
- •Задание № 6. Одномерные массивы
- •Задание № 7. Программирование двумерных массивов
- •Задание № 8. Процедуры-подпрограммы Sub и процедуры-функции Function
- •Задание № 9. Приближенное вычисление определенного интеграла
- •Приложение
- •If условие Then оператор1 [: оператор2 [: оператор3 ]… ]
- •If условие Then оператор1 Else оператор2
- •Область видимости переменных и их объявление
- •Рекомендуемая литература
- •Содержание
Задание № 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