Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika2013-Of2010.doc
Скачиваний:
25
Добавлен:
26.03.2015
Размер:
5.06 Mб
Скачать

Одномерные массивы

Массивами называются совокупности данных, объединенных одним именем. Элементы массивов называются индексированными переменными. Одномерные массивы имеют один индекс, например a(i), где a – имя массива; i – номер элемента массива. Массивы до их использования в программе должны быть объявлены в операторе Dim, например:

Dim a(5) As Single

Здесь определено, что будет использоваться одномерный массив с шестью элементами вещественного типа. Число в скобках указывает номер последнего доступного для использования номера индекса. Нумерация индексов начинается с нуля.

Если необходимо использовать определенную нумерацию элементов массива, например с 5 до 10, то это указывается при объявлении массива следующим образом: Dim a(5 to 10) As Single

Пример. Написать программу вычисления суммы элементов массива b = {5,2; 4,5; 1; 2,9; 3}, которые записаны в первом столбце на рабочем листе. Иначе это условие можно записать: Результат поместить в ячейкуB1.

Программа без использования массива

Программа с использованием массива

SubCommandButton1_Click()

Dim b As Single, s As Single, i As Integer

s = 0

For i = 1 To 5

b = Cells(i,1)

s = s + b

Next

Range(“B1”)=s

End Sub

Sub CommandButton5_Click()

Dim b(5) As Single, s As Single, i As Integer

s = 0

For i = 1 To 5

b(i) = Cells(i,1)

s = s + b(i)

Next

Range(“B1”)=s

End Sub

Рассмотрим примеры вычисления произведения и экстремума.

Определить

где t = {0,4; –1,5; 2,8; 3; 0,9; 7,3}. Исходные данные записаны в третьем столбце на рабочем листе. Результат поместить в ячейку D1.

Определить максимальный элемент массива d = {12; 0,4; 30; –2; 5; 9,3} и номер этого элемента. Исходные данные записаны в пятом столбце на рабочем листе. Результаты поместить в ячейки F1 и F2.

Sub CommandButton1_Click()

Dim t As Single, s As Single

Dim p As Single, k As Integer

p = 1

For k = 1 To 6

t = Cells(k,3)

p = p * sin(t)

Next

s = 2.4 + p

Range(“D1”) = s

End Sub

Sub CommandButton1_Click()

Dim d(1 To 6) As Single, max As Single

Dim n As Integer, i As Integer

For i = 1 To 6

d(i) = Val(InputBox(“Введите элемент массива d”))

Next

max = d(1) : n = 1

For i = 1 To 6

If d(i) > max Then max = d(i) : n = i

Next

MsgBox (“Максимум =” & max & “ номер = ” & n)

End Sub

Назад

Использование подпрограмм

Если имеются однотипные вычисления в программе, то целесообразно выделять операторы, реализующие их, в отдельную пользовательскую подпрограмму. Тогда в так называемой основной программе можно будет не писать каждый раз заново похожие операторы, а просто обращаться к подпрограмме.

Различают два типа пользовательских подпрограмм:

– подпрограммы типа Function (функция), которые производят действия, определенные ее программным кодом, и в результате этого действия возвращают одно значение определенного типа;

– подпрограммы типа Sub (процедуры), которые производят действия, определенные ее программным кодом, и возвращают столько значений, сколько необходимо.

Функция пользователя в общем виде выглядит следующим образом:

Function <имя функции> (<аргумент1> <As тип>, ...) <As тип>

<программный код для определения функции>

End Function

Описание функции пользователя начинается с заголовка, в котором указывается имя функции после ключевого слова Function, в скобках через запятую перечисляются формальные аргументы с указанием их типа и после скобок указывается тип данных, которому принадлежит значение, возвращаемое функцией. При этом типы аргументов функции и самой функции можно не указывать, в этом случае им присваивается тип Variant.

Конечный результат помещается в переменную с тем же именем, что и имя функции. Заканчивается функция пользователя оператором End Function.

Для обращения к функции пользователя в основной программе записывается имя функции, а в скобках – фактические аргументы, которые должны соответствовать формальным по количеству, типу и порядку расположения.

Пример. Написать программу для вычисления выражения С = М!N!/ (M + N)!, где расчет факториала в общем виде k! = 1 * 2 * 3 * … * k производится с использованием функции пользователя F(k).

Функция пользователя

Основная программа

Function F(k)

Dim i As Integer

F = 1

For i = 2 To k

F = F * i

Next

End Function

Sub CommandButton1_Click()

Dim С As Single

Dim N As Integer, M As Integer

M = Val(InputBox("Введите М"))

N = Val(InputBox("Введите N"))

C = F(M) * F(N) / F(M + 1)

MsgBox C

End Sub

Пользовательская функция листа. Excel позволяет создавать пользовательские функции листа, написанные на языке VBA и реализующие алгоритм пользователя.

Для создания пользовательской функции листа нужно на листе редактора VBA выполнить команду Вставка / Модуль (Insert / Module) и написать функцию пользователя типа Function в появившемся окне. После создания функции ее имя помещается приложением Excel в категорию функций «Определенные пользователем», которая отображается в окне Мастера функций и воспринимается Excel как встроенная функция. Используется такая функция в ячейках на рабочем листе Excel по обычным правилам использования встроенных функций.

Процедуры пользователя типа Sub. Общая структура процедуры имеет вид:

Sub <имя процедуры> (<параметр1>, <параметр 2>, …)

<программный код для определения процедуры>

End Sub

Часть формальных параметров, описанных в заголовке, может быть использована для ввода исходных данных, а другая часть – для записи в них результатов. Для того чтобы использовать процедуру типа Sub в основной программе, надо записать ее имя в отдельной строке и через пробел указать фактические аргументы, разделив их запятыми.

По существу в предыдущих разделах рассматривались процедуры, но это были процедуры обработки событий, привязанные к объекту (например, к кнопке), над которым это событие (например, щелчок) совершается. Скажем, запись Sub CommandButton1_Click() означает, что программа выполняется, когда по кнопке CommandButton1 делается щелчок Click.

Пример. Пусть требуется вычислить сумму произведений: , где Предварительно надо создать процедуру пользователя, которая вычисляет произведение любого количества чисел из массива.

Процедура пользователя

Основная программа

Sub proizv(k, z, p)

Dim i As Integer

p = 1

For i = 1 To k

p = p * z(i)

Next

End Sub

Sub CommandButton1_Click()

Dim f(5) As Single, S As Single

Dim p As Single, p1 As Single, i As Integer

For i = 1 To 4

f(i) = Val(InputBox("Введите f"))

Next

proizv 4, f, p1

proizv 5, f, p2

S = p1 + p2

MsgBox S

End Sub

Назад