Стандартные процедуры и функции для строк

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

Функция Length

Встроенная функция Length (длина) позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной.

Пример.

var

word: string;

begin

write (‘Введите, пожалуйста, слово: ‘);

readln (word);

writeln (‘Это слово состоит из ’, length(word) : 3, ‘ букв!’)

end.

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

Функция Upcase

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

Пример.

var

word : string;

i : byte;

begin

word := ‘Фирма Microsoft’;

for i := 1 to length (word) do word [i] := upcase (word[i]);

writeln (word); {Выводится текст “ Фирма MICROSOFT”}

end.

Русские литеры не могут обрабатываться этой функцией, поэтому в результате работы этой программы на терминал выдается строка, содержащая большие английские и маленькие русские буквы.

Функция Copy

Функция Сopy позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая функцию copy, необходимо указывать следующие параметры: 1) имя строки, из которой должен извлекаться копируемый фрагмент; 2) позицию в строке, начиная с которой будет копироваться фрагмент; 3) число копируемых символов.

Пример.

var

ws: string [79];

w1,w2,w3 : string [20];

begin

ws := ‘фотографирование’;

w1 := copy (ws, 1, 4); writeln (w1);

w2 := copy (ws, 5, 4); writeln (w2);

w3 := copy (ws, 10, 3); writeln (w3);

end.

В результате выполнения программы на экран выводится:

фото

граф

ров

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

Функция Pos

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

var

ws : string [79];

sw : string [20];

p : byte;

begin

ws := ‘Электрификация’;

sw := ‘Эл’; p := Pos (sw,ws); writeln(p);

sw := ‘три’; p := Pos (sw,ws); writeln(p);

sw := ‘к’; p := Pos (sw,ws); writeln(p);

end.

В результате выполнения программы на экране появляется:

Функция Pos требует полного совпадения искомого фрагмента и фрагмента строки, в которой производится поиск. Большие и маленькие буквы считаются различными символами.

Процедуры Insert и Delete

Процедура Insert вставляет в исходную строку какую-либо другую строку, начиная с указанной позиции. Оператор Insert (w1, ws, 4); вставит строку w1 в строку ws перед 4–ой позицией.

Процедура Delete удаляет в исходной строке фрагмент определенной длины, начинающийся с указанной позиции. Оператор Delete (ws, 2, 3); удаляет из строки ws фрагмент, состоящий из трех символов и начинающийся со второй позиции.

var

ws : string [79];

sw : string [20];

begin

ws := ‘компьютеризация’; writeln (ws);

delete (ws, 1, 7); writeln (ws);

delete (ws, 3, 2); writeln (ws);

sw := ‘Г’; insert(sw, ws, 1); writeln (ws);

sw := ‘не’; insert(sw, ws, 3); writeln (ws);

end.

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

компьютеризация

еризация

ерация

Герация

Генерация

Во избежание ошибок при применении процедур Insert и Delete указанные в списке параметров позиции должны обязательно присутствовать в обрабатываемых строках.

Процедура Str

Процедура Str (x [:width [:decimals]], st) преобразует число х любого вещественного или целого типов в строку символов st. Параметры width и decimals, если они присутствуют, задают формат преобразования. Width определяет общую ширину поля, выделенного под соответствующее символьное представление вещественного или целого числа х, а decimals – количество символов в дробной части (имеет смысл только в том случае, когда х – вещественное число).

var

y : integer; x : real; st : string [8];

begin

y := 45; str(y, st); writeln (st);

y := 45; str(y:3, st); writeln (st);

y := -2; str(y:5, st); writeln (st);

x := 45.678;

str(x:7, st); writeln (st);

str(x:10, st); writeln (st);

str(x:6:2, st); writeln (st);

str(x:8:3, st); writeln (st);

end.

Вывод на экране дисплея:

_45

_ _ _-2

_4.6Е+01

_4.568Е+

_45.68

_ _45.678

Процедура Val

Процедура val (st, x, code) преобразует строку символов st во внутреннее представление целой или вещественной переменной х, которое определяется типом этой переменной. Параметр code содержит ноль, если преобразование прошло успешно, и тогда в х помещается результат преобразования, в противном случае он содержит номер позиции в строке st, где обнаружен ошибочный символ, и в этом случае содержимое х не меняется. Пробелы в строке st могут присутствовать лишь в начале.

var

x : real; y : integer; st : string;

begin

st := ’45.678'; val(st,x,y); writeln (x:6:3,’ ‘,y);

x := 0;

st := ‘3,1415’; val(st,x,y); writeln (x:6:3,’ ‘,y);

{запятая - недопустимый символ}

st := ‘ 45.678’; val(st,x,y); writeln (x:6:3,’ ‘,y);

st := ’45.6 ‘; val(st,x,y); writeln (x:6:3,’ ‘,y);

end.

Результат выполнения программы:

45.678 0

0.000 2

45.678 0

0.000 5

Наши рекомендации