Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика распечатать.doc
Скачиваний:
4
Добавлен:
10.12.2018
Размер:
164.86 Кб
Скачать

Общие процедуры-программы имеют стандартный синтаксис:

[Область видимости] Sub Имя_Процедуры (Список_Параметров)

[раздел описаний (констант и переменных)]

тело процедуры (операторы)

End Sub

[Область видимости] – указывают Public, если процедура глобальная и доступна (видна) из других модулей, либо Private, если процедура локальная и доступна (видна) только внутри данного модуля и не может быть вызвана из других модулей.

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

Список_Параметров – список переменных, передаваемых процедуре при вызове ее из другой процедуры: Имя_Параметра As Тип_Данных, As – зарезервированное слово VBA указывает, что за ним следует тип переменной. [раздел описаний (констант и переменных)] – раздел описания констант и переменных.

Определение: константа — это поименованная область памяти для хранения данных, значение которым присваивается при определении константы; значения остаются посто­янными и не могут быть изменены во время выполнения программы.

Для определения констант служит зарезервированное слово Const.

Синтаксис описания констант:

Const Имя_Константы As Тип = значение

Например:

' Объявлена числовая константа для хранения

'значения числа Pi

Const Pi As Single = 3.1415926

где Const (Константа) — зарезервированное слово, которое сообщает VBA, что декларируется константа и резервируется область памяти для ее хранения; Имя_Константы — имя константы, не входящее в перечень зарезервированных слов VBA; As (Как) — зарезервированное слово, которое сообщает VBA, что определяется тип данных константы; Тип — Тип_константы определяет размер памяти занимаемой константой (прил. 2, п.1.6, табл. 4). При наборе программы в среда редактора VBA после набора зарезервированного слова As раскрывается список типов объектов и базовые Типы_Дынных. Выбранный в списке Тип_Данных устанавливается двойным щелчком мыши, нажатием клавиши <Таb> или нажатием клавиши <Enter>.

Определение: переменная — это поименованная область памяти для хранения данных, которые могут изменяться в процессе выполнения программы.

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

Синтаксис описания переменных:

Dim [Static] Имя_Переменной [ As Тип]

где Dim (Определить) — зарезервированное слово, которое сообщает VBA, что декларируется переменная и резервируется область памяти для ее хранения. Имя_Переменной — имя переменной, не входящее в перечень ключевых слов VBA. As (Как) — зарезервированное слово, которое сообщает VBA, что определяется тип данных для переменной. Тип — Тип_переменной определяет размер памяти занимаемой переменной (прил. 2, п.1.6, табл. 4). Static (Статический) — зарезервированное слово VBA, позволяет сохранить значение переменной между вызовами процедуры, в которой она объявлена, инструкция Static используется только на уровне процедуры.

Тело процедуры (операторы) – алгоритм записанный на языке VBA.

End Sub – операторная скобка, указывающая на конец процедуры. Каждому оператору Sub обязательно соответствует End Sub.

Примечание: В разделе [раздел описаний (констант и переменных)] сначала описываются все константы, а затем все переменные. [раздел описаний (констант и переменных)] не является обязательным в процедурах.

Область видимости переменных и констант (три уровня):

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

2) Для того чтобы значения определенных констант и переменных были доступны всем процедурам данного модуля, надо их объявить в области общих объявлений модуля (General Declarations), перед словом Dim поставить слово Private. Такие переменные и константы видимы на уровне модуля.

3) Для того чтобы переменные и константы модуля можно было использовать в любой процедуре любого модуля данного приложения, необходимо описать их как глобальные. Нужно помнить, что они находятся в оперативной памяти все время выполнения приложения и, следовательно, потребляют системные ресурсы. Глобальные переменные объявляются в области общих объявлений модуля, перед словом Dim ставится слово Public.

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

[Public|Private] Const Имя_Константы As Тип = значение

Но если в верхней части окна модуля есть оператор Option Explicit, то необходимо описать все переменные и константы.

Инструкция Option Explicit в секции General находится в модуле до всех процедур.При использовании инструкции Option Explicit необходимо явно описать все переменные с помощью инструкций Dim, Private, Public, ReDim или Static. При попытке использовать неописанное имя переменной возникает ошибка во время компиляции

Процедуры обработки событий (Процедура_Событие)

Событие (event) – это действие над объектом (например: нажатие командной кнопки, выполнение директивы меню, открытие или закрытие таблицы Excel и т.п.) Имя Процедуры_События состоит из имени объекта и действия (События), которые объединяются символом подчеркивания “_”.

Синтаксис Процедуры_События:

Private Sub ИмяОбъекта_Событие ( )

тело процедуры (операторы)

End Sub

Общее между общей процедурой и Процедурой_События зарезервированное слово Sub. Принципиальное отличие общей процедуры от Процедуры_События заключается в том, что для общей процедуры имя подбирает пользователь, а для Процедуры_События имя создаётся средой VBA

Условный оператор. Оператор If ... Then

В VBA есть два типа операторов If ... Then — линейный и блочный.

Линейный оператор If ... Then используется для того, чтобы выполнить какой-либо один оператор, если некоторое условие будет истинным. Условие является выражением или функцией, истинность которого оценивается.

Синтаксическая конструкция линейного оператора:

If <Условие> Then <Оператор_1> Else <Оператор_2>

При значении Условия = True выполняется Оператор_1, следующий за словом Then, а затем следующий за условным оператор. Если Условие принимает значение False, то выполняется следующий за Else оператор Оператор_2. Else может отсутствовать, тогда оператор называется безальтернативным и, если Условие= True, то выполняется Оператор_1, а затем следующий за условным оператор. Если Условие= False, а выполняется следующий оператор.

Блочный оператор имеет синтаксис:

If <Условие_1> Then

<Операторы_1, если Условие=True>

[ElseIf <Условие_2> Then

<Операторы_2, если Условие_2=True>]

[ElseIf <Условие_3> Then

<Операторы_3, если Условие_3=False>]

[Else

<Операторы>]

End If

<Условие_1> – необходимая часть оператора, это то Условие, которое должно проверяться. Если значение этого условия True, то выполняется Операторы_1 следующие за словом Then. Если необходимо проверить еще условия, то добавляется зарезервированное слово ElseIf с последующим условием. Если Условие_2=True, то выполняются Операторы_2. Если необходимы еще условия, то добавляются еще структура ElseIf и если все Условия не выполняются, то выполняются Операторы следующие за словом Else.

Операторы If могут быть вложенными друг в друга. Такое вложение операторов применяется, если нужно проверить какое-либо условие при другом условии, которое является True и включить альтернативу Else

Private Sub CommandButton1_Click()

Dim a, b, c As Single

Dim max As Single

’Ввод данных

a = Range("A1").Value

b = Range("B1").Value

c = Range("C1").Value

’Вычисление

If a > b And a > c Then

max = a

Else

If b > c Then

max = b

Else

max = c

End If

End If

’Вывод результатов в ячейку B4

Range("B4").Value = "Максимальное число = " & max

End Sub

Циклы с условием применяются тогда, когда число повторений неизвестно, а некоторые действия в программе должны повторяться до тех пор, пока выполняется определенное условие или до тех пор, пока не будет выполнено определенное условие. Условием может быть любым выражением, принимающим значение True (Истина) или False (Ложь). В VBA есть два основных цикла с условием — цикл Do While ... Loop и цикл Do Until ... Loop. Оба они могут быть с предусловием или с постусловием.

Циклы Do While | Until имеют следующий синтаксис:

Цикл с предусловием:

Do While Untile <.Условие >Операторы

[Exit Do] Loop

где Do — зарезервированное слово VBA, указывающее на начало цикла; While|Until — зарезервированные слова VBA, если используется While -> цикл выполняется, если <Условие> принимает значение True и заканчивает свою работу, если <Условие> принимает значение False. Если используется Until -> цикл выполняется, если <Условие>=False и заканчивает свою работу, если <Условие>=True; <Условие> — логическое выражение, принимающее значение True или False; Loop — зарезервированное слово VBA, указывающее на окончание цикла.

Цикл с предусловием и Цикл с постусловием отличаются тем, что Цикл с постусловием выполняется хотя бы один раз до проверки <Условие>, а Цикл с предусловием может не выполняться ни разу, если не выполняется <Условие>.

Используя цикл с условием, можно организовать бесконечный цикл. Иногда это бывает необходимо, гораздо чаще это происходит из-за ошибки пользователя. Для создания бесконечного цикла условное выражение должно быть таким, которое никогда не выполняется или выполняется всегда. Выйти из такого бесконечного цикла и прервать работу программы можно, нажав комбинацию клавиш <Ctrl+Break>.

Вызов процедуры

Выполнить процедуру типа Sub, у которой аргументы есть, можно только вызвав её из другой процедуры.

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

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

u = 1 'первый множитель

n = 0 'количество шагов

Range("C1:E20").Clear

Do Until (u < Eps) Or (n >= Limit)

n = n + 1

q = 1

For i = 1 To n

q = q * i

Next i

u = 2 ^ n / q 'очередной множитель

Cells(n, 4).Value = n

Cells(n, 5).Value = u

Loop

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

Циклы со счетчиком (с известным числом повторений) еще называют циклами For, или циклами For … Next. Синтаксис цикла For … Next таков:

For Счетчик = Начало To Конец [Step Шаг]

Операторы

[Exit For]

[Операторы]

Next [Счетчик],

где For – зарезервированное слово VBA, обозначающее начало цикла; Счетчик – переменная, определенная в качестве счетчика цикла, при первом выполнении циклв принимает значение Начало и каждый раз при выполнении оператора Next увеличивается на величину, заданную параметром Шаг; To – зарезервированное слово VBA, разделяющее значения Начало и Конец; Step – зарезервированное слово VBA, используемое для задания шага цикла, необязательный аргумент; Шаг – число, задающее значение, на которое увеличивается (или уменьшается) значение счетчика на каждом шаге, это число может быть отрицательным; Exit For – оператор экстренного выхода из цикла (необязательный), обычно вкладывается в оператор IfThen или SelectCase; Next – зарезервированное слово VBA, обозначающее конец цикла.

Если зарезервированное слово Step отсутствует, то значение шага равен единице.

Private Sub CommandButton1_Click()

Dim a, n, h, i As Integer

Dim Sum, Pr, b As Single

'Ввод данных

a = Range("A1").Value

n = Range("B1").Value

h = Range("C1").Value

'Вычисления

Sum = 0 Pr = 1 For i = a To n Step h

b = Sin(2 * i + 0.4)

Sum = Sum + b Pr = Pr * b Next i

’Вывод результатов в ячейки B4 и B5

Range("B4").Value = "Сумма = " & Sum

Range("B5").Value = "Произведение = " & Pr

End Sub

Алгоритмизациея – это составление пошагового описания процесса решения задачи.

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

1.2. Свойства алгоритма

1. Наличие ввода исходных данных.

2. Наличие вывода результата выполнения.

3. Однозначность (компьютер "понимает" только однозначные инструкции).

4. Общность - алгоритм предназначен для решения некоторого класса задач.

5. Корректность - алгоритм должен давать правильное решение задачи.

6. Конечность - решение задачи должно быть получено за конечное число шагов.

7. Эффективность – для решения задачи должны использоваться ограниченные ресурсы компьютера (процессорное время, объем оперативной памяти и т.д.)

1.3. Типы алгоритмов

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

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

III. Цикл представляет собой многократно повторяющуюся последовательность операторов. Операторы повторяются конечное число раз до выполнения условия.

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

1.4. Виды представления алгоритмов

  1. Первоначально алгоритм записывается пошагово на естественном языке.

  2. Псевдокод – полуформальный язык с ограниченным словарем (часто на основе английского языка), промежуточный между естественным языком и языком программирования. Запись алгоритма на псевдокоде называется структурным планом. Псевдокод удобен тем, что позволяет программисту сосредоточиться на формулировке алгоритма, не задумываясь над синтаксическими особенностями конкретного языка программирования.

  3. Блок-схема – используется для разработки структуры программы (в англоязычной литературе используется термин flow-chart). Для изображения основных алгоритмических структур и блоков на блок-схемах используют специальные графические символы. Они приведены на рис. 3.

  4. Программирование – запись алгоритмы на выбранном языке программирования для решения различных задач на компьютере.

1.5. Этапы разработки программы

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

  • постановка задачи;

  • анализ задачи, формализованное описание задачи, выбор математической модели;

  • выбор или разработка алгоритма решения задачи;

  • проектирование общей структуры программы;

  • кодирование (запись алгоритма на языке программирования);

  • отладка и верификация программы (исправление алгоритмических и синтаксических ошибок);

  • получение результата, его интерпретация и, возможно, последующая модификация модели;

  • публикация или передача заказчику результата работы;

  • сопровождение программы.

1.1. Алфавит языка VBA

Как и любой другой язык, VBA имеет свой алфавит. В него входят:

  1. Прописные и строчные буквы латинского алфавита (A-Z, a-z);

  2. Прописные и строчные буквы кириллицы (А-Я, а-я)1;

  3. Цифры от 0 до 9;

  4. Символы подчеркивания “_”.

  5. Неизображаемые символы («обобщенные пробельные символы»), используемые для отделения слов друг от друг (пробел, табуляция, переход на новую строку);

  6. Специальные символы, участвующие в построении конструкций языка: + – * / \ ^ = > < [ ] ( ) . , : ; { } ‘ & @;

  7. Составные символы, воспринимаемые как один символ: <= , >= , <>. Разделители в составных символах недопустимы.

Комментарии используются для пояснения к тексту программы для пользователя, размещается на одной строке исходного текста программы, которая начинается со знака «‘» (апостроф) или с зарезервированного слова Rem. Программа не воспринимает текст, выделенный как комментарий и пропускает его:

‘ Комментарий

Rem Комментарий

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

  1. Первый символ имени обязательно должна быть буква.

  2. Нельзя использовать «.», «!», «@», «&», «$», «#», и пробел.

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

  4. Длина имени не должна превышать 255 символов, но следует иметь в виду, что VBA различает только первые 31 символов от начала имени.

  5. Имена не должны совпадать с зарезервированными словами VBA.

  6. Имя не должны повторяться ни на одном уровне определения, то есть в одно процедуре не могут быть объявлены две переменные с одинаковыми именами.