Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Упакованные массивы



Как правило, одно число или один символ занимают в памяти ЭВМ одно слово, т. е. два байта. В то же время для изображения символа достаточно иметь один байт памяти. С целью экономии памяти машины при использовании символьных данных в языке ПАСКАЛЬ введено понятие упакованного массива. Элементы упакованного массива хра­нятся по два в одном слове. Упакованный массив символьных данных имеет следующее описание в разделе переменных VAR:

VAR_ имя массива: PACKED ARRAY [ тип индекса ] OF_CHAR;.

Пусть, например, имеется строка символов

'САВЕЛЬЕВА ТАНЯ'

Эту строку символов можно считать массивом из 14 символов, включая пробел. Обозначим имя массива через РАМ. Описание маессива будет выглядеть следующим образом:

VAR FAM: PACKED ARRAY [1..14] OF CHAR;

Один элемент массива принимает значение одного символа, например:

FAM[1] = 'С', FАМ [2] ='А',..., FAM [14] ='Я'.

Как и в случае неупакованных массивов, рекомендуется описывать упакованные массивы с использованием раздела TYPE. Для рассмот­ренного примера описание имеет вид:

TYPE Т=PACKED ARRAY[1..N] OF CHAR;

VAR FAM:Т;

Здесь сначала введен тип массива с именем Т, а затем в разделе переменных указывается, что FAM имеет тип Т. Таким образом, FАМ является упакованным массивом символов.

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

Считается, что символьные константы имеют тип упакованных массивов

PACKED ARRAY [1..N] OF CHAR,

где N — длина строки.

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

TYPE T=PACKED ARRAY[1..22]OF CHAR;

VAR СТРОКА:S;

то допустим оператор

СТРОКА: = 'САША ВЕРТЫШЕВ — ХУДОЖНИК'.

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

I:=1;

WHILE NOT EOLN DO

BEGIN

READ(B[I]);

I:=I+1

END.

Элементу массива В[1] присваивается значение введенного сим­вола. Цикл WHILE выполняется до тех пор, пока в вводимой строке не встретится символ конца строки ВК, например

ПАСКАЛЬ - АЛГОРИТМИЧЕСКИЙ ЯЗЫК ВК

В результате выполнения этого фрагмента программы элементы массива В получат следующие значения:

В [1] = ‘П’, В [2] = 'А', В [3] = 'С',.., В [28] = 'К'.

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

VAR В: PACKED ARRAY [I.. N] OF CHAR;

где N>28.

В операторе цикла WHILE можно указать конкретную длину вво­димой строки, например

WHILE I<=28 DO

или

WHILE I<= К DO,

если значение К заранее определено.

Вывод массива символьных данных также организуется с исполь­зованием цикла. Так, для вывода значений массива В рассмотрен­ного примера можно составить программу 9.1.

Программа 9.1

I:=1;

WHILE I<=К DO

BEGIN

WRITE(В[I]);

I:=I+1;

END.





Дата публикования: 2014-11-02; Прочитано: 872 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...