Array/ru
Тип array (массив) представляет собой последовательность однотипных переменных. Примерами могут служить массивы символов, целых и вещественных чисел. Фактически, в массивах могут использоваться любые типы, включая определенные пользователем. Однако, элементы массива всегда являются однотипными. Элементы разных типов не могут быть сгруппированы в массив. Для этих целей необходимо использовать записи.
Массивы отражают идею таких математических понятий, как
-
(одномерные массивы) и
- матрицы (двумерные массивы)
Contents
Статические массивы
Объявление статического массива выполняется аналогично, как для простых типов, но при этом вам необходимо указать размерность массива (количество элементов) в виде диапазона значений, а также тип элементов.
Значение startindex должно быть меньше либо равно значению endindex. При этом оба значения должны быть целыми константами, либо целочисленными константными значениями. Допускается, если одно или оба значения будут отрицательными либо равными 0.
Одномерный массив
Пример одномерного массива:
Многомерный массив
Многомерные массивы объявляются аналогично одномерным, при этом каждая дополнительная размерность перечисляется через запятую (например [x..y,z..t] и т.д.)
Пример многомерного массива:
Динамические массивы
Если заранее точно не известно необходимое количество элементов массива, то можно воспользоваться динамическим массивом. В процессе выполнения программы размер динамического массива можно увеличивать или уменьшать.
Доступ к элементам массива
Для доступа к элементу массива вам необходимо указать индекс элемента в квадратных скобках ([]) после имени массива. После этого элемент массива можно использовать как обычную переменную.
Массивы литералов
Существует два способа, использующихся для массивов литералов, в зависимости от места их размещения. Вы можете проинициализировать статический массив в секции объявления переменных (для динамических массивов это сделать невозможно) с помощью последовательности значений, заключенных в круглые скобки. В блоке инструкций вы можете создать анонимный массив с помощью ряда значений, заключенных в квадратные скобки. Например:
Массивы в PascalABC.NET
В PascalABC.NET рекомендуется использовать динамические массивы. В отличие от статических, они имеют огромное количество методов и операций, просты в создании, заполнении и выводе.
Описание и выделение памяти
Динамический массив описывается так:
Память под динамический массив a выделяется в момент работы программы:
Здесь — первое преимущество динамических массивов — в переменной a может храниться массив любого размера, память выделяется в процессе работы программы. Кроме того, выделенная память гарантированно автоматически заполняется нулевыми значениями.
Можно совместить описание и выделение памяти — тип динамического массива выводится автоматически:
Обычно в PascalABC.NET совмещают описание динамического массива, выделение памяти и заполнение значениями. Самый простой способ — заполнить n нулями:
Индексация в динамических массивах и использование статических массивов
Динамические массивы индексируются с нуля — это эффективно. В качестве индексов в динамических массивах могут выступать только целые.
Статические массивы тем не менее иногда удобно использовать — в задачах, где индексы либо символьные, либо по-существу начинаются не с нуля. Например, для подсчёта количества слов на каждую букву может использоваться стаический массив
Заполнение статических массивов — увы — производится в цикле. Кроме того, они не помнят свою длину и передача таких массивов в качестве параметров подпрограмм связана с техническими сложностями 40-летней давности, не нужными начинающим.
Простейшее заполнение
Важную роль играют функции заполнения динамических массивов. Перед заполнением они выделяют для массива память, поэтому в одной строке можно совмещать описание, выделение памяти и заполнение.
Простейшее заполнение — набором значений:
Заполнение диапазоном целых или символьных значений делается с использованием функции Arr:
Заполнение определённым значением осуществляется с помощью операции умножения массива на число:
Для заполнения можно также использовать функцию ArrFill:
Для заполнения массива случайными значениями следует использовать
Не рекомендуется использовать алгоритм для заполнения массива случайными в каждой задаче:
Повторять этот текст в каждой задаче — странно. Для этого есть стандартные функции.
Ввод и вывод элементов массива
Для ввода элементов массива базовых типов используются функции
Стандартная процедура вывода Write или Print выводит значения в массиве в квадратных скобках черезх запятую:
Однако лучше всего для вывода воспользоваться методом Print, выводящим все значения в массиве через пробел:
Не рекомендуется вводить и выводить элементы массива в цикле
Повторять этот текст в каждой задаче — странно. Для этого есть стандартные функции.
Циклы по массиву
Для обработки элементов массива используются следующие циклы:
-
Цикл for по индексам (если требуется менять элементв или нужна информация об индексах)
Массивы в Pascal
Массив в программировании является набором элементов одного типа (однотипных).
Различают несколько видов массивов – одномерный (векторный) и многомерный.
Элементы в массиве характеризуются своими именами и порядковыми номерами — индексами.
Индекс – это порядковый номер элемента в массиве.
В Паскале каждому элементу присваивается один или несколько индексов, которые описывают положение элемента в массиве.
Одномерный массив
Синтаксис массива в Pascal таков :
Где :
1 – нижний индекс
10 – верхний индекс
A – имя переменной массива
[ ] – диапазон значений
Integer – тип данных
A[ i ] – обращение к элементу массива в Pascal
Тип элементов массива может быть любым допустимым типом в Pascal, кроме файлов (даже массивом).
Пример массива : A =
Когда описывается массив, его верхний индекс должен быть строго определён.
При описании массива идёт распределение памяти, и компилятор должен знать какое количество памяти нужно выделить под описанный массив.
Ограничения по количеству индексов в массиве Pascal не ограничивается. Однако сам массив не должен быть больше чем 65537 байт.
Массив также можно объявлять в разделе описания типов:
Доступ к элементам массива осуществляется в цикле.
Наиболее рациональным способом обработки элементов массива в Паскаль является оператор цикла с параметром.

Алгоритмы заполнения массива в Pascal
- Ввод элементов массива с помощью компьютера осуществляется с помощью такой конструкции :
Массив можно задать случайным образом с помощью датчика случайных величин.
Для запуска датчика случайных величин в Паскаль нужно прописать специальную конструкцию — Randomize;
Новое значение генерируется с помощью функции Random(n) ,где n – целое число. В таком случае генерируется любое число с диапазоном от 0 до n.
Если функция Random используется без параметра, то она генерирует вещественное число (тип real) в диапазоне 0 < X < 1