<<
>>

МАССИВЫ

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

Обработка таких данных может заключаться в расчете среднего балла всех студентов или среднего значения температуры воздуха в каждом месяце. Эти переменные необходимы для кратковремен- ного хранения данных в оперативной памяти компьютера в тече- ние работы программы с целью их дальнейшей обработки и назы- ваются переменной с индексом или массивом (см. подразд. 7.2).

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

Начнем с определения самого простого из массивов — одно- мерного массива (кроме одномерных существуют многомерные массивы, в частности, двумерные, или матрицы).

Одномерный массив — это конечное множество элементов од- ного типа.

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

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

Индекс — любое выражение, значением которого является це- лое число.

Объявление массива аналогично объявлению переменной, толь- ко кроме имени переменной надо указать в скобках диапазон зна- чения индекса — минимальное и максимальное его значения,

между которыми записывается ключевое слово «То». Для двухмер- ного массива указываются два диапазона через запятую. Например: Dim А (1 То 30) as Single Dim В (1 То 10) as Integer Dim D (1 To 5, 2 To 10) as Byte

Часто минимальное значение индекса не указывается.

Тогда оно автоматически (по умолчанию) принимается равным нулю. Клю- чевое слово «То» при этом не используется. Но максимальное зна- чение индекса должно быть указано обязательно. Например:

Dim С (30) as Byte

Для обращения к элементу массива необходимо указать имя массива и в скобках указать значение индекса. Например:

А( 15), В(9), D(4,5).

Рассмотрим на примере, как происходит обработка массивов в программе.

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

Алгоритм нахождения максимальных и минимальных значений основан на выдвижении двух гипотез:

1) максимальным элементом массива является его первый эле- мент;

2) минимальным элементом массива является его первый эле- мент.

Эти гипотезы выражаются так: одно и тоже значение «Темпе- ратура(1)» присваивается двум переменным Мах и Min.

Поиск максимального элемента массива рассмотрен в примере

подразд. 7.2.

Алгоритм решения данной задачи приведен на рис. 8.12, а. Для определения среднего значения температуры за месяц в программе необходимо вычислить сумму температур и разделить ее на число значений.

Программа на этапе выполнения представлена на рис. 8.12, б. Событийная процедура, вызываемая при щелчке по кнопке Расчет, выглядит следующим образом:

Dim Max As Single, Min As Single, Aver As Single, Sum As Single, i As Single, Temp(l To 30) As Single Private Sub Command l_Click()

For i = 1 To 30 Temp(i) = 0 Next i

For i = 1 To 30

Temp(i) = Уа1(1пршВох("Ввод элемента:", "Ввод массива")) Next i

Max = Temp(l)

Min = Temp(l) s = 0

For i = 1 To 30

If Temp(i) > Max Then Max = Temp(i) If Temp(i) < Min Then Min = Temp(i) s = s + Temp(i)

Next i

Aver = s/30

Text 1.Text = Str(Aver)

Text2.Text = Str(Min)

Text3.Text = Str(Max)

End Sub

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

Для инициализации массива достаточно в цикле присвоить всем элементам нулевые значения:

For i - 1 То 30

Temp(i) = 0

Next i

Эта операция позволяет избежать ошибки в программе при обработке массивов.

Ввод значений элементов массива можно осуществлять разны- ми способами.

Первый способ состоит в том, что значения элементов масси- ва вводятся пользователем с клавиатуры. В этом случае можно ис- пользовать системную функцию ввода InputBox (см. рис. 8.12, б) или поле ввода.

Второй способ заполнения массива состоит в использовании оператора присваивания. Например, можно заполнить числовой массив целыми случайными числами, для генерации которых ис- пользуется функция Rnd. Функция Rnd дает равномерно распреде- ленную псевдослучайную (т. е. каждый раз повторяющуюся) пос- ледовательность чисел из интервала 0 < X < 1. Для того чтобы генерировать различающиеся между собой последовательности, можно использовать оператор Randomize. Получение целочислен- ной последовательности случайных чисел из интервала 0 < Х< 100 достигается использованием функции выделения целой части числа:

Int(Rnd*100)

Событийная процедура для заполнения одномерного целочис- ленного массива случайными числами будет выглядеть следующим образом:

Dim A(l to 100) As Byte, i As Byte

Private Sub Command l_Click()

For i=l to 100

A(i)=Int(Rnd* 100)

Next i

End Sub

В большинстве случаев для работы с массивом используется цикл с параметром. Но не всегда он бывает удобен. Рассмотрим такой случай, когда обработка массива выполняется циклом с условием.

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

Dim A (1 To 20) As integer, s As Integer, i As byte Private Sub Command l_Click()

'инициализация массива For i = 1 To 20 A(i) = 0 Next i

'заполнение массива For i = 1 To 20

A(i) = Val( IN PUTBOX(" Введите элемент массива'* + Str(i))) Next i S = 0

'обработка массива Do

s = s + A(i)

Loop While x 0 Forml. Print End Sub

Рассмотрим еще один пример, демонстрирующий обработку двухмерного массива.

Пример 3. Задан двухмерный массив из четырех строк и шести столбцов, подсчитать суммы элементов по строкам и столбцам.

Таблица 8.10

Исходный массив А(4,б)

1 2 3 4 5 6 S(l)
0 0 0 0 0 0 S
<< | >>

Еще по теме МАССИВЫ:

  1. 18.5. Права и обязанности держателя (обладателя) по работе с массивами персональных данных
  2. 18.6. Государственное регулирование работы с персональными данными
  3. Частотный анализ и кодировка.
  4. 1.4. Цель настоящего учебника
  5. 18.7. Уполномоченный по правам субъектов персональных данных
  6. 18.3. Правовые основы работы с персональными данными
  7. 18.2. Субъекты и объекты информационных правоотношений
  8. 18.4. Права субъекта персональных данных
  9. Статья 245. Уничтожение или повреждение объектов растительного мира
  10. четвертая коммуникационная революция