- •Министерство образования и науки Российской Федерации
- •Основы проектирования консольных приложений на языке Visual Basic
- •Требования к выполнению работ
- •Лабораторная работа №1
- •Задания
- •Порядок выполнения работы
- •Лабораторная работа №2
- •Задание (1 уровень)
- •Задание (2 уровень)
- •Задание (3 уровень)
- •Порядок выполнения работы первого уровня
- •Пояснения
- •Пояснения
- •Пояснения к выполнению задания второго уровня
- •Лабораторная работа №3
- •Задание (1 уровень)
- •Задание (2 уровень)
- •Задание (3 уровень)
- •Порядок выполнения задания (1 уровень)
- •Пояснения к выполнению задания второго уровня
- •Пояснения к выполнению задания третьего уровня
- •Лабораторная работа №4
- •Порядок выполнения работы (2 уровень)
- •Лабораторная работа №5
- •Порядок выполнения работы (II-III уровни)
- •Перечень вариантов заданий к лабораторной работе № 5
- •Список рекомендованной литературы
- •1. Зиборов в. Visual Basic 2010 на примерах / в. Зиборов - сПб: бхв-Петербург, 2010. - 336 с.
- •Содержание
Лабораторная работа №5
Тема: Двумерные массивы. Подпрограммы: внешние функции и процедуры.
Цель работы: овладеть навыками программирования с использованием двумерных массивов; научиться основам модульного программирования.
Задание
I уровень (варианты №№ 1 - 9 из Перечня вариантов)
Составить блок-схему выполнения задания (без подпрограмм).
Написать программу в соответствии с блок – схемой.
Выполнить программу и получить результаты.
II уровень (варианты №№ 10 - 26 из Перечня вариантов)
Составить блок-схему алгоритма преобразования матрицы двумя модулями: головным модулем и процедурой SUB, или головным модулем и модулем-функцией FUNCTION.
Написать программу в соответствии с блок – схемой.
Выполнить программу и получить результаты.
III уровень (варианты №№ 27 - 30 из Перечня вариантов)
Составить блок-схему алгоритма преобразования матрицы тремя модулями: головным модулем, модулем-функцией FUNCTION и процедурой SUB .
Написать программу в соответствии с блок – схемой.
Выполнить программу и получить результаты.
Пример:
Дана матрица A(N,M).
1. Найти наибольший элемент в последней строке матрицы A.
2. Определить массив B(N), элементы которого равны суммам соответствующих строк матрицы A.
3. Определить массив D(M), элементы которого равны суммам соответствующих столбцов матрицы A.
Порядок выполнения работы (I уровень)
1. Входные данные:
(N+1) – количество строк матрицы A, (M+1) – количество столбцов матрицы A,
A(,) – двумерный массив из (N+1)*(M+1) элементов.
Выходные данные:
AMAXN - наибольший элемент в последней строке матрицы A, B() - массив, элементы которого равны суммам соответствующих строк матрицы A, D() - массив, элементы которого равны суммам соответствующих столбцов матрицы A.
2. Блок-схема (рис. 5.1)
Рис. 5.1. Блок – схема программы
3. Текст программы:
Module Module1
‘ Заголовок программной секции, относящейся к категории программных модулей
Sub Main()
‘ Заголовок программной секции, относящейся к категории головного модуля программы
Dim N, M, I, J As Integer
Dim A(,) As Single = {{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)
‘ Вывод значений параметров N и M
Console.WriteLine("Количество строк матрицы A равно N+1={0}", N + 1)
Console.WriteLine("Количество столбцов матрицы A равно M+1={0}", M + 1)
‘Количество строк и столбцов матрицы A равны, соответственно, N+1 и M+1, так как стандартная нумерация элементов ведется для строк с 0 до N-1, для столбцов – с 0 до M-1.
Dim B(N), D(M) As Single
Dim Z As Single
Dim AMAXN As Single
I = 0 : AMAXN = A(N, I)
‘ Параметру AMAXN присваивается начальное значение, равное значению элемента матрицы A(,), расположенному в N-ой строке и 0-ом столбце
For I = 0 To M
If AMAXN < A(N, I) Then AMAXN = A(N, I)
Next I
Console.WriteLine("")
Console.WriteLine("НАИБОЛЬШИЙ ЭЛЕМЕНТ ПОСЛЕДНЕЙ СТРОКИ AMAXN ={0}", AMAXN)
Console.WriteLine("")
Console.WriteLine("МАССИВ ЗНАЧЕНИЙ СУММ СТРОК МАТРИЦЫ A():")
For I = 0 To N
B(I) = 0
For J = 0 To M
B(I) = B(I) + A(I, J)
Next J
Console.WriteLine("B({0})={1}", I, B(I))
Next I
Console.WriteLine("")
Console.WriteLine("МАССИВ ЗНАЧЕНИЙ СУММ СТОЛБЦОВ МАТРИЦЫ A():")
For J = 0 To M
D(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
‘ Конец текста программы головного модуля
End Module
‘ Конец программной секции, относящейся к категории программных модулей
4. Результаты работы программы представлены на рис. 5.2.
Рис. 5.2. Скриншот результатов работы программы