Содержание
Операции со строками
Обращение к компонентам строки
Доступ к k–му символу строки осуществляется так же, как к k–й компоненте массива (жирные скобки являются обязательным элементом синтаксиса):
<имя_строки>[<индекс>]
Например:
c := s[3];
{c = '.'}
Однако, в отличие от массива, нельзя напрямую заменять1 символы в строке, то есть, действие
не вызовет ошибки при компиляции, но, скорее всего, не станет работать во время выполнения программы. Для того чтобы изменить символ в строке, нужно воспользоваться стандартными функциями Length(), Concat() и Copy(). В этом случае простое, казалось бы, действие приходится представлять как последовательность четырёх операций:
В качестве первой подстроки взять из строки s символы с 1–го по (k-1)–й:
s1 := Copy(s, 1, k - 1);В качестве второй подстроки взять новое значение заменяемого символа:
s2 := new_char;В качестве третьей подстроки взять оставшуюся часть строки s:
s3 := Copy(s, k + 1, Length(s) - k);Слить эти строки воедино, а результат записать вместо исходной строки s:
s := Concat(s1, s2, s3);
Или можно объединить все четыре действия в одном операторе:
Конкатенация
Единственная операция, которую разрешается производить с переменными строкового типа, — это слияние строк или символов (конкатенация). Она полностью эквивалентна функции Concat() и записывается при помощи знака «+». Таким образом, предыдущий оператор можно сделать более простым:
Множества
Ещё один структурированный тип данных — это множество (set). В нём может содержаться не более 256 элементов.
Важное отличие множества от остальных структурированных типов состоит в том, что его элементы не являются упорядоченными.
Описание множеств
В разделе var множества описываются следующим образом:
Элементы могут принадлежать к любому порядковому типу, размер которого не превышает 1 байт (256 элементов). Например:
s2 : set of 'a' .. 'z', 'A' .. 'Z'; {множество из 52–х элементов}
s3 : set of 0 .. 10; {множество из 11–ти элементов}
s4 : set of Boolean; {множество из 2–х элементов}
Множество–константа
Неименованная константа
Множество можно задать неименованной константой прямо в тексте программы. Для этого необходимо заключить список элементов создаваемого множества в квадратные скобки:
[<список_элементов>]
Список элементов может быть задан перечислением элементов нового множества через запятую, интервалом или объединением этих двух способов. Элементы и границы интервалов могут быть переменными, константами и выражениями. Если левая граница интервала окажется больше правой, результатом будет пустое множество.
Примеры конструирования и использования различных множеств:
WriteLn('Гласная буква');
if set1 < [k * 2 + 1 .. n, 13] then
set1 := [];
Нетипизированная константа
Множество — это структурированный тип данных, поэтому его невозможно задать нетипизированной константой.
Типизированная константа
Задать множество как типизированную константу можно в разделе const:
<имя_константы> : set of <тип_элементов> = [<список_элементов>];
Например:
const odds : cipher = ['1', '3', '5', '7', '9'];
vowels : set of 'a' .. 'z' = ['a', 'o', 'e', 'u', 'i'];