Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

2.6. Строки символов

2.6.1. Задание строк

Символьный тип данных позволяет программисту работать с отдельными символами текста. Для обработки более крупных текстовых единиц — строк в Турбо-Паскале введен предопределенный структурный тип данных, который называется STRING (строка).

Значениями этого типа являются строки любых символов, заключенные в одинарные кавычки (апострофы), например: 'Дом’, 'PASCAL’, 'Вперед’.

Переменные типа строки должны быть описаны предложением

Var имя: string[длина];

или

VAR имя: STRING;

где длина - целая константа в диапазоне от 1 до 255, задающая максимальную длину строки. Если длина строки не указана, то она принимается равной 255.

Строки можно присваивать, сравнивать, вводить, выводить и соединять.

Соединение (конкатенация) обозначается знаком «+». Вот примеры некоторых операций (справа — результат операции).

'стол' <= 'столик’ true

'ABC’ < 'ABDA' true

'AAA’ < 'AAAA’ true

'12' < '2' true

'Харь' + 'ков' 'Харьков1

Среди всевозможных значений строк есть пустая строка. Она изображается двумя одинарными кавычками, между которыми ничего нет -".

Кавычка служит ограничителем строки. Чтобы не лишиться возможности иметь этот символ в составе строки, договорились повторять ее там дважды. Например, оператор write ('им"я') выведет на экран: им'я.

2.6.2. Функции и процедуры для обработки строк

Турбо-Паскаль не только вводит дополнительный тип данных string, но и обеспечивает программиста готовыми функциями и процедурами для работы со строками. Функции:

function Concat (s1, s2,..., sN: String): String — соединяет последовательно строки s1, s2,..., sN и возвращает полученное значение;

function Copy (S: String; Index: Integer; Count: Integer): String

— выделяет из строки S подстроку длиной в Count символов, начиная с позиции Index;

function Length (S: String): Integer - возвращает длину строки;

function Pos (Substr: String; S: String) : Byte — возвращает позицию, с которой подстрока Substr первый раз встречается в строке S.

Процедуры:

procedure Delete (var S: String; Index: Integer; Count: Integer)

— удаляет из строки S Count символов, начиная с позиции Index;

procedure Insert (Source: String; var S: String; Index: Integer)

— вставляет подстроку Source в строку S, начиная с позиции Index;

Для преобразования чисел в строки и обратно служат процедуры Str и Val.

procedure Str (X [: Width [: Decimals ]]; var S : string) — преобразует число Х в строку S. Квалификаторы Width и Decimals выполняют ту же роль, что в операторе write. Квадратные скобки означают необязательность того, что в них заключено.

procedure Val (S: String; var V; var Code: Integer) — преобразует строку S в значение числовой переменной V.

Строка S должна быть корректной записью числа. Если это не так, переменная V = 0, переменная Code <> 0.

В случае успешного преобразования Code = 0.

Программисту доступны отдельные символы переменной строки. С ними работают так, как если бы описатель STRING[длина] был равносилен описателю ARRAY [0..длина] OF CHAR.

Другими словами, если описана переменная X: STRING, то, Х[1] — это символьная переменная со значением первого символа строки, Х[2] — символьная переменная со значением второго символа и т.д.

У X [0] особая роль — хранить длину строки. Значением X [0] является символ, код которого равен количеству символов в строке.

Рассмотрим пример использования типа STRING.

Ввести с клавиатуры ряд слов, разделенных пробелами и вывести их по одному в строке, удалив пробелы.

Считаем, что вводится не более 20 слов, каждое не длинее 10 символов.

program div_string; var s:string;

mas_str:array[1..20] of string[10];

i,j integer;

begin

read(s);

for j:=l to 20 do mas_str(j] := ";

j:=1;

for i:=l to length(s) do

begin

if s[i]<>"then

mas_str[j] :=mas_str[j]+s[i] else

if length(mas_str[j])>0

thenj-j+1; end;

j:=l;

while length(mas_str[j])>0 do begin

writeln(mas_str[j]);

j:=j+i;

end; end.