Материал: posobie_po_informatike_Chast1_Word

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Dim b (3, 3) As Single

j

0)

1)

2)

3)

0)

b00

b01

b02

b03

i

1)

b10

b11

b12

b13

2)

…

…

bij

…

3)

…

…

…

b33

Допускается до 60-ти размерностей.

Динамический массив - это массив с переменными границами.

Dim mas ()

После имени пустые скобки.

Здесь по умолчанию элементы массива принимают тип Variant.

Для обработки массивов обычно применяется инструкция For … Next.

Оборудование, инструменты и приборы

ПЭВМ, программное обеспечение Microsoft Office (Excel 2007).

Варианты заданий

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

Таблица 3.5

Варианты заданий

№

варианта

Задание

1

2

1

В одномерном массиве найти сумму положительных элементов.

2

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

3

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

4

В одномерном массиве найти сумму четных положительных элементов

5

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

6

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

7

В одномерном массиве найти количество элементов, равных нулю..

8

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

9

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

10

В одномерном массиве найти количество элементов, кратных пяти.

11

В одномерном массиве найти минимальный нечетный элемент

12

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

13

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

14

В одномерном массиве найти количество нечетных элементов

15

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

16

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

17

В одномерном массиве найти сумму элементов, кратных трем.

Продолжение табл. 3.5

1

2

18

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

19

В одномерном массиве найти количество четных элементов

20

В одномерном массиве найти сумму четных элементов

21

В одномерном массиве найти сумму минимального максимального элементов.

22

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

23

В одномерном массиве найти произведение элементов, кратных трем.

24

В одномерном массиве найти сумму элементов, кратных пяти.

25

В одномерном массиве найти среднее арифметическое минимального и максимального элементов.

26

В одномерном массиве найти произведение нечетных элементов

27

В одномерном массиве найти количество четных элементов

28

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

29

В одномерном массиве найти произведение минимального и максимального элементов.

30

Вывести значения высоты h от 0 до 100 м с шагом 100 м и значения плотности воздуха в зависимости от высоты. Расчётная формула , где 0 = 1,29 кг/м3, z = 1,2510– 4 1/м.

Порядок выполнения работы

  1. Ознакомиться с программной реализацией решения задач с использованием оператора цикла со счетчиком (примеры №1, №2, №3, №4).

  2. Сохранить разработанные проекты и выполнить программы примеров №1, №2, №3, №4

Пример 1. Задача сравнения двух одномерных числовых массивов с целью нахождения равных по значению элементов в этих массивах.

Private Sub CmdРешение_Click()

Dim m1 As Variant, m2 As Variant, _

Значения() As Integer, _

Номера_1() As Integer, Номера_2() As Integer, _

i As Integer, j As Integer, k As Integer

m1 = Array(3, 1, 2, 0, 4)

m2 = Array(2, 1, 5)

List1.List = m1

List2.List = m2

k = 0

For i = 0 To 4

For j = 0 To 2

If m1(i) = m2(j) Then

k = k + 1

ReDim Preserve Значения(1 To k), _

Номера_1(1 To k), Номера_2(1 To k)

Значения(k) = m1(i)

Номера_1(k) = i + 1: Номера_2(k) = j + 1

End If

Next j

Next i

If k = 0 Then

MsgBox "Равных значений нет"

Else

List3.List = Значения

List4.List = Номера_1

List5.List = Номера_2

End If

End Sub

Пояснения.

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

На форму помещены пять списковых полей. После запуска программы на выполнение и щелчка на командной кнопке «Решение» в первые два поля выводятся сравниваемые массивы чисел, а в другие три поля выводится искомая информация.

Массивы чисел формируются (заполняются) с помощью функции Array. Эта функция создает одномерный массив. По умолчанию (а в данном примере задано явно) элементы этого массива имеют универсальный тип Variant, т.е. элементам массива могут быть даны как числовые (целые или вещественные), так и символьные (строковые) значения. При объявлении в инструкции Dim такого рода массивов для них указывается только имя. Не требуется указание не только крайних индексов элементов массивов, но даже пустых круглых скобок. По умолчанию элементы массива функцией Array всегда нумеруются с ноля.

Поиск равных по значению элементов массивов организован в программе с помощью двух операторов цикла For…Next: внешнего – по элементам первого массива и внутреннего (вложенного) – по элементам второго массива. При равенстве значений элементов этих массивов увеличивается на единицу счетчик количества таких элементов. Далее в инструкции ReDim на это количество формируются (разворачиваются) динамически объявленные массивы, в которые затем помещаются найденные равные значения соответствующих номера элементов в первом втором массивах со смещением на единицу в плюс. Этим достигается более естественное отражение расположения элементов в массивах, начиная с первого, а не с нулевого (как это по умолчанию задается функцией Array).

Пример2. Задача поиска минимального элемента в одномерном числовом массиве.

Private Sub CmdРешение_Click()

Dim x As Single, a(1 To 10) As Single, _

i As Integer, jmin As Integer

x = CSng(Text1.Text)

' Randomize

For i = 1 To 10

a(i) = Int(x * Rnd)

Next

List1.List = a

jmin = 1

For i = 2 To 10

If a(i) < a(jmin) Then jmin = i

Next

Text2.Text = jmin

Text3.Text = a(jmin)

End Sub

Пояснения.

В примере 2 реализовано решение задачи поиска минимального элемента в одномерном числовом массиве (конкретно – номера элемента с минимальным значением).

В программе массив объявлен в инструкции Dim состоящим из 10-ти элементов с номерами от 1 до 10. Массив заполняется в цикле случайными числами с помощью специальной функции (датчика случайных чисел) Rnd (сокращение англ. “Randomize” – случайность, вероятность). Функция Rnd, вызываемая без параметра, выдает (имеет при каждом очередном обращении к ней) значение, которое равномерно распределено (равновероятно) в интервале от 0 до 1. Для получения чисел из любого интервала на основе функции Rnd строятся специальные расчетные формулы. В данном примере множителем перед этой функцией задается максимальное значение случайных чисел (верхняя граница интервала). Это значение считывается с соответствующего поля формы. После получения очередного случайного числа его значение для удобства восприятия округляется до целого значения функцией Int. После цикла формирования массив случайных чисел выводится в списковое поле формы.

Примечание. Для получения в массиве при каждом обращении к данной программе другой последовательности случайных чисел возможен предварительный (перед циклом заполнения массива) вызов стандартной подпрограммы Randomize, не имеющей параметров. Такое действие было обязательным при работе на платформе операционной системы MS-DOS в среде Турбо – ПАСКАЛЬ, т.е. при программировании на языке ПАСКАЛЬ. Но, как практика, при программировании на языке VBA вызов подпрограммы Randomize не является обязательным: и без выполнения этой подпрограммы каждый раз формируется новая последовательность случайных чисел. Поэтому можно или не использовать эту подпрограмму , или, если ее вызов имеется в программе, для подтверждения вышесказанного выключить выполнение, набрав апостроф перед именем подпрограммы (говорят – «закомментировать» вызов, т.е. превратить эту строку программы в комментарий).

Источник: https://files.student-it.ru/previewfile/281619