Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции информатика.doc
Скачиваний:
59
Добавлен:
11.04.2015
Размер:
2.47 Mб
Скачать

6.2 Операции со строками

Сцепление строк (конкатенация) «+»

Эта операция добавляет к первой строке вторую.

Пример 1:

var st1, st2, st3: string[20];

begin

st1:=’Турбо’;

st2:=’Паскаль’;

st3:=st1+’ ’+st2;

writeln(st3); Турбо Паскаль

end.

Пример 2:

var st1, st2: string[7];

begin

st1:=’student’; student

st2:=’123’; 123

st1:=st2+st1; 123stud

end.

Сравнение строк (>, <, >=, <=, =, <>)

Сравнение двух строк осуществляется следующим образом. Символы строк сравниваются попарно друг с другом так, что первый символ первой строки сравнивается с первым символом второй строки, второй символ первой строки - со вторым символом второй и т.д. Символы сравниваются путем сравнения их кодов во внутреннем представлении. Если одна строка короче другой, недостающие символы заменяются нулем. Отношение первой несовпадающей друг с другом пары символов и принимается за отношение двух строк.

‘abc’=’abc’ ‘Abc’<’abc’

‘ab’<’abc’ ‘Abc’<’1ab’

‘ABC’<’ab’

6.3 Процедуры и функции для работы со строками

length (s: string): integer; - функция возвращает текущий размер строки (т.е. количество символов в строке; пробел тоже считается символом).

var n: integer;

str: string[15];

begin

str:=’Turbo Pascal’;

n:=length(str);

write(‘n=’,n); n=12

end.

copy (s: string; n1, n2: integer): string; - функция копирует из сроки S n2 символов, начиная с символа n1.

st1:=’abcdef’;

st2:=copy(st1,2,3); bcd

delete (var s: string; n1, n2: integer); - процедура удаляет из строки S n2 символов, начиная с символа n1.

st1:=’abcdef’;

delete(st1,1,3); def

insert (s1: string; var s2: string; n1: integer); - процедура вставляет строку s1 в строку s2, начиная с символа n1.

st1:=’abcdef’;

insert(‘++’,st1,4); abc++def

pos (s1,s2: string): byte; - функция возвращает номер позиции первого вхождения строки s1 в строку s2. Если строка s1 не входит в строку s2, то возвращает 0.

st:=’abcdef’;

n:=pos(‘d’,st); n=4

k:=pos(‘dc’,st); k=0

str (x[:M[:N]]; var s: string); - процедура преобразует число х в строку символов S; M,N – необязательные форматы вывода числа, аналогичные write.

var x: real;

n: integer;

st: string;

begin

x:=3.141592;

n:=5;

str(x,st); st=’3.141592’;

str(n,st); st=’5’;

str(x:4:2,st); st=’3.14’;

end.

val (s: string; var x, cod: integer); - процедура преобразует строку s в целое или вещественное число х. Если преобразование прошло успешно, то cod=0, иначе cod=номер символа, вызвавшего ошибку.

var x: real;

n, cod: integer;

st: string;

begin

st:=’3.14’;

val(st,x,cod); cod=0

val(st,n,cod); cod=2

end.

upcase (c: char): char; - функция преобразует строчную латинскую букву в заглавную

1) var st: string;

begin

st:=’a bc’;

st[3]:= upcase(st[3]);

write(st); a Bc

end.

2) repeat

write(‘Завершить? (Y/N)’);

readln(c);

until (upcase(c)=’Y’);

Пример 1: Удалить из строки все точки.

var st: string;

n: integer;

begin

write(‘введите строку’);

readln(st);

repeat

n:=pos(‘.’,st);

delete(st,n,1);

until n=0;

writeln(st);

end.

Пример 2: Удалить из строки все цифры.

var st: string;

n: integer;

c: char;

begin

write(‘введите строку’);

readln(st);

for c:=’0’ to ‘9’ do

repeat

n:=pos(c,st);

delete(st,n,1);

until n=0;

writeln(st);

end.

Пример 3: Поменять в строке порядок символов на обратный (abcd на dcba).

var st: string;

n: integer;

c: char;

begin

write(‘введите строку’);

readln(st);

for i:=1 to length(st) div 2 do

begin

c:=st[i];

st[i]:=st[length(st)-i+1];

st[length(st)-i+1]:=c;

end;

writeln(st);

end.

Задачи для самоконтроля

6.1 Определите значение переменной n после выполнения следующей программы:

var n: integer;

str: string[25];

begin

str:=Лев Толстой’;

n:=length(str);

write(‘n=’,n);

end.

6.2 Определите значение переменной st2 после выполнения следующих фрагментов программ:

а) st1:=’abc def’;

st2:=copy(st1,5,2);

б) st2:=’abcdef’;

delete(st2,3,2);

в) st2:=’abcd’;

insert(‘***’,st2,2);