Сделай Сам Свою Работу на 5

Понятие массивов, описание массивов в Turbo Pascal





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

Массив должен иметь имя, а каждый элемент массива – имя и порядковый номер, называемый индексом элемента в массиве.

Массивы, каждый элемент которых имеет один порядковый номер, называют одномерными или векторами, а несколько порядковых номеров –многомерными.

В Паскале число элементов массива должно задаваться заранее. Если необходимо использовать массивы переменной размерности, то их надо описать максимально возможным в данной задаче числом элементов, либо воспользоваться динамическими массивами данных.

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



Описание мас­сива данных можно выполнить двумя способами: с присвоением и без присвоения имени типу массива.

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

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

В первом случае форма описания массива имеет вид:

Type

<имя типа массива> = array [<тип индекса>] of <тип элемента>;

Var

<имя массива как переменной>: <имя типа массива>;

Во втором случае форма описания массива имеет вид:



Var

<имя массива как переменной>: array [<тип индекса>] of <тип элемента>;

Здесьarray означает массив (дословный перевод – "строй", "порядок"),<тип индекса> – тип порядкового номера (обозначения) элементов массива, of – "состоящий из элементов типа", <тип элемента> – базовый тип элементов массива – тип данных, хранящихся в массиве.

Между начальным и конечным значениями индекса массива должны быть поставлены две точки. В качестве типа индекса можно использовать любые порядковые типы, кроме longint и интервального. Весьма удобно начальные и конечные значения индексов обозначать с помощью идентификаторов и выражений. Это позволяет изменять размерности всех согласованных массивов, изменяя значения идентификаторов и входящих в выражения переменных. Идентификаторы и переменные должны быть определены до начала обращения к элементам массивов.

Базовый тип элементов массива – любой тип данных Турбо Паскаля.

Например, в программе описание одномерного массива может иметь вид:

а) с использованием разделов типа и переменных:

Type

am = array [1..50] of real;

Var

A1 : am;

б) с использованием только раздела переменных:

Var

A1 :array [1..50] of real;

Массив как структурированный тип данных может иметь своим компонентом другой ком­понент структурированного типа, т.е. массив. Глубина вложенности структурированных типов данных есть величина произвольная. Количество выражений вида array[интервал]of в описании многомерного массива (имеющего два и более порядковых номеров у каждого элемента) не ограничено, однако суммарная длина внутреннего представления каждого массива не может быть больше 65520 байт.



В тех случаях, когда массивы двумерные или более высокого порядка, описание типа массива можно выполнить также двумя способами:

а) с использованием раздела типов и раздела переменных:

Type

<имя типа массива> = array [<тип 1 индекса>] of array [<тип 2 индекса>] of array [<тип 3 индекса>] … of array [<тип n индекса>] of <базовый тип элементов>;

Var

<имя переменной>: <имя типа массива>;

б) с использованием только раздела переменных:

Var

<имя переменной>: array [<тип 1 индекса>] of array [<тип 2 индекса>] of array [<тип 3 индекса>] . . of array [<тип n индекса>] of <базовый тип элементов>;

Например, в программе многомерные массивы можно описать с использованием:

А) разделов типа и переменных в виде

Type

Bm = array [1..50] of array [-3..5] of integer; {Двумерный массив целых чисел}

Mass_3 = array [7..25] of array [-1..5] of array ['a' .. 'd'] of real; {Трёхмерный массив действительных (вещественных) чисел}

Var

d: Bm;

mas_0: Mass_3;

Б) только раздела переменных в виде

Var

d: array [1 .. 50] of array [-3 .. 5] of integer;

mas_0: array [7 .. 25] of array [-1 .. 5] of array ['a' .. 'd'] of real;

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

А) разделов типа и переменных в виде

Type

Bm = array [1 .. 50, -3 .. 5] of integer;

Mass_3 = array [7 .. 25, -1 .. 5, 'a' .. 'd'] of real;

Var

d, f : Bm;

mas_0: Mass_3;

Б) только раздела переменных в виде

Var

d, f : array [1 .. 50] of array [-3 .. 5] of integer;

mas_0: array [7 .. 25] of array [-1 .. 5] of array ['a' .. 'd'] of real;

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

Const

a: array [1..5] of integer = (1, 3, 5, 7, 9); {Одномерный массив}

b: array [1..2, 1..5] of char = (‘a’, ’b’, ’c’, ’d’, ’e’), (’m’, ’n’, ‘o’, ‘p’, ‘q’); { Двумерный массив из двух строк и пяти столбцов}

В этом случае элементы массива "а" получат значения 1, 3, 5, 7 и 9, а элементы массива "b" – a b c d e

m n o p q .

Действия над массивами

В Паскале различают действия над массивами как над целыми переменными и действия над элементами массивов.

Над массивами как целыми объектами допускается только одна операция – операция присваивания, в которой массивы одного типа являются операндами. Например, если раздел описаний программы имеет вид

type mas1 = array [1 .. 50] of integer;

mas2 = array [1 .. 50] of integer;

var a, b: mas1;

c, d: mas2;

то в разделе операторов программы допустимы операции a := b; и d := c; но недопустимы c := a; и d := a;

Здесь массив "а" будет являться точной копией массива "b", а массив "d" – точной копией массива "с", так как они имеют одинаковые типы друг с другом. Операции c := a; и d := a; недопустимы, так как массивы в левых и правых частях операторов имеют разные типы, а именно mas1 и mas2.

Действия над массивами как над целыми используют довольно редко.

Ввод данных в массивы

До начала работы необходимо заполнить массивы, то есть ввести в них данные. Ввод значений элементов массива можно выполнить несколькими способами: 1) с клавиатуры в ручном режиме, 2) в автоматическом режиме, предусмотренном программой, и 3) считыванием данных из файла в автоматическом режиме. Но во всех этих случаях для ввода данных должен использоваться цикл. Наиболее удобным, как правило, является цикл с параметром, так как размерность массива известна. Если массивы многомерные, то следует использовать вложенные циклы.

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

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

Например,

b [3] – третий элемент одномерного массива "b",

b [( i + l )*2] – элемент номера ( i + l )*2 одномерного массива "b",

d [5, 2] – элемент матрицы "d", расположенный в пятой строке и во втором столбце,

d [i, j] или d [i] [j] – элемент матрицы "d", расположенный в i-й строке и в j-м столбце.

В операциях ввода-вывода могут участвовать только отдельные элементы массива, но не сам массив.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.