Pred(c:char):char - получение символа, предшествующего заданному; (но нет Pred(#0));
Succ(c:char):char - получение символа, следующего за заданным; (но нет Succ(#255));
Операции над символами:
- присваивание; три способа присвоить значение символьной переменной: с:='A'; c:=#65; c:=Chr(65);
- сравнение (по коду): 'R'='R' 'Q'<'R' 'R'<'r'
Символьные строки, как и числа, можно сравнивать между собой и использовать эти равенства и неравенства в качестве условий в циклах и развилках.
Равными считаются строки одинаковой длины (не по описанию, а фактически), у которых все символы, стоящие на соответствующих местах, одинаковы. Например, строки text_1 и text_2 равны, если
text_1 = 'Я вас любил!' , text_2 = 'Я вас любил!'.
В следующих случаях строки text_1 и text_2 не равны:
text_1 = 'Я вас любил!' , text_2 = 'Я Вас любил!' ;
text_1 = 'Я вас любил!' , text_2 = ' Я вас любил!';
text_1 = 'Я вас любил!' , text_2 = 'Я вас любил ...'.
(Попробуйте определить, почему эти строки не равны).
Более того, можно использовать при сравнении строк знаки >
(больше) и < (меньше). Одна строка считается больше другой, если в словаре (где слова расположены по алфавиту) она стоит дальше от начала. Если первые буквы строк совпадают, то сравниваются вторые, затем третьи и т.д. Строчные буквы расположены в таком воображаемом "словаре" после заглавных, а русские после латинских.
Что касается цифр и прочих символов, которые могут входить в строки, можно руководствоваться общим правилом. Каждый символ, который можно набрать на клавиатуре, имеет свой код, эти коды можно посмотреть в специальной таблице,
На компьютерах IBM PC принят код, называемый ASCII.
Символьные строки можно "склеивать" между собой с помощью операции "+" (ее принято называть операцией конкатенации
(объединение)).
Например, выполнение группы операторов
a1 := 'ма'; a2 := 'шина';
b := a1 + a2;
приведет к тому, что переменной b будет присвоено значение 'машина'.
5. Встроенные функции для обработки строк
Length(Str) - функция, котоpая вычисляет текущую длину (в символах) стpоки Str. Pезультат имеет целочисленный тип. Текущая длина стpоки содеpжится также в коде символа Str[0].
Copy(St,K,J) - функция,котоpая выделяет из St подстpоку из J
символов, начиная с позиции K. Если K>Length(St), то pезультатом будет пустая строка.
Pos(S,St) - функция, котоpая опpеделяет наименьший номеp
элемента в St, начиная с котоpого S входит в St как подстpока.
Если в St не найдено S, то pезультат pавен нулю. Pезультат имеет тип byte.
Concat(str1,str2,..) - функция, выполняющая объединение всех строк, указанных в качестве аргументов. Количество аргументов может быть любым.
6. Встроенные процедуры для обработки строк
Delete(Str,K,J) - пpоцедуpа, котоpая удаляет из стpоки Str J
символов, начиная с K-го. Pезультатом является стpока Str без удаленной подстpоки. Если K больше размера строки, символы не удаляются.
Insert(Str1,Str2,K) - пpоцедуpа, котоpая вставляет стpоку
Str1 в стpоку Str2, начиная с позиции K. Если полученная в pезультате стpока Str2 пpевышает 255 символов, то все лишние символы (начиная с 256) отбpасываются.
Str(x,st) - процедура, которая преобразует число X вещественного или целого типа в последовательность символов. Число X
может быть указано с форматом, аналогичным формату вывода в процедуре Write, например: Str(x:8:3,st).
Val(st,x,Code) - процедура, которая преобразует символьное представление числа в числовое значение, соответствующее типу переменной x (вещественному или целому). Переменная Code:integer
служит для контроля правильности выполнения преобразования (Code=0)
или ука зания номера ошибочного символа (Code<>0).
Пр1.
Дана строка. Подсчитать общее число символов +,-,* в данной строке.
Program St1;
const n=10;
var s:string[n];
I,m: integer;
begin
writeln ('введите строку символов, не более 10');
readln(s);
m:=0; {счетчик колличества символов +, -, *}
for i:=1 to length(s) do
if (s[i]='+') or(s[i]='-') or (s[i]='*') then m:=m+1;
write ('m=', m);
end.
Пр 2.
Дана строка из 20 символов. Удалить в ней все пробелы и выделить подстроку, которая в ней содержиться после первого символа ';'.
Program St2;
var stroka:string[20];
I: integer;
begin
writeln ('введите строку символов, не более 20');
readln(stroka);
i:=1;
while (i>0) do
begin
i:=pos('',stroka);{Поиск подстроки ' ' в stroka, результат число, т.е. определяется номер элемента, начиная с которого
' ' входит в stroka}
if i>0 then delete(stroka,i,1) {удаляет один элемент, стоящий на
i-ом месте}
end;
i:=pos(';',stroka); {поиск ':' в строке }
if i>0 then writeln ('подстрока после ; будет такая:',
copy(stroka,i+1,length(stroka)-i)) {выделяет из строки
length(stroka)-i) -элементов, начиная с i+1}
else writeln ('такой подстроки нет');
end.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.