Правила выполнения операций отношения над строками
Над переменными cтрокового типа помимо доступа к символам определены операции присваивания, конкатенации (сцепления) и отношений.
Обращение к символам строки выполняется как к элементам массива символов, т. е. с указанием имени строки и номера элемента, например st[1] или St[i]. Нулевой байт содержит текущее значение длины строки, но так как строка - что массив символов, длина автоматически интерпретируется как символ. Для получения текущей длины строки в виде числа необходимо явное преобразование символьного типа в целый. Например, если i - переменная целого типа, а S3 - переменная строкового типа, то получить текущую длину строки S3 можно:
1) i:= byte(S3[0]); {явное преобразование с помощью автоопределепия}
2) i:=ord(S3[0]); {явное преобразование с помощью специальной функции}
Однако лучше это сделать, используя специальную функцию Length, описанную ниже.
Можно присвоить строке значение строки и значение символа. При выполнении операции символы заполненной части строки и ее длина переписываются в строку-результат, например:
S1:= 'ABCD';{присваиваем строке значение строковой константы}
S2:= 'А'; {присваиваем строке значение символа}
S:= S1; {переписываем одну строку в другую}
При присваивании строке значения символа, последний интерпретируется как строка единичной длины. Если строка-источник длиннее, то при присваивании она усекается в соответствии с длиной строки-результата.
Операция конкатенации позволяет сцепить строки с другими строками или символами. При сцеплении длины строк суммируются, а символы объединяются в одну последовательность. Например:
'fdc' + 'ghj'; {получаем 'fdcghj'}
S4+ 'vvv'; {к строке S4 дописывается 'vvv'}
Результат этой операции можно присвоить какой-либо строке или вывести на экран.
Над строками допускается выполнять операции отношения: = , <>, >, <, >=, <=. Сравнение строк при этом выполняется последовательно слева направо с учетом внутренней кодировки символов до первого несовпадающею символа. Большей считается та строка, код несовпадающего символа которой по таблице ASCII больше. Если длина одной строки меньше другой, то недостающие значения до длины большей строки заполняются символами #0. Результатом операций отношения для строк, как и для чисел, является значение false и true.
Допускается сравнение символов со строками, при этом символы преобразуются в строки единичной длины.
Так, если
S4:= 'ABCD'; S3:='ADFH'; C:= 'L';
то при выполнении операций отношения:
S4 = S3 {получим false}
S4 > S5 {получим false}
S3 > S4 {получим true}
S3 = С {получим false}
Ввод-вывод переменных строкового типа осуществляется одной операцией Read (ReadLn) или Write (Writeln), например:
ReadLn(Sl);
Writeln(S1);
При вводе за строку принимается последовательность символов до кода клавиши ENTER. Если длина введенной строки больше указанной максимальной длины, то лишние символы oтбрасываются, а в нулевой байт записывается значение максимальной длины. В противном случае в нулевой байт записывается количество введенных символов. Поскольку строкой считаются все символы до кода клавиши ENTER, ввести в одной строке строковое значение, а затем, например, число нельзя.
Если при вводе строки просто нажать клавишу ENTER, не вводя никаких символов, то считается, что введена пустая строка.
Дата добавления: 2015-12-01; просмотров: 1331;