Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр.на_ЯВУ_уч.пос.DOC
Скачиваний:
24
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

§6.2. Строки

Массивы, содержащие в качестве элементов символы, являются особенными. Если с обычными массивами обработка идет поэлементно, с использованием операций, разрешенных для элементов, то элементы текста взаимосвязаны, и, соответственно, используются специальные процедуры и функции.

В стандартном Паскале для строковых массивов были введены некоторые дополнительные правила, в Турбо-Паскале такие массивы выделены в отдельный тип – строки.

Строки описываются следующим образом:

Type <имя> = string [[<длина>]];

Var <имя>[, ...] : string [[<длина>]];

Здесь необязательный параметр <длина> указывает максимальное количество символов в строке. Если длина не задана, то по умолчанию (автоматически) принимается максимально возможная длина 255. Это связано с тем, что один байт как раз и указывает на длину строки, но в сам текст строки не включается.

Строка в Турбо Паскале трактуется как цепочка символов. К любому символу в строке можно обратиться точно так же, как к элементу одномерного массива ARRAY [0..N] OF CHAR: указывается имя и в квадратных скобках позиция символа. Например:

var

st: String;

begin

…

if st[5] = 'A' then…

…

В дополнение к операциям, применимым к переменным типа Char, введены групповые операции сцепления (конкатенации, объединения) нескольких строк с использованием знака «+». При этом длина итоговой строки увеличивается, и это главное отличие строк от массивов. Элементы строки нумеруются, начиная с единицы, отсутствие элементов – строка нулевой длины. Запись константы имеет вид строки, в следующем примере объединяются три константы:

Writeln(' Это'+' – '+'строка');

Результат: вывод строки «Это – строка»

Для работы со строками используются следующие стандартные процедуры и функции.

Функцию Concat (<строка> [, …]) можно использовать вместо операции сцепления. Тогда пример сцепления строк будет выглядеть как:

Writeln(Concat(' Это',' – ','строка');

Функция Length (<строка>) позволяет определить не предельную, а фактическую длину строки. Результат – целое число. Например:

If Length(st)<>0 then …

Функция UpCase (<символ>) позволяет преобразовать символ любой латинской буквы из строчной в прописную.

Функция Copy (<строка>, <номер первого символа>, <количество символов>) позволяет копировать или выделять фрагмент строки, например:

Writeln(Copy('Выводятся символы этой строки', 11,7));

Результат: вывод строки «символы».

Функция Pos (<искомая подстрока>, <строка>) позволяет произвести поиск определенного фрагмента в некоторой строке и определить номер символа, с которого начинается вхождение подстроки. Например:

Writeln(Pos('сл','Поиск слова');

Результат: вывод числа 7.

Процедура Insert (<вставляемая подстрока>, <строка>, <номер символа в строке>) вставляет в исходную строку, начиная с указанной позиции, другую строку. Например:

Insert('важного ','Поиск слова',7);

Результат – строка (второй аргумент) изменится на «Поиск важного слова».

Процедура Delete (<строка>, <номер первого удаляемого символа>, <количество символов>) удаляет в исходной строке фрагмент определенной длины:

Delete('Это – строка',4,2);

Результат – строка (первый аргумент) изменится на «Это строка». Удаляются 2 символа, так как пробел – тоже символ.

Процедура Val (<строка>, <переменная>, <код ошибки>) преобразует строку символов во внутреннее представление целой или вещественной переменной, которое определяется типом этой переменной. Третий параметр содержит ноль, если преобразование прошло успешно, и тогда переменной присваивается результат преобразований, в противном случае код ошибки содержит номер позиции в строке, где обнаружен ошибочный символ, и в этом случае содержимое переменной не меняется. Например:

VAL ('135.67',x,cod)

Результат: значение переменных х=135.67 (1.3567102), cod=0.