Занимательное программирование – игры с текстом. Дмитрий Юрьевич Усенков

Чтение книги онлайн.

Читать онлайн книгу Занимательное программирование – игры с текстом - Дмитрий Юрьевич Усенков страница 3

Занимательное программирование – игры с текстом - Дмитрий Юрьевич Усенков

Скачать книгу

этой переменной еще до цикла, – тогда мы просто должны вывести сообщение, что знаков препинания в строке нет.

      7. Чтобы «удалить» найденный знак препинания, сделаем следующее. Оставляя исходную строку неизменной, будем формировать из нее новую строку. Сначала запишем в нее все символы исходной строки с первого до k-го (не включая его), а затем допишем (конкатенируем) к ней символы из правой части исходной строки от k-го (опять же не включая его) до последнего. Первую часть строки (слева от знака препинания) можно получить, используя функцию LeftStr(st, k-1), а вторую (правую) – используя функцию RightStr(st, dl-k). При этом вычисление количеств извлекаемых символов достаточно очевидно, если представить строку наглядно, как на рис. 2.

      Решение достаточно простое. Но запись условного оператора получается довольно громоздкой: ведь в нем надо перебрать (через or) все возможные случаи равенства очередного символа какому-нибудь знаку препинания. Кроме того, подумайте, что было бы, если бы таких сравнений требовалось несколько в разных местах программы и вдруг выяснилось бы, что надо изменить (скажем, дополнить знаком двоеточия) перечень обрабатываемых знаков препинания? Пришлось бы внимательно (но все равно с риском где-то что-то пропустить) просматривать всю программу, выискивать в ней все такие операторы сравнения и дописывать в них еще одно логическое условие…

      Можно ли упростить программу, а заодно – и возможные модификации перечня знаков препинания, обрабатываемых в ней? Можно! И в этом нам поможет интересный, но, к сожалению, редко используемый множественный тип данных – множество (простите за получившийся каламбур).

      Множество – это набор однотипных элементов. Однако в отличие от массива, в котором такие элементы располагаются последовательно и пронумерованы индексами, множество – это просто группа элементов, «сваленных в одну кучу». Индексов у элементов множества нет. Более того – для множества порядок записи в нем элементов не важен, например [1, 2, 3] и [3, 2, 1] – это одно и то же множество цифр. Другая особенность множества – это уникальность его элементов: каждый из них должен присутствовать в множестве только «в одном экземпляре», без повторов, – например, набор [1, 2, 3, 2, 1] множеством не является.

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

      То есть, сначала объявляется некий «класс» множеств, скажем, множество символов или чисел, а затем создается сколько угодно конкретных множеств этого типа. Например:

      А после определения типового множества при объявлении экземпляра можно задать требуемые значения элементов, например:

      Множество может оставаться и пустым (не содержать никаких элементов), тогда оно обозначается как [].

      Над множествами можно выполнять следующие операции:

      – объединение (операция + ) – результатом является множество, включающее (по одному разу!) элементы, которые есть хотя бы в одном из исходных множеств;

Скачать книгу