Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У_П_Инф1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.88 Mб
Скачать

4.2. Строки типа string

Для организации необходимых действий со строками в Turbo Pascal используется стандартный тип данных string. Строки записываются в виде заключенных в апострофы символов, например: ‘aurinko’, ‘солнце’, ‘’(пустая строка), ‘ ’(пробел), ‘об’’ем’(апостроф указывается дважды). Строковые переменные описываются следующим образом:

var st : string[<константное выражение>];

Значение константного выражения (обозначим его через n) называют объявленным размером строки. N измеряется в байтах и находится в следующих пределах: 0 n 255. Если размер строки не указан, то считается, что n = = 255 . При вводе или присваивании строк символы, выходящие за объявленный предел, отбрасываются. Символы в стринге пронумерованы от нуля. В нулевом байте содержится информация о длине строки, представленная символом, т.е. фактический размер строки может быть определен как ord(st[0]). Приведем простой пример описания и некоторых действий со строковыми переменными.

program primer;

type stroka = string[30]; {Тип-строка, содержащая не более 30 символов}

var s : stroka;

s1 : string; {Строка максимального размера}

s2 : string[10]; {Строка из 10 символов}

begin

s2 := ‘Это string’;

s2[0] := chr(3); {Изменяем размер строки}

writeln(s2) end. {На экран будет выведено слово “Это”}

При сравнении строк большей считается та строка, в которой содержится больше символов. Если число символов в строках одинаковое, то решение принимается по первым неодинаковым символам, например ‘Это’ < ‘это’, ‘Марс’ > ‘Марк’ и т. д. Ниже приводятся стандартные процедуры и функции, используемые при работе со строками.

Функция length(s) возвращает фактический размер стринга s.

Функция pos(s1,s) возвращает позицию первого вхождения подстроки s1 в строку s.

Функция copy(s, p, n) копирует из строки s n символов, начиная с символа, находящегося на позиции p.

Процедура delete(s, p, n) удаляет из строки s n символов, начиная с символа на позиции p.

Процедура insert(s1, s, p) вставляет подстроку s1 и строку s, начиная с позиции p.

Функция concat(s1, s2, …) объединяет в одну строки s1, s2, …

Для взаимного преобразования строковых и числовых данных служат процедуры:

str((<число>[:n[:k]], <переменная типа string>);

val(<строка>, <переменная-число>, <номер>).

В процедурах строка может содержать только цифры и разделитель целой и дробной частей числа, номер возвращает номер ошибочно введенной позиции, n и k задают формат числа (k - число позиций, отводимых под дробную часть).

Пример14. В строке s1 заменить подстроку s2 на подстроку s3. Строки выбрать произвольно.

Ниже приведены структурограмма и программа наших действий.

Ввод (s1, s2, s3)

Вычисление длины строк s2 и s3 (n и i)

Нахождение p - позиции 1-го вхождения s2 в s1

ДА p  0 НЕТ

Удаление s2 из s1 Вывод

Вставка s3 в s1 (‘Заменяемая

Копирование s3 из s1 в s строка не

Вывод (s, s1) обнаружена)

program stringi;

const cs = ‘любой’;

var s, s1, s2, s3 : string;

i, n, p : byte;

begin

writeln(‘’Введите исходную строку s1);

readln(s1); {‘На любой работе надо что-то делать’}

s2 := cs; s3 := ‘этой’;

i := length(s3); {Длина s3}

n := ord(s2[0]); {Длина s2}

p := pos(s2, s1); {Первое вхождение s2 в s1}

if p <> 0 then begin

delete(s1, p, n); {Удаление s2 из s1}

insert(s3, p, i); {Вставка s3 в s1}

s := copy(s1, p, i); {Копируем s3 из s1 в s}

writeln(‘Результирующая строка: ’, s1);

writeln(‘В нее вставлена подстрока: ’, s) end

else writeln(‘Заменяемая строка не обнаружена’ end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]