Даний курс призначений для тих, хто: ніколи не програмував, але хоче навчитися

Вид материалаУрок
Урок № 11. Вирази
Отже, розглянемо кожен випадок докладно
А можна так
If виконає рядок #1 тоді і тільки тоді, коли c
Оператори бувають різні
Eqv оператор логічної еквівалентності Imp
Подобный материал:
1   2   3

Урок № 11. Вирази


Отже, зі змінними ми розібралися. Тепер займемося виразами.


Вирази


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


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. Тобто після присвоєння змінній c виразом 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 (на більш низькому рівні, можу додати, що оператор Not інвертує всі біти операнда, у даному випадку, тому що False у VB - це 0, а True - FFFF, то значення виразу - True).

- В даному випадку нічого особливо не відбувається. bRes = False. Чому? Нехай це буде вашим домашнім завданням :).


Ну й останній приклад, що ілюструє застосування виразів порівняння. Зробимо так, щоб змінній a присвласнилось значення 234, якщо

c = b, і 100, якщо c <> b:


If c = b Then a = 234

If c <> b Then a = 100


А можна так:


If c = b Then

 a = 234

End If


If c <> b Then

 a = 100

End If


Обидва цих варінта абсолютно еквівалентні, але втрачається наочність. Краще використовувати наступний варіант:


If c = b Then

 a = 234 ' рядок #1

Else

 a = 100 ' рядок #2

End If


В даному випадку конструкція If виконає рядок #1 тоді і тільки тоді, коли c буде дорівнювати b. Якщо ж вони не будуть рівні, то буде виконуватися рядок #2. Докладніше все це ми розглянемо далі.


Отже, з виразами, я думаю, ми остаточно розібралися. Тепер, якщо Ви запам’ятали, що таке константа, змінна і вирази, то можна їхати далі. До уроку №12.


Урок № 12. Оператори


Що таке вирази - ми довідалися. Прийшов час згадати, що ж таке оператор?


Оператори


Тут знову згадаємо школу. Пам’ятаєте прості арифметичні оператори? Такі як додавання, ділення, віднімання та множення. У Visual Basic вони також є. І їх з легкістю можна використовувати. Давайте розглянемо приклад з попереднього уроку:


c = 5 + 5 * 2


У виразі 5 + 5 * 2 використовуються 2 оператора: + і *. Їхні дії очевидні - додавання і множення. Так само, як і в алгебрі, тут діє принцип пріоритетів. Він полягає в тому, що кожний оператор має свій пріоритет. Наприклад, множення має більший пріоритет, чим, скажемо, додавання. Тому результат такого виразу не 20, а 15. Пріоритет можна вказати явно, поставивши в потрібній частині виразу круглі дужки:


c = (5 + 5) * 2


Тепер результат виразу - 20, тому що спочатку виконається оператор додавання і тільки потім множення.


Пам’ятаєте на попередньому уроці ми використовували Not, для заперечення . Отож - Not - це теж оператор, тільки не арифметичний, а логічний.


Оператори бувають різні:

У Visual Basic оператори бувають наступних типів:

Арифметичні:

оператор піднесення в степінь.

* оператор множення.

/ оператор ділення

\ оператор цілочисленого ділення

Mod оператор обчислення залишку від ділення

+ оператор додавання

- оператор віднімання

Порівняння:

< менше

> більше

<= менше або дорівнює

>= більше або дорівнює

= дорівнює

<> не дорівнює

Конкатенації:

+ оператор конкатенації

& оператор конкатенації

Логічні:

And оператор логічного множення

Eqv оператор логічної еквівалентності

Imp оператор логічної імплікації

Not оператор логічного заперечення

Or оператор логічного додавання

Xor оператор логічного додавання, що виключає


Як я вже говорив, кожний оператор має свій пріоритет, і кожний вираз обчислюється з урахуванням цих пріоритетів. Для довідки я хочу привести дуже цікаву таблицю пріоритетів:


Арифметичні

Порівняння

Логічні

Піднесення в степінь ()

Рівно (=)

Not

Заперечення (-)

Нерівно (<>)

And

Множення та ділення (*,/)

Меньше чим (<)

Or

Цілочислене ділення (\)

Більше чим (>)

Xor

Залишок від ділення (Mod)

Менше або рівно (<=)

Eqv

Додавання та віднімання (+,-)

Більше або рівно (>=)

Imp

Конкатенація (&)

Відповідність масці (Like)







Приналежність до типу (Is)





В цій таблиці зверху вниз показаний порядок проходження пріоритетів операторів Visual Basic. Зверху вниз пріоритет зменшується. Оператори (* і /) мають однаковий пріоритет, і у виразі обчислюються зліва на право. Це ж саме відноситься до операторів додавання та віднімання. Якщо ж у виразі зустрічаються оператори з різних категорій, то обчислюються вони в порядку стовпчиків зліва на право. Тобто спершу арифметичні, потім оператори порівняння і лише потім логічні оператори.

Отже, йдемо далі. Нас чекають керуючі структури мови Visual Basic.