49. Понятие и определение массива. Массив определение


Массив - это... Что такое Массив?

В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. Эта отметка установлена 13 августа 2012.

Массив (в некоторых языках программирования также таблица, ряд) — набор однотипных компонентов (элементов), расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу (индексам). В отличие от списка, массив является структурой с произвольным доступом[1].

Размерность массива — количество индексов, необходимое для однозначного доступа к элементу массива[2][3].

Форма или структура массива — количество размерностей и размер (протяжённость) массива для каждой размерности[4], может быть представлен одномерным массивом[5].

В языке программирования APL массив является основным типом данных (при этом нуль-мерный массив называется скаляром, одномерный — вектором, двумерный — матрицей)[5].

В ряде языков программирования, например, Лисп, JavaScript, PHP, Ruby применяются также ассоциативные массивы (или хэш-массивы), в которых элементы не обязательно являются однотипными, а доступ к ним не обязательно осуществляется по индексу.

Общее описание

Массив — упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.

Пример статического массива на языке Паскаль {Одномерный массив целых чисел. Нумерация элементов от 1 до 15} a: array [1..15] of Integer; {Двумерный массив символов. Нумерация по столбцам по типу Byte (от 0 до 255) по строкам от 1 до 5} multiArray : array [Byte, 1..5] of Char; {Одномерный массив из строк. Нумерация по типу word (от 0 до 65536)} rangeArray : array [Word] of String; Пример статического массива на С/С++ int Array[10]; // Одномерный массив целых чисел размера 10 // Нумерация элементов от 0 до 9 double Array[12][15]; // Двумерный массив вещественных чисел двойной точности // размера 12 на 15. // Нумерация по столбцам от 0 то 11, по строкам от 0 до 14

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

В языках программирования, допускающих объявления программистом собственных типов, как правило, существует возможность создания типа «массив». В определении такого типа может указываться размер, тип элемента, диапазон значений и типы индексов. В дальнейшем возможно определение переменных созданного типа. Все такие переменные-массивы имеют одну структуру. Некоторые языки поддерживают для переменных-массивов операции присваивания (когда одной операцией всем элементам массива присваиваются значения соответствующих элементов другого массива).

Объявление типа «массив» в языке Паскаль type TArrayType = array [0..9] of Integer; (* Объявления типа "массив" *) var arr1, arr2, arr3: TArrayType; (* Объявление трёх переменных-массивов одного типа *)

Специфические типы массивов

Динамические массивы

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

Пример динамического массива на Delphi byteArray : Array of Byte; // Одномерный массив multiArray : Array of Array of string; // Многомерный массив Пример динамического массива на Си float *array1; // Одномерный массив int **array2; // Двумерный массив array1 = (float*) malloc(10 * sizeof(float)); // выделение 10 блоков по sizeof(float) байт каждый array2 = (int**) malloc(16 * sizeof(int*)); // выделение 16 блоков по sizeof(int*) байт каждый. Сюда будут записаны указатели на одномерные массивы-строки for(i = 0; i < 16; i++) array2[i] = (int*) malloc(8 * sizeof(int)); // выделение 8 блоков по sizeof(int) байт каждый. Это одномерные массивы - строки матрицы. // Обращение к массиву array1[i]=5.0; // Записи эквивалентны. Первая с использованием индекса, *(array1+i)=5.0; // вторая с операцией разыменования. array2[i][j]=6; // Записи эквивалентны. Первая с использованием индекса, *(*(array2+i)+j)=6; // вторая с операцией разыменования.

Пример динамического массива на С++

float *array1; // Одномерный массив int **array2; // Многомерный массив array1 = new float[10]; // выделение 10 блоков размером типа float array2 = new int*[16]; // выделение 16 блоков размером типа указателя на int for(int i = 0; i < 16; i++) { array2[i] = new int[8]; }

Гетерогенные массивы

Гетерогенным называется массив, в разные элементы которого могут быть непосредственно записаны значения, относящиеся к различным типам данных. Массив, хранящий указатели на значения различных типов, не является гетерогенным, так как собственно хранящиеся в массиве данные относятся к единственному типу — типу «указатель». Гетерогенные массивы удобны как универсальная структура для хранения наборов данных произвольных типов. Отсутствие их поддержки в языке программирования приводит к необходимости реализации более сложных схем хранения данных. С другой стороны, реализация гетерогенности требует усложнения механизма поддержки массивов в трансляторе языка. Гетерогенный массив как встроенный тип данных присутствует в языках PHP и 1С[источник не указан 33 дня].

Реализация

Одним из способом реализации статических массивов с одним типом элементов является следующий (в Фортране порядок индексов противоположен таковому в Си[4]):

  1. Под массив выделяется непрерывный блок памяти объёмом S*m1*m2*m3…mn, где S — размер одного элемента, а m1…mn — размеры диапазонов индексов (то есть количество значений, которые может принимать соответствующий индекс).
  2. При обращении к элементу массива A[i1, i2, i3, …, in] адрес соответствующего элемента вычисляется как B+S*((…(i1p*m1+i2p)*m2+…+i(n-1)p)*mn-1+inp), где B — база (адрес начала блока памяти массива), ikp — значение k-го индекса, приведённое к целому с нулевым начальным смещением.

Таким образом, адрес элемента с заданным набором индексов вычисляется так, что время доступа ко всем элементам массива одинаково.

Первый элемент массива, в зависимости от языка программирования, может иметь различный индекс. Различают три основных разновидности массивов: с отсчетом от нуля (zero-based), с отсчетом от единицы (one-based) и с отсчетом от специфического значения заданного программистом (n-based). Отсчет индекса элемента массивов с нуля более характерен для низкоуровневых языков программирования, однако этот метод был использован в языках более высокого уровня языком программирования Си.

Более сложные типы массивов — динамические и гетерогенные — реализуются сложнее.

Достоинства

Недостатки

См. также

Литература

Примечания

dic.academic.ru

49. Понятие и определение массива

Массив представляет собой индексированную последовательность однотипных элементов с заранее определенным количеством элементов. Все массивы можно разделить на две группы: одномерные и многомерные.

Аналогом одномерного массива из математики может служить последовательность некоторых элементов с одним индексом: при i = 0, 1, 2, … n – одномерный вектор. Каждый элемент такой последовательности представляет собой некоторое значение определенного типа данных. Наглядно одномерный массив можно представить как набор пронумерованных ячеек, в каждой из которых содержится определенное значение:

0 1 2 3 5

3.02 1.5 7.0 -2.3 12.0

Это пример одномерного массива из 6 элементов, каждый из которых представляет собой некоторое вещественное значение и каждое из этих значений имеет индекс от 0 до 5.

А вот пример одномерного массива из десяти элементов, представляющих собой одиночные символы:

0 1 2 3 4 5 6 7 8 9

‘a’ ‘b’ ‘c’ ‘+’ ‘1’ ‘2’ ‘!’ ‘#’ ‘@’ ‘&’

Каждый элемент в этих массивах определяется значением индекса элемента. Например, в последнем массиве элемент с индексом 5 равен символу ‘2’.

Двумерный массив – это последовательность некоторых элементов с двумя индексами: при i = 0, 1, 2, … n и j = 0, 1, 2, … m – двумерная матрица. Например, при n = 3 и m = 4:

j

0 1 2 3

0 1001 25 167 33

i 1 0 41 226 52

2 4 15 54 45

Эта матрица из 3-х строк и 4-х столбцов содержит 3 * 4 = 12 целых значений. Здесь уже каждый элемент определяется значениями двух индексов. Например, элемент с индексом i = 2 и индексом j = 1 равен целому значению 15.

Количество мерностей массивов может быть и больше двух, но при мерности большей 3 наглядно представить такой массив достаточно сложно.

50-51.Одномерные и многомерные массивы, их вывод

Объявление одномерных массивов

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

<Базовый тип элементов> <Идентификатор массива> [<Количество элементов>]

Например:

int ArrInt [10], A1 [20];

double D [100];

char Chars [50];

bool B [200];

Значения индексов элементов массивов всегда начинается с 0. Поэтому максимальное значение индекса элемента в массиве всегда на единицу меньше количества элементов в массиве.

Обращение к определенному элементу массива осуществляется с помощью указания значения индекса этого элемента:

A1 [8] = -2000;

cout << A1 [8]; // На экран выведено -2000

В этом примере, обратившись к элементу массива A1 с индексом 8, мы, фактически, обратились к его 9-му элементу.

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

При объявлении массива его можно инициализировать определенными значениями:

short S [5] = {1, 4, 9, 16, 25};

или так:

short S [ ] = {1, 4, 9, 16, 25};

Во втором случае мы не указываем количество элементов массива S. Автоматически создается массив на 5 элементов в соответствии с инициализирующими значениями.

Эти инициализации будут эквивалентны следующим операциям присваивания:

S[0] = 1;

S[1] = 4;

S[2] = 9;

S[3] = 16;

S[4] = 25;

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

Значения всех элементов массива в памяти располагаются в непрерывной области одно за другим. Общий объем памяти, выделяемый компилятором для массива, определяется как произведение объема одного элемента массива на количество элементов в массиве и равно:

sizeof( <Базовый тип> ) * <Количество элементов>

Для предыдущего примера объем массива S будет равен sizeof( short) * 5 = 2 * 5 = 10 байтам.

Поскольку все элементы массивов располагаются в памяти один за другим без разрывов, обращение к элементам массива по их индексам (какой бы длины не был этот массив) осуществляется очень эффективно путем вычисления адреса нужного элемента. Пусть, например, адрес памяти, где начинается массив S, равен 100, тогда адрес элемента этого массива с индексом 3 будет равен 100 + sizeof( short) * 3 = 100 + 2 * 3 = 106. Обращаемся по этому адресу и считываем 2 байта. Это и будет значением элемента с индексом 3 массива S.

В языке C++ не осуществляется проверка выхода за границы массивов. То есть, вполне корректно (с точки зрения компилятора) будет обращение к элементу массива S, индекс которого равен 10. Это может привести к возникновению весьма серьезных отрицательных последствий. Например, если выполнить присвоение S[10] = 1000 будут изменены данные, находящиеся за пределами массива, а это может быть значение какой-нибудь другой переменной программы. После этого предсказать поведение программы будет невозможно. Единственный выход – быть предельно внимательным при работе с индексами элементов массивов.

Объявление многомерных массивов

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

int A1 [5] [3]; // Двумерный массив, элементами которого являются

// значения типа int

double D [10] [15] [3]; // Трехмерный массив, элементами которого являются

// значения типа double

Здесь массив A1 представляет собой обычную двумерную матрицу из 5-ти строк и 3–х столбцов.

Массив D – трехмерный массив, который можно представить как трехмерный параллелограмм, навранный из 3-х двумерных матриц.

Общее число элементов в многомерном массиве определяется как произведение количества элементов по каждому измерению. Так, например, массив D содержит 10 * 15 * 3 = 450 элементов типа double, а объем памяти, требующийся для этого массива, будет равен 450 * 4 = 1800 байтам.

Массивы с большим, чем 3, количеством измерений используются достаточно редко. Одной из причин этого является быстрый рост объема памяти, необходимой для размещения таких массивов.

В следующей таблице показана схема размещения элементов массива A1 в памяти:

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

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

int A1 [5] [3] =

{

1, 1, 1,

2, 4, 8,

3, 9, 27,

4, 16, 64,

5, 25, 125

};

или так:

int A1 [ ] [3] =

{

1, 1, 1,

2, 4, 8,

3, 9, 27,

4, 16, 64,

5, 25, 125

};

Во втором определении опущен размер массива по первому индексу, при этом автоматически ему назначается значение 5 в соответствии с инициализирующими значениями. Размеры массивов по второму и по следующим индексам опускать нельзя.

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

cout << A1 [1] [2]; // На экран выведено значение 8

studfiles.net

Массив (программирование) - это... Что такое Массив (программирование)?

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

Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива.

В ряде скриптовых языков, например PHP, ассоциативные массивы, в которых переменные не обязаны быть однотипными, и доступ к ним не обязательно осуществляется по индексу.

Общее описание

Массив — Упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.

Пример статического массива на Паскале -

wordArray : array [Word] of Integer; // Статический, размер = High(Word) + 1 multiArray : array [Byte, 1..5] of Char; // Статический массив, 2 измерения rangeArray : array [5..20] of String; // Статический массив, размер = 16

Пример статического массива на Си -

int Array[10]; // Статический, размер 10, базовый тип данных - целое число (int) double Array[12][15]; // Статический массив, 2 измерения, базовый тип данных - число // с дробной частью (double)

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

В языках программирования, допускающих объявления программистом собственных типов, как правило, существует возможность создания типа «массив». В определении такого типа может указываться размер, тип элемента, диапазон значений и типы индексов. В дальнейшем возможно определение переменных созданного типа. Все такие переменные-массивы имеют одну структуру. Некоторые языки поддерживают для переменных-массивов операции присваивания (когда одной операцией всем элементам массива присваиваются значения соответствующих элементов другого массива).

Объявление типа «массив» в Паскале -

type TArrayType = array [0..9] of Integer; (* Объявления типа "массив" *) var arr1, arr2, arr3: TArrayType; (* Объявление трёх переменных-массивов одного типа *)

Специфические типы массивов

Динамические массивы

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

Пример динамического массива на Delphi

byteArray : Array of Byte; // Одномерный массив multiArray : Array of Array of string; // Многомерный массив

Пример динамического массива на Си

float *array1; // Одномерный массив int **array2; // Многомерный массив array1=(float*)malloc(10*sizeof(float)); // выделение 10 блоков по sizeof(float)байт каждый array2=(int**)malloc(16*sizeof(int)); // выделение 16*8 блоков по sizeof(int) байт каждый for(i=0;i<16;i++) array2[i]=(int*)malloc(8*sizeof(int));

Гетерогенные массивы

Гетерогенным называется массив, в разные элементы которого могут быть непосредственно записаны значения, относящиеся к различным типам данных. Массив, хранящий указатели на значения различных типов, не является гетерогенным, так как собственно хранящиеся в массиве данные относятся к единственному типу — типу «указатель». Гетерогенные массивы удобны как универсальная структура для хранения наборов данных произвольных типов. Отсутствие их поддержки в языке программирования приводит к необходимости реализации более сложных схем хранения данных. С другой стороны, реализация гетерогенности требует усложнения механизма поддержки массивов в трансляторе языка.

Массивы массивов

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

Реализация

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

  1. Под массив выделяется непрерывный блок памяти объёмом S*m1*m2*m3…mn, где S — размер одного элемента, а m1…mn — размеры диапазонов индексов (то есть количество значений, которые может принимать соответствующий индекс).
  2. При обращении к элементу массива A[i1, i2, i3, … in] адрес соответствующего элемента вычисляется как B+S*(i1p*m1+i2p*m2+…+i(n-1)p*mn-1+inp), где B — база (адрес начала блока памяти массива), ikp-значение k-го индекса, приведённое к целому с нулевым начальным смещением.

Таким образом, адрес элемента с заданным набором индексов вычисляется, так что время доступа ко всем элементам массива одинаково.

Первый элемент массива, в зависимости от языка программирования, может иметь различный индекс. Различают три основных разновидности массивов: с отсчетом от нуля (zero-based), с отсчетом от единицы (one-based), и с отсчетом от специфического значения заданного программистом (n-based). Отсчет индекса элемента массивов с нуля более характерен для низкоуровневых ЯП, однако этот метод был популяризирован в языках более высокого уровня языком программирорования С.

Более сложные типы массивов — динамические и гетерогенные — реализуются сложнее.

Достоинства

Недостатки

См. также

Ссылки

Wikimedia Foundation. 2010.

dic.academic.ru

22.23. Определение массива

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

22.22. Начальный индекс массива

Рис. 22.27

Описанный способ инициализации массивов не единственно возможный. Часто, например, значение элементов массива является функцией их индексов. В этом случае инициализировать массив можно с помощью переменных со значениями-диапазонами– см.рис. 22.28.

Рис. 22.28

22.24. Вложенные массивы

Исключительно мощный инструмент MathCad – вложенные массивы. Идея, положенная в основу при реализации этих объектов, концептуально достаточно проста – это массивы, элементами которых, в свою очередь, яв-

 Математическое программное обеспечение. Учебное пособие

-192-

22.ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

22.24.Вложенные массивы

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

Рис. 22.29

Пример объявления трех различных массивов а, b и с приведен на рис. 22.29. Эти массивы далее указываются в качестве элементов массива d. Последний, таким образом, является вложенным массивом.

По умолчанию задан режим, при котором в качестве значения вложенного массива отображается только его структура без указания в явном виде элементов. Например, для значения массива d приведено выражение ({3,1}{4,1}{2,2}). Это значит, что массивd состоит из трех элементов, а они, в свою очередь, являются массивами из трех строк и одного столбца (первый элемент), четырех строк и одного столбца (второй элемент) и, наконец, двух строк и двух столбцов (третий элемент). Чтобы вложенный массив отображался в явном виде, следует активизировать опцию Expand nested arrays, которую можно найти на вкладкеDisplay Options диалогового окнаResult Format. Окно, как уже упоминалось, открывается выбором командыFormat | Result – см.рис. 22.30.

 Математическое программное обеспечение. Учебное пособие

-193-

22.ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

22.24.Вложенные массивы

Рис. 22.30

При активизированной опции Expand nested arrays значение массива d в рабочем листе показано нарис. 22.31.

Рис. 22.31

Доступ к элементам вложенного массива получают так же, как и в случае обычного: следует указать название вложенного массива и индексы элемента – см. рис. 22.32.

Рис. 22.32

 Математическое программное обеспечение. Учебное пособие

-194-

22.ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

22.24.Вложенные массивы

Если просто указать два индекса, то в качестве значения элемента вложенного массива в рассматриваемом случае будет возвращен массив – как и должно быть. Однако часто бывает необходимо найти элемент того массива, который сам является элементом вложенного массива. В этом случае после указания индексов, определяющих элемент-массив,указываются также и индексы элемента в структуре выделенногоэлемент-массива.Последовательность ввода командного кода такая: указывается название исходного вложенного массива, далее переходят в режим ввода индексов (клавиша<[>) и через запятую вводят индексыэлемент-массива,а после этого указывают индексы элемента в этом массиве (придется еще раз нажать клавишу<[>). Индексы имеют разный иерархический уровень, т. е. это не четыре указанных через запятую индекса, а индексы для элемента с индексами.

Рис. 22.33

Скобки возле названия элемента-массивадобавляются автоматически при вводе второй серии индексов – см.рис. 22.33. Если уровней индексов больше, чем два, принцип обращения к элементам остается таким же: сначала указываются индексыэлемента-массива,далее индексыэлемента-массивавнутри этого массива, после этого снова индексы элемента внутри этого массива и т. д. В этом случае речь идет о вложенном массиве, элементом которого является вложенный массив.

22.25. Операции с массивами

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

В первую очередь отметим,что по отношению к векторам и матрицам могут применяться такие арифметические операции, как сложение, вычитание, деление и умножение. Правда, если операндами служат массивы, они должны удовлетворять некоторым условиям. Так, для того, чтобы можно было сложить

 Математическое программное обеспечение. Учебное пособие

-195-

22.ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

22.25.Операции с массивами

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

Рис. 22.34

Когда число столбцов массива А равно числу строк массиваВ, можно вычислять их произведение с помощью обычного оператора умножения. В результате получается массив, число строк которого равно числу строк первого массива, а число столбцов – числу столбцов второго. Так, еслиС =А*В,

то элементы массива С вычисляются по формулеCi, j = ∑Ai,k Bk, j , а сумма

k

берется по всем индексам k. Таким образом, операция умножения массивов в MathCadе соответствует правилу умножения матриц.

Помимо оператора умножения при работе с массивами допустим и оператор деления. Правда, в этом случае второй операнд должен быть численным. В результате каждый элемент первого операнда-массиваделится на второйоперанд-число.К квадратным матрицам (массив с одинаковым количеством строк и столбцов) применима операция возведения в степень (комбинация клавиш<Shift>+<6>). В качестве степени можно указывать любое целое число, в том числе и отрицательное – см.рис. 22.34.

 Математическое программное обеспечение. Учебное пособие

-196-

studfiles.net

МАССИВ - это... Что такое МАССИВ?

  • МАССИВ — Искусственный большой камень из бетона. Словарь иностранных слов, вошедших в состав русского языка. Чудинов А.Н., 1910. МАССИВ искусствен. камень больших размеров из бетона, употр. для подводн. сооружений. Словарь иностранных слов, вошедших в… …   Словарь иностранных слов русского языка

  • МАССИВ — (французское massif, буквально мощный, сплошной), 1) горная возвышенность, сравнительно мало расчлененная и имеющая примерно одинаковые размеры в длину и ширину (например, массив Тянь Шаня). 2) Большое пространство, однородное по каким либо… …   Современная энциклопедия

  • массив — V массив Массив переменной размерности разновидность коллекции, см. также nested table (вложенная таблица). Отличается от вложенной таблицы тем, что 1) должен иметь ограничение по числу элементов; 2) в БД хранится вместе с другими столбцами… …   Справочник технического переводчика

  • МАССИВ — МАССИВ, массива, муж. (франц. massif). Возвышенность, основная, наиболее высокая часть горной местности. Горный массив. Центральный массив Кавказа. || Большое пространство, однородное по своему географическому типу. Лесные массивы севера.… …   Толковый словарь Ушакова

  • МАССИВ — (франц. massif букв. мощный, сплошной), совокупность многих однородных по каким либо признакам объектов, предметов, данных и т. п., напр. массив жилой, лесной, информационный и т. д. Массивом называется также искусственный камень правильной формы …   Большой Энциклопедический словарь

  • Массив — последовательность однотипных элементов, число которых фиксировано и которым присвоено одно имя. Положение элемента в массиве однозначно определяется его индексами. Выделяют одномерные массивы (вектора) и двумерные массивы (матрицы). По английски …   Финансовый словарь

  • массив — скопление, сосредоточение, конгломерат Словарь русских синонимов. массив сущ., кол во синонимов: 8 • амба (54) • жилмас …   Словарь синонимов

  • Массив — часть застроенной территории населенного пункта, ограниченная свободной (незастроенной) площадью. Массив может быть разделен на несколько регистраторских участков... Источник: ПРИКАЗ Росстата от 13.04.2009 N 61 ОБ УТВЕРЖДЕНИИ ПЕРЕПИСНЫХ… …   Официальная терминология

  • МАССИВ — МАССИВ, в вычислительной технике часть ДАННЫХ, обычно архива, который, в свою очередь, является частью БАЗЫ ДАННЫХ …   Научно-технический энциклопедический словарь

  • Массив — искусственный камень больших размеров из бетона,употребляемый для подводной кладки в портах. М. применялись ещеримлянами, но вновь изобретены и введены в строительную практикуфранцузом Пуарелем. Первоначально употреблены были в Алжирском порте… …   Энциклопедия Брокгауза и Ефрона

  • dic.academic.ru

    Массивы в стиле языка с89

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

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

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

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

    При определении (объявлении) и при обращении к отдельным элементам массива используется бинарный оператор индексирования ([...]). Вначале будут рассмотрены, которые предусмотрены стандартом языка С89. Особенность этих массивов состоит в том, что размер памяти, которая должна быть для них выделена, должен быть известен на этапе компиляции. Затем в пункте 1.39. будут рассмотрены массивы с переменными размерами. Особенностью последнего вида массивов является то положение, что определение необходимего объем памяти может быть отложено до этапа выполнения программы.

      1. Определение и объявление массивов

    При работе с переменными, являющимися массивами, следует различать его объявление и определение. Здесь имеет место полная аналогия с обычными переменными. Определение массива позволяет компьютеру выделить память. Определение массива должно содержать информацию, достаточную для выделения памяти. Каждый массив должен иметь только одно определение. На количество объявлений массива ограничений нет. Отличительным признаком объявления является наличие в нем зарезервированного слова extern.

        1. Определение и объявление одномерных массивов. Иницициализация одномерных массивов при их определении. Доступ к элементам массива.

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

    Общий формат определения одномерного массива в стиле стандарта С89 имеет следующий:

    <α> <>[<γ>] = <μ>;

    Здесь α- тип элементов, хранящихся в массиве; - имя массива, [..] – оператор индексирования; γ – константное выражение, определяющее размер памяти, выделяемой для хранения элементов массива Конструкция «= <μ>» используется для инициализации массива; μ – список инициализаторов.

    Обращает на себя внимание использование в объявлении и в определении массива оператора индексные скобки

    Для обращения к отдельным элементам одномерного массива имеет сдующий формат:

    <>[<σ>]

    Здесь - имя массива, [] – оператор индексные скобки, σ- арифметическое целочисенное выражение, значение которого определяет индекс элемента.

    Пример 1 Определение глобального и локального массива.

    #define MSIZE1 20 int x[MSIZE]; int main(void) { double z[5]; z[0] = 10; }

    В этом примере имеются опредеделения двух одномерных массивов. Первый массив (x) является глобальным. Он предназначен для хранения 20 элементов типа.int. В связи с тем, что определение этого массива находится вне функций, его элементы в момент выделения памяти будут обнулены. Второй массив (z) является локальным. Он предназначен для хранения 5 элементов типа.double. Элементы этого массива будут содержать «мусор». В теле функцииmain() с помощью оператора присваивания элементу массиваzс нулевым индексом присваивается значение 10.

    Пример 2. Определение и объявление массивов.

    Пусть в некоторой программе имеются два модуля. В первом модуле содержится функция main(), а во втором модулеcс именемmoduleсодержатся объявление и опрелеление массиваx.

    // Первый модуль #inclde “module.h” int main(void) { // Работаем с массивом x x = 10; } // Второй модуль (module). Интерфейсный файлmodule.h#defineMSIZE20externx[]; // Это объявление массиваx// Второй модуль. Файл реализацииmodule.c#include“module1.c”intx[MSIZE];// Здесь выделяется память для массиваx

    В интерфейсном файле module.hсодержится объявление массиваx. а в файле реализацииmodule.cнаходится определение массиваx. Функция полчает доступ к этому массиву, что позволяет ей записать в элементx[0] значение 10.

    Пример 3. Инициализация массива во время определения

    Рассмотрим программный код, приведенный ниже.

    #define MSIZE 5 int main(void) { int x1[MSIZE] = {1, 3, 5, 7, 9}; int x2[MSIZE] = {1, 3, 5}; int x3[MSIZE] = {1, 3, 5, 7, 9, 11};// Ошибка int x4[] = {1, 3, 5, 7, 9}; int x5[MSIZE] = {0}; }

    В рассматриваемом коде объявлено пять массивов. Все массивы имеют одинаковый размер, определяемый константой MSIZE, равной 5. Здесть количество элементов в массиве совпадает с количеством инициализаторов. При объявлении массиваx1 список инициализации содержит 5 констант. Элементx1[0] этого массива инциализируется первой константой, равной 1, затем элементx1[1] инициализируется константой 2 и т. д. Наконец, элементx1[4] инициализируется последней константой из списка инициализации, равной 9. Количество элементов массива и количество инциализаторов может не совпадать. Если количество элементов массива превышает количество инициализаторов, то элементы массива, для которых «не хватило» инициализаторов обнуляются. Например,x2[3] ==x2[4] == 0; Случай, когда инициализаторов превышает количество элементов массива, рассматривается как ошибочный. При компиляции определения массиваx3 будет выдано сообщение об ошибке. Заметим, что при наличии списка инициализации размер требуемой памяти можно не указывать, что, и сделано при определении массиваx4.

    studfiles.net

    87. Древесно-кустарииковые массивы -определение, классификация, композиционное использование

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

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

    Древесные массивы могут состоять из одной древесной породы (чистые) или нескольких (смешанные). Смешанные массивы имеют ряд преимуществ по сравнению с чистыми, они более устойчивы, менее подвержены поражению вредителями и болезнями, для них характерно разнообразие красок и форм. В массивах используют наиболее долговечные, устойчивые деревья I и II величины, например дуб, липу, ель, сосну, березу и т. п. В смешанные массивы не следует вводить много пород, рекомендуется ограничиваться 3-5 породами

    88. Группы древесных растений, классификация.

    Группа — это сочетание древесных растений одного или нескольких ви­дов, расположенных изолированно на открытом пространстве парка. При формировании групп необходимо учитывать пропорциональность и единство частей, ритм, масштаб, пропорции, контраст. В многофунк. парках древ.-кустар. группы должны обрамлять функциональные зоны, декорировать сооружения, создавать контраст закрытых, полуоткрытых и открытых пространств. Включение кустарников завершает композицию группы, дополняя ее окраской листьев, ветвей, цветков. Группы деревьев окаймляются ку­старниками в след-х случаях: для создания хроматических по цвету групп (вводят кустарники с яркой, пестрой окраской или красивоцветущие), для создания плотной, облиственной до земли группы, для объединения группы деревьев в еди­ную композицию, для построения вы­разительного силуэта, очертания, объема групп; для создания групп длительного цветения. В парках встречаются группы с ко­личеством деревьев и кустарников от 2 до 25—30 и более, качество групп зависит не от количества составляющих ее экземпляров, а от подбора видов растении и их разме­щения. Группа более живописна при размещении кустарников в од­ном или нескольких местах. По величине группы разде­ляются: малые — диаметр проекции кроны не более 25 м, средние — не более 50, большие — до 80 м. Вы­сота группы определяется по самому высокому дереву. По дендрологическому составу группы бывают чистые и смешанные. Группы с небольшим количеством экземпляров от 2 до 5— 7 чаще бывают чистыми (группы долины р. Славянки). Группы от 10 до 20 растений — пре­имущественно смешанные по составу (район Парадного поля в Павловске). Группы смешанные, по составу, отличаются большой сложностью построения. Следует учитывать, что в смешан­ных группах происходит потеря де­коративных качеств, в случае совме­щения деревьев и кустарников с раз­личной долговечностью или в резуль­тате неблагоприятных взаимных влияний. Смена состава группы при­водит к изменению ее декоративного облика. Расположение деревьев и кустарников (построение) в группах имеет большое значение для формирования здорового, жиз­неспособного фитоценоза и худо­жественного облика. Деревья в группах могут размещаться на равных расстояниях, симметрично по отношению друг к другу или несимметрично (свободное расположение). Кустарники в группах размещаются на 0,5—3 м друг от друга, в зави­симости от их величины. Крупные (боярышник, сирень) высаживают на расстоянии 1—3 м друг от друга; средние (виды, и сорта роз, снежно­ягодник) — 0,8—1,5; мелкие (барба­рис Тунберга, некоторые виды спи­рей) — 0,1—0,7 м. Рекомендуется сомкнутость в группах: для светолюбивых пород не менее 0,5, для теневыносливых - 0,6. расстояние между деревьями на бедных поч­вах '/4—1/5 на богатых —'/з —1/4 высоты дерева. По построению группы разделяются на регулярные и иррегулярные, контрастные и нейтральные (построенные на нюан­сах одного декоративного признака), по цветy, структуре, форме, которые, в свою очередь, членятся на имеющие «ядро» и не имеющие его. Ядро группы, формируется из одного или нескольких растений, обычно более высоких. Оно может быть чистым и смешанным по составу. По густоте посадки (или структуре) растения в группах можно разделить на: а) плотные, или густые, б) рых­лые, или ажурные, в) группы с про­светами. Плотные группы образуют монолитный объем, лишенный сквозной просматриваемости, а поэтому изо­лирующий пространство. Рыхлые, или ажурные, группы представлены редкими посадками, позволяющими хорошо развиться каждому растению. Они имеют сквоз­ную просматриваемость (сосна, береза, листвен­ница ель, липа). Группы с просветами представляют собой структурный вариант ажурных, реже плотных групп. Величина просвета в небольшой группе бывает 0,5—3—5 м (для взрослых деревьев), но не более, ина­че нарушаются единство и цельность. В больших группах величина просвета может доходить до 5-9 м.

    Форма группы является одним из основных декоративных качеств. Она оказывает влияние на характер пейзажа и зависит от подбора древесно-кустар. растений и их компоновки. Силуэт больших групп (при участии высоких деревьев с пирамидальной, колонновидной формой) строится с 2—3 вертикаля­ми. Наиболее интересными в пейзаж­ных парках являются асимметрич­ные группы с большей высотой по отношению к ширине и четким опре­деленным силуэтом. Архитектоника группы оп­ределяется типом ветвления, толщи­ной ветвей, расположением листвы, величиной и формой листовых пла­стинок древ. раст.. Разли­чаются группы с грубой, средней, тонкой и смешанной структурной. Компоновка групп определяется их назначением в пейзаже. Красочность группы зави­сит от составляющих ее видов и яв­ляется очень важным качеством, от которого иногда полностью зависит эффект композиции. В парках встре­чаются как однотонные группы (50—70%), так и контрастные (30— 35%) по цвету. Цветовой эффект группы обычно рассчитан на разные сезоны года. По назначению в пейзаже выделяются:

    — группы, являющиеся главным композиционным центром парковой картины. Они размещаются в так называемых карманах, на полянах, завершают перспективу, закрепля­ют повороты дорожек, у воды;

    — группы, создающие фон для сооружения или других акцентов;

    — группы как переход от массива к открытому пространству;

    — группы, образующие парковые кулисы — «рамы», разграничиваю­щие пространство на отдельные ви­ды и группы, создающие многопла­новые перспективы;

    — группы в опушке массива или куртины, выделяемые как акценты.

    Если учесть все перечисленные показатели при проектировании группы, её живописность и выразительность увеличатся.

    studfiles.net