>>> Перейти на полный размер сайта >>> Учебник для 10 класса ИНФОРМАТИКА§ 24. МассивыМассивом в Паскале называют переменную величину регулярного типа. Регулярный тип — это структурный тип данных, представляющих собой совокупность пронумерованных однотипных величин. Описание массивов. Переменная регулярного типа описывается в разделе описания переменных в следующей форме:
В данном случае квадратные скобки — это обязательные символы, которые называются индексными скобками. Чаще всего в качестве типа индекса употребляется ограниченный тип. Например массив вещественных чисел, хранящий 12 значений среднемесячных температур в течение года, опишется так:
Описание массива определяет, во-первых, размещение массива в памяти, во-вторых, правила его дальнейшего употребления в программе. Элемент массива идентифицируется в виде переменной с индексами: <идентификатор массива>[<индексы элемента>] Для одномерного массива индекс — это одно значение. Для многомерных массивов индекс — множество значений. В качестве индекса может употребляться любое выражение соответствующего типа. Например, для элементов массива температур возможны обозначения: Т [5] , T[k], T[i+j], T[m div 2]. Последовательные элементы массива располагаются в последовательных ячейках памяти (Т[1], Т [2] и т. д.), причем значения индекса не должны выходить за диапазон 1. .12. Тип индекса может быть любым скалярным порядковым типом, кроме Integer. Например, в программе могут присутствовать следующие описания:
В такой программе допустимы следующие обозначения элементов массивов:
В некоторых случаях бывает удобно в качестве индекса использовать перечислимый тип. Например, данные о количестве учеников в четырех десятых классах одной школы могут храниться в следующем массиве:
И если, например, элемент class_10 [А] равен 35, то это означает, что в 10А классе 35 человек. Такое индексирование улучшает наглядность программы. Часто структурному типу присваивается имя в разделе типов, которое затем используется в разделе описания переменных.
До сих пор речь шла об одномерных массивах, в которых типы элементов скалярные. Многомерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов). В качестве примера рассмотрим таблицу с информацией о среднемесячных температурах за 10 лет, например с 2001 по 2010 год. Очевидно, для этого удобна прямоугольная (двумерная) таблица, в которой столбцы соответствуют месяцам, а строки — годам.
Для обработки такой таблицы в программе следует описать массив:
Вот примеры обозначения некоторых элементов этого массива:
Однако чаще употребляется другая, эквивалентная форма обозначения элементов двумерного массива:
Переменная Таbl [2001] обозначает всю первую строку таблицы, т. е. весь массив температур за 2001 год. Другим эквивалентным вариантом приведенному выше описанию является следующее:
Наиболее краткий вариант описания данного массива такой:
Это массив, состоящий из 10 • 20 • 30 = 6000 целых чисел и занимающий в памяти 6000 • 2 = 12 000 байтов. В Паскале нет ограничения сверху на размерность массива. Однако в каждой конкретной реализации Паскаля ограничивается объем памяти, выделяемый под массивы. В Турбо Паскале это ограничение равно 64 килобайтам. По аналогии с математикой одномерные числовые массивы часто называют векторами, а двумерные — матрицами. В Паскале не допускается употребление динамических массивов, т. е. таких, размер которых определяется в процессе выполнения. Изменение размеров массива происходит через изменение в тексте программы и повторную компиляцию. Для упрощения таких изменений удобно определять индексные параметры в разделе констант:
Теперь для изменения размеров массива Mas и всех операторов программы, связанных с этими размерами, достаточно отредактировать только одну строку в программе — раздел констант. Действия над массивом как единым целым. Такие действия допустимы лишь в двух случаях:
В обоих случаях массивы должны иметь одинаковые типы (тип индексов и тип элементов). Пример 1
При выполнении операции присваивания P:=Q все элементы массива Р станут равными соответствующим элементам массива Q. Пример 2 Как уже отмечалось, в многомерных массивах переменная с индексом может обозначать целый массив. Тогда если массив ТаЫ описан так:
и в нем требуется данные за 2009 год сделать такими же, как за 2001 год (девятой строке присвоить значение первой строки), то это можно сделать одним присваиванием:
А если нужно поменять местами значения этих строк, то это делается через третью переменную того же типа:
где Р описана так:
Ввод и вывод массивов производятся покомпонентно. Вот примеры ввода с клавиатуры значений одномерного и двумерного массивов:
Здесь каждое следующее значение будет вводиться с новой строки. Для построчного ввода используется оператор Read. Аналогично в цикле по индексной переменной организуется вывод значений массива на экран. Например:
Напомним, что модификатор формата 8:4 означает вывод числа в формате с фиксированной точкой в 8 позициях, из которых в 4 последних позициях размещается дробная часть. Следующий фрагмент программы организует построчный вывод матрицы на экран:
После вывода очередной строки матрицы оператор WriteLn без параметров переведет курсор в начало новой строки. Следует заметить, что в последнем примере матрица на экране будет получена в естественной форме прямоугольной таблицы, если Jmax не превышает 12 (подумайте почему). Система основных понятий
Вопросы и задания
|