Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
(2011. 10. 22) КН (с. 126 - ).doc
Скачиваний:
15
Добавлен:
19.05.2015
Размер:
228.86 Кб
Скачать

PROCEDURE TFORM1. BUTTON1CLICK (SENDER: TOBJECT);

TYPE

TW = FUNCTION (X: EXTENDED): EXTENDED;

VAR

N: BYTE;

X: ARRAY OF EXTENDED;

FUNCTION MAX (W: TW): EXTENDED;

VAR

I: BYTE; H: EXTENDED;

BEGIN

RESULT := W(X[1]);

FOR I:=2 TO N DO

BEGIN

H := W(X[I]);

IF H > RESULT THEN RESULT := H

END

END;

BEGIN

… // Задание значения переменнойN.

SETLENGTH (X, N+1);

… // Заданиезначений переменных X[1], … , X[N].

MEMO1. LINES. ADD (’MAX (F) = ’ + FLOATTOSTR (MAX (F)));

MEMO1. LINES. ADD (’MAX (G) = ’ + FLOATTOSTR (MAX (G)))

END;

END.

§ 12. Строковые типы данных.

1. Множество значений строкового типа.

Значениями того или иного строкового типа являются всевозможные последовательности символов, в каждой из которых число элементов – это какое-либо из целых чисел от 0 до M, где M – некоторая заданная величина. Значения строковых типов принято называть строками. Количество символов, составляющих строку, называют длиной строки.

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

1) тип – короткая строка,

2) тип – длинная строка.

Для типа – короткая строка вышеупомянутую величину M принято называть максимальной длиной строки. Максимальная длина строки является характеристикой того или иного типа – короткая строка. Данная величина может быть одним из целых чисел от 1 до 255.

Для типа – длинная строка величина M – это число байтов в 2 Гб.

2. Описание типа – короткая строка.

тип – короткая строка

собственно

тип – короткая строка

идентификатор

типа – короткая строка

собственно тип – короткая строка

выражение над обычными

константами целого типа

Значение константного выражения, располагаемого в квадратных скобках – это максимальная длина строки определяемого типа. Собственно тип STRING(если действует директива{H-}) эквивалентен типуSTRING[255].

идентификатор типа – короткая строка

идентификатор

пользователя

3. Описание типа – длинная строка.

тип – длинная строка

собственно

тип – длинная строка

идентификатор

типа – длинная строка

собственно тип – длинная строка

Заметим, что из двух директив {$H+} и {$H-} по умолчанию действует директива{$H+}.

идентификатор типа – длинная строка

идентификатор

пользователя

4. Обычные константы строкового типа.

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

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

Примеры:

’ABC’ , ’abc’ , ’ABC DEF’ , ’A’ , ’ ’ ,

’’ – строка не содержит ни одного элемента, эта строка называется пустой.

Другой способ изображения значения предполагает запись элементов строки в виде символьных констант с использованием знака # и указания порядкового номера символа.

Пример:

#65#66#67 ~ ’ABC’

Ещё один способ – комбинация первых двух.

Примеры:

’ABC’#23#36

#23#36’ABC’

’ABC’#23#36’DEF’

#23’ABC’#36#78

Значения строкового типа, записанные одним из вышеуказанных способов, представляют собой один из случаев обычных констант строкового типа, другой случай – это нетипизированные константы строкового типа.

Пример:

CONST

S = ’ABC’;

Обращение к значениям составляющих нетипизированной константы строкового типа осуществляется так же, как и обращение к значениям элементов одномерного массива. Нумерация составляющих константы при этом начинается с единицы. Для нетипизированной константы S (из предыдущего примера) S[1], S[2] и S[3] – это соотвественно обращения к первому, второму и третьему символам значения S.

5. Типизированные константы и переменные типа – короткая строка. Выделяемая память. Обращение к значениям составляющих. Реализация операции присваивания.

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

Пусть S – это типизированная константа или переменная типа – короткая строка с максимальной длиной (строки)M{1, … , 255}, а L– длина значенияS. ДляS в оперативной памяти отводится участок длиной в M+1 байт.

0-й байт

1-й байт

2-й байт

L-й байт

L+1-й байт

M-й байт

Значение S.

S

Первый символ значения S располагается в первом байте, второй – во втором, и т.д., L-й – вL-ом. В нулевом байте хранится символ, порядковый номер которого равняется длине значения S, т.е. числуL.

Обращение к значениям элементов строки S осуществляется так же, как и обращение к значениям элементов одномерного массива. Обращение к значению первого элемента – это запись S[1], к значению второго элемента – запись S[2], к содержимому нулевого байта – запись S[0]. ORD(S[0]) совпадает с длиной значенияS. На месте номера в квадратных скобках может быть произвольное целочисленное выражение, значением которого является номер элемента.

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

Рассмотрим пример.

Пример 1.

PROCEDURE … ;

VAR

S: STRING[10];

BEGIN

S := ’ABCDEF’; // S = ’ABCDEF’

S := ’0123456789ABCD’ // S = ’0123456789’

END;