Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Вычисление суммы, произведения, количества, минимума и максимума в двумерных массивах



 

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

 

S = 0: P = 1: K = 0: Min = 32000: Max = – 32000

For i = 1 To N

For j = 1 To N

S = S + x(i, j)

P = P * x(i, j)

K = K + 1

If x(i, j) < Min Then Min = x(i, j)

If x(i, j) > Max Then Max = x(i, j)

Next j

Next i

 

Пример

Задана целочисленная матрица X(5, 5). Вычислить значение выражения

 

,

 

где Р – произведение четных элементов матрицы; S – сумма нечетных элементов; Max – максимальный из положительных элементов; iMin, jMin – номера строки и столбца минимального элемента матрицы.

 

Программный код

 

Option Explicit

Sub PR23()

Dim X(5, 5) As Integer

Dim i As Integer, j As Integer

Dim T As Double, S As Double

Dim P As Double, Q As Double

Dim Max As Integer, Min As Integer

Dim iMin As Integer, jMin As Integer

‘ очистка ячеек электронной таблицы

Range(Cells(1, 1), Cells(100, 100)).Select

Selection.Clear

Cells(1, 1).Select

Randomize

For i = 1 To 5 ‘ ввод матрицы

For j = 1 To 5

Cells(i, j) = Int(Rnd * 100 – 50)

X(i, j) = Cells(i, j)

Next j

Next i

P = 1: S = 0: Max = –32000: Min = 32000

For i = 1 To 5

For j = 1 To 5

If X(i, j) Mod 2 = 0 Then P = P * X(i, j)

If X(i, j) Mod 2 < > 0 Then S = S + X(i, j)

If X(i, j) > 0 And X(i, j) > Max Then Max = X(i, j)

If X(i, j) < Min Then

Min = X(i, j)

iMin = i

jMin = j

End If

Next j

Next i

T = P * S – Max * iMin * jMin

If T > = 0 Then

Q = Sqr(T)

MsgBox (" Q=" & Q)

Else

MsgBox (" нет решения" )

End If

End Sub

 

Подпрограммы

 

При написании длинных программ рационально использовать подпрограммы.

Подпрограмма – это отдельный блок, который может восприниматься как отдельная программа. В VBA существует два вида подпрограмм: подпрограмма-процедура и подпрограмма-функция.

 

Подпрограмма-процедура

 

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

 

Синтаксис:

[Public | Private] [Static] Sub Имя([Список аргументов])

Тело подпрограммы

End Sub

Элементы описания процедуры рассмотрены в табл. 10.

 

Таблица 10

Public Указывает, что процедура Sub доступна для всех других процедур во всех модулях
Private Указывает, что процедура Sub доступна для других процедур только того модуля, в котором она описана
Static Указывает, что локальные переменные процедуры Sub сохраняются в промежутках времени между вызовами этой процедуры
Список аргументов Список переменных, которые передаются в процедуру Sub при ее вызове. Имена переменных разделяются запятой

 

Вызов процедуры Sub из другой процедуры можно произвести следующим образом:

 

Имя процедуры [Список фактических параметров]

 

Список фактических параметров – это список аргументов, передаваемых процедуре. Он должен соответствовать списку, заданному в описании процедуры, по типу и количеству.

Пример

Основные способы передачи параметров в процедуре.

 

Option Explicit

Sub PR27()

Dim c As Double

Dim a As Integer

Dim b As Integer

B = 12

For a = 1 To 5

Summa a, b, c

MsgBox(" c=" & c)

Next a

End Sub

Sub Summa(ByVal a1, b1 As Integer, ByRef s As Double)

S = a1 + b1

End Sub

 

В данной программе мы сталкиваемся с несколькими видами параметров:

· глобальные параметры – c, a, b;

· локальные параметры – s, a1, b1;

· параметры, передающиеся по значению – a, b;

· параметры, передающиеся по ссылке – s;

· фактические параметры – a, b, c;

· формальные параметры – a1, b1, s.

Рассмотрим каждый из этих видов параметров.

 

Локальные и глобальные параметры (переменные)

 

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

 

Формальные и фактические параметры

 

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

 

Параметры, передающиеся по значению

 

Параметры, передающиеся по значению, – это параметры, значения которых передаются в подпрограмму и не передаются из нее обратно. Перед такими параметрами ставится оператор ByVal.

 

 

Подпрограмма-функция

 

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

 

Синтаксис:

[Public [Private] [Static] Function Имя [(Список аргументов)] As Тип

Тело подпрограммы

Имя = Выражение

End Function

Подпрограмма-функция вызывается в выражении по своему имени, за которым следует список аргументов в скобках:

 

Переменная = Имя подпрограммы-функции(Список аргументов)

 

Пример 1

Даны действительные числа s, t. Получить значение выражения

 

,

 

где

 

Программный код

 

Option Explicit

Sub PR31()

Dim s As Double

Dim t As Double

Dim f As Double

s = Val(InputBox(" Введи s" ))

t = Val(InputBox(" Введи t" ))

f = Q(1.2, s) + Q(t, s) – Q(2 * s – 1, s * t)

MsgBox(" f=" & f)

End Sub

Private Function Q(ByVal a As Double, ByVal b As Double) As Double

Q = (a^2 + b^2) / (a^2 + 2 * a * b + 3 * b^2 + 4)

End Function

 

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-08; Просмотров: 677; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.017 с.)
Главная | Случайная страница | Обратная связь