IPB

> Лекция №5.3: Символы и строки. Множества
Форум
Загрузка...
 
Час быка
Час быка
Карта Интернета
Internet Map
Яндекс.Метрика

страницы: 1 2 3 4 5

Содержание

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

Обращение к компонентам строки

Доступ к k–му символу строки осуществляется так же, как к k–й компоненте массива (жирные скобки являются обязательным элементом синтаксиса):

<имя_строки>[<индекс>]

Например:

s := '15.47';
c := s[3];
{c = '.'}

Однако, в отличие от массива, нельзя напрямую заменять1 символы в строке, то есть, действие

s[i] := 'a';

не вызовет ошибки при компиляции, но, скорее всего, не станет работать во время выполнения программы. Для того чтобы изменить символ в строке, нужно воспользоваться стандартными функциями Length(), Concat() и Copy(). В этом случае простое, казалось бы, действие приходится представлять как последовательность четырёх операций:

  1. В качестве первой подстроки взять из строки s символы с 1–го по (k-1)–й:

    s1 := Copy(s, 1, k - 1);
  2. В качестве второй подстроки взять новое значение заменяемого символа:

    s2 := new_char;
  3. В качестве третьей подстроки взять оставшуюся часть строки s:

    s3 := Copy(s, k + 1, Length(s) - k);
  4. Слить эти строки воедино, а результат записать вместо исходной строки s:

    s := Concat(s1, s2, s3);

Или можно объединить все четыре действия в одном операторе:

s := Concat(Copy(s, 1, k - 1), new_char, Copy(s, k + 1, Length(s) - k));
Конкатенация

Единственная операция, которую разрешается производить с переменными строкового типа, — это слияние строк или символов (конкатенация). Она полностью эквивалентна функции Concat() и записывается при помощи знака «+». Таким образом, предыдущий оператор можно сделать более простым:

s := Copy(s, 1, k - 1) + new_char + Copy(s, k + 1, Length(s) - k);

Множества

Ещё один структурированный тип данных — это множество (set). В нём может содержаться не более 256 элементов.

Важное отличие множества от остальных структурированных типов состоит в том, что его элементы не являются упорядоченными.

Описание множеств

В разделе var множества описываются следующим образом:

var <имя_множества>: set of <тип_элементов_множества>;

Элементы могут принадлежать к любому порядковому типу, размер которого не превышает 1 байт (256 элементов). Например:

var s1 : set of Char; {множество из 256–ти элементов}
 s2 : set of 'a' .. 'z', 'A' .. 'Z';  {множество из 52–х элементов}
 s3 : set of 0 .. 10;  {множество из 11–ти элементов}
 s4 : set of Boolean;  {множество из 2–х элементов}

Множество–константа

Неименованная константа

Множество можно задать неименованной константой прямо в тексте программы. Для этого необходимо заключить список элементов создаваемого множества в квадратные скобки:

[<список_элементов>]

Список элементов может быть задан перечислением элементов нового множества через запятую, интервалом или объединением этих двух способов. Элементы и границы интервалов могут быть переменными, константами и выражениями. Если левая граница интервала окажется больше правой, результатом будет пустое множество.

Примеры конструирования и использования различных множеств:

if c in ['a', 'e', 'i', 'o', 'u'] then
 WriteLn('Гласная буква');
if set1 < [k * 2 + 1 .. n, 13] then
  set1 := [];
Нетипизированная константа

Множество — это структурированный тип данных, поэтому его невозможно задать нетипизированной константой.

Типизированная константа

Задать множество как типизированную константу можно в разделе const:

<имя_константы> : set of <тип_элементов> = [<список_элементов>];

Например:

type  cipher = set of '0'..'9';
const odds : cipher = ['1', '3', '5', '7', '9'];
 vowels : set of 'a' .. 'z' = ['a', 'o', 'e', 'u', 'i'];

страницы: 1 2 3 4 5

Примечания

  1. ^ Пожалуйста, не воспринимайте эту ересь всерьёз. В лекциях встречаются небольшие расхождения с теорией и практикой, но на этот раз это перебор. Присваивание символа к s[i] работает и будет работать, следите только, чтобы i <= Length(s) было — прим. OCTAGRAM
 
 К началу страницы 
 

Код для вставки: :: :: :: ГОСТ ::
Поделиться: //
 


-
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"