Условные операторы (ветвление по условию)
ФЕДЕРАЛЬНАЯ СЛУЖБА ВОЗДУШНОГО ТРАНСПОРТА РОССИИ
АКАДЕМИЯ ГРАЖДАНСКОЙ АВИАЦИИ
Кафедра информационных технологий и автоматизированных обучающих систем
Павлов В.Д., Пятко С.Г., Юша Н.Ф
ИНФОРМАТИКА
Методические указания к лабораторным работам по теме «Основы программирования на Visual Basic »
Чаcть II
Санкт-Петербург
Лабораторная работа №3
Операции и функции языка. Управляющие структуры
Задание: На основе проекта Satm2 разработать приложение, в котором:
· расчетное значение высоты вводится из соответствующего текстового поля,
· введенное значение высоты проверяется на принадлежность заданному диапазону (от 0 до 15000 м),
· выводится сообщение, когда введенное значение высоты выходит за заданный диапазон,
· параметры стандартной атмосферы рассчитываются после нажатия кнопки "OK",
· результаты выводятся в соответствующие текстовые поля в различных форматах.
В ходе работы необходимо
изучить:
· типы переменных, констант и способы их описания,
· понятие об области видимости переменных и констант,
· основные математические, логические функции и операции, управляющие структуры,
· назначение именованных форматов вывода,
· основные пункты меню отладчика среды программирования.
научиться:
· задавать имена переменным, константам и определять область их видимости,
· комментировать код программы,
· программировать простые выражения и логические операции,
· использовать управляющую структуру типа If….Then,
· проводить отладку программы в пошаговом режиме выполнения.
Теоретическая часть
Меню среды программирования
В меню Debug (Отладка), собраны команды для отладки программы и поиска ошибок. Они позволяют управлять процессом выполнения программы и наблюдать за ее состоянием. Рассмотрим те пункты, которые будут использоваться в лабораторной работе.
· Step Into (Шаг). Эта команда выполняет один оператор программы. Если текущим оператором является вызов процедуры, то следующим текущим оператором станет первый оператор процедуры.
· Run To Cursor (Выполнять до курсора). Будут выполнены все строки, начиная с текущей и кончая той, в которой находится курсор. Затем программа перейдет в режим останова (ее выполнение будет приостановлено).
· Add Watch (Добавить отслеживаемое выражение). Открывает окно диалога, позволяющее определить выражение, значение которого можно будет наблюдать при отладке.
· Toggle Breakpoint (Установить/снять точку останова). Устанавливает или снимает ранее установленную точку останова.
· Clear All Breakpoints (Снять все точки останова). Снимает все ранее установленные точки останова в отлаживаемой программе.
Основы языка 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 - объявляет переменную глобального типа: на уровне приложения, которая доступна из всех модулей и форм проекта,
· 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 - логическое отрицание "НЕ", 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
В этой конструкции Группа оператороввыполняется только при условии, когда Логическое выражениеимеет значение True, а Вторая группа операторов – когда False.
Комментарии
При работе над программой необходимо обязательно использовать комментарии. Комментарии выполняют две важные функции:
· позволяют качественно документировать программу,
· используются для того, чтобы «отключить» (не удаляя) фрагмент программного кода в целях отладки или тестирования программы.
В языке Visual Basic предусмотрены два способа ввода комментариев:
· применение апострофа (') в любом месте строки (в том числе и в начале),
· использование зарезервированного слова Rem.
Перенос строк в окне кода
Иногда строка кода Visual Basic получается слишком длинной. Для таких случаев в Visual Basic предусмотрен символ переноса строки (_). При этом необходимо учитывать следующее:
· символу (_) должен предшествовать пробел,
· нельзя разбивать переносом строковые константы.
Порядок выполнения работы
2.1 Откройте проект satm2, разработанный в предыдущей работе.
2.2 На основе анализа расчетных формул задайте имена, тип и область видимости переменных и констант, которые будут использоваться в программе.
2.2.1 Объявите переменные, в которых будут храниться результаты расчета, как глобальные, чтобы обеспечить доступ к ним из других форм проекта. С учетом правил составления имен, задайте для переменных следующие имена:
Переменная | Имя переменной |
Расчетное значение высоты | gsngH_r |
Значение давления для заданной высоты | gsngP_h |
Значение плотности для заданной высоты | gsngR_h |
Значение температуры для заданной высоты | gsngT_h |
Значение скорости звука для заданной высоты | gsngA_h |
· вызовите окно кода,
· установите режим проверки объявления всех переменных, введя в поле кода следующий текст
Option Explicit,
· выберите в списке объектов элемент (General), в списке процедур появится один элемент Declarations,
· объявите переменную gsngH_r как глобальную, введя в поле кода текст
Public gsngH_r As Single
· аналогичным образом объявите переменные: gsngR_h, gsngP_h, gsngT_h, gsngA_h.
2.2.2 Объявите в процедуре cmdOK_Click() константы как локальные. На основе анализа расчетных формул и с учетом правил составления имен, примите для констант следующие имена:
Константа | Значение константы | Имя константы |
Давление у земли | sngP0 | |
Коэффициент перевода давления из мм.рт.ст. в н/м2 | 133,322 | sngCfnP |
Плотность у земли | 1.225 | sngR0 |
Коэффициент перевода плотности из кгс*c2/м4 в кг/м3 | 9,80665 | sngCfnR |
Температура у земли | 288.15 | sngT0 |
Температура на высоте 11000 метров | 216,7 | sngTh11000 |
· выберите в поле кода процедуру 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
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 Создайте код для расчета параметров стандартной атмосферы
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,
· введите в поле ввода высоты значение 0,
· нажмите клавишу Enter. В полях вывода должны выводиться результаты расчета, совпадающие со значениями констант – значениями параметров атмосферы у земли. Обратите внимание на особенности вывода расчетных значений давления (в научном формате) и скорости звука.
· введите в поле ввода высоты значение 11000,
· нажмите клавишу Enter. Сравните результаты с табличными значениями. Обратите внимание на то, что все расчетные значения не совпадают с табличными,
Высота | Давление | Плотность | Температура | Скорость звука |
1,225 | 340,28 | |||
0,364 | 216,6 | 294,3 | ||
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.
Проведите анализ логического отношения в данной строке кода. Обратите вниманние на то, что в логическом отношении имеется ошибка – проводится проверка строго на меньше, когда значение высоты равно 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.
В ходе работы необходимо
изучить:
· понятие о циклах, статических и динамических массивах,
· команды меню для работы с проектом;
научиться:
· добавлять новые формы к проекту,
· задавать размерность массивам,
· программировать вычисления с использование различных циклов: Do…Loop, For… Next,
Теоретическая часть