Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MET1.doc
Скачиваний:
18
Добавлен:
16.11.2019
Размер:
1.02 Mб
Скачать

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

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

Пример

‘R’=‘R’ (код 82=код 82)

‘r’>‘R’ (код 114> кода 82)

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

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

  1. CHR(X:byte):char  возвращает (переводит) символ по коду Х таблицы ASCII.

  2. ORD(C:char):longint  возвращает (определяет) ASCII-код символа С.

  3. PRED(C)  возвращает (определяет) предшествующий С аргумент, т.е. символ.

  4. SUCC(C)  возвращает (определяет) последующее значение аргумента, т.е. следующий за С символ.

  5. UPCASE(C:char):char  преобразует символы-буквы в прописные.

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

Строки можно присваивать, сливать и сравнивать. Слияние строк происходит при помощи знака "+". Если сумма получается длиннее, чем описанная длина левой части оператора присваивания, то излишек отсекается.

Сравнение строк происходит посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не нарушится равенство, и тогда сразу делается вывод о знаке неравенства, например, 'balkon'>'balken' (ord('o')>ord('e')). Строки равны, если имеют одинаковую длину и совпадают посимвольно.

Строка представляет собой последовательность символов, которые можно рассматривать как элементы одномерного массива.

Для работы со строками реализованы следующие процедуры и функции.

Строковые процедуры

  1. DELETE(VAR ST: STRING; N, K:INTEGER)  удаляет из строки ST, начиная с позиции N, количество K символов.

  2. INSERT(S1:STRING; VAR S2:SNRING;N:INTEGER)  вставляет подстроку S1 в строку S2, начиная с позиции N.

  3. STR(V; VAR ST:STRING)  преобразует числовые значения V в строку символов ST.

  4. VAL(ST:STRING; VAR V; VAR CODE:INTEGER)  преобразует строку ST в ее целое или действительное представление и запоминает его в переменной V. Переменная CODE  признак ошибки преобразования строки (0 – нет ошибки).

Строковые функции

  1. COPY(ST:STRING;N,K:INTEGER):STRING  возвращает (выделяет) подстроку из строки ST, начиная с позиции N, с количеством K символов.

  2. CONCAT(S1,S2,S3,...,SN):STRING сцепляет последовательно строки S1, S2, S3, ..., SN.

  3. POS(S1,ST:STRING) :BYTE определяет, с какой позиции в строке ST начинается подстрока S1.

  4. LENGTH(ST:STRING):BYTE  возвращает (определяет) длину строки ST.

Примеры

1. В заданном тексте заменить все имена ‘Аня’ на ‘Ольга’.

PROGRAM IMENA;

USES CRT;

VAR ST:STRING;

K:INTEGER;

BEGIN

WRITELN(‘Введи текст’);

READLN(ST);

K:=POS(‘Аня‘,ST);Ищем позицию слова «Аня» в тексте }

WHILE K>0 DO

BEGIN

DELETE(ST,K,3);{ Удаляем имя «Аня»}

INSERT(‘Ольга’,ST,K); {Вставляем имя «Ольга» на эту же позицию}

K:=POS(’Аня‘,ST);

END;

WRITELN(‘Полученная строка ’);

WRITELN(ST);

END.

2. Задан текст только из латинских букв. Определите, расположены ли в нём буквы в алфавитном порядке или обратном по отношению к алфавитному порядку.

PROGRAM PR;

USES CRT;

VAR ST:STRING;

K1,K2,I,N:INTEGER;

BEGIN

CLRSCR;

WRITELN('Введите строку');

READLN(ST);

N:=LENGTH(ST);

K1:=0;K2:=0;

FOR I:=1 TO N-1 DO

BEGIN

IF ST[I]<>SUCC(ST[I+1])THEN K1:=K1+1;

IF ST[I]<>PRED(ST[I+1]) THEH K2:=K2+1;

END;

IF (K1=0)OR (K2=0) THEN WRITELN('Буквы расположены в алфавитном порядке')

ELSE WRITELN('Нет'); END.

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