Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по ДПВ-2.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
68.56 Кб
Скачать

7. Массивы

Массив – это набор элементов одного определённого типа, каждый из которых имеет свой порядковый номер, называемый индексом (или несколько индексов).

Различают статические и динамические массивы. Границы статического массива устанавливаются однозначно раз и навсегда. Границы динамического массива могут меняться во время выполнения программы.

7.1. Объявление статических массивов

Объявление статического массива имеет следующий вид:

Static / Public / Private / Dim <ИмяМассива1Суффикс1> / <ИмяМассива1> ([<НижняяГраницаИндекса11> To] <ВерхяяГраницаИндекса11> [, [<НижняяГраницаИндекса12> To]<ВерхяяГраницаИндекса12>, ...]) [As <ИмяТипа1>]

[, <ИмяМассива2Суффикс2> / <ИмяМассива2> ([<НижняяГраницаИндекса21> To] <ВерхяяГраницаИндекса21> [,[<НижняяГраницаИндекса22> To ] <ВерхяяГраницаИндекса22>, ... ]) [As <ИмяТипа2>][, ........]

где:

Static / Public / Private / Dim – ключевые слова, имеющие такой же смысл, как и в случае объявления переменной;

<ИмяМассиваI> – идентификатор (имя) I-ого массива;

<ИмяМассиваIСуфиксI> – имя I-ого массива с суффиксом, определяющим тип его элемента;

<НижняяГраницаИндексаIJ> – наименьшее значение J-ого индекса I-ого массива: имя переменной, константы или число, нумерация индекса начинается с нуля, если наименьшее значение индекса отсутствует;

<ВерхняяГраницаИндексаIJ> – наибольшее значение J-ого индекса I-ого массива: имя переменной, константы или число;

<ИмяТипа> - имя любого действительного типа данных, в том числе созданного пользователем.

Dim Mas(5) As Integer

Dim M(5,6) As String

Mas(3) = 8

M(2, 5) = “Катя”

Print Mas(3) ‘ 8

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

Разрешенная размерность в VB до 60. По умолчанию элементы любого из массивов начинают нумероваться с нуля. Однако если в разделе глобальных объявлений написать оператор Option Base 1, то элементы всех объявленных массивов будут нумероваться начиная с единицы.

Dim Mas(2 To 5) As Integer

Dim M(-3 To 2, 3 To 6) As String

В этом примере объявлены два массива, первый с нумерацией элементов от двух до пяти, второй – первый индекс меняется от –3 до 2, второй индекс от 3 до 6.

Dim Mas%(2 To 5), M(-3 To 2, 3 To 6) As String

В этом примере объявлено тоже, что и в предыдущем.

Замечание:

1. Массив определяется как совокупность однотипных элементов. Однако, если при объявлении любого массива (статического или динамического) не указывать тип элемента (или указать тип Variant), то по умолчанию он будет иметь тип Variant. В этом случае элементы массива могут быть величинами различного типа, одни числа, другие символьные строки и т.д.

2. Массив может быть объявлен в любом месте программы, но обязательно, до его использования.

7.2. Объявление динамических массивов

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

Динамический массив создается в два этапа. Сначала массив объявляется без указания его размера:

Dim <ИмяМассива> () As <ИмяТипа>

Затем количество элементов в объявленном массиве и его размерность в процессе выполнения программы можно определить и переопределить с помощью оператора ReDim, который имеет вид:

ReDim [Preserve] <ИмяМассива> (<ГраницыИндексов>) [As <ИмяТипа>]

где:

ReDim – ключевое слово, указывающее, что переопределяются размеры массива;

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

<ГраницыИндексов> – новые границы индексов и новая размерность (можно использовать числа, константы или переменные);

<ИмяТипа> – имя прежде объявленного типа, можно использовать суффикс.

Dim mas() As Byte

ReDim mas(9) ‘Одномерный массив

ReDim mas(3, 5) ‘Двухмерный массив

ReDim mas(2 To 4, 8) ‘Двухмерный массив с новыми границами

Итак массивы можно переопределять, но при этом теряется их содержимое. Использование ключевого слова Preserve дает возможность сохранения данных, но накладывает некоторые ограничения:

- Нельзя менять размерность массива (например: одномерный на двухмерный);

  • В одномерном массиве можно менять только верхнюю границу (наибольшее значение индекса);

  • В многомерном массиве можно менять только последнее измерение и только верхнюю границу (наибольшее значение последнего индекса).

Динамические массивы можно уничтожать:

Erase <ИмяМассива1> [,<ИмяМассива2>, …]