Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_1 / Элементы программирования - методичка.doc
Скачиваний:
60
Добавлен:
06.03.2016
Размер:
449.02 Кб
Скачать

3. Массивы

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

Массив – это набор переменных с одним именем и различными индексами, которые записываются за именем в круглых скобках.

Без массивов было бы серьезной проблемой обработка большой совокупности данных.

Например, температуру, измеренную в каждый день месяца, в котором 30 дней, можно разместить в массиве размерностью в 30 элементов и назвать этот массив, например, sngTemperatura(30) илиTemp(30). Фамилии студентов можно записать в массивstrStudent(25), если в группе 25 студентов. Чтобы обратиться к какому-нибудь элементу массива, надо написать имя массива, а в круглых скобках номер индекса элемента. Например, sngTemperatura(2), Temp(17), strStudent(5), strStudent(11).

При определении массивов в QBasicобычно добавляют, что в массивах размещаютсяоднотипныепеременные. Однако вVBу массивов типаVariantэлементы могут принимать значения любого типа данных. Например, одни элементы – строковые значения, а другие элементы – целые числа, третьи – даты и т. д.

Массивыбываютодномерныеимногомерные. Выше речь шла об одномерных массивах. Из многомерных массивов чаще всего применяются двумерные массивы с двумя индексами, например, такиеintA(5, 4),sngCeni(6, 10). Двумерные массивы можно изобразить в виде матрицы. Изобразим в виде матрицы массивA(3, 4):

A(1,1) A(1,2) A(1,3) A(1,4)

A(2,1) A(2,2) A(2,3) A(2,4)

A(3,1) A(3,2) A(3,3) A(3,4)

Анализируя индексы элементов массива в матрице, находим, что первый индекс в двумерном массиве обозначает номер строки матрицы, а второй индекс – номер столбца. Если число строк М равно количеству столбцов N, матрицу называют квадратной.

Объявление массивов фиксированного размера осуществляется с помощью тех же операторов, что и простая переменная. Только после имени массива в круглых скобках проставляется размер массива. Размер массива можно задавать целым числом или переменной, значение которой перед этим должно быть определено. Область видимости массивов определяется так же, как для простых переменных.

Примеры объявления массивов:

Dim intA(21) As Integer

Public sngMas(6, 4) As Single

или

Dim intA(1 To 21) As Integer, intD(- 4 To 5) As Single

Public sngMas(1 To 6, 1 To 4) As Single

В первом варианте в массиве intA(21) всего 22 элемента, т. к. индекс изменяется от 0 до 21. Но можно использовать только элементы с индексами от 1 до 21, хотя элементintA(0) также будет существовать. А в двумерном массивеsngMas(6, 4) всего 35 элементов (7х5), т. к. отсчет каждого индекса начинается с 0. В одномерном массивеintD(- 4 To 5) начальное значение индекса – отрицательное число.

Элементов с нулевыми индексами во втором варианте объявления массивов нет. И количество элементов в массиве intA() всего 21, а вsngMas() – 24 (6х4). Но можно «заставить» вести отсчет индексов всегда с 1, если ввести операторOption Base 1в раздел (General) (Declarations).

Обратиться к элементу массива можно, написав его имя и индекс (индексы) в круглых скобках. Например:

intA(5) = 33 ‘пятому элементу присваивается значение 33

sngMas(3, 2) = intA(5) + 12‘ присваивается значение 45.0,

‘если перед выполнением этого кода выполнится предыдущий

После апострофа (‘)вводитсякомментарий, если он нужен. На выполнение программы он никакого влияния не оказывает.

Пример с массивом типа Variant. Введем в такой массив фамилии студентов и их возраст:

Dim vntFamVozr(4) As Variant

vntFamVozr(1) = “Петров”

vntFamVozr(2) = 20

vntFamVozr(3) = “Петренко”

vntFamVozr(4) = 22

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

Объявление динамического массива производится в случае, когда размер массива может изменяться во время выполнения программы.

Поясним на примере. Пусть по условию задачи необходимо задать матрицу A(M,N) целых чисел, с элементами которой необходимо выполнить какие-то операции. Размер матрицы может быть переменным.

Один из вариантов. На форме строим два текстовых поля. Первое Text1 (переименованное наtxtM) – для ввода количества строкMматрицы, второеText2 (переименованное наtxtN) – для ввода количества столбцовN. Строим также кнопкуcmdВычислить, для свойстваClick(Щелчок) которой пишем процедуру в соответствие с алгоритмом задачи. После запуска программы вводим количество строк матрицыMи количество столбцовN. Затем щелкаем на кнопкуcmdВычислить, запуская на выполнения событийную процедуру. Приведем начало процедуры (фрагмент), в котором показано как следует программировать динамический массив:

Private Sub cmdВычислить_Click()

Dim intA() As Integer ‘ сначала объявляем массив intA() _

без указания его размера

Dim M As Integer, N As Integer

‘ присваиваем переменной М значение, которое введено в поле

‘ txtM:

M = Val(txtM.Text)

‘ присваиваем переменной N значение, которое введено в поле

‘ txtN:

N = Val(txtN.Text)

‘Функция Val() переводит текст-число в число.

‘ReDim переопределяет массив intA(), т. к. М и N известны:

ReDim intA(M, N) As Integer

‘……………………

‘Далее по программе вводим значения элементов матрицы

‘и выполняется остальная часть программы…

End Sub

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

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