ЛЕКЦИЯ № 7
ПРОГРАММИРОВАНИЕ МНОГОМЕРНЫХ МАССИВОВ
Цель: научиться составлять программы с использованием многомерных массивов, а также вводить и выводить информацию с помощью файлов.
Частным случаем многомерных массивов является матрица или двумерный массив. При работе с двумерными массивами используются два индекса: первый указывает на номер строки, а второй определяет номер столбца таблицы. Рассмотрим двумерный массив, состоящий из ста элементов: десяти строк и десяти столбцов (см. таблицу ).
Таблица. Двумерный массив, содержащий десять строк и десять столбцов.
I\J |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
1 |
2 |
3 |
5 |
8 |
1 |
23 |
17 |
54 |
36 |
36.45 |
2 |
4 |
54 |
5 |
9 |
8 |
15 |
45 |
5.2 |
5.7 |
25.4 |
3 |
-8 |
5 |
76 |
43 |
76 |
12 |
45 |
32 |
4.5 |
2.1 |
4 |
-45 |
7 |
98.12 |
64 |
43 |
45 |
4 |
1 |
3 |
2 |
5 |
-2 |
7 |
-32 |
1 |
26 |
79 |
21 |
19 |
89 |
478 |
6 |
-7 |
0 |
-4 |
1 |
34 |
48 |
21 |
54 |
65 |
54 |
7 |
9 |
3 |
0 |
21 |
16 |
78 |
13 |
68 |
45 |
65 |
8 |
4 |
5 |
21.4 |
13 |
24 |
98 |
14 |
14 |
25 |
21 |
9 |
2 |
0 |
21.1 |
14 |
46 |
-72 |
-4 |
-9 |
134 |
12 |
10 |
8 |
7 |
12 |
14 |
-78 |
-98 |
-4 |
12 |
12 |
32 |
Ввод двумерного массива целесообразно осуществлять из файла, так как при отладке программы экономится время на ввод значений элементов массива. В качестве примера напишем программу, осуществляющую ввод значений элементов массива и отображающую ее в элементе MSFlexGrid. Создайте текстовый файл в текстовом редакторе Блокнот, который содержит приведенную выше таблицу (см. рис.). Приложение будет содержать систему меню. В пункте меню File будут находиться подпункты Open… - для открытия файла, Save As… для сохранения файлов и Exit для выхода из программы. Меню в Visual Basic создается с помощью редактора меню. Выберите пункт меню Visual Basic Tools, а в выпадающем меню подпункт Menu Editor… На экране появится окно редактора меню (см. рис. 27).
Рис. 27. Окно редактора меню.
Рассмотрим основные поля и клавиши редактора. Свойство Caption отображает на экране пункт меню, а свойство Name присваивает имя пункту меню. Поле Shortcut позволяет установить «горячие клавиши» для пункта меню. Для создания подпункта меню, необходимо нажать на стрелку вправо, расположенную рядом с клавишами Next, Insert и
Delete.
Создадим меню нашего приложения. Для создания меню выполните следующие действия:
1. В поле Caption введите File.
2. В поле Name введите mnuFile. Префикс mnu говорит программисту о том, что этот объект является пунктом меню.
3. Нажмите кнопку Next. Затем, для того чтобы создать подпункт меню, нажмите на кнопку .
4. В поле Caption наберите Open…, а в поле Name nmuOpen. Нажмите на кнопку Next.
5. В поле Caption введите Save As…, в качестве имени подпункта меню введите mnuSave.
6. Для того чтобы отделить пункты меню от выхода из программы, необходимо поставить разделитель. Для этого в поле Caption наберите знак -, а в поле Name введите mnuSep (от английского Separation - разделение), затем, нажмите кнопку Next.
7. И, наконец, добавьте последний пункт меню. В поле Caption введите Exit, а в поле Name введите mnuExit. В результате окно редактора меню должно выглядеть примерно так как показано на рисунке 28.
Рис. 28. Вид окна редактора меню.
8. Нажмите на кнопку Ok.
Пункты меню, так же как и командные кнопки обладают событием Click. Поэтому с ними можно работать также как и с кнопками.
Наша программа будет производить следующие действия: вводить двумерный массив из текстового файла, выводить его в MSflexGrid и в файл. Форма приложения приведена на рисунке 29.
Рис. 29. Изображение формы приложения с выпадающим меню.
Программный код приложения приведен ниже:
Dim a() As Single, n As Integer, m As Integer
Private Sub mnuExit_Click()
End
End Sub
Private Sub mnuOpen_Click()
Dim s As String, i As Integer, j As Integer CommonDialog1.Action = 1 s = CommonDialog1.FileName
Open s For Input As #1
Input #1, n, m
ReDim a(1 To n, 1 To m) As Single
For i = 1 To n
For j = 1 To m
Input #1, a(i, j)
Next j
Next i
Close #1
End Sub
Private Sub mnuSave_Click()
Dim s As String, i As Integer, j As Integer CommonDialog1.Action = 2 s = CommonDialog1.FileName
Open s For Output As #1
With MSFlexGrid1
.Rows = n + 1
.Cols = m + 1
For i = 1 To n
.Col = 0
.Row = i
.Text = CStr(i)
For j = 1 To m
.Row = 0
.Col = j
.Text = CStr(j)
.Row = i
.Text = CStr(a(i, j))
Print #1, a(i, j); " ";
Next j
Print #1, ""
Next i
Close #1
End With
End Sub
Приведенный выше программный код требует пояснений. В нем используется оператор With…End With. Данный оператор позволяет обращаться к свойствам объекта, описанного после ключевого слова With. Оператор заканчивается ключевым словом End With. Между ключевыми словами With и End With записываются свойства объекта, перед которыми ставится точка.
Рассмотрим еще один пример работы с двумерными массивами. Создадим программу, определяющую наименьшие элементы строк двумерного массива, и записывающую их в одномерный массив. Форма приложения будет содержать два текстовых окна Text1 и Text2, куда будут выводиться соответственно одномерный и двумерный массивы. Ввод двумерного массива будет осуществляться из файла, а вывод одномерного массива только в текстовое окно. Форма приложения в момент выполнения представлена на рисунке
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.