Этапы выполнения лабораторной работы.



Лабораторная работа № 1

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

 

Цель работы - изучение операций над множествами: объединения, пересечения, дополнения и разности.

Краткие теоретические сведения

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

 

Операция объединения.

Рисунок 1. А È В
Объединением двух множеств А,В называют третье множество А È В, которое состоит из элементов входящих любо в множество А, либо в множество В.

А È В ={х| х Î А или х Î В}.

На рисунке 1 построена диаграмма Эйлера- Венна объединения множеств.

 

Операция пересечения.

 

Рисунок 2. А Ç В
Пересечением двух множеств А,В называют третье множество А Ç В, которое состоит из элементов, входящих в множества А,В одновременно.

А Ç В ={х| х Î А и х Î В}

На рисунке 2 построена диаграмма Эйлера- Венна пересечения множеств.

Операция разности.

 

Рисунок 3. А\В
Разностью двух множеств А, В называют третье множество А\В, которое состоит из элементов, входящих в множество А, но не входящих в множество В.

А\В ={х| х Î А и х Ï В}.

На рисунке 3 построена диаграмма Эйлера- Венна разности множеств.

 

Операция симметрической разности.

Рисунок 4. А Ñ В
Симметрической разностью множеств А,В называют множество А Ñ В, которое состоит из элементов входящее в одно из этих множеств и не входящих в другое.

А Ñ В ={х|х Î А и х Ï В или х Î В и х Ï А }

На рисунке 4 построена диаграмма Эйлера- Венна симметрической разности множеств.

 

 

Операция дополнения.

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

Рисунок 5. Ā
Дополнением множества А называется множество Ā, которое состоит из элементов, которые не входят в множество А.

Ā ={х| х Ï А}

 В определении не упоминается универсальное множество, но его существование заранее его оговаривается, поэтому можно сказать, что Ā=У\А . Если не рассматривать универсального множества, то мы можем получить парадоксальные (противоречивые) утверждения.

На рисунке 5 построена диаграмма Эйлера- Венна дополнения множеств А, универсальное множество, как правило, изображается прямоугольником.

Linq -запросы, реализующие операции над множествами

Для использования Linq –запросов надо подключить библиотеку System.Linq.

При выполнении лабораторной работы могут потребоваться следующие операции:

1. Операция Distinct, которая удаляет дублированные элементы из входной последовательности.
IEnumerable<int> nums = arr.Distinct();

 

2. Операция Union, которая возвращает объединение множеств из двух исходных множеств, представленных в виде последовательностей.
IEnumerable<string> union = first.Union<string>(second);

 

3. Операция Intersect, которая возвращает пересечение множеств из двух исходных множеств, представленных в виде последовательностей.
IEnumerable<string> auto = first.Intersect(second);

4. Операция Except, которая возвращает последовательность, содержащую все элементы первой последовательности, которых нет во второй последовательности.
IEnumerable<int> nums = arr1.Except<int>(arr2);

 

Поскольку элементы множества будут храниться в массивах, то потребуется функция ToArray();

Mass= nums. ToArray();

Для вывода элементов массива на экран удобно использовать оператор foreach. Например.

foreach (int i in Mass)
textBox5.Text+=i.ToString()+",";

 

 

Этапы выполнения лабораторной работы.

Лабораторная работа состоит из двух заданий.

Этапы выполнения задания №1.

В индивидуальном задании дана формула алгебры множеств (формулу нельзя преобразовывать!).

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

2. Разработать тестовый пример. Для этого:

a. Задать 4 множества натуральных чисел A,B,C,D. В формуле может присутствовать 3 множество, но задать надо все 4 множества. Значения, для задания множеств, нужно брать на интервале [10*n,10*n+20], где n - номер варианта. Задавать множества можно вручную, а можно с помощью генератора случайных чисел. Все множества должны попарно пересекаться, так же должны пересекаться все тройки множеств. Пересечение всех 4-х множеств может быть пустым.
При поверке программы преподаватель может изменить множества.

b. Универсальное множество определяется, как объединение всех заданных множеств.

3. Запустить программу на тестовом примере, сделать скрины, демонстрирующие работу программы по вычислению формулы.

4. В отчете для каждого скрина, на котором показан результат вычислений по определенной формуле, построить диаграмму Эйлера-Венна. . Обязательно указать, каким способом закрашено итоговое множество. На диаграмму нанести числа – элементы тестовых множеств.
Например, пусть множество А={1,2,3,4}, В={3,4,5,6}, тогда разность А\В на рисунке 6 закрашена серым цветом.

 

Рисунок 6. Диаграмма Эйлера-Венна с перечисленными элементами.

 

Этапы выполнения задания №2.

1. Построить диаграмму Эйлера-Венна для множества, заданного формулой расположенной слева от знака = (или Í ) .

2. Построить диаграмму Эйлера-Венна для множества, заданного формулой расположенной справа от знака = (или Í ) .

3. Сравнить итоговые множества обеих формул и сделать выводы.

 

Пример программы (отметим, что программа не имеет защиты от путаницы в порядке действий). Если выполнить последовательные нажатия на кнопки button1, button2, button3, то получим вычисления по формуле .

 

using System;
using System.Linq;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

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

public partial class MainForm : Form
{
int[] A={1,2,3,7};
int[] B={2,3,4,5,6};
int[] C= {3,4,6,7,8};
int[] U;
int[] D;
public MainForm()
{
InitializeComponent();

}

void MainFormLoad(object sender, EventArgs e)
{
foreach(int i in A)
textBox1.Text+=i+",";
foreach(int i in B)
textBox2.Text+=i+",";
foreach(int i in C)
textBox3.Text+=i+",";
U= A.Union(B).Union(C).ToArray();
foreach (int i in U)
textBox4.Text+=i+",";

}

void Button1Click(object sender, EventArgs e)
{
D=A.Intersect(B).ToArray();
foreach (int i in D)
textBox5.Text+=i+",";
}

void Button2Click(object sender, EventArgs e)
{
D=U.Except(D).ToArray();
foreach (int i in D)
textBox6.Text+=i+",";
}

void Button3Click(object sender, EventArgs e)
{
D=D.Union(C).ToArray();
foreach (int i in D)
textBox7.Text+=i+",";
}
}
}


Дата добавления: 2019-09-13; просмотров: 164; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!