Разработка приложения для работы с комплексными числами на языке С#

Сущность понятия "комплексное число". Умножение, деление и сложение. Класс 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.