Вирази

Для початку розберемося з поняттям “вирази”. У будь-якій мові програмування вирази є основними цеглинками, з яких будується програма. Відповідно до самого точного визначення, що мені приходилось бачити, “вирази” - це “щось, що містить певне значення”. За прикладом далеко ходити не потрібно, візьмемо приклад з попередньої статті:

      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

        'і їм подібні...

Отже, розглянемо кожен випадок докладно:

  1. Змінній типу Boolean - bRes привласнюється значення виразу (c > b). Тобто Visual Basic порівнює ці змінні, і дивиться, c > b? Якщо так, то значення цього виразу порівняння - True. Якщо ж ні, то False.
  2. Те ж саме, тільки bRes буде містити значення False, тому що c більше b, а не менше, як зазначено у виразі.
  3. Відбувається порівняння значень змінних a і c. Тобто a більше або дорівнює c? У нашому випадку a = 234, c = 1000, значить не більше і не дорівнює (менше). bRes буде містити False.
  4. b порівнюється з числом 4. Згадайте, адже 4 - це також вираз, зі значенням 4! Тобто b > 4, то bRes = False.
  5. Також відбувається порівняння змінної b з числом, 5. Але цього разу одна з умов виконується, а саме b = 5! Значить bRes = True.
  6. Очевидно, що b <> a. Отже bRes повинне дорівнює True!? Так, так воно і є... ;) 
  7. Зверніть увагу на цей приклад. Після виконання цього рядка, bRes буде дорівнює True! Тут вираз Not (a = b) обчислюється в такий спосіб: спочатку Visual Basic порівнює значення a і b. Після того, як VB переконається в тому, що a <> b (тобто False), він обчислює вираз: Not (False). Оператор Not - це булів оператор заперечення. Він інвертує значення. У даному випадку з False виходить True .
  8. В даному випадку нічого особливого не відбувається. bRes = False. Чому? Нехай це буде вашим домашнім завданням :).