- •Электронный учебник
- •Уважаемые студенты! Данный учебник поможет овладеть вам программированием на Visual Basic for Application.
- •Содержание:
- •Разветвляющаяся структура Операции сравнения Теория Варианты задач
- •Знакомство с VBA
- •Типы данных
- •Тип данных
- •Тип данных
- •Переменные
- •Все переменные, созданные таким способом, получают тип Variant. Чтобы запретить неявное объявление переменных,
- •Константы
- •Имеется также большой список предопределенных, или, как говорят, внутренних констант. Характерным для них
- •3.В списке Project/Library выберите библиотеку, со списком констант, например
- •VBA содержитМатематическиестандартный набор математическихфункции функций, перечень которых можно найти в окне Object
- •Функции преобразования
- •Функции взаимодействия с пользователем
- •Пользовательские функции
- •В Excel в любые две ячейки вносим необходимые нам значения x и y.
- •Нажимаем кнопку ОК и в ячейке С1 получаем результат. Пользоваться функциями очень удобно.
- •Арифметические операции
- •Теория
- •После запуска программы на выполнение перед вами выскочит окно, в котором будет написано
- •Метод Cells несколько отличается от метода Range. Необходимая ячейка определяется по номеру своей
- •Пример 1. Составьте программу на языке VBA для вычисления площади прямоугольного треугольника по
- •Пример 2. Составьте программу на языке VBA для вычисления площади круга по радиусу,
- •Варианты задач
- •4. Вычислить площадь куба по его стороне.
- •8. Вычислить процентное отношение двух чисел (сколько процентов составляет величина первого от величины
- •12. Вычислить объем шара по заданному радиусу.
- •Операции сравнения
- •Теория
- •Часто решение определенной задачи требует соблюдение нескольких условий сразу, либо одного из нескольких.
- •Теперь поговорим немного о синтаксисе разветвляющейся структуры. Существуют так называемые одно- и многовариантные
- •Пример 1. Составьте программу на языке VBA для задачи: Определить, попадает ли точка
- •Пример 2. Составьте программу на языке VBA для задачи: Решить квадратное уравнение, заданное
- •Варианты задач
- •3. Ввести число Х и проверить, что больше: sin(X), cos(X) или tg(X). Х
- •4.Определить, принадлежит ли точка (x,y):
- •5. Определить, какая из двух точек (a,b) и (c,d) больше удалена от центра
- •9. Найти сумму n первых членов геометрической прогрессии с первым членом А и
- •11. Ввести 3 стороны прямоугольного треугольника A,B,C. Определить, какая из них является гипотенузой.
- •12. Определить, может ли существовать треугольник со сторонами A,B,C.
- •Теория
- •Вместо числа 100 мы могли поставить какую-либо переменную, единственное условие – эта переменная
- •Циклы Do While – Loop. Цикл с предусловием или неопределенный цикл. Очень похоже
- •Цикл Do Until работает как цикл с предусловием. Отличие в алгоритме работы цикла
- •Пример 1. Составьте программу на языке VBA для задачи: Найти сумму n членов
- •Варианты задач
- •5. Найти сумму n членов ряда
- •8. Найти сумму цифр целого числа n. n должно быть больше 0 (проверить).
- •14. Имеется два сосуда. В первом находится С1 литров воды, а во втором
- •Теория
- •Здесь определяется массив, размерность которого 6 элементов (5,6,7,8,9,10).
- •Пример 1. Составьте программу на языке VBA для задачи: Ввести вещественный массив длины
- •Пример 2. Составьте программу на языке VBA для задачи: Ввести целый массив длины
- •Варианты задач
- •Создание пользовательской
- •В качестве примера разберем решение квадратного уравнения через его коэффициенты. Нам необходимо пять
- •Private Sub CommandButton1_Click()
Пример 2. Составьте программу на языке VBA для задачи: Ввести целый массив длины n (n > 0) и вычислить сумму F(X1, ..., Xn) = -1*X1 + 2*X2 - 3*X3 + ...
считая, что Xi - элементы массива.
Sub ar2()
Dim a(100) As Integer Dim i, n, s As Integer
n = InputBox("введите n") If n > 0 Then
For i = 1 To n
a(i) = Worksheets(1).Cells(i, 1).Value Next i
For i = 2 To n Step 2 s = s + i * a(i)
Next i
For i = 1 To n Step 2 s = s - i * a(i)
Next i
Worksheets(1).Cells(1, 3).Value = "Сумма ряда равна=" & s Else
MsgBox "Неверные исходные данные" End If
End Sub
При n=5 и вводе чисел указанных на рисунке должно получиться так:
Варианты задач
Составьте блок-схему и программу на VBA для задач:
1. Ввести целый массив длины n (n > 1) и найти самый длинный его сплошной отрезок, элементы которого являются членами арифметической прогрессии с разностью 1. Вывести длину отрезка и первый элемент.
Примечание. Минимальная длина массива - 2. Исходные данные Результат
1.n = -1 Неверные исходные данные
2. n = 10, массив: |
Длина 4, первый элемент 2 |
2 7 8 2 3 4 5 2 0 1 |
(отрезок 2 3 4 5) |
2. Ввести целый массив длины n (n > 0), найти и вывести а) минимальный элемент и его номер б) максимальный элемент и его номер Исходные данные Результат
1.n = -1 Неверные исходные данные
2. n = 9, массив: |
Максимальный элемент 11 |
(номер 6) |
3 -7 6 0 5 11 9 -2 7 Минимальный элемент -7 (номер2)
3. |
Ввести целый массив длины n (n > 0) и найти самую большую и самую малую (по |
|
модулю) разности между двумя его соседними элементами. |
||
Исходные данные |
Результат |
|
1. |
n = -1 |
Неверные исходные данные |
2. |
n = 7, массив: |
Максимальная разность 20 |
|
1 8 2 -15 5 3 |
Минимальная разность 4 |
4. |
Ввести целый массив длины n (n > 0), расположить его элементы от меньшего к |
|
большему и вывести результат. |
||
Исходные данные |
Результат |
1.n = -1 Неверные исходные данные
2.n = 7, массив:
9 3 7 1 0 2 3 0 1 2 3 3 7 9
5. Ввести вещественный массив длины n (n > 0) и подсчитать количество элементов вне, внутри и на круге с радиусом r. Координатами считать последовательные пары элементов. n должно быть четным!
Исходные данные |
Результат |
|
1. |
n=1 r=-2 |
Неверные исходные данные |
2. |
n=-2 r=4 |
Неверные исходные данные |
3.n=8 r=4, массив:
0.50 1.5 8 3 3 2 0 1 внутри, 1 на круге, 2 вне круга
6. Ввести целый массив длины n (n > 0) и, считая, что это n-мерный вектор,
найти его длину. |
|
|
Исходные данные |
Результат |
|
1. |
n = -1 |
Неверные исходные данные |
2. |
n = 5, массив: |
|
|
3 0 6 7 2 |
Длина вектора равна 9.8994949366 |
7. Ввести целый массив длины n (n > 0), подсчитать и вывести а) среднее арифметическое всех элементов
б) элемент, наиболее близкий к числу a) Исходные данные Результат
1.n = -1 Неверные исходные данные
2.n = 7, массив: Среднее арифметическое
8.7142857143 41 2 -7 9 3 7 6 Самый близкий к нему элемент 9
8. Ввести вещественный массив длины n (n > 0) и преобразовать его по следующему правилу:
n-ный эл. = ((n-1)-ый + n-ный)/2
Первый элемент не изменяется. Выдать преобразованный массив.
Исходные данные |
Результат |
|
1. |
n = -1 |
Неверные исходные данные |
2.n = 7, массив:
7.41.8 3.5 5.3 2 0 4.1 7.4 4.6 2.65 4.4 3.65 1.0 2.05
9.Ввести целый массив длины n (n > 0) и вывести номера всех элементов, являющихся степенями двойки (проверять до 15 степени).
Исходные данные |
Результат |
|
1. |
n = -1 |
Неверные исходные данные |
2. |
n = 9, массив: |
Степенями двойки являются 1,2,4,6,7 |
|
|
элементы |
4 1 12 16 5 128 1024 234 78
10. Ввести целый массив длины n (n > 0) и преобразовать его так, чтобы сначала шли отрицательные элементы, потом нулевые, потом положительные. Вывести результат.
Исходные данные |
Результат |
1. n = -1 |
Неверные исходные данные |
2.n = 9, массив:
1 6 0 -1 5 -7 0 5 -8 -1 -7 -8 0 0 1 6 5 5
11. Ввести целый массив длины n (n > 0) и инвертировать его (перевернуть так, чтобы первый элемент стал n, второй - (n-1) и т.д.)
Исходные данные |
Результат |
|
1. |
n = -1 |
Неверные исходные данные |
2. |
n = 7, массив: |
|
|
5 2 -7 5 0 2 1 |
1 2 0 5 -7 2 5 |
12. Ввести целый массив длины n (n > 0) подсчитать, сколько его элементов
a)делятся на 2
b)делятся на 3
Исходные данные |
Результат |
|
1. |
n = -1 |
Неверные исходные данные |
2. |
n = 8, массив: |
3 элемента делятся на 2 |
5 9 12 5 15 1 6 14 |
4 элемента делятся на 3 |
13. |
Ввести целый массив длины n (n > 0) и вывести номера и значения всех его |
||
нечетных и ненулевых элементов, которые находятся в диапазоне -n < a[i] < n |
|||
Исходные данные |
|
Результат |
|
1. |
n = -1 |
|
Неверные исходные данные |
2. |
n = 9, массив: |
|
элемент 5 (номер 1) |
5 |
-7 0 8 8 11 1 -9 15 |
элемент -7 (номер 2) |
|
|
элемент 1 (номер 7) |
||
14. |
Ввести целый массив длины n (n > 0) и сжать его, выбросив все нулевые и |
||
отрицательные элементы. |
|||
Исходные данные |
|
Результат |
|
1. |
n = -1 |
Неверные исходные данные |
|
2. n = 9, массив: |
|
|
|
2 -5 2 0 5 9 0 -7 54 |
|
2 2 5 9 54 |
|
15. |
Ввести целый массив длины n (n > 0) и определить максимальную сумму двух |
подряд идущих элементов. Вывести сумму и номера элементов, ее составляющих. Исходные данные Результат
1.n = -1 Неверные исходные данные
2.n = 8, массив:
5 -2 0 2 4 8 2 1 Максимальная сумма: 12 (5 и 6 лементы)
Создание пользовательской
формы
Форма – это диалоговое окно, на котором размещены элементы управления. С помощью VBA вы сами можете создавать пользовательские формы. Новая форма добавляется выбором команды Insert/UserForm.
Вы можете видеть перед собой панель инструментов (Toolbox). Красными кружками обведены те, которые нам понадобятся для создания простейшей формы. Под номером один элемент управления надпись (label) просто поясняющая надпись и ничего больше. Под вторым номером поле (TextBox) в поля мы будем вводить данные и выводить результаты. И наконец под номером три кнопка (CommandButton) при нажатии которой будет решаться задача.
В качестве примера разберем решение квадратного уравнения через его коэффициенты. Нам необходимо пять полей ( три для коэффициентов и два для корней), пять надписей (соответственно) и одна кнопка. После размещения элементов управления и замены их имен выглядеть все будет следующим образом:
Теперь нужно написать программу, благодаря которой форма будет действовать. Для этого дважды щелкните курсором на кнопке, и перед вами появится окно для ввода программы. Мы приведем ее в готовом виде, в фигурных скобках указаны комментарии: