Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Доп.мат-лы студентам к лекциям по ИиП.doc
Скачиваний:
1
Добавлен:
06.12.2018
Размер:
193.54 Кб
Скачать

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

Строго говоря, они запрещены. Кроме копирования однотипных (с одинаковым описанием) массивов. Это делается обычным оператором присваивания с использованием имен массивов:

МВ:=МА;

Но массив МВ должен иметь описание, как и МА.

Т.е., например:

VAR MA, MВ: ARRAY[-100..100] OF INTEGER;

Операции ввода-вывода над массивами могут выполняться только поэлементно, в цикле:

CONST N=20;

VAR MAS: ARRAY[1..N,1..N] OF INTEGER;

I,J: INTEGER;

. . .

FOR I=1 TO N DO

FOR J=1 TO N DO

READ(MAS[I,J]);

Константы-массивы.

С их помощью можно присваивать неизменные (!) значения элементам массива в зависимости от их типа. При этом разрешен любой тип констант-массивов, кроме FILE и типа указателя.

Объявление констант-массивов обычно производят в разделе CONST:

имя список

CONST < константы- >: <имя типа массива> = (< констант >);

массива через запятую

«Тип массива» должен быть предварительно определен. А тип констант из списка должен совпадать с типом элементов предварительно определенного массива.

Например:

А). одномерные массивы-константы

TYPE

ROD=ARRAY[KR,PL,PV,CS,REFR,UNIV] OF STRING[15];

CONST

VAG: ROD=(`КРЫТЫЙ`,`ПЛАТФОРМА`,`ПОЛУВАГОН`,

`ЦИСТЕРНА`,`РЕФРИЖЕРАТОРНЫЙ`,

`УНИВЕРСАЛЬНЫЙ`);

Здесь определена константа - массив VAG, которая позволяет преобразовать значения перечисляемого типа в соответствующие им строчные представления:

VAG[KR] => `КРЫТЫЙ`

VAG[CS] => `ЦИСТЕРНА` и т.д.

Можно было определить константу - массив VAG короче:

CONST

VAG: ARRAY[KR,PL,PV,CS,REFR,UNIV] OF STRING[15]=

(`КРЫТЫЙ,

`ПЛАТФОРМА`,

`ПОЛУВАГОН`,

`ЦИСТЕРНА`,

`РЕФРИЖЕРАТОР`

`УНИВЕРСАЛЬНЫЙ`);

Если использовать в описании типа массива интервальный тип вместо перечисляемого, то задание константы-массива будет выглядеть так:

CONST

VAG: ARRAY[1..6] OF STRING[15]=

(`КРЫТЫЙ`,

`ПЛАТФОРМА`,

`ПОЛУВАГОН`,

`ЦИСТЕРНА`,

` РЕФРИЖЕРАТОР `

`УНИВЕРСАЛЬНЫЙ`);

Тогда указание VAG(2) будет означать `ПЛАТФОРМА`.

Приведем ещё примеры наиболее распространенных массивов-констант:

CONST MES: ARRAY[1..12] OF STRING[8]=

(`январь`,`февраль`,`март`,`апрель`,`май`,`июнь`,

`июль`,`август`,`сентябрь`,`октябрь`,`ноябрь`);

CONST GLASN: ARRAY[1..10] OF СHAR=

(`а`,`е`,`ё`,`и`,`о`,`у`,`э`,`ы`,`ю`,`я`);

Примечание: в Т.-Паскале все символьные строки и массивы хранятся

в одном и том же (упакованном) виде. Поэтому вместо

значений символьных массивов можно использовать

строки соответствующей длины:

CONST GLASN: ARRAY[1..10] OF CHAR=(`аеёиоуэыюя`);

Б). многомерные массивы-константы

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

TYPE

S=ARRAY[1..2,1..3] OF CHAR;

CONST MASS: S=((`a`,`b`,`c`),(`d`,`e`,`f`));

Тогда: MASS[1,1] => `a` MASS[1,1] => `b` MASS[1,1] => `с`

MASS[1,1] => `d` MASS[1,1] => `е` MASS[1,1] => `f`.