Пример 4.4.2-2.Дополнить проект Пример 3.4-3 из Темы 3, предусмотрев в нем проверку исходных данных.
По результату проверки исходных данных программа должна выдавать предупреждающее сообщение, если вводятся значения сторон треугольника, при которых треугольник не существует.
Sub PsPr(ByVal A As Single, ByVal B As Single, ByVal C As Single) Dim P, S As Single If (A + B > C) And (B + C > A) And (C + A > B) Then PS(A, B, C, P, S):vivodSng3(P, TextBox4):vivodSng3(S,TextBox5) Else MsgBox("Ошибка!" &vbNewLine&, _ "Сумма двух сторон треугольника" _ &" должна быть больше третьей.") TextBox1.Text = ""'Очистка текстовых полей TextBox2.Text = ""'Очистка текстовых полей TextBox3.Text = ""'Очистка текстовых полей TextBox1.Focus() 'В фокусе оказывается 'текстовое поле для(ввода)значения стороны А '(в нем будет мигать курсор), 'после чего можно повторить ввод EndIf EndSub |
Рис. 4.4.2-3. Процедура PsPR()Проекта 3.4-3
проверкой исходных данных
Для того чтобы можно было построить треугольник, необходимо и достаточно выполнения следующих неравенств (A, B,С – длины сторон треугольника, & – операция логического умножения):
(А + В > С) &(А + C> В) & (В + C> А).
Открыть проект Пример 3.4-3 и внесите изменения в процедуру,
SubPSPr() (рис. 4.4.2-3).В окне функцииMsgBox()текст сообщения выводится в две строки. Обратить внимание, что для перевода на новую строку используется текстовая константаvbNewLine.
Рассмотрим конструкциюSelectCase.
Конструкция SelectCase аналогична конструкции If...Then, но она более эффективна в тех ситуациях, когда ветвление зависит от одной ключевой переменной.
|
|
Оператор Select Case позволяет осуществить разветвление по любому фиксированному числу ветвей. Он имеет следующий формат:
Select Caseвыражение Case тест1 [блок_операторов1] [Case тест2 [блок_операторов2] ] . . . [Case Else [блок_операторовn] ] End Select |
Здесь выражение – арифметическое или строковое, а тестi может иметь следующую форму:
выражение [,выражение . . .] выражениеToвыражение Isоперация_отношениявыражение |
Например, Case могут содержать следующиетесты:
Case Is > 3 ' проверка на превышение значения 3; Case x^2 ' проверка на равенство значению выражения; Case 5 To 7 ' проверка на принадлежность отрезку [5,7]; Case 1 To 4, 7 To 9, 11, 13, Is > Max |
В последнем примере через запятую перечисляются несколько тестов, при этом результат проверки выражения считается истинным, если выполняется, хотя бы один тест.
Порядок выполнения оператора Select Case следующий: если значение выражения удовлетворяет тесту, расположенному после конструкции Case, то выполняется данный блок_операторов, а затем управление передается оператору, следующему после конструкции EndSelect. В противном случае проверяется следующий тест и так далее. Все конструкции Select Caseработают аналогично. Блок_операторов, расположенный после CaseElse, выполняется в том случае, если последовательные проверки всех тестов выше дали значение False(т.е. ни один тест не выполнился).
|
|
Оператор имеет следующие особенности: тест1, тест2 и так далее должны быть последними в строке, а конструкция CaseElseдолжна быть единственной в строке.
Следующий пример показывает, как работает конструкция SelectCase
Dim Age As Integer= 18 Select Case Age Case16 Label1.Text="Теперь Вы можете водить машину!" Case18 Label1.Text="Теперь Вы можете участвовать в выборах!" Case21 Label1.Text="Теперь Вы можете еще кой-чего." Case65 Label1.Text="Пора уходить на пенсию." End Select |
используется в программе для вывода нужного сообщения о возрасте и культурных вехах в жизни человека. Если переменная Ageсодержит значение 18, то в свойство Textобъекта надписи записывается строка «Теперь Вы можете участвовать в выборах!».
Также конструкция SelectCaseподдерживает оператор CaseElse, который может использоваться для отображения сообщений, если ни одно из предшествующих значений не совпадает со значением переменной Аgе.
Dim Age As Integer Age = 25 Select Case Age Case 16 Label1.Text = "ТеперьВыможетеводитьмашину!" Case 18 Label1.Text = "Теперь Вы можете участвовать в выборах!" Case21 Label1.Text = "Теперь Вы можете еще кое-чего" Case65 Label1.Text = "Пора уходить на пенсию" CaseElse Label1.Text = "У Вас замечательный возраст! Наслаждайтесь!" EndSelect |
|
|
Чтобы включить в конструкцию SelectCase диапазон проверяемых значений, можно использовать операции отношения =, <>, >, <, >= и<=. Чтобы использовать операции отношения, требуется включить в оператор ключевое слово Isили ключевое слово То, определяющие производимое сравнение. Ключевое слово Is говорит компилятору о том, что требуется сравнить переменную с выражением, указанным после ключевого слова Is. Ключевое слово Тоопределяет диапазон значений. Следующая конструкция использует Is, Тои несколько операций отношения для того, чтобы проверить значение переменной Ageи отобразить одно из пяти сообщений:
Select Case Age Case Is< 13 Label1.Text=" Наслаждайтесьдетством!" Case 13 To 19 Label1.Text =" Наслаждайтесьюностью!" Case21 Label1.Text =" Теперь Вы можете еще кое-чего" Case Is> 100 Label1.Text =" Здорововыглядите!" Case Else Label1.Text =" Отличныйвозраст." End Select |
Если значение переменной Аgеменьше 13, отображается сообщение «Наслаждайтесь детством!». Для возраста от 13 до 19 лет отображается сообщение «Наслаждайтесь юностью!» и так далее.
|
|
Условная конструкция SelectCase обычно гораздо яснее, чем конструкция If...Then, и более эффективна, в случае если в зависимости от значения или свойства переменной следует образовать три или более ветвей программы. Однако, когда делается два или менее сравнений или, когда используется несколько различных значений, то лучше использовать условную конструкцию If...Then.
В следующем примере вы увидите, как использовать структуру SelectCase для обработки ввода из поля списка. Для получения ввода будут использоваться свойства ListBox1.Text и ListBox1.Selected.IndexChanged, а затем для отображения приветствия на одном из четырех языков будет использоваться конструкция SelectCase.
Дата добавления: 2018-05-09; просмотров: 312; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!