Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
830.55 Кб
Скачать

Строковые выражения

Под строковым будем понимать выражение, результатом которого является символь¬ная строка. Напомним, что символьные значения можно трактовать как строки единич¬ной длины. Кроме операций отношения, над строками определена операция сцепления (конкатенации), которая обозначается знаком плюс — «+». Это бинар¬ная операция. Ее результатом является последовательность символов первою операц¬ии после которой располагается последовательность символов второго операнда. Операндами могут быть строки, массивы типа char или символы. Например:

Выражение                  Результат

' Object'+' Pascal'          ‘Object Pascal’

'Петров'+' П.П'+’.’        ‘Петров П.П.’

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

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

Пример 3.

Составить программу выполняющую следующие действия:

1.Ввод с клавиатуры строку 'Bloomed apples and pears' (Расцветали яблони и гру¬ши).

2.Определяет длину строки.

3.Выделяет из исходной строки подстроки 'apples’(яблони) и 'pears’ (груши).

4.Удаляет из исходной строки подстроку 'apples and’ (яблони и).

5.Вставляет удаленную подстроку на прежнее место.

6.Определяет номер позиции, в которой находится буква r в исходной строке.

Решение

Для решения этой задачи нам потребуются стандартные функции length, copy, pos и процедуры delete и insert.

Программа

program 3;

{$APPTYPE CONSOLE}

uses

SysUtils;

var a,b,c,d:string;

begin

writeln('Enter string');

readln(a);

writeln('length(a) = ',length(a));

b:= copy(a,9,6);

writeln(‘copy(a,9,6) = ',b);

с :=copy(a,20,5);

writeln('copy(a,20,5) = ',c);

d : = copy(a,9,11);

delete(a,9,ll);

writeln('after delete a = ‘,a);

insert(d,a,9);

writeln('after insert a = ' ,a);

writeln('pos(‘r’,a) = ',pos('r',a));

readln

end.

Результаты работы программы

Enter string

Bloomed apples and pears

length(a) = 24

copy(a,9,6) = apples

copy(a,20,5) = pears

after delete a = Bloomed pears

after insert a = Bloomed apples and pears

pos(‘r’,a) = 23

Следует отметить, что для ввода символьных строк необходимо использовать процедуру readln, а не read. Это объясняется тем, что в конце каждой символьной строки, вводимой с клавиатуры, стоит так называемый разделитель строк EOLN – последовательность кодов #13 (CR) и #10 (LF). Разделитель строк вставляется во вводимый текст при нажатии на клавишу Enter. В результате каждая символьная строка отображается в отдельной строке дисплея. Процедура Read может считывать данные только до символа EOLN. Данные расположенные в следующей символьной сроке, т.е за разделителем строк EOLN ,для нее не доступны. Процедура readln считывает все символы, расположенные до разделителя строк, а затем и сам разделитель строк. Поскольку символы #13 (перевод каретки) и #10 (переход в начало строки) являются управляющими, то в результате их считывания курсор дисплея переходит в начало следующей строки. Расположенная в новой строке дисплея символьная строка может быть считана следующей процедурой readln. Из сказанного следует, в частности, что, если переменная x имеет тип string,то процедура

readln(x);

эквивалентна последовательности процедур

read(x);

readln;

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