Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции и команды обработки строк

End.

Read(S1,C);

Begin

S2:=S1+C+’Yes’;

Write(‘S2=’,S2);

Пусть была введена строка No i. Тогда после выполнения этой программы получим результат: S2=No i Yes.

Операции отношения

Над строковыми данными допустимы следующие операции отношения: =, <>, >, <, >=, <=.Эти операции имеют приоритет более низкий, чем операция сцепления, т.е. вначале всегда выполняются все операции сцепления, если они присутствуют, и лишь потом реализуются операции отношения. Сравнение строк с помощью операций отношения производится слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в стандартной кодовой таблице.

Результат выполнения операций отношения над строковыми операндами всегда относится к булевскому типу и принимает значение True, если выражение истинно, и False, если выражение ложно. Строки считаются равными, если они полностью совпадают по текущей, а не по объявленной длине и содержат одни и те же символы.

Процедуры

Delete (Var S:String; Poz, L:Integer) видоизменяет строку S, стирая L символов, начиная с символа с номером Poz.

Пример: Var S:String[10];

...

S:=’строка’;

Delete(S,2,4); {S=’са’}.

После стирания подстроки ее оставшиеся части как бы склеиваются. Если Poz = 0 или превышает длину строки S, то строка не изменится. Также не изменит длину строки значение L=0. При L больше остатка строки, будет удалена подстрока от Poz и до конца. Это используют для “подрезания” строк до заданной величины.

Insert (S1:String; Var S:String; Poz:Integer) вставляет подстроку S1 в строку S, начиная с позиции Poz.

Пример: Var S1,S: String[40];

...

S:=’Начало-конец‘;

Insert(‘середина-‘, S, 8); { Имеем S=’Начало-середина-конец‘}.

Str (X [:Width [:dec]]; Var S:String) служит для преобразования числовых значений в строковые. Для целых значений можно задать только Width, для вещественных – либо оба поля (формат с фиксированной точкой), либо одно – Width (экспоненциальная форма). Если число имеет меньше знаков, чем дано в поле, то оно выравнивается по правому краю, пустое место заполняется пробелами. Можно задать Width отрицательным, в этом случае выравнивание происходит по левому краю, а излишек как бы стирается.

Пример: Var S:String;

...

Str(4.53:8:2, S); {S=’ 4. 53’}

Str(4.53:-8:2, S); {S=’4. 53’}

Str(4.53:8:0, S); {S=’ 5’}

Str(1.234567:6:4, S); {S=’1. 2346’}.

Val (S:String; Var V; Var ErrCode:Integer) преобразует числовые значения, записанные в строке S, в числовую переменную V. Если преобразование возможно, то переменная ErrCode равна нулю, в противном случае она содержит номер символа в строке S, на котором процедура застопорилась. Тип V должен соответствовать содержимому строки S.

Функции

Length(S:String): Byte возвращает текущую длину строки S. Результат имеет целочисленный тип.

Пример: Var L:Byte;

...

L:=Length(S);

Concat(S1,S2,…,SN:String): String выполняет слияние строк S1,S2,…,SN в том порядке, в каком они указаны в списке параметров.

Пример: Var Ssum:String[50];

...

Ssum:=Concat(S1,S2,S3);

Если сумма длин строк в Concat превысит объявленную длину строки в левой части оператора присваивания, то излишек будет отсечен. Следует помнить, что вместо Concat можно пользоваться операцией сцепления. Например, Ssum:=S1+S2+S3;

Copy(S:String; Poz, L:Length): String позволяет выделить из строки S последовательность из L символов, начиная с позиции Poz. Если Poz>Length(S), то функция вернет пустую строку, а если L больше, чем число символов от Poz до конца строки S, то вернется остаток строки S от Poz до конца.

Пример: Var Ssum:String;

...

Ssum:=Copy(‘ABC***123’, 4, 3); {Ssum=’***’}

Ssum:=Copy(‘ABC’, 4, 3); {Ssum=’ ‘}

Ssum:=Copy(‘ABC***123’, 4, 11); {Ssum=’***123’]

 

Pos(S1, S:String): Byte возвращает номер символа в строке S, с которого начинается включение в S подстроки S1. Если S не содержит в себе S1, то функция вернет 0. Недостатком функции Poz является то, что она возвращает ближайшую стартовую позицию S1 в S от начала строки, т.е. вызов

Var P:Byte;

...

P:=Poz(‘abc’, ’Nom abcabcabcfcd’);

завершит свою работу, вернув значение 5, хотя есть еще и 8, и 11.

UpCase(C:Ch): Char преобразует строчную букву латинского алфавита в прописную, возвращая все остальные, в том числе и буквы русского алфавита, в исходном виде.

Pred(C:Char): Char выдает предшествующий C символ.

Succ(C:Char): Char выдает следующий за C символ.

Chr(X:Byte): Char возвращает символ, код которого равен X.

Ord(C:Char): Byte возвращает число, равное коду символа C. Учитывая, что текущая длина строки S содержится в S[0], она может быть определена следующим образом:

Var S:String;

L:Byte;

...

Read(S);

L:=Ord(S[0]);

Пример: Дана последовательность из 45 символов. Подсчитать в этой последовательности количество вопросительных и восклицательных знаков.

Program String 02;

Type St = String[45];

Var A: st;

i,K: Byte;

Begin

Writeln('ВВЕДИТЕ СТРОКУ СИМВОЛОВ:');

Readln(a);

K:=0;

For i:=1 to Length(a) Do

if (a[i]='!') Or (a[i]='?') Then K:=K+1;

Writeln('КОЛИЧЕСТВО СИМВОЛОВ! и? В СТРОКЕ= ',k);

End.

<== предыдущая лекция | следующая лекция ==>
Program String_01; | Program KolSlov;
Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 219; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.