Стандартные процедуры и функции для строк
Турбо Паскаль представляет в распоряжение пользователя целый ряд функций и процедур, предназначенных для обработки строк.
Функция 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