Вирази
Для початку розберемося з поняттям “вирази”. У будь-якій мові програмування вирази є основними цеглинками, з яких будується програма. Відповідно до самого точного визначення, що мені приходилось бачити, “вирази” - це “щось, що містить певне значення”. За прикладом далеко ходити не потрібно, візьмемо приклад з попередньої статті:
b = 234
Тут ми привласнюємо змінній b значення 234. Іншими словами “234” - це вираз зі значенням 234. А тепер, для прикладу розглянемо рядок:
c = b
Тут змінній c привласнюється вираз b. Значення цього виразу - b = 234. Тобто іншими словами b - вираз, зі значенням 234. Розглянемо більш складний приклад вираз-функцію. Оголосимо функцію MyFunc, яка повертає число 234:
Public Function MyFunc() As Byte
MyFunc = 234
End Function
А тепер запишемо рядок:
c = MyFunc()
Як Ви вже напевно здогадалися, вираз тут - MyFunc(), зі значенням 234. Тобто після присвоєння змінній виразу MyFunc(), вона буде містити значення 234. А от ще приклад:
c = 5 + 5 * 2
Тут вираз це 5 + 5 * 2. Значення цього виразу не важко порахувати, воно дорівнює 15 (не 20!). Можна було б написати і так:
c = MyFunc() - 219
Тут значення виразу таке ж, як і в попередньому випадку, але от самі вирази різні. Це важливо розуміти.
Також необхідно відзначити значення дужок у виразах. У Visual Basic дужки задають пріоритет операції. Приміром, модифікуємо вираз 5 + 5 * 2 на:
c = (5 + 5) * 2
Тепер значення цього виразу не 15, а 20! Запам’ятаєте це.
Йдемо далі. Розглянемо інші, дуже розповсюджені вирази - вирази порівняння. Такі вирази повертають True або False, у залежності від значення виразу, яке отримали. До таких виразів відносяться:
'змінна для збереження результату
Dim bRes As Boolean
Dim a As Long
Dim b As Byte
Dim c As Long
'змінні для тесту
a = 234
b = 5
c = 1000
bRes = c > b ' 1
bRes = c < b ' 2
bRes = a >= c ' 3
bRes = b <= 4 ' 4
bRes = b <= 5 ' 5
bRes = a <> b ' 6
bRes = Not (a = b) ' 7
bRes = c = MyFunc() ' 8
'і їм подібні...
Отже, розглянемо кожен випадок докладно:
- Змінній типу Boolean - bRes привласнюється значення виразу (c > b). Тобто Visual Basic порівнює ці змінні, і дивиться, c > b? Якщо так, то значення цього виразу порівняння - True. Якщо ж ні, то False.
- Те ж саме, тільки bRes буде містити значення False, тому що c більше b, а не менше, як зазначено у виразі.
- Відбувається порівняння значень змінних a і c. Тобто a більше або дорівнює c? У нашому випадку a = 234, c = 1000, значить не більше і не дорівнює (менше). bRes буде містити False.
- b порівнюється з числом 4. Згадайте, адже 4 - це також вираз, зі значенням 4! Тобто b > 4, то bRes = False.
- Також відбувається порівняння змінної b з числом, 5. Але цього разу одна з умов виконується, а саме b = 5! Значить bRes = True.
- Очевидно, що b <> a. Отже bRes повинне дорівнює True!? Так, так воно і є... ;)
- Зверніть увагу на цей приклад. Після виконання цього рядка, bRes буде дорівнює True! Тут вираз Not (a = b) обчислюється в такий спосіб: спочатку Visual Basic порівнює значення a і b. Після того, як VB переконається в тому, що a <> b (тобто False), він обчислює вираз: Not (False). Оператор Not - це булів оператор заперечення. Він інвертує значення. У даному випадку з False виходить True .
- В даному випадку нічого особливого не відбувається. bRes = False. Чому? Нехай це буде вашим домашнім завданням :).