Решение. Этап 1. Математическая часть
Этап 1. Математическая часть
Алгоритм записан на естественном языке
|
|
Этап 2. Ввод данных в таблицу Excel.
В ячейки А1:E4 вводится элементы массива X(i, j).
Этап 3. Определение переменных.
Константы n = 4, m = 5 размер массива X(4, 5)
Вводится: массив X(n, m) (Single).
Выводятся (результат): k (Количество ненулевых элементов, (Integer)).
Промежуточные переменные: i – счетчик цикла с параметром (Integer), j – счетчик цикла с параметром (Integer), Temp – вспомогательная переменная для перестановки элементов при сортировке.
Этап 4. Написание процедуры.
На рабочем листе Лист1 при помощи Элементов управления создать элемент Кнопка (СommandBatton1).
Переименовать Кнопку в режиме конструктора. Вызвать контекстное меню ПКМ ® Свойства ® закладку Alhpabetic ® Caption ® в Поле ввода ввести новое название кнопки Количество ненулевых элементов.
Написать Процедуру-Событие для Кнопки «Количество ненулевых элементов»:
Private Sub CommandButton1_Click()
'Деклорация констант
Const n As Integer = 4
Const m As Integer = 5
'Деклорация переменных
Dim X(1 To n,1 To m) As Single
Dim i As Integer
Dim j As Integer
Dim k As Integer
'Ввод массива X(n,m) из диапазона А1:Е4
For i = 1 To n
For j = 1 To m
X(i, j) = Cells(i, j).Value
Next j
Next i
'Подсчет количество ненулевых элементов
' в массиве X(n,m)
k = 0
For i = 1 To n
For j = 1 To m
If X(i, j) <> 0 Then
k = k + 1
End If
Next j
Next i
'Вывод результата
Cells(6, 1).Value = "Количество ненулевых элементов равно " & k
End Sub
Этап 5. Выполнение.
Перейти на рабочий лист View®Microsoft Excel или Alt+F11). Выйти из режима Конструктора. В ячейках А1:E4 вводится массив X(4, 5). Нажать Кнопку «Количество ненулевых элементов».
В ячейке А1 появится результат – сообщение «Количество ненулевых элементов равно 11.(Рис.8)
Этап 6. Переименование листа. Навести курсор на закладку Лист1, правой клавишей мыши (ПКМ) вызвать контекстное меню, выбрать пункт Переименовать, удалить старое название листа и с клавиатуры набрать новое Задача_15, нажать Enter.
Задача 4 из ТР: Получить вектор , координаты которого равны суммам ненулевых элементов соответствующих строк матрицы .
Sub Кнопка1_Щелчок()
'Описание констант
Const n As Integer = 9
Const m As Integer = 5
'Описание перменных
Dim A(1 To n, 1 To m) As Single
Dim b(1 To n) As Single
Dim i As Integer
Dim j As Integer
Dim k As Integer
'Ввод массива А(n,m) из А1:Е9
For i = 1 To n
For j = 1 To m
A(i, j) = Cells(i, j).Value
Next j
Next i
‘Получить вектор b, координаты которого
‘равны суммам ненулевых элементов
‘соответствующих строк матрицы A(9,5).
For i = 1 To n
k = 0
For j = 1 To m
If A(i, j) <> 0 Then k = k + A(i, j)
Next j
b(i) = k
Next i
'Вывод вектора b в столбец G
Range("G1:H300").Clear
For i = 1 To n
Cells(i, 7).Value = b(i)
Next i
End Sub
Использование подпрограмм и функций-пользователя
Использование подпрограмм позволяет сложную задачу разбить на фрагменты, которые выполняют различные исполнители. Кроме того, подпрограмма может рассмотриваться как самостоятельный модуль, который выполнен квалифицированными разработчиками и используется пользователями более низкой квалификации.
В VBA подпрограммы разделяются на процедуры – Sub и подпрограммы-функции – Function . Кроме того, от первоначальных версий BASIC сохранилась конструкция подпрограмм GoSub – Return , которая в настоящее время редко используется и в нашем курсе не рассматривается.
Любая процедура может содержать несколько входных параметров, произвольное число операторов и несколько результатов ее выполнения.
Синтаксис процедуры в упрощенной форме имеет вид:
[ Private | Public ] Sub <имя процедуры> ( список )
< операторы >
End Sub
Здесь квадратные скобки указывают на необязательный параметр, вертикальная черта – на варианты параметров, выбираемых пользователем. Так, элемент описания Private указывает, что рассматриваемая процедура доступна только из программы и процедур только того модуля, в котором она описана. Элемент описания Public указывает на то, что рассматриваемая процедура доступна для всех программ и процедур во всех модулях. В предлагаемых образцах программ мы будем использовать процедуры только с описанием Public .
Список формальных аргументов процедуры мы условно на начальном этапе изучения разделим на входные параметры – исходные данные и выходные – результаты счета. Входные параметры в списке мы будем описывать с ключевым словом ByVal и обязательным указанием типа. Выходные же параметры в списке будем описывать с ключевым словом ByRef и обязательным указанием типа. При таком способе описания входные параметры передаются в процедуру по значению: вначале в вызывающей программе вычисляются значения фактических аргументов и эти значения подставляются в процедуре вместо формальных. Входные параметры могут быть либо постоянными, либо именными постоянными, либо переменными, либо выражениями. Выходные параметры, описанные с ключевым словом ByRef , передаются по адресам в электронной памяти компьютера и должны быть только переменными. После их вычисления в процедуре их значения передаются в вызывающую программу. Отметим, что каждая переменная, которая используется в качестве выходного параметра процедуры с ключевым словом ByRef в вызывающей программе, должна быть описана в ней только в отдельном операторе описания. Вызов процедуры из вызывающей программы осуществляется с помощью оператора
Call < имя процедуры > ( фактические переменные )
Задача 1
Составить программу табулирования функций
;
для x от -0,5 до 1,5 с шагом 0,1 . Счет функции оформить в виде процедуры, а счет оформить в виде подпрограммы-функции. Использовать цикл Do – Loop Until .
Предположим, что результаты счета будем выводить в Excel – таблицу в следующем виде: заголовок таблицы-символы x , y и z – разместим соответственно в ячейках A1 , С1 , E1 , а результаты счета будем помещать в соответствующие колонки, начиная с третьей строки.
Тогда рассматриваемую задачу можно представить в виде
Public Sub f(ByVal x As Single, _
ByRef y As Single)
If x < 0.77 Then
y = 12 * x ^ 2 - 3.6
Else
y = Log(3 * x)
End If
End Sub
Public Function g(ByVal x, y As Single) As Single
g = Atn(x * y)
End Function
Private Sub Workbook_Open()
Const a = -0.5, b = 1.5, h = 0.1
Dim x As Single
Dim y As Single
Dim z As Single
Dim i As Integer
Range("A1").Value = "x"
Range("C1").Value = "y"
Range("E1").Value = "z"
x = a
i = 3
Do
Call f(x, y)
z = g(x, y)
Cells(i, 1).Value = x
Cells(i, 3).Value = y
Cells(i, 5).Value = z
x = x + h
i = i + 1
Loop Until x > b + h / 2
End Sub
Заметим, что при наборе в редакторе VBA текста программ, подпрограммы желательно отделять друг от друга пустой строкой. При этом, программа легче читается на распечатках. Отметим, что в окне редактора подпрограммы будут разделены серой линией.
При запуске программ, имеющих подпрограммы, курсор должен находиться в основной программе.
Результаты счета предложенной программы имеют вид:
x | y | Z | ||
-0,5 | -0,6 | 0,291457 | ||
-0,4 | -1,68 | 0,591686 | ||
-0,3 | -2,52 | 0,64733 | ||
-0,2 | -3,12 | 0,55788 | ||
-0,1 | -3,48 | 0,334892 | ||
-1,6E-08 | -3,6 | 5,9E-08 | ||
0,1 | -3,48 | -0,33489 | ||
0,2 | -3,12 | -0,55788 | ||
0,3 | -2,52 | -0,64733 | ||
0,4 | -1,68 | -0,59169 | ||
0,5 | -0,6 | -0,29146 | ||
0,6 | 0,719999 | 0,407784 | ||
0,7 | 2,28 | 1,011071 | ||
0,8 | 0,875469 | 0,610978 | ||
0,9 | 0,993252 | 0,72945 | ||
1,098612 | 0,832353 | |||
1,1 | 1,193923 | 0,920019 | ||
1,2 | 1,280934 | 0,994023 | ||
1,3 | 1,360977 | 1,056354 | ||
1,4 | 1,435085 | 1,108966 | ||
1,5 | 1,504077 | 1,153579 |
<== предыдущая лекция | | | следующая лекция ==> |
Парамагнетики. | | | Анатомия и физиология щитовидной железы. |
Дата добавления: 2015-08-14; просмотров: 637;