Массив — это тип данных, который может содержать произвольное количество значений произвольных типов (элементов). Программист может обратиться к любому элементу массива указав порядковый номер элемента. Тип массива в программе описывается как «Array Of Variant».
Procedure OnCreate; Var A : Array Of Variant; Begin End;
Array.Count — размер массива
Для получения или изменения размера массива используется свойство Count
Procedure OnCreate; Var A : Array Of Variant; Begin // Сейчас массив A содержит 0 элементов A.Count := 10; // Теперь массив A содержит 10 элементов End;
Array[N] или Array.Item(N) — Элемент массива
Доступ к элементу массива осуществляется с помощью оператора [], либо с помощью метода Item.
Procedure OnCreate; Var A : Array Of Variant; X : Variant; N : Integer; Begin A.Count := 10; A[7] := ‘A’; // Установка значения 7-ого элемента A.Item(4) := 1000; // Установка значения 4-ого элемента N := 4; A[N] := 4.1; // Установка значения 4-ого элемента X := A[7]; // Получение значения 7-ого элемента и запись этого значения в переменную X Warning(A[4] As String); // Получение значения 4-ого элемента и вывод его на экран End;
Array.Append — Добавление элемента в массив
Для добавления элемента в конец массива предназначен метод Append
Цикл «Для каждого» в 1С и работа с массивом
A.Append(15);
Остальные методы массива описаны в разделе справки Класс Array.
Ограничение типов значений
В языке программирования предусмотрена возможность ограничить типы значений, которые можно сохранить в массиве. Такие типы в программе описываются как Array Of Integer, Array Of Boolean, Array Of Dataset.
Procedure OnCreate; Var A : Array Of Integer; Begin A.Count := 10; A[4] := 1000; // Установка значения 4-ого элемента A[7] := ‘A’; // Вы не можете сохранить в массив строку End;
Копирование массивов
Массивы можно копировать с помощью оператора :=.
Procedure OnCreate; Var A, B : Array Of Integer; Begin A.Count := 5; A[3] := 100; B := A; A[3] := 200; Warning(‘A=[‘+ToStr(A)+’] B=[‘+ToStr(B)+’]’); // A=[0,0,0,200,0] B=[0,0,0,100,0] End;
Команда []
Для удобного описания массивов предназначена команда []
Procedure OnCreate; var A : Array Of String; I : Integer; Begin A := [’10’,’20’,’30’,’40’,’50’]; Warning(‘1) ‘+A[2]); // 1) 30 Warning(‘2) ‘+[’10’,’20’,’30’,’40’,’50’][2]); // 2) 30 I := [’10’,’20’,’30’,’40’,’50’].Find(’40’); Warning(‘3) ‘+IntToStr(I)); // 3) 3 End;
При описании массива допускается использование арифметических выражений
Procedure OnCreate; var X : Float; A : Array Of Float; Begin X := 0.34; A := [X, X+2, X*X, Sin(X)]; End;
Копирование массивов в переменные типа Array и Variant
Все массивы можно скопировать в переменные типа Array или Variant. При этом создается копия массива, изменение которой не влияет на исходный массив.
Procedure OnCreate; Var A : Array Of Variant; B : Array Of Integer; C : Array Of String; V : Array; Begin A := [12,’A’,-0.12]; V := A; Warning(ToStr(V)); // 12,A,-0.12 B := [10,20,30]; V := B; Warning(ToStr(V)); // 10,20,30 C := [‘Привет’,’мир’]; V := C; Warning(ToStr(V)); // Привет,мир End;
Это преобразование может использоваться для передачи произвольного массива в процедуру.
Паскаль с нуля [ч7]. Одномерные массивы.
Procedure OnCreate; Var A : Array Of Variant; B : Array Of Integer; C : Array Of String; Begin A := [12,’A’,-0.12]; Print(A); // 12,A,-0.12 B := [10,20,30]; Print(B); // 10,20,30 C := [‘Привет’,’мир’]; Print(C); // Привет,мир End; Procedure Print(A : Array); Begin Warning(ToStr(A)); End;
Так же любой массив можно скопировать в переменную типа Variant.
Это преобразование так же можно использовать для передачи произвольного массива в процедуру, но при этом, в процедуру можно передать и любое другое значение. Тип данных Variant работает медленее, чем Array.
Procedure OnCreate; Var A : Array Of Variant; B : Array Of Integer; C : Array Of String; V : Variant; Begin A := [12,’A’,-0.12]; V := A; Warning(V.Item(1) As String); // A B := [10,20,30]; V := B; Warning(V.Item(1) As String); // 20 C := [‘Привет’,’мир’]; V := C; Warning(V.Item(1) As String); // мир End;
Источник: tmaplatform.ru
Массивы в Паскаль.
Те программы, которые мы рассматривали раньше, позволяют работать с одиночными объектами (символы, числа). Но иногда есть необходимость использовать множество однотипных объектов. Объединение таких однотипных объектов называется массивом.
Массивы удобно использовать когда необходимо объединить несколько родственных объектов.
Рассмотрим программу, которая будет выводить на экран температуру 12 месяцев года.
Массивы в Паскаль.
program temp; uses crt; var mes1,mes2,mes3,mes4,mes5,mes6,mes7,mes8,mes9,mes10,mes11,mes12:integer; begin clrscr; mes1:=30; mes2:=40; mes3:=50; mes4:=60; mes5:=30; mes6:=20; mes7:=70; mes8:=30; mes9:=40; mes10:=80; mes11:=20; mes12:=50; writeln (mes1,mes2,mes3,mes4,mes5,mes6,mes7,mes8,mes9,mes10,mes11,mes12); readln end.
В строке №3 (раздел описания переменных) мы записываем переменные для каждого месяца.
В строках №5 — №16 мы присваиваем каждой переменой какое – то значение (температуру).
В строке №15 выводим эти значения на экран.
Неудобство данной программы заключается в том, что для каждого значения температуры нам необходимо создавать отдельную переменную. Для решения этой проблемы используются массивы.
Приведенную выше программу можно записать в таком виде.
program massiv1; uses crt; var i, mes: array [1..12] of integer; i:integer; begin clrscr; mes[1]:=30; mes[2]:=40; mes[3]:=50; mes[4]:=60; mes[5]:=30; mes[6]:=20; mes[7]:=70; mes[8]:=30; mes[9]:=40; mes[10]:=80; mes[11]:=20; mes[12]:=50; for i:=1 to 12 do writeln (mes[i]); readln end.
В строке №3 (в разделе для описания переменных) мы записываем массив. Он имеет следующий вид: Вначале записывается название массива, которое вы придумываете сами (в нашей программе массив имеет имя «mes»). Затем через двоеточие пишется служебное слово «array» (в переводе с английского – массив).
Далее, в квадратных скобках следует тип индекса (фактически это порядковый номер элемента массива). В нашем примере тип индекса [1..12] – интервальный, изменяется от 1 до 12 (существуют другие типы индекса, о них поговорим позже). Фактически запись [1..12] означает, что в массиве есть 12 элементов (переменных для каждого месяца года).
Если бы нам понадобилось 6 элементов (например, для первых 6 месяцев года), то массив имел бы вид: mes: array [1..6] of integer. В конце записи массива (строка №2) мы указываем тип данных для массива. Так как элементам массива будет присваиваться целое значение (температура), то и тип данных будет целым (integer).
Для того чтобы обратиться к какому-нибудь элементу массиву необходимо указать номер этого элемента. В нашем примере каждому элементу нужно присвоить какое-нибудь значение (температуру). Для этого записываем название массива, после названия в квадратных скобках записываем номер элемента (от 1 до 12) и потом присваиваем ему значение (температуру) (строки №7 — №18).
Строка №19. Используем цикл для вывода на экран значений всех элементов массива. Счетчик цикла «i» в строке №20 будет принимать значения от 1 до 12, что позволит вывести на экран значения температур для всех месяцев года (mes[1], mes[2], mes[3] и т д).
Для описания массива часто используются заранее определенные константы.
program massiv1; uses crt; const N=12; var mes: array [1..N] of integer; i:integer; begin clrscr; mes[1]:=30; mes[2]:=40; mes[3]:=50; mes[4]:=60; mes[5]:=30; mes[6]:=20; mes[7]:=70; mes[8]:=30; mes[9]:=40; mes[10]:=80; mes[11]:=20; mes[12]:=50; for i:=1 to 12 do writeln (mes[i]); readln end.
В строке №3 записываем раздел для описания констант и определяем константу. В данном случае для латинской буквы N мы определили постоянное значение 12, которое не будет меняться по ходу программы.
В строке №4 мы записали массив, у которого диапазон элементов от 1 до N (т.е. фактически от 1 до 12).
Источник: mojainformatika.ru
C Language
Массивы
Массивы представляют собой производные типы данных, представляющие упорядоченный набор значений («элементов») другого типа. Большинство массивов в C имеют фиксированное количество элементов любого одного типа, и его представление хранит элементы смежно в памяти без пробелов или отступов. C допускает многомерные массивы, элементами которых являются другие массивы, а также массивы указателей.
C поддерживает динамически распределенные массивы, размер которых определяется во время выполнения. C99 и более поздние версии поддерживают массивы переменной длины или VLA.
Синтаксис
- имя типа [длина]; / * Определить массив «type» с именем «name» и длиной «length». * /
- int arr [10] = ; / * Определить массив и инициализировать ВСЕ элементы в 0. * /
- int arr [10] = ; / * Определить массив и инициализировать 1-й элемент до 42, а остаток — 0. * /
- int arr [] = ; / * Определить и инициализировать массив длиной 4. * /
- arr [n] = значение; / * Установленное значение при индексе n. * /
- значение = arr [n]; / * Получить значение по индексу n. * /
замечания
Зачем нам нужны массивы?
Массивы обеспечивают способ организации объектов в совокупность с его собственным значением. Например, строки C представляют собой массивы символов ( char s) и строку, такую как «Hello, World!». имеет значение как совокупность, которая не присуща персонажам индивидуально. Аналогично, массивы обычно используются для представления математических векторов и матриц, а также списков многих видов. Более того, без какого-либо элемента для группировки элементов нужно будет решать каждый отдельно, например, через отдельные переменные. Мало того, что это громоздко, он не легко вмещает коллекции разной длины.
Массивы неявно преобразуются в указатели в большинстве контекстов .
За исключением случаев, когда он является операндом оператора sizeof оператором _Alignof (C2011) или оператором unary (arr[0]) эквивалентно arr ), тогда результат имеет тип T (*)[N] и указывает на весь массив. Это отличается от указателя на первый элемент массива, по крайней мере, относительно арифметики указателя, которая определяется в терминах размера заостренного типа.
Функциональные параметры не являются массивами .
void foo(int a[], int n); void foo(int *a, int n);
Хотя первое объявление foo использует синтаксис типа массива для параметра a , такой синтаксис используется для объявления параметра функции, объявляющего этот параметр как указатель на тип элемента массива. Таким образом, вторая сигнатура для foo() семантически идентична первой. Это соответствует распаду значений массива указателям, где они отображаются в качестве аргументов для вызова функции, так что если переменная и параметр функции объявлены с тем же типом массива, то значение этой переменной подходит для использования в вызове функции как аргумент, связанный с параметром.
Объявление и инициализация массива
Общий синтаксис объявления одномерного массива
type arrName[size];
где type может быть любым встроенным типом или определяемыми пользователем типами, такими как структуры, arrName является определяемым пользователем идентификатором, а size является целочисленной константой.
Объявление массива (массив из 10 переменных int в этом случае) выполняется следующим образом:
Источник: learntutorials.net