Теория множеств

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,01 Mb
  • Опубликовано:
    2011-09-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Теория множеств

Анотація


Даний дипломний проект присвячена розв’язанню основоположної задачі теорії множин, розв’язання якої необхідне для доведення теорем вищої математики. Дана програма розроблена в середовищі Delphi 7 на мові програмування Delphi.

Робота викладена на 52 сторінках друкованого тексту з 27 рисунками, 7 таблицями та 4 додатками.

Аннотация

Даный дипломный проект посвящен решению основоположной задачи теории множеств, решение которой необходимо для доведения теорем высшей математики. Данная программа разработана в среде Delphi 7 на языке программирования Delphi.

Работа изложена на 52 страницах печатного текста с 27 рисунками, 7 таблицами и 4 приложениями.

 


This term paper is sanctified to the decision of fundamental task of theory of sets, the decision of which is needed for proving of theorems of higher mathematics. This program is worked out in the environment of Delphi 7 in programming of Delphi language.Work is expounded on 52 pages of the printed text with 27 pictures, 7 tables and 4 apendixes.

A term paper is written with Russian.

Содержание

Введение

. Постановка задачи

1.1 Анализ предметной области

.2 Постановка задачи

2. Проект программы

2.1 Эскизный проект

.2 Технический проект

.3 Рабочий проект

. Результаты разработки

Выводы

Приложение

Введение


Целью данной работы является решение следующей задачи: проверить в заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Необходимо также обеспечить наглядность решения задачи и простой интерфейс.

. Постановка задачи

.1 Анализ предметной области

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

Подобные задачи уже решались раннее. Их решение основано на четком определении таких понятий как множество, множество точек на плоскости, плоскость, координата точки, прямая, принадлежность точки прямой.

На современном этапе развития науки и техники становится интересным не столько решение самой задачи, сколько обработка и представление полученных результатов, их хранение. Поэтому встает вопрос наглядной и простой визуализации данных результатов.

.2 Постановка задачи

Наглядно обосновать и проверить для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB. Задачу решить для нескольких множеств. Представить результаты на экране.

Дать однозначный ответ на поставленный вопрос, представить графическое подтверждение.

2. Проект программы

 

.1 Эскизный проект

 

Определение входных данных

Программе необходимы следующие входные данные:

·   имя файла исходных данных. Задано в программе data.txt.

·   Количество элементов множества и координаты точек множества. Вводятся из файла или вручную с клавиатуры пользователем. Каждой точек присваивается порядковый номер.

·   Номер точки для которой нужно визуализировать прямую, для которой все остальные точки множества лежат по одну сторону.

Определение выходных данных

На экран выводятся координаты точек множества, каждая координата в отдельной ячейке. Для каждой точки выводится порядковый номер. Для каждой точки выводится номер точки с которой они образуют искомую прямую. Если прямая не может быть образовано выводится знак "-".

В отдельную область экрана выводится графическое отображение множества согласно координатам, возле каждой точки ставится соответствующий номер.

На множестве возможно построение искомой прямой точки указанной пользователем. Если для этой точки искомая прямая не существует, то точка отмечается кружком.

Контекстная диаграмма

Рис. 2.1- Контекстная диаграмма

Таблица 2.1. Словарь данных контекстной диаграммы

Содержание потока

Обозначение на диаграмме

Количество элементов множества

1.1

Координаты точек множества

1.2

Координаты точки B для каждой точки A заданного множества

2

Номер точки A

3.1

Команды пользователя: ввести данные из файла, начать поиск, начать графическое построение

3.2


Диаграмма состояний

Рис. 2.2- Диаграмма состояний


Таблица 2.2. Словарь данных диаграммы состояний

Доступные функции

0

1. Ввод координат точек из файла на экран; 2. ввод координат точек с клавиатуры 3. Справка; 4. Выход

1

1. Поиск для каждой точки Ai заданного множества точки Bi с выводом результатов на экран 2. редактирование введенных данных

2

1. все функции состояний 1 и 2 2. графическое отображение точек множества

3

1. ввод номера точки A множества 2. поиск для нее точки B 3. Построение прямой AB, выделение точки A на изображении, если прямую построить невозмож


Условия перехода

После запуска программы доступно состояние Ввод данных (0).

Переход

Условие перехода

0=>1

Успешный ввод коорлинат хотя бы двух точек

1=>2

Команда пользователя

2=>1

Заверщение поиска, команда пользователя

2=>3

Выбор точки, команда пользователя


Разработка интерфейса

Состояние 0. Ввод данных.

Рис.2.3-Интерфейс состояния 0.

1.       ввод координат точек из файла и переход в состояние 1;

2.       ячейки ввода координат точек с клавиатуры и переход в состояние 1

.        Вызов справки;

.        Выход из программы

Состояние 1. Поиск

Рис. 2.4-Интерфейс состояния 1.

При нажатии на кнопку Найти(2) выполняется поиск для каждой точки введенной в таблице исходных данных(1) точки, удовлетворяющей постановке задачи. После поиска переход в состояние 2.

В таблице (1) доступно редактирование элементов

Состояние 2. Выбор действия

Рис.2.5-Интерфейс состояния 2.

В этом состоянии по-прежнему доступно редактирование таблицы исходных данных, ввод новых точек из файла, поиск.

При нажатии кнопки "Изображение" в правой части экрана согласно координатам прорисовываются точки множества.

Состояние 3. Изображение

Рис.2.6-Интерфейс состояния 3.

В поле (2) вводится номер точки (номер см. в таблице слева).

По нажатию кнопки (3) прорисовывается прямая (1). В поле справа от (2) выводит номер второй точки для построения прямой.

Логическая модель данных

Рис. 2.7 - Схема данных

На рис. 2.7 показаны основные блоки хранения данных и перемещение данных между ними.

Описание элементов

Файл data.txt

множество теорема математика программирование


Здесь

(N)    - количество строк матрицы

(xi ; yj) - координаты точки

Массив координат точек - одномерный массив размерностью 100, каждый элемент которого содержит координату точки.

Таблица вывода множества - элемент интерфейса, служит для вывода, хранения и редактирования координат точек множества, их номеров и результатов решения.

Номер точки A - порядковый номер точки в таблице вывода, соответствует индексу точки в массиве координат. Это индекс первой точки для построения прямой.

Номер точки B - порядковый номер точки в таблице вывода, соответствует индексу точки в массиве координат. Это индекс второй точки для построения прямой.

Поле ввода точки A - Элемент интерфейса, куда пользователь вводит номер точки, для которой он хочет построить прямую.

Поле ввода точки B - Элемент интерфейса, куда программно из таблицы вывода множества вводится номер точки, образующей искомую прямую с точкой введенной пользователем.

2.2 Технический проект


Физическая модель данных

Рис. 2.8 Физическая модель данных

На рис. 2.8 показано физическая модель данных программы.- переменная табличного типа для вывода и хранения на экране: в первом столбце - порядковый номер координаты, второй столбец - координат по оси абсцисс, третий - координата по оси ординат, четвертый - номер точки с которой можно построить искомую прямую.:real [1..100] - переменная типа одномерный массив, размером 100 каждый элемент которого является составным типом данных, включает две переменные x, y целого типа, для работы с координатами точек множества.;:integer - индекс первой точки для построения прямой в массиве . t:integer - индекс второй точки для построения прямой в массиве . t- переменная типа поле ввода строки для ввода номера точки.- переменная типа поле ввода строки для вывода номера точки, является недоступным для редактирования пользователем.

 


Диаграмма потоков данных 1-го уровня

Рис. 2.7 - Диаграмма потоков данных 1-го уровня

Таблица 2.3. Словарь данных DFD 1 уровня

Обозначение

Содержание

Координаты точек, количество точек

Целое число, обозначающее количество точек множества (N). И массив действительных чисел (массив множества) , каждый элемент которого сложная структура, включающая x- и y- координаты точки.

Номер и координата первой точки

Номер - целое число, вводимое пользователем, индекс точки для которой нужно построить прямую в массиве множества. Координата - значения соответствующей переменной в массиве множества.

Номер и координата второй точки

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

Номер точки A

Индекс текущего элемента массива для которого выполняется поиск прямой, удовлетворяющей постановке задачи

Номер точки B

Индекс точки, найденной для точки A, с которой они образуют искомую прямую

Таблица вывода множества

Sg -элемент интерфейса, позволяющий хранить координаты точек множества и их номера в процесе выполнения программы

 

Спецификация процессов

1.       Ввод данных.

Входные данные: количество точек, координаты точек

Выходные данные: координаты точек

Функциональное назначение: Считывание содержимого файла data.txt. Сначала считывается первое значение - количество точек. Потом в цикле по строкам значения координат в массив t. И выводится в таблицу sg на экран.

Условие выполнения: команда пользователя, наличие файла data.txt, корректный формат файла.

2.       Поиск.

Входные данные: массив t

Выходные данные: для каждой точки номера точек, образующих искомую прямую;

Функциональное назначение:

В цикле для каждого элемента I массива t выполняется построение прямой с оставшимися точками массива. Для каждой прямой определяется количество точек r лежащих с одной стороны. Если количество этих точек равно 0 или N - 2 , то искомая точка j найдена и поиск останавливается. (N - общее количество точек множества, 2 - количество точек на прямой).

Номер точки j выводится в четвертый столбец и I -тую строку таблицу Sg.

Условие выполнения: команда пользователя, наличие в таблице вывода sg координат хотя бы трех точек.

3.       Построить множество

Входные данные: координаты точек множества (массив t)

Выходные данные: изображение точек на экране в соответствии с координатами.

Функциональное назначение: перевод координат точек в экранные и вывод на экран кружочков с соответствующим номером в позиции согласно координате.

Условия выполнения: команда пользователя, наличие в массиве координаты хотя бы одной точки.

4.       Построить прямую

Входные данные: номер точки I (первая точка прямой)

Выходные данные: номер точки j (вторая точка прямой). Изображение прямой на экране.

Функциональное назначение: Вывод номера второй точки в поле вывода Point2. Значение определяется из таблицы вывода sg - четвертый столбец, I-тая строка.

Координаты точек I и j из массива t переводятся в экранные и соединяются прямой на экране.

Условия выполнения: наличие точки с номером I, существование для нее точки с которой она образует искомую прямую (соответствующей записи в таблице вывода).

Диаграмма потоков данных 2-го уровня

Согласно спецификации процесса Поиск в диаграмме потоков данных 1-го уровня, этот процесс является сложным и требует декомпозиции.

Рис. 2.8 - Диаграмма потоков данных 2-го уровня

Таблица 2.4. Словарь данных DFD 2 уровня

Обозначение

Содержание

I, j

Целые числа, обозначающее номера точек (индексы массива t) для которых выполняется поиск прямой

A,b

Коэффициенты прямой для заданной пары точек.

Номер и координата второй точки

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

k

Номер точки множества не равной I, j

R

Количество точек множества, лежащих по одну сторону от заданной прямой

знак

Действительное число, определяющее разницу между левой и правой частью уравнения прямой

 

Спецификация процессов

1.       Поиск.

Входные данные: I, j - номера точек

Выходные данные: r - количество точек лежащих по одну сторону от прямой. Функциональное назначение: координаты пары точек подставляются в уравнение прямой, определяются коэффициенты прямой. В полученное уравнение прямой подставляются последовательно координаты оставшихся точек множества. Подсчитывается количество точек, разница между левой и правой частью уравнения прямой для которых меньше нуля.

Условие выполнения: наличие координат хотя бы трех точек.

2.       Прямая.

Входные данные: массив t, I, j- массив координат точек, номера точек

Выходные данные: a, b - коэффициенты прямой.

Функциональное назначение:

Определение коэффициентов уравнения прямой

=ax+b.

a:=; b:=

При  a=1, b=xi

При  a=0, b=yi

3.       Знак

Входные данные: a, b, k - коэффициенты уравнения прямой, номер точки множества

Выходные данные: знак - разница между левой и правой частью уравнения прямой для k-той точки.

Функциональное назначение: znak=;

Условия выполнения:

 

.3 Рабочий проект


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

Для реализации данного программного обеспечения необходим инструмент обеспечивающий математические вычисления, работу с таблицами, возможность графического представления результата, стандартный интерфейс Windows. Всеми этими качествами обладает Delphi 7.0. Данное приложение обеспечивает уже готовые стандартные диалоговые окна открытия и сохранения файла, позволяет записывать в массивы необходимый объем данных.

Спецификация модулей

Модуль Lib

Содержит:

Описание введенных типовn=100; - максимально допустимое количество точек множестваtochka = record -тип составной тип координат точки,y:real; координаты по осям абсцисс и ординат;= array [1..n] of tochka; - тип для множества точек

Глобальные переменныеt:mnogina; - массив координат точек множества:integer; - количество точек множества,sy:integer; - отступы в области прорисовки множества от краев,Xmax,Ymin,Ymax,Mx,My:real; - граничные значения координат точек множества, коэффициенты перевода реальных координат в экранные.

Модуль Unit1

Функциональное Назначение: поиск для каждой точки множества точек согласно постановки задачи. Содержит основные функции:. Соответствует процессу Определение коэффициентов прямой. (см. Технический проект)

Входные данные: i, j: integer (индексы элементов массиве t)

Выходные данные: a,b: real (коэфициенты уравнения прямой для данной пары точек). Алгоритм:

Если t[i].x = t[j].x то:=1;b:=-t[i].x

иначе

если t[i].y = t[j].y то=0; b=t[i].y

иначе=(t[i].y-t[j].y)/(t[i].x-t[j].x);=(t[j].y*t[i].x-t[i].y*t[j].x)/(t[i].x-t[j].x);

Текст процедуры:

pryamaya(i,j:integer;var a,b:real);t[i].x=t[j].x then:=1;b:=-t[i].xt[i].y=t[j].y then:=0;b:=t[i].y:=(t[i].y-t[j].y)/(t[i].x-t[j].x);:=(t[j].y*t[i].x-t[i].y*t[j].x)/(t[i].x-t[j].x);;;

Тестирование модуля:

Используется метод "Эквивалентное разбиение"

Тест 1. Координаты точек разлычны

0

1

Результат=-1 b=1

Тест 2 Координаты точек равны по ординате

0

0

Результат= 0 b=0

Тест 3. Координаты равны по аобсциссе

1

0

Результат=1 b=-1

Функция Search.

Входные данные: t (см. описание глобальных переменных)

Выходные данные sg.cells[3, i] - четвертый столбец таблицы вывода, содержит номера точек для построения прямой.

Алгоритм


Алгоритм процедуры Poisk


Текст модуля

pryamaya(i,j:integer;var a,b:real);t[i].x=t[j].x then:=1;b:=t[i].xt[i].y=t[j].y then:=0;b:=t[i].y:=(t[i].y-t[j].y)/(t[i].x-t[j].x);:=(t[j].y*t[i].x-t[i].y*t[j].x)/(t[i].x-t[j].x);;;znak(a,b:real;k,i,j:integer):real;:=t[k].y-a*t[k].x-b;;poisk(i,j:integer;var r:integer);k:integer;,b:real;(i,j,a,b);:=0;k:=1 to nt do(k<>i)and(k<>j) thenznak(a,b,k,i,j)>=0 then r:=r+1;;TForm1.SearchClick(Sender: TObject);i,j,r:integer;(nt,t);i:=1 to nt do.SG.Cells[3,i]:='-';i:=1 to nt doj:=1 to nt doi<>j then(i,j,r);(r=0)or(r=nt-2) then sg.Cells[3,i]:=floattostr(j);;();.Enabled:=True;;

Тестирование методами "черного ящика"

Эквивалентное разбиение

1.       задано две точки. Есть единственно возможная прямая, по обе стороны от которой нет точек.

Тест 1


Тест 2. Задано три точки


Тест 3. Задано 4 точки



Тест 4. Задано 5 точек


Тест 4 доказывает что не для каждой точки множества можно найти такую точку, остальные точки множества будут лежать по одну сторону от прямой, проведенной через эти две точки.

Тестирование методами "белого ящика" фнкции Poisk

Метод покрытия всех условий/решений

Условие

¹I и k¹j

- номер одной точки прямой- номер второй точки прямой- номер точки не лежащей на прямой.

Для проверки этого условия на ветке истина добавим вывод в файл всех K. Таким образом должны быть веведены только номера точек, удовлетворяющих условию. Nt = 5.

Содержимое файла=1=2= 3, 4, 5

Условие

Znak(a,b,k)>0

Для проверки этого условия на ветке истина добавим вывод в файл всех K.

Таким образом должны быть веведены только номера точек, удовлетворяющих условию. Nt = 5.

Дано множество

1)      1 0

2)      0 1

)        -1 4

)        5 2

)        1 -3=1; j=2 => a =-1; b=1=3 znak =2; K=4 znak =7; K=5 znak =-3

Содержимое файла



3. Результаты разработки


Структура программы

Программа выполнена на объектно-ориентированном языке Delphi 7.0.Программа состоит из файлов: Unit1.pas, Unit2.pas., Picture.pas, lib.pas.pas содержит код проверки предположения о том, что для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.pas содержит код панели с сообщением об ошибке..pas содержит функции, вычисляющие коэффициенты перевода реальных координат в экранные для графического представления множества..pas - библиотечный файл, содержит описание введенных типов и глобальных переменных.

Все файлы объединены в проект Poisktochki.dpr. Логика программы очень проста. Система программирования уже содержит все необходимые компоненты (кнопки, поля ввода, панели и др.). Из них формируется интерфейс программного продукта. В разделе события выбирается, на какое действие должен реагировать компонент. Были дописаны реакции компонента на действия пользователя.

Назначение программы

Программа, позволяющая проверить для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Выполняет следующие основные функции:

1)      ввод данных о множестве точек из файла

2)      вывод введенных данных на экран

)        ввод данных о множестве с клавиатуры

)        построение прямой AB для указанной точки A.

)        Поиск точек Bi для каждой точки множества Ai и вывод на экран

)        Визуализация точек множества на экране

Реализации процессов

Логика программы соответствует логике объектно-ориентированного программирования. Система программирования уже содержит все необходимые компоненты (кнопки, поля ввода, панели и др.). Из них формируется интерфейс программного продукта. В разделе события выбирается, на какое действие должен реагировать компонент. Пользователь только дописывает, как компонент реагирует на то или иное действие. Один компонент может реагировать на несколько действий. Например, при наведении на кнопку курсором мыши в строке состояния появляется функция, выполняемая кнопкой, а при нажатии курсором мыши на эту кнопку она совершает действие описываемое в строке состояния. При выборе пользователем компонента и события система сама создаёт процедуру с соответствующим названием.

Пользователь может дополнительно создавать процедуры и функции, которые потом используются в процедурах, созданных системой.

Основные процедуры рассматриваются в Таблице 3.1.

Таблица 3.1. Функции процессов.

Наименование процесса

Назначение процесса

OutPutFile

Ввод координат точек множества из файла

Search

Поиск точки Bi для каждой точки Aj множества

readFromGrid

Ввод координат точек множества из таблицы на экране

sgDataSelectCell

Расчет разницы между индексами строки и столбца для выбранного элемента.

pryamaya

Вычисляет коэффициенты уравнения прямой для двух заданных точек

znak

Определяет по какую строну от заданной прямой лежит точка множества

MakePicture

Рисует на экране точки множества согласно координатам

PaintStr

Рисует прямую между заданными точками



Тестирование программы

Программа и её модули были протестированы методами "чёрного ящика" -- предположение об ошибке и эквивалентное разбиение и "Белого ящика" - покрытие всех условий/решений.

Часть проводимых тестов приведена в разделе 2.3 Рабочем проекте и Приложении В Программа и методика испытаний. Ошибки, обнаруженные в процессе тестирования были устранены.

Программа соответствует требованиям Технического задания.

Выводы

В результате дипломного проектирования были достигнуты цели заявленные во введении - решение задачи определения в заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Было выяснено что существуют точки, для которых данное утверждение не верно ,как показано на рисунке ниже.


Полученная программа соответствует требованиям Технического задания. Пользователь получил возможность просматривать результаты как в графическом так и в текстовом виде.

Задача решалась в несколько этапов:

§ Определение требований и постановка задачи;

§  Разработка Эскизного проекта;

§  Разработка Технического проекта;

§  Разработка рабочего проекта;

Все этапы полностью или частично задокументированы и представлены в настоящей пояснительной записке. Создана сопровождающая документация в составе:

§ Техническое задание;

§  Описание программы;

§  Программа и методика испытаний;

§  Руководство пользователя.

Программа предназначена для использования в средних и высших учебных заведениях всех профилей и специализации.

Приложение А

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

. Введение.

Полное наименование программного изделия: Программа, позволяющая проверить для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Краткая характеристика области применения: решение задачи определения в заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Программное изделие предназначается для использования в средних и высших учебных заведениях всех профилей и специализаций.

. Основания для разработки.

Условное обозначение программного изделия: Программа.

Документ: Задание на курсовую работу.

Утвердил: Суслов С.В.

Дата утверждения: 15.02.2010

Плановые сроки начала и окончания работы по созданию программного изделия:

начало: 15.02.2010

окончание: 31.05.2010

. Назначение разработки.

Функциональное назначение: решение задачи определения в заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Эксплуатационное назначение: использование программного изделия для наглядного доказательства определения в заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

. Требования к программному изделию.

.1. Требования к функциональным характеристикам.

.1.1. Требования к организации входных и выходных данных.

1) Входными данными для Программы являются:

·   количество точек множества (N);

·   координаты точек (xi; yi);

·   Точка Ai, для которой пользователь хочет построить прямую.

2) Входные данные Программа получает:

- из файла, где они располагаются следующим образом:


пользователь вводит с клавиатуры

) Выходными данными для Программы являются:

координаты точки B для каждой точки A, если такая существует.

визуализация точек множества на плоскости

визуализация прямой AB, для заданной пользователем точки A.

.1.2. Требования к составу выполняемых функций.

Программа должна иметь следующие функции:

7)      ввод данных о множестве точек из файла

8)      вывод введенных данных на экран

)        ввод данных о множестве с клавиатуры

)        построение прямой AB для указанной точки A.

)        Визуализация точек множества на экране

.1.3. Требования к интерфейсу

1)      Интерфейс графический

2)      Вывод множества в табличной форме с прорисовкой границ.

)        Вывод множества в графической форме

.2. Требования к надежности.

) Программное изделие должно быть защищено от непродуманных действий пользователя. Должен быть предусмотрен максимально возможный анализ входной информации, вводимой пользователем. В случае ввода некорректных данных игнорировать попытку ввода и выдать сообщение об ошибке и подсказку.

) В случае ошибки при выполнении Программы выдать сообщение об ошибке и прекратить работу.

.3. Условия эксплуатации.

Программный продукт должен быть рассчитан на работу в диалоговом режиме с пользователем, не являющимся профессиональным программистом.

Условия эксплуатации гибких и жёсткого дисков, являющимися основными носителями информации для проектируемого ПО, должны соответствовать всем основным требованиям их эксплуатации (температура воздуха, относительная влажность и т.п.), определенных тестированием их при производстве и занесённых в документацию, которая предоставляется при покупке этих устройств.

.4. Требования к составу и параметрам технических средств.

Процессор: 1 ГГц и выше.

Оперативная память - минимум 256 Мб.

Дисплей. Необходим цветной или монохромный дисплей типа VGA, SVGA.

Наличие клавиатуры и манипулятора мышь.

.5. Требования к информационной и программной совместимости.

Программа рассчитана для работы в среде Windows'7/Vista/XP.

Для Программы входной информацией являются файлы пользователя.

Структура хранения информации определена в пункте 4.1.1.

.6. Требования к маркировке и упаковке.

Маркировка и упаковка проектируемого программного продукта должны соответствовать всем стандартным требованиям, применяемым к маркировке, вариантам и способам упаковки.

.7. Требования к транспортированию и хранению.

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

. Требования к программной документации.

Полный пакет документов должен включать :

Пояснительная записка.

Описание программы.

Текст программы.

Методика испытаний.

Руководство пользователя.

. Технико-экономические показатели.

Программа поможет существенно сократить время у улучшить наглядность при доказательстве теорем теории множеств в учебных заведениях.

. Стадии и этапы разработки.

· Техническое задание

Плановые сроки начала и окончания работы:

Начало: 15.02.10

Окончание:3.03.10

· Эскизный проект

Плановые сроки начала и окончания работы:

Начало: 04.03.10

Окончание:1.04.10

· Технический проект

Плановые сроки начала и окончания работы:

Начало: 2.04.10

Окончание: 16.04.10

· Рабочий проект

Плановые сроки начала и окончания работы:

Начало: 16.04.10

Окончание: 30.05.10

. Порядок контроля и приёмки.

Программа должна быть протестирована в соответствии с программой и методикой испытаний.

Приемку программы производит руководитель проекта.

Приложение Б

 

Описание программы

Общие сведения

Наименование программы: Программа, позволяющая проверить для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB. Программное обеспечение, необходимое для функционирования программы: программа предназначена для работы в среде Windows’7/Vista/XP.

Функциональное назначение.

Функциональное назначение разработки: решение задачи определения в заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Описание логической структуры.

Программа выполнена на объектно-ориентированном языке Delphi 7.0.Программа состоит из файлов: Unit1.pas, Unit2.pas., Picture.pas, lib.pas.pas содержит код проверки предположения о том, что для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.pas содержит код панели с сообщением об ошибке..pas содержит функции, вычисляющие коэффициенты перевода реальных координат в экранные для графического представления множества..pas - библиотечный файл, содержит описание введенных типов и глобальных переменных.

Все файлы объединены в проект Poisktochki.dpr

Основные процедуры рассматриваются в Таблице 3.1.

Таблица 3.1. Функции процессов.

Наименование процессаНазначение процесса


OutPutFile

Ввод координат точек множества из файла

Search

Поиск точки Bi для каждой точки Aj множества

readFromGrid

Ввод координат точек множества из таблицы на экране

sgDataSelectCell

Расчет разницы между индексами строки и столбца для выбранного элемента.

pryamaya

Вычисляет коэффициенты уравнения прямой для двух заданных точек

znak

Определяет по какую строну от заданной прямой лежит точка множества

MakePicture

Рисует на экране точки множества согласно координатам

PaintStr

Рисует прямую между заданными точками


Используемые технические средства

Процессор: 1 ГГц и выше.

Оперативная память - минимум 256 Мб.

Дисплей. Необходим цветной или монохромный дисплей типа VGA, SVGA. Наличие клавиатуры и манипулятора мышь.

Вызов и загрузка

Вызов Программы осуществляется посредством запуска файла poisktochki.exe

Входные данные

Входные данные

1) Входными данными для Программы являются:

·   количество точек множества (N);

·   координаты точек (xi; yi);

·   Точка Ai, для которой пользователь хочет построить прямую.

2) Входные данные Программа получает:

- из файла, где они располагаются следующим образом:


- пользователь вводит с клавиатуры

3 Выходные данные

 

 


Приложение В

Программа и методика испытаний

Объект испытаний

Программа, позволяющая проверить для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB

Цель испытаний

Проверить соответствие программы техническому заданию.

Требования к программе

13)     ввод данных о множестве точек из файла

14)     вывод введенных данных на экран

)        ввод данных о множестве с клавиатуры

)        построение прямой AB для указанной точки A.

)        Поиск точек Bi для каждой точки множества Ai и вывод на экран

)        Визуализация точек множества на экране

Средства и порядок испытаний

.1 Технические средства

Процессор: 1 ГГц и выше.

Оперативная память - минимум 256 Мб.

Дисплей. Необходим цветной или монохромный дисплей типа VGA, SVGA.

Наличие клавиатуры и манипулятора мышь.

.2 Программные средства

Операционная система Windows’7/Vista/XP

4.3 Порядок испытаний

1.       Создать файл исходных данных как указано в и Приложении Б Инструкция пользователя

2.       Запустить файл poisktochki.exe.

.        Следовать указаниям приведённых перед тестовыми заданиями для каждой функции.

.        Проводить испытания в порядке, предложенном в методике испытаний, так как некоторые используют результаты предыдущих.

5 Методы испытаний

1)      ввод данных из файла и вывод данных на экран

Первоначальный вид окна программы


Содержимое файла data.txt

4

5

-4

1

Вид окна программы после нажатия кнопки "Ввести данные из файла"


2)      Поиск точек Bi для каждой точки множества Ai и вывод на экран

Нажать кнопку "Найти"


Как видно из этого теста, не для всех точек множества AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB

3)      Визуализация точек множества на экране

Нажать кнопку "Изображение"


4)      построение прямой AB для указанной точки A.

Сначала построим прямую для точек для которых это возможно.

Например для первой точки.


Для второй точки


Теперь вводим номер точки 5 и нажимаем "Нарисовать пямую"


-я точка обведена другим цветом кружком большего диаметра. Видно, что она находится в центре множества, и при соединении ее с любой их точек остальные будут всегда по разные стороны.

Приложение Г

Руководство пользователя

Введение

Программа предназначена для использования в средних и высших учебных заведениях всех профилей и специализации.

Программное изделие предполагается использовать для наглядного доказательства определения в заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB

Пользователь должен иметь навыки работы с компьютером в операционной системе Windows.

Для работы с программой пользователю необходимо ознакомиться с данным руководством.

1 Общие сведения о программе

Наименование программы: Программа, позволяющая проверить для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Функциональное назначение разработки: решение задачи определения в заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Программное обеспечение, необходимое для функционирования программы: программа предназначена для работы в среде Windows XP/Vista/7.

2 Входные данные

1) Входными данными для Программы являются:

·   количество точек множества (N);

·   координаты точек (xi; yi);

·   Точка Ai, для которой пользователь хочет построить прямую.

2) Входные данные Программа получает:

- из файла, где они располагаются следующим образом:


пользователь вводит с клавиатуры

3 Выходные данные


 

Работа с программой

Для запуска программы нужно запустить файл poisktochki.exe. Об успешном запуске свидетельствует появление окна (рис.1.)

Рис. 1 - Главное окно программы

где

"Ввести данные из файла"- кнопка ввода данных из файла data.txt.

"Найти"- кнопка поиска точки B, для каждой точки AÎM, (A¹B), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

"Изображение" - служит для ввода команды нарисовать точки множества в области под кнопкой. Становится доступна после выполнения поиска.

"Нарисовать прямую" - служит для ввода команды рисования на множестве прямой, соединяющей точки в полях ввода слева от кнопки. Становится доступна после отрисовки множества.

Таблица слева содержит в первом столбце номера точек множества, во втором координаты абсцисс точек множества, в третьем координаты ординат точек множества, в четвертый выводится номер точки b после поиска.

Приложение Д

ТЕКСТ ПРОГРАММЫ

Unit1;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, Grids, lib;

type

TForm1 = class(TForm): TStringGrid;: TButton;: TImage;: TButton;: TButton;: TButton;: TLabel;: TEdit;: TButton;: TButton;: TEdit;OutPutFileClick(Sender: TObject);SGEnter(Sender: TObject);SearchClick(Sender: TObject);ExitClick(Sender: TObject);MakePictureClick(Sender: TObject);PaintStrClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;

uses picture, Unit2;

{$R *.dfm}XI(XW:real):integer; // перевод в Х-экранную кординатуXI:=Round((XW-Xmin)*Mx+Sx/2) end;YI(YW:real):integer; // перевод в Y-экранную кординатуYI:=Round((Ymax-YW)*My+Sy/2); end;

procedure TForm1.OutPutFileClick(Sender: TObject);

var f:textfile;:integer;,y:integer;(f,'data.txt');(f);(f,nt);i:=1 to nt do(f,x,y);.Cells[0,i]:=floattostr(i);.Cells[1,i]:=floattostr(x);.Cells[2,i]:=floattostr(y);;.Enabled:=True;;

procedure TForm1.SGEnter(Sender: TObject);

begin.Cells[0,0]:='№ точки';.Cells[1,0]:='X';.Cells[2,0]:='Y';.Cells[3,0]:='№ 2-й точки';;

procedure readFromGrid(var nt:integer; var t:mnogina);

var i,j:integer;:=1; j:=1;nt:=0;(Form1.sg.cells[i,j]<>'')do:=nt+1;[j].x:=strtofloat(Form1.sg.cells[i,j]);[j].y:=strtoFloat(Form1.sg.cells[i+1,j]);:=j+1;;;

procedure pryamaya(i,j:integer;var a,b:real);

begint[i].x=t[j].x then:=1;b:=t[i].xt[i].y=t[j].y then:=0;b:=t[i].y:=(t[i].y-t[j].y)/(t[i].x-t[j].x);:=(t[j].y*t[i].x-t[i].y*t[j].x)/(t[i].x-t[j].x);;;

function znak(a,b:real;k,i,j:integer):real;

begin:=t[k].y-a*t[k].x-b;

//(t[k].x-t[i].x)/(t[i].x-t[j].x)-(t[k].y-t[i].y)/(t[i].y-t[j].y)

//;

procedure poisk(i,j:integer;var r:integer);

var k:integer;,b:real;

pryamaya(i,j,a,b);

r:=0;k:=1 to nt do(k<>i)and(k<>j) thenznak(a,b,k,i,j)>=0 then r:=r+1;

end;TForm1.SearchClick(Sender: TObject);

var i,j,r:integer;(nt,t);i:=1 to nt do.SG.Cells[3,i]:='-';i:=1 to nt doj:=1 to nt doi<>j then(i,j,r);(r=0)or(r=nt-2) then sg.Cells[3,i]:=floattostr(j);;

//if (r>0)and(r<nt-2) then sg.Cells[3,i-1]:='-'();.Enabled:=True;;

procedure TForm1.ExitClick(Sender: TObject);

begin;;

procedure TForm1.MakePictureClick(Sender: TObject);

var i:integer;.Picture:=nil;.Canvas.Pen.Color:=clRed;.Canvas.Pen.Width:=2;i:=1 to nt do.Canvas.Ellipse(XI(t[i].x)-3,YI(t[i].y)-3,XI(t[i].x)+3,YI(t[i].y)+3);.Canvas.TextOut(XI(t[i].x)-10,YI(t[i].y)-10,sg.Cells[0,i]);;.Refresh;.Enabled:=true;;

procedure TForm1.PaintStrClick(Sender: TObject);

var i,j:integer;:=strtoint(EditPointNumber.Text);(i>0)and(i<=nt) then.Canvas.Pen.Color:=clBlue;.Canvas.pen.Width:=2;sg.Cells[3,i]<>'-' then.Text:=sg.Cells[3,i];:=strtoint(sg.Cells[3,i]);.Canvas.MoveTo(XI(t[i].x),YI(t[i].y));.Canvas.LineTo(XI(t[j].x),YI(t[j].y));.Text:='-';.Canvas.Ellipse(XI(t[i].x)-4,YI(t[i].y)-4,XI(t[i].x)+4,YI(t[i].y)+4);;.ShowModal();;.Picture;Classes, Graphics, lib,unit1;minmax();SetWind(Xmin,Ymin,Xmax,Ymax:real);//вычисление коэффициентов для перевода в экранные координаты:=50; Sy:=50;

Mx:=(Form1.Image1.Width-Sx)/(Xmax-Xmin);:=(Form1.Image1.Height-Sy)/(Ymax-Ymin);

end;minmax();i:integer;:=t[1].x;:=t[1].x;:=t[1].y;:=t[1].y;i:=1 to nt doXmax < t[i].x then Xmax:=t[i].x elseXmin > t[i].x then Xmin:=t[i].x;;i:=1 to nt doYmax < t[i].y then Ymax:=t[i].y elseYmin > t[i].y then Ymin:=t[i].y;;

SetWind(Xmin,Ymin,Xmax,Ymax);

end;.Lib;n=100;tochka = record,y:real;;= array [1..n] of tochka;t:mnogina;

nt:integer;,sy:integer;,Xmax,Ymin,Ymax,Mx,My:real;

implementation.

Похожие работы на - Теория множеств

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!