| Уроки, Туториалы, Мануалы со всего света! https://lessons.forumenko.com/ |
|
| Учебник 1. Урок № 11. Выражения. https://lessons.forumenko.com/topic95.html |
Страница 1 из 1 |
| Автор: | Turbo-Dizel [ 05-02, 18:03 ] |
| Заголовок сообщения: | Учебник 1. Урок № 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> 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. Подробнее всё это мы рассмотрим далее. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |
|