КАТЕГОРИИ: Архитектура-(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.
Дата добавления: 2013-12-13; Просмотров: 219; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |