Порядок выполнения работы (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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!