Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Как правило, одно число или один символ занимают в памяти ЭВМ одно слово, т. е. два байта. В то же время для изображения символа достаточно иметь один байт памяти. С целью экономии памяти машины при использовании символьных данных в языке ПАСКАЛЬ введено понятие упакованного массива. Элементы упакованного массива хранятся по два в одном слове. Упакованный массив символьных данных имеет следующее описание в разделе переменных 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!