Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы_Информатика.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

Выделение подстроки

Функция сору позволяет выделить фрагмент строки. В общем виде обращение к функции сору выглядит так:

сору( Строка, р, п ) где:

строка — выражение строкового типа, содержащее строку, фрагмент которой надо получить;

  • р — номер первого символа, с которого начинается выделяемая подстрока;

  • n — длина выделяемой подстроки. Например, в результате выполнения инструкций

st:= 'Инженер Иванов'; fam:=copy(st, 9, 6) ;

значением переменной fam будет строка 'Иванов’.

Множества

Еще один структурированный тип данных - это множество (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'];

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

Все теоретико-множественные операции реализованы и в языке Pascal:

1) Пересечение двух множеств s1 и s2:

s:=s1*s2;

2) Объединение двух множеств s1 и s2:

s:=s1+s2;

3) Разность двух множеств s1 и s2 (все элементы, которые принадлежат множеству s1 и одновременно не принадлежат множеству s2)1):

s:=s1-s2;

4) Проверка принадлежности элемента el множеству s (результат этой операции имеет тип boolean):

el in s

5) Обозначение для пустого множества:

[]

6) Создание множества из списка элементов:

s:=[e1,_,eN];

7) Проверка двух множеств на равенство или строгое включение (результат этих операций имеет тип boolean):

s1 = s2

s1 > s2

s1 < s2

Не существует никакой процедуры, позволяющей распечатать содержимое множества. Это приходится делать следующим образом:

{s: set of type1; k: type1}

for k:= min_type1 to max_type1

do if k in s then write(k);