русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-23; просмотров: 687; Нарушение авторских прав


 

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

– определение принадлежности элемента множеству;

– сравнение множеств;

– действия над множествами.

Рассмотрим подробнее эти операции.

 

8.2.1. Принадлежность множеству

В языке Паскаль обеспечен механизм для определения принадлежности некоторого значения множеству его элементов. Этот механизм реализуется в рамках создания булевского выражения с использованием оператора IN (см. рис. 37).

 

 

Рис. 37. Синтаксическая диаграмма оператора IN

 

В результате работы этого оператора получается булевское выражение. Например, выражения WED in WEEKDAYS, SAT in WEEKEND являются истинными булевскими выражениями, а выражения SAT in WEEKDAYS, MON in WEEKEND являются ложными.

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

 

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

 

for DAY := SUN to SAT do

if DAY in WEEKDAY

then WRITELN ('Сегодня рабочий день')

else WRITELN ('Сегодня день отдыха').

 

Заметим, что здесь перед циклом нужно определить переменную DAY как переменную перечислимого типа:

 

var DAY : DAYSOFWEEK.

 

Итак, на базе перечислимого типа DAYSOFWEEK можно сформировать переменную DAY и множества WEEKDAYS и WEEKEND.

Булевское выражение на базе IN можно сочетать с другими типами булевских выражений, например:

 

if (DAY in WEEKEND) and (DAY <> SAT) then

writeln ('Сегодня – воскресенье').

Множества имеют различные применения в организации программ.

Одним из них является отказ от использования оператора IF с проверкой нескольких значений.



Рассмотрим два примера:

1) if (T = 0) or (T = 32) or (T = 212) or (T = 276) then...

2) if T in [0, 32, 212, 276] then...

Эти операторы эквивалентны, но второй значительно проще. Использование множеств позволяет улучшить наглядность и понимание алгоритма работы программы. Например, можно определить, является ли литерная переменная, именуемая ONE_CHAR, цифрой, записав: if ONE_CHAR in ['0'..'9'] then...

 

8.2.2. Сравнение множеств

 

Операция IN весьма полезна, и она позволяет, например, выяснить, являются ли два множества равными. Например, если мы хотим узнать, равны ли множества MAP1 и MAP2, то можно написать:

 

EGALE := true;

for MEMBER := ENG to IT DO

if (MEMBER in MAP1) <> (MEMBER in MAP2) then EGALE := false.

Это громоздко, поэтому в Паскале есть булевские выражения с применением операций сравнения: =, <>, >=, <=, например:

 

MAP1 = MAP2;

MAP1 <> MAP2;

MAP1 – MAP2 <> [FR];

MAP1 + MAP2 <> [ENG…IT];

MAP1 >= MAP2 (eсли выражение истинно, то MAP2 есть подмножество MAP1).

8.2.3. Действия над множествами

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

– объединение;

– пересечение;

– разность.

Рассмотрим эти операции подробно, но предварительно произведем описание:

type COUNTRIES = (ENG, FR, USA, SP, IT);

var MAP1, MAP2: COUNTRIES.

а) ОБЪЕДИНЕНИЕ (+) : [ENG, FR] + [IT] = [ENG, FR, IT];

б) ПЕРЕСЕЧЕНИЕ (*) : [ENG, FR, USA] * [ENG, USA, IT] = [ENG, USA];

в) РАЗНОСТЬ (-) : [ENG..IT] – [ENG..SP] = [IT].

 

Эти три операции используются для построения выражений над множествами, например:

 

MAP1 := [FR];

MAP1 := MAP1 + [USA];

MAP2 := MAP1;

MAP1 := MAP1 * (MAP2 + [IT]).

 

П р и м е р. Решето Эратосфена. Найти все простые числа, не превосходящие заданного числа.

Алгоритм базируется на вычеркивании чисел, кратных выбранному.

 

program ERATOS;

const MAXPRIM = 15;

var PRIMES: set of 2..MAXPRIM;

COUNT, MULTIPLE: integer;

begin

¦ writeln ('простые числа, меньше ', MAXPRIM);

¦ PRIMES := [2..MAXPRIM];

¦ for COUNT := 2 to MAXPRIM do

¦ if COUNT in PRIMES then

¦ begin

¦ ¦ writeln (COUNT);

¦ ¦ for MULTIPLE := 1 to (MAXPRIM div COUNT) do

¦ ¦ PRIMES := PRIMES - [COUNT*MULTIPLE]

¦ end;

end.

 

Примечание. Программа работает с множеством, состоящим из всех целых чисел в интервале 2 ... 15. В ней при помощи цикла FOR проверяется каждое целое число, входящее в множество. Если оно является элементом множества, то печатается и из множества удаляются все целые числа, кратные данному числу.

 



<== предыдущая лекция | следующая лекция ==>
Определение типа SET | Вывод множеств


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.398 сек.