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

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

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

Для экономии памяти в языке Паскаль существуют средства, позволяющие более компактно расположить данные в памяти. Это делается с помощью упаковки данных. Например, массивы символьной информации упаковываются по два символа в одну ячейку. Компилятор делает это, если при описании массива указать ключевое слово PACKED перед ключевым словом ARRAY.

Синтаксис описания упакованного массива:

TYPE

имя типа= PACKED ARRAY [тип индекса] OF тип элементов;

VAR

имя массива: имя типа;

Строковый Тип данных (String)

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

Строковые величины могут быть константами и переменными.

Синтаксис описания строковых констант:

CONST

идентификатор=‘значение’;

Например: CONST

S1=‘Язык программирования Паскаль’;

S2=‘IBM PC - computer’;

Синтаксис описания строковых переменных:

VAR

идентификатор:STRING [ максимальная длина строки];

Максимальная длина строки может быть задана целым числом или константой целого типа. Это число находится в пределах от 1 до 255. Указание максимальной длины строки может быть опущено, в этом случае подразумевается число 255.

Например: VAR

S1:STRING [80];

S2:STRING;

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

Символы внутри строки индексируются (нумеруются), начиная с единицы. К отдельным символам строки можно обращаться с помощью индексов, которые записываются в квадратных скобках после имени строки. Индекс может быть положительной константой, переменной величиной и выражением целого типа. Значение индекса не должно выходить за границы описания.

Например: S[5], S1[i], S2[k+1]

Тип STRING и тип CHAR совместимы. Строки и символы могут употребляться в одних и тех же выражениях.

Строковые выражения строятся из строковых констант, переменных, функций и знаков операций.

Над строковыми данными выполняются следующие операции: присваивание, сцепление (сложение), отношение.

1. Операция присваивания имеет вид:

имя строковой переменной:= строковое выражение;

В операциях присваивания можно использовать переменные типа CHAR.

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

Например:

VAR

S1, S2: STRING [10];

S1:=‘ABCD’;

S2:=S1; (‘ABCD’)

VAR

S1: STRING [10];

S2: STRING [2];

S1:=‘ABCD’;

S2:=S1 ; (‘AB’)

2. Операция сцепления (сложения, +) объединяет несколько символьных строк в одну результирующую строку.

Например: ‘Язык программирования’ + ‘Паскаль’ =>

‘Язык программирования Паскаль’

PROGRAM STROKI;

VAR

S1, S2: STRING [15];

C: CHAR;

BEGIN

S1:= ‘ABCD’;

C:= S1[3];

S2:= S1+S1+C;

WRITELN (‘C=’, C);

WRITELN (S2)

END.

Протокол работы:

C=C

ABCDABCDC

3. Операции отношения (сравнения) применяются для сравнения двух строк, в результате чего получается логическая величина (True или False). Данная операция имеет более низкий приоритет, чем операция сцепления.

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

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

Строки считаются равными, если они совпадают по текущей, а не по объявленной длине, и содержат одни и те же символы.

Например:

‘cosm1’<’cosm2’ True

‘pascal’>’PASCAL’ True

‘ключ_’<>‘ключ’ True

‘windows’=’windows’ True