Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Сравнения






При проверке условий используются не только логические операторы, но и операторы сравнения. С их помощью можно узнать, равны ли числа или строки и в каком отношении они находятся друг к другу, принадлежат ли они интервалу допустимых значений и т. д. Сравнивать можно слова, имена, числа и вообще все, что вам захочется. Давайте посмотрим, как это делается.

 

Проверка условия «равно»

Почти в каждом приложении требуется сравнить два выражения и узнать, совпадают ли их значения. В Visual Basic эта задача решается оператором =. Он встречался во многих примерах, приведенных ранее. Проверка равенства выполняется так:

 

If x = 3 Then

MsgBox " Значение x равно 3"

End If

 

Оцените красоту Visual Basic — программа получается очень похожей на простой английский текст. Данный фрагмент можно было бы сформулировать словами:

 

Если значение x равно 3, то вывести диалоговое окно.

 

Как правило, программисту приходится решать противоположную задачу и превращать слова в текст программы. К счастью, программа приносит больше пользы, чем простой текст на листке бумаги!

Чтобы наглядно познакомиться с тем, как выполняется проверка даты, рассмотрим следующий пример. В нем мы проверяем дату и выводим соответствующее сообщение:

1. Создайте новый проект командой File > New Project.

2. В диалоговом окне New Project выберите значок Standard EXE. Нажмите кнопку ОК.

3. Задайте свойству Name формы Form1 значение frmMain, а свойству Caption — значение Выберите число.

4. Создайте на форме две кнопки.

5. Задайте свойству Name первой кнопки значение cmdGetSecretNumber, а свойству Caption — значение Загадать & число.

6. Задайте свойству Name второй кнопки значение cmdGuess, a свойству Caption — значение & Угадать.

7. Дважды щелкните на форме frmMain, чтобы открыть окно программы.

8. Вставьте следующий фрагмент в процедуру события Load формы frmMain:

 

Private Sub Form_Load()

Загадать число

SecretNumber = GetSecretNumber()

End Sub

 

9. Вставьте следующую строку в секцию (General)(Declarations) формы frmMain:

 

Option Explicit

Private SecretNumber As Integer

 

10. Перейдем к созданию функции GetSecretNumber(), которая является одним из важнейших компонентов приложения. Вставьте следующий фрагмент в секцию (General)(Declarations):

 

Private Function GetSecretNumber() As Integer

' Загадать число от 1 до 10

Randomize

GetSecretNumber = Int(Rnd(1) * 10) + 1

End Function

 

11. Вставьте следующий фрагмент в процедуру события Click кнопки cmdGetSecret Number:

 

Private Sub cmdGetSecretNumber_Click()

' Загадать число

SecretNumber = GetSecretNumber()

End Sub

 

12. Наконец, вставьте следующий фрагмент в процедуру события Click кнопки cmdGuess:

 

Private Sub cmdGuess_Click()

Dim guess As Integer

Dim msg As String

Dim cap As String

 

' Создать сообщение

msg = " Введите число от 1 до 10"

' Получить число от пользователя

guess = CInt(InputBox(msg))

 

'Число угадано верно?

If guess = SecretNumber Then

' Да! Пользователь угадал!

msg = " Вы угадали! "

cap = " Верно! "

' Вывести сообщение

MsgBox msg, vbExclamation, cap

'Закончить игру

End

Else

' Нет. Следующая попытка...

msg = " Неверно."

cap = " Попробуйте снова! "

MsgBox msg, vbInformation, cap

End If

End Sub

 

Эта процедура — самая важная часть нашего примера. Знак = впервые встречает-ся в строке msg = " Введите число...", однако сравнение происходит лишь в строке If guess = SecretNumber Then. Мы проверяем, совпало ли введенное значение с загаданным числом.

13. Сохраните проект. Мы изменим его в нескольких ближайших примерах.

14. Запустите проект клавишей F5. Если нажать кнопку Загадать число, программа загадывает случайное число от 1 до 10. Нажмите другую кнопку и попробуйте угадать это число!

При каждой попытке программа сообщает, было число названо верно или нет (рис.6.1).

 

Рис. 6.1. Игра с угадыванием числа

 

Проверка условия «больше»

Для проверки условия «больше» в программировании, как и в алгебре, используется символ >. Рассмотрим следующий фрагмент:

 

if x > 3 Then

MsgBox " x больше 3"

End If

 

В своих программах вы можете проверить некоторую величину и узнать, больше ли она другой величины. Проверки такого рода обычно встречаются в случае, когда введенное пользователем значение должно принадлежать конкретному диапазону. Впрочем, все зависит от приложения.

Откройте проект из предыдущего примера и выполните следующие действия:

1. Откройте окно программы, дважды щелкнув на форме frmMain.

2. Отредактируйте процедуру события Click кнопки cmdGuess и приведите ее к следующему виду:

 

Private Sub cmdGuess_Click()

Dim guess As Integer

Dim msg As String

Dim cap As String

 

' Создать сообщение

msg = " Введите число от 1 до 10"

 

'Получить число от пользователя

guess = CInt(InputBox(msg))

 

' Число угадано верно?

Select Case guess

Case Is = SecretNumber

' Да! Пользователь угадал!

msg = " Вы угадали! "

cap = " Верно! "

 

'Вывести сообщение

MsgBox msg, vbExclamation, cap

 

' Закончить игру

End

Case Is > SecretNumber

' Нет. Следующая попытка...

msg = " Неверно. Загаданное число меньше."

cap = " Попробуйте снова! "

 

MsgBox msg, vbInformation, cap.

End Select

End Sub

 

3. Сохраните и запустите проект.

Попробуйте угадать число. Если введенное вами число будет больше загаданного, программа сообщит вам об этом (рис. 6.2).

 

Рис. 6.2. Названное число больше загаданного

 

Основные изменения в программе находятся в блоке, который начинается со строки Саsе Is > SесretNumber. Программа проверяет, что введенное число боль-ше SecretNumber. Если это условие не выполняется, следующий логичный шаг — убедиться в том, что введенное число меньше SecretNumber.

 

Проверка условия «меньше»

Для проверки условия «меньше» используется символ <:

 

if x < 3 Then

MsgBox " x меньше 3"

End If

 

Этот оператор дополняет оператор «больше». Довольно часто они используются вместе и проверяют, что величина принадлежит некоторому диапазону. Далее мы продолжим работать с предыдущим примером. Откройте проект и выполните следующие действия:

1. Откройте окно программы, дважды щелкнув на форме frmMain.

2. Отредактируйте процедуру события Click кнопки cmdGuess и приведите ее к следующему виду:

 

Private Sub cmdGuess_Click()

Dim guess As Integer

Dim msg As String

Dim cap As String

 

'Создать сообщение

msg = " Введите число от 1 до 10"

' Получить число от пользователя

guess = CInt(InputBox(msg))

 

' Число угадано верно?

Select Case guess

 

Case Is = SecretNumber

' Да! Пользователь угадал!

msg = " Вы угадали! "

cap = " Верно! "

' Вывести сообщение

MsgBox msg, vbExclamation, cap

' Закончить игру

End

Case Is > SecretNumber

' Нет. Следующая попытка...

msg = " Неверно. Загаданное число меньше."

cap = " Попробуйте снова! "

MsgBox msg, vbInformation, cap

Case Is < SecretNumber

' Нет. Следующая попытка...

msg = " Неверно. Загаданное число больше."

cap = " Попробуйте снова! "

MsgBox msg, vbInformation, cap

End Select

End Sub

 

3. Сохраните и запустите проект.

Попробуйте угадать число. Если введенное вами число будет меньше загаданного, программа сообщит вам об этом (рис. 6.3).

 

Рис. 6.3. Названное число меньше загаданного

 

Проверка условия «не равно»

Если вы хотите убедиться в том, что одно значение отлично от другого, следует воспользоваться оператором < >:

 

if x < > 3 Then

MsgBox " x не равно 3"

End If

 

Этот оператор бывает особенно полезным в ситуациях, когда требуется проверить, что пользователь ввел значение. Чтобы понять, почему это так, запустите программу из предыдущего примера:

1. Нажмите кнопку Загадать число, чтобы сгенерировать случайное число от 1 до 10.

2. Нажмите кнопку Угадать.

3. В открывшемся окне ввода нажмите кнопку OK или Cancel

Появляется сообщение об ошибке — несовпадение типов. Нажмите кнопку End, чтобы завершить работу программы. Не вдаваясь в подробности процесса отладки, скажу, что ошибка возникла в следующей строке:

 

guess = CInt(InputBox(msg))

 

Дело в том, что функция CInt() должна получать данные, преобразуемые в целое число. Если функция вызывается для пустой строки, выдается сообщение об ошибке.

Чтобы предотвратить ошибку, перед проверкой следует убедиться в том, что пользователь ввел некоторое значение. Оператор < > идеально подходит для этой цели! Проверку можно выполнить следующей командой:

 

If rс < > " " Then

 

В переводе на человеческий язык это означает: «Если значение guess не равно пустой строке, то сделать что-то».

4. Отредактируйте процедуру события Click кнопки cmdGuess и приведите ее к следующему виду:

 

Private Sub cmdGuess__Click()

Dim guess As Integer

Dim msg As String

Dim cap As String

Dim rc As String

 

‘Создать сообщение

msg = " Введите число от 1 до 10"

 

‘Получить число от пользователя

rс = InputBox(msg)

 

‘Убедиться в том, что пользователь ввел значение...

If rс < > " " Then

‘Преобразовать строку в целое число

guess = CInt(rc)

' Число угадано верно?

Select Case guess

Case Is = SecretNumber

' Да! Пользователь угадал!

msg = " Вы угадали! "

cap = " Верно! "

' Вывести сообщение

MsgBox msg, vbExclamation, cap

‘Закончить игру

End

Case Is > SecretNumber

' Нет. Следующая попытка...

msg = " Неверно. Загаданное число меньше".

cap = " Попробуйте снова! "

MsgBox msg, vbInformation, cap

Case Is < SecretNumber

' Нет. Следующая попытка...

msg = " Неверно. Загаданное число больше".

cap = " Попробуйте снова! "

MsgBox msg, vbInformatidn, cap

End Select

Else

msg = " Вы должны ввести число! "

cap = " Введите число! "

MsgBox msg, vbInformation, cap

End If

 

End Sub

 

5. Сохраните и запустите проект

 

 

Проверка условия «больше или равно»

Иногда приходится проверять, что некоторая величина больше другой или равна ей. Для этой цели используется оператор > =:

 

if x > = 3 Then

MsgBox " x больше или равно 3"

End If

 

Приведенный фрагмент чрезвычайно прост. Если значение x больше или равно 3, программа выводит окно сообщения.

Вероятно, вы уже поняли, как пользоваться этим оператором. Предположим, вы пишете программу для управления пассажирским самолетом. Конечно, если пилот летит слишком быстро, его необходимо предупредить. Превышение скорости может привести к перегрузке и вызвать катастрофические повреждения самолета. Однако на самолете работает ваша (конечно же, превосходная!) программа; она проверяет скорость и убеждается в том, что пилот не превысил максимальную рекомендованную скорость. Выполните следующие действия:

1. Создайте новый проект командой File > New Project.

2. В диалоговом окне New Project выберите значок Standard EXE. Нажмите кнопку ОК.

3. Задайте свойству Name формы значение frmMain, а свойству Caption — значение Датчик скорости.

4. Создайте на форме вертикальную полосу прокрутки и задайте ее свойству Name значение vscThrottle. Расположите полосу в правой части формы и растяните ее на всю высоту формы.

5. Задайте свойству Мах полосы vscThrottle значение 100.

6. Создайте на форме frmMain надпись. Задайте ее свойству Name значение lbl Airspeed, а свойству Caption — значение Текущая скорость:.

7. Дважды щелкните на форме frmMain в конструкторе форм, чтобы открыть окно программы.

8. Вставьте следующий фрагмент в секцию (General)(Declarations) формы frmMain:

 

Option Explicit

Private Throttle As Integer ' Текущее значение газа

Private Const VNE = 427 'Предельная скорость

 

9. Инициализируйте значение газа в следующем фрагменте, который необходимо вставить в процедуру события Load формы frmMain:

 

Private Sub Form_Load()

vscThrottle.Value = 100

End Sub

 

10. Вставьте следующий фрагмент в процедуру события Change элемента vsc

Throttle:

 

Private Sub vsc_Throttle_Change()

Dim ias As Integer ' Текущая скорость

 

' Расстояние до верхней позиции полосы прокрутки

Throttle = 100 - vscThrottle.Value

 

'Вычислить текущую скорость по значению газа

ias = Throttle * 4.5

 

'Обновить датчик скорости

lblAirspeed.Caption = " Текущая скорость: " & Trim$(Str$(ias))

 

'Проверить текущую скорость и убедиться, что она не превышает предельной

If ias > = VNE Then

MsgBox " Уменьшить газ! ", vbCritical, " Превышение скорости"

End If

End Sub

 

Эту процедуру стоит рассмотреть подробнее. Первая часть, в которой мы вычисляем значение Throttle, необходима из-за того, что при нахождении бегунка в верхней позиции полосы прокрутки ее свойство Value по умолчанию равно 0. Максимальному газу на самолете, наоборот, соответствует верхнее положение рукоятки («от себя»). Наша программа имитирует самолетную рукоятку газа с помощью полосы прокрутки.

Строка, в которой рассчитывается текущая скорость (ias), не слишком точна. Вычисление скорости настоящего самолета — задача сложная и выходящая далеко за рамки этой книги. Я воспользовался простейшей формулой, которая позволяет самолету разогнаться до 400 узлов. Предупреждение выводится в следующем фрагменте:

 

' Проверить текущую скорость и убедиться,

' что она не превышает предельной

If ias > = VNE Then

MsgBox " Уменьшить газ! ", vbCritical, " Превышение скорости"

End If

 

Если текущая скорость превышает предельную или равна ей, программа выводит предупреждающее сообщение.

11. Сохраните и запустите проект. Перемещайте бегунок на полосе прокрутки и следите за тем, как растет текущая скорость. Когда она достигнет предельной, появляется предупреждение (рис. 6.5).

 

 

. 6.5. Превышение предельной скорости

 

Проверка условия «меньше или равно»

Иногда требуется проверить, что некоторая величина меньше или равна (но не больше) другой величины. Для проверки этого условия применяется оператор < =. Следующий фрагмент показывает, как выполняются подобные проверки:

 

if x < = 3 Then

MsgBox " x меньше или равно 3"

End If

 

Мы воспользуемся новым оператором в новом варианте предыдущего примера. Если самолет летит слишком медленно, он может войти в штопор и упасть. Haш датчик скорости должен сообщать пилоту о том, что он летит слишком медленно. Продолжим работу над примером:

1. Откройте пример из предыдущего раздела, если он не был открыт ранее.

2. Вставьте следующую строку в секцию (General)(Declarations) формы frmMain:

 

Private Const VSTALL = 73 ' Минимальная скорость

 

3. Предположим, вы в данный момент летите и рукоятка газа установлена на 77 процентов. Отредактируйте процедуру события Form_Load и приведите ее к следующему виду:

 

Private Sub Form_Load()

vscThrottle.Value = 23

vscThrottle_Change

End Sub

 

Наконец, отредактируйте процедуру события Change элемента vscThrottle:

 

Private Sub vsc_Throttle_Change()

Dim ias As Integer ' Текущая скорость

' Расстояние до верхней позиции полосы прокрутки

Throttle = 100 - vscThrottle.Value

 

' Вычислить текущую скорость по значению газа

ias = Throttle * 4.5

 

' Обновить датчик скорости

lblAirspeed.Caption = " Текущая скорость: " & _ Trim$(Str$(ias))

 

' Проверить текущую скорость и убедиться, '

что она не превышает предельной

If ias > = VNE Then

MsgBox " Уменьшить газ! ", vbCritical, " Превышение скорости"

End If

 

' Убедиться, что самолет не входит в штопор

If ias < = VSTALLThen

MsgBox " Увеличить газ! ", vbCritical, ' " Вход в штопор! "

End If

End Sub

 

5. Сохраните и запустите проект. Если уменьшить газ ниже порогового значения датчик скорости выдает предупреждение.

 

Итак, вы научились пользоваться различными операторами для принятия решений в программах. После знакомства с азами компьютерной логики мы переходим к следующей теме — как использовать эту логику для управления выполнением программы и как принимать простые решения в приложениях.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.035 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал