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

8.2. Операции над символами

Символы можно лишь присваивать и сравнивать друг с другом. При сравнении символов они считаются равными, если равны их ASCII-коды; и один символ больше другого, если имеет больший ASCII-код: {151}

'R' = 'R'

'r' > 'R' ( код 114 > кода 82 ).

Операции сравнения записываются традиционным способом:

<, <=, =, >=, >, <>.

Каждый символ можно рассматривать как элемент множества Set of Char и применять к нему операцию проверки на включение in:

VAR Ch : Char;

...

ch := 'a';

if Ch in ['a'..'z'] then ...

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

Таблица 8.1

Функция

Назначение

Chr(X:Byte) : Char

Возвращает символ ASCII-кода X

Ord(C:Char) : Byte

Возвращает ASCII-код символа C

Pred(C:Char) : Char

Выдает предшествующий C символ

Succ(C:Char) : Char

Выдает последующий за C символ

UpCase(C : Char) : Char

Переводит символы 'a'..’z’ в верхний регистр: ’A’..’Z’

Функции Succ и Pred хороши для последовательного перебора символов. Следует только помнить, что не определены значения Succ(#255) и Pred(#0).

Функция UpCase переводит в верхний регистр символы латинского алфавита, возвращая все остальные, в том числе и кириллицу, в исходном виде.

8.3. Операции над строками

Строки можно присваивать, сливать и сравнивать. Слияние строк записывается в естественном виде (рис. 8.3). Если сумма получается длиннее, чем описанная длина левой части оператора присваивания, излишек отсекается.

Сравнение строк происходит посимвольно, начиная от первого символа в строке. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны: {152}

VAR

S1, S2, S3 : String;

BEGIN

S1 := 'Вам ';

S2 := 'привет';

S3 := S1 + S2; { S3 = 'Вам привет' } S3 := S3 + ' !'; { S3 = 'Вам привет !' }

END.

Рис. 8.3

'abcd' = 'abcd' --> TRUE,

'abcd' <> 'abcde' --> TRUE,

'abcd' <> ' abcd' --> TRUE.

Если при посимвольном сравнении окажется, что один символ больше другого (его код больше), то строка, его содержащая, тоже считается большей. Остатки строк и их длины не играют роли. Любой символ всегда больше «пустого места»:

'abcd' > 'abcD' ( так как 'd'>'D' ),

'abcd' > 'abc ' ( так как 'd'>' ' ),

'aBcd' < 'ab' ( так как 'B'<'b' ),

' ' > " ( так как #32>" ).

Можно, конечно, использовать нестрогие отношения: >= и <=.

Для работы со строками реализовано большое количество процедур и функций (табл. 8.2):

Таблица 8.2

Процедуры и функции

Назначение

РЕДАКТИРОВАНИЕ СТРОК

Length(S:String) : Byte

Выдает текущую длину строки

Concat(S1, S2,…,Sn) : String

Возвращает конкатенацию или слияние строк S1 … Sn

Copy(S:String ; Start, Len : Integer) : String

Возвращает подстроку длиной Len, начинающуюся с позиции Start строки S

Delete(Var S : String; Start, Len : Integer)

Удаляет из S подстроку длиной Len, начинающуюся с позиции Start строки S {153}

Insert(VAR S : String; SubS: String; Start: Integer)

Вставляет в S подстроку SubS, начиная с позиции Start

Pos(SubS, S : String) : Byte

Ищет вхождение подстроки SubS в строке S и возвращает номер первого символа SubS в S или 0, если S не содержит SubS

ПРОЦЕДУРЫ ПРЕОБРАЗОВАНИЯ

Str(X[ :F[:n]]; VAR S : String)

Преобразует числовое значение X в строковое S. Возможно задание формата для X

Val( S : String; VAR X; VAR ErrCode : Integer)

Преобразует строковое значение S (строку цифр) в значение числовой переменной X

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