
Лекция 5 Строковые величины. Символьные величины
Литерный (символьный) тип char определяется множеством значений кодовой таблицы ПК. Каждому символу задается целое число от 0 до 255. В программе значения переменных и констант типа char должны быть заключены в апострофы.
Пример.
Program lit;
Var c, symbol: char;
Begin
C:= ‘A’;
Symbol:=’д’;
Writeln(c);
Write(symbol);
End.
Результат выполнения программы:
А
д
Над данными символьного типа определены операции отношения: =, <>, >,<,<=,>=, вырабатывающие результат логического типа, и следующие стандартные функции:
Chr(x) – преобразует выражение х в символ и возвращает значение символа
Ord(ch) – преобразует символ ch в его код и возвращает значение кода
Pred(ch) – возвращает предыдущий символ
Succ(ch) – возвращает следующий символ
Пример.
Ord(‘:’) =58
Ord(‘A’)=65
Chr(128)=Б
Pred(‘Б’)=А
Succ(‘Г’)=Д
Строковые величины
Строка (строковый тип данных) – это последовательность символов кодовой таблицы ПК. Количество символов в строке (длина строки) может лежать в диапазоне от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует значение максимальной длины строки данного типа (заключается в квадратные скобки).
Строковые данные могут использоваться в качестве констант. Строковая константа – последовательность символов, заключенная в апострофы. Например, ‘237’, ‘это строковая константа’.
Переменную строкового типа можно определить в разделе описания переменных:
Var <имя>: string[<максимальная длина строки>].
Например, var Name: string[20]. В описании строки можно не указывать длину, в этом случае она равна максимальной величине – 255. Элементы строки определяются именем строки с индексом, заключенным в квадратные скобки. Например, N[5]. Первый символ строки имеет номер 1 и т.д. Можно сказать, что строка представляет собой одномерный массив, элементами которого являются символы. Тип string и тип char совместимы, они могут употребляться в одних и тех же выражениях.
Выражения, в которых операндами служат строковые данные, называются строковыми. Они могут состоять из строковых констант, переменных, знаков операций. Над этими данными допустимы операция сцепления (конкатенация) и операции отношения.
Операция сцепления (+) применяется для соединения нескольких строк в одну строку. Сцеплять можно и константы, и переменные. Длина результирующей строки не должна превышать 255 символов.
Операции отношения (=, <>, >, <, <=, >=) проводят сравнение двух строк и имеют приоритет более низкий, чем операция конкатенации. Сравнение строк производится слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в таблице кодов.
Например, ‘MS-DOS’<’MS-Dos’.
Если строки имеют различную длину, но в общей части символы совпадают, то более короткая строка меньше.
Например, ‘Компьютер’<’Компьютер ’.
Строки равны, если они полностью совпадают.
Например, ‘Маска’ = ’Маска’.
Для обработки строковых данных можно использовать специальные процедуры и функции.
Процедура Delete(St, poz, n) – удаление n символов строки St, начиная с позиции Poz.
Пример
Значение St |
Выражение |
Результат |
‘абвгде’ |
Delete(St, 4, 2); |
‘абве’ |
‘река Волга’ |
Delete(St, 1, 5); |
‘Волга’ |
Процедура Insert (S1, S2, Poz) – вставка строки S1 в строку S2, начиная с позиции Poz.
Пример
Значение S1 |
Значение S2 |
Оператор |
Результат |
‘ ЕС ’ |
‘ЭВМ1841’ |
Insert (S1, S2, 4); |
‘ЭВМ ЕС 1841’ |
‘ N’ |
‘ Рис. 2’ |
Insert (S1, S2 , 6); |
‘ Рис. N2’ |
Процедура Str(N,St) – преобразование числового значения N в строковый и помещение результата в строку St.
Пример
Значение N |
Выражение |
Результат |
1500 |
Str (N:6,St); |
‘ 1500’ |
Процедура Val(St, N,Code) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в N. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно 0, если же обнаружена ошибка, то Code будет содержать номер позиции первого ошибочного символа, а значение N не определено.
Пример
Значение St |
Выражение |
Результат |
‘1500’ |
Val(St, N,Code); |
Code=0 |
’14.2A+02 |
Val(St, N,Code); |
Code=5 |
Функция Copy(S, Poz, N) – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz.
Пример
Значение S |
Выражение |
Результат |
‘Мама мыла раму’ |
Copy(S, 6, 4); |
‘мыла’ |
Функция Concat(S1,S2,…,Sn) – выполняет сцепление строк S1,S2,…,Sn в одну строку.
Пример
Выражение |
Результат |
Concat(‘Мама ’,’мыла ’,’раму’) |
‘Мама мыла раму’ |
Функция Length(S) – определяет текущую длину строки S.
Пример
Значение S |
Выражение |
Результат |
‘1500 символов’ |
Length(S) |
13 |
Функция Pos(S1,S2) – определяет первое появление в строке S2 подстроки S1.
Пример
Значение S2 |
Выражение |
Результат |
‘abcdef’ |
Pos(‘cd’,S2) |
3 |
‘abcdef’ |
Pos(‘k’,S2) |
0 |
Функция UpCase (ch) – преобразует строчную букву в прописную.Обрабатывает буквы только латинского алфавита.
Пример
Значение Ch |
Выражение |
Результат |
‘d’ |
UpCase (ch) |
‘D’ |
Пример. Из данной символьной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.
Program Stroki;
Var S1, S2:string;
Begin
Write(‘Введите строку’);
Readln(S1);
S2:= ‘ ‘;
For i:=1 to length(S1) do
If (S1[i]>=’0’) and (S1[i]<=’9’)
Then S2:=S2+S1[i];
Writeln(‘Результат’, S2)
End.