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

8-й час
Декомпозиция
Вам наверняка известен очевидный, но надежный способ решения сложных за-
дач, связанный с разбиением (или, как говорят профессионалы, —
декомпозицией)
их на мелкие подзадачи. Программа — это набор строк кода, каждая из которых,
будучи связанной с остальными, предусматривает решение простой частной задачи.
На предыдущих занятиях мы рассмотрели немало примеров кода, структурные еди-
ницы которых называли выражениями. Выражение может охватывать одну или не-
сколько физических строк кода — точно так же, как и предложения естественного
языка, которые могут быть простыми
или более сложными
(как то, которое вы сейчас читаете). А вот примеры выражений на языке програм-
мирования: А = 5 или Dim A As Integer. Выражения служат "строительным" ма-
териалом для создания более крупных конструкций — функций и подпрограмм
(процедур).
На этом занятии вы научитесь выявлять подмножества строк кода, которые целе-
сообразно группировать в одном месте и затем ссылаться на них по имени из других
строк программы. Именованный блок кода, состоящий из нескольких строк, называ-
ют (в зависимости от способа его оформления)
функцией
или
процедурой.
Определение функции или процедуры должно следовать определенным строгим
синтаксическим правилам. Одно из них — это наличие служебных слов Function или
Sub, которые обозначают, соответственно, начало блока функции или процедуры.
Во время работы с Access понадобится создавать функции и процедуры для реше-.
ния таких задач, с которыми другими средствами справиться не удастся.
Не исключено, что при написании программ вам придется прибегнуть к помощи
процедур или функций для
повторяющихся задач, которые не могут или не
должны выполняться в режиме диалога с пользователем. Хороший пример — задача
автоматического обновления или резервного копирования базы данных, требующая
автоматического выполнения ночью, в часы наименьшей загрузки компьютерного
оборудования и каналов связи.

В таких ситуациях, когда необходимо автоматизировать решение
и
уменьшить количество ошибок, появляющихся из-за повторяемости или сложности опе-
раций, придет на помощь программа, выполняемая в среде Access. Программа для
Access — это, в действительности, набор функций и процедур, написанных на языке
Основные темы занятия.
• Механизмы создания функций и процедур.
• Заповеди программирования.
• Практические примеры.
• Функции импорта текстовых данных.
Механизмы создания процедур
Язык программирования VBA поддерживает две разновидности именованных бло-
ков кода — процедуры (подпрограммы) и функции. Вначале обратимся к процедурам.
Их проще создавать и удобнее использовать в качестве отправного пункта дальней-
шего повествования.
В основе технологии процедурного программирования лежат очевидные и естест-
венные предпосылки, связанные с ограниченными возможностями человеческой па-
мяти и стремлением представить сложную проблему в виде набора простых имено-
ванных сущностей, каждая из которых ссылается на некую группу данных или подра-
зумевает выполнение определенного законченного множества операций. Как я, на-
пример, запоминаю телефонные номера? Я мысленно разбиваю номер на три группы
цифр: первая соответствует коду региона, вторую я называю префиксом, а третью —
суффиксом. Вместо беспорядочного нагромождения цифр, в моей памяти сохраняется
четко структурированная и поэтому легче воспринимаемая информация.
Процедура —
это блок строк кода, адресуемый по имени. Общий принцип, на ко-
тором строится технология процедурного программирования, — агрегация, соедине-
ние частей в единое целое. Поскольку человеку свойственно воспринимать мир как
множество связанных сущностей, нет ничего удивительного в том, что подобный под-
ход нашел свое применение и в области программирования. Например, когда я гово-
рю о Хогане, моем псе, то имею в виду животное, которое мы вызволили из мест
"заключения". Это Лабрадор песочного цвета, смешанной породы, самец, пяти лет от
роду. Он дружелюбный и преданный. Вот из таких отдельных характеристик состоит
светлый образ нашего любимца.
Новый термин
Употребляя термин
подразумеваем процесс соединения строк
программы в единый блок, адресуемый по имени.
В языках программирования подобная роль отводится процедурам. Процедуры со-
держат блоки кода для решения повторяющихся частных подзадач. Не стоит говорить
о том, что намного легче ссылаться на блок строк по имени, нежели повторять все их
заново при необходимости решения той же подзадачи.
В каждой процедуре легко заметить несколько основных частей. Первая — это на-
именование, которому предшествует служебное слово Sub. Далее могут быть перечис-
лены значения
которые передаются в процедуру. Такие значения назы-
вают
аргументами.
За первой строкой следует блок
тела
процедуры. Любая процедура
завершается парой служебных слов End Sub. Ниже подробно рассмотрены все основ-
ные части процедуры, написанной на языке VBA.
Часть III. Использование ресурсов Access

Первая и последняя строки процедуры
Первая и последняя строки процедуры настолько важны, что даже при от-
сутствии других строк процедура будет считаться правильной конструкцией
языка
Формат первой и последней строк любой процедуры неизме-
нен. Его легко представить в виде следующей синтаксической формулы:
о
Sub
(
As
ных,
] )
End Sub
Строка заголовка процедуры начинается со служебного слова Sub, за которым сле-
дуют наименование процедуры и необязательный список аргументов в круглых скоб-
ках. Символ многоточия означает, что допустимо произвольное число аргументов.
Процедура завершается служебными словами End Sub.
В языках программирования, как и в естественных языках, действуют
строгие правила ' синтаксиса. Синтаксис — это набор правил
составления и использования языковых конструкций. Компилятор
выполняет роль жесткого цензора, тщательно анализирующего
допустимость употребления каждого символа в контексте его
окружения и взаимосвязи строк и целых блоков кода программы. На
данном этапе достаточно запомнить общие синтаксические правила
конструирования процедур.
Правила именования процедур
Удачные соглашения, касающиеся именования процедур, способны облегчить воспри-
ятие вашего кода другими и решить задачу документирования текста программы. Зачастую
уместные и красноречивые названия процедур и их небольшой объем позволяют исклю-
чить необходимость вставки в код дополнительных строк комментариев. Можно предло-
жить такую простую и удобную схему именования: название должно включать существи-
тельное, описывающее предмет, к которому имеет отношение процедура, и глагол, харак-
теризующий выполняемую операцию. Внимательно изучите следующий пример:
Sub
As Long,
As Date )
End Sub
Название процедуры — DocumentPrint. Оно говорит само за себя — процедура
выполняет печать документа (например, платежного). Наименования аргументов,
DocumentNumber и DocumentDate, также достаточно понятны. Первый из них — это
номер документа (скажем, в базе данных), а второй — дата его сохранения. Если под-
программа решает только задачу печати документа, специальные комментарии, веро-
ятно, не понадобятся. (За дополнительными сведениями о правилах конструирования
процедур и функций обращайтесь к разделу "Заповеди программирования", приве-
денному ниже в этой главе.)
Аргументы — как их звать-величать
Переменные, перечисленные в круглых скобках после наименования процедуры,
называют аргументами, или параметрами. Термин
аргумент
впервые был предложен
математиками. Классики математики — эти первые программисты — давали имена
всем сущностям, с которыми сталкивались. Впрочем, нам с вами понятен, вероятно,
8-й час. Декомпозиция задач 143

далеко не весь математический жаргон. Но слово
аргумент
прижилось в среде про-
граммистов и стало общеупотребительными. Те же рекомендации, которые были даны
выше при обсуждении правил именования процедур, вполне применимы и к их аргу-
ментам. Называйте переменные-аргументы внятно и недвусмысленно.
Избегайте использования нестандартных сокращений, неологизмов и бессмыслен-
ных последовательностей букв и цифр. Компьютеру, конечно, "до лампочки", как
именно назван тот или иной объект программы, но вам самим и будущим читателям
вашей программы это далеко не безразлично. Если когда-либо вашему преемнику
(или даже вам самому — через пару месяцев) придется разбираться в назначении про-
цедуры с
названием
вам не удастся избежать упре-
ков от посторонних или приступов самобичевания.
Придумывая имена для объектов программы, используйте целые слова,
начинающиеся с прописной буквы, последовательности слов или
общепринятые аббревиатуры — и код будет оставаться понятным и
доступным всем и всегда.
Определение типов аргументов
Последняя важная вещь, которую следует обсудить, говоря об общих принципах
создания подпрограмм, — вопрос о том, какие данные следует передавать процедурам
при их вызове. Данные, получаемые процедурой, перечисляются в ее заголовке и за-
ключаются в круглые скобки. Их называют аргументами, или параметрами. Я предпо-
читаю пользоваться термином
хотя оба названия вполне допустимы.
Аргумент определяется следующим образом: вначале указывается его наименова-
ние, за которым следуют служебное слово As и обозначение типа данных. Количество
аргументов процедуры не ограничено. Если необходимо передать процедуре более од-
ного аргумента, их следует разделять запятыми. (Количество запятых, таким образом,
на единицу меньше числа аргументов.)
Ниже приведен пример короткой процедуры, которая вычисляет общую стоимость
изделия с учетом налога. Результат сохраняется в глобальной переменной.
Global TotalSale As Double
Sub
As Double, SalesTax As Double )
TotalSale = SaleAmount * (1 + SalesTax)
End Sub
Эта процедура использует два аргумента. Синтаксис ее правильный. Она также
точна логически. Синтаксическая и логическая правильность — два обязательных ус-
ловия, которых следует придерживаться. Если конструкция неверна с точки зрения
синтаксиса, она просто не будет работать. Логическая правильность заключается в га-
рантии получения верного предсказуемого результата. Процедура CalculateSal-
esTax удовлетворяет обоим названным стандартам.
Существуют, однако, еще два требования. Первое из них — семантическая пра-
вильность — заключается в верной передаче вашего исходного замысла (алгоритма)
средствами языка программирования. Второе, не менее важное, — это условие надеж-
ности и устойчивости кода по отношению к ошибкам времени выполнения.
Вопросам обеспечения устойчивости и надежности программного кода
посвящена глава "18-й час. Обработка ошибок во время выполнения
программы". Напомним еще раз — старайтесь избегать использования
глобальных переменных.
Часть III. Использование ресурсов Access