Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УчебноеПособие по VB_6.doc
Скачиваний:
57
Добавлен:
24.12.2018
Размер:
3.17 Mб
Скачать

3.3.3. Операции с массивами

Массивы широко используются для хранения данных. При работе с файлами данных, вводе и выводе информации удобнее всего записывать данные предварительно в массив. Одной из операций с массивами является сортировка данных.

Известно много различных способов сортировки массивов. Однако, независимо от используемого способа в программе осуществляется сравнение текущего элемента массива с другим элементом этого же массива и, в зависимости от результатов сравнения, осуществляется обмен данными между этими элементами. К сожалению, в VB 6 нет одной полезной функции Swap, которая была в других версиях языка Бейсик. Эта функция была предназначена для обмена значениями двух переменных. Такую функцию можно создать самим. Принцип работы функции обмена двух переменных данными показан на рис. 3.12.

Функция обмена двух переменных данными

Sub Swap(A As Variant, B As Variant)

Dim Temp As Variant

Temp = A

A = B

B = Temp

End Sub

Сортировка массивов

Самая простая процедура сортировки – перебор.

Sub SortMassiv(Massiv() As Variant)

Dim i As Integer, j As Integer

For i = LBound(Massiv) To UBound(Massiv) - 1

For j = i + 1 To UBound(Massiv)

If Massiv(j) < Massiv(i) Then

Swap Massiv(i), Massiv(j)

End If

Next j

Next i

End Sub

Вызывающую программу можно оформить следующим образом

Dim OldMassiv(5 To 10) As Variant, NewMassiv() As Variant

---------------------------------------------------------------------------------

Private Sub Form_Click()

Cls

Dim i As Integer

VvodMassiv1 OldMassiv

ReDim NewMassiv(LBound(OldMassiv) To UBound(OldMassiv)) As Variant

NewMassiv = OldMassiv

SortMassiv NewMassiv()

For i = LBound(OldMassiv) To UBound(OldMassiv)

Print OldMassiv(i), NewMassiv(i)

Next i

End Sub

В этой процедуре для сохранения исходного массива введен массив NewMassiv. Сортируется новый массив. На печать выводятся оба массива.

Доработаем процедуру сортировки массива так, чтобы сортировка массива могла происходить в произвольном порядке. Для этого введем три переключателя Option1 – по возрастанию, Option2 – по убыванию, Option3 – не сортировать (рис. 3.13), которые устанавливаются пользователем. Переключатели могут иметь два состояния: включен – True и выключен - False. Причем если один из переключателей включен, то два другие переключателя будут выключены. Начальная установка производится при разработке программы.

Sub SortMassiv1(Massiv() As Variant)

Dim i As Integer, j As Integer

For i = LBound(Massiv) To UBound(Massiv) - 1

For j = i + 1 To UBound(Massiv)

If Option1 Then

If Massiv(j) < Massiv(i) Then

Swap Massiv(i), Massiv(j)

End If

ElseIf Option2 Then

If Massiv(j) > Massiv(i) Then

Swap Massiv(i), Massiv(j)

End If

Else

Exit Sub

End If

Next j

Next i

End Sub

При запуске программы переключатели устанавливаются в состояние, указанное при разработке программы.

В качестве переключателей можно использовать элемент управления OptionsButton.

Этот элемент управления может быть снят или установлен. В группе может быть установлен только один переключатель.

Важнейшим событием для переключателя является событие Click. При щелчке мышью по переключателю меняется значение его свойства Value. Свойство Value может принимать три значения: 0 - не отмечен, 1 – отмечен, 2 – отмечен, но не доступен. Последнее значение может быть установлено только программным путем. Например, Option1.Value = 2. Объединить объекты в группу можно с помощью рамки (Frame), которая обладает свойством контейнера. Свойство Value объекта OptionsButton используется по умолчанию, поэтому при обращении к этому свойству указывать его не обязательно, достаточно указать объект, поэтому выражения If Option1.Value Then … и If Option1 Then … эквивалентны.