8829
.pdfD(J) = 0 For I = 0 To N
D(J) = D(J) + A(I, J)
Next I
Console.WriteLine("D({0})={1}", J, D(J))
Next J
Console.ReadLine()
End Sub
‘ Конец текста программы головного модуля
EndModule
‘ Конец программной секции, относящейся к категории программных модулей
4. Результаты работы программы представлены на рис. 5.2.
Рис. 5.2. Скриншот результатов работы программы
Порядок выполнения работы (II-III уровни)
Задание II – III уровней требует использования в программе функции FUNCTION и/или процедуры SUB. Процедуры и функции применяются для выполнения повторяющихся задач и их можно вызывать из разных частей кода, поэтому их можно использовать в качестве элементарных структурных блоков при создании приложения. Структурирование кода с помощью процедур позволяют разбить программу на отдельные логические блоки. Отлаживать такие отдельные блоки легче, чем всю программу целиком. Кроме того, процедуры, разработанные для одной программы, можно в том же виде (или после внесения
незначительных изменений) использовать в другой программе. Это помогает избежать дублирования кода.
Процедура - это некий блок кода, который будет выполняться всякий раз при вызове этой процедуры. Каждая процедура начинается зарезервированным словом Sub и заканчивается End. Вот общий синтаксис процедуры:
Sub name [(список_аргументов)] [здесь некий код]
[Exit Sub]
[здесь тоже может быть некий код]
End Sub
Всѐ, что заключено в квадратные скобки - является необязательным. Процедура возвращает управление вызывающему коду после завершения работы оператором EndSub или Exit Sub (досрочный выход из процедуры).
В большинстве случаев процедуре необходимо работать с различными данными при каждом ее вызове. Можно передать эти сведения в процедуру как часть вызова процедуры. Процедура определяет ноль или более параметров, каждый из которых представляет значение, ожидаемое ею для приема. Каждому
параметру в определении процедуры |
соответствует аргумент в вызове |
|||
процедуры. Аргумент |
представляет |
значение, |
которое |
передается |
соответствующему параметру в вызове данной процедуры. Список аргументов представляет собой набор элементов, каждый из которых имеет следующий вид:
[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 и вывод сообщения на экран. Если количество параметров, передаваемых при вызове процедуры не совпадѐт с количеством параметров в объявлении процедуры, то Visual Basic сгенерирует ошибку.
Функция - это некий блок кода, который будет возвращать значение. Этим, и только этим функции отличаются от процедур. Общий синтаксис функции:
Function имя функции (список_аргументов)] [As type] [здесь некий код] [имяфункции = выражение]
[Exit Function]
[здесь тоже может быть некий код] [имяфункции = выражение]
End Function
Пример описания функции показан ниже:
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 = 0 ToN
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
Тема: Создание и оформление таблиц
Порядок выполнения работы
1.Введите заголовки колонок таблицы, начиная с ячейки А1. Шапка заголовков будет занимать две строки (см. рис.1.1), при необходимости используйте приемы объединения ячеек.
2.Оформите шапку заголовков таблицы по образцу, настроив ширину столбцов и высоту строк и используя приемы форматирования ячеек (перенос по словам, изменение ориентации текста); выделите текст заголовков полужирным начертанием.
|
|
Произведено |
Реализовано |
Остаток(шт.) |
|
Ри |
|||
|
|
|
с. |
||||||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
1.1 |
||
|
Наименование |
руб(Цена.) |
Количеств о .)шт( |
руб(Цена.) |
Количеств о .)шт( |
Сумма |
|||
Дата |
. |
||||||||
|
|
|
|
|
|||||
изделия |
|
|
|
|
|
выручки |
|||
|
|
|
|
|
|
3. З |
|||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
ап |
|
|
|
|
|
|
|
|
|
ол |
|
06.01.2005 |
Глушитель |
240 |
480 |
250 |
450 |
|
|
||
06.01.2005 |
Колесо |
370 |
150 |
380 |
150 |
|
|
ни |
|
06.01.2005 |
Корпус |
95 |
80 |
100 |
20 |
|
|
||
|
|
|
|||||||
10.01.2005 |
Диск |
65 |
60 |
70 |
55 |
|
|
те |
|
10.01.2005 |
Маховик |
90 |
350 |
98 |
300 |
|
|
ст |
|
19.01.2005 |
Фланец |
22 |
400 |
25 |
400 |
|
|
||
|
|
|
|||||||
19.01.2005 |
Опора оси |
185 |
430 |
200 |
380 |
|
|
ол |
|
22.01.2005 |
Болт |
17 |
180 |
18 |
180 |
|
|
||
|
|
|
|||||||
22.01.2005 |
Валик |
28 |
280 |
30 |
260 |
|
|
бе |
|
|
Итого: |
|
|
|
|
|
|
ц |
|
|
|
|
|
|
|
|
|
Дата, применяя для повторяющихся данных операцию копирования; установите
формат даты по образцу на рис.1.1.
4.Заполните ячейки таблицы исходными данными (см. рис.1.1).
5.Вставьте левее столбца Датановую колонку и озаглавьте еѐ № п/п.
6.Используя операцию автоматического заполнения блока ячеек таблицы числами, пронумеруйте строки (от 1 до 9) в колонке № п/п.
7.Перед строкой с номером 8 в колонке № п/п, вставьте пустую строку и
заполните еѐ данными 19.01.2005 Труба |
65 |
60 |
60. Соответственно |
исправьте нумерацию строк.
8.Используя операцию «Заменить» исправьте дату 19.01.2005 на 18.01.2005.
9.Вставьте формулы для расчета Остатка и Суммы выручки.
10.Перед столбцом Остаток вставьте колонку % реализованного товара и выполните расчѐт по формуле:
произведено
(% реализованного товара)= реализовано .
11.Установите процентный формат для чисел в колонке % реализованного
товара.
12.Округлите числа в колонке % реализованного товара до целых.
13.Обрамите таблицу: внутри тонкой линией, а вокруг двойной.
14.Установите денежный формат для чисел колонок Цена и Сумма
выручки.
15.Вставьте перед таблицей новую строку; введите в ячейку А1 заголовок таблицы Производственная деятельность предприятия и разместите его по центру таблицы.
16.Оформите строчку Итого, рассчитав итоговые суммы.
17.Сравните созданную Вами таблицу с приведѐнной ниже:
Производственная деятельность предприятия
|
|
|
Произведено |
Реализовано |
|
.) |
|
|||
|
|
|
|
|
|
|
|
|
||
|
|
|
руб(Цена.) |
Количество .)шт( |
руб(Цена.) |
Количество .)шт( |
% |
Остаток(шт |
|
|
№ |
Дата |
Наименование |
реализова |
Сумма |
||||||
|
|
|
|
|
||||||
п/п |
изделия |
|
|
|
|
нного |
|
выручки |
||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
товара |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
06.01.2005 |
Глушитель |
240,00р. |
480 |
250,00р. |
450 |
94% |
30 |
112500р. |
|
2 |
06.01.2005 |
Колесо |
370,00р. |
150 |
380,00р. |
150 |
100% |
0 |
57000р. |
|
3 |
06.01.2005 |
Корпус |
95,00р. |
100 |
65,00р. |
80 |
80% |
20 |
5200р. |
|
4 |
10.01.2005 |
Диск |
65,00р. |
60 |
70,00р. |
55 |
92% |
5 |
3850р. |
|
5 |
10.01.2005 |
Маховик |
90,00р. |
350 |
98,00р. |
300 |
86% |
50 |
29400р. |
|
6 |
19.01.2005 |
Фланец |
22,00р. |
400 |
25,00р. |
400 |
100% |
0 |
10000р. |
|
7 |
19.01.2005 |
Опора оси |
185,00р. |
430 |
200,00р. |
380 |
88% |
50 |
76000р. |
|
8 |
19.01.2005 |
Труба |
55,00р. |
60 |
65,00р. |
60 |
100% |
0 |
3900р. |
|
9 |
22.01.2005 |
Болт |
17,00р. |
190 |
18,00р. |
180 |
95% |
10 |
3240р. |
|
10 |
22.01.2005 |
Валик |
28,00р. |
280 |
30,00р. |
260 |
93% |
20 |
7800р. |
|
|
|
Итого: |
|
2500 |
|
2315 |
|
180 |
308890р. |
18.Выделите ячейки A1:J14 и скопируйте их на Лист2; выделите Лист1 и
скопируйте его на Лист3. Объясните различия в результатах копирования.
19.Оформите таблицу на Листе2, используя стандартные варианты оформления таблиц, предлагаемых в автоформате.
20.Скопируйте созданную таблицу на другой лист и отобразите еѐ в режиме формул, назовите лист Формулы.
21. Сохраните результаты работы.