
- •Курс «основы алгоритмизации и программирования»
- •Тема: «структурированные типы данных»
- •Классификация типов данных, используемых в программах на языке паскаль
- •1. Строковый тип данных
- •1.1. Базовый тип
- •1.2. Объявление строкового типа
- •1.3. Операции над строками
- •1.4. Стандартные процедуры и функции обработки строк
- •1.5. Ввод-вывод строк
- •1.6. Asciiz-строки
- •2. Комбинированные типы данных
- •2.1. Описание записи
- •Организация записи stud
- •2.2. Селектор записи
- •2.3. Оператор присоединения
- •2.4. Вложенные записи
- •2.5. Записи с вариантами
- •3. Индивидуальные задания.
- •Тема: «структурированные типы данных»
- •- Страница 18 -
1.4. Стандартные процедуры и функции обработки строк
Основные действия над строками и символами реализуются с помощью встроенных процедур и функций, среди которых наиболее часто применяют следующие:
Delete(st,i,n)– процедура, удаляетnсимволов из строкиstначиная с символа с номеромi. Например, после выполнения операторов
st:=’строки’;
delete(st,2,2);
строка st примет значение ‘соки’.
Insert(s,st,i)– процедура, вставляет подстрокуsв строкуstначиная с символаi. Например:
st:=’ PC ’;
st2:=’IBMXT’;
insert(st1,st2,4);
даст значение переменной st2, равное строке ‘IBM PC XT’.
Можно проиллюстрировать возможности рассмотренных двух процедур на примере преобразования слова «компьютеризация» в слово «генерация».
program demo_functions;
var words:string[79];
begin
writeln;
words:=’компьютеризация’;
writeln(words);
delete(words,1,7);
writeln(words);
delete(words,3,2);
writeln(words);
insert(‘г’,words,1);
writeln(words);
insert(‘не’,words,3);
writeln(words)
end.
В результате работы данной программы на экран будут выведены следующие строки:
компьютеризация
еризация
ерация
герация
генерация
Str(x,st)– процедура, преобразует числовую величинуxв строкуst. Например, фрагмент программы
x:=4.8E+03;
str(x,st);
даст строку st, равную‘4800’. После числовой величиныxможет быть указан формат вывода. Если он недостаточен, то поле автоматически расширяется до номинального. Например, если в предыдущем обращении добавить и формат вывода:
x:=4.8E3;
str(x:10,st);
то получим строку stразмером в 10 символов, в которой выводимое число выравнивается по правой границе поля вывода: ‘ 4800’.
Val(st,x,code)– процедура, преобразует строкуstв числоx. Если преобразование прошло успешно, то параметрcodeпринимает значение 0:
st:=’14.2E+02’;
val(st,k,n);
тогда k=1420иn=0. Если же преобразование строки в число невозможно, значение числовой величины будет не определено, а параметруcodeприсваивается номер первого ошибочного символа:
st:=’14.2A+0,2’;
val(st,k,n);
здесь значение kне определено, аn = 5.
Concat(x[,y,…,z])– функция типаstring; возвращает в строку, представляющую собой сцепление строк-параметровx, y, …,z. Например:
st1:=’Turbo’;
st2:=’Pascal’;
st:=concat(st1,’ ‘,st2);
дают значение переменной st, равной строке ‘Turbo Pascal’.
Copy(st,i,n)– функция типаstring; копирует из строкиstровноnсимволов начиная с символа с номеромi. Еслиiбольше длины строки, то функция возвращает пробел, а приi>255возникает ошибка. Например, из строкиst1:=’акватория’с помощью оператораst:=copy(st1,5,3);будет выделена подстрокаst=’тор’. При этом исходная строкаst1остается без изменения.
Length(st)– функция типаinteger; возвращает длину строкиst, определяемую количеством символов, содержащихся в ней.
Pos(s,st)– функция типаinteger; отыскивает в строкеstпервое вхождение подстрокиsи возвращает номер позиции, с которой она начинается (если подстрока не найдена, возвращает нуль). Например, после выполнения операторов
st:=’В лесу родилась елочка, в лесу она росла’;
st1:=’лес’;
n:=pos(st1,st);
переменная n примет значение 3.
UpCase(ch)– функция типаchar, преобразует строчную буквуchв прописную. При этом обрабатываются только латинские буквы.
Пример 2. Пусть необходимо удалить из строкиst1первое вхождение подстрокиst2, независимо от регистра, в котором представлены строки. Это можно сделать с помощью следующего фрагмента программы:
{преобразование строки st1 к верхнему регистру}
for i:=1 to length(st1) do st1[i]:=UpCase(st1[i]);
{преобразование строки st2 к верхнему регистру}
for i:=1 to length(st2) do st2[i]:=UpCase(st2[i]);
{удаление подстроки st2 из строки st1}
Delete(st1,pos(st2,st1),length(st2));