- Lektsia - бесплатные рефераты, доклады, курсовые работы, контрольные и дипломы для студентов - https://lektsia.info -

MaxI As Integer, MaxJ As Integer)

Dim J As Integer, I As Integer

For J = 1 To MaxJ

A(J) = 0

For I = 1 То MaxI

А(J) = А(J) + B(I,J)

Next

Next

End Sub

Изменяя значения аргументов данную процедуру можно использовать для работы с матрицами произвольного размера.

А вот пример функции для вычисления среднего значения элементов одномерного массива:

Function FunSumVector (A( ) As Single, _

MaxI As Integer) As Single

Dim Sum As Single, I As Integer

Sum = 0

For i=1 To MaxI

Sum = Sum + A(I)

Next

FunSumVector = Sum/MaxI

End Function

В следующем примере функция Celsius пересчитывает градусы Фаренгейта в градусы Цельсия. Когда функция вызывается процедурой Command1_Ckick, переменная, содержащая значение аргумента, передается функции. Результат вычислений возвращается вызывающей процедуре и выводится в окно сообщения.

Sub Command1_Ckick()

Dim t As Single

t = InputBox( _

"Введите температуру в градусах Фаренгейта")

MsgBox "Температура равна " & _

Celsius(t) & " градусов Цельсия"

End Sub

Function Celsius(ГрадФар As Single) As Single

Celsius = (ГрадФар - 32) * 5 / 9

End Function

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

Optional. Это слово должно предшествовать имени того аргумента, который является необязательным. После необязательного аргумента могут следовать только необязательные же аргументы. Нельзя использовать необязательные аргументы совместно с массивом аргументов (ParamArray).

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

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

ParamArray. Массив аргументов. Таковым может быть объявлен только последний аргумент в списке, при этом он будет представлять собой переменную типа Variant, содержащую в себе массив. Этим способом можно передавать в процедуру или функцию значительные объемы данных. При использовании массива аргументов нельзя применять свойства Optional, ByVal и ByRef.

ЗначениеПоУмолчанию. Допустимо только для необязательного аргумента. Задает значение, которое будет автоматически присвоено аргументу в случае его отсутствия.

Именованные аргументы

При вызове процедур Sub или Function возможна позиционная передача аргументов, т.е. в порядке следования в описании процедуры. Кроме того, аргументы могут передаваться по именам, вне зависимости от позиции в списке аргументов.

ИмяАргумента:= ЗначениеАргумента

Именованный аргумент состоит из имени аргумента, за которым следует двоеточие со знаком равенства (:=) и значение аргумента.

Именованные аргументы особенно полезны при вызове процедуры с необязательными аргументами (Optional).

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

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

Область действия имен процедур и функций

Для того чтобы процедура или функция была доступна во всех модулях и формах проекта, она должна быть объявлена в модуле с ключевым словом Public. Процедура или функция, объявленная в форме, доступна процедурам и функциям только этой формы (независимо от примененного ключевого слова Private или Public).

В список аргументов процедуры рекомендуется включать все входные и все выходные для этой процедуры данные.

В список аргументов функции рекомендуется включать все входные для этой функции данные. Ее единственный (как правило) результат возвращается в вызывающую программу через имя функции.

Должно выполняться следующее соответствие между списками аргументов при объявлении и при обращении:

Аргумент при объявлении Аргумент при обращении

Переменная Константа, переменная, элемент массива, выражение

Массив Массив

Форма Форма

Элемент управления Элемент управления

Пример 1.

Sub Sum (A As Integer, B As Integer, С As Integer)

С = А + В

End Sub

Sub Form_Click ()

Dim X(1 To 3) AsInteger

X(1) = 1

X(2) = 2

Sum X(1), X(1) + X(2), X(3)

Print Х(1), Х(2), Х(3)

End Sub

Sub Command1_Click ()

Dim X As Integer, Z As Integer

X = 5

Sum X, 4, Z

Print X, Z

End Sub

Результат при щелчке на форме: 1 2 4

Результат при щелчке на кнопке: 5 9

Пример 2.

Sub Sum (A ( ) As Integer)

A(3) = A(1) + A(2)

End Sub

Sub Form_Click ()

Dim X(3) As Integer

X(1) = 1

X(2) = 2

Sum X

Print X(1), X(2), X(3)

End Sub

Результат: 1 2 3

Если никакое значение не присвоено имени функции, то имя функции принимает значение по умолчанию: числовая функция принимает значение 0, функция, объявленная как String, принимает значение пустой строки нулевой длины (""), функция, объявленная как Variant принимает значение Empty (значение, которое принимает имя функции, называют возвращаемым значением функции).

Задание для выполнения лабораторной работы.

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

N варианта Дано Найти Вычислить и выписать ответ
A(4,4) B(4,4) K=S(A) L=MAX(B) С=(K*B-L*A)^2
A(5,5) B(5,5) K=S(A) L=MIN(B) С=(K*(B+A)-L*B^2
A(6,6) B(6,6) K=SG(A) L=MAXG(B) С=(K*B *A)+L*A
A(4,4) B(4,4) K=P(A) L=MING(B) С=(K/L)*(A*B)^2
A(5,5) B(5,5) K=PG(B) L=MAX(A) С=K*B-L*A^2
A(6,6) B(6,6) K=S(B) L=MAX(B) С=(K*B)^2-(L*A)^2
A(4,4) B(4,4) K=S(A) L=MAX(A) С=K*B^2-L*A^2
A(5,5) B(5,5) K=S(A) L=MAX(B) С=(K+L)*(A+B)^2
A(6,6) B(6,6) K=S(A) L=MIN(B) С=(K-L)*(A-B)^2
A(4,4) B(4,4) K=SG(A) L=MAXG(B) С=(K*B *A)+L*A
A(5,5) B(5,5) K=P(A) L=MING(B) С=(K/L)*(A*B)^2
A(6,6) B(6,6) K=PG(B) L=MAX(A) С=K*B-L*A^2
A(4,4) B(4,4) K=S(B) L=MAX(B) С=(K*B)^2-(L*A)^2
A(5,5) B(5,5) K=S(A) L=MAX(A) С=K*B^2-L*A^2
A(6,6) B(6,6) K=S(B) L=MAX(B) С=(K*B-L*A)^2
A(4,4) B(4,4) K=S(A) L=MAX(A) С=(K*(B+A)-L*B^2
A(5,5) B(5,5) K=S(A) L=MAX(B) С=(K*B^2-L*A)^2
A(6,6) B(6,6) K=S(A) L=MIN(B) С=(K*(B+A)^2-L*B^2
A(4,4) B(4,4) K=SG(A) L=MAXG(B) С=(K*B *A)+L*A^2
A(5,5) B(5,5) K=P(A) L=MING(B) С=(K/L)*(A*B)^3
A(6,6) B(6,6) K=PG(B) L=MAX(A) С=K*B-L*A^3
A(4,4) B(4,4) K=S(B) L=MAX(B) С=(K*B)^3-(L*A)^2
    A(5,5) B(5,5)   K=S(A) L=MAX(A)   С=K*B^3-L*A^2
A(6,6) B(6,6) K=S(A) L=MAX(B) С=(K+L)*(A+B)^3
A(4,4) B(4,4) K=S(A) L=MIN(B) С=(K-L)*(A-B)^3
A(5,5) B(5,5) K=SG(A) L=MAXG(B) С=(K*B *A)+L*A^3
A(6,6) B(6,6) K=P(A) L=MING(B) С=(K/L)*(A*B)^3
A(4,4) B(4,4) K=PG(B) L=MAX(A) С=K*B-L*A^3
A(5,5) B(5,5) K=S(B) L=MAX(B) С=(K*B)^2-(L*A)^3
A(6,6) B(6,6) K=S(A) L=MAX(A) С=K*B^2-L*A^3
A(4,4) B(4,4) K=S(B) L=MAX(B) С=(K*B-L*A)^3
A(5,5) B(5,5) K=S(A) L=MAX(A) С=(K*(B+A)-L*B^3

 

S – сумма элементов матрицы

Р – произведение элементов матрицы

SG – сумма элементов главной диагонали матрицы

РG – произведение элементов главной диагонали матрицы

MAX– максимальный элемент матрицы

MIN – минимальный элемент матрицы

MAXG– максимальный элемент главной диагонали матрицы

MING – минимальный элемент главной диагонали матрицы

 

Значения матриц А и В сформировать случайным образом целыми числами из интервала [0;10].

 

Контрольные вопросы

 

  1. Что такое подпрограмма и для чего она используется?
  2. В чем принципиальное отличие подпрограмм FUNCTION и SUB?
  3. Можно ли из подпрограммы вызывать другую подпрограмму?
  4. Что такое формальные и фактические параметры?

 

 

ЛИТЕРАТУРА

 

1.О. Л. Голицына, И. И. Попов Основы алгоритмизации и программирования. Серия: Профессиональное образование Год издания: 2008 ISBN: 5-91134-214-6 Издательство: Форум 432 стр.

 

http://icc.mpei.ru/services/library.aspx?uuid=5fbb24a3-9c86-470c-afe3-1a25daffc8c6

 

http://icc.mpei.ru/documents/00000310.html