1716
Реализация линейных алгоритмов на языке Visual Basic for Aplications (VBA)
Контрольная
Информатика, кибернетика и программирование
Отличие VBA oт других языков программирования состоит в том, что программа на VBA сохраняется в одном файле с документами соответствующих приложений, а не в отдельном текстовом файле.
Русский
2013-01-06
64.26 KB
86 чел.
Реализация линейных алгоритмов на языке Visual Basic for Aplications (VBA)
Язык VBA является современным вариантом языка программирования Basic, созданного в 60-х годах ХХ века. Отличие VBA oт других языков программирования состоит в том, что программа на VBA сохраняется в одном файле с документами соответствующих приложений, а не в отдельном текстовом файле. Например, в Excel вместе с рабочей книгой. Поэтому для создания выполнения программы на VBA нужно сначала запустить соответствующее приложение. Язык VBA является общим для всех приложений, входящих в состав пакета Microsof Office.
Любая программа на языке VBA представляет собой одну или несколько взаимосвязанных процедур. Процедуры сохраняются в файлах вместе с данными соответствующих приложений, но в специальной их части, называемой модулем. Процедуры одного документа могут быть размещены в одном модуле или нескольких. Совокупность всех модулей и объектов, находящихся в одном файле, называется проектом. В Excel это совокупность рабочих листов и модулей. Модулям автоматически присваиваются имена Module1, Module2 и т.д., их можно переименовывать в окне свойств редактора VBA.
Структура процедуры (макроса):
Sub < имя процедуры> () - заголовок процедуры
<раздел объявлений> - тело процедуры
<раздел операторов>
End Sub
В разделе операторов с помощью операторов языка программирования указывается последовательность действий, реализующих разработанный алгоритм.
В разделе объявлений указываются идентификаторы, используемые в разделе операторов. Идентификаторы можно использовать без описания (неявное объявление), но это может привести к ошибкам при выполнении программы. Необходимость явного объявления задается директивой компилятора в начале модуля перед первой процедурой
Option Explicit
В любом месте процедуры могут находиться комментарии. Комментарий - это последовательность любых символов, которая поясняет работу программы и пропускается компилятором. Комментарий начинается с символа (апостроф) и занимает всю строку или ее конечную часть.
Обычно в одной строке находится один оператор, но можно разместить в одной строке несколько коротких операторов, они разделяются символом :. Если оператор занимает больше одной строки, то в конце строки, за которой следует ее продолжение записываются символы пробел_.
Алфавит языка включает прописные и строчные буквы латинского и русского алфавитов, цифры от 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 |
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)))
Ввод - это передача информации с внешнего устройства (клавиатура, диск) в ОЗУ для дальнейшей обработки.
Для ввода данных используется функция InputBox, которая имеет следующий синтаксис:
< идентификатор > = InputBox (Prompt [,Title])
Функция отображает диалоговое окно, в заголовке которого находится текст, заданный параметром Title. Если параметр отсутствует, то в заголовке отображается имя приложения Microsoft Excel. Обязательный параметр Prompt содержит текст, выводимый в окне как запрос для ввода. В окне также находится текстовое поле для ввода значения, которое будет записано в переменную, задаваемую идентификатором, и кнопки ОК и Cancel.
m = InputBox( “Введите значение m” , “Ввод”)
Результат функции всегда имеет строковый тип, но VBA, используя автоматическое преобразование типов, преобразует строку в число, если в ней содержатся символы, представляющие числа. При вводе вещественных чисел используется десятичная запятая.
“988,6” “81” “3E10” можно преобразовать в числа;
”8.7” ”Привет” ”$23” нельзя.
Вывод это передача информации из ОЗУ на внешнее устройство (монитор, принтер, диск).
Используется обычно для вывода различных сообщений пользователю.
Для организации такого вывода используется процедура 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
Для вывода данных на Рабочий лист используется объект Range (диапазон) или его свойство Cells (ячейки).
Возможны 3 способа вывода:
Выражение может иметь числовой или строковый тип.
Примеры:
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 очищает весь рабочий лист.
Вычислить периметр и площадь треугольника со сторонами 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
А также другие работы, которые могут Вас заинтересовать | |||
60255. | ВОЛОНТЕРИ – ЛЮДИ ДОБРОЇ ВОЛІ | 1.06 MB | |
Волонтери люди доброї волі Мета: познайомити учнів із поняттям волонтер створити умови для виховання небайдужого ставлення до людей які потребують допомоги; стимулювати пізнавальний інтерес до основ моральної культури. Все більше людей долучається до волонтерської справи все більше молоді свій вільний час віддає іншим... | |||
60256. | Ярмарок вакансій (розробка профорієнтаційного заходу) | 80 KB | |
Обладнання: компютерна презентація заходу буклети з порадами психолога щодо успішного професійного самовизначення рекламна інформація міського центру зайнятості ДП Артемсіль Горлівського Державного педагогічного інституту іноземних мов... | |||
60257. | Я здоровье берегу- сам себе я помогу | 326 KB | |
Будьте здоровы Учитель: Здоровье это бесценный дар который преподносит человеку природа. Но как часто мы растрачиваем этот дар попусту забывая что потерять здоровье легко а вот вернуть его очень и очень трудно. | |||
60258. | Новорічне свято | 612 KB | |
В умовах стрімкого сьогодення на вчителя покладається відповідальне завдання – виховувати всебічно розвинуту особистість. Особливо це важливо у молодшій школі, коли в дитини тільки формується вміння аналізувати... | |||
60259. | Забвению не подлежит | 100 KB | |
Цель: отбор примеров из произведений художественной литературы для сценария внеклассного интегрированного занятия и песен созданных во время войны или о войне. Столкновение российских патриотических и украинских националистических организаций... | |||
60261. | Слово давнє й сьогочасне | 59 KB | |
Мета: навчити учнів володіти рідною мовою виховувати повагу пошану до рідного слова відчувати свою приналежність до великого народу нації народності розвивати спостережливість навички виразного читання. | |||
60262. | Гра «Танграм» | 40.5 KB | |
Обладнання: мультимедійна дошка; проектор; презентація набори для гри у кількості учнів обо листи кольрової бумаги для їх виготовлення; два набори для гри в командах. План проведення заходу... | |||