Документ взят из кэша поисковой машины. Адрес оригинального документа : http://hist.msu.ru/Departments/Inf/Stud/les6.doc
Дата изменения: Tue Apr 7 05:38:28 2009
Дата индексирования: Tue Oct 2 01:53:09 2012
Кодировка: koi8-r

Занятие 6 (24 марта)
Часть 2 (методическая).
. Работа со списками
. Работа с клавиатурой
. Работа с массивами

Часть 3 (практикум).
. Упражнения 1-3
. Самостоятельная работа (задания 1-3)

Упражнение 1. Создание списка и заполнение его элементами массива
Создать форму со списком (Listbox) из двух столбцов, текстовым полем и
двумя командными кнопками. Одно кнопка служит для заполнения списка с
помощью генератора случайных чисел, вторая - для перестановки столбцов
списка. В текстовое поле выводится второй элемент первой строки списка.

Код 1
Private Sub CommandButton1_Click()
Dim Array1(4, 2) 'Массив содержит значения для ListBox
Dim i As Single
'Загрузка массива Array1
For i = 0 To 3
Array1(i, 0) = i
Array1(i, 1) = Int((Rnd * 10) + 1)
Next i
'Загрузка ListBox из массива Array1
ListBox1.List() = Array1
TextBox1.Text = ListBox1.List(0, 1) 'Выводит в текстовое поле 2-й элемент 1-
й строки
End Sub

Private Sub CommandButton2_Click()
'Перестановка столбцов 1 и 2
For i = 0 To 3
Temp = ListBox1.List(i, 0)
ListBox1.List(i, 0) = ListBox1.List(i, 1)
ListBox1.List(i, 1) = Temp
Next i
End Sub

Private Sub CommandButton3_Click()
With ListBox1
.ColumnCount = 2
.AddItem "Май"
.List(0, 1) = "Сессия"
.AddItem "Июнь"
.List(1, 1) = "Сессия"
.AddItem "Июль"
.List(2, 1) = "Каникулы"
.AddItem "Август"
.List(3, 1) = "Каникулы"
End With
End Sub
Упражнение 2. Одномерный массив
Дан одномерный массив A(1:M). Составить программу проверки на наличие хотя
бы одного повторяющегося элемента. После проверки выдать соответствующее
сообщение.
[pic]
Код 1
Option Base 1
Dim a() As Integer
Dim M, i, j, flag As Integer

Private Sub КнопкаВыход_Click()
End
End Sub

Private Sub КнопкаВвести_Click()
If TextBox1.Text = "" Then
MsgBox "Задайте размерность массива"
TextBox1.SetFocus
GoTo 10
End If
M = TextBox1.Text
flag = 0
ReDim a(M)
For i = 1 To M
a(i) = InputBox("введите " & i & " элемент", "Ввод элемента", "0")
Next i
10: End Sub

Private Sub Text1_Change()
M = Text1.Text
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub

Private Sub КнопкаПроверка_Click()
For i = 1 To M - 1
For j = i + 1 To M
If a(i) = a(j) Then
flag = 1
GoTo 30
End If
Next j
Next i
30: If flag = 0 Then
Label2.Caption = "Все элементы разные"
Else
Label2.Caption = "Есть одинаковые элементы"
End If
End Sub
Упражнение 3. Двумерный массив
Дан двумерный массив числовых значений A(N,M). Сформировать одномерный
массив, элементами которого являются суммы элементов каждой строки
исходного массива. Сформированный массив вывести на экран в столбец.
[pic]
Код 3
Option Base 1
Dim a() As Integer
Dim SUM() As Integer
Dim M, N, i, j As Integer

Private Sub КнопкаПреобразовать_Click()
ReDim SUM(M) ' Результирующий массив
For i = 1 To M
SUM(i) = 0
For j = 1 To N
SUM(i) = SUM(i) + a(i, j)
Next j, i
' Вывод элементов массива на экран
For i = 1 To M
ListBox1.AddItem SUM(i)
Next i
End Sub

Private Sub КнопкаВыход_Click()
End
End Sub

'Заполнение двумерного массива
Private Sub КнопкаВвести_Click()
If TextBox1.Text = "" Then
MsgBox "введите размерности массива"
TextBox1.SetFocus
GoTo 10
End If
If TextBox2.Text = "" Then
MsgBox "введите размерности массива"
TextBox2.SetFocus
GoTo 10
End If
ReDim a(M, N)
For i = 1 To M
For j = 1 To N
a(i, j) = InputBox("введите элемент " & i & "-й строки, " & j & _
"-го столбца ", "Ввод элемента", "0")
Next j
Next i
10 End Sub

Private Sub КнопкаОчистить_Click()
ListBox1.Clear
End Sub

Private Sub TextBox1_Change()
M = TextBox1.Text
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub

Private Sub TextBox2_Change()
N = TextBox2.Text
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub