With m do begin
lo:= Trunc(2*pi*x); if wo[l] =0 then if by[l] =0 then xb:= x[0] else x:= wo[0] else xl:= lo End; End. Предложение case... of, открывающее вариантную часть, внешне похоже на соответствующий оператор выбора, но на самом деле лишь играет роль своеобразного служебного слова, обозначающего начало вариантной части. Именно поэтому в конце вариантной части не следует ставить end как пару к case... of. (Поскольку вариантная часть - всегда последняя в записи, за ней все же стоит end, но лишь как пара к record). Ключ выбора в предложении case... of фактически игнорируется компилятором: единственное требование, предъявляемое к нему в Object Pascal, состоит в том, чтобы ключ определял некоторый стандартный или предварительно объявленный порядковый тип. Имена полей должны быть уникальными в пределах той записи, где они объявлены, однако, если записи содержат поля-записи, т. е. вложены одна в другую, имена могут повторяться на разных уровнях вложения. 7.2.3. Множества Множества - это наборы однотипных логически связанных друг с другом объектов. Характер связей между объектами лишь подразумевается программистом и никак не контролируется Object Pascal. Количество элементов, входящих в множество, может меняться в пределах от 0 до 256 (множество, не содержащее элементов, называется пустым). Именно непостоянством количества своих элементов множества отличаются от массивов и записей. Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы, причем порядок следования элементов в множестве безразличен. Если все элементы одного множества входят также и в другое, говорят о включении первого множества во второе. Пустое множество включается в любое другое. Пример определения и задания множеств: Type digitChar = set of '0'..'9'; digit = set of 0..9; Var sl,s2,s3: digitChar; s4,s5,s6: digit; Begin si = ['1','2', '3']; s2 = ['3', '2', '1']; s3 = ['2', '3']; s4 = [0..3, 6]; s5 = [4, 5]; s6 = [3..9]; End. В этом примере множества si и s2 эквивалентны, а множество S3 включено в s 2, но не эквивалентно ему. Описание типа множества имеет вид: <имя типа> = set of <базовый тип>; Здесь <имя типа> - правильный идентификатор; set, of - зарезервированные слова (множество, из); <базовый тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме Word, Integer, Longint, Int64. Для задания множества используется так называемый конструктор множества: список спецификаций элементов множества, отделенных друг от друга запятыми; список обрамляется квадратными скобками. Спецификациями элементов могут быть константы или выражения базового типа, а также тип-диапазон того же базового типа. Над множествами определены следующие операции: * пересечение множеств; результат содержит элементы, общие для обоих множеств; например, s4*s6 содержит [3], s4*s5 -пустое множество (см. выше); + объединение множеств; результат содержит элементы первого множества, дополненные недостающими элементами из второго множества: S4+S5 содержит [0,1,2,3,4,5,6]; S5+S6 содержит [3, 4, 5, 6, 7, 8, 9]; разность множеств; результат содержит элементы из первого множества, которые не принадлежат второму: S6-S5 содержит [3,6,7,8,9]; S4-S5содержит [0,1, 2, 3, 6]; = проверка эквивалентности; возвращает True, если оба множества эквивалентны; <> проверка неэквивалентности; возвращает True, если оба множества неэквивалентны; <= проверка вхождения; возвращает True, если первое множество включено во второе; >= проверка вхождения; возвращает True, если второе множество включено в первое; in проверка принадлежности; в этой бинарной операции первый элемент - выражение, а второй - множество одного и того же типа; возвращает True, если выражение имеет значение, принадлежащее множеству: 3 in s 6 возвращает True; 2*2in si возвращает False. Дополнительно к этим операциям можно использовать две процедуры. include - включает новый элемент во множество. Обращение к процедуре: Include(S,I) Здесь s - множество, состоящее из элементов базового типа TSet Base; I - элемент типа TSetBase, который необходимо включить во множество. exclude - исключает элемент из множества. Обращение: Exclude(S,I) Параметры обращения - такие же, как у процедуры include. В отличие от операций + и -, реализующих аналогичные действия над двумя множествами, процедуры оптимизированы для работы с одиночными элементами множества и поэтому отличаются высокой скоростью выполнения.
|