Полная версия

Главная arrow Информатика arrow Базовые средства программирования на Visual Basic в среде VisualStudio. Net

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ ПОСМОТРЕТЬ ОРИГИНАЛ   >>

Средства описания и работы с одномерными массивами данных

Массив - последовательность переменных одинакового типа, объединенных общим именем. Например: одномерный массив а(9) состоит из 10 элементов с общим именем а: а(0), а(1), а(2), а(3),..., а(9), упорядоченных по индексу i, который имеет значения от 0 до 9.

Массив в программе VB объявляется точно так же, как объявляются простые переменные. Если массив объявлен локальным, его можно использовать только в той процедуре, в которой он объявлен. Если массив объявлен как глобальный, он может быть использован в любом месте программы.

При объявлении массива оператор объявления должен включать следующую информацию:

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

Рассмотрим примеры некоторых описаний массивов:

Dim d(30) As Integer Dim a(10) As Double Dim b(13,10) As Single

В этих примерах объявлены следующие массивы:

  • • одномерный массив d, состоящий из 31 элемента типа Integer с индексами от 0 до 30;
  • • одномерный массив а, состоящий из 11 элементов типа Double с индексами от 0 до 10;
  • • двумерный массив Ь, состоящий из 14x11=151 элемента типа Single с индексами по строкам от 0 до 13 и по столбцам от 0 до 10. Обратите внимание, что значением нижней границы массива в VB

может быть только 0.

7.2. Средства описания и работы с одномерными массивами данных

Таким образом, массив состоит из элементов, которые могут быть доступны при помощи индексов. При обращении к элементам массива индексы записываются вслед за именем в круглых скобках и могут представлять собой любое допустимое целочисленное выражение. Например: d(24),

a(2*i+l).

Обратите внимание, что количество индексов указывает на размерность массива. Так, в приведенном выше примере размерность массива а(10) равна единице, т. е. массив одномерный. Массив Ь(2,3) имеет размерность 2 - двумерный массив.

В отличие от размерности, размер массива - это количество элементов в массиве. В нашем примере размер массива а(10)равен 11.

Перед использованием массива в программе его необходимо объявить с помощью оператора Dim, а элементы массива заполнить конкретными значениями. Оператор Dim выделяет место в памяти компьютера для размещения элементов массива, обнуляет элементы числовых массивов или заполняет элементы строковых массивов пустыми строками ("").

Как и для простых типов данных, при объявлении массивов, которые являются структурированными типами данных, различают два способа распределения памяти: статическое - на этапе компиляции до выполнения программы, и динамическое - в ходе выполнения программы. По умолчанию массив, границы которого заданы константными выражениями, считается статическим. Память для размещения такого массива выделяется на этапе компиляции программы и сохраняется за ним на весь период выполнения.

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

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

Dim Город ( ) As String = {"Рязань" , "Тула" 3 "Калуга"}_

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

For i = 0 То КоличествоЭлементовМассива - 1

ИмяМассива(1) = выражение или Переменная = ИмяМассива(1)

Next i

Чтобы облегчить работу с массивами в процедурах, для определения верхней границы массива используется встроенная функция Bound(ИмяМассива).

Эта функция возвращает (определяет) номер последнего элемента массива и позволяет обрабатывать массивы в процедурах, не передавая в них в качестве параметра количество элементов массива. Например:

For i = 0 То UBound(ИмяМассива)

ИмяМассива(±) - выражение или Переменная = ИмяМассива(1) Next i

Кроме того, для определения верхней границы одномерного массива можно использовать метод GetUpperBound( ). Поскольку массив одномерный, то в скобках следует указывать значение 0. Например:

For i = 0 То а.GetUpperBound(G) sum = sum + a(i)

Next i

Если имя массива является формальным параметром процедуры, то после имени массива необходимо поместить пустые круглые скобки:

|ВуУа1 ИмяМассива( ) As Тип или ByRef ИмяМассива( ) As Тип ]

Уже говорилось, что ключевое слово ByVal указывает передачу аргумента-массива по значению, а ключевое слово ByRef указывает, что аргумент-массив передается по ссылке. Заметим, что если ключевые слова ByVal или ByRef опущены, то аргумент-массив передается по ссылке.

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

Sub Showl(ByRef LinesQ As Single, ByVal NLines As Integer)

End Sub

Function Sort (ByRef ListQ As String) As Integer End Sub

Обращение к этим процедурам может, например, быть следующим:

Showl(Lines, 5)

N1 = Sort(List)

Обратите внимание на то, что после имени массива, который является фактическим параметром, скобки отсутствуют.

Как известно, передача аргументов по значению (с помощью ключевого слова ByVal) приводит к тому, что VB передает копию данных процедуре. Поэтому не следует передавать массивы по значению, если в этом нет особой необходимости, - передача больших массивов по значению может быстро исчерпать ресурсы оперативной памяти вашего компьютера, приводя к ошибкам времени выполнения из-за нехватки памяти.

Пример 7.2-1. Написать процедуры ввода/вывода, которые могут использоваться в алгоритмах формирования и отображения одномерных массивов.

Процедуры ввода и вывода для одномерных массивов представлены на рис. 7.2-1-7.2-3.

Процедура ввода элементов массива Single с клавиатуры Примера 7.2-1

Рис. 7.2-1. Процедура ввода элементов массива Single с клавиатуры Примера 7.2-1

Процедура формирования массива случайным образом Примера 7.2-1

Рис. 7.2-2. Процедура формирования массива случайным образом Примера 7.2-1

Процедура форматного вывода массива типа Single в ListBox Примера 7.2-1

Рис. 7.2-3. Процедура форматного вывода массива типа Single в ListBox Примера 7.2-1

 
<<   СОДЕРЖАНИЕ ПОСМОТРЕТЬ ОРИГИНАЛ   >>