Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7897

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

background image

8-й час

Декомпозиция

Вам наверняка известен очевидный, но надежный способ решения сложных за-

дач, связанный с разбиением (или, как говорят профессионалы, —

 декомпозицией)

их на мелкие подзадачи. Программа — это набор строк кода, каждая из которых,
будучи связанной с остальными, предусматривает решение простой частной задачи.

На предыдущих занятиях мы рассмотрели немало примеров кода, структурные еди-
ницы которых называли выражениями. Выражение может охватывать одну или не-

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

 или более сложными

(как то, которое вы сейчас читаете). А вот примеры выражений на языке програм-
мирования: А = 5 или Dim A As Integer. Выражения служат "строительным" ма-

териалом для создания более крупных конструкций — функций и подпрограмм

(процедур).

На этом занятии вы научитесь выявлять подмножества строк кода, которые целе-

сообразно группировать в одном месте и затем ссылаться на них по имени из других
строк программы. Именованный блок кода, состоящий из нескольких строк, называ-
ют (в зависимости от способа его оформления)

 функцией

 или

 процедурой.

Определение функции или процедуры должно следовать определенным строгим

синтаксическим правилам. Одно из них — это наличие служебных слов Function или

Sub, которые обозначают, соответственно, начало блока функции или процедуры.

Во время работы с Access понадобится создавать функции и процедуры для реше-.

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

Не исключено, что при написании программ вам придется прибегнуть к помощи

процедур или функций для

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

должны выполняться в режиме диалога с пользователем. Хороший пример — задача
автоматического обновления или резервного копирования базы данных, требующая
автоматического выполнения ночью, в часы наименьшей загрузки компьютерного

оборудования и каналов связи.


background image

В таких ситуациях, когда необходимо автоматизировать решение

 и

уменьшить количество ошибок, появляющихся из-за повторяемости или сложности опе-

раций, придет на помощь программа, выполняемая в среде Access. Программа для
Access — это, в действительности, набор функций и процедур, написанных на языке

Основные темы занятия.

• Механизмы создания функций и процедур.
• Заповеди программирования.
• Практические примеры.
• Функции импорта текстовых данных.

Механизмы создания процедур

Язык программирования VBA поддерживает две разновидности именованных бло-

ков кода — процедуры (подпрограммы) и функции. Вначале обратимся к процедурам.

Их проще создавать и удобнее использовать в качестве отправного пункта дальней-

шего повествования.

В основе технологии процедурного программирования лежат очевидные и естест-

венные предпосылки, связанные с ограниченными возможностями человеческой па-

мяти и стремлением представить сложную проблему в виде набора простых имено-

ванных сущностей, каждая из которых ссылается на некую группу данных или подра-

зумевает выполнение определенного законченного множества операций. Как я, на-

пример, запоминаю телефонные номера? Я мысленно разбиваю номер на три группы

цифр: первая соответствует коду региона, вторую я называю префиксом, а третью —

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

четко структурированная и поэтому легче воспринимаемая информация.

Процедура —

 это блок строк кода, адресуемый по имени. Общий принцип, на ко-

тором строится технология процедурного программирования, — агрегация, соедине-

ние частей в единое целое. Поскольку человеку свойственно воспринимать мир как

множество связанных сущностей, нет ничего удивительного в том, что подобный под-

ход нашел свое применение и в области программирования. Например, когда я гово-

рю о Хогане, моем псе, то имею в виду животное, которое мы вызволили из мест

"заключения". Это Лабрадор песочного цвета, смешанной породы, самец, пяти лет от

роду. Он дружелюбный и преданный. Вот из таких отдельных характеристик состоит

светлый образ нашего любимца.

Новый термин

Употребляя термин

 подразумеваем процесс соединения строк

программы в единый блок, адресуемый по имени.

В языках программирования подобная роль отводится процедурам. Процедуры со-

держат блоки кода для решения повторяющихся частных подзадач. Не стоит говорить

о том, что намного легче ссылаться на блок строк по имени, нежели повторять все их

заново при необходимости решения той же подзадачи.

В каждой процедуре легко заметить несколько основных частей. Первая — это на-

именование, которому предшествует служебное слово Sub. Далее могут быть перечис-

лены значения

 которые передаются в процедуру. Такие значения назы-

вают

 аргументами.

 За первой строкой следует блок

 тела

 процедуры. Любая процедура

завершается парой служебных слов End Sub. Ниже подробно рассмотрены все основ-
ные части процедуры, написанной на языке VBA.

 Часть III. Использование ресурсов Access


background image

Первая и последняя строки процедуры

Первая и последняя строки процедуры настолько важны, что даже при от-

сутствии других строк процедура будет считаться правильной конструкцией

языка

 Формат первой и последней строк любой процедуры неизме-

 нен. Его легко представить в виде следующей синтаксической формулы:

о

 Sub

 (

 As

ных,

 ] )

 End Sub

Строка заголовка процедуры начинается со служебного слова Sub, за которым сле-

дуют наименование процедуры и необязательный список аргументов в круглых скоб-

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

Процедура завершается служебными словами End Sub.

В языках программирования, как и в естественных языках, действуют

строгие правила ' синтаксиса. Синтаксис — это набор правил

составления и использования языковых конструкций. Компилятор

выполняет роль жесткого цензора, тщательно анализирующего

допустимость употребления каждого символа в контексте его

окружения и взаимосвязи строк и целых блоков кода программы. На

данном этапе достаточно запомнить общие синтаксические правила

конструирования процедур.

Правила именования процедур

Удачные соглашения, касающиеся именования процедур, способны облегчить воспри-

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

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

теризующий выполняемую операцию. Внимательно изучите следующий пример:

Sub

 As Long,

 As Date )

End Sub

Название процедуры — DocumentPrint. Оно говорит само за себя — процедура

выполняет печать документа (например, платежного). Наименования аргументов,

DocumentNumber и DocumentDate, также достаточно понятны. Первый из них — это

номер документа (скажем, в базе данных), а второй — дата его сохранения. Если под-

программа решает только задачу печати документа, специальные комментарии, веро-
ятно, не понадобятся. (За дополнительными сведениями о правилах конструирования
процедур и функций обращайтесь к разделу "Заповеди программирования", приве-
денному ниже в этой главе.)

Аргументы — как их звать-величать

Переменные, перечисленные в круглых скобках после наименования процедуры,

называют аргументами, или параметрами. Термин

 аргумент

 впервые был предложен

математиками. Классики математики — эти первые программисты — давали имена

всем сущностям, с которыми сталкивались. Впрочем, нам с вами понятен, вероятно,

8-й час. Декомпозиция задач 143


background image

далеко не весь математический жаргон. Но слово

 аргумент

 прижилось в среде про-

граммистов и стало общеупотребительными. Те же рекомендации, которые были даны

выше при обсуждении правил именования процедур, вполне применимы и к их аргу-

ментам. Называйте переменные-аргументы внятно и недвусмысленно.

Избегайте использования нестандартных сокращений, неологизмов и бессмыслен-

ных последовательностей букв и цифр. Компьютеру, конечно, "до лампочки", как

именно назван тот или иной объект программы, но вам самим и будущим читателям

вашей программы это далеко не безразлично. Если когда-либо вашему преемнику

(или даже вам самому — через пару месяцев) придется разбираться в назначении про-

цедуры с

 названием

 вам не удастся избежать упре-

ков от посторонних или приступов самобичевания.

Придумывая имена для объектов программы, используйте целые слова,

начинающиеся с прописной буквы, последовательности слов или

общепринятые аббревиатуры — и код будет оставаться понятным и

доступным всем и всегда.

Определение типов аргументов

Последняя важная вещь, которую следует обсудить, говоря об общих принципах

создания подпрограмм, — вопрос о том, какие данные следует передавать процедурам

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

ключаются в круглые скобки. Их называют аргументами, или параметрами. Я предпо-

читаю пользоваться термином

 хотя оба названия вполне допустимы.

Аргумент определяется следующим образом: вначале указывается его наименова-

ние, за которым следуют служебное слово As и обозначение типа данных. Количество
аргументов процедуры не ограничено. Если необходимо передать процедуре более од-

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

на единицу меньше числа аргументов.)

Ниже приведен пример короткой процедуры, которая вычисляет общую стоимость

изделия с учетом налога. Результат сохраняется в глобальной переменной.
Global TotalSale As Double

Sub

 As Double, SalesTax As Double )

TotalSale = SaleAmount * (1 + SalesTax)

End Sub

Эта процедура использует два аргумента. Синтаксис ее правильный. Она также

точна логически. Синтаксическая и логическая правильность — два обязательных ус-

ловия, которых следует придерживаться. Если конструкция неверна с точки зрения

синтаксиса, она просто не будет работать. Логическая правильность заключается в га-

рантии получения верного предсказуемого результата. Процедура CalculateSal-

esTax удовлетворяет обоим названным стандартам.

Существуют, однако, еще два требования. Первое из них — семантическая пра-

вильность — заключается в верной передаче вашего исходного замысла (алгоритма)

средствами языка программирования. Второе, не менее важное, — это условие надеж-

ности и устойчивости кода по отношению к ошибкам времени выполнения.

Вопросам обеспечения устойчивости и надежности программного кода

посвящена глава "18-й час. Обработка ошибок во время выполнения

программы". Напомним еще раз — старайтесь избегать использования

глобальных переменных.

 Часть III. Использование ресурсов Access