Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Порядок выполнения работы (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. Глобальная блок-схема.
Рис. 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.
Вариант № 30 Дана квадратная матрица Z. Найти сумму элементов, расположенных в заштрихованной части матрицы.
Получить новую матрицуY, каждый элемент которой равен разности между найденной суммой и элементом матрицы Z.
|
||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 229. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |