Калькулятор комплексных чисел

Необходимость в комплексных числах. Сложение и вычитание. Uml диаграмма "прецедентов" решаемой задачи. Программный продукт, разработанный на основе технологий объектно-ориентированного программирования в срезе разработки Visual Studio 2012 Ultimate.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 25.10.2012
Размер файла 666,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Оглавление

Цели и основные задачи курсовой работы

Описание предметной области

Используемые подходы, методы и технологии программирования

Uml диаграмма «Прецедентов» решаемой задачи

Uml диаграмма «Классов» решаемой задачи

Текст программы на языке программирования C#

Выводы

Используемая литература

Цели и основные задачи курсовой работы

Курсовая работа является комплексным практическим заданием и решает следующие цели и задачи:

Цель - создание программы «Калькулятор комплексных чисел».

Задачи:

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

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

Описание предметной области

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

Используемые подходы, методы и технологии программирования

Необходимость в комплексных числах появилась при решении квадратных уравнений для случая D <0 (здесь D - дискриминант квадратного уравнения). Долгое время эти числа не находили физического применения, поэтому их и назвали «мнимыми» числами. Однако сейчас они очень широко применяются в различных областях физики и техники: электротехнике, гидро- и аэродинамике, теории упругости и др.

Комплексные числа записываются в виде: a+ bi. Здесь a и b действительные числа, а i - мнимая единица, т.e. i 2 = -1. Число a называется абсциссой, a b - ординатой комплексного числа a+ bi. Два комплексных числа a+ bi и a bi называются сопряжёнными комплексными числами.

Сложение - рисунок 1. Суммой комплексных чисел a+ bi и c+ di называется комплексное число ( a+ c ) + ( b+ d ) i. Таким образом, при сложениикомплексных чисел отдельно складываются их абсциссы и ординаты. Это определение соответствует правилам действий с обычными многочленами.

Рисунок 1

Вычитание - рисунок 2. Разностью двух комплексных чисел a+ bi (уменьшаемое) и c+ di (вычитаемое) называется комплексное число ( a - c ) + ( b - d ) i. Таким образом, при вычитании двух комплексных чисел отдельно вычитаются их абсциссы и ординаты.

Рисунок 2

Умножение - рисунок 3. Произведением комплексных чисел a+ bi и c+ di называется комплексное число: ( ac - bd ) + ( ad + bc ) i . Это определение вытекает из двух требований:

1) числа a+ bi и c+ di должны перемножаться, как алгебраические двучлены,

2) число i обладает основным свойством: i 2 = -1.

Рисунок 3

Разделить комплексное число (рисунок 4) a+ bi (делимое) на другое c+ di (делитель) - значит найти третье число e+ f i (чатное), которое будучи умноженным на делитель c+ di, даёт в результате делимое a+ bi.Если делитель не равен нулю, деление всегда возможно.

(a+bi/c+di) = ((a*c+b*d)/(c^2+d^2))+((b*c-a*d)/(c^2+d^2))*i.

Рисунок 4

Модулем комплексного числа (рисунок 5) называется длина вектора OP, изображающего комплексное число на координатной (комплексной) плоскости. Модуль комплексного числа a+ bi обозначается | a+ bi | или буквой r и равен: r=|a+bi| = .

Рисунок 5

Аргумент комплексного числа (рисунок 6,7) - это угол  между осью OX и вектором OP, изображающим это комплексное число. Отсюда, tan  = b / a . 

Рисунок 6

Рисунок 7

Uml-диаграмма «Прецедентов» решаемой задачи

Рисунок 8

Uml-диаграмма «Классов» решаемой задачи

Рисунок 9

Текст программы на языке программирования С#

Программа реализована в двух формах.

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

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication49

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

/// <summary>

/// Переход на новую форму для представления комплексного числа на плоскости

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button7_Click(object sender, EventArgs e)

{

Form2 f1 = new Form2();

f1.Show();

}

private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Программа предназначена для работы с комплексными числами. Возможно реализовать сложение, вычитание, умножение и деление числа, представленного в алгебраической форме, а также перевод результата арифметических действий в показательную форму, нахождение модуля и аргумента комплексного числа. В программе также имеется возможность изображения комплексного числа на плоскости.");

}

/// <summary>

/// Обработка события "нажатие на кнопку"

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button1_Click(object sender, EventArgs e)

{

if (checkBox1.Checked == true) //Сложение

{

int a = Convert.ToInt32(textBox1.Text);

int b = Convert.ToInt32(textBox2.Text);

int c = Convert.ToInt32(textBox3.Text);

int d = Convert.ToInt32(textBox4.Text);

int x = a + c;

int y = b + d;

textBox5.Text = x.ToString();

textBox6.Text = y.ToString();

}

if (checkBox2.Checked == true) //Вычитание

{

int a = Convert.ToInt32(textBox1.Text);

int b = Convert.ToInt32(textBox2.Text);

int c = Convert.ToInt32(textBox3.Text);

int d = Convert.ToInt32(textBox4.Text);

int x = a - c;

int y = b - d;

textBox5.Text = x.ToString();

textBox6.Text = y.ToString();

}

if (checkBox3.Checked == true) // Умножение

{

int a = Convert.ToInt32(textBox1.Text);

int b = Convert.ToInt32(textBox2.Text);

int c = Convert.ToInt32(textBox3.Text);

int d = Convert.ToInt32(textBox4.Text);

int x = a * c - b * d;

int y = a * d + b * c;

textBox5.Text = x.ToString();

textBox6.Text = y.ToString();

}

if (checkBox4.Checked == true) // Деление

{

double a = Convert.ToDouble(textBox1.Text);

double b = Convert.ToDouble(textBox2.Text);

double c = Convert.ToDouble(textBox3.Text);

double d = Convert.ToDouble(textBox4.Text);

double x = (a * c + b * d) / (Math.Pow(c, 2) + Math.Pow(d, 2));

double y = (b * c - a * d) / (Math.Pow(c, 2) + Math.Pow(d, 2));

textBox5.Text = x.ToString();

textBox6.Text = y.ToString();

}

if (checkBox5.Checked == true) // Модуль

{

int a = Convert.ToInt32(textBox5.Text);

int b = Convert.ToInt32(textBox6.Text);

double mod = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));

textBox7.Text = mod.ToString();

}

if (checkBox6.Checked == true) // Аргумент

{

double a = Convert.ToDouble(textBox5.Text);

double b = Convert.ToDouble(textBox6.Text);

double KSI = (Math.Atan(b / a) * 180) / Math.PI;

textBox10.Text = KSI.ToString();

}

}

/// <summary>

/// Очистка

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button3_Click(object sender, EventArgs e)

{

textBox1.Clear();

textBox2.Clear();

textBox3.Clear();

textBox4.Clear();

textBox5.Clear();

textBox6.Clear();

textBox8.Clear();

textBox9.Clear();

textBox7.Clear();

textBox10.Clear();

}

/// <summary>

/// Представление результата вычислений в показательной форме

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button2_Click(object sender, EventArgs e)

{

double a = Convert.ToDouble(textBox5.Text);

double b = Convert.ToDouble(textBox6.Text);

double A = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));

textBox8.Text = A.ToString();

double KSI = (Math.Atan(b / a) * 180) / Math.PI;

textBox9.Text = KSI.ToString();

}

/// <summary>

/// Выход из программы (кнопка на форме)

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button4_Click(object sender, EventArgs e)

{

if (MessageBox.Show("Хотите выйти из программы?",

"Завершение", MessageBoxButtons.YesNo) == DialogResult.Yes)

Application.Exit();

}

/// <summary>

/// Выход из программы (в меню)

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

if (MessageBox.Show("Хотите выйти из программы?",

"Завершение", MessageBoxButtons.YesNo) == DialogResult.Yes)

Application.Exit();

}

}

}

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

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication49

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

/// <summary>

/// Представление комплексного числа на комплексной плоскости

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button1_Click(object sender, EventArgs e)

{

double a = Convert.ToDouble(textBox1.Text);

double b = Convert.ToDouble(textBox2.Text);

double A = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));

textBox3.Text = A.ToString();

double KSI = (Math.Atan(b / a) * 180) / Math.PI;

textBox4.Text = KSI.ToString();

double x, y, k=0, f1 = 0;

double f0 = Convert.ToDouble(textBox4.Text);

if (f0 > 0 && f0 < 90)

{

f1 = f0 * Math.PI / 180;

k = Math.Tan(f1);

for (x = 0; x <= 180; x += 0.01)

{

y = k * x;

chart2.Series["Series1"].Points.AddXY(x, y);

}

}

if (f0 > 90 && f0 < 180)

{

f1 = f0 * Math.PI / 180;

k = Math.Tan(f1);

for (x = -180; x <= 0; x += 0.01)

{

y = k * x;

chart2.Series["Series1"].Points.AddXY(x, y);

}

}

if (f0 > 180 && f0 < 270)

{

f1 = f0 * Math.PI / 180;

k = Math.Tan(f1);

for (x = -180; x <= 0; x += 0.01)

{

y = k * x;

chart2.Series["Series1"].Points.AddXY(x, y);

}

}

if (f0 > 270 && f0 < 360)

{

f1 = f0 * Math.PI / 180;

k = Math.Tan(f1);

for (x = 0; x <= 180; x += 0.01)

{

y = k * x;

chart2.Series["Series1"].Points.AddXY(x, y);

}

}

if (f0 > 89 && f0<91)

{

for (y = 0; y <= 180; y += 0.01)

{

x = 1;

chart2.Series["Series1"].Points.AddXY(x, y);

}

}

if (f0 > 179 && f0 < 181)

{

for (x = -180; x <=0 ; x += 0.01)

{

y = 1;

chart2.Series["Series1"].Points.AddXY(x, y);

}

}

if (f0 > 269 && f0 < 271)

{

for (y = -180; y <= 0; y += 0.01)

{

x = 1;

chart2.Series["Series1"].Points.AddXY(x, y);

}

}

if (f0 > 359 && f0 < 361)

{

for (x = 0; x <= 180; x += 0.01)

{

y = 1;

chart2.Series["Series1"].Points.AddXY(x, y);

}

}

}

/// <summary>

/// Очистка графика

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button2_Click(object sender, EventArgs e)

{

chart2.Series[0].Points.Clear();

}

/// <summary>

/// Очистка TextBox

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button4_Click(object sender, EventArgs e)

{

textBox1.Clear();

textBox2.Clear();

textBox3.Clear();

textBox4.Clear();

}

}

}

Выводы

комплексный число программирование

В результате выполнения данной курсовой работы были закреплены теоретические знания по дисциплине «Объектно-ориентированное программирование», а именно созданы Uml-диаграмма прецедентов и Uml-диаграмма классов, освоены новые приемы в комментировании и документировании текста программы. Таким образом, был создан готовый программный продукт, на основе технологий объектно-ориентированного программирования в срезе разработки Visual Studio 2012 Ultimate - калькулятор комплексных чисел, реализующий функции сложения, вычитания, умножения, деления, взятие комплексного числа по модулю и вычисление аргумента, а также реализована возможность изображения комплексного числа на комплексной плоскости.

Используемая литература

1. С# / X. Дейтел, П. Дейтел, Д. Листфилд и др. - СПб.:БХВ-Петербург, 2006. - С. 1056.

2. Петцольд, Ч. Программирование для Microsoft Windows на С# / Ч. Петцольд. - М.: Издательско-торговый дом «Русская Редакция», 2002. - Т. 1. - С. 576.

3. Петцольд, Ч. Программирование для Microsoft Windows на С# / Ч. Петцольд, - М.: Издательско-торговый дом «Русская Редакция», 2002. - Т. 2. - С. 624.

4. Рамбо, Д. UML 2.0. Объектно-ориентированное моделирование и разработка. 2-е изд. / Д. Рамбо, М. Блаха. - СПб. Литер, 2007. - С. 544.

5. Рихтер, Д. CLR via С#. Программирование на платформе Microsoft .NET Framework 2.0 на языке С#. Мастер-класс. / Пер. с англ. / Д. Рихтер. - М.: Издательско-торговый дом «Русская Редакция»; СПб.: Питер, 2007. - С. 656.

6. Фаулер, М. UML. Основы.-Пер. с англ. / М. Фаулер, К. Скотт,- СПб.: Символ-Плюс, - С. 192.

7. Шилдт, Г. С#: учебный курс / Г. Шилдт. - СПб.: Питер: К.: Издательская группа BHV, 9 - С. 512.

Размещено на Allbest.ru


Подобные документы

  • Разработка приложения "Калькулятор с переходом в строковый калькулятор" с применением объектно-ориентированного программирования. Концепция и понятия объектно-ориентированного программирования. Язык программирования Java. Листинг программы "Калькулятор".

    курсовая работа [966,9 K], добавлен 11.02.2016

  • Проект автоматизированного решения арифметической задачи, путем написания ее на языке программирования С++. Реализация программы "Строковый калькулятор" в среде программирования Borland C++. Основные действия: сложение, вычитание, умножение, деление.

    курсовая работа [142,1 K], добавлен 07.05.2012

  • Введение в Microsoft Visual Studio. Диалоговое окно "Восстановленные файлы" интегрированной среды разработки. Веб-обозреватель интегрированной среды разработки. Диалоговое окно "Проверка подлинности прокси-сервера". Сохранение и восстановление файлов.

    реферат [22,0 K], добавлен 29.05.2013

  • Разработка учебного транслятора на языке программирования C# в среде объектно-ориентированного программирования Visual Studio 2012. Выделение лексем и построение цепочки символов на этапе синтаксического анализа. Функциональное тестирование программы.

    курсовая работа [406,8 K], добавлен 07.08.2013

  • Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.

    курсовая работа [275,9 K], добавлен 22.12.2011

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

    курсовая работа [717,6 K], добавлен 17.01.2013

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

  • Элементы объектно-ориентированного программирования. Среда Visual Studio: улучшения интегрированной среды разработки и увеличение ее производительности. Проектирование архитектуры программы и ее интерфейса. Использование двухуровневой системы приложения.

    курсовая работа [516,8 K], добавлен 09.08.2015

  • Создание программы, реализующей игру "Линии". Среда разработки программы, описание ее общего вида. Основные алгоритмы программы. Реализация программы в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++.

    курсовая работа [639,0 K], добавлен 16.03.2012

  • Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.

    контрольная работа [60,1 K], добавлен 17.01.2011

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