. Массивы в языке Паскаль.

Массивы в языке Паскаль.

Контент, который может быть интересен каждому. Без ограничений по темам, форматам и стилям подачи.

Массивы в языке Паскаль

Массив есть упорядоченный набор переменных одинакового типа. Каждая отдельная величина называется компонентой массива. Тип компонент может быть любым, принятым в языке Паскаль, кроме файлового типа. Тип компонент называется базовым типом. Каждая компонента может быть явно обозначена с помощью имени переменной-массива, за которым в квадратных скобках следует индекс. Их тип называется типом индекса. Время, требуемое для доступа любой компоненты, не зависит от значения индекса. Поэтому о массивах можно говорить как об объектах, структура которых допускает случайный (или прямой) доступ.

Содержание

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

Переменная массивового типа описывается в разделе описания переменных в следующей форме:

Чаще всего в качестве типа индекса употребляется интервальный тип. Например, одномерный массив среднемесячных температур опишется так:

Описание массива определяет, во-первых, размещение массива в памяти, во-вторых, правила его дальнейшего употребления в программе. Последовательные элементы массива располагаются в последовательных ячейках памяти (T[1], T[2] и т.д.), причем значения индекса не должны выходить из диапазона 1. 12. В качестве индекса может употребляться любое выражение соответствующего типа. Например:

Тип индекса может быть любым скалярным порядковым типом, кроме integer (в реализации Turbo Pascal). Например, в программе могут присутствовать следующие описания:

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

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

И если, например, элемент Class_10[A] равен 35, то это означает, что в 10 «А» классе 35 человек. Такое индексирование улучшает наглядность программы.

Часто структурированному типу присваивается имя в разделе типов, которое затем используется в разделе описания переменных.

Многомерные массивы

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

Вот примеры обозначения некоторых элементов этого массива:

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

Переменная Н[1981] обозначает всю первую строку таблицы, т.е. весь массив температур за 1981 г. Другим вариантом, эквивалентным приведенному выше описанию, является следующий:

Наиболее краткий вариант описания данного массива такой:

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

Это массив, состоящий из 10x20x30 = 6000 целых чисел и занимающий в памяти 6000x2 = 12000 байт. В Паскале нет ограничения сверху на размерность массива. Однако в каждой конкретной реализации Паскаля ограничивается объем памяти, выделяемый под массивы.

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

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

Операции над массивами

Действия над массивом как единым целым. Такие действия допустимы лишь в двух случаях:

В обоих случаях массивы должны иметь одинаковые типы (тип индексов и тип элементов). Пример:

При выполнении операции присваивания P := Q все элементы массива P станут равны соответствующим элементам массива Q.

В многомерных массивах переменная с индексом может обозначать целый массив. Например, если в таблице H требуется, чтобы данные за 1989 г. были такими же, как за 1981 г. (девятой строке присвоить значение первой строки), то это можно делать так:

А если нужно поменять местами значения этих строк, то это делается через третью переменную того же типа:

где P описана так:

Обработка массивов

Обработка массивов в программах производится покомпонентно. Вот примеры ввода значений в массивы:

Здесь каждое следующее значение будет вводиться с новой строки. Для построчного ввода используется оператор read. Аналогично в цикле по индексной переменной организуется вывод значений массива. Например:

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

После печати очередной строки матрицы оператор writeln без параметров переведет курсор в начало новой строки. Следует заметить, что в последнем примере матрица на экране будет получена в естественной форме прямоугольной таблицы, если JMax не превышает 12.

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

Во FreePascal, Delphi добавлена интересная возможность описания массивов без указания размерностей и, соответственно, пределов изменения индексов:

Такие массивы являются динамическими и изначально имеют нулевую длину. Установка размера массива и определение его во время выполнения программы производится так же как и для строк, с помощью функций SetLength и Length, соответственно. Элементы в данном случае нумеруются от нуля.

Переменные-динамические массивы являются указателями и операции с ними производятся как с указателями. Например, при присвоении одного массива другому элементы одного массива не копируются во второй, а копируется адрес массива. Соответственно, сравнение двух массивов в логических выражениях типа «равно — не равно» производится сравнением адресов. Пример присвоения одного массива другому:

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

📎📎📎📎📎📎📎📎📎📎

О ресурсе

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

Основные направления

Факты и явления

Дайджесты по темам, вызывающим интерес у широкой аудитории.

Общие обзоры

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

Сборники материалов

Подборки контента, отобранного по тематике и релевантности.

Архив статей

Хронологическая лента публикаций без ограничений доступа.

Контакты

📍 г. Челябинск, ул. Рубежная, д. 5, офис 122

☎ +7 (351) 800-54-91

📧 info@site.ru

🕓 Время приёма: ежедневно с 09:00 до 21:00

Правовая оговорка

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

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

Ресурс не является СМИ и не осуществляет журналистскую деятельность.

Размер шрифта: