Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2020
Просмотров: 7950
Скачиваний: 25

Компьютеры работают именно с двоичными числами, поскольку память
электронной машины состоит из миллионов миниатюрных полупроводни-
ковых переключателей, каждый из которых может находиться в одном из
двух состояний —
включен
или
выключен.
Двоичная система счисления —
родная стихия компьютеров; двоичные вычисления выполняются гораздо
быстрее десятичных.
Важно понимать, что двоичная арифметика основана на использовании только
двух цифр (0 и 1), а все мы в обычной жизни пользуемся десятичной системой счис-
ления. Система счисления определяется количеством цифр, применяемых для пред-
ставления чисел. Поэтому в двоичной системе употребляются две цифры (0 и 1), а в
десятичной — десять (от 0 до 9).
Что же на самом деле стоит за рядом цифр, представляющим собой запись значения в
определенной системе счисления? Для объяснения воспользуемся наглядным примером.
Возьмем, скажем, десятичное число 13. Его можно представить следующим образом:
(1 *
+
(3 * 10°) = 10 + 3 = 13
Отдельные цифры в записи числа 13 (т.е. 1 и 3) — это коэффициенты слагаемых,
которые являются последовательным рядом убывающих степеней числа, равного ос-
нованию системы счисления.
То же десятичное число 13 в двоичной записи будет выглядеть как
(произносится именно так — один-один-нуль-один), поскольку
(1 *
+
(1 *
+
(0 *
+
(1 * 2°) = 8 + 4 + 0 + 1 = 13
Теперь становится очевидной следующая общая формула:
*
+
*
+
+
(Со *
где п — число разрядов числа,
0 <= i < n — коэффициенты слагаемых
(представляемые цифрами в записи числа), а в — основание системы счисления. Ну-
меруются разряды числа справа налево, начиная с нуля.
Для выполнения бинарных побитовых операций
предварительно преобра-
зовать числа-операнды в двоичную систему счисления, а затем сопоставить каждую пару
их одноименных разрядов. На помощь может прийти стандартное Windows-приложение
Калькулятор, работающее в режиме Инженерный. Листинг 4.8 содержит короткий пример.
Листинг 4.8. Пример выполнения побитовой операции And
1: Dim R As Integer
R = 5
And 4
3 :
R
Побитовые операции применимы только к целым числам.
Число 5 в двоичной записи выглядит как 101, а 4 — это 100. В результате выпол-
нения оператора побитовой конъюнкции, приведенного в строке 2 листинга, пере-
менной R присваивается значение 4. Сопоставим каждую пару одноименных разрядов
двух чисел, полагая, что 1 (единица) эквивалентна логическому значению True, a 0
(нуль) — это False. Для нулевого разряда имеем 1 And 0 (т.е. True And False); ре-
зультат (очевидно) равен
Конъюнкция первых разрядов (0 And 0) также дает
Наконец, для пары вторых разрядов логическое выражение выглядит как 1 And 1 и
равно 1. Общий результат — 100, или 4 в десятичной системе счисления. Данный ре-
зультат можно просмотреть в окне сообщения, выводимого на экран с помощью стан-
дартной процедуры MsgBox, которая указана в третьей строке листинга.
80
Часть I. Азбука программирования в Access

Сложение строк
Оба оператора сложения строк, реализованные в Access VBA, находят самое широ-
кое практическое применение. Операторы + и &, описанные ниже в табл. 4.6, добав-
ляют строку правого операнда в конец левого.
Таблица 4.6. Операторы сложения строк
Символ
+
&
Наименование
Плюс
Описание
Сложение строк
Сложение строк с неявным преобразованием
типов
Если используется оператор +, сторонний пользователь вашей программы может
быть введен в заблуждение, поскольку текущий контекст не обязательно дает однознач-
ный ответ на вопрос, какие операнды складываются — числовые или символьные. Но
оператор & недвусмысленный, поскольку применяется исключительно для конкатенации
строк. Листинг 4.9 содержит несколько примеров употребления обоих операторов.
Листинг 4.9. Примеры использования операторов сложения строк
1: Dim
As String
2: MyString = "Здравствуй,
+
MyString = "Здравствуй,
&
4: MyString = "Мне
+ 5 + "лет"
5: MyString = "Мне
& 5 & "лет"
Оператор & одновременно со сложением строк выполняет неявное
преобразование в строку значений типа, отличного от string.
Результаты выполнения операторов, указанных в строках 2 и 3 листинга, одинако-
вы. Однако, анализируя строку 4, компилятор выдаст сообщение об ошибке несоот-
ветствия типов (см. рис. 4.1). Те же данные при использовании оператора &, задан-
ного в строке 5, будут обработаны успешно, поскольку числовое значение 5 подверг-
нется операции неявного преобразования в строку
Дадим небольшой совет —
при необходимости сложения строк всегда пользуйтесь оператором &.
Кто здесь главный?
Каждому оператору соответствует определенный уровень приоритета — конкрет-
ный оператор выполняется после операторов одной группы и перед другими. Напри-
мер, операторы умножения и деления имеют более высокий приоритет, нежели опе-
раторы сложения и вычитания, т.е. выполняются в первую очередь.
Компилятор Access VBA не требует от вас обязательного явного указания порядка
выполнения операторов — он руководствуется заранее оговоренными правилами, из-
ложенными в табл. 4.7. Операторы расположены в таблице в порядке убывания при-
оритета выполнения, причем арифметические операторы имеют высший приоритет,
операторы сравнения выполняются после арифметических, а логические находятся на
низшей ступени.
час. Последовательность действий и выполнение вычислений
81

Таблица 4.7. Приоритеты выполнения операторов
Арифметические операторы
Операторы сравнения
Логические операторы
-
\
Mod
&
Not
<>
And
< Or
> Xor
<=
Eqv
>=
Imp
Таблицу следует читать сверху вниз, а затем слева направо. Все арифметические опера-
торы имеют более высокий приоритет по сравнению с операторами сравнения и логиче-
скими операторами. Среди арифметических операторов наивысшим приоритетом обладает
оператор возведения в степень. Оператор конкатенации строк, условно отнесенный к
группе арифметических операторов, замыкает ее. Тем не менее, сложение строк все равно
выполняется прежде любых операций сравнения или логического исчисления. Запоминать
данные табл. 4.7 вовсе не обязательно — вы всегда с не меньшим успехом сможете пове-
дать о своем замысле, расставив соответствующим образом круглые скобки.
Еще одно хорошее правило, которое стоит взять на вооружение,
не старай-
тесь выразить свое намерение в виде единого громоздкого выражения — разделите
предложение на несколько более простых и расположите их в нужном порядке.
Специальные операторы
В арсенале VBA есть еще три оператора, которые при определенных обстоятельст-
вах могут вам пригодиться. Два из них (Is и Like) бинарны, а третий
— унарный. Названные операторы описаны в табл. 4.8.
Таблица 4.8. Специальные операторы
Наименование Синтаксис
Описание
Is
Is
Like Результат = Строка Like Образец
AddressOf AddressOf
Оператор проверяет, ссылаются ли две пере-
менные на один и тот же объект
Оператор проверяет, удовлетворяет ли строка
заданному образцу
Возвращает числовое значение, представляю-
щее собой адрес процедуры в памяти
Оператор Is
Оператор Is применяется с целью проверки, ссылаются ли обе переменные-
операнды на один и тот же объект. Объект в данном случае — это экземпляр опреде-
ленного пользователем типа данных, который содержит элементы-свойства и функ-
ции-методы их обработки. Подробнее об объектах и приемах их использования
см. главу "21-й час. Основы программирования классов".
Оператор Like
Оператор Like возвращает логический результат проверки такого факта: действи-
тельно ли указанная строка (левый операнд) сравнима с заданным текстовым образцом
(правым операндом). Образец, с которым сопоставляется строка, может содержать:
82
Часть I. Азбука программирования в Access

обычные литеральные символы; вопросительные знаки (?), служащие для представления
любого единственного символа; символы звездочки (*), обозначающие строку произ-
вольной (в том числе и нулевой)
символы фунта (#), представляющие любую
цифру; а также заключенные в квадратные скобки
списки символов, которые сле-
дует принять во внимание или, наоборот, исключить из рассмотрения. Листинг
со-
держит несколько примеров сравнения строк с образцом с помощью оператора Like.
Листинг
Примеры использования оператора Like
1: Dim Result As Boolean
2: Dim ZipCode As String
3: ZipCode = "48864"
4: Result = ZipCode Like
5: Result =
Like
6: Result = "(555) 555-1212" Like
7: Dim
As String
CustomerName = "Jones"
Result = CustomerName
Оператор сравнения в строке 4 определяет, что строка, хранящаяся в переменной
ZipCode, действительно содержит префикс "488". В строке 5 выполняется сопоставле-
ние литерала "Сидорчук" с образцом
и результат этой операции также ра-
вен True. Подобный код можно использовать для поиска различных вариантов имен и
фамилий, например
Сидорчук, Сидоров, Сидоренко
и т.п., поскольку звездочка,
завершающая образец, обозначает любую последовательность символов, в том числе и
нулевой длины. Строка 6 служит для проверки принадлежности заданного телефонного
номера множеству номеров, начинающихся с последовательности цифр
555".
Результат операции равен True. Оператор сравнения с образцом, приведенный в строке
9, возвращает значение True для строк, начинающихся с любой буквы латинского ал-
фавита, за исключением тех, которые попадают в промежуток от К до Z.
Оператор AddressOf
В состав стандартного интерфейса программирования Windows-приложений
(Windows Application Programming Interface, API) входят специальные средства исполь-
зования так называемых
содержащих адреса функций или про-
цедур. Поскольку идентификаторы всех переменных, функций и процедур программы
преобразуются компилятором в определенные адресные значения, наличие адреса
процедуры позволяет использовать его для непосредственного обращения к этой про-
цедуре. В некоторых случаях функции Windows API должны иметь возможность об-
ращения к процедурам, определенным пользователем.
Вам следует знать о существовании оператора AddressOf, хотя с вероятностью
99.9% его никогда не придется использовать на практике. Подробности, касающиеся
применения средств Windows API в целом и оператора AddressOf в частности, вы
найдете в таких книгах, как, например,
Peter Norton's Complete Guide to Windows 98,
Second Edition
издательства
Sams.
Резюме
На этом занятии мы подробно рассмотрели все операторы языка программирова-
ния Access VBA. Они будут использоваться вами постоянно — в любом выражении
программного кода VBA, которое когда-либо придется написать. Вы узнали о крите-
риях классификации операторов по числу используемых ими операндов, типах дан-
ных и приоритетах выполнения.
4-й час. Последовательность действий и выполнение вычислений
83

Операторы сравнения и логического исчисления обычно применяются в структу-
рах программного кода, управляющих последовательностью действий. Арифметиче-
ские и логические операторы применяются при расчетах. Вы будете сталкиваться с
ними вновь и вновь — на протяжении всех оставшихся двадцати занятий — и таким
образом приобретете богатый опыт их практического использования.
В следующей главе мы расскажем о применении операторов сравнения и логиче-
ского исчисления в профаммных управляющих структурах. Управление потоком вы-
числений — один из основополагающих аспектов профаммирования.
Вопросы и ответы
Вопрос. Каким образом можно превратить несколько разрозненных значений различ-
ных типов в единую строку?
Ответ.
Объявите переменную типа string и примените оператор конкатенации
с неявным преобразованием типов данных.
Вопрос. Как преобразовать десятичное число в двоичное?
Ответ.
Если вы затрудняетесь сделать это самостоятельно (вспомните материал
раздела "Побитовые операции" текущей главы), обратитесь за помощью к стандарт-
ному Windows-приложению Калькулятор в режиме Инженерный.
Вопрос. Как упростить сложное выражение?
Ответ.
Используйте круглые скобки и/или разделите сложную конструкцию на по-
следовательность из нескольких простых.
Задания
Ниже приведены тестовые задания и упражнения, которые помогут вам самостоя-
тельно проверить уровень освоения материала, изложенного в этой главе. Ответы на
вопросы вы найдете в приложении.
Тесты
1. Для каких целей применяется оператор +?
2. Назовите четыре основные фуппы операторов.
3. Каков приоритет выполнения фупп операторов?
4. Как изменить естественный порядок выполнения операций?
5. Операторы какой фуппы обладают наивысшим приоритетом выполнения?
1. Напишите текст
демонстрирующей все возможные сочетания зна-
чений аргументов оператора And.
2. Используя окно непосредственного исполнения кода (Immediate)
среды профаммирования Microsoft Visual Basic, вычислите значения следующих
выражений на основе побитового оператора: Or: 2 Or 3; 4 Or 5; 6 Or 7.
3. С помощью средств окна Immediate вычислите остаток от деления пар чисел, при-
веденных в предыдущем упражнении.
84 Часть I. Азбука программирования в Access