Квантовые компьютеры

 

Оглавление


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

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

Используемые подходы, методы и технологии программированиядиаграмма «Прецедентов» решаемой задачидиаграмма «Классов» решаемой задачи

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

Выводы

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

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


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

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

Задачи:

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

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

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


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


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


Необходимость в комплексных числах появилась при решении квадратных уравнений для случая 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 . Это определение вытекает из двух требований:

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

) число 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

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


Рисунок 9

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


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

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

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication49

{partial class Form1 : Form

{Form1()

{();

}

/// <summary>

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

/// </summary>

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

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

private void button7_Click(object sender, EventArgs e)

{f1 = new Form2();.Show();

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

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

}

/// <summary>

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

/// </summary>

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

/// <param name="e"></param>void button1_Click(object sender, EventArgs e)

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

{a = Convert.ToInt32(textBox1.Text);b = Convert.ToInt32(textBox2.Text);c = Convert.ToInt32(textBox3.Text);d = Convert.ToInt32(textBox4.Text);

int x = a + c;y = b + d;

textBox5.Text = x.ToString();.Text = y.ToString();

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

{a = Convert.ToInt32(textBox1.Text);b = Convert.ToInt32(textBox2.Text);c = Convert.ToInt32(textBox3.Text);d = Convert.ToInt32(textBox4.Text);

int x = a - c;y = b - d;

textBox5.Text = x.ToString();.Text = y.ToString();

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

{a = Convert.ToInt32(textBox1.Text);b = Convert.ToInt32(textBox2.Text);c = Convert.ToInt32(textBox3.Text);d = Convert.ToInt32(textBox4.Text);

int x = a * c - b * d;y = a * d + b * c;

textBox5.Text = x.ToString();.Text = y.ToString();

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

{a = Convert.ToDouble(textBox1.Text);b = Convert.ToDouble(textBox2.Text);c = Convert.ToDouble(textBox3.Text);d = Convert.ToDouble(textBox4.Text);x = (a * c + b * d) / (Math.Pow(c, 2) + Math.Pow(d, 2));y = (b * c - a * d) / (Math.Pow(c, 2) + Math.Pow(d, 2));.Text = x.ToString();

textBox6.Text = y.ToString();

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

{a = Convert.ToInt32(textBox5.Text);b = Convert.ToInt32(textBox6.Text);mod = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));.Text = mod.ToString();

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

{a = Convert.ToDouble(textBox5.Text);b = Convert.ToDouble(textBox6.Text);KSI = (Math.Atan(b / a) * 180) / Math.PI;.Text = KSI.ToString();

}

}

/// <summary>

/// Очистка

/// </summary>

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

/// <param name="e"></param>void button3_Click(object sender, EventArgs e)

{.Clear();.Clear();.Clear();.Clear();.Clear();.Clear();

textBox8.Clear();.Clear();.Clear();

textBox10.Clear();

}

/// <summary>

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

/// </summary>

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

/// <param name="e"></param>void button2_Click(object sender, EventArgs e)

{a = Convert.ToDouble(textBox5.Text);b = Convert.ToDouble(textBox6.Text);A = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));.Text = A.ToString();KSI = (Math.Atan(b / a) * 180) / Math.PI;.Text = KSI.ToString();

}

/// <summary>

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

/// </summary>

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

/// <param name="e"></param>void button4_Click(object sender, EventArgs e)

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

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

}

/// <summary>

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

/// </summary>

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

/// <param name="e"></param>void выходToolStripMenuItem_Click(object sender, EventArgs e)

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

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

}

}

}

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

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication49

{partial class Form2 : Form

{Form2()

{();

}

/// <summary>

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

/// </summary>

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

/// <param name="e"></param>void button1_Click(object sender, EventArgs e)

{a = Convert.ToDouble(textBox1.Text);b = Convert.ToDouble(textBox2.Text);A = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));.Text = A.ToString();KSI = (Math.Atan(b / a) * 180) / Math.PI;.Text = KSI.ToString();x, y, k=0, f1 = 0; f0 = Convert.ToDouble(textBox4.Text);(f0 > 0 && f0 < 90)

{= f0 * Math.PI / 180;= Math.Tan(f1);(x = 0; x <= 180; x += 0.01)

{= k * x;.Series["Series1"].Points.AddXY(x, y);

}

}(f0 > 90 && f0 < 180)

{= f0 * Math.PI / 180;= Math.Tan(f1);(x = -180; x <= 0; x += 0.01)

{= k * x;.Series["Series1"].Points.AddXY(x, y);

}

}(f0 > 180 && f0 < 270)

{= f0 * Math.PI / 180;= Math.Tan(f1);(x = -180; x <= 0; x += 0.01)

{= k * x;.Series["Series1"].Points.AddXY(x, y);

}

}(f0 > 270 && f0 < 360)

{= f0 * Math.PI / 180;= Math.Tan(f1);(x = 0; x <= 180; x += 0.01)

{= k * x;.Series["Series1"].Points.AddXY(x, y);

}

}(f0 > 89 && f0<91)

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

{= 1;

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

}

}(f0 > 179 && f0 < 181)

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

{= 1;.Series["Series1"].Points.AddXY(x, y);

}

}(f0 > 269 && f0 < 271)

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

{= 1;.Series["Series1"].Points.AddXY(x, y);

}

}(f0 > 359 && f0 < 361)

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

{= 1;.Series["Series1"].Points.AddXY(x, y);

}

}

}

/// <summary>

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

/// </summary>

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

/// <param name="e"></param>void button2_Click(object sender, EventArgs e)

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

}

/// <summary>

/// Очистка TextBox

/// </summary>

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

/// <param name="e"></param>void button4_Click(object sender, EventArgs e)

{.Clear();.Clear();.Clear();

textBox4.Clear();

}

}

}

Выводы

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

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

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


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

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

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

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

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

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

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



Оглавление Цели и основные задачи курсовой работы Описание предметной области Используемые подходы, методы и технологии программированиядиаграмма &

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ