МИНИСТЕРСТВО ТРАНСПОРТА РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ВОЗДУШНОГО ТРАНСПОРТА САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ КАФЕДРА ИНФОРМАТИКИ Павлов В.Д., Пятко С.Г., Юша Н.Ф. ИНФОРМАТИКА Методические указания к лабораторным работам по теме «Основы программирования на 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