|
|
|||||||||||||||||||||||||||||
|
Введение в программирование на Visual BasicИсточник: miitbsuedu miit.bsu.edu
В качестве языка программирования будем использовать Visual Basic, а точнее - Visual Basic for Applications (VBA), встроенный в среду MS Access. Причинами этого выбора являются:
Следует также заметить, что в рамках курса информатики мы рассматриваем лишь основы программирования на Visual Basic. На этом уровне изучения приводимые коды программ не требуют никакой коррекции при их использовании в среде универсальной версии Visual Basic, например, VB 6.0. Среда разработки программДля открытия окна интегрированной среды разработки программ в MS Access необходимо в окне БД выбрать пункт Модули и нажать кнопку Создать. Фрагмент окна интегрированной среды показан на рисунке. Основными пунктами меню, необходимыми для запуска и отладки программы являются:
Текст (код) программы набирают в окне редактора. После набора программу следует запустить на выполнение командой Run/Run Sub. Если в программе обнаружены ошибки, то используются команды отладки, перечисленные выше.> Структура программного кодаОсновой программ на VBA являются процедуры и функции, состоящие из инструкций, которые выполняют необходимые действия и вычисления. Каждая процедура имеет имя, по которому она вызывается на выполнение. Порядок записи процедур и функций безразличен, однако должен существовать главный объект, с которого начинается выполнение программы. В большинстве случаев таким объектом является процедура Main(). Программы на языке Visual Basic в среде Access хранятся в модулях. Mодуль является структурой, сохраняющей некоторый набор описаний и процедур, или способом организации процедур. Модули подразделяются на стандартные и модули форм и отчетов. Стандартные модули. Стандартные модули являются отдельными объектами Access и представлены в окне БД. В них хранятся процедуры, доступные из любых других объектов базы данных. Вызов этих процедур может осуществляться из процедур обработки событий, процедур других стандартных модулей, макросов и просто из выражений. Модули форм и отчетов. Любая форма и любой отчет базы данных содержит встроенный модуль. Модуль формы или отчета создается автоматически при создании формы или отчета и является частью их описания. Модуль существует пока существует форма или отчет, копируется и удаляется вместе с ними. Процедуры модулей связываются с событиями этих объектов. Процедуры и функцииПроцедуры имеют следующий синтаксис: [Private / Public] Sub <Имя>(<Формальные аргументы>) Здесь и далее угловые скобки ( < и > ) содержат пояснения, на место которых должны быть подставлены реальные текстовые конструкции, соответствующие синтаксическим правилам языка. Квадратные скобки означают необязательность применения записанных в них служебных слов. Вертикальная черта означает возможность выбора одного из служебных слов. Вызов процедуры общего назначения выполняется по имени: <Имя>(<Фактические аргументы>) При вызове процедуры фактические аргументы подставляются на место формальных и управление выполнением передается процедуре. Аргументы могут быть входными, выходными или модифицируемыми. Через входные аргументы процедура получает данные при обращении к ней. Выходные аргументы возвращают результаты выполнения процедуры. Модифицируемые аргументы являются одновременно входными и выходными. Функция общего назначения построена также, как процедура, однако, результат работы функции передается (возвращается) через ее имя. Поэтому, как и в математике, обращения к функциям можно использовать внутри арифметических и логических выражений. Синтаксис функции: [Private / Public] Function <Имя>(<Аргументы>)<Описание функции> Для того, чтобы функция возвращала результат через имя, в теле функции должна присутствовать хотя бы одна команда присваивания типа <Имя>=<выражение> Служебные слова Private и Public задают область видимости процедур и функций. Private делает объект доступным только внутри данного модуля. Public делает объект дос-тупным из другого модуля. Описание переменныхМодуль, тело процедуры или функции обычно начинаются с раздела описаний. Он содержит определения переменных и констант, которые используются в модуле и процедурах. С помощью переменных в процедуры передаются аргументы, в ходе выполнения процедур сохраняются рабочие промежуточные значения, осуществляется обмен данными между процедурами. Переменные существуют только внутри модулей, процедур или функций. Каждая переменная имеет имя. Основной инструкцией для явного описания переменных является инструкция Dim. При размещении инструкции описания в разделе описаний модуля создается переменная, которая может использоваться внутри модуля. При размещении инструкции описания внутри процедуры создается переменная, которая может использоваться только внутри процедуры. При определении переменной для нее указывается тип данных. Формат инструкции описания переменной: Dim <Имя переменной> [As <Тип данных>] Следующая инструкция создает переменную X и указывает для нее текстовый (строковый) тип данных String: Dim X As String Если разместить данную инструкцию внутри процедуры, то переменная X может быть использована только внутри этой процедуры. Если поместить данную инструкцию в раздел описаний модуля, то переменная X будет доступна для любых процедур в данном модуле, но недоступна для процедур в других модулях. Для того чтобы сделать данную переменную доступной для всех процедур в базе данных, следует описать ее как общую с помощью инструкции Public: Public X As String В языке Visual Basic действуют следующие соглашения на имена процедур, переменных и констант:
Основными типами данных, используемыми при описании переменных, являются:
Указание типа данных в инструкции описания не является обязательным. Если тип данных не указан, по умолчанию переменная получит тип Variant. Данные этого типа интерпретируются в Visual Basic в зависимости от операции, в которой они используются, т.е. их тип может меняться. При этом производится преобразование одного типа данных в другой. Использование типа данных Variant вместо любого типа данных обеспечивает большую гибкость при обработке. Однако это порождает некоторые трудности и может приводить к возникновению ошибок. Допускается описание нескольких переменных в одной инструкции. Если требуется явно описать тип данных, то необходимо включить описание типа данных для каждой переменной. В следующей инструкции переменные X, Y и Z описываются с типом данных Integer: Dim X As Integer, Y As Integer, Z As Integer В следующей инструкции переменные X и Y описываются с типом данных Variant; а переменная Z с типом данных Integer: Dim X, Y, Z As Integer Для того чтобы запретить неявное описание переменных в Visual Basic, следует поместить в раздел описания модуля инструкцию Option Explicit. Эта инструкция требует явного описания всех переменных, используемых в модуле. Если в модуль включена инструкция Option Explicit, то Visual Basic генерирует ошибку при компиляции, если обнаруживается имя переменной, которая не была описана ранее. Операторы управления выполнением программыОператор присваивания Присваивание значений переменным осуществляется с помощью оператора присваивания. В этом операторе слева стоит имя переменной, а справа присваиваемое значение или выражение. Например: Х=200*0.8/70 Оператор ветвления Оператор ветвления предназначен для изменения порядка выполнения программы по некоторому условию. Синтаксис оператора: If <условие1> Then Оператор работает следующим образом: если (If) выполняется <условие 1>, то (Then) будет выполнена последовательность операторов <Блок 1>, иначе, если (ElseIf) выполняется <условие 2>, то будет выполнен <Блок 2> и т.д., иначе (Else) - <Блок N> . Допустима форма записи оператора ветвления в одну строку: If <условие1> Then <Оператор 1>: <Оператор 2>: . . . : <Оператор N> В этом случае не указывается конец оператора (End If) как в первом варианте. Оператор цикла For . . . Next Синтаксис: For <i>=<i0> To <iN> [Step <ih>] Значения <i>, <i0>, <iN>, <ih> соответственно означают:
Обычно перечисленные величины являются целыми числовыми. Если шаг не указан, то он по умолчанию принимается равным 1. Для досрочного выхода из цикла используется команда Exit For. Цикл Do с предусловием Синтаксис: Do [While/Until] <условие> Если выбрано служебное слово While, то цикл продолжается, пока выполняется условие; если Until - то прекращается, когда условие выполняется. Цикл Do с постусловием Синтаксис: Do Значение служебных слов цикла аналогично циклу с предусловием, но здесь сначала выполняются действия в блоке, а затем проверка выхода из цикла. В обоих циклах Do для досрочного выхода из цикла используется команда Exit Do. Операторы ввода-вывода Одним из важнейших свойств программы является массовость. Она обеспечивается возможностью ввода различных исходных данных в программу и получения различных результатов без изменения кода самой программы. Кроме того, пользователю необходимо наблюдать результаты работы программы, что обеспечивается операторами вывода данных. В Visual Basic возможны несколько способов ввода данных в программу. Одним из самых простых является использование функции InputBox, имеющей следующий синтаксис: InputBox("<Текст подсказки>") Например, при выполнении команды присваивания S = InputBox("Введите А") будет выведено стандартное окно: После ввода значения в текстовое поле и нажатия кнопки Ok, переменной S будет присвоен введенный текст. Следует иметь в виду, что функция InputBox() возвращает текстовое значение. Поэтому при необходимости ввести число, следует преобразовать возвращаемое значение в требуемый числовой тип. Для преобразования в основные числовые типы используются функции:
Таким образом, для ввода целого значения N следует записать: N = CInt(InputBox("Введите N")) При преобразовании текстовых значений в вещественные с помощью функции CSng(), в окне InputBox в качестве разделителя целой и десятичной частей числа должна быть введена запятая (в выражениях разделителем является точка!). Если введен текст, не соответствующий образу числа, то функции CInt() и CSng() выдают сообщение об ошибке. Для вывода результатов вычислений можно использовать процедуру MsgBox(): MsgBox (<текст>) Выводимое значение должно иметь текстовый тип. Для преобразования числа любо-го типа в текст используется функция CStr(<числовая переменная>) Если в одном окне MsgBox требуется вывести несколько чисел, каждое из них сле-дует преобразовать в текстовый тип и "склеить" оператором +, например, при выполнении фрагмента программы: N = 5 будет выведено следующее окно: Обратите внимание, что функция CStr(Pi) возвратила значение, разделенное запятой, несмотря на то, что в программе разделителем в числе 3.14 является точка. Ссылки по теме
|
|