Строковые операции
Логические операции
Операции отношения
Операции отношения производят сравнение двух величин. Результат сравнения может быть истиной (True) или ложью (False). Этим логическим значениям присваивается, соответственно, значения 1 и 0. Перечень операций отношения приведен в таблице.
Знак операции | Проверяемое отношение | Пример выражения |
= | равно | а=Ь |
<> | не равно | aob |
< | меньше | а<Ь |
> | больше | а>Ь |
<= | меньше или равно | а<=Ь |
>= | больше или равно | а>=Ь |
При объединении в одном выражении математических операций и операций отношения сначала выполняются математические операции
К логическим относят следующие операции.
Логическое умножение (многоместная операция И). Запись операции: х And y. Результат операции принимает значение True (истина) только в случае, если все операнды имеют значение True.
Логическое сложение (многоместная операция ИЛИ). Запись операции: х Or y. Результат операции принимает значение False (ложь) только в случае, если все операнды имеют значение False.
Логическое отрицание (одноместная операция НЕ). Запись операции: Not х. Логическое значение результата операции противоположно логическому значению аргумента.
Кроме этих трех несколько реже используются операции Xor (неравнозначность), Eqv (равнозначность, эквивалентность операндов), imp (импликация).
Логические операции находят применение, например, при записи сложных логических условий. Напомним, что математическое выражение а < х < b записывается так:
х >= a And х <= b.
Строковые операции включают операцию конкатенации (сцепления) строк и операции отношения строк. Операции отношения используются для сравнения строк. Так как кодирование букв в алфавитах идет в порядке возрастания величины кодов, то справедливы неравенства "б" > "а", "баба" < "дед", "abed" < "abef", "од" & "ин" > "два" и т. д. Поэтому строковые выражения могут быть элементами условий при ветвлении алгоритмов.
Операция конкатенации (знак операции - &) позволяет объединять строки. Например, при желании объединить строки "21-й" и "век" нужно записать следующее выражение:
"21-й" & "век"
В результате получаем строку:
"21-й век"
Лекция 4. Функции и методы для ввода – вывода данных
Вопросы:
1. Функция InputBox .
2. Функция MessageBox .
3. Метод Print.
Текстовое поле требуется для ввода разнообразной информации. Но иногда надо ввести только краткую информацию, например значения даты или времени. Создавать для этого отдельное текстовое поле или форму нерационально.
1. Функция InputBox
Для ввода небольших фрагментов текста Visual Basic предлагает функцию InputBox.
Синтаксис: Inputbox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) где
< prompt — обязательный аргумент, представляющий собой строковое выражение, отображаемое как информационное сообщение в диалоговом окне
< title — необязательный аргумент, имеющий тип String и являющийся заголовком информационного окна. Если аргумент опущен, заголовком является имя приложения
< default— необязательный аргумент, определяющий значение, отображаемое в текстовом поле окна диалога по умолчанию
< xpos, ypos — необязательные аргументы, указывающие , на положение верхнего левого угла окна диалога. Если; аргументы опущены, окно диалога отображается в середине экрана
< helpfile— необязательный аргумент, имеющий тип String и определяющий имя и размещение справочного; файла, содержащего контекстно-зависимую справку для диалогового окна
< context — необязательный числовой аргумент, который является номером соответствующего раздела контекстно-зависимой справки
Например:
Private Sub Command1_Click()
n = InputBox("Как Вас зовут?", "РАД ЗНАКОМСТВУ!")
Label1.Caption = n
Text1.Text = n
End Sub
Окно InputBox состоит из четырех элементов:
ü строка заголовка;
ü приглашение к вводу (Prompt);
ü поле ввода со значением, предлагаемым по умолчанию;
ü две кнопки (ОК и Cancel).
К функции InputBox можно обращаться в любом месте программы, если пользователю надо ввести какие-либо данные.
InputBox - ключевое слово, которое является функцией. Функция - представляет собой оператор, выполняющий определенные действия, а затем возвращающий результат своей работы в программу. Возвращенное функцией значение может быть присвоено переменной или свойству или другой функции.
2. Функция MsgBox
Для вывода различных сообщений имеется окно, подобное InputBox, — MessageBox. Почти все приложения Windows используют MessageBox, так как этот компонент входит в состав Windows, a Visual Basic только предоставляет возможность его вызова.
Вид окна MessageBox может быть различным, но в его состав всегда входят:
• текст сообщения;
• заголовок;
• пиктограмма;
• набор кнопок.
Синтаксис: Msgbox(prompt[, button] [, title] [, helpfile, context]) где
< prompt — обязательный аргумент, представляющий собой строковое выражение, отображаемое как информационное сообщение в диалоговом окне
< button - необязательный аргумент, представляющий собой числовое выражение, которое является суммой значений, определяющих число и тип кнопок. Если аргумент опущен, то устанавливается значение по умолчанию 0.
< title — необязательный аргумент, имеющий тип String и являющийся заголовком информационного окна. Если аргумент опущен, заголовком является имя приложения
< helpfile— необязательный аргумент, имеющий тип String и определяющий имя и размещение справочного; файла, содержащего контекстно-зависимую справку для диалогового окна
< context — необязательный числовой аргумент, который является номером соответствующего раздела контекстно-зависимой справки
Пример:
m = MsgBox("Как вас Зовут? ", vbQuestion, "диалог")
Как уже отмечалось, вид диалогового окна может быть различным. Рассмотрим константы, определяющие внешний вид информационного окна.
Константа | Описание | Внешний вид |
vbOKOnly | Отображается только кнопка Ок | |
vbOKCancel | Отображаются кнопки Ок и Cancel | |
vbRetryCancel | Отображаются кнопки Retry и Cancel | |
vbYesNoCancel | Отображаются кнопки Yes, No и Cancel | |
vbYesNo | Отображаются кнопки Yes, No | |
vbCritical | Окно имеет значок "Запрет" | |
vbQuestion | Окно имеет значок "Вопрос" | |
vbExclamation | Окно имеет значок "Предупреждение" | |
vbInformation | Окно имеет значок "Информация" | |
vbDefaultButton1 (2,3, 4) | Первая (вторая, третья, четвертая) кнопка в окне диалога выделена, т.е. установлена по умолчанию | |
vbApplicationModal | Указывает на необходимость ответа перед продолжением работы приложения | |
vbSystemModal | Указывает на остановку выполнения всех открытых приложений до получения реакции на информационное окно | |
vbMsgBoxHelpButton | Добавление кнопки Help | |
vbMsgBoxSetForeground | Информационное окно имеет приоритет над выполнением других задач | |
vbMsgBoxRight | Текст сообщения выровнен по правому краю | |
vbMsgBoxRtlReading | Текст сообщения отображается для чтения справа налево |
Замечание: Все эти константы можно применять как по-отдельности, так и группировать вместе.
Например:
m = MsgBox("Как вас Зовут? ", vbRetryCancel+vbInformation, "диалог")
В этом случае диалоговое окно примет вид:
Т. е оно сгруппировано из двух констант: vbRetryCancel и vbInformation.
При выполнении программы часто приходится использовать не просто диалоговые окна "ради общения", но и надо отображать, переприсваивать им переменные.
Например:
Private Sub Command1_Click()
n = InputBox("Как Вас зовут?", "РАД ЗНАКОМСТВУ!")
Label1.Caption = n
Text1.Text = n
m = MsgBox("Здравствуйте " + n, vbInformation, "диалог")
End Sub
В ходе выполнения этой программы мы ввели свое имя, и присвоили его переменной n. С ней мы дальше и оперируем.
Команда m = MsgBox("Здравствуйте " + n, vbInformation, "диалог") вызывает диалоговое окно следующего вида:
Т.е. для того чтобы обращение шло уже к введенному имени, к имеющейся переменной, в строке кода написали…+ n. Что привело к обращению к переменной n после вывода текста "Здравствуйте ".
Это удобно, если надо вывести значение переменной.
Например:
Private Sub Command1_Click()
Dim a, b, m, z As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
z = a + b
MsgBox ("Результат равен z= ") & z, vbExclamation
End Sub
3. Метод Print
Метод Print используется для вывода данных на форму. Для вывода данных достаточно записать слово Print. В сложных проектах, с элементами управления, кроме формы, использующими этот метод, следует указывать объект.
Синтаксис метода следующий:
[объект. ] Print [<список>] [{;|,}]
При пояснении смысла параметров метода используется пример кода, демонстрирующего работу метода.
Параметр список — это числовые или строковые выражения, разделенные запятыми или точками с запятыми. Строка вывода разделена на зоны с фиксированным числом знакомест.
Если разделители списка — запятые, то каждый элемент списка печатается в следующей свободной зоне.
Если разделители списка — точки с запятой, то элементы списка печатаются или через пробел или.
Строка кода d выводит строку текста для сравнения результатов вывода. Строка кода g с пустым списком выводит пустую строку.
Строка кода h выводит список с разными разделителями.
Следующие три строки: i, j и к — показывают, что, если в конце списка стоит запятая или точка с запятой, то выполнение следующего оператора Print начинается в этой же строке.
Строка кода m демонстрирует вывод списка, элементы которого — выражения. Перед выводом определяются значения всех входящих в выражение функций и выполняются все задаваемые выражением действия.
Строка кода n показывает вывод константы.
Запуск рассмотренного кода приводит к выводу на экран окна,
листинг программы:
Private Sub Form_Load() | |
Show | |
a = 1 | |
b = 2 | |
Print a, a, a | разделители - , каждый следующий элемент списка печатается в свободной зоне |
Print a; a; a; a; a; a | символы печатаются через пробел |
Print "11111" | вывод текста |
Print "1"; "1"; "1"; "1" | символы печатаются без пробела |
вставка пустой строки | |
Print a; a, b; a | |
Print a, | печатает значение а и ждет продолжения строка с продолжением |
Print "a+b="; a + b, "2a+3b="; 2 * a + 3 * b | вывод выражений |
Print 2006 | вывод константы |
End Sub |
Лекция 5. Программирование ветвящихся алгоритмов
Вопросы:
1. Оператор If …Then и If …Then …Else.
2. Оператор условия: Select...Case
3. Использование логических операторов в программе
Свойство языков программирования проверять внешние условия и соответственно реагировать придает им определенную гибкость, позволяя управлять ситуацией и решать возникшие проблемы с помощью небольшого числа команд. Программы не являются монолитным набором команд, каждый раз производящим одни и те же вычисления. Поведение команды корректируется в зависимости от входных данных, внешних условий, типа щелчка мыши и т.д.
Приложению необходимы встроенные средства проверки условий и выбора различных продолжений. Visual Basic предоставляет три оператора
< If …Then
< If …Then …Else
< Select…Case
1. Оператор If …Then и If …Then …Else.
Этот оператор вычисляет условие, и если оно Истина (True), то выполняется оператор следующий за ключевым словом Then. Синтаксис оператора If допускает запись как в одну, так и в несколько строк.
If <выражение> Then
<оператор 1>
Else
<оператор 2>
End If
или
If <condition1> Then
<statementblock1>
Elself <condition2> Then
<statementblock2>
...
Else
<statementblockN>
End If
Аргументы:
§ condition — выражение проверки условия, использующее логические операторы и операторы сравнения.
В случае если <condition> = True, выполняется оператор, следующий за служебным словом Then. Если <condition> = False, на истинность проверяются дополнительные условия Elself ... Then и, если и они не выполнены, выполняется оператор, следующий за ключевым словом Else;
§ statementblockN — исполняемый оператор; -
§ Elself <condition> Then — блок проверки дополнительного условия. Если <condition> = False, то оператор statementblock не выполняется и проводится проверка следующего условия;
§ Else <statementblock> — блок операторов, выполняемых в случае невыполнения всех предыдущих условий оператора.
Простую однострочную форму рекомендуется использовать для коротких, простых проверок. Однако блочная форма обеспечивает более структурированный подход и большую гибкость по сравнению с однострочной формой. Блочная форма обычно проще для чтения, обработки и отладки.
Однострочная форма допускает выполнение нескольких инструкций в результате проверки одного условия If...Then, но все инструкции должны находиться на одной строке и разделяться двоеточием, как в следующем примере:
If A > 10 Then A = A + 1 : B = B + A : C = C + B.
В блоковой форме инструкция If должна быть первой инструкцией в строке. Блок If должен заканчиваться инструкцией End If.
2. Оператор условия: Select...Case
Оператор с условием Select-Case позволяет выбрать нужный оператор из нескольких при выполнении условного выражения. Этот оператор условия наиболее эффективен, когда условие ветвления зависит только от одной переменной.
Синтаксис:
Select Case <testexpression>
[Case <expressionlist1>
[<statementblock1>]]
[Case <expressionlist2>
[<statementblock2>]]
…
[Case Else
[<statementblockN>]]
Аргументы:
§ testexpression — переменная, свойство или выражение, которое является проверяемым условием выбора;
§ expressionlist2 — числовые или текстовые данные, относящиеся к проверяемому условию;
§ statementblock — оператор, выполняемый при условии совпадения переменной и соответствующего значения;
§ [Case Else ...] — опция, указывающая на выполнение соответствующего оператора при условии невыполнения ни одного из предыдущих условий.
Если выражение совпадает с любым выражением из списка выражений в предложении Case, выполняются все инструкции, следующие за данным предложением Case до следующего предложения Case, или, для последнего предложения, до инструкции End Select. Затем управление передается инструкции, следующей за End Select. Если выражение совпадает с выражениями из списка в нескольких предложениях Case, выполняется только первый подходящий набор инструкций.
Предложение Case Else задает список инструкции_else, которые будут выполнены, если не обнаружено ни одно совпадение выражения и компонента список Выражений ни в одном из остальных предложений Case. Хотя данное предложение не является обязательным, рекомендуется помещать предложение Case Else в блок Select Case, чтобы предусмотреть неожиданные значения выражения. Если ни в одном предложении Case список Выражений не содержит компонента, отвечающего аргументу выражение, и отсутствует инструкция Case Else, выполнение продолжается с инструкции, следующей за инструкцией End Select.
В каждом предложении Case допускается использование нескольких выражений или диапазонов (диапазоны могут задаваться с использованием ключевых слов То либо Is). Например допустима следующая строка:
Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber
Следует отметить, что использование ключевого слова ТО обозначает «от и до включительно», т.е. запись 1 ТО 4 обозначает «все элементы от 1 до 4 включительно».
Определить время года по введенному номеру месяца.
Private Sub Command1_Click()
n = InputBox("Введите целое число от1 до 10", "Числа")
Text1.Text = n
Select Case n
Case 1, 3, 5, 7, 9
MsgBox "Число n=" & n & "нечетное", vbInformation, "Числа"
Print "Число n=" ; n ; "нечетное"
Case 2, 4, 6, 8, 10
MsgBox "Число n=" & n & "четное", vbInformation, "Числа"
Print "Число n=" ; n ; "четное"
Case Is>10
MsgBox "Число n большее чем требуется
Case Is<1
MsgBox "Число n меньше чем требуется
End Select
End Sub
3. Использование логических операторов в программе
Вся информация в компьютере состоит из единиц и нулей, называемых двоичными числами. любые математические операции могут быть выражены на языке двоичной логики. То есть двоичный нуль обозначает условие Ложь, а 1 - Истина. Испльзуя различные комбинации выражений и логических операторов, можно выполнять разнообразные сложные действия - выводить графику высокого разрешения, создавать спецэффекты и протсо правильно решать задачи. Рассмотрим основные логические операторы: AND, EQV, OR, XOR, NOT.
1) Логический оператор AND
Логический оператор AND используется для логического объединения (конъюнкции или умножение) двух выражений. Программа проверяет, что оба выражения истинны одновременно. Рассмотрим пример с банкоматом. Если на вашем счете имеются деньги, для их получения вам понадобятся действующая магнитная карта и правильный код. Если хотя бы одно из этих условий не будет выполнено, денег вы не получите. Если оба условия истинны, вы сможете снять деньги.
Логический оператор AND работает очень просто. Если оба выражения истинны, результат также является истинным. Если хотя бы одно из выражений ложно, результат тоже будет ложным. В таблице перечислены комбинации выражений и результаты, полученные при их объединении операцией AND.
Выражение 1 | Выражение 2 | Результат |
И (1) | И (1) | И (1) |
И (1) | Л (0) | Л (0) |
Л (0) | И (1) | Л (0) |
Л (0) | Л (0) | Л (0) |
2) Логический оператор EQV
Оператор EQV проверяет эквивалентность двух выражений. Если логические значения совпадают, результат операции будет истинным. Если значения отличаются, то результат будет ложным.
Выражение 1 | Выражение 2 | Результат |
И (1) | И (1) | И (1) |
И (1) | Л (0) | Л (0) |
Л (0) | И (1) | Л (0) |
Л (0) | Л (0) | И (1) |
3) Логический оператор OR
Если нужно убедиться в том, что хотя бы одно из выражений истинно, воспользуйтесь оператором OR. Если хотя бы одно из выражений истинно, результат будет истинным. Если оба выражения ложны, результат будет ложным.
Выражение 1 | Выражение 2 | Результат |
И (1) | И (1) | И (1) |
И (1) | Л (0) | И (1) |
Л (0) | И (1) | И (1) |
Л (0) | Л (0) | Л (0) |
4) Логический оператор XOR
Если нужно убедиться в том, что истинно лишь одно из двух выражений, воспользуйтесь оператором XOR (операция исключающего OR). В отличие от OR он дает истинный результат лишь в том случае, если истинно одно выражение, но не оба.
Выражение 1 | Выражение 2 | Результат |
И (1) | И (1) | Л (0) |
И (1) | Л (0) | И (1) |
Л (0) | И (1) | И (1) |
Л (0) | Л (0) | Л (0) |
5) Логический оператор NOT
Логический оператор NOT возвращает обратное логическое значение. Он может пригодиться при проверке условия, противоположного указанному. Рассмотрим следующий фрагмент:
Dim S As Boolean
S = True
If Not S Then
MsgBox "Операция завершилась неудачно"
End If
Мы объявляем переменную S, имеющую логический тип данных, и присваиваем ей значение True (истина). Проверяя условие If Not S, мы фактически хотим узнать, является ли данная переменная ложной. В программе переменную S можно заменить функцией, которая возвращает True или False, и проверить возвращаемое значение. Как видно из таблицы, результат операции NOT всегда противоположен значению исходного выражения.
Выражение | Результат |
И (1) | Л (0) |
Л (0) | И (1) |
На практике операция NOT используется для проверки исключительных состояний и при проверке ошибок.