Вы находитесь на странице: 1из 24

Содержание

Введение . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
1 История языка Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Применение VBA в пакете Microsoft Office . . . . . . . . . . . . . . . . . . . . . . . .7
3 Работа с массивами в VBA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
4 Задание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
5 Решение поставленной задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Разработка рабочего проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7 Листинг программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Глоссарий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
Приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
Введение

Актуальность исследования. На данный момент существует множество


языков программирования. Многие языки слабо распространены ввиду отсутствия
графического оболочки программы либо из-за того, что они недоступны для
понимания пользователей. Язык программирования высокого уровня Visual Basik
for Applications, как видно из его названия, обладает графическим представлением
программы и синтаксис этого языка программирования весьма прост относительно
других языков. Вследствие вышеперечисленных факторов язык программирования
Visual Basik for Applications обладает популярностью не только у начинаюших
пользователей, но и у опытных программистов.
Проблема — написание программы на языке программирования высокого
уровня Visual Basik.
Степень разработанности проблемы. Редактор Visual Basik for Applications
встроен во все офисные программы компании Microsoft. Используя приложение
Excel можно работать с массивами не отвлекаясь на построение логически
неважных модулей программы, таких как вывод массива на экран в удобной для
пользователя форме, чтение массива с экрана. Так как данная курсовая работа
связана с работой над массивами, то вышеприведённый факт весьма удобен.
Объектом исследования является язык программирования высокого уровня
Visual Basic for Applications.
Предметом исследования является создание приложения на основе языка
программирования высокого уровня Visual Basic for Applications.
Цель и задачи исследования. Самостоятельно изучить литературу по
программированию на языке программирования Visual Basic for Applications.
Разработать программу, описанную в главе «Задание».
Исходя из цели исследования, можно выделить основные этапы решения
проблемы:
Разработка эскизного и технического проектов программы. Это назначение и

2
область применения программы, постановка задачи, описание алгоритма
программы, организация входных и выходных данных, выбор состава технических и
программных средств.
Разработка рабочего проекта программы. Данная задача предусматривает описание
разработки программы, приведение текста программы, а также ее описание и
тестирование.
Внедрение программы. Задача предусматривает описание этапов выполнения
программы, и их пояснения.
Методологическую основу составляют материалы посвящённые изучению
языка программирования Visual Basik for Applications.
Теоретическая и практическая значимость. Язык Visual Basik for
Applications может быть использован как инструмент для работы с документами
различного типа, так и как инструмент для создания приложений, которые не
зависят от Microsoft Ofiice.
Теоретическую основу составили методологические и практические
исследования в этой области. Специальная литература, учебники и другие
информационные источники. В частности работы таких авторов как автор1, автор2,
авто3.

Структура работы обусловлена поставленными задачами и состоит из


введения, шести глав, заключения, глоссария и приложений.

3
1 История языка Visual Basic

Язык Basic был разработан преподавателями Дартмутского колледжа


Дж.Кемени и Т.Курцом в 1965 году как средство обучения и работы
непрофессиональных программистов. (Дартмутский колледж в штате Нью-
Гампшир, США, был создан в середине 18 века, это одно из старейший высших
заведений Америки). Его назначение определено в самом названии, которое
является аббревиатурой слов Beginner's All-purpose Symbolic Instruction Code
(многоцелевой язык символических инструкций для начинающих) и при этом в
дословном переводе означает "базовый".
Однако парадокс заключается в том, что, будучи действительно весьма
простым средством программирования, совершенно непригодным в те времена для
решения серьезных задач, Basic представлял собой качественно новую технологию
создания программ в режиме интерактивного диалога между разработчиком и
компьютером. То есть представлял собой прообраз современных систем
программирования. Другое дело, что решение подобной задачи на технике тех лет
было возможно только за счет максимального упрощения языка программирования
и использования транслятора типа "интерпретатор". В силу этих же причин Basic в
основном применялся на мини- и микроЭВМ, которые в 70-е годы имели
оперативную память, объем которой кажется сегодня просто нереальным (4-32
тысяч байт). Резкое развитие систем на основе Basic началось с появлением в начале
80-х годов персональных компьютеров, производительность и популярность
которых растет вот уже двадцать лет невиданными темпами.
В конце 80-х годов насчитывалось около десятка систем Basic различных
фирм-разработчиков. Однако главная борьба шла между QuickBasic (компания
Microsoft) и TurboBasic (Borland). Вообще-то, конкуренция между этими двумя
разработчиками средств программирования шла по целому спектру языков — Basic,
Pascal и C. И результатом ее в 1989 году стало неявное мировое соглашение, когда
Microsoft отказалась от дальнейшей поддержки Pascal, а Borland — Basic.

4
В начале 90-х годов наметилась отчетливая тенденция включение в
приложения, предназначенные для конечного пользователя, средства внутреннего
программирования, которые должны были решать задачи настройки и адаптации
этих пакетов для конкретных условий их применения.
В конце 1993 г. Microsoft объявила о намерении создать на основе VB новую
универсальную систему программирования для прикладных программ, которая
получила название Visual Basic for Applications (VB для приложений). Естественно,
реализацию этого проекта она начала с собственных офисных пакетов.
Первый вариант VBA 1.0 появился в составе MS Office 4.0, но лишь в
программах Excel 4.0 и Project 6.0. В других же приложениях - Word 6.0 и Access 2.0
- были собственные варианты Basic. Более того, VBA 1.0 довольно сильно отличался
(причем имея ряд существенных преимуществ) от используемой тогда
универсальной системы VB 3.0.
Качественный перелом наступил в конце 1996 года с выпуском MS Office 97, в
котором была реализована единая среда программирования VBA 5.0, включенная в
программы Word, Excel и PowerPoint. Более того, VBA 5.0 использовала тот же
самый языковый механизм и среду разработки, что и универсальная система VB 5.0.
В состав выпущенного год назад MS Office 2000 вошла соответственно версия VBA
6.0, которая используется в шести программах — Word, Excel, PowerPoint, Access,
Outlook, Frontpage.

5
2 Применение VBA в пакете Microsoft Office

Часто при работе с приложениями MS Office возникает необходимость


автоматизировать выполнение той или иной последовательности действий,
дополнить интерфейс приложения новыми окнами диалога, панелями инструментов
и, таким образом, расширить возможности работы с документами. Для этого
разработчики MS Office предоставили в распоряжение инструмент с большими
возможностями, который достаточно прост в освоении. Этим инструментом
является язык программирования Visual Basic for Applications (VBA).
Язык программирования VBA является диалектом одного из самых
популярных и мощных универсальных языков программирования Visual Basic. В
отличие от последнего VBA предназначен для использования в качестве
дополнительного компонента различных приложений. Первоначально VBA
применялся как дополнение к программному пакету Microsoft Office и позволял
значительно расширить его возможности, упростить и ускорить работу в
приложениях, входящих в этот пакет. Но работа с ним требовала от пользователей
хорошей подготовки – знания синтаксической структуры языка VBA и умения
программировать.
Сейчас VBA является полноценной средой разработки, ограниченной лишь
возможностью создания библиотек и исполняемых файлов, и входит не только в
состав пакета Microsoft Office, но и в состав других, не менее популярных пакетов,
например 1С.

6
3 Массив

Массив — упорядоченный набор данных, для хранения данных одного типа,


идентифицируемых с помощью одного или нескольких индексов. В простейшем
случае массив имеет постоянную длину и хранит единицы данных одного и того же
типа.
Количество используемых индексов массива может быть различным. Массивы
с одним индексом называют одномерными, с двумя — двумерными и т. д.
Одномерный массив нестрого соответствует вектору в математике, двумерный —
матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с
тремя, ещё большее количество индексов встречается крайне редко.
Поддержка индексных массивов (свой синтаксис объявления, функции для
работы с элементами и т. д.) есть в большинстве высокоуровневых языков
программирования. Максимально допустимая размерность массива, типы и
диапазоны значений индексов, ограничения на типы элементов определяются
языком программирования и/или конкретным транслятором.
В языках программирования, допускающих объявления программистом
собственных типов, как правило, существует возможность создания типа «массив».
В определении такого типа может указываться размер, тип элемента, диапазон
значений и типы индексов. В дальнейшем возможно определение переменных
созданного типа. Все такие переменные-массивы имеют одну структуру. Некоторые
языки поддерживают для переменных-массивов операции присваивания (когда
одной операцией всем элементам массива присваиваются значения
соответствующих элементов другого массива).
Стандартным способом реализации статических массивов с одним типом элементов
является следующий:
Под массив выделяется непрерывный блок памяти объёмом S*m1*m2*m3…
mn, где S — размер одного элемента, а m1…mn — размеры диапазонов индексов (то
есть количество значений, которые может принимать соответствующий индекс).

7
При обращении к элементу массива A[i1, i2, i3, … in] адрес соответствующего
элемента вычисляется как B+S*(i1p*m1+i2p*m2+…+i(n-1)p*mn-1+inp), где B —
база (адрес начала блока памяти массива), ikp-значение k-го индекса, приведённое к
целому с нулевым начальным смещением.
Таким образом, адрес элемента с заданным набором индексов вычисляется, так что
время доступа ко всем элементам массива одинаково.
Первый элемент массива, в зависимости от языка программирования, может
иметь различный индекс. Различают три основных разновидности массивов: с
отсчетом от нуля (zero-based), с отсчетом от единицы (one-based), и с отсчетом от
специфического значения заданного программистом (n-based). Отсчет индекса
элемента массивов с нуля более характерен для низкоуровневых ЯП, однако этот
метод был популяризирован в языках более высокого уровня языком
программирования С.
Более сложные типы массивов — динамические и гетерогенные —
реализуются сложнее.

4 Задание

8
Из массива A удалить те элементы, которые встречаются и в массиве A и в
массиве B по крайней мере по 2 раза. Пример, массив A[8]: 3 3 4 5 2 3 5 9, массив
B[7]: 1 2 3 4 5 2 5. По 2 раза в обоих массивах встречается только элемент, равный 5.
Массив A после удаления примет вид: A[6]: 3 3 4 2 3 9.
Для выполнения данного задания весьма удобно использовать программу Excel.
На рабочем листе отображаются массивы, введённый вручную для визуальной
проверки работы программы, так как при генерации значений массивы могут не
удовлетворять условиям, следовательно, визуальная проверка работы программы
будет невозможна.

В данном случае из массива A будут удалены элементы с индексами 4 и 7, так


как в обоих массивах присутствуют более элементов со значением «5».

Результатом работы программы будет массив A, выводимый в седьмую строку


для удобства пользователя.

5 Решение поставленной задачи


9
Назначение и область применения
Необходимо разработать программу. Программа предназначена для проверки
знаний.
Постановка задачи
В условии задачи указывается на необходимость применять динамический
массив. Динамический массив — это массив, размер которого может быть изменён
во время исполнения программы. Также надо организовать вывод преобразованного
массива на экран.
Описание алгоритма
При выполнении программы выполняются три алгоритма:
1. Запись значений в массивы:

a(i) = cells(1, i).value


b(i) = cells(3, i).value

2. Поиск элементов, удовлетворяющих условию, замена их значения на «пустое»


значение и перемещение пустых элементов в конец массива:

k=0

If a(i) = b(x) Then


k=k+1

d(i) = k

k=0

10
If b(i) = a(x) Then
k=k+1

e(i) = k

3. Удаление из массива А элементов, удовлетворяющих условию, изменение


размера массива А и вывод его на экран:

If a(i) = b(x) And d(i) >= 2


And e(x) >= 2 Then
a(i) = ""

If a(i) = "" Then


a(i) = a(i + 1)
a(i + 1) = ""

If a(i) <> "" Then x = x + 1

ReDim Preserve a(x)

cells(7, i).value = a(i)

6 Разработка рабочего проекта

11
Разработка программы
Для разработки программы, описанной в главе «Задание» используется среда
визуального программирования Visual Basic for Application. Проект программы
содержит один основной модуль, содержащий код программы; форму-приветствие и
дополнительный модуль, предназначенный для создания панели, на которой
отображаются функциональные кнопки.

Тестирование программы
Производится очищение результатов программы после предыдущего запуска.
Данные из первой и третьей строк считываются в массивы А и В.
Производится проверка, если элемент массива А равен элементу массива В, то
переменная-счётчик увеличивается на единицу. После подсчёта повторений
значение переменной-счётчика записывается в массив d Производится проверка,
если элемент массива В равен элементу массива А, то переменная-счётчик
увеличивается на единицу. После подсчёта повторений значение переменной-
счётчика записывается в массив e. Производится сравнение элементов массивов,
если они равны, и значения элементов массивов d и e с соответствующими
индексами больше двух, то элемент массива а принимает «пустое» значение.
Производится перестановка значений элементов массива А таким образом, что все
пустые значения принимают последние элементы массива. Производится подсчёт
непустых элементов, изменение размера массива с сохранением данных и вывод на
экран.

7 Листинг программы

12
Option Base 1
Sub kurs()
'Присвоение переменным типов данных. Массив а задаётся как динамический.
Dim a(), b(10), d(10), e(10) As Variant
Dim i, k, x, y As Integer
'Изменение размера массива а.
ReDim a(10)
'Стирание результатов предыдущих запусков программы.
Sheets(1).Select
For i = 1 To 10
cells(7, i).value = ""
Next i
'Заполнение массива а значениями ячеек из первой строки.
For i = 1 To 10
a(i) = cells(1, i).value
Next i
'Заполнение массива b значениями ячеек из первой строки.
For i = 1 To 10
b(i) = cells(3, i).value
Next i
'Алгоритм сравнения массива а с массивом b.
For i = 1 To 10
k=0
For x = 1 To 10
If a(i) = b(x) Then
k=k+1
End If
Next x

13
d(i) = k
Next i
'Алгоритм сравнения массива b с массивом а
For i = 1 To 10
k=0
For x = 1 To 10
If b(i) = a(x) Then
k=k+1
End If
Next x
e(i) = k
Next i
'При условии, что элементы массивов равны и количество их взаимных повторов
больше 2, то значение элемента массива а заменяется пустым значением.
For x = 1 To 10
For i = 1 To 10
If a(i) = b(x) And d(i) >= 2 And e(x) >= 2 Then a(i) = ""
Next i
Next x
'Производится перестановка элементов массива а таким образом, что все элементы с
пустым значением перемещаются в конец массива
x=1
For p = 1 To 10
For i = 1 To 9
If a(i) = "" Then
a(i) = a(i + 1)
a(i + 1) = ""
End If
Next i
Next p

14
'Производится подсчёт оставшихся элементов массива а
x=0
For i = 1 To 10
If a(i) <> "" Then x = x + 1
Next i
'Производится изменение размера массива а с сохранением данных
For y = 1 To x
ReDim Preserve a(x)
Next y
'Происходит заполнение значениями преобразованного массива а ячеек седьмой
строки.
For i = 1 To x
cells(7, i).value = a(i)
Next i
End Sub

Заключение

15
Данная курсовая работа рассматривает этапы разработки приложения, работа
которого описана в главе «Задание».
Основными этапами создания программы являются:
1. Разработка эскизного и технического проектов программы. Это назначение и
область применения программы, постановка задачи, описание алгоритма
программы, организация входных и выходных данных, выбор состава
технических и программных средств.
2. Разработка рабочего проекта программы. Данная задача предусматривает
описание разработки программы, приведение текста программы, а также ее
описание и тестирование.
3. Внедрение программы. Задача предусматривает описание этапов выполнения
программы, и их пояснения.
Программа реализована на основе языка программирования высокого уровня
Visual Basik for Applications.

16
Список использованной литературы

1. Брайан Сайлер, Джефф Споттс Использование Visual Basic 6. Классическое


издание = Special Edition Using Visual Basic 6. — М.: «Вильямс», 2007. —
С. 832. — ISBN 0-7897-1542-2
2. Билл Семпф Microsoft Visual Basic 2005 для "чайников" = Visual Basic 2005
For Dummies. — М.: «Диалектика», 2006. — С. 288. — ISBN 0-7645-7728-X
3. Игорь Сафронов Visual Basic в задачах и примерах. — БХВ-Петербург. —
СПб.: «БХВ-Петербург», 2008. — С. 400. — ISBN 978-5-94157-495-7
4. Андрей Колесов. Basic — этапы большого пути Авторский вариант. Статья
была опубликована c незначительной литературной правкой в журнале «Наука
и жизнь» № 10/2000, с. 18—20.
5. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн
Алгоритмы: построение и анализ = INTRODUCTION TO ALGORITHMS. — 2-
е изд. — М.: «Вильямс», 2006. — С. 1296. — ISBN 0-07-013151-1
6. Дональд Кнут Искусство программирования, том 1. Основные алгоритмы =
The Art of Computer Programming, vol.1. Fundamental Algorithms. — 3-е изд. —
М.: «Вильямс», 2006. — С. 720. — ISBN 0-201-89683-4
7. Порублев Илья Николаевич, Ставровский Андрей Борисович Алгоритмы и
программы. Решение олимпиадных задач. — М.: «Вильямс», 2007. — С. 480.
— ISBN 978-5-8459-1244-2
8. Митрюхин В. К., Донской А. Н., Михайлов А. В., Немов А. М.
Программирование на БК-0010-01.
9. Программное обеспечение микро-ЭВМ «Электроника БК-0010». Язык
«Бейсик». Описание языка
10.Программное обеспечение комплекса вычислительного учебного
«Электроника МС 0202». Бейсик. Описание языка. 1987 г.

17
Глоссарий


Понятие Определение
п/п
Проименованная либо адресуемая
иным способом область памяти, имя
или адрес которой можно
1 Переменная
использовать для осуществления
доступа к данным, находящимся в
переменной (по данному адресу).
Упорядоченный набор данных, для
хранения данных одного типа,
2 Массив
идентифицируемых с помощью
одного или нескольких индексов.
Массив, размер которого не
3 Статический массив меняется во время исполнения
программы.
Массив, размер которого может
4 Динамический массив меняться во время исполнения
программы.
Цикл, в котором некоторая
переменная изменяет своё значение
от заданного начального значения
5 Цикл с перечислением до конечного значения с некоторым
шагом, и для каждого значения этой
переменной тело цикла выполняется
один раз.

18
Конструкция языка
программирования,
обеспечивающая выполнение
определённой команды (набора
команд) только при условии
6 Оператор ветвления
истинности некоторого логического
выражения, либо выполнение одной
из нескольких команд (наборов
команд) в зависимости от значения
некоторого выражения.
Множество значений, которые
могут быть присвоены переменной
7 Тип данных
и операции, которые могут быть с
нею произведены.
Массив, в разные элементы
которого могут быть
8 Гетерогенный массив непосредственно записаны
значения, относящиеся к
различным типам данных.
Целое число, либо значение типа,
приводимого к целому,
9 Индекс массива указывающее на конкретный
элемент массива.

Самостоятельная часть,
10 Элемент являющаяся основой.

Приложение А

19
Блок-схема
Начало

a(i) = cells(1, i).value


b(i) = cells(3, i).value

k=0

If a(i) = b(x) Then


k=k+1

d(i) = k

k=0

If b(i) = a(x) Then


k=k+1

e(i) = k

If a(i) = b(x) And d(i) >= 2


And e(x) >= 2 Then
a(i) = ""

If a(i) = "" Then


a(i) = a(i + 1)
a(i + 1) = ""

If a(i) <> "" Then x = x + 1

ReDim Preserve a(x)

cells(7, i).value = a(i)

Конец

Приложение B

20
Окно редактора VBA

Приложение С

21
Форма-приветствие

Приложение D

22
Типы данных в VBA
Размер
Значение переменной/константы
Тип данных ячейки
или примечание
(байт)
True(истина, логическая единица)
Boolean (логический) 2 байта
и False(ложь, логический нуль)
Byte (короткий целый
1 байт Целые числа от 0 до 255
беззнаковый)
Integer (целый) 2 байта Целые числа от -32 768 до 32 767
Целые числа от -2 147 483 648 до 2
Long (длинный целый) 4 байта
147 483 647
Числа с четырьмя десятичными
знаками от -922 337 203 685
Currency (денежный) 8 байт
477,5808 до
922 337 203 685 477,5807
Числа с дробной частью от
-3,402823*1038 до -1,401298*10-45
Single (с плавающей точкой
4 байта для отрицательных чисел, и от
одинарной точности)
1,401298*10-45 до 3,402823*1038 для
положительных чисел
От 1 января 100 года до 31 декабря
Date (дата) 8 байт
9999 года
String (строковый переменной
10 байт + 1
длины)
байт на Длина строки от 0 до 231 символов
символ

Задается
при
String (строковый постоянной
выполнении Длина строки от 1 до 216
длины)
оператора
Dim
Для чисел Значения соответствуют типу
Variant (универсальный)
-16 байт. данных Boolean, Byte, Integer,

23
Long, Single, Double, Date,
определяемому автоматически
Для строк –
22
Длина строки от 0 до 231 символов
байта+1байт
на символ

Используется при объявлении


Object (объект) 4 байта
объектов; аналогичен типу Variant

24

Вам также может понравиться