Массивы в Паскале
Массивы в Паскале — это место хранения информационных данных и при этом все хранимые величины обладают собственным индексом, позволяющим выполнить обращение к ней.
Введение
Когда программа использует большое число информационных данных одного типа, то для удобства работы с этой информацией применяются массивы. Массив представляется набором ячеек памяти, хранящих информацию одного типа. Имеется только одно имя переменной, которое соотносится с этим массивом, а чтобы обратиться к информации, находящейся в определённой ячейке, нужно указать её индекс, который является её порядковым номером в массиве. Следует ещё раз заметить, что индекс ячейки массива — это не информация, хранящаяся в ней, а лишь указатель на их местоположение. Операции с массивами в программе выполняются путём указания имени переменной, которая связана с участком памяти, отведённым для массива. Подведём итоги. Массив выступает поименованной группой данных одного типа, которые хранятся в поочерёдном наборе ячеек памяти. В любой ячейке находится один элемент массива. Элементы имеют порядковые номера, которые могут начинаться и не с единицы и порядковый номер компонента массива именуется его индексом. У различных массивов типы, хранящихся в них информационных данных, могут быть разными. К примеру, у одного массива данными могут быть числа типа integer, а у другого тоже числа, но типа real. Индексами компонентов массивов, как правило, являются целые числа, но возможно и применение символов или других типов данных. То есть в качестве индекса допускается применять тип, в котором определяется дискретный набор величин, и все эти величины возможно сосчитать в порядке очерёдности. Индексация может выполняться константами и переменными, а также при помощи выражений, итог расчётов по которым даст величину нужного типа. Если индекс массива способен принимать все разрешённые значения заданного допустимого типа, то когда выполняется описание массива можно задавать имя типа, а не границы допустимых значений индекса. В этом случае в качестве индексных границ будут использованы начальное и конечное значения описанного индексного типа. Кроме того, граничные значения индексации возможно задавать при посредстве ранее определённых констант.
Индекс массива
Как указывалось выше, индексом является нумерация компонента массива, то есть индекс является величиной порядкового типа, которая определяется как тип индекса указанного массива. Достаточно часто индекс имеет тип целого числа (ìnteger, word или byte), но бывает и тип логики или символа. В языке Паскаль тип массива определяется с применением словесной формулировки array (что означает массив), и в программе он может быть объявлен так:
Здесь I является типом индекса массива, T является типом его компонентов. Возможно сразу описать переменные типа массив, то есть в подразделе, где описываются переменные:
Как правило, тип индекса сопровождается некими границами допустимых значений выбранного порядкового типа: I 1 .. I n. К примеру, границами индекса может быть диапазон от единицы до двадцати или от «а» до «n». При том, что размеры массива в Паскале определяются так:
Приведём пример объявления двух типов: vector как массив в Паскале из десяти целочисленных элементов и stroka как массив, состоящий из двухсот пятидесяти шести символьных значений:
При помощи индекса массива имеется возможность обратиться к каждому компоненту любых массивов, как к выбранной переменной. Также возможно выбирать значение выбранного компонента, назначать для него нужные значения, применять его в формулах. Приведём описание переменных типа vector и stroka^
Затем в программе можно выполнять обращение к нужным компонентам массива а или с. К примеру, таким образом:
Индексацию массива в Паскале возможно задать и в неявной форме. Определить индекс массива возможно при помощи переменной или выражения, которое соответствует типу индекса. Это означает, что индекс может быть вычислен. Такой инструментарий является мощнейшим средством при программировании. Но вместе с тем он может быть источником ошибок. Если итог расчётов индекса выйдет за пределы его допустимых границ, то это будет воспринято как обращение к компоненту, которого нет. Эта типовая ошибка имеет название «выход за границы массива».
Массивы в Паскале
До задания массива, нужно заранее выполнить объявление типа массива в подразделе, где описываются типы. Задать массив в Паскале возможно разными методами:

Рисунок 1. Программа. Автор24 — интернет-биржа студенческих работ
Обратиться к нужному компоненту массива возможно, указав имя переменной массива и указав индекс компонента в квадратных скобках. Одномерный массив простой по своей организации и является линейной структурой.

Рисунок 2. Программа. Автор24 — интернет-биржа студенческих работ
В данном примере выполняется выделение памяти для массива из одиннадцати символов. Они получают индексацию от единицы до одиннадцати. При выполнении данной программы, пользователю необходимо ввести одиннадцать каких-либо символов (к примеру, e,r,h,l,u,y,b,4,5,6,7,0), которые будут записаны в память. Текущая величина переменной I в цикле for применяется как индекс массива. Во втором цикле for выполняется вывод информации на дисплей. Функция sìzeof, обращённая к наименованию массива или наименованию его типа, выполняет возврат числа байт, которое отводится для массива.
Приведём пример программы на Паскале, которая приводит к ошибке массива.

Рисунок 3. Программа. Автор24 — интернет-биржа студенческих работ
В этом примере программа выдерживает правила синтаксиса Паскаля, и программа трансляции обработает её. Но при её запуске на компьютере появится ошибка ухода за границы массива Паскаля. Когда n будет равно сорока пяти, вычисление произведения n *2 даст результат девяносто, компьютер попытается сделать обращение к компоненту массива a [90], которого не существует, так как размер массива равен восьмидесяти.
Какие данные могут выступать в качестве индексов и элементов массива
До сих пор мы рассматривали переменные, которые имели только одно значение, могли содержать в себе только одну величину определенного типа. Исключением являлись лишь строковые переменные, которые представляют собой совокупность данных символьного типа, но и при этом мы говорили о строке, как об отдельной величине.
Вы знаете, что компьютер предназначен в основном для облегчения работы человека с большими информационными объемами. Как же, используя только переменные известных вам типов, сохранить в памяти и обработать данные, содержащие десяток, сотню, тысячу чисел или, к примеру, строк? А ведь такие задачи встречаются в любой области знания. Конечно, можно завести столько переменных, сколько данных, можно даже занести в них значения, но только представьте, какой величины будет текст такой программы, сколько времени потребуется для его составления, как много места для возможных ошибок? Естественно, об этом задумывались и авторы языков программирования. Поэтому во всех существующих языках имеются типы переменных, отвечающие за хранение больших массивов данных. В языке Паскаль они так и называются: "массивы".
Массивом будем называть упорядоченную последовательность данных одного типа, объединенных под одним именем. Кстати, под это определение подходит множество объектов из реального мира: словарь (последовательность слов), мультфильм (последовательность картинок) и т. д. Проще всего представить себе массив в виде таблицы, где каждая величина находится в собственной ячейке. Положение ячейки в таблице должно однозначно определяться набором координат (индексов). Самой простой является линейная таблица, в которой для точного указания на элемент данных достаточно знания только одного числа (индекса). Мы с вами пока будем заниматься только линейными массивами, так как более сложные структуры строятся на их основе.
Описание типа линейного массива выглядит так:
Type <Имя типа>=Array [<Диапазон индексов>] Of <Тип элементов>;
В качестве индексов могут выступать переменные любых порядковых типов. При указании диапазона начальный индекс не должен превышать конечный. Тип элементов массива может быть любым (стандартным или описанным ранее).
Описать переменную-массив можно и сразу (без предварительного описания типа) в разделе описания переменных:
Var <Переменная-массив> : Array [<Диапазон индексов>] Of <Тип элементов>;
Примеры описания массивов :
Var
S, BB : Array [1..40] Of Real;
N : Array [‘A’..’Z’] Of Integer;
R : Array [-20..20] Of Word;
T : Array [1..40] Of Real;
Теперь переменные S, BB и T представляют собой массивы из сорока вещественных чисел; массив N имеет индексы символьного типа и целочисленные элементы; массив R может хранить в себе 41 число типа Word.
Единственным действием, которое возможно произвести с массивом целиком — присваивание. Для данного примера описания впоследствии допустима следующая запись:
Однако, присваивать можно только массивы одинаковых типов. Даже массиву T присвоить массив S нельзя, хотя, казалось бы, их описания совпадают, произведены они в различных записях раздела описания.
Никаких других операций с массивами целиком произвести невозможно, но с элементами массивов можно работать точно также, как с простыми переменными соответствующего типа. Обращение к отдельному элементу массива производится при помощи указания имени всего массива и в квадратных скобках — индекса конкретного элемента. Например:
R[10] — элемент массива R с индексом 10.
Фундаментальное отличие компонента массива от простой переменной состоит в том, что для элемента массива в квадратных скобках может стоять не только непосредственное значение индекса, но и выражение, приводящее к значению индексного типа. Таким образом реализуется косвенная адресация:
BB[15] — прямая адресация;
BB[K] — косвенная адресация через переменную K, значение которой будет использовано в качестве индекса элемента массива BB.
Такая организация работы с такой структурой данных, как массив, позволяет использовать цикл для заполнения, обработки и распечатки его содержимого.
Если вы помните, с такой формой организации данных мы встречались, когда изучали строковые переменные. Действительно, переменные типа String очень близки по своим свойствам массивам типа Char. Отличия в следующем: строковые переменные можно было вводить с клавиатуры и распечатывать на экране (с обычным массивом это не проходит); длина строковой переменной была ограничена 255 символами (255 B), а для размера массива критическим объемом информации является 64 KB.
Теперь рассмотрим несколько способов заполнения массивов и вывода их содержимого на экран. В основном мы будем пользоваться числовыми типами компонент, но приведенные примеры будут справедливы и для других типов (если они допускают указанные действия).
Program M1 ;
Var
A : Array [1..20] Of Integer;
Begin
Как бы ни был примитивен приведенный пример, он все же иллюстрирует возможность непосредственного обращения к каждому элементу массива отдельно. Правда, никакого преимущества массива перед несколькими простыми переменными здесь не видно. Поэтому — другой способ :
Program M2 ;
Var
A : Array [1..20] Of Integer;
I : Integer;
Эта программа вводит с клавиатуры 20 целых чисел, а затем распечатывает их в обратном порядке. Теперь попробуйте написать такую же программу, но без использования структуры массива. Во сколько раз она станет длиннее? Кстати, введение язык Паскаль цикла с параметром было обусловлено во многом необходимостью обработки информационных последовательностей, т. е. массивов.
Следующая программа заполняет массив значениям квадратов индексов элементов:
A : Array [1..N] Of Integer;
I : Integer;
For I:=1 To N Do
A[I]:=I*I
For I:=1 To N Do
Write(A[I],’VVV’)
В дальнейшем для учебных целей мы будем использовать массивы, заданные с помощью генератора случайных чисел. В языке Паскаль случайные числа формирует функция Random. Числа получаются дробными, равномерно расположенными в интервале от 0 до 1. Выражение, дающее целое случайное число в интервале [-50,50] будет выглядеть так:
Trunc(Random*101)-50
Зададим и распечатаем случайный массив из сорока целых чисел:
A : Array [1..N] Of Integer;
I : Integer;
For I:=1 To N Do
Begin
A[I]:= Trunc(Random*101)-50
Write(A[I],’VVV’)
С обработкой линейных массивов связано множество задач. Их мы рассмотрим на практических занятиях.
Основные сведения о массивах. Описание массива в Паскаль
Здравствуйте! Меня зовут Александр Георгиевич. Я московский репетитор по информатике, математике и программированию. У вас возникли проблемы с пониманием описания массивов в Pascal? Запутались с их объявлением или нет понимания об их предназначении? Тогда срочно обращайтесь ко мне за помощью: звоните на сотовый телефон или пишите информационное сообщение на электронный адрес. На моих уроках мы вместе с учеником совместно прорешиваем колоссальное количество различных тематических задач. Массивы — тема объемная, интересная, и в моем арсенале находится не одна сотня упражнений различной степени сложности.
Что такое массив и с чем его «едят»?
При использовании простых типов данных в программе можно применять однотипные объекты. Таковыми являются строки, символы, числа и т.д. В языке Паскаль разрешается использовать объекты, которые содержат некоторое количество однотипных элементов. Таковыми объектами являются массивы.
Массивом принято называть формальное объединение нескольких элементов одного типа, которое рассматривается в качестве единого целого.
Массивы применяются в тех случаях, когда возникает необходимость в связывании и использовании определенного ряда однотипных элементов. К примеру, таковыми могут являться периодические замеры температуры на протяжении года. Их предельно удобно рассматривать в качестве массива вещественных чисел. Описание массива в Паскаль схоже с описанием массивов в других языках программирования, однако имеет ряд особенностей.
Описание массива в Паскаль
Описание массива в Паскаль предусматривает указание общего количества элементов, которые содержаться в массиве, а также тип этих элементов. Общий шаблон описания одномерных массив в языке программирования Pascal имеет вид:
<название массива> : array [<левая граница> .. <правая граница>] of <тип данных>;
Как видно из примера, при описании массива необходимо использовать зарезервированное выражение array .. of. Непосредственно после слова array в квадратных скобках необходимо указать диапазон номеров элементов массива. При помощи этого компилятор может определить общее количество элементов, которые содержаться в массиве. Диапазон указывается заданием левой и правой границ. Следовательно, в массиве a содержится 10 элементов, в массиве b – 51 элемент, массив c содержит 8 элементов. После слова of необходимо указать тип элементов, которые содержаться в массиве. В этом и заключается суть описания массива в Pascal.
Доступ к элементам массива
Язык Паскаль предоставляет возможность доступа к каждому элементу в массиве. Для этого используется понятие индекса.
| Индекс – целое число (как правило, — натуральное, но не всегда), которое выступает в качестве имени/номера того или иного элемента в массиве. |
В том случае, если левая граница массива равняется 1, то индекс будет совпадать с порядковым номером элемента в массиве. Если в программе необходимо упомянуть о каком-либо элементе в массиве, то непосредственно после названия массива в квадратных скобках необходимо указать индекс элемента. К примеру:
Если массив составлен правильно, то индексы в нем не должны выходить за пределы, установленные диапазоном значений. Так, разрешается использовать a[5], однако применять a[15] уже нельзя. Описание массива в Pascal предусматривает контроль правильности использования индексов на этапе компиляции программы.
Особенности описания массива в Паскаль
Одной из особенностей языка Паскаль является то, что число элементов в массиве является фиксированной величиной, которая определяется на этапе описания массива. В процессе выполнения программы размерность массива изменяться не может. В определенной степени эту особенность считают за недостаток языка программирования Паскаль. Связанно это с тем, что далеко не во всех ситуациях представляется возможным предсказывание необходимого размера массива для выполнения той или иной программы.
Стоит отметить, что решить данную проблему можно при использовании определенного приема. Он позволяет создавать имитацию работы с массивами динамической длины. Принцип имитации заключается в следующем: на этапе описания предварительно определяется предполагаемая максимальная длина массива, а при выполнении программы запрашивается текущий размер массива, который и используется при работе (заполнении, обработке, сортировке и так далее).
А сейчас вашему вниманию я предлагаю мультимедийное решение задачи на одномерные массивы с использованием языка программирования Pascal. Если возникнут какие-либо вопросы, то задавайте их в комментариях к данному видео и не забывайте подписываться на мой образовательный youtube-канал и ставить like видео, если оно оказалось для вас полезным и познавательным.
Остались вопросы?
Если после прочтения данной публикации вы осознаете, что все равно есть небольшие недопонимания или вы хотите более глубоко изучить массивы, то записывайтесь ко мне на индивидуальные уроки по информатике и программированию. Я помогу реализовать вам лабораторные на массивы абсолютно любой сложности, и вы без особых проблем сможете защитить ваши работе при сдаче. Массивы — фундаментальная тема в информатике, в общем, и в программировании в частности. Чтобы успешно двигаться дальше, вам необходимо очень детально, дифференцированно понять квинтэссенцию описания массивов в Паскаль.
Pascal. Массивы
Массив — это последовательность данных одного типа — элементов массива. Доступ к каждому элементу осуществляется по его индексу, в качестве которого могут выступать порядковые (перечисляемые) типы данных, чаще всего используются целые числа.
Размер массива (количество элементов) задается при объявлении в блоке var. Например, объявляем массив с именем massiv из 10 элементов, каждый из которых — целое число:
Обычно индекс массива начинается с 1, хотя это необязательно. В PascalABC 0 в индексе статического массива не используется. Статический массив — это массив, размер которого определяется при объявлении и который не может быть изменен в процессе выполнения программы.
Присвоим пятому элементу этого массива значение 14:
В качестве индекса массива можно использовать выражение, значение которого явлется порядковым номером элемента. Но если результатом выражения будет индекс, не входящий в объявленный диапазон, то программа при выполнении выдаст ошибку.
Например, введем 10 целых чисел в массив, а затем выведем его:
Массивы могут быть многомерными, в которых доступ к элементам осуществляется по нескольким индексам. Например, для двухмерного массива, часто называемым таблицей или матрицей, используются два индекса: индексы строки и столбца.
Введем числа в двухмерный массив, состоящий из двух строк и пяти столбцов, а затем выведем его построчно:
Начальные значения элементам массива можно присваивать непосредственно при объявлении. Например:
В блоке type мы определили перечисляемый тип данных months, который использовали для индекса массива. Значения элементам присвоили при объявлении массива.
Примечание: В нижеследующих задачах предполагается решение с использованием массивов, они приведены для изучения методов работы с этой структурой данных.
Если иное не указано, то в условии задач следует считать массив из 10 целочисленных значений.