Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
19.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
84.99 Кб
Скачать

19.1. Массивы.

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

В Паскале тип данных массив описывается следующим оператором.

TYPE

ArrType = ARRAY [IndexType] OF ComponentType;

Область определения для данного массива это IndexType, а область значений – это подмножество ComponentType. В Паскале IndexType ограничен порядковыми типами иными, исключая INTEGER, так что количество значений в области определения ограничено объявлением. Переменная массива, скажем ArrVar1 или ArrVar2 может быть объявлена с данным типом, и также будет полезна переменная с типом индекса.

VAR

Index: IndexType;

ArrVar1, ArrVar2: ArrType;

Переменные массивов ставят в соответствие значениям типа IndexType значения типа ComponentType. Это соответствие достигается указанием индекса для переменной массива. Операция указания индекса в Паскале обозначается квадратными скобками, например:

ArrVar1[Index]

Соответствие, представленное массивом ограниченное и явное; каждому элементу области определения с помощью присваивания ставится в соответствие элемент области значений. Присваивание обычно выполняется для одного индекса, но также и целый массив может быть присвоен другому массиву. Оператор:

ArrVar1[Index] := CTypeValue

изменяет значение соответствия, представленного ArrVar1 в точке области определения, заданной Index на значение CTypeValue, но оставляет соответствие в остальном неизменным.

Оператор:

ArrVar1 := ArrVar2

изменяет все соответствие присваиванием всех компонентов ArrVar2 соответствующим компонентам ArrVar1.

В следующем примере, и тип и индексы массива Arr являются поддиапазоном INTEGER и оператор FOR присваивает каждому элементу в массиве значение равное его позиции. То есть этому массиву присваивается функция эквивалентности (identity function) на области определения {1, 2, 3, 4, 5}.

TYPE

Both = 1 .. 5;

VAR

I: Both;

Arr: ARRAY [Both] OF Both;

BEGIN

FOR I := 1 TO 5

DO

Arr[I] := I

END

Шифрование – идеально подходящий способ применения для массивов. Простейший способ зашифровать сообщение – использовать замещающий шифр, который заменяет символы в сообщении символами из кода. Сообщение может быть представлено как массив символов с целыми индексами, которые указывают позицию каждого символа в сообщении. Предположим, что сообщения длиной до Len будут состоять только из заглавных букв.

CONST

Len = 20;

TYPE

Str = ARRAY [1 .. Len] OF ‘A’ .. ‘Z’;

VAR

Msg: Str;

Другой массив символов может хранить символы шифра (не только буквы) значениями индексов которого являются буквы, которые встречаются в исходном сообщении.

TYPE

Chiper = ARRAY [‘A’ .. ‘Z’] OF CHAR;

VAR

Code: Chiper;

Символы в сообщении, которые не являются большими буквами, воспроизводятся без замен.

Следующий раздел проекта читает и шифрует определенное количество входных строк в соответствии с выше описанной схемой. Поскольку каждая входная строка сохраняется в Msg перед шифровкой, MSG дополняется пробелами после чтения каждой строки таким образом, что символы более длинной ранее считанной строки не появлялись в зашифрованном выводе следующей, более короткой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]