Помощь в написании студенческих работ
Антистрессовый сервис

Строки и средства их обработки

РефератПомощь в написанииУзнать стоимостьмоей работы

Тип String допускает и пустую строку — строку, не содержащую символов: EmptyStr := '' {подряд идущие кавычки}. Она играет роль нуля (нейтрального элемента) операции конкатенации: EmptyStr + X = X + EmptyStr = X. Над строками определена операция конкатенации «+», результат которой — строка, в которой операнды соединены в порядке их следования в выражении. Например: Delete (var X: String; Index… Читать ещё >

Строки и средства их обработки (реферат, курсовая, диплом, контрольная)

Значением строкового типа данных являются строки. Стандарт языка предусматривает использование строк только как констант, используемых в операторах вывода Write, Writeln. В расширении языка Turbo-Pascal строковый тип данных определен гораздо полнее.

Рис. 3. Определение строкового типа

Здесь целое принадлежит диапазону 1.255 и означает максимальное количество символов в строке этого типа. Если описание типа String используется без указания максимального количества символов, это (по умолчанию) означает, что под этот тип резервируется 255 символов.

Например:

Type Name = String[20]; { строки из 20-ти символов }.

Post = String; { строки из 255-ти символов }.

Процедуры и функции типа String.

Над строками определена операция конкатенации «+», результат которой — строка, в которой операнды соединены в порядке их следования в выражении. Например:

'Turbo' + 'Pascal' = 'TurboPascal'; 'Turbo_' + 'Pascal ' + 'System' = 'Turbo_Pascal System';

Поэтому результатом выполнения серии операторов будут выведенные на экран строки Пример сложения строк.

X := 'Пример'; У := 'сложения'; Z := 'строк';

Writeln (X + Y + Z); Writeln (Y + ' ' + Z + ' ' + X).

Тип String допускает и пустую строку — строку, не содержащую символов: EmptyStr := '' {подряд идущие кавычки}. Она играет роль нуля (нейтрального элемента) операции конкатенации: EmptyStr + X = X + EmptyStr = X.

Над строками определены также отношения (операции логического типа).

" = «, ««, ««, «= «.

Таким образом, каждый из строковых типов упорядочен, причем лексикографически. Это означает, что.

  • а) порядок на строках согласован с порядком, заданным на символьном типе (Char);
  • б) сравнение двух строк осуществляется посимвольно, начиная с первых символов;
  • в) если строка A есть начало строки B, то A < В;
  • г) пустая строка — наименьший элемент типа.

Например:

  • а) 'с' < 'k', так как Ord (`c') < Ord (`k');
  • б) 'abс' < 'abk', так как первые два символа строк совпадают, а сравнение третьих дает Ord (`c') < Ord (`k');
  • в) 'abс' < 'abkd', так как первые два символа строк совпадают, а сравнение третьих дает Ord (`c') < Ord (k);
  • г) 'ab' < 'abсd', так как строка 'ab'- начало строки 'abсd'.

На строковом типе данных определены:

Функции:

a) Length (X: String): Byte; - длина строки X; { Length (EmptyStr) = 0 }.

  • б) Pos (Y:String; X: String):Byte; - позиция первого символа первого слева вхождения подстроки Y в строку X. Если X не содержит Y, Pos (Y, X) = 0.
  • в) Copy (X:String; Index, Count: Integer):String — подстрока строки X, начинающаяся с позиции Index и содержащая Count символов.
  • г) Concat (X1, X2, ., Xk: String): String; - конкатенация строк Х1, X2, ., Xk. Другая форма записи суммы X1+X2+. +Xk.

Процедуры:

д) Delete (var X: String; Index, Count: Integer); Из строки X удаляется Сount символов, начиная с позиции Index. Результат помещается в переменную X.

e) Insert (Y:string; var X: String; Index: Integer); В строку X вставляется строка Y, причем вставка осуществляется начиная с позиции Index.

Стандартные процедуры ввода-вывода Паскаля расширены для ввода-вывода строк. Отметим, однако, что для ввода нескольких строковых данных следует пользоваться оператором Readln. Оператор Read в этих случаях может вести себя непредсказуемо.

Пример 2. Дан массив A[1.n] of string[20]. Составить программу замены всех первых вхождений подстроки L в A[i] на подстроку R. Строки L и R вводятся с клавиатуры в виде равенства L = R. Результат замен отобразить в массив, элементы которого — равенства вида A[i]=результат замены L на R в A[i].

Program RewriteArray;

Const n = 100; Single = 20; Double = 41;

Type.

Sitem = string[Single]; Ditem = string[Double];

SWordArray = array[1.n] of Sitem; DWordArray = array[1.n] of Ditem;

Var.

A: SWordArray; B: DWordArray;

L, R: Sitem; X: Sitem;

i, Index: Integer;

Procedure InpWord (var U, V: Sitem);

Var X: Ditem;

j: Integer;

Begin.

Writeln ('________ Ввод равенства L = R __________');

Read (X); j := Pos ('=', X);

U := Copy (X, 1, j — 1);

V := Copy (X, j + 1, Length (X)).

End;

Procedure InpArray;

begin.

Writeln ('====== Ввод массива слов ======');

For i:=1 to n do Readln (A[i]).

end;

Procedure OutArray;

begin.

Writeln ('====== Вывод массива слов ====');

For i:=1 to n do Writeln (B[i]).

end;

Begin.

InpArray; {ввод массива слов с клавиатуры}.

InpWord (L, R); {ввод и анализ равенства L = R}.

For i := 1 to n do begin.

X := A[i]; Index := Pos (L, X);

If Index 0.

then begin.

Delete (X, Index, Length (L));

Insert (R, X, Index).

end;

B[i] := A[i] + '=' + X.

end;

OutArray; {вывод массива слов на печать }.

End.

Показать весь текст
Заполнить форму текущей работой