Правила записи однострочного оператора If
Любой оператор VB нужно записывать по определенным грамматическим правилам, в противном случае VB выдает сообщение об ошибке. У каждого человеческого языка есть своя грамматика, включающая в себя правила, по которым должны выстраиваться в цепочку слова и другие элементы языка, чтобы получилось правильное предложение. Совокупность этих правил образует часть грамматики, называемую синтаксисом. В языках программирования тоже есть предложения. Такими предложениями являются операторы. Поэтому у языка программирования тоже есть свой синтаксис, определяющий правила, по которым записываются операторы языка и из операторов составляется программа. После того, как человек запускает программу на выполнение, любая порядочная среда программирования прежде, чем действительно выполнять ее, сначала проверит, нет ли в ней синтаксических ошибок, и если есть, то программу выполнять не будет, а выдаст сообщение, указывающее человеку, в чем ошибка. А VB проверяет программу еще на стадии ввода кода.
У VB есть две формы оператора If: однострочная и многострочная. Пока мы пользовались только однострочным If и поэтому приведем правило записи только для него. Приведем это правило в виде так называемой синтаксической схемы:
If условие Then операторы Else операторы
Как понимать эту схему? Ее следует понимать, как образец, шаблон записи оператора, указывающий порядок, в котором оператор записывается из отдельных слов. Слова, которые в схеме я записал жирными буквами, при вводе оператора вы просто вводите один к одному. Вместо слов, которые в схеме записаны курсивом, нужно при записи оператора подставить то, что они означают. Поясним, что обозначают эти слова.
операторы | любой оператор VB или группа операторов, разделенных двоеточиями |
условие | пока под условием будем понимать два арифметических или строковых выражения, соединенных знаком сравнения |
знак сравнения | знаков сравнения шесть: >больше >=больше или равно =равно <меньше <=меньше или равно <>не равно |
Пример: If 5*a+4 <= a*b Then Beep Else a=b+5
Здесь
Beep - один оператор,
a=b+5 - другой оператор,
5*a+4 <= a*b - условие,
5*a+4 - одно выражение,
a*b - другое выражение,
<= - знак сравнения.
Вы уже видели, что однострочный оператор If можно записывать в краткой форме. Вот синтаксическая схема для этой формы:
If условие Then операторы
Таким образом, это уже вторая синтаксическая схема, касающаяся одного оператора. Удобно же весь синтаксис оператора иметь перед глазами в одной схеме. Соединим две схемы в одну. Вот эта схема:
Синтаксическая схема однострочного оператора If:
If условие Then операторы [ Else операторы ]
Квадратные скобки означают, что их содержимое можно писать, а можно и не писать в операторе.
Полезное замечание: Вычисляя выражения, стоящие в условии оператора If, VB не записывает их значения в память. Например, после выполнения фрагмента
b=6 : If b+1>0 Then s=20
в ячейке bбудет храниться 6, а не 7. То же относится и к выражениям из оператора Debug.WriteLine. Например:
b=6 : Debug.WriteLine ( b+1)
И здесь тоже в ячейке b останется храниться 6, а не 7. И вообще, информация в ячейках памяти не меняется при вычислении выражений без присваивания.
Еще примеры и задания
Разберите еще несколько примеров работы оператора If:
ФРАГМЕНТ ПРОГРАММЫ | ПЕЧАТЬ |
a=10 If a>2 Then Debug.WriteLine("!!!") Else Debug.WriteLine("!") | !!! |
a=4 If a>5 Then a=a+10 Else a=a-1 Debug.WriteLine(a) | |
s=6 If s-8<>0 Then s=2*s Debug.WriteLine(s) | |
s=6 If s<0 Then s=2*s s=s+1 Debug.WriteLine(s) |
Задание 5.
Определить без компьютера, какие 3 числа напечатает следующий фрагмент:
k = 20 : k = k + 10 : If k + 10 <> 30 Then k = 8 Else k = k - 1
Debug.WriteLine(k)
k = 20 : k = k + 10 : If k + 10 = 30 Then k = 8 Else k = k - 1
Debug.WriteLine(k)
p = 1 : If p > 0 Then p = p + 5
If p > 6 Then p = p + 1
Debug.WriteLine(p)
Задание 6.
В компьютер вводятся два числа. Если первое больше второго, то напечатать их сумму, иначе – произведение. После этого компьютер должен напечатать текст ЗАДАЧА РЕШЕНА.
Задание 7.
В компьютер вводятся длины трех отрезков. Компьютер должен ответить на вопрос, правда ли, что первый отрезок слишком велик, чтобы образовать с другими двумя отрезками треугольник. Указание: Для этого его длина должна быть больше или равна сумме длин двух других отрезков.
В Задание 31 вам будет предложено определить, возможен ли треугольник из этих отрезков, а затем в Задание 35 – нарисовать треугольник по трем сторонам, если он возможен.
Задание 8.
Дракон каждый год отращивает по три головы, но после того, как ему исполнится 100 лет – только по две. Сколько голов и глаз у дракона, которому N лет?
Анализируем свойства объектов. Если в выражения, входящие в условие оператора If, включить свойства объектов, то вы можете заставить компьютер с ними работать. Например, компьютеру нужно определить, видимо или невидимо в данный момент текстовое поле TextBox1. Делает это такой оператор:
If TextBox1.Visible = True Then MsgBox("Видимо") Else MsgBox("Невидимо")
Таким образом, мы расширили понятие условия в операторе If, включив в него сравнение свойства с его значениями. Вы можете писать, например, так:
If TextBox1.Width < 50 Then …
Не все свойства позволяют делать такие сравнения.
Задание 9.
Если кнопка расположена на форме с вашей точки зрения слишком высоко, пусть при нажатии на нее она опустится на 20 пикселей.
Случайные величины
Без случайных величин компьютер всегда бы, как робот, на одинаковые действия человека реагировал одинаково. Но тогда невозможны были бы игры.