Лабораторная работа №7. Одномерные массивы

  • doc
  • 07.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 84. Лабораторная работа №7. Одномерные массивы.doc

Лабораторная работа №7. Одномерные массивы

 

Предварительные сведения

 

Массивы в VBA могут быть двух видов: статические и динамические.

При объявлении массива после его имени в круглых скобках указывается верхняя граница массива. По умолчанию нижней границей массива является 0. В приведенном ниже примере, задается массив из 11 элементов. Индекс элементов массива изменяется от 0 до 10:

 

Dim A (10) As Integer

 

Ключевым словом Dim задается описание статического массива. Нижнюю границу, если она отлична от 0, тоже можно задавать явно. Ниже приведены примеры задания статического одномерного массива длины 10.

 

Dim М(1 To 10) As Integer

 

Или:

Const n = 10

Dim М(1 To n) As Integer

 

В случае, когда размер массива заранее неизвестен, Visual Basic позволяет использовать динамические массивы, размеры которых можно изменять во время выполнения.

 

Создание динамического массива осуществляется следующим образом:

 

Объявляется массив с помощью ключевого слова Dim. Список размерностей массива остается пустым. Например,

 

Dim А () As Integer

 

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

Командой ReDim можно пользоваться и без предварительного объявления массива с помощью ключевого слова Dim.

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

Например:

 

Dim n As Byte

n = TextBox1.Text

ReDim А(1 To n) As Integer 'создание пустого массива длины n

 

ReDim Preserve А(1 To m) As Integer 'переопределение длины массива с сохранением данных

 

Пример 1

 

Вычислить сумму элементов одномерного целочисленного массива, заданного случайным образом.

Выполнение:

1 Создание экранной формы.

Экранная форма для выполнения поставленной задачи должна содержать две кнопки: одну для создания массива, вторую для вычисления суммы.

Форма на рис. 39 содержит две метки: Label1 и Label2. Причем свойство Caption  для первой метки имеет значение: Одномерный массив, а у второй метки заголовок пуст. (Форма показана в режиме конструктора. Метка Label2 выделена.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 39. Окно формы для примера 1 лабораторной работы № 7

 

2 Алгоритм задания значений и вычисления суммы элементов массива.

Заметим, что для каждой кнопки необходимо написать отдельную процедуру. Чтобы данные, созданные внутри первой процедуры, были доступны во второй, нужно создать переменные, действующие во всем модуле.

Для этого их нужно объявить в разделе General Declarations (выше начала первой процедуры):

 

'объявление переменных и констант, действующих во всем модуле

Const n = 12

Dim V(1 To n) As Integer

Dim S As Integer

 

Private Sub CommandButton1_Click()

Label2.Caption = "Исходный массив " 'Заполнение заголовка метки

For i = 1 To n 'начало цикла

  V(i) = Rnd * 10 'формирование элементов массива

  Label2.Caption = Label2.Caption + Str(V(i)) 'формирование заголовка метки

Next 'конец цикла

End Sub

 

Private Sub CommandButton2_Click()

S = 0  'обнуление суммы

For i = 1 To n  'начало цикла

  S = S + V(i)  'расчет суммы

Next   'конец цикла

MsgBox("Сумма элементов массива=" & S)

End Sub

 

! Обратите внимание:

 

1) Для автоматического формирования значений элементов массива используется датчик случайных чисел rnd, который выдает значение в полуинтервале [0; 1).

 

2) Переменные, используемые сразу в нескольких процедурах, должны быть объявлены перед их исполнением. Переменная, объявленная внутри процедуры, прекращает свое существование при ее завершении.

 

3 Блок-схема:

 

 

 

 

 

 

 

 

 

 

 

 


Пример 2

 

Вычислить значения элементов массива Z по формуле: Z=cos x + tg x, где х меняется на отрезке [1; 15] с шагом 0,92.

Выполнение:

1 Форма имеет вид (рис. 40).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 40. Окно формы для примера 2 лабораторной работы № 7

 

2 Алгоритм вычисления массива Z:

 

Private Sub CommandButton1_Click()

Const n = 30  'число элементов массива

Dim Z(1 To n) As Single  'описание массива

Dim x As Single, i As Integer

x = 1 'присвоение переменной х первого значения

i = 1 'индекс первого элемента

While x <= 15  'начало цикла

Z(i) = Cos(x) + Tan(x) 'формирование элемента массива

ListBox1.AddItem (Str(Z(i))) 'вывод элемента массива

x = x + 0.92  'увеличение х на величину шага

i = i + 1  'переход к следующему индексу

Wend  'конец цикла

End Sub

3 Блок-схема алгоритма:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


4 Результат работы программы приведен на рис. 41.

 

 

 

Рис. 41. Результат работы программы

для примера 2 лабораторной работы № 7

 

 

Пример 3

 

Найти N элементов массива, в котором Х1 2 =2, а все последующие элементы вычисляются по формуле: Xk =Xk-1 + 3Xk-2 + k .

 

Выполнение:

1 Форма имеет вид (рис. 42).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 42. Окно формы для примера 3 лабораторной работы № 7

 

2 Блок-схема алгоритма:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


3 Программный код:

 

Private Sub CommandButton1_Click()

Const n = 15

Dim X(1 To n) As Single

X(1) = 2

X(2) = 2

For k = 3 To n

X(k) = X(k - 1) + 3 * X(k - 2) + k

Next

Label2.Caption = ""

For k = 1 To n

Label2.Caption = Label2.Caption + Str(X(k))

Next

End Sub

 

4 Результат работы программы приведен на рис. 43.

 

 

Рис. 43. Результат работы программы для примера 3 лабораторной работы № 7

 

 

Пример 4

 

Найти минимальный элемент массива A(N) .

 

Предварительные сведения

 

Для нахождения минимума в массиве (и в любой последовательности) заводится некоторая переменная (например, Min), в которой будет храниться этот минимум. Затем каждый элемент массива сравнивается со значением Min и, если элемент превышает Min, то этот элемент заносится (присваивается) в Min, стирая предыдущее значение.

В качестве начального значения Min можно взять любой элемент массива, например, первый.

 

Выполнение:

 

1 Экранная форма будет иметь вид (рис. 44).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 44. Окно формы для примера 4 лабораторной работы № 7

 

2 Блок-схема алгоритма:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


3 Программный код для поиска минимального элемента массива:

 

Const N = 15

Dim A(1 To N) As Integer, Min As Integer

 

Private Sub CommandButton1_Click()

Label2.Caption = ""

Randomize

For i = 1 To N

A(i) = Rnd * 20 - 10

Label2.Caption = Label2.Caption + " " + Str(A(i))

Next

End Sub

Private Sub CommandButton2_Click()

Min = A(1)

For i = 2 To N

If A(i) < Min Then Min = A(i)

Next

Label3.Caption = Str(Min)

End Sub

 

 

4 Результат работы программы показан на рис. 45.

 

 

Рис. 45. Результат работы программы для примера 4

лабораторной работы № 7

 

 

Пример 5

 

Упорядочить по возрастанию элементы массива В(N) .

 

Предварительные сведения

 

Существует достаточно большое число методов сортировки – упорядочивания элементов массива. Одним из самых простых является метод «пузырька». Он получил такое название по аналогии с пузырьками воздуха в стакане воды: более «легкие» (максимальные или минимальные) элементы постепенно «всплывают». Идея алгоритма этого метода:

 

– последовательно просматриваются пары соседних элементов массива;

 

– если предыдущий элемент больше последующего, то они меняются местами.

 

Выполнение:

 

1 Экранная форма будет иметь вид (рис. 46).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 46. Окно формы для примера 5 лабораторной работы № 7

 

2 Блок-схема алгоритма:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


3 Программа метода «пузырька»:

 

Const N = 15

Dim B(1 To N) As Integer, x As Integer

 

Private Sub CommandButton1_Click()

Label2.Caption = ""

Randomize

For i = 1 To N

B(i) = Rnd * 20 - 10

Label2.Caption = Label2.Caption + " " + Str(B(i))

Next

End Sub

 

Private Sub CommandButton2_Click()

For i = 2 To N

For j = N To i Step -1

If B(j - 1) > B(j) Then

x = B(j - 1)

B(j - 1) = B(j)

B(j) = x

End If

Next

Next

For i = 1 To N

Label3.Caption = Label3.Caption + " " + Str(B(i))

Next

End Sub

 

4 Результат работы программы показан на рис. 47.

 

 

Рис. 47. Результат работы программы для примера 5

лабораторной работы № 7

Варианты

 

1           Вычислить произведение элементов одномерного массива, заданного случайным образом.

 

2           Найти N элементов массива X, в котором X1 =X2 =X3 =2, а все последующие элементы вычисляются по формуле Xk =Xk-2Xk-3 +1/k.

 

3           Вычислить значения элементов массива В по формуле: , где x меняется на отрезке [–3; 8] с шагом 0,85.

 

4           Найти максимальный элемент массива .

 

5           Упорядочить по убыванию элементы массива .

 

6           Вычислить количество отрицательных элементов одномерного массива .

 

7           Вычислить N элементов массива X, в котором X1 = 0; X2 = 0,25, а все последующие элементы вычисляются по формуле Xk =Xk-1 + (1/2)Xk-2.

 

8           Найти сумму положительных элементов массива .

 

9           Вычислить значения элементов массива Z по формуле: , где x меняется на отрезке [1; 15] с шагом 0,92; и найти их сумму.

 

10      Вычислить количество положительных элементов одномерного массива .

 

11      Вычислить N элементов массива X, в котором X1 = 3; X2 = 0,2, а все последующие элементы вычисляются по формуле Xk =Xk-1 + 0,5Xk-2, и найти их сумму.

 

12      Найти сумму элементов массива , стоящих на четных местах.

 

13      Найти произведение элементов массива , стоящих на нечетных местах.

 

14      Вычислить значения элементов массива В по формуле: , где x меняется на отрезке [–5; 10] с шагом 0,67; и найти сумму его элементов.

 

15      Найти число нулевых элементов массива .

 

16      Найти N элементов массива Х, в котором X1 =X2 =X3 =1; а все последующие элементы вычисляются по формуле Xk =Xk-1 +Xk-3 + ln(k).

 

17      Найти номер минимального элемента массива .

 

18      Вычислить среднее арифметическое положительных элементов массива .

 

19      Вычислить значения элементов массива W по формуле: , где x меняется на отрезке [–2; 10] с шагом 0,95.

 

20      Найти сумму отрицательных элементов массива .

              

21      Найти произведение отрицательных элементов массива .

 

22      Найти номер максимального элемента массива .

 

23      Вычислить сумму элементов массива , стоящих на нечетных местах.

 

24      Найти среднее арифметическое отрицательных элементов массива .

 

25      Поменять местами минимальный и максимальный элементы массива .

 

26      Найти отношение суммы элементов, стоящих на четных местах одномерного массива , к сумме элементов, стоящих на нечетных местах.

 

27      Вычислить квадрат произведения элементов массива .

 

28      Найти N элементов массива Х, в котором X1 = 0,75; X2 = 0,3X1; а все последующие элементы вычисляются по формуле Xk =2Xk-1 +Xk-2 + 3k.

 

29      Найти отношение минимального и максимального элементов массива .

 

30      Вычислить количество элементов массива , кратных трем.