Калькулятор комплексных чисел
Необходимость в комплексных числах. Сложение и вычитание. 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