Основы программирования на Visual Basic

advertisement
МИНИСТЕРСТВО ТРАНСПОРТА РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ВОЗДУШНОГО ТРАНСПОРТА
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ
КАФЕДРА ИНФОРМАТИКИ
Павлов В.Д., Пятко С.Г., Юша Н.Ф.
ИНФОРМАТИКА
Методические указания к лабораторным работам по теме
«Основы программирования на Visual Basic»
Чаcть II
Санкт-Петербург
2008
Лабораторная работа №3
Операции и функции языка. Управляющие структуры
Задание: На основе проекта Satm2 разработать приложение, в котором:
 расчетное значение высоты вводится из соответствующего текстового поля,
 введенное значение высоты проверяется на принадлежность заданному
диапазону (от 0 до 15000 м),
 выводится сообщение, когда введенное значение высоты выходит за
заданный диапазон,
 параметры стандартной атмосферы рассчитываются после нажатия кнопки
"OK",
 результаты выводятся в соответствующие текстовые поля в различных
форматах.
В ходе работы необходимо
изучить:
 типы переменных, констант и способы их описания,
 понятие об области видимости переменных и констант,
 основные математические, логические функции и операции, управляющие
структуры,
 назначение именованных форматов вывода,
 основные пункты меню отладчика среды программирования.
научиться:
 задавать имена переменным, константам и определять область их
видимости,
 комментировать код программы,
 программировать простые выражения и логические операции,
 использовать управляющую структуру типа If….Then,
 проводить отладку программы в пошаговом режиме выполнения.
Теоретическая часть
1.1 Меню среды программирования
В меню Debug (Отладка), собраны команды для отладки программы и поиска
ошибок. Они позволяют управлять процессом выполнения программы и
наблюдать за ее состоянием. Рассмотрим те пункты, которые будут
использоваться в лабораторной работе.
 Step Into (Шаг). Эта команда выполняет один оператор программы. Если
текущим оператором является вызов процедуры, то следующим текущим
оператором станет первый оператор процедуры.
 Run To Cursor (Выполнять до курсора). Будут выполнены все строки,
начиная с текущей и кончая той, в которой находится курсор. Затем
программа перейдет в режим останова (ее выполнение будет
приостановлено).
 Add Watch (Добавить отслеживаемое выражение). Открывает окно диалога,
позволяющее определить выражение, значение которого можно будет
2
наблюдать при отладке.
 Toggle Breakpoint (Установить/снять точку останова). Устанавливает или
снимает ранее установленную точку останова.
 Clear All Breakpoints (Снять все точки останова). Снимает все ранее
установленные точки останова в отлаживаемой программе.
1.2 Основы языка Visual Basic
Ниже приводятся сведения о языке Visual Basic, которые необходимо знать для
выполнения лабораторной работы. Подробные сведения о языке можно узнать
из справочной системы.
Visual Basic поддерживает следующие основные типы данных:
 Boolean (Булево) – это логические данные, которые могут принимать только
два значения: True или False.
 Integer (целый) - это целочисленные данные (без дробной части) в
диапазоне от минус 32768 до 32767.
 Single (одинарной точности) - служит для отображения значений с
дробными частями, в которых десятичная точка может появляться в любом
месте. Диапазон значений от 1.401298E-45 до 3.402823E+38.
 String (строка) — это последовательность ASCII-символов от 0 до двух
миллиардов символов. Последовательность, в которой отсутствуют
символы, называется пустой строкой.
 Variant (варьируемый) – эта переменная способна принимать значение
любого типа (число, строка, массив).
Переменные и константы
Переменные и константы используются для хранения данных. Переменные
получают свои значения в период выполнения программы и сохраняют их пока
им не будет присвоено новое значение.
Константы получают свое значение на этапе разработки программы и при
выполнении программы не изменяются.
Чтобы программа смогла воспользоваться переменной и константой, их
необходимо объявить - указать ее имя и тип. Синтаксис объявления
следующий:
константы:
[Public/Private] Const ИмяКонстанты [As ИмяТипа] = Значение
переменной:
Public/Private/Dim ИмяПеременной [As ИмяТипа]
Начинается объявление с одного из зарезервированных слов, определяющих
область видимости переменной:
 Dim - объявляет локальные переменные, которые существуют только во
время вызова функции или процедуры, где они объявлены,
 Private - объявляет переменные или константы внутри процедуры или
функции,
 Public - объявляет переменную глобального типа: на уровне приложения,
3
которая доступна из всех модулей и форм проекта,
 Static – объявляет переменные внутри процедур и функций, которые вне их
недоступны, но в отличие от локальных переменных они сохраняют свое
значение (не обнуляются) при выходе из процедуры или функции, где они
объявлены.
При выборе имени для переменной и константы следует учитывать, что имя
должно:
 начинаться с короткого префикса, который является стандартным для
объектов данного рода и описывает тип и область видимости (таблица 1.1.),
 отражать ее назначение,
 начинаться с заглавной буквы и содержать только буквы, цифры и знак
подчеркивания - “_”,
 отличаться от зарезервированных слов Visual Basic.
 содержать не более 255 символов.
Таблица 1.1.
Префиксы имен, отражающие тип переменных
Тип переменной
Префикс
(константы)
Boolean
bin
String
str
Integer
int
Single
sng
Variant
vnt
General
(область g
видимости)
Операции
Чтобы присвоить переменной значение, необходимо выполнить операцию
присваивания:
Имя_переменной = Выражение
Под выражением может пониматься другая переменная, арифметическое
выражение, функция, свойство некоторого объекта или значение (числовое,
строковое и т.д.). Тип операндов и результата должен быть совместимым с
типом переменной.
В программах на языке Visual Basic можно использовать обычный набор
операций над данными:
 математические операции - сложение (+), вычитание (-), умножение (*),
деление (/), возведение в степень (^), - выполняются над числами и их
результатом также являются числа,
 операции отношения: (>) больше, (<) меньше, (=>) больше или равно, (<=)
меньше или равно, (=) равно, (<>) не равно, - применяются к числам,
строкам, а их результатом всегда является логическое значение - True или
False,
 логические операции - выполняются над логическими значениями: Not 4
логическое отрицание "НЕ", And - логическое "И", Or - логическое "ИЛИ".
Операндами в них выступают логические величины и возвращают они тоже
логические значения.
Оператор And возвращает True, только если оба операнда имеют значение True.
Когда оба операнда равны False, оператор And возвращает False. По смыслу он
соответствует английскому слову and (русскому и).
Оператор Or возвращает True, если лчбой из двух операндов имеют значение
True или оба – False. Он по смыслу соответствует русскому или.
Конкатенация строк
Если операндами в выражении являются строки, то операции (+) или (&)
приводит к их "сцеплению" - конкатенации, позволяющей формировать из двух
или более строк одну длинную. Результат конкатенации заносится в новую
строку, а операнды при этом не меняются.
Функции
Рассмотрим функции необходимые для выполнения работы.
CSng(Выражение) - преобразует числовое выражение или строку в число типа
Single.
Val(Cтрока) -преобразует строку цифровых символов в число. Преобразование
заканчивается на первом нецифровом символе в строке.
Ехр(Выражение) - вычисляет экспоненту от значения параметра.
Sqr(Выражение) -вычисляет корень квадратный от значения параметра.
Format(ЧисленноеВыражение, СтрокаФормата$) – формирует строку с
изображением чисел по определенному шаблону. Шаблон можно задать
следующим способом:
 строкой символов "#", которые резервируют место для одной цифры незначащие нули в начале или конце числа игнорируются,
 строкой символов "0" - незначащие нули выводятся,
 именованным форматом (например, Scientific, Fixed).
Условные операторы (ветвление по условию)
Под ветвлением по условию понимается программная структура, в которой код
исполняется или не исполняется в зависимости от выполнения определенного
условия.
Классической условной конструкцией является конструкция:
If Логическое выражение Then Оператор
В этой конструкции Оператор выполняется только при условии, что
Логическое выражение имеет значение True.
Возможна и другая конструкция:
If Логическое выражение Then
Группа операторов
Else
Вторая группа операторов
End If
5
В этой конструкции Группа операторов выполняется только при условии,
когда Логическое выражение имеет значение True, а Вторая группа
операторов – когда False.
Комментарии
При работе над программой необходимо обязательно использовать
комментарии. Комментарии выполняют две важные функции:
 позволяют качественно документировать программу,
 используются для того, чтобы «отключить» (не удаляя) фрагмент
программного кода в целях отладки или тестирования программы.
В языке Visual Basic предусмотрены два способа ввода комментариев:
 применение апострофа (') в любом месте строки (в том числе и в начале),
 использование зарезервированного слова Rem.
Перенос строк в окне кода
Иногда строка кода Visual Basic получается слишком длинной. Для таких
случаев в Visual Basic предусмотрен символ переноса строки (_). При этом
необходимо учитывать следующее:
 символу (_) должен предшествовать пробел,
 нельзя разбивать переносом строковые константы.
2. Порядок выполнения работы
2.1 Откройте проект satm2, разработанный в предыдущей работе.
2.2 На основе анализа расчетных формул задайте имена, тип и область
видимости переменных и констант, которые будут использоваться в программе.
2.2.1 Объявите переменные, в которых будут храниться результаты расчета, как
глобальные, чтобы обеспечить доступ к ним из других форм проекта. С учетом
правил составления имен, задайте для переменных следующие имена:
Переменная
Расчетное значение высоты
Значение давления для заданной высоты
Значение плотности для заданной высоты
Значение температуры для заданной
высоты
Значение скорости звука для заданной
высоты
Имя переменной
gsngH_r
gsngP_h
gsngR_h
gsngT_h
gsngA_h
 вызовите окно кода,
 установите режим проверки объявления всех переменных, введя в поле кода
следующий текст
Option Explicit,
 выберите в списке объектов элемент (General), в списке процедур появится
6
один элемент Declarations,
 объявите переменную gsngH_r как глобальную, введя в поле кода текст
Public gsngH_r As Single
 аналогичным образом объявите переменные: gsngR_h, gsngP_h, gsngT_h,
gsngA_h.
2.2.2 Объявите в процедуре cmdOK_Click() константы как локальные. На
основе анализа расчетных формул и с учетом правил составления имен,
примите для констант следующие имена:
Константа
Значение
Имя
константы
константы
Давление у земли
101325
sngP0
Коэффициент
133,322
sngCfnP
перевода давления из
мм.рт.ст. в н/м2
Плотность у земли
1.225
sngR0
Коэффициент
9,80665
sngCfnR
перевода плотности из
кгс*c2/м4 в кг/м3
Температура у земли
288.15
sngT0
Температура
на 216,7
sngTh11000
высоте 11000 метров
 выберите в поле кода процедуру cmdOK_Click(),
 выделите все операторы тела процедуры и удалите их, нажав клавишу Del
(Delete),
 дайте соответствующий комментарий - введите после строки Private Sub
cmdOK_Click() следующий текст
Rem Описание констант
 объявите давление у земли как константу - введите следующий текст
Const
sngP0 As Single = 101325
‘Значение давления у земли
 аналогичным образом объявите остальные константы.
2.2.3 Объявите другие переменные как локальные
 дайте соответствующий комментарий - введите в процедуру cmdOK_Click()
после блока описания констант следующий текст
Rem Описание локальных переменных
 для градиента температуры по высоте используйте имя sngGradTempH –
введите
Dim sngGradTempH As Single
 с целью упрощения кода расчетных формул выделите как отдельную
переменную показатель степени (имя sngStpn) – введите
Dim sngStpn As Single
 для объявления переменных и констант, используемых в информационной
панели об ошибке ввода высоты - введите
Dim Msg1, Msg2, Msg3, Style, Title, vbYesOnly, vbDefaultButton1, vbCritical
7
2.4 Присвойте переменным начальные значения и организуйте ввод исходных
данных
 дайте соответствующий комментарий - введите в процедуру cmdOK_Click()
после блока описания локальных переменных следующий текст
Rem Присвоение и ввод переменных
sngGradTempH = 0.0065
Msg1 = "1. Значение высоты выходит за допустимые пределы "
Msg2 = "2. Введите значение высоты от 0 до 15000 метров"
Title = “Ошибка ввода”
 организуйте ввод переменной gsngH_r (для преобразования типа
переменной используйте функцию Val) - введите
gsngH_r = Val(txtHn.Text)
2.5 Сформируйте в процедуре cmdOK_Click() управляющую структуру
 введите перед строкой End Sub следующий текст
if gsngH_r < 0 OR gsngH_r > 15000 Then
Rem Вывод сообщения об ошибке ввода высоты
Else
Rem Расчет параметров атмосферы
End If
2.6 Создайте код для информационной панели, которая будет выводиться на
экран при вводе значения высоты с ошибкой
 для формирования текста сообщения в две строки (переменная Msg3)
введите после комментария “Вывод сообщения об ошибке ввода высоты”
текст
Msg3 = Msg1 & vbCrLf & Msg2
 задайте вид информационной панели, присвоив переменной Style
необходимые константы - введите
Style = vbYesOnly + vbDefaultButton1 + vbCritical
 задайте команду для вызова информационной панели – введите
MsgBox Msg3, Style, Title
 подготовьте текстовое окно к новой попытке ввода - введите
TxtHn.Text = "" 'Вывод пустой строки в поле ввода
2.7 Протестируйте программу
 запустите программу на выполнение в среде VB5.0,
 введите в поле ввода высоты значение 17000,
 нажмите клавишу Enter. Должна выводиться информационная панель с
сообщением об ошибке ввода,
 закройте информационную панель,
 введите в поле ввода значение -10,
 нажмите клавишу Enter,
 закройте информационную панель,
 завершите выполнение программы, нажав кнопку [X] в заголовке формы.
2.8 Создайте код для расчета параметров стандартной атмосферы
8
2.8.1 Организуйте управляющую структуру для выбора расчетных
зависимостей в одном из двух диапазонов: тропосфере или стратосфере.
 после строки “Rem Расчет параметров атмосферы” введите следующие
строки
If gsngH_r< 11000 Then
‘Формулы расчета для тропосферы
End if
If gsngH_r > 11000 Then
‘Формулы расчета для стратосферы
End if
2.8.2 Закодируйте формулы расчета параметров атмосферы в тропосфере
 введите в процедуру после строки комментария “Формулы расчета для
тропосферы” выражение для расчета давления (переменная gsngP_h)
gsngP_h = sngP0*(1- gsngH_r / 44300)^5.256
 аналогичным образом введите выражения для расчета плотности,
температуры и скорости звука.
2.8.3 Закодируйте формулы расчета параметров стандартной атмосферы в
стратосфере
 после строки комментария “Формулы расчета для стратосферы” введите
выражение для расчета переменной sngStpn
sngStpn = -(gsngH_r - 11000)/6340
 для расчета давления в стратосфере (переменная gsngP_h) введите
gsngP_h = 169.4*Exp(sngStpn)*sngCfnP
 аналогичным образом введите выражения для расчета плотности,
температуры и скорости звука в стратосфере.
2.9 В процедуре cmdOK_Click() организуйте вывод результатов расчета с
использованием различных форматов вывода
 введите в процедуру перед последней строкой End if соответствующий
комментарий ‘Вывод результатов
 для вывода значения переменной gsngH_r в соответствующее текстовое
поле введите
txtHr.Text = Str(gsngH_r)
 для вывода значения переменной gsngP_h введите
txtP.Text = Format(gsngP_h, "Scientific")
 для вывода значения переменной gsngR_h введите
txtRo.Text = Format(gsngR_h, "0.000")
 для вывода значения переменной gsngT_h введите
txtT.Text = Format(gsngT_h, "###.#")
 для вывода значения переменной gsngA_h введите
txtA.Text = CSng (gsngA_h)
2.10 Протестируйте программу. При тестировании в первую очередь проверяют
правильность расчета при граничных условиях и в характерных точках.
 запустите программу на выполнение в среде VB5.0,
9
 введите в поле ввода высоты значение 0,
 нажмите клавишу Enter. В полях вывода должны выводиться результаты
расчета, совпадающие со значениями констант – значениями параметров
атмосферы у земли. Обратите внимание на особенности вывода расчетных
значений давления (в научном формате) и скорости звука.
 введите в поле ввода высоты значение 11000,
 нажмите клавишу Enter. Сравните результаты с табличными значениями.
Обратите внимание на то, что все расчетные значения не совпадают с
табличными,
Высота
Давление
Плотность Температура
Скорость
звука
0
101325
1,225
288
340,28
11000
22690
0,364
216,6
294,3
15000
12107
0,194
216,6
294,3
 введите в поле ввода высоты значение 15000,
 установите курсор на кнопку OK,
 нажмите левую кнопку мыши. Сравните результаты с табличными
значениями –они должны совпадать с табличными,
 завершите выполнение программы, нажав значок [X] в заголовке формы.
2.11 Проведите отладку программы и устраните замеченные ошибки
2.11.1 Проверьте работу управляющей структуры
 запустите программу на исполнение в пошаговом режиме для чего в меню
Debug выберите команду Step Into (или нажмите F8),
 введите в поле ввода высоты значение 11000,
 нажмите клавишу Enter. Система программирования выводит код с
подсветкой той строки кода, которая готова к выполнению,
 нажимайте F8 до момента окончания работы процедуры cmdOK_Click().
Обратите внимание
на то, что выражения для расчета параметров
атмосферы управляющей структурой не используются.
2.11.2 Проведите поиск ошибки
 откройте окно кода,
 установите курсор в строку If gsngH_r < 11000 Then
 в меню Debug выберите команду Toggle Breakpoint (или нажмите F9). Цвет
фона строки изменяется,
 запустите программу,
 введите в поле ввода высоты значение 11000,
 нажмите клавишу Enter. Выполнение программы приостановится в
отмеченной строке кода – точке останова,
 установите курсор на переменную gsngH_r и задержите его на некоторое
время – появляется сообщение о величине переменной:
gsngH_r =11000.
10
Проведите анализ логического отношения в данной строке кода. Обратите
вниманние на то, что в логическом отношении имеется ошибка – проводится
проверка строго на меньше, когда значение высоты равно 11000,
 отредактируйте строку кода – введите в логическое отношение проверку на
“меньше или равно”
If gsngH_r <= 11000 Then
 нажмите F8. Обратите внимание на то, что выражения для расчета
переменных управляющей структурой начинают использоваться,
 завершите выполнение программы, дав команду End из меню Run,
 запустите программу,
 введите значение высоты 11000,
 нажмите клавишу Enter. Убедитесь в правильности расчета,
 завершите выполнение программы, нажав значок [X] в заголовке формы.
2.12 Предъявите результаты работы преподавателю.
2.13 Сохраните разработанный проект в файлах с именем satm3.
2.14 Закройте среду программирования
Лабораторная работа № 4
Массивы и циклы
Задание: Разработать приложение для расчета параметров стандартной
атмосферы при изменении высоты с заданным приращением в диапазоне высот
от 0 до 15000м, в котором:
 начальное (Hнач) и конечное (Hкон) значения высоты, а также ее приращение
(Hприр) считываются из соответствующих текстовых полей (форма 1),
 проводится проверка правильности ввода исходных данных (Hнач и Hкон в
диапазоне от 0 до 15000м, Hнач<Hкон, Hприр< Hкон),
 выводится соответствующее сообщение при ошибке ввода,
 результаты расчета представляются в виде таблицы (форма 2).
Форма 1 должна обеспечивать:
 размещение четырех командных кнопок с названиями “Cancel”,
“OK”, “Help” и “Table”,
 ввод значений высоты в текстовые поля с надписями “Начальная
высота”, “Приращение высоты”, “Конечная высота”,
 вывод формы 2 после нажатия на кнопку “Table”,
 вывод информационной панели при нажатии кнопки Help.
Форма 2 должна обеспечивать:
 вывод результатов расчета в табличной форме с просмотром всей
таблицы;
 фиксированные размеры формы;
 размещение командной кнопки “Exit” для возврата к форме 1 и закрытия
формы 2;
 расположение формы 2 на экране без перекрытия формы 1.
В ходе работы необходимо
11
изучить:
 понятие о циклах, статических и динамических массивах,
 команды меню для работы с проектом;
научиться:
 добавлять новые формы к проекту,
 задавать размерность массивам,
 программировать вычисления с использование
различных циклов:
Do…Loop, For… Next,
1. Теоретическая часть
1.1 Меню среды программирования
В меню Project (Проект) собраны команды, предназначенные для
управления проектом. Большинство команд этого меню предназначено для
включения в состав текущего проекта нового элемента. Каждая Add-команда
открывает окно диалога, которое позволяет создать и включить в состав
проекта новый элемент (или, не создавая нового, выбрать и включить в проект
существующий элемент). Рассмотрим те пункты, которые будут использоваться
в лабораторной работе.
Add Form (Добавить форму). Открывает окно диалога, позволяющее
включить в состав проекта новую или существующую форму.
Remove... (Исключить...). Многоточие здесь представляет текущий
элемент проекта. В результате выполнения этой команды соответствующий
элемент будет исключен из состава проекта.
Properties (Свойства проекта ...). Многоточие здесь представляет имя
текущего проекта. Открывает окно свойств проекта, позволяющее их изменить.
Диалог состоит из четырех вкладок, рассмотрим одну из них:
• General (Общие). Эта вкладка содержит наиболее общие свойства
проекта: имя проекта, его тип, стартовый объект и др..
1.2. Массивы
Массивом (Array) называют набор однотипных переменных,
обьединенных одним именем и имеющих определенный порядковый номер.
Номер, определяющий конкретный элемент массива, называется индексом (I
ndex). Поэтому элемент массива называют еще индексированной переменной.
Таким образом массив способен хранить не одно, а множество значений.
Обращение к элементу массива производится указанием номера
элемента в круглых скобках после имени массива. В качестве индекса
используются только целые переменные (или числа). По умолчанию элементы
массива нумеруются от нуля. Массивы могут быть одномерные и многомерные
– данные из любой таблицы можно представить как двумерный массив.
Visual Basic позволяет создавать массивы для данных любых типов.
Синтаксис стандартного объявления массива:
 одномерного
{ Dim | Global } uмя(maxSize) [As тип]
12
 двумерного
{ Dim | Global } uмя(maxSize1, maxSize2) [As тип]
Значение в круглых скобках (maxSize) называется размерностью
(Dimension) массива. Оно сообщает Visual Basic о том, какой объем памяти
нужно отвести под массив. Для двумерного массива размерность определяется
как произведение (maxSize1*maxSize2). Переменные maxSize должна быть
целого типа. Стандартное объявление создает массив, элементы которого
нумеруются от нуля до maxSize. Например, оператор
Dim X(3) As Integer
объявляет одномерный массив с четырьмя элементами: Х(0), Х(1), Х(2) и Х(3).
Для того, чтобы нумерация начиналась с единицы необходимо в начале
программы указать Option Base 1.
Определение размера массива в период выполнения программы.
Когда массив определяется оператором Dim, то явным образом
указывается его размер. Но; не всегда можно заранее предсказать точный
размер массива. В отдельных случаях его размер можно взять с запасом. Но
при таком подходе обязательно появляются две проблемы. Во-первых,
слишком большой массив — пустая трата памяти. А во-вторых, нет гарантии в
том, что обьем массива будет достаточен.
В Visual Basic эту проблему решает оператор ReDim, позволяющий
переопределять массивы. Оператор ReDim — не объявление, а команда,
выполняемая только при работе программы. Чтобы им воспользоваться,
уберите из объявления массива определение размерности maxSize. Это заставит
Visual Basic создать динамический массив (dynamic array); его размер — в
отличие от статического — может изменяться. Синтаксис оператора ReDim
имеет следующий вид:
ReDim [Preserve] nepeменная (maxSize )
Его синтаксис похож на синтаксис оператора Dim с той разницей, что
здесь допускается указывать ключевое слово Preserve, а вместо maxSize можно
подставить любое целочисленное выражение. Если в операторе ReDim нет
ключевого слова Preserve, предыдущее содержимое массива уничтожается при
его переопределении (т.е. массив фактически создается заново). При наличии
ключевого слова Preserve, новый массив сохраняет содержимое предыдущего.
Однако, если новый размер меньше, чем старый, "лишние" элементы,
естественно, отбрасываются.
13
Массивы объектов
Кроме обычных массивов, хранящих данные различного типа, в Visual
Basic разрешается определять массивы объектов (Control arrays) (элементов
управления), что весьма удобно, если в программе имеются группы объектов,
действующих примерно одинаково. Такие массивы позволяют "привязывать"
разные элементы управления к одной процедуре обработки события. Например,
если в программе создан массив из трех командных кнопок, щелчок любого из
этих объектов вызывает одну и ту же процедуру обработки события Click.
Visual Basic дает возможность различать конкретные объекты в массиве — это
достигается передачей в процедуру индекса нужного элемента.
Циклы
Цикл Do….Loop позволяет многократно выполнять какую-либо группу
операторов. Синтаксис его простейшей формы:
Цикл с предусловием
Do { While | Until } условие выхода
[операторы]...
Loop
Цикл с постусловием
Do
[операторы]...
Loop { While | Until } условие выхода
Ключевое слово Do помечает начало составного оператора, в который
входят все операторы вплоть до ключевого слова Loop. Операторы
последовательно выполняются программой, пока не встретится ключевое слово
Loop; после чего происходит возврат к первому оператору за ключевым словом
Do. Закончив цикл, программа продолжается с оператора, стоящего за
ключевым словом Loop. После ключевого слова While или Until должно
присутствовать условие выхода в форме логического выражения. Группу
повторяемых таким образом операторов называют циклом (loop). А когда
программа обрабатывает эти операторы, говорят, что она выполняет цикл.
Бесконечный цикл — это цикл у которого никогда не выполняется условие
выхода.
В Visual Basic организовать выход из цикла можно по-разному. Если
используется ключевое слово While (до тех пор, пока…), которое указывается
за оператором Do, и условие выхода в форме логического выражения имеет
значение True, то операторы, расположенные в теле цикла, выполняются. Если
выражение принимает значение False, операторы, расположенные в теле цикла,
пропускаются.
Ключевое слово While допустимо указывать и за ключевым словом
Loop. Однако тогда эффект будет чуть-чуть другой. В этом случае цикл
14
исполняется по крайней мере один раз, так как условие проверяется после
Loop.
В ряде случаев имеет смысл заменить ключевое слово While другим —
Until. Последнее инвертирует логику проверки условия.
Циклы со счетчиком
Оператор For позволяет создавать в программах циклы со счетчиком,
равномерно уменьшающим или увеличивающим свои значения. Его синтаксис:
For переменная = начальное_значение То конечное_значение [Step приращение]
[операторы}.
Next [переменная}
Оператор For организует цикл, в котором переменная-счетчик
инициализируется начальным значением; с каждым циклом оно возрастает на
величину заданного приращения до тех пор, пока переменная-счетчик не
достигнет конечного значения. Если раздел Step опускается, приращение
составляет 1. Начальное значение должно быть меньше конечного — если
только приращение не является отрицательным. В последнем случае начальное
значение, естественно, должно быть больше конечного.
Цикл For можно записать как цикл Do While, однако первый проще,
поэтому применяется гораздо чаще. Отметим, что выражение То в цикле For
эквивалентно сравнению "меньше или равно" в цикле Do While (при
положительном приращении) либо "больше или равно" (при отрицательном).
Поэтому для выхода из цикла величина переменной-счетчика не обязательно
должна совпадать с конечным значением, указанным в цикле.
2. Порядок выполнения работы
2.1 Откройте новый проект:
 запуститe среду программирования Visual Basic, появится окно
среды с диалоговым окном нового проекта (New Project), в котором указан
установленный по умолчанию тип проекта Standard.exe.
 в диалоговом окне New Project нажать кнопку Open. После запуска
среды программирования
появляется форма, которая по умолчанию
называется Form1,
 выведите на экране окна Properties Window и Project Explorer,
если они невидимы. Обратите внимание на то, что в окне Project Explorer в
папке Forms имеется одна форма Form1 с именем (Form1).
2.3 Добавьте в проект новую форму – форму 2:
 выберите в строке меню системы программирования пункт
Project,
 выполните команду Add Form. В появившемся окне Add Form на
закладке New предлагается по умолчанию Form,
 в окне Add Form нажмите кнопку Open. Появляется окно проекта с
новой формой, которая по умолчанию называется Form2. Обратите
15
внимание на то, что в окне Project Explorer в папке Forms появилась новая
форма Form2 с именем по умолчанию (Form2).
2.4 Задайте свойства Form1 и Form2 согласно таблице 2.1. Переход от
одной форме к другой осуществляется двойным щелчком на пиктограмме
формы в окне Project Explorer.
Таблица 2.1
Объект
Свойство
Значение
Form1
Name
frmSa
Caption
Исходные данные
Height
6000
Width
3000
Top
10
BoderStyle 1- Fixed Single
BackColor Светло-желтый
Form2
Name
frmTabl
Caption
Параметры стандартной атмосферы
Height
6000
Width
6000
Left
3000
Top
10
BoderStyle 1- Fixed Single
2.5 Задайте пути для сохранения проекта в своей личной папке:
 перейдите в окно Project Explorer и убедитесь в том, что активна
форма с именем frmSa,
 откройте меню File,
 в открывшемся диалоговом окне Save File As :
убедитесь, что открыта ваша личная папка на диске Z:,
укажите имя файла satm4-1, нажмите на кнопку “Save“,
 перейдите в окно Project Explorer и сделайте активной форму с
именем frmTabl,
 откройте меню File,
 в открывшемся диалоговом окне Save File As :
убедитесь, что открыта ваша личная папка на диске Z:,
укажите имя файла satm4-2, нажмите на кнопку “Save“,
 откройте меню File,
 выполните команду Save Project As,
 в открывшемся диалоговом окне Save Project As :
убедитесь, что открыта ваша личная папка на диске Z:,
введите имя файла satm4 (по умолчанию оно будет Project1)
и нажмите на кнопку “Save“
2.6 Расположите ЭУ на форме 1 (frmSa )
 перейдите в окно Project Explorer и сделайте активной форму с
именем frmSa,
16
 расположите на форме командные кнопки Command1, Command2,
Command3, Command4 и текстовые поля Text1, Text2, Text3,
 задайте им свойства согласно таблице 2.2 и 2.3:
Таблица 2.2
Объект
Свойство
Значение
Группа командных
Font**
Arial, (полужирный)
кнопок
Bold,12
MousePoiter NoDrop
Command1
Name
CmdCnl
Caption
&Cancel
Cancel
True
TabIndex
5
Command2
Name
CmdHlp
Caption
&Help
TabIndex
4
Command3
Name
CmdOk
Caption
&OK
TabIndex
3
Default
True
Command4
Name
CmdTbl
Caption
&Table
Enabled
False
Таблица 2.3
Объект
Группа
полей
Text1
Text2
Text3
Свойство
текстовых Font**
ForeColor
MaxLenght
Name**
Text
TabIndex
Name
TabIndex
Text
Name
TabIndex
Text
Значение
Arial, (полужирный)
Bold,12
синий
5
TxtHn
(пустая строка)
0
TxtHpr
1
(пустая строка)
TxtHk
2
(пустая строка)
 расположите на форме метки Label1, Label2, Label3 и задайте им свойства
согласно таблице 2.4:
17
Таблица 2.4
Объект
Группа меток
Label1
Label2
Label3
Свойство
AutoSize
Caption
Caption
Caption
Значение
True
Начальная высота (м)
Приращение высоты (м)
Конечная высота (м)
2.7 Расположите ЭУ на форме 2 (frmTabl)
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmTabl,
 расположите на форме 2 командную кнопку Command1 и задайте ей
свойства согласно таблице 2.5:
Таблица 2.5
Объект
Свойство
Значение
Command1
Name
CmdExt
Caption
&Exit
 расположите на форме 2 текстовое поле Text1(с размерами на всю форму) и
задайте ему свойства согласно таблице 2.6:
Таблица 2.6
Объект
Свойство
Значение
Text1
Name**
TxtTbSa
Font**
Arial,
(полужирный)
Bold,12
ForeColor
синий
ScrollBars
2-Vertical
MultiLine
True
Text
(пустая строка)
2.8 Создайте код для обработки события нажатие кнопки Cancel (как в работе
№2)
2.9 Создайте код для обработки события нажатие кнопки Table.
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmSa,
 введите в тело процедуры Private Sub cmdTbl_Click() текст
rmTabl.Show
frmSa.CmdTbl.Enabled = False
2.10 Создайте код для обработки события нажатие кнопки Ok.
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmSa,
 введите в тело процедуры Private Sub cmdOk_Click() текст
cmdTbl. Enabled = True
2.11 Создайте код для обработки события нажатие кнопки Exit.
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmTabl,
18
 введите в тело процедуры Private Sub cmdExt_Click() текст
frmSa.Show
Me.Hide
2.12 Сохраните проект в своей личной папке.
 перейдите в окно Project Explorer и убедитесь в том что активна форма с
именем frmSa,
 откройте меню File и выполните команду Save satm4-1.frm,
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmTabl,
 откройте меню File и выполните команду Save satm4-2.frm,
 откройте меню File и выполните команду Save Project .
2.13 Протестируйте программу
 запустите программу на выполнение в среде VB5.0,
 установите курсор на кнопку Ok и нажмите клавишу Enter. Кнопка Table
становится доступной,
 установите курсор на кнопку Table и нажмите левую клавишу мыши. На
экран выводится форма 2,
 установите курсор на кнопку Table и нажмите клавишу Enter. Форма 1
становится активной.
 нажмите клавишу Esc. Обратите внимание на то, что происходит выход из
программы с удалением обеих форм с экрана.
2.14 Создайте код обработки события при нажатии кнопки Help, который
обеспечивает вывод информационной панели
 с текстом заголовка "Ввод исходных данных",
 с пунктами сообщения:
"1. Допустимый диапазон высот от 0 до 15000 м”
“2. Значение начальной высоты должно быть меньше значения
конечной высоты"
"3. Приращение высоты должно быть меньше значения конечной
высоты
“4. Для запуска - нажать клавишу Enter "
2.15 Протестируйте программу и убедитесь в правильности вывода
информационной панели.
2.16 Объедините результаты расчета в двумерный массив gsngSa(1, 100),
состоящий из 5 строк и ста колонок, и объявите его глобальным.
Переменная
Имя массива
Расчетные значения высот
gsngSa(1, 100)
Значение давлений для высот
gsngSa(2, 100)
Значение плотности для высот
gsngSa(3, 100)
Значение температуры для высот
gsngSa(4, 100)
Значение скорости звука для высот
gsngSa(5, 100)
19
 вызовите окно кода,
 выберите в списке объектов элемент (General), в списке процедур появится
один элемент Declarations,
 установите режим проверки объявления всех переменных, введя в поле кода
следующий текст
Option Explicit,
 установите нумерацию индексов массива с единицы, введя в поле кода
следующий текст
Option Base 1
 объявите массив gsngSa(5, 100), введя в поле кода текст
Dim gsngSa(5, 100) As Single
2.17 Объявите в процедуре cmdOK_Click() константы как локальные.
Константа
Значение
Имя
константы
костанты
Давление у земли
101325
sngP0
Коэффициент
133.322
sngCfnP
перевода давления из
мм.рт.ст. в н/м2
Плотность у земли
1.225
sngR0
Коэффициент
9.0665
sngCfnR
перевода плотности из
кгс*c2/м4 в кг/м3
Температура у земли
288.15
sngT0
Температура
на 216.7
sngTh11000
высоте 11000 метров
 выберите в поле кода процедуру cmdOK_Click(),
 введите перед строкой cmdTbl. Enabled = True следующий текст
Rem Описание констант
Const sngP0 As Single = 101325
‘Значение давления у земли
 аналогичным образом объявите остальные константы.
2.18 Объявите другие переменные как локальные
 введите в процедуру cmdOK_Click() после блока описания констант
следующий текст
Rem Описание локальных переменных
Dim sngGradTempH As Single
Dim gsngH_n As Single ‘ Начальное значение высоты
Dim gsngH_pr As Single ’ Приращение значения высоты
Dim gsngH_k As Single ’Конечное значение высоты
Dim sngStpn As Single
Dim j As Integer
Dim k As Integer
Dim m As Integer
2.19 Присвойте переменным начальные значения и организуйте ввод исходных
данных
20
 введите в процедуру cmdOK_Click() после блока описания локальных
переменных следующий текст
Rem Присвоение и ввод переменных
sngGradTempH = 0.0065
 организуйте ввод переменных - введите
gsngH_n = Val(txtHn.Text)
gsngH_k = Val(txtHk.Text)
gsngH_pr = Val(txtHpr.Text)
 присвойте значения переменным - введите
j=1
2.20 Сформируйте в процедуре cmdOK_Click() управляющую структуру
 введите пред строкой cmdTbl.Enabled = True следующий текст
If gsngH_n < 0 Or gsngH_n > 15000 Or gsngH_k < 0 Or gsngH_k > 15000 Then
Rem Вывод сообщения об ошибке ввода высоты
MsgBox "1. Значение высоты или приращения высоты выходят за
допустимые пределы " + vbCrLf _
+ "2. Введите значение высоты от 0 до 15000 метров "
Else If gsngH_k <= gsngH_n Then
MsgBox "1. Значение конечной высоты меньше начальной высоты"
TxtHn.Text = "" 'Вывод пустой строки в поле ввода
TxtHk.Text = ""
TxtHpr.Text = ""
Else
gsngSa(1, j) = gsngH_n ‘ Начальное значение высоты присваивается
элементу массива с индексом 1.
Rem Расчет параметров атмосферы
End If
2.21 Протестируйте программу
 запустите программу на выполнение в среде VB5.0,
 введите в поле ввода начальной высоты значение 1000,
 введите в поле ввода приращение высоты значение 1000,
 введите в поле ввода конечной высоты значение 1000,
 нажмите клавишу Enter. Должна выводиться информационная панель с
сообщением об ошибке ввода,
 закройте информационную панель,
 введите в поле ввода другие ошибочные значения высот,
 нажмите клавишу Enter,
 закройте информационную панель,
 завершите выполнение программы, нажав значок [X] в заголовке формы.
2.22 Организуйте цикл вычислений с включением управляющей структуры для
выбора расчетных зависимостей в зависимости от высоты.
 после строки “Rem Расчет параметров атмосферы” введите следующие
21
строки
Do While gsngSa(1, j) <= gsngH_k
If gsngSa(1, j) <= 11000 Then
'Формулы расчета для тропосферы
End If
If gsngSa(1, j) > 11000 Then
'Формулы расчета для стратосферы
End If
Rem Расчет параметров цикла
gsngSa(1, j + 1) = gsngSa(1, j) + gsngH_pr ‘ Определение высоты
для нового шага цикла
j = j + 1’ Увеличение счетчика количества циклов
Loop
2.23 Закодируйте формулы расчета параметров атмосферы в тропосфере
 введите в процедуру после строки комментария “Формулы расчета для
тропосферы” выражение для расчета давления
gsngSa(2, j) = sngP0 * (1 - gsngSa(1, j) / 44300) ^ 5.256
 аналогичным образом введите выражения для расчета плотности,
температуры и скорости звука.
2.24 Закодируйте формулы расчета параметров стандартной атмосферы в
стратосфере
 после строки комментария “Формулы расчета для стратосферы” введите
выражение для расчета пременной sngStpn
sngStpn = -(gsngSa(1, j) - 11000) / 6340
 для расчета давления в стратосфере введите
gsngSa(2, j) = 169.4 * Exp(sngStpn) * sngCfnP
 аналогичным образом введите выражения для расчета плотности,
температуры и скорости звука в стратосфере.
2.25 Подготовьте текстовые поля ввода для ввода новых значений
 в процедуре cmdOK_Click() перед строкой CmdTbl.Enabled = True - введите
TxtHn.Text = "" 'Вывод пустой строки в поле ввода
TxtHk.Text = ""
TxtHpr.Text = ""
Rem Формирование строк вывода результатов расчета
2.26 Сформируйте строку вывода результатов расчета переменной gstrP_sa
 в разделе общих описаний обьявите глобальную строковую переменную
Public gstrP_sa As String
 в процедуре cmdOK_Click() после строки “Rem Формирование строк вывода
результатов расчета” сформируйте строку вывода значения высоты –
введя
For m = 1 To i
For k = 1 To 5
gstrP_sa = gstrP_sa + Format(gsngSa(k, m), "Scientific") + Space$(2)
22
Next k
gstrP_sa = gstrP_sa + vbCrLf
Next m
gstrP_sa = "Высота " + " Давление" + " Плотность" + "Температура" _
+ "Скорость звука" + vbCrLf + gstrP_sa
2.27 Организуйте вывод строки результатов в форме 2
 в процедуре Private Sub Form_Activate() после строки введите текст
frmTabl.TxtTbSa.Text = frmSa.gstrP_sa
2.28 Протестируйте программу. При тестировании в первую очередь проверяют
правильность расчета при граничных условиях и в характерных точках.
 запустите программу на выполнение в среде VB5.0,
 введите в поле ввода начальной высоты значение 0,
 введите в поле ввода приращенния высоты значение 1000,
 введите в поле ввода конечной высоты значение 15000,
 нажмите клавишу Enter. Кнопка Table становится доступной,
 нажмите кнопку Table. На экран выводится форма 2. Сравните результаты с
табличными значениями
Высота
Давление
Плотность Температура Скорость
звука
0
101325
1,225
288
340,28
11000
22690
0,364
216,6
294,3
15000
12107
0,194
216,6
294,3
 завершите выполнение программы, нажав значок [X] в заголовке формы.
2.29 Протестируйте программу.
 запустите программу на выполнение в среде VB5.0,
 введите в поле ввода начальной высоты значение 0,
 введите в поле ввода приращенния высоты значение 10,
 введите в поле ввода конечной высоты значение 15000,
 нажмите клавишу Enter. Программа не работает. Обьясните причину.
2.30 Устраните ошибку для чего
 в необходимых местах кода программы вставьте следующие операторы
Dim gsngSa() As Single
Dim i As Integer
i = (gsngH_k - gsngH_n) \ gsngH_pr + 1
ReDim gsngSa(5, i + 1)
 повторите пунк 2.29 и убедитесь в нормальной работе программы.
2.30 Сохраните разработанный проект.
2.31 Закройте среду программирования
23
Лабораторная работа № 5
Процедуры и функции
Задание: Модифицировать код приложения Satm4, оформив как
отдельные процедуры:
 формулы расчета параметров стандартной атмосферы
в
тропосфере и стратосфере,
 вывод сообщений, когда значения высот вводятся с ошибкой,
 запрет ввода текстовых символов в поля ввода,
 запрет нажатия клавиши OK, если хотя бы в одном из полей ввода
отсутствуют цифровые символы.
В ходе работы необходимо
изучить:
 команды меню для создания процедур;
научиться:
 добавлять новые формы к проекту,
 создавать код процедур.
Теоретическая часть
1.1 Меню среды программирования
Меню Tools (Инструментарий) содержит команды, которые позволяют
пользователю: создавать свои процедуры, настраивать параметры системы
программирования, создавать свое меню.

Add Procedure (Создать процедуру). Открывает окно диалога,
помогающее программисту создать процедуру, функцию, свойство или
событие. Командой открывается диалог Add Procedure, позволяющий создать
заготовку процедуры или функции при условии, что окно кода является
текущим. Введите имя процедуры, установите переключатели в требуемое
положение, щелкните на кнопке ОК, и соответствующая заготовка будет
вставлена в текст.

Procedure Attributes (Атрибуты). Позволяет установить атрибуты
для свойств и методов объекта.

Menu Editor (Редактор меню). Открывает окно редактора меню,
позволяющее присоединить меню к текущей форме.

Options (Параметры). Открывает окно диалога (шесть вкладок),
позволяющее менять параметры и настройки системы программирования.
1.
1.2 Процедуры и функции
Процедуры и функции являются важными блоками программы на
любом языке процедурного типа, а в таком языке, как Visual Basic практически
весь код программы состоит из процедур и функций.
В программе на языке Visual Basic можно использовать несколько видов
процедур и функций:
24
 Процедура
представляет
собой
самостоятельную
часть
программного кода, обладающую уникальным именем, благодаря которому
она может быть вызвана и выполнена. Процедура не возвращает никакого
значения в ту точку, откуда она была вызвана, но ей можно передать
параметры.
 Функция во всем подобна процедуре, а единственное ее отличие
состоит в том, что функция возвращает значение в то место, откуда она была
вызвана.
 Процедура-обработчик события отличается от обычной
процедуры тем, что программа вызывает ее автоматически при наступлении
соответствующего события.
 Процедура-свойство. Чтобы снабдить существующий объект
(например, форму) новым свойством, необходимо создать пару процедур,
которые будут автоматически вызываться каждый раз, когда свойству
присваивают значение или обращаются к значению свойства .
Чтобы код функции или процедуры был исполнен, она должна быть
вызвана. Вызов процедуры осуществляется вставкой ее имени в текст
программы. Сразу после имени должны следовать параметры процедуры, если
таковые предусмотрены.
ИмяПроцедуры[Параметр1, Параметр2,]
Другой способ вызова процедуры заключается в в использовании
ключевого слова Call. При этом за ним должно следовать имя процедуры и
заключенный в скобки список параметров.
Call ИмяПроцедуры (Параметр1, Параметр2,)]
Visual Basic позволяет программисту объявлять собственные процедуры
и функции. Для объявления процедуры используют следующий синтаксис:
[Private/Public/Priend] [Static] Sub ИмяПроцедуры [(Параметры)]
[Операторы]
[Exit Sub]
[Операторы]
End Sub
Синтаксис объявления функции:
[Private/Public/Friend] [Static] Function ИмяФункции [(Параметры)] [As Имя Типа]
[Операторы]
[ИмяФункции = Выражение]
[Exit Function]
[Операторы]
[ИмяФункции = Выражение]
End Function
25
В данной записи ключевые слова имеют следующие назначения:
 Public - объявляет процедуру или функцию как глобальную, т.е.
она будет доступна всем процедурам и функциям всех модулей и форм.
 Private - объявляет процедуру только в пределах того модуля, где
она объявлена.
 Friend - объявляет процедуру только в модулях классов.
 Static - . объявляет все переменные внутри процедуры как
статические.
 ИмяПроцедуры/ИмяФункции – это идентификатор, с помощью
которого можно вызвать соответствующую процедуру или функцию.
 Параметры - объявляет список параметров.
 ИмяТипа - определяет тип возвращаемого функцией значения.
Допустимы все стандартные типы, а также типы, определяемые
пользователем. Если тип функции не указан, то она будет возвращать
значение типа Variant.
 Операторы – это операторы, составляющие тело функции или
процедуры.
 Выражение - задает возвращаемое функцией значение.
 Exit Sub/Exit Function - осуществляет досрочный выход из
процедуры или соответственно функции.
Синтаксис списка параметров, обозначенный ранее как Параметры, сам
по себе является достаточно многовариантным:
[Optional][ВуVal/ВуRef][РагаmАггау]ИмяПараметра[()]
[As ИмяТипа][=ЗначениеПоУмолчанию]
Optional.
Это
зарезервированное
слово
(атрибут)
должно
предшествовать имени того параметра, который является необязательным.
После необязательных параметров могут следовать только необязательные же
параметры. Нельзя использовать необязательные параметры совместно с
массивом параметров (ParamArray).
ByVal. Параметр, имени которого предшествует это слово, будет
передаваться в процедуру или функцию по значению. Если параметром
окажется внешняя относительно процедуры переменная, то никакие
манипуляции с этим параметром в коде процедуры не изменят значения этой
внешней переменной.
ByRef. Если имени параметра предшествует это слово, то передача
параметра будет производиться по ссылке, т. е. значение внешней переменной,
переданной в процедуру в качестве этого параметра, может быть изменено
операторами процедуры. Режим передачи параметров по ссылке принят в языке
Visual Basic по умолчанию.
ParamArray. Массив параметров. Таковым может быть объявлен только
последний параметр в списке, при этом он будет представлять собой
переменную типа Variant, содержащую в себе массив. Этим способом можно
передавать в процедуру или функцию значительные объемы данных. При
26
использовании массива параметров нельзя применять атрибуты Optional,
ByVal и ByRef.
ИмяПараметра. Идентификатор, по которому будет происходить
обращение к параметру в коде процедуры или функции.
ИмяТипа. Определяет требуемый тип параметра, допустимы
определяемые пользователем, а также все стандартные типы.
ЗначениеПоУмолчанию. Допустимо только для необязательных параметров
(т. е. тех, имени которых предшествует зарезервированное слово Optional).
Задает значение, которое будет автоматически присвоено параметру в случае
его отсутствия. Если параметр отнесен к типу Object, то единственное
допустимое значение по умолчанию — Nothing.
2. Порядок выполнения работы
2.1 Откройте проект Satm4.
2.2 Оформите формулы расчета параметров атмосферы как отдельные
процедуры
2.2.1 Объявите процедуры расчета параметров атмосферы в тропосфере и
стратосфере
 перейдите в окно Project Explorer и убедитесь в том что активна форма с
именем frmSa,
 откройте окно кода,
 откройте меню Tools и выполните команду Add Procedure,
 в открывшемся окне в поле Name введите имя новой процедуры Sa_Tropo процедуры расчета параметров атмосферы в тропосфере,
 убедитесь в том, что активны переключатели Sub и Public,
 нажмите кнопку Ok – в поле кода появляется обьявление новой процедуры
Sa_Tropo
Public Sub Sa_Tropo()
End Sub
 аналогичным образом обьявите процедуру Sa_Strato для расчета параметров
атмосферы в стратосфере.
2.2.2 Переместите необходимые операторы в процедуры
 перейдите в код процедуры Private Sub CmdOk_Click(),
 выделите формулы расчета параметров атмосферы в тропосфере (четыре
строки после строки 'Формулы расчета для тропосферы) и нажмите
клавиши Ctrl+X. Выделенный блок удаляется в буфер обмена.
 установите курсор в тело процедуры Sa_Tropo() и нажмите левую клавишу
мыши,
 нажмите клавиши Ctrl+V. В тело процедуры из буфера обмена копируются
формулы расчета параметров атмосферы в тропосфере,
 перейдите в код процедуры Private Sub CmdOk_Click(),
выделите строки с описанием констант (sngP0, sngR0, sngT0) и переменных
(sngGradTempH) и переместите их в тело процедуры Sa_Tropo().
27
 аналогичным образом переместите необходимые формулы, константы и
переменные, используемые при расчете параметров в стратосфере, в тело
процедуры Sa_Strato.
2.2.3 Организуйте передачу параметров в процедуры и их вызов
 введите в скобки после имени процедуры Sa_Tropo следующий текст
j As Integer,
 введите в скобки после имени процедуры Sa_Strato следующий текст
j As Integer,
 перейдите в код процедуры Private Sub CmdOk_Click(),
 в конец строки If gsngSa(1, j) <= 11000 Then - введите текст
Call Sa_Tropo( j )
 в конец строки If gsngSa(1, j) > 11000 Then - введите текст
Call Sa_Strato( j )
 уберите ненужные теперь ключевые слова End If
2.3 Сохраните проект в своей личной папке под новым именем – Satm5.
 перейдите в окно Project Explorer и убедитесь в том что активна форма с
именем frmSa,
 откройте меню File и выполните команду Save satm4-1.frm As,
 в открывшемся окне в поле File name (Имя файла) укажите новое имя
Satm5-1 и нажмите клавишу Save (Сохранить),
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmTabl,
 откройте меню File и выполните команду Save satm4-2.frm As,
 в открывшемся окне в поле File name укажите новое имя Satm5-2 и нажмите
клавишу Save,
 откройте меню File и выполните команду Save Project As,
 в открывшемся окне в поле File name укажите новое имя Satm5 и нажмите
клавишу Save.
2.4 Протестируйте программу на ввод возможных ошибочных данных.
2.4.1 Ввод символов букв
 запустите программу на выполнение в среде VB5.0,
 введите в поле ввода начальной высоты 0,
 введите в поле ввода приращение высоты строку символов asdf. Обратите
внимание на то, что программа позволяет вводить вместо цифровых
символов символы букв,
 введите в поле ввода конечной высоты значение 100.
 нажмите клавишу Enter. Выводится информационная панель системы
программирования с сообщением об ошибке – деление на ноль.
 нажмите кнопку Debug в информационной панели. Обратите внимание на
то, что в поле кода оператор, в котором произошла ошибка вычислений,
выделяется желтым фоном,
 завершите выполнение программы, выполнив команду End из меню Run.
2.4.2 Ввод нулевого значения конечной высоты
28





запустите программу на выполнение в среде VB5.0,
введите в поле ввода начальной высоты asdf,
введите в поле ввода приращение высоты значение 100,
введите в поле ввода конечной высоты значение 0.
нажмите клавишу Enter. Программа выполняется для одного цикла. Однако
этого допустить нельзя, т.к. была введена строка нецифровых символов в
поле ввода начальной высоты.
2.5 Организуйте проверку ввода значений исходных данных
2.5.1 Проверка значения приращения высоты (приращение высоты не должно
быть равно нулю и не может превышать значение конечной высоты)
 убедитесь в том, что форма с именем frmSa активна,
 перейдите в код процедуры Private Sub CmdOk_Click(),
 после строки gsngH_pr = Val(TxtHpr.Text) введите текст
Select Case gsngH_pr
Case Is >= gsngH_k
MsgBox "1.Значение конечной высоты должно быть больше" _
+" приращения высоты"
Case Is = 0
MsgBox "1.Значение приращения высоты должно быть больше 0" _
+ vbCrLf + "2. Повторите ввод"
TxtHn.Text = "" 'Вывод пустой строки в поле ввода
TxtHk.Text = ""
TxtHpr.Text = ""
GoTo M1 ‘ Переход к концу процедуры Private Sub CmdOk_Click()
End Select
 установите метку безусловного перехода - введите перед строкой End Sub
текст M1:
2.5.2 Проверка значения конечной высоты (если конечная высота меньше
начальной, то осуществляется выход из процедуры Private Sub CmdOk_Click())
 выполните самостоятельно п. 2.5.1 с соответствующими изменениями имен
переменных и текстов сообщений.
2.6 Оформите вывод сообщения об ошибке ввода высоты (меньше нуля и
больше 15000 м ) как отдельную процедуру-функцию.
2.6.1 Обьявите новую функцию
 перейдите в окно Project Explorer и убедитесь в том, что форма с именем
frmSa активна,
 откройте окно кода,
 откройте меню Tools и выполните команду Add Procedure,
 в открывшемся окне в поле Name введите имя новой функции ErVvod_1,
которая будет выводить текст сообщений при вводе значения конечной
высоты меньше начальной,
 убедитесь в том, что активны переключатели Functiоn и Private,
 нажмите кнопку Ok – в поле кода появляется обьявление новой функции
ErVvod_1
29
Private Function ErVvod_1()
End Function
2.6.2 Переместите необходимые операторы в тело функции ErVvod_1()
 перейдите в код процедуры Private Sub CmdOk_Click(),
 выделите все строки от строки Rem Вывод сообщения об ошибке ввода
высоты до строки Else
 нажмите клавиши Ctrl+X.
 установите курсор в тело функции ErVvod_1() и нажмите левую клавишу
мыши,
 нажмите клавиши Ctrl+V
2.6.3 Организуйте вызов функций
 перейдите в код процедуры Private Sub CmdOk_Click(),
 обьявите переменную TextErVvod как переменную произвольного типа,
 после строки Rem Вывод сообщения об ошибке ввода высоты - введите текст
TextErVvod = ErVvod_1()
2.7 Оформите как отдельную процедуру проверку ввода только цифровых
символов в текстовые поля ввода.
2.7.1 Обьявите новую функцию
 перейдите в окно Project Explorer и убедитесь в том, что форма с именем
frmSa активна,
 откройте окно кода,
 откройте меню Tools и выполните команду Add Procedure,
 в открывшемся окне в поле Name введите имя новой функции Prov,
 убедитесь в том, что активны переключатели Functiоn и Private,
 нажмите кнопку Ok – в поле кода появляется обьявление новой функции
Prov
Private Function Prov ()
End Function
2.7.2 Введите необходимые операторы
 укажите формальные параметры функции – введите в скобки после имени
функции Prov текст KeyAscii
 введите в тело функции Prov необходимые операторы
Static DecPoint As Integer
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(".")
If DecPoint Then
KeyAscii = 0: Beep
Else
DecPoint = True
End If
Case Asc(",")
30
KeyAscii = 0
Case Else
KeyAscii = 0: Beep
End Select
Prov = KeyAscii
2.8 Организуйте вызов функции Prov при вводе символов в поле ввода
начальной высоты TxtHn
 убедитесь в том, что форма с именем frmSa активна,
 в разделе общих описаний обьявите глобальную переменную – введите
Public KeyAscii As Integer
 в поле кода из списка обьектов выберите TxtHn,
 из списка процедур выберите процедуру KeyPress. Появляется обьявление
процедуры
Private Sub TxtHn_KeyPress(KeyAscii As Integer)
End Sub
 введите в тело процедуры необходимые операторы
Dim Simv
Simv = Prov(KeyAscii)
2.9 Протестируйте программу на ввод символов букв
 запустите программу на выполнение в среде VB5.0,
 введите в поле ввода начальной высоты asd. Обратите внимание на то, что
программа не позволяет вводить вместо цифровых символов символы букв и
дает предупреждение сигналом,
 завершите выполнение программы, выполнив команду End из меню Run.
2.10 Организуйте вызов функции Prov при вводе символов в поле ввода
приращения высоты TxtHpr и конечной высоты TxtHk
 выполните самостоятельно п. 2.8 с соответствующими изменениями имен
переменных.
2.11 Протестируйте программу на ввод символов букв в поля ввода приращения
высоты и конечной высоты.
2.12 Сохраните разработанный проект.
2.13 Закройте среду программирования
Лабораторная работа № 6
Построение графиков
Задание: На основе приложения Satm5 создать приложение Satm6 в котором:
 результаты расчетов представляются в виде графиков
 зависимости давления атмосферы от высоты - форма 3,
 зависимости плотности атмосферы от высоты - форма 4,
 зависимостей температуры воздуха и скорости звука от высоты форма 5.
 вывод формы 3 происходит после нажатия на кнопку “Graph”,
расположенной на форме frmSa.
31
Форма 3 должна обеспечивать:
 вывод графика на весь экран,
 размещение командной кнопки “Next” для вызова формы 4 и закрытия
формы 3;
 размещение командной кнопки “Exit” для вызова формы 1 и закрытия
формы 3;
 размещение командной кнопки “Cancel” для выхода из программы;
Форма 4 должна обеспечивать:
 вывод графика на весь экран,
 размещение командной кнопки “Next” для вызова формы 5 и закрытия
формы 4;
 размещение командной кнопки “Exit” для вызова формы 3 и закрытия
формы 4;
 размещение командной кнопки “Cancel” для выхода из программы;
 фиксированные размеры формы;
Форма 5 должна обеспечивать:
 вывод графика на весь экран,
 фиксированные размеры формы;
 размещение командной кнопки “Exit” для возврата к форме 4 и
закрытия формы 5;
 размещение командной кнопки “Cancel” для выхода из программы;
 размещение командной кнопки “Next” для вызова формы 1;
В ходе работы необходимо
изучить:
 системы координат графических компонентов VB;
 методы и свойства графических компонентов VB, необходимые для
построения простейших изображений и графиков функций;
научиться:
 включать в проект графический компонент Picture Box и настраивать
его свойства для вывода в него графика функции;
 программировать построение в Picture Box графика функции одной
переменной по координатам отдельных точек графика, заданных
массивом.
Теоретическая часть
1.1 Системы координат компонентов VB
В VB можно строить изображения на следующих компонентах интерфейса:
 форма Form,
 графическое окно Picture Box.
Каждая графическая операция с этими компонентами использует систему
координат области рисования. Система координат определяет местоположение
32
точки в виде координат (x,y) , где x – смещение точки по горизонтали, а y –
смещение точки по вертикали. По умолчанию отсчет координаты x идет слева
направо, а координаты y - сверху вниз
Начало отсчета x и y а также единицы измерения по x и y задаются свойствами
компонента, настраиваемыми в окне свойств на этапе проектирования
интерфейса программы.
Свойство ScaleMode
задает единицы измерения и может принимать
следующие значения
Значение
Единицы измерения
0 – User
Определяются пользователем путем задания координат
верхнего левого угла, ширины и высоты поля рисования
(свойства ScaleLeft, ScaleTop, ScaleWidth, ScaleHeight – см.
ниже)
1 – Twip
Твипы. Это единицы по умолчанию. В одном дюйме 1440
твипов.
2 – Point
Пункты. В одном дюйме 72 пункта.
3 – Pixel
Пикселы – точки телевизионного растра. Число пикселов
на дюйм зависит от разрешения монитора и его размера.
4 – Character
Символы. Один символ имеет высоту 1/6 дюйма и ширину
1/12 дюйма.
5 – Inch
Дюймы.
6 – Millimeter
Миллиметры.
7 – Centimeter
Сантиметры.
Свойство ScaleLeft задает координату x верхнего левого угла поля рисования.
Свойство ScaleTopt задает координату y верхнего левого угла поля рисования.
Свойство ScaleWidth задает ширину поля рисования и измеряется слева
направо.
Свойство ScaleHight задает высоту поля рисования и измеряется сверху вниз.
Свойства ScaleLeft, ScaleTop, ScaleWidth, ScaleHeight могут принимать
любые значения, в том числе дробные и отрицательные.Например, если
необходимо, чтобы графическое окно Picture1 для вывода графика функции
y=sin(x) имело координаты поля рисования по x от 0 до 6,28 и по y от –1 до +1
нужно установить свойства:
Picture1.ScaleLeft=0
Picture1.ScaleTop=+1
Picture1.ScaleWidth=6,28
Picture1.ScaleHight=-2
По умолчанию левый верхний угол имеет координаты (0,0), а ширина и высота
поля рисования вычисляются автоматически в твипсах по размерам компонента
на экране.
33
1.2. Управление цветом
Поле рисования имеет 2 основных цвета, заданных соответствующими
свойствами:
BackColor – цвет фона, используется при очистке области рисования.
ForeColor - цвет переднего плана, используется при рисовании. Для рисования
конкретным цветом предварительно нужно установить этот цвет на переднем
плане, а затем вызывать методы рисования этим цветом.
Значение цвета задается встроенными константами VB, например: vbRed
красный, vbGreen – зеленый и т.д.
Для установки цвета используется операция присваивания, например, чтобы
нарисовать в графическом окне Picture1 линию белого цвета на желтом фоне
необходимо запрограммировать
Picture1.BackColor=vbYellow
Picture1.Cls
Picture1.ForeColor=vbWhite
Pictire.Line (0,0)-(100,100)
1.3. Графические методы
Метод
Cls
Pset
Point
Line
Circle
PaintPicture
Описание
Стирает все изображение в поле рисования
Рисует одну точку (пиксел) заданным цветом
Возвращает цвет заданной точки (пиксела)
Рисует линию, контурный или закрашенный прямоугольник
Рисует окружность, эллипс или дугу
Выводит картинку из массива данных в произвольном месте
Методом Cls можно в любой момент очистить поле рисования, которое
закрашивается цветом фона (свойство BackColor):
 [object].Cls
Без параметра object метод очищает всю экранную форму, в коде которой он
исполняется.
Например, очистка поля рисования графического окна Picture1 с закраской в
черный цвет:
Picture1.BackColor=vbBlack
Picture1.Cls
Метод Pset устанавливает цвет пиксела в заданной точке:
[object].Pset (x,y) [, color]
Параметры x и y могут быть целыми, дробными или числовым выражением
любой сложности.
34
Если цвет color не задан, по умолчанию используется цвет переднего плана
(свойство ForeColor).
Например, нарисовать точку голубого цвета с координатами x=100, y=200 в
графическом окне Picture1:
Picture1.Pset (100,200), vbBlue
Метод Line чертит линию между двумя точками с координатами (x1,y1) и
(x2,y2) :
Line (x1,y1) – (x2,y2) [, color]
Или из предыдущей точки черчения в заданную точку с координатами (x2,y2):
Line – (x2,y2) [, color]
Параметры x1,y1,x2,y2
могут быть целыми, дробными или числовым
выражением любой сложности.
Если цвет color не задан, по умолчанию используется цвет переднего плана
(свойство ForeColor).
Например, нарисовать линию синего цвета между точками (x=100, y=200) и
(x=300, y=400) в графическом окне Picture1:
Picture1.Line (100,200) – (300,400) , vbCyan
2. Порядок выполнения работы
2.1 Откройте проект Satm5.
2.2 Расположите ЭУ на форме frmSa:
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmSa,
 расположите на форме командную кнопку (по умолчанию будет создана
кнопка с именем Command1),
 задайте ей свойства согласно таблице 2.1:
Таблица 2.1
Объект
Свойство
Значение
Command1
Name
CmdGrph
Caption
&Graph
Font**
Arial, (полужирный)
Bold,12
MousePoiter NoDrop
TabIndex
6
2.3 Добавьте в проект новую форму – форму 3:
 перейдите в окно Project Explorer и убедитесь в том, что активна форма
frmSa,
 выберите в строке меню системы программирования пункт Project,
 выполните команду Add Form. В появившемся окне Add Form на закладке
New предлагается по умолчанию Form,
 в окне Add Form нажмите кнопку Open. Обратите внимание на то, что в
окне проекта появилась новая форма, которая по умолчанию называется
Form1.
35
2.4 Для добавления в проект формы 4 и формы5 повторите п. 2.2.
2.5 Задайте свойства формам Form1, Form2 и Form3 согласно таблице 2.2.
Переход от одной форме к другой осуществляйте двойным щелчком на
пиктограмме формы в окне Project Explorer.
Таблица 2.2
Объект
Свойство
Значение
Form1,
Height
8340
Form3,
Form2
Width
11760
Top
0
BoderStyle 1- Fixed Single
Form1
Name
frmGrph1
Caption
График зависимости давления от
высоты
Form2
Name
frmGrph2
Caption
График зависимости плотности от
высоты
Form3
Name
frmGrph3
Caption
Графики зависимости температуры
и скорости звука от высоты
2.6 Задайте пути для сохранения проекта в своей личной папке:
 перейдите в окно Project Explorer и убедитесь в том, что активна форма с
именем frmSa,
 откройте меню File,
 в открывшемся диалоговом окне Save File As :
 убедитесь, что открыта ваша личная папка на диске Z:,
 укажите имя файла satm6-1, нажмите на кнопку “Save“,
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmTabl,
 сохраните форму с именем satm6-2,
 аналогичным образом сохраните формы frmGrph1, frmGrph2 и frmGrph3
соответственно с именами satm6-3 satm6-4 satm6-5.
 откройте меню File,
 выполните команду Save Project As,
 в открывшемся диалоговом окне Save Project As введите имя файла satm6
(по умолчанию оно будет satm5) и нажмите на кнопку “Save“
2.7 Расположите ЭУ на форме frmGrph1:
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmGrph1,
 расположите на форме командные кнопки Command1, Command2 и
Command3,
36
 задайте им свойства согласно таблице 2.3:
Таблица 2.3
Объект
Группа командных
кнопок
Command1
Command2
Command3
Свойство
Значение
Font**
Arial, (полужирный)
Bold,11
MousePoiter NoDrop
Name
CmdCnl
Caption
&Cancel
Cancel
True
TabIndex
2
Name
CmdNxt
Default
True
Caption
&Next
TabIndex
0
Name
CmdExt
Caption
&Exit
TabIndex
1
2.7 Расположите ЭУ на формах frmGrph2 и frmGrph3
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmGrph2,
 выполните п. 2.6,
 повторите предыдущие пункты с соответствующими изменениями.
2.8 Создайте предварительный код для обработки нажатия кнопки Graph на
форме frmSa:
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmSa,
 выполните двойной щелчек на кнопке Graph
 введите в тело процедуры Private Sub cmdGrph_Click() текст
FrmGrph1.Show
Me.Hide
2.9 Создайте коды для обработки нажатий кнопок на форме frmGrph1:
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmGrph1,
 выполните двойной щелчек на кнопке Cancel
 введите в тело процедуры Private Sub cmdCnl_Click() текст
End
 выполните двойной щелчек на кнопке Next
 введите в тело процедуры Private Sub cmdNxt_Click() текст
FrmGrph2.Show
Me.Hide
37
 выполните двойной щелчек на кнопке Exit
 введите в тело процедуры Private Sub cmdExt_Click() текст
frmSa.Show
Me.Hide
2.10 Создайте коды для обработки нажатий кнопок на формах frmGrph2 и
frmGrph3 (повторите п 2.8 с соответствующими изменениями).
2.11 Протестируйте программу с пустыми формами
 запустите программу на выполнение в среде VB5.0,
 установите курсор на кнопку Graph и нажмите клавишу Enter – вызывается
форма frmGrph1,
 установите курсор на кнопку Next и нажмите левую клавишу мыши. На
экран выводится форма frmGrph2,
 установите курсор на кнопку Next и нажмите клавишу Enter. Форма
frmGrph3 становится активной.
 нажмите клавишу Esc. Обратите внимание на то, что происходит выход из
программы с удалением всех форм с экрана.
2.11 Разместите на форме frmGrph1 графическое окно для вывода графика
зависимости давления от высоты (высота – по оси Y снизу вверх от 0 до 15000
м, давление - по оси X слева направо от 10000 до 110000 паскалей).
 перейдите в окно Project Explorer и сделайте активной форму frmGrph1,
 откройте форму frmGrph1 кнопкой View Object на панели инструментов
Object Explorer (вторая слева),
 щелчком мыши выберите компонент PictureBox из палитры компонентов
Toolbox (вторая слева кнопка в верхнем ряду палитры),
 при нажатой кнопке мыши нарисуйте на форме frmGrph1 прямоугольник
графического окна максимально возможного размера,
 задайте свойства графического окна в соответствии с таблицей:
Свойство
Значение
Name
PctP_h
ScaleMode
0 – User
ScaleLeft
10000
ScaleTop
15000
ScaleWidth
100000
ScaleHight
-15000
AutoRedraw
True
 разместите вокруг графического окна надписи с указанием граничных
значений высоты и давления:
 слева от левой вертикальной рамки внизу надпись «0 км»
 слева от левой вертикальной рамки вверху надпись «15 км»,
 снизу под нижней горизонтальной рамкой слева надпись «10000 па»,
 снизу под нижней горизонтальной рамкой справа надпись «110000 па»,
38
(точное положение, размер надписей и их шрифт выбрать самостоятельно,
по аналогии с графиками функций, приведенными в литературе),
 сохраните обновленную форму кнопкой Save на панели инструментов VB.
2.12 Разместите на форме frmGrph2 графическое окно для вывода графика
зависимости плотности от высоты (высота – по оси Y снизу вверх от 0 до 15000
м, плотность - по оси X слева направо от 0,2 до 1,25).
 перейдите в окно Project Explorer, сделайте активной форму frmGrph2, и
откройте ее,
 выберите компонент PictureBox из палитры компонентов Toolbox и при
нажатой кнопке мыши нарисуйте на форме frmGrph2 прямоугольник
графического окна максимально возможного размера,
 задайте свойства графического окна в соответствии с таблицей:
Свойство
Name
ScaleMode
ScaleLeft
ScaleTop
ScaleWidth
ScaleHight
AutoRedraw
Значение
PctR_h
0 – User
0,2
15000
1,05
-15000
True
 разместите вокруг графического окна надписи с указанием граничных
значений высоты и плотности:
 слева от левой вертикальной рамки внизу надпись «0 км»
 слева от левой вертикальной рамки вверху надпись «15 км»,
 снизу под нижней горизонтальной рамкой слева надпись «0,2»,
 снизу под нижней горизонтальной рамки справа надпись «1,25»,
(точное положение, размер надписей и их шрифт выбрать самостоятельно,
по аналогии с графиками функций, приведенными в литературе),
 сохраните обновленную форму кнопкой Save на панели инструментов VB.
2.13 Разместите на форме frmGrph3 графическое окно для вывода графиков
зависимостей температуры и скорости звука от высоты в одной системе
координат (высота – по оси Y снизу вверх от 0 до 15000 м,
скорость/температура - по оси X слева направо от 200 до 350).
 перейдите в окно Project Explorer, сделайте активной форму frmGrph3, и
откройте ее,
 разместите компонент PictureBox из палитры компонентов Toolbox на
форме frmGrph3 с максимально возможным размером,
 задайте свойства графического окна в соответствии с таблицей:
39
Свойство
Значение
Name
PctA_h
ScaleMode
0 – User
ScaleLeft
200
ScaleTop
15000
ScaleWidth
150
ScaleHight
-15000
AutoRedraw
True
 разместите вокруг графического окна надписи с указанием граничных
значений высоты и скорости/температуры:
 слева от левой вертикальной рамки внизу надпись «0 км»
 слева от левой вертикальной рамки вверху надпись «15 км»,
 снизу под нижней горизонтальной рамкой слева надпись «200»,
 снизу под нижней горизонтальной рамки справа надпись «350»,
(точное положение, размер надписей и их шрифт выбрать самостоятельно,
по аналогии с графиками функций, приведенными в литературе),
 сохраните обновленную форму кнопкой Save на панели инструментов VB.
2.14 Протестируйте программу с пустыми графиками
 запустите программу на выполнение в среде VB5.0,
 установите курсор на кнопку Graph и нажмите клавишу Enter – вызывается
форма frmGrph1 с полем для рисования графика и надписями о граничных
значениях высоты и давления,
 установите курсор на кнопку Next и нажмите левую клавишу мышки. На
экран выводится форма frmGrph2 с полем для рисования графика и
надписями о граничных значениях высоты и плотности,
 установите курсор на кнопку Next и нажмите клавишу Enter. На экран
выводится форма frmGrph3 с полем для рисования графика и надписями о
граничных значениях высоты и скорости звука/температуры,
 нажмите клавишу Esc. Обратите внимание на то, что происходит выход из
программы с удалением всех форм с экрана.
2.15 Разработайте алгоритм и запрограммируйте построение графиков.
Исходные данные для построения берутся из массива gsngSa( ),
сформированного в программе предыдущей лабораторной работы после
расчета таблицы (при нажатии на кнопку Table на форме frmSa. Расположение
данных в этом массиве:
gsngSa( 1,к) – к-е значение высоты
gsngSa( 2,к) – значение давления на к-й высоте
gsngSa( 3,к) – значение плотности на к-й высоте
gsngSa( 4,к) – значение температуры на к-й высоте
gsngSa( 5,к) – значение скорости звука на к-й высоте
к = 1,2,…, n где n – количество элементов во втором измерении массива
gshgSa( ), которое можно получить используя функцию Ubound,
40
возвращающую максимальный индекс элемента в массиве:
n = Ubound(gsngSa,2)-1
Массив gsngSa находится в модуле формы frmSa и доступен только внутри
этого модуля, поэтому все построения необходимо программировать в этой
форме - при обработке события нажатия на кнопку «Graph» на форме frmSa.
С учетом этого текст обработчика события будет иметь следующий вид:
Private Sub CmdGrph_Click()
Dim k As Integer
'ПОСТРОИТЬ ГРАФИКИ ДАВЛЕНИЯ, ПЛОТНОСТИ И ТЕМПЕРАТУРЫ
FrmGrph1.PctP_h.Cls
' очистить поле графика 1
FrmGrph1.PctP_h.ForeColor = vbGreen
' цвет графика 1 - зеленый
FrmGrph2.PctR_h.Cls
' очистить поле графика 2
FrmGrph2.PctR_h.ForeColor = vbRed
' цвет графика 2 - красный
FrmGrph3.PctA_h.Cls
' очистить поле графика 3
FrmGrph3.PctA_h.ForeColor = vbYellow
' цвет графика 3 - желтый
FrmGrph1.PctP_h.PSet (gsngSa(2, 1), gsngSa(1, 1)) ' нарисовать начальную
' точку графика 1
FrmGrph2.PctR_h.PSet (gsngSa(3, 1), gsngSa(1, 1)) ' нарисовать начальную
' точку графика 2
FrmGrph3.PctAh.PSet (gsngSa(4, 1), gsngSa(1, 1))
' нарисовать начальную
' точку графика 3
For k = 2 To UBound(gsngSa, 2)-1
' Цикл по остальным
' точкам из массива gsngSa
FrmGrph1.PctP_h.Line -(gsngSa(2, k), gsngSa(1, k)) ' нарисовать линию до
' очередной точки графика 1
FrmGrph2.PctR_h.Line -(gsngSa(3, k), gsngSa(1, k)) ' нарисовать линию до
очередной точки графика 2
FrmGrph3.PctA_h.Line -(gsngSa(4, k), gsngSa(1, k)) ' нарисовать линию до
' очередной точки графика 3
Next k
'ПОСТРОИТЬ ГРАФИК СКОРОСТИ ЗВУКА НА ПОЛЕ ГРАФИКА
ТЕМПЕРАТУРЫ
FrmGrph3.PctA_h.ForeColor = vbCyan
' цвет графика 4 - синий
FrmGrph3.PctA_h.PSet (gsngSa(5, 1), gsngSa(1, 1)) ' нарисовать первую точку
' графика 4
For k = 2 To UBound(gsngSa, 2)-1
' Цикл по остальным
' точкам из массива gsngSa
FrmGrph3.PctA_h.Line -(gsngSa(5, k), gsngSa(1, k)) ' нарисовать линию до
' очередной точки графика 4
Next k
Me.Hide
FrmGrph1.Show
' показать форму для
' графика давления
End Sub
41
2.16 Создайте полный код обработчика события нажатия на кнопку «Graph»
на форме frmSa:
 перейдите в окно Project Explorer и сделайте активной форму с именем
frmSa,
 выполните двойной щелчок на кнопке «Graph»
 перепишите текст обработчика события – процедуру Private Sub
cmdGrph_Click() в соответствии с текстом, приведенным в п. 2.15.
Комментарии в тексте программы можно не вводить.
 сохраните обновленную форму кнопкой Save на панели инструментов VB.
2.17 Сохраните разработанный проект.
2.18 Протестируйте программу
 запустите программу на выполнение в среде VB5.0
 задайте расчет для полного диапазона высот от 0 до 15000 м с шагом не
более 1000 м
 введите данные кнопкой OK
 выполните расчет таблицы данных кнопкой Table
 выполните расчет графиков и просмотр первого графика кнопкой Graph
 просмотрите все графики, переходя с формы на форму кнопками Next
 убедитесь, что полученные графики не содержат ошибок:
 каждый график должен перекрывать весь диапазон высот
 каждый график должен перекрывать почти весь диапазон по горизонтали
 графики должны иметь плавный вид, без разрывов и прямых участков
 изменение физических величин с высотой должно соответствовать законам
стандартной атмосферы.
2.19 Исправьте обнаруженные ошибки и сохраните проект.
2.20 Продемонстрируйте работу программы преподавателю и защитите работу,
ответив на контрольные вопросы по теоретической части и тексту программы.
2.31 Закройте среду программирования
42
Download