Порядок выполнения работы (II-IIIуровни)
Задание II – III уровней требует использования в программе функции FUNCTION и/или процедуры SUB. Процедуры и функции применяются для выполнения повторяющихся задач и их можно вызывать из разных частей кода, поэтому их можно использовать в качестве элементарных структурных блоков при создании приложения.Структурирование кода с помощью процедур позволяют разбить программу на отдельные логические блоки. Отлаживать такие отдельные блоки легче, чем всю программу целиком. Кроме того, процедуры, разработанные для одной программы, можно в том же виде (или после внесения незначительных изменений) использовать в другой программе. Это помогает избежать дублирования кода.
Процедура - это некий блок кода, который будет выполняться всякий раз при вызове этой процедуры. Каждая процедура начинается зарезервированным словом Sub и заканчивается End. Вот общий синтаксис процедуры:
Sub name [(список_аргументов)]
[здесь некий код]
[ExitSub]
[здесь тоже может быть некий код]
EndSub
Всё, что заключено в квадратные скобки - является необязательным. Процедура возвращает управление вызывающему коду после завершения работы оператором EndSub или ExitSub (досрочный выход из процедуры).
В большинстве случаев процедуре необходимо работать с различными данными при каждом ее вызове. Можно передать эти сведения в процедуру как часть вызова процедуры. Процедура определяет ноль или более параметров, каждый из которых представляет значение, ожидаемое ею для приема. Каждому параметру в определении процедуры соответствует аргумент в вызове процедуры. Аргумент представляет значение, которое передается соответствующему параметру в вызове данной процедуры. Список аргументов представляет собой набор элементов, каждый из которых имеет следующий вид:
|
|
[ByVal | ByRef] varname[( )][As type]
Здесь указаны :
- способ передачи значений аргументов (ByVal – передача значения аргумента, ByRef – передача указателя на адрес памяти, по которому размещается значение или массив значений аргумента),
- Varname – имя передаваемого аргумента,
- As type – тип данных, в соответствии с которым можно интерпретировать переданные значения аргументов.
Пример описания процедуры показан ниже:
Sub ShowMessage(message As String)
MsgBoxmessage
EndSub
Здесь указано имя процедурыShowMessage, содержащей один параметр с именем message, у которого тип данных String соответствует понятию текстовая строка.
Для вызова процедуры используется оператор Call. Пример вызова процедуры ShowMessage с одним параметром показан ниже:
Call ShowMessage ("Первая процедура").
Результатом выполнения такой процедуры будет вывод на экран сообщения: "Первая процедура". Здесь вызывается процедура ShowMessage, которой передаётся строка "Первая процедура".Фактически в процедуре происходит присвоение переменной message значения "Первая процедура". Далее происходит вызов функции MsgBox и вывод сообщения на экран. Если количество параметров, передаваемых при вызове процедуры не совпадёт с количеством параметров в объявлении процедуры, тоVisualBasic сгенерирует ошибку.
|
|
Функция - это некий блок кода, который будет возвращать значение. Этим, и только этим функции отличаются от процедур. Общий синтаксис функции:
Function имяфункции (список_аргументов)] [As type]
[здесьнекийкод]
[имяфункции = выражение]
[ExitFunction]
[здесь тоже может быть некий код]
[имяфункции = выражение]
EndFunction
Пример описания функции показан ниже:
Function Square(number As Integer) As Long
Square = number * number
End Function
Вызватьфункциюможнотак:
b = Square (5).
Здесь функция Square возвращает квадрат переданного ей параметра (значение переменнойb будет равно 25).
1. Входные данные: двумерный массив A (N,M).
Выходные данные:наибольший элемент (AMAXN) в последней строке матрицы A,массивB(), элементы которого равны суммам соответствующих строк матрицы A, массивD(), элементы которого равны суммам соответствующих столбцов матрицы A.
|
|
2. Глобальная блок-схема.
Ввод N, M |
Начало |
Ввод (N+1)*(M+1)элементов матрицы A |
Вызов процедуры BSUM(N,M,A,B) |
Вывод результирующего значения функции FMAXN |
Вызов подпрограммы – функцииFMAXN(N,M,A) |
Вывод (N+1) значений элементов массива B() |
Создание массивов B(N), D(M) |
Вызов процедуры DSUM(N,M,A,D) |
Вывод (M+1) значений элементов массива D() |
Конец |
Рис. 5.3. Блок-схема с использованием функций и процедур
3. Текстпрограммы.
ModuleModule1
‘ Заголовок программной секции, относящейся к категории программных модулей
SubMain()
‘ Заголовок программной секции, относящейся к категории головного модуля программы
Dim N, M, I, J As Integer
DimA(,) AsSingle = {{7,-1,2,0}, {4,5,-3,1}, {-6,11,8,-4}}
‘ Явный способ задания двумерного массива А(,) с вещественными (Single) элементами, значения которым присваиваются после символа = построчно, то есть три строки по 4 элемента в каждой
N = A.GetUpperBound(0)
‘ Параметру N присвоено значение верхней границы 1-ой (0) размерности двумерного массива А(,)
M = A.GetUpperBound(1)
‘ Параметру M присвоено значение верхней границы 2-ой (1) размерности двумерного массива А(,)
Console.WriteLine("N={0} M={1}", N, M)
Console.WriteLine("Количествострокматрицы A равно N+1={0}", N + 1)
|
|
Console.WriteLine("Количество столбцов матрицы A равно M+1={0}", M + 1)
‘Количествострок (K1) и столбцов (K2) матрицыAравны, соответственно,N+1 и M+1, так как стандартная нумерация элементов ведется для строк с 0 до K1-1, для столбцов – с 0 до K2-1.
Dim B(N), D(M) As Single
Dim Z As Single
Z = AMAXN(N, M, A)
‘ Осуществляется обращение к процедуре – функции AMAXN(N, M, A)
Console.WriteLine("")
Console.WriteLine("НАИБОЛЬШИЙЭЛЕМЕНТПОСЛЕДНЕЙСТРОКИAMAXN ={0}", Z)
Console.WriteLine("")
Console.WriteLine("МАССИВЗНАЧЕНИЙСУММСТРОКМАТРИЦЫA():")
Call BSUM(N, M, A, B)
‘ Осуществляется обращение к процедуре BSUM(N, M, A, B)
For I = 0 To N
Console.WriteLine("B({0})={1}", I, B(I))
Next I
Console.WriteLine("")
Console.WriteLine("МАССИВЗНАЧЕНИЙСУММСТОЛБЦОВМАТРИЦЫA():")
Call DSUM(N, M, A, D)
‘ Осуществляется обращение к процедуре DSUM(N, M, A, D)
For J = D.GetLowerBound(0) To M
Console.WriteLine("D({0})={1}", J, D(J))
Next J
Console.ReadLine()
EndSub
Function AMAXN(ByRef N As Integer, ByRef M As Integer, _
ByRef A(,) As Single) As Single
‘ Заголовок процедуры – функции AMAXN(N, M, A), при обращении к которой все аргументы (N, M, A) передаются по ссылке (ByRef), а сама функция возвращает в качестве результата вещественное число (Single)
Dim J As Integer
Dim MAX As Single
MAX = A(N, 0)
For J = 0 To M
If A(N, J) > MAX Then MAX = A(N, J)
NextJ
AMAXN = MAX
‘ Осуществляется формирование результирующего значения функции AMAXN
EndFunction
‘ окончание текста программы для процедуры – функции
Sub BSUM(ByRef N As Integer, ByRef M As Integer, _
ByRef A(,) As Single, ByRef B() As Single)
‘ Заголовок процедуры BSUM(N, M, A, B), при обращении к которой все аргументы (N, M, A, B) передаются по ссылке (ByRef)
Dim I, J As Integer
Dim S As Single
ForI = 0ToN
S = 0
‘ Переменной S присваивается начальное значение, равное 0.
For J = 0 To M
S = S + A(I, J)
‘ Значение переменной S увеличивается на величину, равную значению элемента A(I, J)
NextJ
B(I) = S
‘ Элементу B(I) массива B() присваивается значение переменной S.
NextI
EndSub
‘ окончание текста программы для процедуры BSUM(N, M, A, B)
Sub DSUM(ByRef N As Integer, ByRef M As Integer, _
ByRef A(,) As Single, ByRef D() As Single)
‘ Заголовок процедуры DSUM(N, M, A, D), при обращении к которой все аргументы (N, M, A, D) передаются по ссылке (ByRef)
Dim I, J As Integer
Dim S As Single
For J = A.GetLowerBound(1) To M
S = 0
‘ Переменной S присваивается начальное значение, равное 0.
For I = A.GetLowerBound(0) To N
S = S + A(I, J)
‘ Значение переменной S увеличивается на величину, равную значению элемента A(I, J)
NextI
D(J) = S
‘ Элементу D(I) массива D() присваивается значение переменной S.
NextJ
EndSub
‘ окончание текста программы для процедуры DSUM(N, M, A, D)
EndModule
‘ Конец программной секции, относящейся к категории программных модулей
4. Результатыработы программы аналогичны представленным на рис. 5.2.
Перечень вариантов заданий к лабораторной работе № 5
Вариант № 1
Дана матрица
А=
Определить количество отрицательных и положительных элементов.
Вариант № 2
Дана матрица. Определить сумму элементов, стоящих на главной и побочной диагоналях.
В=
Вариант № 3
Дана квадратная матрица М. Найти сумму и произведение элементов, попадающих в заданный интервал [a, b].
М=
Вариант № 4
Дана матрица. Найти сумму элементов первой строки и первого столбца.
Z=
Вариант № 5
Дана матрица В.Найти сумму элементов j-го столбца.
В=
Вариант № 6
Найти максимальный элемент матрицы и индексы максимального элемента.
Z=
Вариант № 7
Дана матрица
А=
Определить среднее арифметическое отрицательных и положительных элементов.
Вариант № 8
Дана матрица С. Найти сумму отрицательных элементов и количество положительных.
С=
Вариант № 9
Найти минимальный элемент матрицы и его индексы.
Z=
Вариант № 10
Дана матрица A. Получить новую матрицуВ, элементы которой определяются по формуле bij= А=
Вариант № 11
Дана квадратная матрица
Z=
Транспонировать матрицу, т. е. получить новую матрицу A, где столбцы матрицы Z является строками, а строки – столбцами.
Вариант № 12
Даны матрицы
X= Y=
Получить матрицу Z, элементы которой равны .
Вариант № 13
Дана единичная матрица E
E=
Найти элементы новой матрицы B, каждый из которых определяется условием:
bij=
Вариант № 14
Дана единичная матрица
Е=
Получить новую матрицу Z, каждый элемент которой определяется заданным условием:
zij=
Вариант № 15
Даны квадратные матрицыА, В, С второго порядка. Получить матрицу D, элементы которой равны dij= (aij+bij)*cij
A= B= C=
Вариант № 16
Дана квадратная матрица
Z=
Выбрать максимальный элемент в третьей строке, составить новую матрицу, каждый элемент которой равен соответствующему элементу матрицы Z, деленному на полученный максимальный элемент.
Вариант № 17
Дана матрицаА =
Найти векторВ, каждая компонента которого совпадает с произведением элементов соответствующей строки матрицы А. Вектор B вывести на экран в строку.
Вариант № 18
Даны две матрицы
X = Y =
Найти наибольший элемент среди элементов матрицX и Y.
Вариант № 19
Дана квадратная матрица А.
Получить матрицуВ, элементы которой определяются как bij= aij2 – i*j.
В матрице B найти минимальный элемент.
Вариант № 20
Дана квадратная матрица A =
Найти минимальный элемент, стоящий на главной диагонали (amin); получить новую матрицуВ, каждый элемент которой равен bij= aij + аmin.
Вариант № 21
Дана матрицаС =
Найти вектор К, каждая компонента которого равна количеству положительных элементов соответствующей строки матрицы С.
Вариант № 22
Дана квадратная матрицаZ
Найти максимальный элемент первой строки (zmax) и получить новую матрицу Y, каждый элемент которой равен yij= zij- zmax.
Вариант № 23
Дана квадратная матрица X =
Найти вектор Y, каждая компонента которого равна количеству отрицательных элементов соответствующего столбца матрицы X.
Вариант № 24
Даны две матрицы X и Y
Выбрать из них наименьший элемент.
Вариант № 25
Дана матрица
Выбрать наибольший элемент (max) и получить новую матрицуВ, каждый элемент которой равен bij= max - aij
Вариант № 26
Дана матрица Найти наименьший элемент матрицы (min) и получить новую матрицу D, каждый элемент которой равен .
Вариант № 27
Дана квадратная матрица М. Найти сумму элементов S, расположенных в заштрихованной части. Получить новую матрицуС, каждый элемент которой
Вариант № 28
Дана квадратная матрица С. Найти произведение элементов, расположенных в заштрихованной части матрицы. Подсчитать сколько элементов больше 5 в заштрихованной части матрицы.
С =
Вариант № 29
Дана матрица А. Получить матрицу В, элемент bij которой равен результату деления суммы элементов матрицы A, расположенных в заштрихованной области, на aij.
aij |
Вариант № 30
Дана квадратная матрица Z. Найти сумму элементов, расположенных в заштрихованной части матрицы.
Получить новую матрицуY, каждый элемент которой равен разности между найденной суммой и элементом матрицы Z.
Дата добавления: 2018-04-04; просмотров: 242; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!