- •Тема 4.4.Программирование алгоритмов разветвляющихся структур
- •4.4.1.Программирование на основе событий
- •4.4.2. Средства программирования разветвляющихся структур
- •4.4.3. Базовые алгоритмы разветвляющихся структур и их программирование
- •4.4.4. Задачи для самостоятельного решения по теме «Программирование алгоритмов разветвляющихся структур»
- •4.4.5. Тестовые задания по теме «Программирование алгоритмов разветвляющихся структур»
- •Тема 4.4. Программирование алгоритмов разветвляющихся структур Страница 143
4.4.2. Средства программирования разветвляющихся структур
Разветвляющимися алгоритмическими структураминазываются такие структуры, в которых порядок выполнения блоков операторов определяется значениями логических выражений. Разветвляющийся алгоритм может состоять из нескольких ветвей, каждая из которых может содержать любую, сколь угодно сложную, алгоритмическую структуру. В процессе работы разветвляющегося алгоритма в первую очередь вычисляютсялогические выражения L (частнымслучаем логического выражения является логическая переменная или константа). Если результат вычисления логического выражения принимает значениеTrue (Истина),то выполняется часть алгоритма, расположенная по ветви «Да», если значение –False (Ложь), то – по ветви«Нет».
В VB определен логический тип данных Boolean. Например, описание переменной
Dim L As Boolean
Такая переменная L может иметь одно из двух значений:True илиFalse. Причем при преобразовании числовых типов в логический тип значение0преобразуется вFalse, а все другие значения вTrue.Например:
Dim f As Double = 6.8
L = CBool(f)в результатеL = True
f=0
L = CBool(f)в результатеL = False
Логическое выражениеможет содержать либо простое, либо сложное условие.
Простое условие– это два арифметических или строковых выражения, связанных операцией отношения.
Операции отношения (сравнения) приведены в табл. 4.4.2-1.
Таблица 4.4.2-1
Операции отношения |
Значение |
= |
Равно |
< |
Меньше, чем |
> |
Больше, чем |
<= |
Меньше или равно |
>= |
Больше или равно |
<> |
Не равно |
В таблице 4.4.2-2 приведены примеры простых логических выражений.
Таблица 4.4.2-2
Логическое выражение |
Результат |
5 < 10 |
True, так как 5 меньше 10 |
5 > 10 |
False, так как 5 не больше 10 |
7 <> 3 |
True, так как 7 не равно 3 |
X > 45 |
True, еслиXбольше 45; в противном случаеFalse |
TextBox1.Text=''Stop'' |
True,если в первом текстовом поле содержится слово ''Stop''; в противном случаеFalse |
5-1 > 1+2 |
True,так как в начале вычисляется разность 5-1 (4), затем вычисляется сумма 1+2 (3) и наконец, проверяется условие 4 > 3,т.е. 4 больше 3 |
X >= y +z
|
True, еслиXбольше или равно сумме значений переменныхyиz; в противном случаеFalse |
В отличие от арифметических операций, все операции сравнения имеют одинаковый приоритет, т.е., при наличии в логическом выражении нескольких операций сравнения проверяться условия будут в порядке их записи слева направо.
Кроме того, приоритет операций отношения ниже, чем приоритет арифметических операций, поэтому операции сравнения выполняются после арифметических операций.
Сложное условие,в отличие от простого условия, содержит логические (булевы) операции, приведенные в табл. 4.4.2.3 порядке убывания приоритета. К таким операциям относятся:отрицание (Не)–Not,логическое умножение (И)–And,логическое сложение (ИЛИ)–Or,исключающее ИЛИ–Xor.
Таблица 4.4.2-3
Логические операции |
Значение |
Not |
Преобразует значение True вFalse и наоборот –False вTrue |
And
|
Для того чтобы сложное условие было истинным, истинными должны быть все входящие в его состав условия |
AndAlso |
Действует подобно оператору And, но проверка производится быстрее |
Or |
Сложное условие истинно, если истинно хотябы одно из составляющих его условий |
OrElse |
Действует подобно оператору Or,но проверка производится быстрее |
Xor |
Для того чтобы сложное условие было истинным, истинным должно быть только одно из его составляющих |
Например, выражение Not7<9всегда принимает значениеFalse, а4>3 And 7<9 принимает значениеTrue.
В табл.4.4.2-4 приведено описание логических операций (таблица истинности). Здесь T (true)– “Истина”, аF (false)–“Ложь”.
Таблица 4.4.2-4
Значения операндов |
Not x
|
X And y
|
X Or y
|
x Xor y
| |
X |
Y | ||||
T |
T |
F |
T |
T |
F |
T |
F |
F |
F |
T |
T |
F |
T |
T |
F |
T |
T |
F |
F |
T |
F |
F |
F |
Разветвляющиеся алгоритмические структуры (рис. 2.3.2-2 – 2.3.2-5) в языках программирования реализуются операторами условного перехода.
В VB для реализации условных переходов используются три типа операторов:однострочный If,блочный If иоператор выбора Select Case.
Однострочный оператор If имеет следующий формат:
If L Then оператор(ы) [Else оператор(ы)]
Порядок выполнения конструкции следующий: если значение логического выражения L равноTrue,то выполняется оператор (или операторы), стоящий послеThen, в противном случае выполняются операторы, стоящие послеElse. В оператореIfконструкцияElseможет отсутствовать (в формате она взята в квадратные скобки), такое разветвление называетсяусеченным.
Особенностью однострочного оператора Ifявляется то, что он должен располагаться в одной строке программы.
Приведем примеры записи однострочного оператора If:
If x > 0 Then y=Sqrt(x) Else y = 1 If d Then epsilon = 0.001 If lambda < 1 Or beta = 3 Then lambda = beta : x=0 If x < 10 Then y=1 Else If x < 100 Then y = 2 Else y = 4 |
Если запись оператора не умещается в пределах экрана, а также при программировании вложенных разветвлений, используется многострочный оператор (блочный оператор) If. Он имеет следующий формат:
If L1 Then [ блок_операторов_1 ] [ElseIf L2 Then [ блок_операторов_2 ] . . . [Else [ блок_операторов_n ] ] End If
Порядок и правила выполнения конструкции многострочного оператора If следующий:
если значение L1 равноTrue, то выполняетсяблок_операторов_1и далее управление передается оператору, следующему послеEnd If.
если значение L1 равноFalse, то проверяется значение следующего выражения и так далее.
после выполнения любого блока оператора Ifуправление передается оператору, следующему послеEnd If.
оператор Ifможет содержать несколько конструкций типаElseIf.
блок_операторов, следующий за словомElse,выполняется в том случае, если последовательные проверки всех выражений выше имеют значениеFalse.
конструкции ElseIf иElseмогут отсутствовать, что и отмечается в синтаксисе оператора квадратными скобками.
в многострочном операторе IfсловоThenдолжно быть последним в строке, а словоElse – единственным.
слово ElseIf записывается слитно, а словаEnd If–через пробел.
Примеры блочных операторов If:
If x>0 Then y =Sqrt(x) z=1+y p=4 End If |
If x < 10Then y=1 ElseIf x < 100 Then y=2 ElseIf x < 1000 Then y=3 Else y=4 End If |
Считается хорошим тоном выделять структуру операторов отступами, как это сделано в приведенных выше примерах. Это сделает ваши программы "читабельными", т.е. в них будет легче разобраться.
Пример 4.4.2-1. Написать процедуры ввода/вывода, которые будут использоваться в алгоритмах разветвляющихся структур в примере 4.4.2-2.
Требуемыми процедурами являются процедуры vvodDbl1( )иvivodDbl1( )ввода и вывода данных типаDoubleв текстовые поля, процедурыvvodSng3( ) иvivodSng3( )ввода и вывода данных типаSingleв текстовые поля и процедурыvvodInt4( )иvivodInt4( )ввода и вывода данных типаIntegerв текстовые поля.
Процедуры vvodDbl1( ), vivodDbl1( ), vvodSng3( )иvivodSng3( )приведены в Теме 4.3, а процедурыvvodInt4( )иvivodInt4( )представлены на рис. 4.4.2-5 и 4.4.2-6.
'процедура-Function ввода данных типа Integer из текстового поля TextBox Function vvodInt4(ByVal T As TextBox) As Integer Return CInt(T.Text) End Function |
Рис. 4.4.2-5
'Процедура-Sub вывода данных типа Integer в TextBox Sub vivodInt4(ByVal Z As Integer, ByVal T As TextBox) T.Text = CStr(Z) End Sub |
Рис. 4.4.2-6
Пример 4.4.2-2. Дополнить проект Пример 4.3.4-3 из Темы 4.3, предусмотрев в нем проверку исходных данных.
По результату проверки исходных данных программа должна выдавать предупреждающее сообщение, если вводятся значения сторон треугольника, при которых треугольник не существует.
Для того чтобы можно было построить треугольник, необходимо и достаточно выполнения следующих неравенств (здесь A, B и С – длины сторон треугольника, & - операция логического умножения И (AND)): (А+В>С)& (А+C>В) &( В+C>А).
Откроем проект Пример 4.3.4-3и внесем в него изменения, перестроив структуру всей программы, разбив ее на соответствующие процедуры (рис. 4.4.2-7).
Option Strict On Option Explicit On Imports System.Math Public Class Form1
Function vvodSng3(ByVal T As TextBox) As Single Return CSng(Val(T.Text)) End Function
Sub vivodSng3(ByVal Z As Single, ByVal T As TextBox) T.Text = CStr(Z) End Sub
Sub PS(ByVal A As Single, ByVal B As Single, ByVal C As Single, _ ByRef P As Single, ByRef S As Single) Dim Pp As Single P = (A + B + C) : Pp = P / 2 S = CSng(Sqrt(Pp * (Pp - A) * (Pp - B) * (Pp - C))) End Sub
Sub PSPr(ByVal A As Single, ByVal B As Single, ByVal C As Single) Dim P As Single, 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() 'В фокусе оказывается текстовое поле 'для(ввода)значения стороны А (в нем будет мигать курсор), 'после чего можно повторить ввод End If End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim A, B, C As Single A = vvodSng3(TextBox1) B = vvodSng3(TextBox2) C = vvodSng3(TextBox3) PSPr(A, B, C) End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click End End Sub End Class |
Рис. 4.4.2-7
В окне функции MsgBox( ) текст сообщения выводится в две строки. Для перевода на новую строку используется текстовая константа vbNewLine.
VB предлагает две дополнительные логические операции, которые используются в логических выражениях: AndAlso и OrElse. Эти операции работают точно так же, как And и Or соответственно, но есть отличие, которое состоит в том, как они вычисляются (используется термин «закорачивание»).
Рассмотрим оператор If, который содержит два условия, связанные операцией AndAlso. Для того чтобы выполнились операторы конструкции If, необходимо, чтобы оба условия были равны True. Если первое условие равно False, то VB немедленно перейдет к следующей строке или оператору Else, не проверяя второго условия. Такое частичное – или укороченное – вычисление оператора If имеет следующий логический смысл – зачем продолжать проверять условия оператора If, если оба условия уже не могут быть равны True?
Операция OrElse работает аналогичным образом. Рассмотрим оператор If, который содержит два условия, связанные операцией OrElse. Для того чтобы выполнились операторы конструкции If, необходимо, чтобы хотя бы одно из условий было равно True. Если первое условие равно True, то VB немедленно перейдет к выполнению операторов в конструкции If, не проверяя второго условия.
Рассмотрим пример такой ситуации в VB. Это простая процедура, которая использует оператор If и операцию AndAlso, в которой проверяются два условия и отображается сообщение «внутри If» при условии, что оба условия равны True:
Dim Number As Integer = 0 If Number = 1 AndAlso MsgBox("Вторая проверка условия") Then MsgBox("Внутри If") Else MsgBox("Внутри Else") End If |
Функция MsgBox( ) используется как вторая проверка условия, что несколько необычно, но данная запись полностью корректна и дает прекрасную возможность увидеть в деталях, как работает «закорачивание». Текст «Вторая проверка условия» появляется в окне сообщения только тогда, когда переменная Number равна 1, в противном случае операция AndAlso обходит оператор If, и вторая часть условия не вычисляется. Обратите внимание, что этот код предназначен только для демонстрации - использовать MsgBox( ) такой записи не имеет смысла потому, что на самом деле она ничего не проверяет. Но, изменяя значение переменной Number с 0 на 1 и обратно, можно представить, как работает операция AndAlso и происходит обход проверки условий.
Рассмотрим второй пример того, как работает «закорачивание». В следующем примере два условия проверяются с помощью операции AndAlso. Здесь после операции AndAlso записано более сложное условие (7 / HumanAge<= 1), которое пересчитывает возраст человека в число собачьих жизней:
Dim HumanAge As Integer HumanAge = 7 ' Один год для собаки - это семь лет для человека If HumanAge <> 0 AndAlso 7 / HumanAge <= 1 Then MsgBox("Вам, как минимум, один «собачий год» " ) Else MsgBox("Вам менее одного «собачьего года»" ) End If |
Программа делит возраст человека на 7, а процедура пытается определить, содержит ли целочисленная переменная HumanАgе значение, не меньшее 7. Этот код в операторе If использует два условия. Первое условие проверяет, не равно ли значение переменной HumanАgе нулю. Второе условие проверяет, равен ли возраст человека, по крайней мере, семи. Если оба условия имеют значение True, то в окне сообщения отображается сообщение «Вам, как минимум, один «собачий» год». Если человеку меньше семи лет, то отображается сообщение «Вам менее одного «собачьего» года».
Теперь представьте, что изменилось значение переменной HumanАge с 7 на 0. Что при этом происходит? Компилятор VB определяет, что первое условие оператора If становится равным False, и это отменяет проверку второго условия (т.е. предотвращает его вычисление), тем самым, останавливая, или «закорачивая», оператор If и уберегая нас от ужасной ошибки «деление на ноль», которая возникла бы, если бы мы разделили 7 на 0 (новое значение переменной HumanАgе).
В качестве резюме можно сказать, что операции AndAlso и OrElse в Visual Basic открывают перед программистами несколько новых возможностей, включая предотвращение потенциальных ошибок времени выполнения и других неожиданных результатов. Кроме того, они дают возможность увеличения производительности путем размещения условий, требующих для своего вычисления большого количества времени. Однако, пользователю следует тщательно продумывать все возможные последствия, с которыми могут столкнуться операторы If при изменении состояния переменных.
Рассмотрим условную конструкцию Select Case.
Конструкция Select Case аналогична конструкции If...Then, но она более эффективна в тех ситуациях, когда ветвление зависит от одной ключевой переменной. КонструкцииSelect Caseможно также использовать и для того, чтобы сделать код программы более читабельным.
Оператор 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, то выполняется данныйблок_операторов, а затем управление передается оператору, следующему после конструкцииEnd Select.В противном случае проверяется следующийтести так далее. Все конструкцииSelect Case работают аналогично.Блок_операторов, расположенный послеCase Else,выполняется в том случае, если последовательные проверки всехтестоввыше дали значениеFalse (т.е. ни один тест не выполнился).
Оператор имеет следующие особенности: тест1,тест2и так далее должны быть последними в строке, а конструкцияCase Elseдолжна быть единственной в строке.
Следующий пример показывает, как конструкция Select Case используется в программе для печати нужного сообщения о возрасте и культурных вехах в жизни человека. Если переменная Age содержит значение 18, то в свойство Text объекта надписи записывается строка «Теперь вы можете участвовать в выборах!».
Dim Age As Integer= 18 Select Case Age Case 16 Label1.Text="Теперь Вы можете водить машину!" Case 18 Label1.Text="Теперь Вы можете участвовать в выборах!" Case 21 Label1.Text="Теперь Вы можете еще кой-чего." Case 65 Label1.Text="Пора уходить на пенсию." End Select |
Также конструкция Select Case поддерживает оператор Case Else, который может использоваться для отображения сообщений, если ни одно из предшествующих значений не совпадает со значением переменной Аgе.
Dim Age As Integer Age = 25 Select Case Age Case 16 Label1.Text = " Теперь Вы можете водить машину!" Case 18 Label1.Text =" Теперь Вы можете участвовать в выборах!" Case 21 Label1.Text=" Теперь Вы можете еще кое-чего" Case 65 Label1.Text=" Пора уходить на пенсию" Case Else Label1.Text=" У Вас замечательный возраст! Наслаждайтесь им!" End Select |
Чтобы включить в конструкцию Select Case диапазон проверяемых значений, можно использовать операции отношения =, <>, >, <, >= и <=. Чтобы использовать операции отношения, требуется включить в оператор ключевое слово Is или ключевое слово То, определяющие производимое сравнение. Ключевое слово Is говорит компилятору о том, что требуется сравнить переменную с выражением, указанным после ключевого слова Is. Ключевое слово То определяет диапазон значений. Следующая конструкция использует Is, То и несколько операций отношения для того, чтобы проверить значение переменной Age и отобразить одно из пяти сообщений:
Select Case Age Case Is< 13 Label1.Text=" Наслаждайтесь детством!" Case 13 To 19 Label1.Text =" Наслаждайтесь юностью!" Case 21 Label1.Text =" Теперь Вы можете еще кое-чего" Case Is> 100 Label1.Text =" Здорово выглядите!" Case Else Label1.Text =" Отличный возраст." End Select |
Если значение переменной Аgе меньше 13, отображается сообщение «Наслаждайтесь детством!». Для возраста от 13 до 19 лет отображается сообщение «Наслаждайтесь юностью!» и так далее.
Условная конструкцияSelect Caseобычно гораздо яснее, чем конструкция If...Then, и более эффективна, в случае если в зависимости от значения или свойства переменной следует образовать три или более ветвей программы. Однако когда делается два или менее сравнений или когда используется несколько различных значений, то лучше использовать условную конструкцию If...Then.
В следующем примере вы увидите, как использовать структуру Select Case для обработки ввода из поля списка. Для получения ввода будут использоваться свойства ListBox1.Text и ListBox1.Selected.IndexChanged, а затем для отображения приветствия на одном из четырех языков будет использоваться конструкция Select Case.
Пример 4.4.2-3. Создать проект, использующий конструкции Select Case для обработки и выбора данных из списка.
Выполнить команду Создание проекта (New Project) элемента главного меню Файл (File).
На экране появится диалоговое окно Создание проекта (New Project).
Создайте новый проект с именем Select Case. В окне Конструктор (Designer) появится пустая форма.
В окне Панель элементов (ToolBox) щелкните на элементе управления Label1, а затем нарисуйте в верхней части формы надпись, которая будет отображать название программы.
Используя элемент управления Label, создайте второй объект надписи ниже первого. Эта надпись будет использоваться как заголовок списка.
Щелкните в окне Панель элементов (ToolBox) на элементе управления ListBox и ниже второй надписи отобразите поле списка.
Используя элемент управления Label, ниже поля списка нарисуйте еще одну небольшую надпись для отображения вывода программы.
Используйте элемент управления Button и создайте в нижней части формы небольшую кнопку.
Откройте окно Properties, а затем для только что созданных объектов установите свойства, показанные в табл. 4.4.2-5.
Таблица 4.4.2-5
Объект |
Свойство |
Значение |
Form1 |
Text |
Пример 4.4.2-3 |
Label1 |
Font |
Times New Roman, Bold (Жирный), 12-point (12 пунктов) |
Name |
Label1 | |
Text |
Международная программа приветствия | |
Label2 |
Name |
Label2 |
Text |
Выберите страну | |
Label3 |
AutoSize |
False |
BorderStyle |
Fixed3D | |
ForeColor |
Red(Красный) | |
Name |
Label3 | |
Text |
(пусто) | |
ListBox1 |
Name |
ListBox1 |
Button1 |
Name |
Button1 |
Text |
(Выход) |
После окончания установки свойств форма должна выглядеть примерно так, как показано на рис. 4.4.2-8.
Рис. 4.4.2-8
Дважды щелкните мышью на форме.
В окне Редактор кода (Code Editor) появится процедура события Form1_Load().
Для инициализации списка необходимо ввести следующий код программы:
ListBox1.ltems.Add("England" ) ListBox1.ltems.Add("Germany" ) ListBox1.ltems.Add("Mexico" ) ListBox1.ltems.Add("ltaly" ) |
Для добавления элементов в список на форме эти строки используют метод Add() объекта списка ListBox.
Чтобы переключиться обратно в окно Конструктора форм (Designer),необходимо щелкнуть на вкладке Form1.vb [Design] в верхней части окна Редактор кода (Code Editor), а затем дважды щелкнуть мышью на объекте списка ListBox1 на форме, чтобы отредактировать его процедуру события.
В окне Редактор кода (CodeEditor) появится процедура события ListBox1_SelectedIndexChanged( ).
Для обработки выбора, сделанного пользователем в списке, необходимо ввести следующие строки:
Label3.Text = ListBox1.Text Select Case ListBox1.Selectedlndex Case 0 Label3.Text ="Hello, programmer" Case 1 Label3.Text ="Hallo, programmierer" Case 2 Label3.Text ="Hola, programador" Case 3 Label3.Text ="Ciao, programmatore" End Select |
Первая строка копирует имя выбранного элемента списка в свойство Text третьей надписи формы. Наиболее важным свойством, использованным в этом операторе, является свойство ListBox1.Text, которое содержит текст элемента, выбранного в списке. Остальные операторы являются частью условной конструкции Select Case. Эта конструкция в качестве проверяемой переменной использует свойство ListBox1.SelectedIndex, сравнивая его с несколькими значениями. Свойство SelectedIndex всегда содержит номер выбранного элемента списка; самый первый элемент имеет номер 0 (ноль), второй элемент имеет номер 1, следующий – 2 и так далее. Используя Selectedlndex, конструкция Select Case может быстро определить, какой выбор сделал пользователь, и отобразить на форме правильное приветствие.
Снова отобразить форму и дважды щелкнуть мышью на кнопке Выход (Button1).
В окне Редактор кода (Code Editor) появится процедура события Button1_Click( ).
В этой процедуре события введите оператор End (рис. 4.4.2-9).
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ HandlesMyBase.Load ListBox1.Items.Add("England") ListBox1.Items.Add("Germany") ListBox1.Items.Add("Mexico") ListBox1.Items.Add("Italy") End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click End End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender _ As System.Object, ByVal e As System.EventArgs) _ Handles ListBox1.SelectedIndexChanged Label4.Text = ListBox1.Text Select Case ListBox1.SelectedIndex Case 0 Label4.Text = "Hello, programmer" Case 1 Label4.Text = "Hallo, programmierer" Case 2 Label4.Text = "Hola, programador" Case 3 Label4.Text = "Ciao, programmatore" End Select End Sub
End Class |
Рис. 4.4.2-9
Чтобы сохранить изменения, щелкните на кнопке Сохранить все (SaveAll) на стандартной панели инструментов. В качестве места сохранения укажите соответствующую папку.
Чтобы запустить программу, щелкните на кнопке Начать отладку (Start Debugging), расположенной на стандартной панели инструментов.
В списке Выберите страну щелкните на каждом из названий стран.
Для каждой из перечисленных стран программа отображает приветствие. Иллюстрация
на рис. 4.4.2-10 показывает приветствие для Италии.
Рис. 4.4.2-10
Чтобы остановить программу, щелкните на кнопке Выход. Программа остановится, и вернется среда разработки.
В начале этой темы мы обсуждали события, на которые могут реагировать программы, написанные на Visual Basic, теперь вы узнали, как управлять различными типами событий с помощью условных конструкций If и Select Case.