русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Синтаксис и программные конструкции VBA

Алфавит языка

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

  1. прописные и строчные латинские буквы от A до Z , буквы кириллицы от А до Я;
  2. десятичные цифры от 0 до 9;
  3. знаки арифметических операций: + (сложение), – (вычитание), * (умножение), / (деление), ^ (возведение в степень), \ (целочисленное деление),mod (остаток от целочисленного деления);
  • знаки операций отношений: = (равно), < > (не равно), < (меньше), > (больше), >=(больше или равно), <= (меньше или равно);
  • знаки пунктуации: пробел, точка, запятая, точка с запятой, двоеточие, круглые скобки, кавычки, апостроф;
  • специальные символы: ?, !, $, #, %.

 

Типы  данных

Типы данных относятся к самым фундаментальным понятиям любого языка программирования.  В языке VBA предусмотрены следующие типы данных:

  1. числовые,
  2. строковые (символьные):
  3. дата и время (Data – от 01.01.100 до 31.12.9999):
  4. логический (Boolean – для  хранения значений True и  False):
  5. объектный (хранит ссылку на любой объект в памяти):
  6. Variant  – специальный тип данных, который может хранить любые другие типы данных.

Числовые типы данных перечислены в табл.2
Таблица 2. Числовые типы данных, используемые в VBA


Тип данных

Описание

Диапазон допустимых значений

Byte

Достаточно малое целое число

От 0 до 255

Integer

Не слишком большое целое число

От –32768 до 32767

Long

Большое целое число

От –2147483648 до 2147483647

Single

Значение одинарной точности с плавающей запятой

От –3,402823Е38 до –1,401298Е-45 для отрицательных значений и
от 1,401298Е-45 до 3,402823Е38 для положительных значений

Double

Значение двойной точности с плавающей запятой

От –1,79769313486231Е308 до 1,79769313486232Е308

Currency

Большое число, для которого выделено 19 позиций, включая 4 позиции после запятой

От –922337203685477,5808  до 922337203685477,5807

Различные типы данных введены для рационального использования памяти ЭВМ.
При решении задач лабораторных работ рекомендуется использовать числовые данные типов Integer и  Single.

 

Формы  записи  вещественных  чисел  в  программе

Вещественные числа записываются в двух форматах:
– основная (естественная) форма записи с фиксированной точкой. Десятичная точка отделяет целую часть от дробной. Знак плюс и нулевую целую часть можно опустить. Примеры: 12.38, .874, 0.00012, 98723.25.
– экспоненциальная (показательная)  форма записи числа с плавающей точкой в виде
+/- m +/- p,
где m – число с фиксированной точкой (мантисса числа),
E– основание степени 10,
p – показатель степени.

Например, числа -13,24*10-6, 21,47*109, 0,28*10-17 можно записать в показательной форме в виде -13.24Е-6, 21.47Е9, 0.28Е17 соответственно. Эту форму применяют при записи очень  больших либо очень малых чисел.

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

 

Переменные

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

Переменная характеризуется именем (идентификатором), типом и значением.

Имя переменной состоит из комбинации букв и  цифр длиной не более 255 символов. На первом месте должна быть буква. Имя должно быть информативным. Примеры имен переменных:
Alfa, X, I, SUMMA, B23, KOD1_3, V, S.
Неверные имена:
a-l, x*x, 2c.

Применительно к программированию определение переменной можно дать следующим образом:
Переменная – это ячейка в памяти для хранения значения. Такими значениями могут быть числа, строки, даты и т.д. Перед использованием переменной ее необходимо объявить, т.е. указать имя переменной и тип данных, которые будут храниться в ней. Объявление каждой переменной делает программу надежной, ускоряет ее работу, уменьшает количество ошибок.

В программе переменные объявляются в разделе переменных по следующему формату:
DIM имя_переменной AS тип [, имя_переменной AS тип],

Примеры:
DIM V AS SINGLE, POS AS INTEGER
DIM TOK AS SINGLE
Можно вообще не применять раздел описания переменных, в этом случае всем переменным по умолчанию присваивается тип Variant. (Это плохой стиль программирования.)

Для запрета использования переменных без их объявлений рекомендуется в разделе объявлений модуля указать команду
OPTION EXPLICIT.

В этом случае при попытке использования предварительно не объявленной переменной редактор VBA будет сообщать об ошибке.
Для автоматического размещения  команды Option Explicit при загрузке редактора необходимо зайти в меню Tools (инструменты), Options (настройки), Editor (редактор)  и активизировать («поставить галочку») поле выбора команды Require Variable Declaration (требуется объявление переменной).

 

Константы

Константа – это величина, значение которой не изменяется в ходе выполнения всей программы.

Константы бывают числовые и строковые (символьные).

В программе константы объявляются в разделе констант. Записывается  ключевое слово CONST и за ним  имена (идентификаторы) и значения констант программы. Константы описываются так:
CONST g = 9.81, pi = 3.1415926, Rmin = 0.1
Для объявления каждой константы можно использовать свое слово CONST.
Раздел CONST обычно размещается в начале программы, в любом случае – до первого использования констант программой.

 

Встроенные  функции

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

  1. математические функции;
  2. функции обработки строк;
  3. функции проверки, определения и преобразования типов данных;
  4. функции времени и даты;
  5. финансовые функции и др.

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

Список встроенных математических функций приведен в табл. 3.
Таблица 3. Перечень математических функций


Название функции

Имя

Примечание

Синус
Косинус
Тангенс
Арктангенс
Показательная
Логарифм натуральный
Корень квадратный
Абсолютное значение
Целая часть числа
Наибольшее целое, не превышающее х.
Знак числового выражения
Случайное число

SIN(X)
COS(X)
TAN(X)
ATN(X)
EXP(X)
LOG(X)
SQR(X)
ABS(X)
FIX(X)

INT(X)
SGN(X)
RND(n)

Х в радианах

 

 

Х>0
X>0

 

 

1 для х>0, 0 для х=0, -1 для х<0

Функции, отсутствующие в числе встроенных, необходимо записывать с использованием встроенных функций, например:

 

Массивы  данных

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

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

Отдельные переменные в массиве называются элементами  массива. Все элементы одного массива имеют одно и то же имя – имя массива. Для образования имен массивов используются  те же правила, что и для образования имен простых  переменных. Каждый элемент в массиве имеет  индекс (номер), по которому можно обратиться к значению элемента. Таким образом, индексированные переменные (переменные с индексом) служат для обозначения элементов массива.

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

Массивы бывают одномерными, двумерными и многомерными. Число индексов, определяющих положение элемента, называется размерностью массива. Так, для одномерного массива размерность равна единице, для двумерного – размерность равна двум. Одномерный массив (или вектор) представляет собой строку или столбец переменных (линейную таблицу). Двумерный массив представляет собой матрицу или прямоугольную таблицу, элемент в которой задается номерами строки и столбца.

Примеры записи элементов массивов:
А(2) – элемент одномерного массива;
С(1, 3) – элемент двумерного массива. Индексы в двух- и многомерных массивах отделяются друг от друга запятыми.
Общее количество элементов в массиве называется размером массива (не путать с размерностью!)

Под массивы, так же как и под простые переменные, ЭВМ должна выделить область памяти. Необходимо заранее сообщить ЭВМ, какие массивы будут использованы в программе и каков размер каждого массива для того, чтобы машина выделила соответствующее количество  ячеек памяти для последующего размещения в них элементов массива. Эта операция называется объявлением массива и выполняется с помощью оператора DIM.

Формат оператора:
DIM имя_массива AS тип [, имя_массива AS тип]
После имени массива в круглых скобках указываются верхние границы каждого индекса. Нижняя граница индекса по умолчанию равна нулю, т.е. нумерация элементов массива начинается с нуля. Если до оператора DIM записать оператор OPTION BASE 1, тогда нумерация элементов массива начнется с единицы.

Примеры:
DIM A (10) AS INTEGER ‘одномерный целочисленный массив из 11-и элементов
DIM P (3, 4) AS SINGLE      ‘двумерный массив из вещественных чисел, состоящий из 20-и элементов: 4-х строк и 5-и столбцов
При необходимости можно явно указывать интервал изменения номеров элементов массива, например:
DIM W (3 TO 8) AS INTEGER
DIM Z (1 TO 3, 1 TO 5) AS SINGLE

Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляется как динамический. Для этого при объявлении массива не указывается его размерность, например DIM A ( ) AS INTEGER. В ходе выполнения программы возможно изменить размер динамического массива командой ReDim, например ReDim А (1 To 8). Если необходимо сохранить данные в массиве при изменении размерности, то перед именем массива записывается ключевое слово Preserve: ReDim Preserve А (1 To 8).

В VBA не определены операции с массивом как единым целым, поэтому любая обработка массивов осуществляется поэлементно.

 

Выражения

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

Арифметические выражения соответствуют общепринятым алгебраическим выражениям. Результатом вычисления является число. Операции в сложном выражении выполняются в порядке старшинства: вычисление значения функций, возведение в степень, умножение и деление, сложение и вычитание. Операции одного приоритета выполняются последовательно слева направо. Для изменения приоритета используются круглые скобки. Запись выражений выполняется в одну строку, в выражениях нельзя опускать знак умножения, ставить подряд два знака операций. Если в числителе (знаменателе) дроби многочлен, то его необходимо заключать в скобки.

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

Примеры записи арифметических и логических выражений приведены соответственно в таблицах 4, 5

Таблица 4. Запись арифметических выражений на языке VBA


Математическая запись

Запись на языке VBA

2 * A* (-B)

(A * X ^ 2 + B * X + C) / (D - 2.5) ^ (1 / 3)

SIN(X) ^ 2  –  COS(X ^ 3)

LOG(X) / LOG(10) * COS(2 * X) / (SQR(B) + C)

Таблица 5. Запись логических выражений на языке VBA

Математическая запись

Запись на языке VBA

b2  –  4 ac > 0

B^2 – 4 * A * С > 0

K <> L

(X>  = -5) AND (X < = 5)

x > y и y > 0

X > Y  AND  Y > 0

x = 0  или  x = 1

X = 0  OR  X = 1

 

Структура  программы

Программа на языке VBA записывается в стандартном модуле и оформляется в виде процедуры пользователя. Формат процедуры (программы) в общем случае следующий:

SUB имя_процедуры (список аргументов)
последовательность инструкций (операторов)
END SUB

Инструкции представляют собой последовательность логических строк. Каждая строка состоит из одного или нескольких операторов или процедур. Несколько операторов в одной строке друг от друга отделяются двоеточием.

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

Формат оператора:
REM комментарий
или
'комментарий.

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

 

Оператор  присваивания

Оператор присваивания служит для вычисления значения выражения и присваивания этого значения переменной.

Формат оператора:
Имя_переменной = выражение
Примеры:

A=2.1
SUMMA = X + COS(X) ^2

Следует различать оператор присваивания и алгебраическое равенство. Оператор  Y = A + B  означает для ЭВМ: сложить содержимое ячеек памяти, отведенных для размещения значений переменных А и В, и поместить результат в ячейку памяти, отведенную для значения переменной Y. Широко используется конструкция оператора присваивания  типа I = I + 1. К заданному значению переменной I прибавляется 1, и результат помещается в ту же ячейку, заменив бывшую там информацию на новую. С точки зрения математики равенство i = i+1 не имеет смысла.

При присвоении переменным строковых значений их необходимо заключать в кавычки:
T = «Параметр 1»,
а значения даты\времени заключать в символы # («решетка»):
D = #11/29/2006#

 

Операторы  (процедуры)  ввода  данных

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

Примеры: A = 3   TOK = 480  I = 1. Этот способ используется, если исходные данные не изменяются при нескольких исполнениях программы.

2. При работе с электронными таблицами применяют считывание данных из ячеек листа рабочей книги Excel. Для этого используется инструкция Сells(i, j), которая в данном случае выступает как функция ввода данных. Формат использования:
Имя_переменной  = Сells(i, j),
где i, j соответственно номер строки и номер столбца, на пересечении которых находится ячейка с данными, т.е. адрес ячейки.

Пример:
А = Сells(1, 2)

После выполнения этой строки переменной А присвоится значение, которое хранится в ячейке, находящейся в первой строке (первая цифра) и во втором столбце (вторая цифра), т.е. в ячейке B1 электронной таблицы.

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

Формат использования (в простейшем случае):
Имя_переменной  = InputBox(“Сообщение”).

В ходе работы программы при выполнении указанной функции на экране монитора появляется диалоговое окно, содержащее текст, указанный в «Сообщении», а также поле ввода. Выполнение программы приостанавливается, устанавливается режим ожидания ввода информации пользователем и нажатия одной из кнопок. После ввода информации и нажатия на кнопку ОК переменной присваивается значение типа String (строковый тип данных), содержащее текст, введенный в поле ввода.

Пример:
d = InputBox (“Введите значение диаметра”)

Рис. 5. Окно ввода

На экране  (рис. 5)появится диалоговое окно:
В примере переменной d будет присвоено значение строки “23”, а не числа 23.

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

При записи в коде программы
d = Val(InputBox (“Введите значение диаметра”))
и вводе в поле ввода цифр 23 переменной d присвоится число 23.

 

Операторы  (процедуры)  вывода  данных

Вывод информации на экран монитора осуществляется двумя способами.

1. С помощью процедуры вывода

MsgBox (Сообщение)

Эта процедура выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия пользователем кнопки (выполнение программы приостанавливается). После нажатия кнопки выполнение программы продолжается.

Пример:

MsgBox (“Значение диаметра =” & d)

Сообщение может содержать комментарий, заключенный в кавычки, а также имя переменной, значение которой необходимо вывести в окне. Символ “&” означает слияние в одну строку всех символов, записанных в скобках.

Рис. 6. Окно сообщения

В результате на экране (рис. 6) появится диалоговое окно.

2. Вывод данных на лист рабочей книги Excel с использованием инструкции Сells(i, j). В этом случае в отличие от ранее рассмотренного она выступает как процедура вывода:
Cells(i,j)= «результат»,
где «результат»значение переменной, которое помещается в ячейку с адресом, определяемым номером строки i и номером столбца j.

 

Линейный вычислительный процесс

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

1) описания данных;
2) ввода исходных данных;
3) вычисления требуемых значений;
4) вывода полученных результатов.

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

Задача 1. Ввести в память ЭВМ значения переменных а = 1*102, t = 1,2; вычислить и вывести на экран дисплея значение

где .
Программа решения этой задачи может иметь следующий вид:

Option Explicit
Sub Задача_1 ( )
REM Раздел описания констант
CONST a=1E2, t=1.2
REM Раздел описания переменных
DIM x AS SINGLE, y AS SINGLE
REM Тело программы или раздел операторов
‘ Вычисление x
x=a*t+0.2
‘ Вычисление y
y=(x^2+LOG(x)–(x+1) ^2)/(x*SIN(x))
‘ Вывод результатов расчета на экран
MsgBox ("Y=" & y)
End Sub

 

Программирование разветвляющихся вычислительных процессов

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

Для того чтобы на основании одного условия программа выбирала между двумя альтернативными блоками программного кода, используется оператор    If . . .Then . . . Else, который имеет две формы записи оператора однострочную и  блочную.  
Синтаксис однострочной формы записи оператора:

IF условие THEN Выражение_1 ELSE Выражение_2

Синтаксис блочной формы записи оператора:

If  условие Then
           (операторы, выполняющиеся, когда условие = True (истина))
Else
              (операторы, выполняющиеся, когда условие = False (ложно))
End If.

В том случае, если условие принимает значение True, то выполняется один блок программного кода, а если условие принимает значение False, то выполняется другой.

Если структура If. . .Then должна выполнить только один оператор, когда условие принимает значение True, всю структуру можно уместить в одну строку. В таком случае оператор End If не требуется – точнее, его быть не должно. Синтаксис записи линейной формы записи оператора:  

If  Цена > 20 Then  (операторы, выполняющиеся, когда условие = True).
Часто, прежде чем принять решение о действиях, которые должна выполнить программа, приходится проверять два или даже больше условий.

В зависимости от ситуации, при этом потребуется добавить в структуру  If . . .Then ключевые слова Elself или вложенные структуры If . . .Then. Синтаксис такой структуры:

 If  условие1 Then
            (операторы, выполняющиеся, когда условие 1 = True)
Elself условие2 Then
          (операторы, выполняющиеся, когда условие 1 = False, а условие 2 = True)
Elself  условие З Then
   (операторы, выполняющиеся, когда условие1и условие 2 = False, а условие З = True)
   . .. (другие операторы Elself)
 Else       ' необязательное ключевое слово
     (операторы, выполняющиеся, когда все условия = False)
End If
П р и м е р. Необходимо вычислить значение функции  при любых значениях a и b. На первый взгляд решение этой задачи можно описать алгоритмом  линейной структуры, но при ab = 0 задача не может быть решена, т.к. деление на нуль невозможно. Для корректного решения задачи необходимо предусмотреть вывод сообщения, если вычисление y невозможно. Тогда вычислительный процесс можно описать следующим образом: вычислить y, если ab не равно 0 или вывести сообщение, если ab = 0.

В ГСА (рис. 3.1) решения этой задачи используется блок проверки условия, имеющий один вход и два выхода по выполнению проверяемого условия – «да» и «нет». В примере это блок 2, в котором проверяется условие ab = 0. В зависимости от результата проверки условия возможны два пути продолжения решения задачи. Каждый из путей называется ветвью, а алгоритм – разветвляющимся.

Как и во всех разветвляющихся алгоритмах в данной задаче нарушается естественный порядок следования блоков. Так, за блоком 2 может выполняться блок 3, образуя ветвь 1, а может и блок 5, образуя ветвь 2; за блоком 4 всегда выполняется блок 6.
Любое изменение естественной (линейной) последовательности выполнения блоков называется переходом. Переходы бывают двух типов: условные и безусловные. Условный переход реализуются с помощью оператора условия (условного оператора).

Для рассматриваемого примера оператор условия для блочной структуры можно записать в следующем виде:
Программный код
Sub V ( )
Dim a As single,  b As single, y As single
a=val(inputBox(“a=”))
b=val(inputBox(“b=”))
If  a*b=0  Then
MsgBox (“ab=0”)  
Else  y=1/ (a*b)
MsgBox (“y=”& y)
End If

Если условие выполняется, т.е. ab=0, в окне вывода на экран монитора оператором MsgBox выводится сообщение “ab=0”, в противном случае, когда произведение a и b не равно нулю, вычисляется значение y по формуле y=1/(a*b)  и это значение выводится  в стандартном окне вывода.

Вариант программы с  линейной формой записи оператора:

Option  Explicit
Sub V ( )
Dim a As single,  b As single, y As single
a=val(inputBox(“a=”))
b=val(inputBox(“b=”))
IF a*b=0 THEN MsgBox(“ab=0”)  ELSE  y=1/(a*b):  MsgBox (“y=”&  y)  ‘вывод результата
End Sub

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

Вернуться воглавление




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.