Содержание 1 введение 6

Вид материалаРеферат
3.5 Записи и тип, определенный пользователем
Type Fam 'Определение структуры записи из двух полей
With Mamontov
4 Операции и встроенные функции 4.1 Выражение. Правила построения выражений в VBA
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   25

3.5 Записи и тип, определенный пользователем



Запись относится к сложным типам данных, который конструируется, как и массив, объединением совокупности данных простых типов. В отличие от массива, запись представляет собой объединение элементов, каждый из которых может иметь свой тип. Элементы записи называют ее полями. Запись хорошо ассоциируется с таблицей. В этом случае имена полей записи соответствуют наименованиям столбцов таблицы, а значения элементов записи – значениям соответствующих ячеек какой-либо строки таблицы.

Формально в VBA отсутствует понятие «запись». Чтобы обеспечить работу с записями, в VBA предусмотрены средства для определения пользовательского типа. Таким образом, записи в VBA называются типом, определенным пользователем. Синтаксис такого определения определен следующим образом:


[Private | Public] Type <имя типа>

<имя элемента> [([<размерность массива>])] As <тип элемента>

[<имя элемента> [([<размерность массива>])] As <тип элемента>]

End Type

Определение типа дается на уровне модуля, и если оно является закрытым (Private), то оно распространяется на один модуль, а для общих (Public) типов – на все.

Приведем пример определения типа и его использования:

Type Fam 'Определение структуры записи из двух полей

FirstName As String

LastName As String

End Type

Type Person

Fio As Fam

Birthdate As Date

End Type

Public Sub UserType()

Объявление переменных типа запись

Dim Petrov As Person

Dim Mamontov As Person

'Присваиваются значения полям соответствующих записей

Petrov.Fio.FirstName = "Петр"

Petrov.Fio.LastName = "Петров"

Petrov.Birthdate = #1/23/1961#

Mamontov.Fio.FirstName = Petrov.Fio.FirstName

Mamontov.Fio.LastName = "Мамонтов"

Mamontov.Birthdate = #7/21/1966#

'А теперь просмотр результата в окне вывода

MsgBox (Petrov.Fio.FirstName & " " & Petrov.Fio.LastName &

" родился " & Petrov.Birthdate)

MsgBox (Mamontov.Fio.FirstName & " " & Mamontov.Fio.LastName & " родился " & Mamontov.Birthdate)

End Sub

Как видно из представленного фрагмента программы, определенный пользователем тип используется при описании программных переменных так же, как и стандартные типы. Здесь же показан принцип работы с записями. Записи обрабатываются поэлементно. Для доступа к элементу записи используется составное имя, которое состоит из имени записи и имени соответствующего поля или полей. Соответствующие имена разделяются знаком точка. Другая форма обращения к элементу записи предполагает использование оператора присоединения (With …. End With). Рассмотрим на примере принцип кодирования данной инструкции языка VBA.

With Mamontov

.Fio.FirstName = Petrov.Fio.FirstName

.Fio.LastName = "Мамонтов"

.Birthdate = #7/21/1966#

End With

Над элементами записи можно выполнять все операции, которые допустимы над данными соответствующего типа. В целом над записью можно выполнять только операцию присвоения, например, Petrov = Mamontov.


4 Операции и встроенные функции




4.1 Выражение. Правила построения выражений в VBA



В основе программирования на любом алгоритмическом языке лежит построение выражений. Выражение строится из переменных, констант, встроенных функций с использованием знаков, операций и скобок. Запись выражения задает правило вычисления его значения и типа.

Перечислим основные операции, которые можно использовать в VBA при построении выражений (табл. 4.1).


Таблица 4.1  Операции и их приоритет
















Приоритет

Арифметические

Сравнения

Логические

Описание некоторых операций

1

Возведение в степень ()

Равенство

(=)

Отрицание

(Not)

При возведении в степень основание и показатель могут быть арифметическими выражениями любого типа. Результат имеет тип Double

2

Унарный минус (–)

Неравенство (<>)

Конъюнкция (And)




3

Умножение, деление (*, /)

Меньше (<)

Дизъюнкция (Or)




4

Деление нацело (\)

Больше (>)

Исключительное ИЛИ (Xor)

Деление нацело определено над целочисленными данными (применимо и к вещ
Продолжение табл. 4.1
ественным данным) и дает результат целого типа. Исключительное ИЛИ требует, чтобы один из операндов имел значение, отличное от True

5

Остаток от деления нацело (mod)

Меньше или равно (<=)

Эквивалентность (Eqv)

Операция mod определена над данными целого типа и возвращает результат целого типа

6

Сложение,

вычитание (+, –)

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

Импликация (Imp)

Среди логических операций определена операция следования (импликация), ложная в единственном случае – когда посылка истинна, а заключение ложно

7

Конкатенация строк (&)

Подобия (Like),

равенство ссылок (Is)




Операция Like проверяет соответствие строки образцу. Операция Is, определенная над объектами, не проверяет равенство сам
Окончание табл. 4.1
их объектов, она проверяет совпадение ссылок. Ссылки должны задавать один и тот же объект


При построении выражений необходимо учитывать следующее:
  • если выражение содержит операции разных категорий, то первыми выполняются арифметические операции, затем операции сравнения, и последними – логические;
  • все операции сравнения имеют один и тот же приоритет. Арифметические и логические операции выполняются в соответствии с указанным приоритетом;
  • одна и та же операция, записанная несколько раз подряд, или операции одного приоритета выполняются слева направо – из двух операций первой выполняется та, которая стоит левее в записи выражения;
  • скобки позволяют изменить указанный порядок вычисления выражения, поскольку выражения в скобках имеют наивысший приоритет и вычисляются первыми. Внутри скобок действует обычный порядок следования;
  • операция конкатенации не является арифметической, но при ее появлении в выражении она выполняется после всех арифметических операций, но до вычисления операций сравнения.