Разработка приложения для работы с комплексными числами на языке С#
Сущность понятия "комплексное число". Умножение, деление и сложение. Класс Number и два последующих Rational Number Operation и Complex Number. Схема наследования классов исключений. Тестирование программы. Схема работы приложения. Интерфейс программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 17.05.2015 |
Размер файла | 607,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
РОССИЙСКАЯ ФЕДЕРАЦИЯ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО, ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
ИНСТИТУТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК
Кафедра программного обеспечения
Курсовая работа
по дисциплине «Объектно-ориентированное программирование»
Тема: Разработка приложения для работы с комплексными числами на языке С#
Тюмень - 2014
Введение
Комплексные числа были введены в математику для того, чтобы сделать возможной операцию извлечения квадратного корня из любого действительного числа.
Целью курсовой работы является разработка приложения для работы с комплексными числами, представленными в арифметической форме.
В программе должны быть реализованы следующие операции по работе с комплексными числами:
сложение двух комплексных чисел;
вычитание двух комплексных чисел;
умножение двух комплексных чисел;
деление двух комплексных чисел;
нахождение n-ой степени комплексного числа;
вычисления модуля комплексного числа.
Для достижения целей были поставлены следующие задачи:
изучение предметной области;
изучение концепции объектно-ориентированного программирования;
изучение существующих аналогичных программ;
создание иерархии классов;
поиск алгоритма программы;
реализация алгоритма;
тестирование программы.
Глава 1. Описание предметной области
Комплексным числом называется выражение вида:
(1.1) |
где число а называется действительной частью комплексного числа, bi-мнимой частью этого числа, b- коэффициентом мнимой части комплексного числа [1]. Суммой двух комплексных чисел
(1.2) |
||
(1.3) |
называется комплексное число
(1.4) |
Комплексное число равно нулю тогда, когда его действительная часть и коэффициент мнимой части равны нулю, т.е.
(1.5) |
если. Действительные числа являются частным случаем комплексных чисел. Если , то
- действительное число.
(1.5) |
Если , то
(1.6) |
-мнимое число.
Для комплексных чисел справедливы переместительный и сочетательный законы сложения. Их справедливость следует из того, что сложение комплексных чисел по существу сводится к сложению действительных частей и коэффициентов мнимых частей, а они являются действительными числами, для которых справедливы указанные законы.
Вычитание комплексных чисел определяется как действие, обратное сложению: разностью двух комплексных чисел
(1.7) |
||
(1.8) |
называется комплексное число
(1.9) |
которое в сумме с вычитаемым дает уменьшаемое. Отсюда, исходя из определения сложения и равенства комплексных чисел получим два уравнения, из которых найдем, что
(1.10) |
||
. |
(1.11) |
Произведение комплексных чисел
(1.12) |
называется комплексное число
(1.13) |
||
. |
(1.14) |
Для умножения комплексных чисел также справедливы переместительный и сочетательный законы, а также распределительный закон умножения по отношению к сложению.
Деление комплексных чисел определяется как действие, обратное умножению. Конкретное правило деления получим, записав частное в виде дроби и умножив числитель и знаменатель этой дроби на число, сопряженное со знаменателем:
= .= |
(1.15) |
Модулем комплексного числа называется длина вектора, соответствующего этому числу:
|z|= |
(1.16) |
Возведение в степень комплексного числа делается ровно также, как и возведение в степень действительного числа. Надо лишь помнить, что мнимая единица в квадрате равна минус единице:
(1.17) |
В настоящее время существует большое количество онлайн-сервисов для выполнения операций над комплексными числами. Это webmath.ru, mathsolution.ru, matemonline.com и т.д. Большинство из них выполняют базовые арифметические функции над комплексными числами.
Глава 2. Описание классов
Для реализации алгоритма используются следующие классы: Form1, Number и два наследующих класса RationalNumberOperation и ComplexNumber. (Рисунок.2.1 и Рисунок.2.2).
Рисунок 2.1 - Класс Form1
Рисунок 2.2 - Класс Number и два наследующих класса RationalNumberOperation и ComplexNumber
Описание созданных классов приведено в Таблице 2.1.
Таблица 2.1 - Классы
Класс |
Назначение |
|
Form1 (Рисунок.1.1) |
Отвечает за работу главного окна приложения |
|
Number(Рисунок.1.3) |
Класс, от которого наследуются классы RationalNumberOperation и ComplexNumber. |
|
RationalNumberOperation(Рисунок.1.4) |
Класс для реализации действительной части комплексного числа. |
|
ComplexNumber(Рисунок.1.5) (см. Приложение 1) |
Класс для реализации мнимой единицы и операций над комплексными числами. [2] |
Поля классаForm1представлены на Рисунке 2.1: Это поля, хранящие значения действительной и мнимой частей комплексных чисел.
Методы класса Form1 приведены в Таблице 2.2.
Таблица 2.2 - Методы класса Form1
Метод |
Назначение |
|
Secondnumber (параметры отсутствуют) |
Активация поля второго комплексного числа |
|
Zamena (параметры отсутствуют) |
Замена значения первого комплексного числа на значение второго. |
|
Calculate (параметры отсутствуют) |
Возвращение результата вычислений. |
Абстрактный класс Numberс модификатором доступа public (Рисунок 2.3).
Поля:
не имеет полей.
Методы класса Number представлены в Таблице 2.3.
Таблица 2.3 - Методы класса Number
Метод |
Назначение |
|
Info |
пустой метод для переопределения в наследующих классах. |
Рисунок 2.3 - Класс Number
Класс RationalNumberOperation(модификатор доступа public-Рисунок 2.4).
Поля:
re- действительная часть комплексного числа (модификатор доступа protected).
Свойства:
Re - управляет доступом к полю re (модификатор доступа public).
Методы класса RationalNumberOperation представлены в Таблице 2.4.
Таблица 2.4 - Методы класса RationalNumberOperation
Метод |
Назначение |
|
Info |
Переопределенный метод Info для вывода информации о действительной части комплексного числа. |
|
RationalNumberOperation (спараметром Double n) |
Инициализация поля re. |
|
~RationalNumberOperation() |
Деструктор.[3] |
Рисунок 2.4 - КлассRationalNumberOperation
Класс ComplexNumber (модификатордоступаpublic - Рисунок 2.5).
Поля:
im - мнимая часть комплексного числа.
Свойства:
Im - управляет доступом к полю im.
Методы класса ComplexNumber приведены в Таблице 2.5.
Таблица 2.5 - Методы класса ComplexNumber
Метод |
Назначение |
|
Abs(ComplexNumber cn) |
Возвращает модуль комплексного числа |
|
Delen(ComplexNumber cn1, ComplexNumber cn2) |
Возвращает частное комплексных чисел |
|
Summa(ComplexNumber cn1, ComplexNumber cn2) |
Возвращает сумму комплексных чисел |
|
Raznost(ComplexNumber cn1, ComplexNumber cn2) |
Возвращает разность комплексных чисел |
|
Pow (ComplexNumber cn, float n) |
Возводит комплексное число в степень |
|
Multiply (ComplexNumber cn1, ComplexNumber cn2) |
Возвращает произведение комплексных чисел |
|
Info |
Переопределенный метод, выводит конечные данные о результатах вычислений (действительную и мнимую части). |
|
operator *(ComplexNumber a, ComplexNumber b) |
Возвращает произведение комплексных чисел |
|
ToString() |
Возвращает значение действительной и мнимой частей. |
|
~ ComplexNumber |
Деструктор. |
|
ComplexNumber(Double re, Double im) : base(re) |
Производит инициализацию поля im. |
Рисунок 2.5 - Класс ComplexNumber
Обработка исключений
В целях воспрепятствования некорректной работе приложения предусмотрена обработка исключений типа ArgumentException. При возникновении этого исключения пользователь получает соответствующее оповещение: «Неверный формат данных!».
Собственные классы исключений
Рисунок 2.6 - Схема наследования классов исключений
ErrorDate - класс, являющийся наследующим для класса ApplicationExсeption и реализующий исключение, которое срабатывает при неверном задании аргумента (пользователь для обозначения десятичной дроби использовал точку, попытка ввода, как числа, так и литеры). Программа уведомляет пользователя об ошибке в записи комплексного числа.[4]
Глава 3. Алгоритм выполнения работы программы
Блок-схема выполнения выбранной пользователем операции представлена на Рисунке 3.1.
Рисунок 3.1 -Алгоритм выполнения вычислений
3.1 Тестирование программы
Тестирование программы было произведено рядом студентов, в ходе которого возникла исключительная ситуация:
- операция вычисления модуля и возведения в степень производилась над первым числом z1,тогда как число z2 в это время оставалось активным. Это могло бы в будущем привести к непониманию пользователем результатов вычислений (модуль какого значения вычисляется). Ошибка была немедленно исправлена (обработка исключительных ситуаций в пункте Описание классов).
3.2 Минимальные технические требования к компьютеру
Для корректной работы программы необходимо соблюдение следующих условий:
процессор IntelPentium/Celeron 2400 МГц и выше;
объём ОЗУ 512 Мб и больше;
40 Мб свободного пространства на жёстком диске;
операционная система MicrosoftWindowsXP/Vista/Windows7;
наличие устройств ввода-вывода: монитор, мышь, клавиатура.
3.3 Схема работы приложения
Блок - схема работы приложения представлена на Рисунке 3.2.
Рисунок 3.2 - Блок-схема работы приложения
Глава 4. Интерфейс программы
Программа должна обеспечить ввод с клавиатуры одного или двух комплексных чисел и вычисление требуемых параметров одного числа или осуществление арифметических операций с двумя числами.
Программа позволяет складывать, вычитать, умножать, делить комплексные числа и выводить результат. На форме располагаются шесть текстовых полей. Верхние четыре поля, для ввода чисел z1 и z2, а нижнее для вывода расчетов. В нижнем правом углу поле для указания в степени n (Рисунок 4.1).
Рисунок 4.1- Интерфейс программы
Инструкция пользователя
Вычисление модуля комплексного числа (Рисунок. 4.2):
Рисунок 4.2 - Вычисление модуля комплексного числа
Для ввода значения действительных и мнимых частей первого комплексного числа (z1) необходимо нажать на соответствующие текстовые окна. По умолчанию введены значения 1 и 2. При недоступном втором комплексном числе возможно только вычисление модуля и возведение в степень единственного значения. Для выбора соответствующей опции необходимо выбрать один из переключателей.[5] После нажатия кнопки «Вычислить» результат вычислений отображается в нижнем текстовом поле, также отображается информация о числе внизу решения.
Для активации полей ввода второго комплексного числа нужно нажать на флажок около значения z2 (Рисунок4.3) . После активации поля становятся доступными операции сложения, вычитания, умножения и деления.
Рисунок 4.3 - Вычисление суммы комплексных чисел
Заключение
программа тестирование комплексный число
В результате работы была разработана программа, которая осуществляет выполнение операций над комплексными числами на языке программирования С#.
Программа обеспечивает ввод с клавиатуры одного или двух комплексных чисел и вычисление требуемых параметров одного числа или осуществление арифметических операций с двумя числами.
Программа рассчитана на любого пользователя, в том числе непрофессионального, т.к. программа является легкой в использовании.
В дальнейшем планируется увеличение функционала программы. Будет добавлена возможность выполнения операций с комплексными числами, представленными в тригонометрической форме.
Список использованной литературы
1. Комплексные числа и работа с ними. URL: http://www.dsplib.ru/content/complex/complex.html(дата обращения: 25.11.2014).
2. Ашарина И. В. Объектно-ориентированное программирование в C++: лекции и упражнения : учеб. пособие//. - М: Горячая линия: Телеком, 2008. - 320с.
3. Основы объектно-ориентированного программирования. URL: http://professorweb.ru/my/csharp/charp_theory/level3/3_1.php (дата обращения: 20.11.2014).
4. Фленов М. Библия С# //. - БХВ-Петербург, 2011.-560 с.
5. Ушаков, М. Инструментарий разработчика C# [Текст] / М. Ушаков // Системный администратор. - 2013. - №10. - С. 85-91.
Приложение
publicclassComplexNumber : RationalNumberOperation
{
privateDouble im = 1f;
publicDouble Im
{
get
{
return im;
}
set
{
im = value;
}
}
public ComplexNumber() { }
public ComplexNumber(Double re, Double im) : base(re)
{
Im = im;
}
~ComplexNumber();
publicstaticfloat Abs(ComplexNumber cn)
{
float m = (float)Math.Sqrt(cn.Re * cn.Re + cn.Im * cn.Im);
return m;
}
publicstaticComplexNumber Summa(ComplexNumber cn1, ComplexNumber cn2)
{
ComplexNumber CN = newComplexNumber();
CN.Re = cn1.Re + cn2.Re;
CN.Im = cn1.Im + cn2.Im;
return CN;
}
publicstaticComplexNumber Raznost(ComplexNumber cn1, ComplexNumber cn2)
{
ComplexNumber CN = newComplexNumber();
CN.Re = cn1.Re - cn2.Re;
CN.Im = cn1.Im - cn2.Im;
return CN;
}
publicstaticComplexNumber Multipli(ComplexNumber cn1, ComplexNumber cn2)
{
ComplexNumber CN = newComplexNumber();
CN.Re = cn1.Re * cn2.Re - cn1.Im * cn2.Im;
CN.Im = cn1.Re * cn2.Im + cn1.Im * cn2.Re;
return CN;
}
publicstaticComplexNumber Delen(ComplexNumber cn1, ComplexNumber cn2)
{
ComplexNumber CN = newComplexNumber();
CN.Re = (cn1.Re * cn2.Re + cn1.Im * cn2.Im) / (cn2.Re * cn2.Re + cn2.Im * cn2.Im);
CN.Im = (cn1.Im * cn2.Re - cn1.Re * cn2.Im) / (cn2.Re * cn2.Re + cn2.Im * cn2.Im);
return CN;
}
publicstaticComplexNumber Pow(ComplexNumber cn, float n)
{
ComplexNumber CN = newComplexNumber(1, 0);
for (int i = 0; i < n; i++)
CN = Multipli(CN, cn);
return CN;
}
publicoverridestring ToString()
{
return (this.Re + " + i" + this.Im).ToString();
}
publicoverridestring Info()
{
return"Действительнаячасть: " + re + "\nМнимаячаcть: " + im;
}
publicstaticComplexNumberoperator *(ComplexNumber a, ComplexNumber b)
{
ComplexNumber c = newComplexNumber();
c.Re = a.Re * b.Re - a.Im * b.Im;
c.Im = a.Re * b.Im + a.Im * a.Re;
return c;
}
}
Размещено на Allbest.ru
Подобные документы
Изучение методов и этапов создания класса Complex, позволяющего работать с комплексными числами и производить с ними следующие операции: сложение, вычитание, умножение, деление двух комплексных чисел. Написание кода для ввода и вывода исходных данных.
курсовая работа [628,4 K], добавлен 11.09.2010Понятие и функции комплексных чисел. Правила выполнения арифметических операций с комплексными числами. Действия с комплексными числами: сложение, вычитание, произведение, деление. Программная реализация решения задачи. Пример выполнения программы.
курсовая работа [398,8 K], добавлен 01.02.2010Создание программы калькулятор, вычисляющий простейшие математические примеры на сложение, вычитание, умножение, деление и возведение в степень. Определение входных и выходных данных, требований к программе. Рекомендации по использованию программы.
курсовая работа [717,6 K], добавлен 17.01.2013Строение класса complex. Примеры использования класса complex. Результат выполнения программы. Цикл возведения первого числа во второе. Операции с комплексными числами. Конструкторы и операции присваивания для типа complex. Неявные преобразования типов.
курсовая работа [1,5 M], добавлен 18.05.2011Разработка программы, реализующей арифметические операции над комплексными числами (сложением, вычитанием, произведением, делением) с целью упрощения формулирования математических моделей, применяемых в математической физике и естественных науках.
контрольная работа [533,1 K], добавлен 23.04.2010Описание технологии asp.net. Страницы веб-приложения, тестирование системы. Описание функциональной, динамической модели системы. Диаграммы вариантов использования, последовательности, база данных приложения. Реализация программы, интерфейс, тестирование.
курсовая работа [3,2 M], добавлен 30.01.2013Оценка функциональных возможностей стандартных классов представления данных на примерах использования избранных методов ("detect: ifNone:" класса Set, "to:by:do:" класса Number и "copy: ReplaceFrom: to: with:" класса OrderedCollection), их тестирование.
лабораторная работа [1,1 M], добавлен 14.10.2012Общие сведения о языке ассемблера. Назначение команды прерывания INT число. Описание логической структуры программы: алгоритм работы, используемые методы, входные и выходные данные. Структура и тестирование программы. Руководство оператора программы.
курсовая работа [90,0 K], добавлен 01.12.2009Разработка программы для выполнения арифметических операций с комплексными числами. Разработка эскизного проекта. Диаграмма последовательностей и классов. Разработка и описание программы. Разработка программного кода и руководства пользователя.
курсовая работа [1,2 M], добавлен 25.11.2011Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика.
дипломная работа [1,5 M], добавлен 09.11.2016