Главная страница

Программирование на visual basic


Скачать 1.19 Mb.
НазваниеПрограммирование на visual basic
Анкорvb.pdf
Дата05.06.2021
Размер1.19 Mb.
Формат файлаpdf
Имя файлаvb.pdf
ТипУчебное пособие
#214287
страница17 из 17
1   ...   9   10   11   12   13   14   15   16   17
12. Построение графиков функций
При решении многих задач результаты необходимо отобразить в гра- фическом виде. Для решения этой задачи идеально подходит мастер диа- грамм табличного процессора Excel. При этом программа пользователя должна вывести на рабочий лист данные для графика или диаграммы и вы- звать соответствующие методы, необходимые для графической иллюстра- ции результатов работы программы. Методы, соответствующие построе- нию графиков, можно получить, используя мастер диаграмм в режиме за- писи макроса.
12.1. Построить график функции y=x
4
+ x
3
-2x-2 на отрезке [-2,2].

146
Решение
: В цикле for табулируем заданную функцию на отрезке [2,2] с шагом 0.1 и выводим результаты в первый и второй столбец рабочего листа Лист5. Для того чтобы записать ту часть программы, которая отвеча- ет за диаграмму, необходимо зайти на рабочий лист Лист5 и проделать следующие действия:
1) Выделить произвольную прямоугольную область.
2) Войти в пункт меню
Сервис
. Выбрать пункт
Начать Запись

3) Запомнить предложенное имя макроса и нажать кнопку OK.
4) Вызвать мастер диаграмм и на первом шаге выбрать тип диаграммы
точечная
, со значениями, соединенными отрезками без маркеров.
5) На втором шаге мастера диаграмм нажать кнопку
готово
6) Остановить запись макроса, нажав на кнопку
остановить
запись
панели инструментов Visual Basic или зайти опять в меню
Сер-
вис/Макрос/Остановить макрос
7) Зайти в записанный на шагах 4-6 макрос и перекопировать тело макроса в программу после оператора Next x.
8) Найти обращение к свойству Range(“..”) и правильно указать об- ласть, в которую наша программа записывает данные для графиков.
Свойство PlotBy :=xlColumns, указывающее, что нужно строить график по столбцам, можно удалить, т.к. по умолчанию графики строятся по столбцам.
9) Запустить программу.
Результатом работы программы будет график, нарисованный на рабо- чем листе с именем Лист5. Если последнюю строку, выданную мастером диаграмм удалить, то график будет выведен не на рабочий лист, а в от- дельный чистый лист типа диаграмма.
Читатели могут поэкспериментировать с различными типами диа- грамм, а также включить другие шаги мастера диаграмм.
Sub График111()
Dim x As Double, n As Long
Sheets("Лист5").Select n = 0 ' Номер строки для вывода координат точек
' Цикл по точкам графика
For x = -2 To 2.00001 Step 0.1 n = n + 1
Cells(n, 1) = x
Cells(n, 2) = x ^ 4 + x ^ 3 - 2 * x - 2
Next x
' Эти строки отвечают за построение графика функции
Charts.Add ' Добавить диаграмму
' Задает тип диаграммы. Была выбрана точечная, со значениями,
' соединенными отрезками без маркеров
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
' Задает область в которой находятся данные для построения
‘ графика данные берутся из области "A1:Bn" рабочего

147
‘ листа с именем Лист5
ActiveChart.SetSourceData Source:=Sheets("Лист5").Range("A1:B" _
+ Trim(Str(n)))
'Задает область для построения диаграммы на том же листе
ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист5"
End Sub
12.2. Написать программу для автоматического построения графика указанной ниже функции и касательной к нему при x
0
=0.5.
Решение.
Для вычисления значения функции в произвольной точке на- пишем подпрограмму-функцию Fun112(x) с действительным аргументом x. В переменной a
вычисляется значение очередного слагаемого. Пере- менная z отвечает за знак перед слагаемыми. Переменная n равна степени в которую необходимо возвести x. Тогда целая часть числа n\2+1 будет равна номеру очередного слагаемого. Знак z
меняем, когда целое число
[n/2] четно (через два слагаемых).
Function Fun112(x As Double) As Double
Dim S As Double, a As Double, n As Long, z As Long a = x: S = a: n = 1: z = 1
While Abs(a) > 0.000000001 n = n + 2 a = a * x*x / ((n - 1) * n): S = S + z * a
If (n \ 2 Mod 2) = 0 Then z = -z ' Поменять знак числа
Wend
Fun112 = S
End Function
Для получения координат графика касательной напишем две функции:
FunDiv(x) и FunTang(x,x0). Первая функция вычисляет производную на- шей функции Fun112 в произвольной точке x, а вторая вычисляет ординату касательной в точке x.
Для вычисления производной используем ее определение. Производ- ной называется предел отношения приращения функции на приращения аргумента при стремлении последнего к 0.
В качестве ∆x возьмем достаточно малое число 0.000001.
!
15
!
13
!
11
!
9
!
7
!
5
!
3 15 13 11 9
7 5
3
+


+
+


+
=
x
x
x
x
x
x
x
x
y
)
(
)
(
lim
0
x
x
y
x
x
y
y
x
Δ

Δ
+
=


Δ

148
Function FunDiv(x As Double) As Double
Dim d As Double: d = 0.0000001
FunDiv = (Fun112(x + d) - Fun112(x)) / d
End Function
Уравнение касательной записывается в виде
Y=f(x
0
)+f ′(x
0
)(x-x
0
).
Согласно этому уравнению пишем функцию FunTang(x,x
0
).
Function FunTang(x As Double, x0 As Double) As Double
FunTang = Fun112(x0) + FunDiv(x0) * (x - x0)
End Function
Теперь напишем подпрограмму, которая табулирует функции Fun112 и
FunTang, выводя значения абсциссы в первый столбец, а ординаты во вто- рой и третий столбцы. В эту же подпрограмму перекопируем из задачи
12.1 строки, отвечающие за построение графиков.
Sub Graphics(a As Double, b As Double, h As Double, x0 As Double)
Dim x As Double, n As Long n = 0
For x = a To b + 0.001 * h Step h n = n + 1
Cells(n, 1) = x
Cells(n, 2) = Fun112(x)
Cells(n, 3) = FunTang(x, x0)
Next x
' Эти строки отвечают за построение графика функции
Charts.Add ' Добавить диаграмму
' Задает тип диаграммы. Было выбрано Точечная со значениями,
' соединенными отрезками без маркеров
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
' Задает область, в которой находятся данные для построения
‘ графика теперь уже строим график на базе чисел находящихся в
‘ трех первых 'столбцах A, B и C.
ActiveChart.SetSourceData Source:=Sheets("Лист6").Range("A1:C" _
+ Trim(Str(n)))
' Где строить диаграмму?
ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист6"
End Sub
И наконец напишем основную программу, в которой задаем интервал
[a,b], на котором нужно строить график, шаг между точками на графике h и абсциссу x
0
, в которой надо проводить касательную к графику.

149
Sub График112()
Dim a As Double, b As Double, h As Double, x0 As Double
Sheets("Лист6").Select a = -10: b = 10: h = 0.05: x0 = 0.5
Call Graphics(a, b, h, x0)
End Sub
Все приведенные в данном задании программные единицы (функции, подпрограммы и основную программу) необходимо поместить в произ- вольном порядке в один модуль.
Разработанная программа получилась достаточно универсальной. Для построения графика другой функции необходимо просто заменить тело функции Fun112.
Список литературы
1. Шмидт В. Visual Basic 5.0. –М. : АБФ, 1997. –688с.
2. Берков Н.А. , Беркова Н.Н. Алгоритмический язык Фортран. –М:
МГИУ,1998. –94с.
3. Справочная информация пакета программ Microsoft Office 97.

150
Введение....................................................................
1.
Основные элементы языка .......................................... 5
1.1.
Первая программа .................................................................... 5
1.2.
Типы данных.............................................................................. 7
1.2.1. Константы ................................................................................ 7 1.2.2. Переменные величины ........................................................... 8
1.3. Операции и выражения ............................................................ 11
1.3.1. Оператор присваивания........................................................ 11 1.3.2. Арифметические операции и выражения ........................... 11 1.3.3. Логические операции и выражения .................................... 13 1.3.4. Битовые операции ................................................................. 15 1.3.5. Текстовые выражения........................................................... 17
1.4. Встроенные функции................................................................. 19
1.4.1. Математические функции .................................................... 19 1.4.2. Символьные функции ........................................................... 21 1.4.3. Функции преобразования.................................................... 23 1.4.4. Функции даты и времени ..................................................... 24
2.
Управляющие операторы ............................................25
2.1. Оператор безусловного перехода ............................................ 25
2.2. Логические операторы if .......................................................... 25
2.2.1. Простой укороченный if....................................................... 26 2.2.2. Простой полный if................................................................. 26 2.2.3. Блочные операторы If ........................................................... 27 2.2.4. Укороченный блочный If ..................................................... 27
2.3. Оператор выбора........................................................................ 30
2.4. Операторы цикла....................................................................... 31
2.4.1. Оператор цикла For …Next .................................................. 31 2.4.2. Оператор цикла While........................................................... 33 2.4.3. Операторы цикла Do............................................................. 34
3.
Массивы и пользовательские типы данных........... 36
3.1. Массивы переменных................................................................ 36
3.1.1. Описание массива ................................................................. 36 3.1.2. Задание начальных значений элементам массива ............. 37
3.2. Динамические массивы ............................................................ 40
3.3. Пользовательские типы данных............................................. 42

151
4.
Операторы организации функций и подпрограмм 44
4.1. Подпрограммы-функции.......................................................... 44
4.1.1. Оператор FUNCTION ........................................................... 44 4.1.2. Необязательные параметры ................................................. 46 4.1.3. Передача параметров по ссылке и значению ..................... 46 4.1.4. Оператор Exit Function ......................................................... 47 4.1.5. Особенности использования в качестве формальных параметров массивов ............................................................................ 48
4.2. Подпрограммы............................................................................ 50
4.2.1. Оператор описания подпрограммы SUB ............................ 50 4.2.2. Оператор вызова подпрограммы CALL ............................. 50 4.2.3. Примеры подпрограмм......................................................... 51 4.2.4. Способы передачи формальных параметров ..................... 53
5. Ввод-вывод данных .........................................................
5.1.
Функция MsgBox ..................................................................... 54
5.2.
Функция InputBox................................................................... 57
5.3.
Вывод результатов в окно отладки ..................................... 58
5.4. Форматирование данных.......................................................... 61
5.4.1. Функция Format..................................................................... 61 5.4.2. Примеры форматов ............................................................... 61 5.4.3. Стандартные форматы.......................................................... 63 5.4.4. Форматы даты и время ......................................................... 64
5.5. Ввод-вывод в ячейки рабочего листа .................................... 65
5.6. Методы форматирования ячеек рабочего листа ................. 67
5.6.1. Методы выделения ячеек цветом ........................................ 67 5.6.2. Методы форматирования и очистки ячеек......................... 70
5.7. Операции ввода-вывода с файлами данных ........................ 72
6. Отладка программ...........................................................
7. Примеры решения простейших стандартных задач....... 77
7.1. Задачи на линейные алгоритмы ............................................. 77
7.2. Задачи на циклические алгоритмы........................................ 81
7.2.1. Арифметическая прогрессия................................................ 81 7.2.2. Геометрическая прогрессия ................................................. 82 7.2.3. Вычисление суммы арифметической последовательности83 7.2.4. Сумма индуктивных слагаемых .......................................... 85

152
7.3. Задачи на разветвляющиеся алгоритмы .............................. 87
8. Задачи сортировки ..........................................................
8.1. Перестановка элементов в массиве........................................ 90
8.2. Сортировка методом “пузырька”........................................... 93
8.2.1. Метод "пузырька" для массивов.......................................... 93 8.2.2. Метод "пузырька" для структур .......................................... 95
8.3. Сортировка методом выбора................................................... 97
8.4. Сортировка методом вставки.................................................. 98
8.5. Быстрая сортировка.................................................................. 99
8.6. Сравнения быстродействия основных типов сортировок101
9. Задачи на символьные переменные............................... 103
9.1. Задачи обработки текстовой информации.......................... 104
9.2. Задачи шифрования текста.................................................... 109
10. Задачи на массивы ..........................................................
10.1. Одномерные массивы натуральных чисел....................... 112
10.2. Задачи на одномерные массивы действительных чисел115
10.3. Задачи на двухмерные массивы действительных чисел120
11. Хранение чисел в памяти компьютера ..........................125
11.1. Перевод натуральных чисел в различные системы счисления 125
11.2. Программы перевода чисел в p-ичную систему счисления127
11.3. Перевод натуральных чисел в системы счисления, кратные
двоичной.................................................................................................. 129
11.4. Перевод целых чисел в двоичный формат ....................... 133
11.5. Перевод вещественных чисел в двоичный формат ........ 136
11.6. Хранение символьной информации в памяти компьютера143
12. Построение графиков функций ...................................... 145
Список литературы.............................................................
1   ...   9   10   11   12   13   14   15   16   17


написать администратору сайта