1716

Реализация линейных алгоритмов на языке Visual Basic for Aplications (VBA)

Контрольная

Информатика, кибернетика и программирование

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

Русский

2013-01-06

64.26 KB

79 чел.

Реализация линейных алгоритмов на языке Visual Basic for Aplications (VBA)

Язык VBA является современным вариантом языка программирования Basic, созданного в 60-х годах ХХ века. Отличие VBA oт других языков программирования состоит в том, что программа на VBA сохраняется в одном файле с документами соответствующих приложений, а не в отдельном текстовом файле. Например, в Excel вместе с рабочей книгой. Поэтому для создания выполнения программы на VBA нужно сначала запустить соответствующее приложение. Язык VBA является общим для всех приложений, входящих в состав пакета Microsof Office.

  1.  Модули и процедуры

Любая программа на языке VBA представляет собой одну или несколько взаимосвязанных процедур. Процедуры сохраняются в файлах вместе с данными соответствующих приложений, но в специальной их части, называемой модулем. Процедуры одного документа могут быть размещены в одном модуле или нескольких. Совокупность всех модулей и объектов, находящихся в одном файле, называется проектом. В Excel – это совокупность рабочих листов и модулей. Модулям автоматически присваиваются имена Module1, Module2 и т.д., их можно переименовывать в окне свойств редактора VBA.

Структура процедуры (макроса):

 

Sub < имя процедуры> () - заголовок процедуры

<раздел объявлений> - тело процедуры

<раздел операторов>

End Sub

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

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

Option Explicit 

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

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

  1.  Элементы языка VBA

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

Специальные символы: (*, /, +, - , [ ] , { } ). К спец. символам относятся пары символов < = > = < > их нельзя разделять пробелом.

Символ пробел является разделителем идентификаторов, зарезервированных слов, констант. Несколько пробелов рассматриваются как один (это не относится к строковым константам).

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

Это слова:

sub, end, for, if, dim, real и т.д.

Переменные

Переменные - это элементы программы, имеющие идентификаторы, которые в процессе выполнения программы могут принимать различные значения в соответствии с указанным при их объявлении типом. Каждой переменной выделяется место в ОЗУ.

Объявление переменных:

Dim <идентификатор1> As <тип1> , <идентификатор2> As <тип2>…

Идентификаторы – это имена, которые используются в программе для обозначения констант, переменных, типов, объектов и т.д.

Dim a As Integer, b As Single

Dim c As Integer

Dim a, c As Integer  a As Variant

Числовые переменные инициализируются нулями, строковые пустыми строками.

Правила образования имен (идентификаторов).

  1.  последовательность букв (русских и латинских), цифр, _ ;
  2.  первый символ – буква;
  3.  длина имени <= 255 символов;
  4.  имя должно быть информативным.

  1.  

Тип данного определяет:

  1.  диапазон возможных значений;
  2.  объём выделяемой памяти и форму представления данных в ней;
  3.  действия, которые можно совершать над данными.

Основные типы данных:

  1.  

Название типа

Выделяемая память (байт)

Диапазон значений

Комментарий

1

Byte

1

0..255

целые типы

2

Integer

2

-32768..32767

3

Long

4

-2147483648…

2147483648

4

Single

4

±10-45…1045

вещественные типы

5

Double

8

±10-324…10308

6

Boolean

2

True, False

логический

9

String

0..654000 симв

строковый

Константы

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

Литеральные константы – это целые числа (52), вещественные числа (5.2 или в экспоненциальной форме 1.72E02), строковые константы (”Группа УП-11”), логические константы (true, false).

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

Описание именованных констант:

Const <идентификатор 1>=<значение 1>, < идентификатор 2>=<значение 2>…

Const а=2.5

Const str=”ГЭФ”, l=false

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

Предопределенные (внутренние) константы – это именованные константы, определенные при разработке VBA. Имена таких констант начинаются с букв vb.

Пример: vbOKOnly, vbYesNo.

Арифметические выражения

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

Арифметические операции в порядке убывания приоритета:

^ – возведение в степень

* – умножение; / - деление

\ – целочисленное деление

Mod – остаток от целочисленного деления

 + сложение; - вычитание.

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

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

7 \ 3 = 2 7 mod 3 = 1 18.6 \ 3.4 = 19\3 = 6

Операция mod используется для определения делимости значения целой переменной на заданное число. Например, если a mod 2 = 0, то a – четное число, если a mod 4 = 0, то a кратно 4.

В арифметических выражениях могут использоваться следующие математические функции:

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

Функция VBA

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

Функция VBA

Abs(x)

sin x

Sin(x)

Sqr(x)

cos x

Cos(x)

Exp(x)

tg x

Tan(x)

ln x

Log(x)

arctan x

Atn(x)

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

Аргументы функций sin(x), cos(x), tan(x) и результат функции atn(x) всегда указываются в радианах. Угол в радианах =угол в градусах/180*π

Для вычисления других математических функций можно использовать математические формулы, например lg(x)=ln(x)/ln(10).

Примеры:  в программе: x^(1/5) 

 

 в программе: sqr ( tan (x)^ 2 / ( log (x^5) – x^ ( 1 / 3 ) ) )

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

С помощью этого оператора можно присвоить переменной значение некоторого выражения.

 

Синтаксис оператора:

<идентификатор>=<выражение>

Примеры:

с = Sqr ( a^2 + b^2 ) i =i+1

Выполнение оператора: вычисляется значение выражения, стоящего справа от знака присваивания (=), а затем полученное значение присваивается переменной стоящей слева от знака присваивания, то есть записывается в то место памяти, которое отведено для переменной после ее описания. Идентификатор и выражение должны иметь соответствующие типы.

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

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

Byte, Integer, Long, Single, Double.

Пример:

Dim a As Single, k As integer

a=2.6

k=a+1

Значение к =4.

Пример: вычислить

  

 

 В программе:

y=(cos(x)^3+abs(x+atn(2*x))^(1/5))/(3*exp(sqr(x)))

  1.  Ввод данных.

Ввод - это передача информации с внешнего устройства (клавиатура, диск) в ОЗУ для дальнейшей обработки.

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

< идентификатор > = InputBox (Prompt [,Title])

Функция отображает диалоговое окно, в заголовке которого находится текст, заданный параметром Title. Если параметр отсутствует, то в заголовке отображается имя приложения Microsoft Excel. Обязательный параметр Prompt содержит текст, выводимый в окне как запрос для ввода. В окне также находится текстовое поле для ввода значения, которое будет записано в переменную, задаваемую идентификатором, и кнопки ОК и Cancel.

m = InputBox( “Введите значение m” , “Ввод”)

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

“988,6” “81” “3E10” можно преобразовать в числа;

”8.7” ”Привет” ”$23” нельзя.

  1.  Вывод данных.

Вывод – это передача информации из ОЗУ на внешнее устройство (монитор, принтер, диск).

  1.  Вывод в окно сообщений

Используется обычно для вывода различных сообщений пользователю.

Для организации такого вывода используется процедура MsgBox, имеющая следующий синтаксис:

MsgBox Prompt [, Buttons [, Title], где

Обязательный параметр Prompt содержит текст сообщения, которое выводится в окне.

Параметр Title содержит текст, который выводится в заголовке диалогового окна. Если параметр не указывается, то в заголовке выводится название приложения (Microsoft Excel).

Параметр Buttons задается внутренней константой VBA, определяющей сколько и каких кнопок будет в окне. Если параметр отсутствует или равен vbOKOnly, то окно содержит только кнопку ОК. Если параметр равен vbOKCancel – кнопки OK и Отмена; если vbYesNo - кнопки Да и Нет.

Если параметр отсутствует и он не последний, то соответствующая ему запятая сохраняется.

MsgBox “С Новым годом!”, , “Поздравление”

MsgBox “Ваш средний балл больше 4,5 ?”,vbYesNo ,“Запрос”

 

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

Операция конкатенации служит для объединения строковых и числовых данных в одну строку. Перед объединением числовые выражения преобразуются в строковые. Результат операции имеет строковый тип.

Пример:

a=5 : b= 4.5

 

Str = “a=” & a & “ b=” & b

MsgBox Str , , “Данные

MsgBox “a=” & a & “ b=” & b , , “Данные

Для того, чтобы вывести данные в нескольких строк в одном окне необходимо включить в выводимое строковое выражение символ перехода на новую строку с кодом 13 (генерируется при нажатии на клавишу Enter).

Для включения в строку символов, которые невозможно ввести с клавиатуры, используется функция chr (code). Сode – это целое число от 0 до 255, которое является кодом любого символа и определяет этот символ. Функция Сhr возвращает символ, соответствующий коду. Сhr (13) возвращает символ перехода на новую строку. Вместо Сhr (13) можно использовать внутреннюю константу vbCr.

MsgBox "Поздравляю Вас" & vbCr & "С Новым годом!"

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

Пример: Ввести фамилию и группу студента и вывести в одном окне в виде:

Моя фамилия Иванов

Моя группа УП-11

Sub пример ()

Dim Fam As String, Gr As String

Fam = InputBox (“Введите свою фамилию” , ”Ввод”)

 Gr = InputBox (“Введите свою группу” , ”Ввод”)

 MsgBox “Моя фамилия “ & Fam & chr(13) & _

“Моя группа” & Gr, , “Вывод”

End Sub

  1.  Вывод данных в ячейки рабочего листа

Для вывода данных на Рабочий лист используется объект Range (диапазон) или его свойство Cells (ячейки).

Возможны 3 способа вывода:

  1.  Range (<диапазон>) = <выражение>

  1.  Cells (№ строки, № столбца) = <выражение>

  1.  Cells (№ строки, заголовок столбца) = <выражение>

Выражение может иметь числовой или строковый тип.

Примеры:

Str = “a=” & a & “ b=” & b

Range (”A2”) = Str

Cells (2 , 1) = “a=” & a & “ b=” & b

i=1

Cells (i , ”A”) = a^2

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

Range (<диапазон>). Clear

Range (”1 : 4”) . Clear

Range (”A : D”) . Clear

Range (”A1 : D5”) . Clear

Cells.Clear очищает весь рабочий лист.

  1.  Пример реализации линейного алгоритма

Вычислить периметр и площадь треугольника со сторонами a, b, c.

 Таблица используемых переменных

Имя переменной в задаче

Имя переменной в программе

Тип переменной

Комментарий

a,b,c

a,b,c

Integer (целый)

стороны треугольника, исходные данные

p

p

вещественный

полупериметр, промежуточный результат

S

S

Single

площадь треугольника, результат

Текст процедуры на VBA:

Sub prim1() ' Вычисление площади треугольника

Dim S As Single, p As Single, Str As String ' описание переменных

Dim a As Integer, b As Integer, c As Integer

' Ввод исходных данных

 a = InputBox ("a=", "Стороны треугольника")

 b = InputBox ("b=", "Стороны треугольника")

 c = InputBox ("c=", "Стороны треугольника")

' Вывод исходных данных

' в окно сообщений

 Str = "Стороны треугольника" & Chr (13) & "a=" & a & _

" b=" & b & " c=" & c

 MsgBox Str, , "Исходные данные"

' в ячейки рабочего листа

Range("A1")="Исходные данные"

Range("A2")="Стороны треугольника a=" & a & _

" b=" & b & " c=" & c

' Расчет полупериметра и площади

 p = (a + b + c) / 2

S = Sqr (p * (p - a) * (p - b) * (p - c))

 ' Вывод результатов

' в окно сообщений

 MsgBox "Периметр=" & 2 * p & " Площадь=" & S, , "Результаты"

' в ячейки рабочего листа

Cells(3,1)= "Результаты"

Cells(4,1)= "Периметр треугольника =" & 2 * p

Cells(5,1)= "Площадь треугольника =" & S

End Sub


 

А также другие работы, которые могут Вас заинтересовать

23638. ОЧЕРКИ ПО ОБЩЕМУ ЯЗЫКОЗНАНИЮ 889.5 KB
  В главах Язык и Развитие языка частично использованы напечатанные в разное время статьи. Языкознание располагает большим количеством ответов на него каждый из которых оказывает прямое влияние на определение методов и направлений изучения языка установление форм и закономерностей его развития и по сути говоря на формирование всей проблематики науки о языке. форма мысли но такая которая ни в чем кроме языка не встречается А. Язык есть комплекс членораздельных и знаменательных звуков и созвучий соединенных в одно целое чутьем...
23639. Курс общего языкознания 1.87 MB
  Теория знаковой природы языка . Структурный характер языка . Развитие языка 152 1. Общие и частные законы языка .
23641. ФІНАНСОВА ЗВІТНІСТЬ, ЇЇ ЗМІСТ ТА ІНТЕРПРЕТАЦІЯ 240 KB
  Склад, призначення і загальні вимоги до фінансової звітності. Зміст та методика складання основних форм фінансової звітності. Методика аналізу фінансового стану підприємства на базі звітності.
23642. ВВЕДЕНИЕ В ТЕОРЕТИЧЕСКОЕ ЯЗЫКОЗНАНИЕ 258.5 KB
  Описание языка в формальном аспекте 1. Описание языка в функциональном аспекте 1. Происхождение языка Модуль 2. Дисциплины изучающие звуковую сторону языка 2.
23643. КУРС ЛЕКЦИЙ ПО ОБЩЕМУ ЯЗЫКОЗНАНИЮ 2.1 MB
  проблематика наиболее актуальные проблемы современного языкознания: системность и структурность языка язык и мышление язык и речь и др. Универсальные свойства языка. Фундаментальные свойства языка с позиции современнойлингвистики. Во втором разделе раскрываются основные принципы современной теории языка важнейшие проблемы лингвистической науки определяющие подходы к решению всех частных лингвистических вопросов.
23644. Как быстро научиться читать на чужом языке 50.5 KB
  А все остальное ученик может делать сам: вникать в грамматику читать тексты заниматься лексикой. Те кто только начал осваивать немецкий язык сначала может читать текст с подсказками затем тот же текст без подсказок. После того как он прочитает неадаптированный текст нужно читать следующий адаптированный.