Паскаль – стандартные процедуры и функции для строк
Функция 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 := 7 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.
В результате выполнения программы на экране появляется:
1
5
4
Функция 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,_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
спасибо!
word := ‘Фирма Microsoft’;
for i := 1 to length (word) do word [i] := upcase (word[i]);
writeln (word); {Выводится текст “ Фирма MICROSOFT”}
end.
Ошибка. Будьте внимательней. “ Фирма MICROSOFT” выводилось бы если бы было написано:
for i := 7 to length (word) do word [i] := upcase (word[i]);
А так выводится текст ‘ФИРМА MICROSOFT’!!!!
Да, все верно, спасибо за замечание, поправил
здесь вы можете также достаточно подробно почитать о стандартных функциях на языке Pascal
word := ‘Фирма Microsoft’;
for i := 1 to length (word) do word [i] := upcase (word[i]);
writeln (word); {Выводится текст “ Фирма MICROSOFT”}
end.
Ошибка. Будьте внимательней. “ Фирма MICROSOFT” выводилось бы если бы было написано:
for i := 7 to length (word) do word [i] := upcase (word[i]);
А так выводится текст ‘ФИРМА MICROSOFT’!!!!
А разве upcase на русские букавки реагиррует? так что помоему все было правильно!
Почем у вас верхний баннер на сутки?…
не продаем