Основы офисного программирования и язык VBA

       

Типы данных


Одни из первых вопросов, возникающих при изучении языка программирования: "Как в нем устроена система типов данных? Какие есть простые типы, как создаются сложные, структурные типы, есть ли возможность определения собственных типов, динамических типов, можно ли в нем определять классы - "настоящие" типы, где определяется не только область возможных значений и структура данных, но и операции над ними?" На эти вопросы применительно к VBA мы и постараемся ответить в этой лекции.

Вначале договоримся о терминах. Когда мы говорим, что Т - это тип данных, то понимаем, что определение типа Т задает:

  • область возможных значений типа;
  • структуру организации данных;
  • операции, определенные над данными этого типа.

Исторически сложилось так, что, при определении типа опускают операции, разрешенные над ним, подразумевая их неявно. Например, определяя тип Integer, говорят, что он задает целые числа в некотором диапазоне. Конечно, где-то позже обязательно будет сказано, какие операции разрешены над целыми. В связи с развитием объектно-ориентированного программирования определение типа стали давать "по-настоящему" и включать в него все три компонента. Правда, теперь такие типы называются классами. Но для нас "класс" - синоним понятия "тип данных".

Типы данных принято разделять на простые и сложные в зависимости от того, как устроены их данные. У простых (скалярных) типов возможные значения данных едины и неделимы. Сложные типы характеризуются способом структуризации данных, - одно значение сложного типа состоит из множества значений данных, организующих сложный тип.

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

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

Мощность языка во многом определяется тем, позволяется ли программисту определять динамические и собственные типы данных.

Замечание:

Среди языков программирования выделяются два крайних случая, - строго типизированные языки и бестиповые языки. В первом случае, каждая переменная имеет строго фиксированный в момент объявления тип и он не может изменяться в процессе выполнения программы. Такие языки являются более надежными, поскольку обеспечивают жесткий контроль типов и позволяют обнаруживать ошибки еще на стадии компиляции программы. Классическим примером является язык Паскаль. Бестиповые языки это скорее языки с одним единственным типом. В таких языках одна и та же переменная по ходу программы может хранить данные фактически разных типов. Тип Variant языка VBA является примером такого обобщающего типа. Бестиповые языки обеспечивают более быстрое исполнение программ, предоставляют программистам большую гибкость, но плата за это высока, она достигается это за счет надежности программ. Одним из первых бестиповых языков был Lisp, где единственным типом данных был список. "Свежим" примером бестипового языка является HTML. "Хорошие" языки программирования, как, например, VBA допускают бестиповость в ограниченных пределах.


Содержание раздела