Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной стоки. Синтаксис:
var s: string[n];var s: string;
n - максимально возможная длина строки - целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.
Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).
Пример:
'Текстовая строка'#54#32#61 'abcde'^A^M
Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.
Переменные, описанные как строковые с разными максимальными длинами, можно присваивать друг другу, хотя при попытке присвоить короткой переменной длинную лишние символы будут отброшены.
Выражения типа char можно присваивать любым строковым переменным.
В Турбо Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st - это 'Строка', то st[1] - это 'С', st[2] - это 'т', st[3] - 'р' и так далее.
Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например:
a := 'Turbo';b := 'Pascal';c := a + b;
В этом примере переменная c приобретет значение 'TurboPascal'.
Кроме слияния над строками определены операции сравнения <,>,=,<>,<=,>=. Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.
ü Процедура 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
Выражение
Результат
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)
ü Функция Pos(S1,S2) – определяет первое появление в строке S2 подстроки S1.
Значение S2
Выражение
Результат
‘abcdef’
Pos(‘cd’,S2)
‘abcdef’
Pos(‘k’,S2)
ü Функция 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.
Перечень источников:
2. Кинг Д. Создание эффективного программного обеспечения. –М.: мир, 1991 – 284с.