Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для КР по ООП.doc
Скачиваний:
8
Добавлен:
18.04.2019
Размер:
2.47 Mб
Скачать

Массив. Объявление

Массив – множество однотипных элементов. Это тоже ТИП. Любой массив наследует классу (является производным от класса – о принципе наследования позже) System.Array.

Существует несколько способов сознания группировок однотипных объектов:

  • объявление множества однотипных элементов в рамках перечисления (класса, структуры),

  • определение собственно массива.

Принципиальная разница состоит в следующем:

  • доступ к данным-членам перечисления, класса, массива производится ПО имени данного-члена (элементы перечисления, класса или структуры ИНОГДА могут быть одного типа, но каждый член всегда имеет собственное имя),

  • доступ к элементу массива осуществляется по индексу (элементы массива ВСЕГДА однотипны, располагаются в contiguous memory) при этом допускается случайный доступ.

Многомерные массивы. Массив размерности (или ранга) N (N определяет число измерений массива) – это Массив массивов (или составляющих массива) ранга N-1. Составляющие массива – это массивы меньшей размерности, являющиеся элементами данного массива. Составляющая массива – это либо массив, либо элемент массива.

ОбъявлениеМассива ::=

ИмяТипа СписокСпецификаторовРазмерности ИмяМассива [ИнициализацияМассива];

ИмяТипа ::= Идентификатор

ИмяМассива ::= Идентификатор

СписокСпецификаторовРазмерности

::= [СписокСпецификаторовРазмерности] СпецификаторРазмерности

::= [СписокНеявныхСпецификаторов]

СпецификаторРазмерности ::= []

СписокНеявныхСпецификаторов

СписокНеявныхСпецификаторов ::= [СписокНеявныхСпецификаторов ,] НеявныйСпецификатор

НеявныйСпецификатор ::= ПУСТО | РАЗДЕЛИТЕЛЬ

ПУСТО – оно и есть пусто.

РАЗДЕЛИТЕЛЬ – пробел, несколько пробелов, символ табуляции, символ перехода на новую строку, комбинация символов “новая строка/возврат каретки” и прочая икебана…

При объявлении массива действуют следующие правила:

  • Спецификатор размерности, состоящий из одного неявного спецификатора [] специфицирует составляющую массива размерности 1.

  • Спецификатор размерности, состоящий из N неявных спецификаторов [ ,,, … ,] специфицирует составляющую массива размерности N.

  • Длина списка спецификаторов размерности массива не огранена.

При этом информация о типе составляющих массива в объявлении массива определяется на основе типа массива и списка его спецификаторов размерности.

Синтаксис объявления массива (ссылки на массив) позволяет специфицировать массивы произвольной конфигурации без какого-либо намёка на количественные характеристики составляющих массивы элементов.

Ниже представлены способы ОБЪЯВЛЕНИЯ ссылок на массивы РАЗЛИЧНОЙ размерности и конфигурации.

// Объявлены ссылки на массивы размерности 3 элементов типа int.

// Это массивы составляющих, представляющих собой массивы элементов

// размерности 2 одномерных массивов элементов типа int.

// Размеры всех составляющих массивов одного уровня равны

// между собой (так называемые “прямоугольные” массивы).

int[,,] arr0;

int[ , , ] arr1;

int[

,

,

] arr2;

// Объявлена ссылка на

// ОДНОМЕРНЫЙ(!) массив

// ОДНОМЕРНЫХ(!) элементов массива, каждый из которых является

// ОДНОМЕРНЫМ(!) массивом элементов типа int.

int[][][] arr3;

// Объявлена ссылка на

// ОДНОМЕРНЫЙ(!) массив составляющих, каждая из которых является

// ДВУМЕРНЫМ(!) массивом массивов элементов типа int.

// При этом никаких ограничений на размеры “прямоугольных” составляющих

// данное объявление не содержит. У всех составляющих могут быть разные

// размеры.

int[][,] arr4;

// Объявлена ссылка на

// ДВУМЕРНЫЙ(!) массив составляющих, каждая из которых является

// ОДНОМЕРНЫМ(!) массивом элементов типа int.

// При этом никаких ограничений на размеры одномерных составляющих

// данное объявление не содержит. У всех составляющих могут быть разные

// размеры.

int[,][] arr5;

Рассмотренный синтаксис объявления и инициализации массива позволяет определять ДВЕ различных категории массивов:

  • простые (прямоугольные) массивы,

  • jagged (зубчатый, зазубренный; неровно оторванный; пьяный; находящийся под влиянием наркотиков) массивы.

Особенности инициализации и использования массивов разных категорий рассматриваются дальше.