Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по Visual Basic.doc
Скачиваний:
51
Добавлен:
31.08.2019
Размер:
10.63 Mб
Скачать

2. Массивы с фиксированной границей и динамические массивы.

Массивы, которые содержат строго определенное количество элементов, называются массивами с фиксированной границей. Массивы, которые содержат переменное количество элементов (т.е. размеры которых могут изменяться в процессе выполнения программы) называются динамическими.

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

Динамический массив создается в следующей последовательности:

1. С помощью ключевых слов, используемых при создании массива фиксированного размера, объявляется массив. Список размерности массива остается пустым, например:

Dim MyArray () As Integer

2. С помощью оператора ReDim указывается размерность массива в виде числа или выражения. Синтаксис оператора ReDim аналогичен синтаксису оператора объявления массива фиксированного размера. Например, размерность массива может быть задана любым из следующих способов:

ReDim MyArray (x)

ReDim MyArray (20)

ReDim MyArray (1 To 20)

Команда ReDim не только изменяет размер массива, но и удаляет из него все старые значения. Это удобно в том случае, если данные больше не нужны и требуется переопределить размерность массива и подготовить его для размещения новых данных.

Чтобы старые значения сохранить, используется ключевое слово Preserve:

ReDim Preserve MyArray (7)

Однако, если новый размер массива меньше, чем количество помещенных в него элементов, слово Preserve не поможет - часть данных все равно будет потеряна.

Массивы можно создавать и заполнять одновременно при помощи встроенной функции Array():

Dim MyArray

MyArray = Array(100, 200, 300, 400, 500)

Указывать размер массива необязательно - он будет автоматически настроен в соответствии с количеством передаваемых элементов.

Очистить массив можно командой Erase:

Erase MyArray

Массив фиксированной длины просто очищается, динамический массив разинициализируется - его придется инициализировать (определять размер) заново.

В динамических массивах часто неизвестно, сколько элементов в массиве. Для определения количества элементов используется функция UBound() (если массив одномерный или программиста интересует размер первого измерения, то измерение передавать не надо):

UBound (имяМассива [, измерение]) Практическая часть

Задание 1. Заполнение массива.

Постановка задачи.

Разработать приложение, которое позволяет заполнить массив путем вода чисел с клавиатуры. Примерный результат работы программы – на Рис.9.1.

Ход работы.

  1. Создайте папку Лабораторная_работа_№9, а в ней папку 9.1.

  2. Запустите программу Microsoft Visual Basic 6.0.

  3. В появившемся окне выберите тип приложения STANDARD.exe и нажмите кнопку «Открыть».

  4. Расположите на форме 2 компонента CommandButton, 2 компонента TextBox и 2 компонента Label.

  5. Установите свойства компонентов согласно Таблице 9.1 или ориентируясь на внешний вид приложения, представленный на Рис.9.1.

Таблица 9.1 – Значения свойств компонентов приложения «Заполнение массива»

Компонент

Свойство

Значение

Form1

Caption

Заполнение одномерного массива

Name

frmМассив

MinButton, MaxButton

False

Command1

Caption

Заполнение массива

Name

cmdЗаполнение

Command2

Caption

Очистить

Name

cmdОчистка

TextBox1

Text

Name

txtN

TextBox2

Text

Name

txtМассив

ScrollBars

2 – Vertical

Multiline

True

Label1

Caption

Количество элементов массива

Label2

Caption

Исходный массив

Для всех компонентов свойство Font и Color – по своему усмотрению

У компонентов CommandButton свойство Style = 1 Graphical

  1. Напишите обработчик события по кнопке «Заполнение массива», не забывая объявить переменные в начале программы. После знаков апострофов приведены необходимые комментарии.

Dim a() As Single ' Массив объявлен как динамический

Dim K As String 'строковое числовое данное, введенное в окно InputBox

Dim n As Integer ' n - количество элементов в массиве

Dim i As Integer ' i - счетчик цикла

Private Sub CmdЗаполнить_Click()

n = Val(txtN.Text) ' Вводим количество элементов в массиве

ReDim a (1 To n) ' переопределение массива

txtМассив.Text = ""

For i = 1 To n

K = InputBox("Введите "+Str(i) + " число", "Заполнение массива")

a(i) = Val(K)

txtМассив.Text = txtМассив.Text + " " + Str(a(i))

N ext i

End Sub

  1. Напишите самостоятельно обработчик события Click для кнопки «Очистить», используя навыки, полученные при выполнении предыдущих лабораторных работ.

  2. Сохраните проект (выбрав File–Save frmМассив.frm и Save Массив.vbp) в папке 9.1.

  3. Проверьте работоспособность проекта, запустив его на выполнение. Примерный вид приложения во время работы приведен на Рис.9.2.

  4. Создайте exe-файл программы с помощью команды File Make Массив.exe.

  5. Выйдите из среды Visual Basic.

  6. Запустите на выполнение файл Массив.exe и убедитесь, что проект работает автономно, как любые другие Windows-приложения

Задание 2. Заполнение массива произвольными числами.

Постановка задачи.

Разработать приложение, которое позволяет заполнить массив случайными целыми числами в диапазоне от 0 до 100.

Ход работы.

  1. Создайте в папке Лабораторная_работа_№9 папку 9.2.

  2. Запустите программу Microsoft Visual Basic 6.0.

  3. В появившемся окне выберите тип приложения STANDARD.exe и нажмите кнопку «Открыть».

  4. Расположите на форме 2 компонента CommandButton, 2 компонента TextBox и 2 компонента Label.

  5. Присвойте свойству Name формы значение frmМассив2.

  6. Остальные свойства формы и компонентов оставьте такими же, как в задаче 9.1. Внешний вид формы может остаться таким же, как и в предыдущем задании.

  7. Напишите обработчик события по кнопке «Заполнение массива», не забывая объявить переменные в начале программы. После знаков апострофов приведены необходимые комментарии.

Dim a() As Single ' Массив объявлен как динамический

Dim n As Integer ' n - количество элементов в массиве

Dim i As Integer ' i - счетчик цикла

Private Sub CmdЗаполнить_Click()

n = Val(txtN.Text) ' Вводим количество элементов в массиве

ReDim a (1 To n) ' переопределение массива

txtМассив.Text = ""

Randomize Timer

For i = 1 To n

a(i) = Int(101*Rnd())

txtМассив.Text = txtМассив.Text + " " + Str(a(i))

Next i

End Sub

  1. Напишите самостоятельно обработчик события Click для кнопки «Очистить», используя навыки, полученные при выполнении предыдущих лабораторных работ.

  2. Сохраните проект (выбрав File–Save frmМассив2.frm и Save Массив2.vbp) в папке 9.2.

  3. Проверьте работоспособность проекта, запустив его на выполнение.

  4. Создайте exe-файл программы с помощью команды File Make Массив2.exe.

  5. Выйдите из среды Visual Basic.

  6. Запустите на выполнение файл Массив2.exe и убедитесь, что проект работает автономно, как любые другие Windows-приложения

Задание 3. Заполнение массива и работа с его элементами.

Постановка задачи.

Разработать приложение, которое:

1) позволяет заполнить массив двумя способами:

- случайными целыми числами в диапазоне, указанном пользователем;

- путем ввода чисел с клавиатуры (не обязательно целых).

2) выполнять с элементами массива различные действия: нахождение максимального и минимального элементов, вычисление суммы элементов и среднего арифметического элементов, а также сортировку по возрастанию и убыванию. Примерный результат работы программы – на Рис.9.3.

Ход работы.

  1. Создайте в папке Лабораторная_работа_№9 папку 9.3.

  2. Запустите программу Microsoft Visual Basic 6.0.

  3. В появившемся окне выберите тип приложения STANDARD.exe и нажмите кнопку «Открыть».

  4. Расположите на форме 8 компонентов CommandButton, 4 компонента TextBox, 1 компонент ComboBox, 11 компонентов Label, 1 компонент Check.

  5. Установите свойства компонентов согласно Таблице 9.2 или ориентируясь на внешний вид приложения, представленный на Рис.9.3 – 9.6 во время этапов проектирования и работы.

Таблица 9.2 – Значения свойств компонентов приложения «Обработка массива»

Компонент

Свойство

Значение

Form1

Caption

Обработка массива

Name

frmМассив3

MinButton, MaxButton

False

Command1

Caption

Заполнение массива

Name

cmdЗаполнение

Command2

Caption

Очистить

Name

cmdОчистка

Command3

Caption

Максимальный элемент

Name

cmdMax

Command4

Caption

Минимальный элемент

Name

cmdMin

Command5

Caption

Сумма элементов

Name

cmdSum

Command6

Caption

Среднее арифметическое

Name

cmdSrednee

Command7

Caption

Сортировка по возрастанию

Name

cmdVozr

Продолжение таблицы 9.2

Command8

Caption

Сортировка по убыванию

Name

cmdUbiv

TextBox1

Text

Name

txtN

TextBox2

Text

Name

txtМассив

ScrollBars

2 – Vertical

Multiline

True

TextBox3

Text

Name

txtX

Visible

False

TextBox4

Text

Name

txtY

Visible

False

ComboBox1

Name

cboСпособ

Text

List

Ввод с клавиатуры

Случайные числа

Случайные числа в указанном диапазоне

Label1

Caption

Введите количество элементов массива

Label2

Caption

Исходный одномерный массив

Label3

Caption

Выберите способ заполнения массива

Label4

Caption

Введите начальное значение диапазона

Visible

False

Label5

Caption

Введите конечное значение диапазона

Visible

False

Label6..11

Caption

Check1

Caption

Целые числа

Name

chkЦелые

Visible

False

Для всех компонентов свойство Font и Color – по своему усмотрению

У компонентов CommandButton свойство Style = 1 Graphical

У компонентов Text1, Text2,ComboBox1,CommandButton1, Label1, Label2 и Label3 свойство Enabled = true, у остальных = false

  1. О бъявите переменные в разделе глобальных переменных. После знаков апострофов приведены необходимые комментарии.

Dim a() As Single ' Объявляем динамический массив

Dim k As String 'строковое числовое данное, введенное в окно InputBox

Dim n As Integer ' n - количество элементов в массиве

Dim i As Integer ' i - счетчик цикла

Dim Max As Single ' переменная для максимального элемента

Dim Min As Single ' переменная для минимального элемента

Dim nMax As Integer ' переменная для номера максимального элемента

Dim nMin As Integer ' переменная для номера минимального элемента

Dim ListIndex As Integer ' переменная для индекса списка

Dim Srednee As Single ' переменная для среднего арифметического элементов

Dim Sum As Single ' переменная для суммы элементов

Dim x As Integer ' переменная для начального значения диапазона

Dim y As Integer ' переменная для конечного значения элемента

Dim m As Integer ' переменная, используемая для сортировки

Dim R As Integer ' переменная, используемая для сортировки

  1. Напишите обработчик события Click для комбинированного списка.

Private Sub cboСпособ_Click()

If cboСпособ.ListIndex = 1 Then 'если выбран пункт "Случайные числа"

chkЦелые.Visible = True

chkЦелые.Enabled = True

End If

If cboСпособ.ListIndex = 2 Then 'если выбран пункт "Случайные числа в указанном диапазоне"

txtX.Visible = True

txtY.Visible = True

Label4.Visible = True

Label5.Visible = True

chkЦелые.Visible = True

chkЦелые.Enabled = True

End If

End Sub

  1. Разберитесь в приведенном ниже коде обработчика события Click для кнопки «Заполнение массива», а затем наберите его:

Private Sub cmdЗаполнение_Click()

Label2.Visible = True

txtМассив.Visible = True

cmdОчистка.Enabled = True

cmdMax.Enabled = True

cmdMin.Enabled = True

cmdSrednee.Enabled = True

cmdSum.Enabled = True

cmdVozr.Enabled = True

cmdUbiv.Enabled = True

n = Val(txtN.Text) ' количество элементов массива

ReDim a(1 To n) 'переопределение массива

Select Case cboСпособ.ListIndex 'выбрать действия в зависимости от значения списка

Case 0 'если выбран пункт "Ввод с клавиатуры", то

txtМассив.Text = ""

For i = 1 To n

k = InputBox("Введите " + Str(i) + " число", "Заполнение массива")

a(i) = Val(k)

txtМассив.Text = txtМассив.Text + " " + Str(a(i))

Next i

Case 1 'если выбран пункт "Случайные числа", то

txtМассив.Text = ""

Randomize Timer

For i = 1 To n

If chkЦелые.Value = 1 Then

a(i) = Int(101 * Rnd())

Else

a(i) = 101 * Rnd()

End If

txtМассив.Text = txtМассив.Text + " " + Str(a(i))

Next i

Case 2 'если выбран пункт "Случайные числа в указанном диапазоне", то

txtМассив.Text = ""

x = Val(txtX.Text)

y = Val(txtY.Text)

Randomize Timer

For i = 1 To n

If chkЦелые.Value = 1 Then

a(i) = Int((Rnd() * (y - x + 1) + x))

Else

a(i) = Rnd() * ((y - x + 1) + x)

End If

txtМассив.Text = txtМассив.Text + " " + Str(a(i))

Next i

End Select

End Sub

  1. Напишите обработчик события по кнопке «Очистить», предварительно проанализировав приведенный ниже программный код:

Private Sub cmdОчистка_Click()

txtX.Text = ""

txtY.Text = ""

txtМассив.Text = ""

txtN.Text = ""

cboСпособ.ListIndex = -1

txtX.Visible = False

txtY.Visible = False

Label4.Visible = False

Label5.Visible = False

chkЦелые.Enabled = False

chkЦелые.Visible = False

Label2.Visible = False

txtМассив.Visible = False

cmdОчистка.Enabled = False

cmdMax.Enabled = False

cmdMin.Enabled = False

cmdSrednee.Enabled = False

cmdSum.Enabled = False

cmdVozr.Enabled = False

cmdUbiv.Enabled = False

Label6.Caption = ""

Label7.Caption = ""

Label8.Caption = ""

Label9.Caption = ""

Label10.Caption = ""

Label11.Caption = ""

End Sub

  1. Сохраните проект (выбрав File–Save frmМассив3.frm и Save Массив3.vbp) в папке 9.3.

  2. Проверьте работоспособность проекта, запустив его на выполнение. Примерный вид приложения во время работы приведен на Рис.9.4 – 9.6.

  3. Создайте exe-файл программы с помощью команды File Make Обработка массива.exe.

Принцип поиска максимального элемента заключается в сравнении каждого элемента массива со значением в переменной Max и запоминанием в нем элемента, который оказался больше значения Max. Для корректного первого сравнения в качестве начального значения Max можно использовать первый элемент массива, тогда сравнения в цикле начинаются с i = 2. При поиске максимального значения среди элементов массива, удовлетворяющих некоторому условию, например, среди только отрицательных элементов, нельзя в качестве Max использовать первый элемент массива, т.к. A(1) не может быть отрицательным.

  1. Напишите обработчик события для кнопки «Максимальный элемент»:

Private Sub cmdMax_Click()

Max = a(1)

nMax = 1

For i = 2 To n

If a(i) > Max Then

Max = a(i)

nMax = i

End If

Next i

Label6.Caption = "Максимальный элемент: " + Str(Max) + ". Его номер = " + Str(nMax)

End Sub

  1. Проверьте работоспособность написанного кода программы для кнопки «Максимальный элемент».

  2. Напишите самостоятельно обработчик щелчка мыши по кнопке «Минимальный элемент», используя в качестве аналога обработчик щелчка мыши по кнопке «Максимальный элемент».

  3. Напишите обработчик события Click для кнопки «Сумма элементов», используя оператор цикла:

Private Sub cmdSum_Click()

Sum = 0

For i = 1 To n

Sum = Sum + a(i)

Next

Label8.Caption = "Сумма всех элементов = " + Str(Sum)

End Sub

  1. Напишите самостоятельно обработчик события Click для кнопки «Среднее арифметическое», используя оператор цикла и ориентируясь на программный код для кнопки «Сумма элементов».

Сортировка – процедура, часто встречающаяся при программировании массивов. Наиболее распространенные методы сортировки – сортировка методом «пузырька» и методом «выборки». В данном приложении воспользуемся первым методом. Подробно описание различных методов находится в соответствующей лекции.

  1. Напишите обработчик щелчка мыши по кнопке «Сортировка по возрастанию» (после апострофов приведены необходимые комментарии):

Private Sub cmdVozr_Click()

For i = 1 To n 'цикл по числу элементов

nMin = i 'начальный номер элемента для переборки

For m = i + 1 To n 'цикл для нахождения min элемента

If a(m) < a(nMin) Then

nMin = m

End If

R = a(nMin)

a(nMin) = a(i)

a(i) = R

Next

Label10.Caption = Label10.Caption + Str(a(i)) + " "

Next

End Sub

  1. Обработчик щелчка мыши по кнопке «Сортировка по убыванию» напишите самостоятельно, ориентируясь на программный код для кнопки «Сортировка по возрастанию».

  2. Сохраните изменения в проекте и перезапишите exe-файл Обработка массива.exe.

  3. Выйдите из среды Visual Basic.

  4. Запустите на выполнение файл Обработка массива.exe и убедитесь, что проект работает автономно, как любые другие Windows-приложения.

Задание 4. Добавление элементов в массив.

Постановка задачи.

Разработать приложение, которое позволяет включить элемент в заданную позицию массива. Массив заполнить случайными целыми числами в диапазоне от 0 до 100. Примерный вид работающего приложения представлен на Рис.9.7.

Ход работы.

  1. Создайте в папке Лабораторная_работа_№9 папку 9.4.

  2. Запустите программу Microsoft Visual Basic 6.0.

  3. В появившемся окне выберите тип приложения STANDARD.exe и нажмите кнопку «Открыть».

  4. Расположите на форме 2 компонента CommandButton, 4 компонента TextBox, 2 компонента Line и 4 компонента Label.

  5. Установите свойства компонентов согласно Таблице 9.3 или ориентируясь на Рис.9.7.

Таблица 9.3 – Свойства компонентов приложения «Добавление элемента»

Компонент

Свойство

Значение

Form1

Caption

Добавление элемента в массив

Name

frmДобавление

MinButton, MaxButton

False

Icon

Загрузите любое графическое изображение формата *.ico

Command1

Caption

Генерация массива

Name

cmdГенерация

Command2

Caption

Добавить элемент

Name

cmdДобавить

Label1

Caption

Исходный массив

Label2

Caption

Добавить элемент

Label3

Caption

В позицию

Label4

Caption

Новый массив

TextBox1

Text

Name

txtИсходный

Multiline

True

ScrollBars

1 - Horizontal

TextBox2

Text

Name

txtElement

Продолжение таблицы 9.3

TextBox3

Text

Name

txtPosition

TextBox4

Text

Name

txtНовый

Multiline

True

ScrollBars

1 - Horizontal

Для всех компонентов свойство Font и Color – по своему усмотрению

У компонентов CommandButton свойство Style = 1 Graphical

  1. Напишите обработчик события по кнопке «Генерация массива», не забывая объявить переменные в начале программы. После знаков апострофов приведены необходимые комментарии.

Dim A() As Integer ' Массив объявлен как динамический

Dim n As Integer ' n - количество элементов в массиве

Dim i As Integer ' i - счетчик цикла

Dim j As Integer

Dim k As Integer

Dim Элемент As Integer ' элемент, который добавляется в массив

Dim Позиция As Integer ' позиция добавления

Private Sub CmdГенерация_Click()

n = Val(InputBox("Количество элементов в массиве","Количество элементов в массиве")) ' Вводим количество элементов в массиве

ReDim a (1 To n+1) ' переопределение массива. Количество элементов n+1

For i = 1 To n

a(i) = Int(Rnd()*101)

txtИсходный.Text = txtИсходный.Text + " " + Str(a(i))

Next i

End Sub

  1. Напишите обработчик события Click для кнопки «Добавить элемент», предварительно проанализировав приведенный ниже программный код:

Private Sub CmdДобавить_Click()

Элемент = Val(txtElement.Text)

Позиция = Val(txtPosition.Text)

For j = n To Позиция Step -1 ' перед добавлением элемента необходимо раздвинуть

' массив, т.е. сдвинуть конец массива на 1 позицию

' перемещение элементов нужно начинать с конца

a(j+1) = a(j)

Next j

A(Позиция) = Элемент

For k = 1 To n+1

txtНовый.Text = txtНовый.Text + Str(a(k)) + " "

Next k

End Sub

  1. Сохраните проект (выбрав File–Save frmДобавление.frm и Save Добавление.vbp) в папке 9.4.

  2. Проверьте работоспособность проекта, запустив его на выполнение.

  3. Создайте exe-файл программы с помощью команды File Make Добавление в массив.exe.

  4. Выйдите из среды Visual Basic.

  5. Запустите на выполнение файл Добавление в массив.exe и убедитесь, что проект работает автономно, как любые другие Windows-приложения

Задание 5. Создание и заполнение двумерного массива.

Постановка задачи.

Разработать приложение, которое позволяет создать двумерный массив из N случайных целых чисел в диапазоне от 0 до 100 или в указанном диапазоне, а также осуществить с ним следующие операции:

  • нахождение наибольшего и наименьшего элемента массива;

  • вычисление суммы всех элементов массива

Примерный вид приложения во время этапов проектирования и различных режимов работы представлен на Рис.9.8 – 9.11.

При обращении к элементам двумерного массива указывается имя массива, а в скобках – два индекса (номер строки и номер столбца).

Ход работы.

  1. Создайте в папке Лабораторная_работа_№9 папку 9.5.

  2. Запустите программу Microsoft Visual Basic 6.0.

  3. В появившемся окне выберите тип приложения STANDARD.exe и нажмите кнопку «Открыть».

  4. Расположите на форме 5 компонентов CommandButton, 4 компонента TextBox, 2 компонента OptionButton и 9 компонентов Label.

  5. Установите свойства компонентов согласно Таблице 9.4 или ориентируясь на Рис.9.8 – 9.11.

Таблица 9.4 – Свойства компонентов приложения «Двумерный массив»

Компонент

Свойство

Значение

Form1

Caption

Двумерный массив

Name

frmДвумерный

MinButton, MaxButton

False

Command1

Caption

Генерация массива

Name

cmdГенерация

Command2

Caption

Очистить

Name

cmdОчистка

Command3

Caption

Максимальный элемент

Name

cmdMax

Command4

Caption

Минимальный элемент

Name

cmdMin

Command5

Caption

Сумма элементов

Name

cmdSum

TextBox1

Text

Name

txtStroki

TextBox2

Text

Name

txtStolbci

TextBox3

Text

Name

txtA

Visible

False

TextBox4

Text

Name

txtB

Visible

False

Label1

Caption

Введите количество строк:

Label2

Caption

Введите количество столбцов:

Label3

Caption

Исходный массив

Label4

Caption

Label5

Caption

Начальное значение диапазона

Visible

False

Label6

Caption

Конечное значение диапазона

Visible

False

Label7

Caption

Name

lblMax

Продолжение таблицы 9.4

Label8

Caption

Name

lblMin

Label9

Caption

Name

lblSum

OptionButton1

Caption

Случайными числами от 0 до 100

OptionButton2

Caption

По выбору пользователя

Для всех компонентов свойство Font и Color – по своему усмотрению

У компонентов CommandButton свойство Style = 1 Graphical

У компонентов Text1, Text2, Option1 и Option2 свойство Enabled = true, у остальных компонентов TextBox и CommandButton = false

  1. Объявите переменные в разделе глобальных описаний:

Dim k(1 To 10, 1 To 10) As Integer ' Массив объявлен как динамический,

'10 - максимальное число строк и столбцов

Dim N As Integer ' N - количество строк в массиве

Dim M As Integer ' M - количество столбцов в массиве

Dim i As Integer ' i - счетчик цикла для строк

Dim j As Integer ' j - счетчик цикла для столбцов

Dim A As Integer ' A – начало диапазона

Dim B As Integer ' B – конец диапазона

Dim Sum As Integer ' сумма элементов

Dim Max As Integer ' максимальный элемент

Dim Min As Integer ' минимальный элемент

Dim Z As Integer ' вспомогательная переменная

  1. Напишите обработчики события Click для переключателей и события Change для текстового поля txtB (конечное значение диапазона). Эти обработчики необходимы для выбора действий программы при различных вариантах выбора переключателей пользователем.

Private Sub Option1_Click() ' если выбран 1 переключатель

cmdГенерация.Enabled = True

cmdОчистка.Enabled = True

Z = 1

End Sub

Private Sub Option2_Click() ' если выбран 2 переключатель

Label5.Visible = True

Label6.Visible = True

txtA.Visible = True

txtB.Visible = True

Z = 2

End Sub

Private Sub txtB_Change() 'при вводе данных кнопки «Генерация» и «Очистка» доступны

cmdГенерация.Enabled = True

cmdОчистка.Enabled = True

End Sub

  1. Напишите обработчик события Click для кнопки «Генерация массива», предварительно проанализировав приведенный ниже программный код:

Private Sub cmdГенерация_Click()

Label3.Visible = True

Label4.Visible = True

N = Val(txtStroki.Text)

M = Val(txtStolbci.Text)

Select Case Z

Case 1

Label4.Caption = ""

Randomize Timer

For i = 1 To N

For j = 1 To M

k(i, j) = Int(Rnd() * 101)

Label4.Caption = Label4.Caption + Str(k(i, j)) + " "

Next j

Label4.Caption = Label4.Caption + Chr(13)

Next i

Case 2

Label4.Caption = ""

A = Val(txtA.Text)

B = Val(txtB.Text)

For i = 1 To N

For j = 1 To M

k(i, j) = Int((Rnd() * (B - A + 1) + A))

Label4.Caption = Label4.Caption + Str(k(i, j)) + " "

Next j

Label4.Caption = Label4.Caption + Chr(13) + " "

Next i

End Select

cmdMax.Enabled = True

cmdMin.Enabled = True

cmdSum.Enabled = True

End Sub

  1. Напишите самостоятельно обработчик события Click для кнопки «Очистить», используя навыки, полученные при выполнении предыдущих лабораторных работ и задания 9.3 лабораторной работы 9.

  2. Сохраните проект (выбрав File–Save frmДвумерный.frm и Save Двумерный.vbp) в папке 9.5.

  3. Проверьте работоспособность проекта, запустив его на выполнение.

  4. Напишите обработчик события Click для кнопки «Максимальный элемент», код которого приведен ниже:

Private Sub cmdMax_Click()

Dim e As Integer, f As Integer 'переменные для местоположения максимального элемента

Max = k(1, 1)

For i = 1 To N

For j = 1 To M

If k(i, j) > Max Then

Max = k(i, j)

e = i

f = j

End If

Next j

Next i

lblMax.Visible = True

lblMax.Caption = "Максимальный элемент: " + Str(Max) + "." + Chr(13) + "Строка - №" + Str(e) + ", Столбец - №" + Str(f)

End Sub

  1. Обработчики события Click для кнопок «Минимальный элемент» и «Сумма элементов» напишите самостоятельно, используя навыки, полученные при выполнении задания 9.3 и код, написанный дл кнопки «Максимальный элемент».

  2. Сохраните изменения в проекте

  3. Создайте exe-файл программы с помощью команды File Make Двумерный массив.exe.

  4. Выйдите из среды Visual Basic.

  5. Запустите на выполнение файл Двумерный массив.exe и убедитесь, что проект работает автономно, как любые другие Windows-приложения

Подведем итоги

В работе были использованы новые

понятия:

Массив - это упорядоченная последовательность однотипных величин, имеющих общее имя

Структуры данных – это объединение под одним именем нескольких ячеек памяти

Имя массива – имя, используемое для представления массива в программе

Тип данных – тип данных, который используется для элементов массива

Размерность – количество измерений массива

Количество элементов – количество элементов, которое содержится в массиве. Номера элементов в массиве соответствуют их индексам.

Массивы с фиксированной границей - массивы, которые содержат строго определенное количество элементов

Динамические массивы - массивы, которые содержат переменное количество элементов

операторы:

ReDim - указывает размерность массива в виде числа или выражения

Preserve – сохраняет старые значения в динамическом массиве

Erase - очищает массив

функции:

UBound() – используется для определения количества элементов

Задания для самостоятельного выполнения

  1. Составьте конспект по теоретической части лабораторной работы. Выполненное задание покажите преподавателю.

  2. Разработать приложение, аналогичное заданию 9.4, позволяющее удалить элемент с выбранной позиции.

  3. Доработать приложение, разработанное в задании 9.5, включив в него функцию поиска заданного элемента.

  4. Создать приложение, в котором используется массив строк для хранения списка студентов группы. Приложение должно обеспечить ввод фамилий обучаемых с клавиатуры, а при нажатии на управляющую кнопку сортировать все фамилии в алфавитном порядке.

  5. Дан одномерный массив из N чисел. Подсчитать, сколько элементов входит в массив по одному разу.

  6. В одномерном массиве произвольных чисел положительные элементы уменьшить вдвое, а отрицательные заменить значениями их индексов.

  7. Дан одномерный массив из N чисел. Изменить порядок следования элементов в массиве на обратный.

  8. В одномерном массиве из N произвольных чисел найти наибольший элемент среди отрицательных чисел.

  9. В квадратной матрице 3-го порядка подсчитать сумму элементов главной и обратной диагоналей.

  10. В квадратной матрице 4-го порядка определить сумму элементов главной и обратной диагоналей.

  11. В двумерном массиве удалить строку (столбец) с заданным номером.

Вопросы для контроля

1. Что такое массив? Одномерный массив? Двумерный массив?

2. Как объявляется массив в Visual Basic? Приведите примеры.

3. Чем отличается массив с фиксированной границей от динамического массива?

4. Для чего используется оператор ReDim?

5. Что обеспечивают ключевые слова Preserve? Erase? UBound()?