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

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

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

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

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

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

Содержание

Введение.

1. Исследование предметной области поставленной задачи.

1.1 Среда программирования Delphi.

2. Разработка программы для решения комплексных чисел.

2.1 Проектирование графического интерфейса.

2.2 Разработка программного обеспечения.

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

Заключение

Список использованной литературы.

Приложение.

Введение

Решение выражений с комплексными числами достаточно сложный и трудоемкий процесс. Для экономии времени и исключения ошибочных результатов целесообразно использовать программу способную решать такие выражения. Существует большое количество приложений написанных на различных языках программирования. Мною создан проект в среде разработки Delphi, так как освоить программирование в этой программе, на мой взгляд гораздо проще, чем любой другой язык программирования. Ведь Delphi - система визуального создания программ. Иногда для создания программы, содержащей все элементы профессионального продукта, не требуется написать ни строчки кода самостоятельно. Просто составив связи между элементами интерфейса, мы получаем готовый текст работоспособной программы.

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

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

Задачи:

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

· изучить и проанализировать среду разработки Delphi;

· разработать приложение в среде Delphi, реализующее возможности операций с комплексными числами.

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

Над этими числами программа должна проводить простейшие арифметические действия: сложение, вычитание, умножение, деление. Все вычисления необходимо отобразить на экране, а также учесть возможность сохранения истории вычисления в файл для дальнейшего использования.

1. Исследование предметной области поставленной задачи

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

Комплексным числом z называется пара (x, y) действительных чисел x и y. При этом равенство, сумма и произведение упорядоченных пар, а также отождествление некоторых из них с действительными числами определяются следующим образом:

1) два комплексных числа z1 = (x1, y1) и z2 = (x2, y2) называются равными, если x1 = x2 и y1 = y2;

2) суммой комплексных чисел z1 и z2 называется комплексное число z вида

z = (x1 + x2, y1 + y2);

3) произведением комплексных чисел z1 и z2 называется комплексное число

z = (x1x2 - y1y2, x1y2 + x2y1);

4) множество комплексных чисел , отождествляется с множеством действительных чисел R.

Разностью комплексных чисел z1 и z2 называется комплексное число z такое, что z2 + z = z1, откуда находим z = z1 - z2 = (x1 - x2, y1 - y2).

Частным комплексных чисел z1 и z2 называется комплексное число z такое, что . Отсюда находим

Комплексное число (0, 1) обозначается символом i = (0, 1). Тогда , т. е. i2 = -1. Произвольное комплексное число z можно записать в виде

z = (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0) = x + iy.

Эта запись называется алгебраической формой комплексного числа. Комплексное число называется сопряженным по отношению к комплексному числу z = (x, y) = x + iy.

Геометрическая интерпретация комплексного числа

Всякое комплексное число z = (x, y) можно изобразить как точку на плоскости с координатами x и y. Плоскость, на которой изображаются комплексные числа, называется комплексной плоскостью, при этом ось Ox называется действительной, а Oy - мнимой.

Расстояние r точки z от нулевой точки, т. е. число

называется модулем комплексного числа z и обозначается символом |z|.

Число

называем аргументом комплексного числа z и обозначаем символом и = arg z. При заданном r углы, отличающиеся на , соответствуют одному и тому же числу. В этом случае записываем называем главным значением аргумента.

Числа r и и называют полярными координатами комплексного числа z. В этом случае

z = (x, y) = (r cos и, r sin и) = r(cos и + i sin и)

называется тригонометрической формой комплексного числа.

Если z1 = (r1 cos и1, r1 sin и1), z2 = (r2 cos и2, r2 sin и2), то

z1z2 = (r1r2 cos(и1 + и2), r1r2 sin(и1 + и2)),

Для n-й степени числа z = (r cos и, r sin и) формула приобретает вид zn = (rn cos nи, rn sin nи).

При r = 1 соотношение приобретает вид zn = (cos nи, sin nи) и называется формулой Муавра.

Корень n-й степени из комплексного числа z имеет n различных значений, которые находятся по формуле

1.1 Среда программирования Delphi

Для программирования приложения была выбрана среда разработки Delphi, так как она является наиболее удобной для создания визуальных приложений.

Внешний вид среды программирования Delphi отличается от многих других из тех, что можно увидеть в Windows. К примеру, Borland Pascal for Windows 7.0, Borland C++ 4.0, Word for Windows, Program Manager - это все MDI приложения и выглядят по-другому, чем Delphi. MDI (Multiple Document Interface) - определяет особый способ управления нескольких дочерних окон внутри одного большого окна.

Среда Delphi же следует другой спецификации, называемой Single Document Interface (SDI), и состоит из нескольких отдельно расположенных окон. Это было сделано из-за того, что SDI близок к той модели приложений, что используется в Windows 95.

Ниже перечислены основные составные части Delphi:

1. Дизайнер Форм (Form Designer)

2. "Arial"Окно Редактора Исходного Текста (Editor Window)

3. Палитра Компонент (Component Palette)

4. Инспектор Объектов (Object Inspector)

5. "Arial"Справочник (On-line help)

Есть и другие важные составляющие Delphi, вроде линейки инструментов, системного меню и многие другие, нужны для точной настройки программы и среды программирования.

Программистам на Delphi часто приходиться переключаться между Дизайнером Форм и Окном Редактора Исходного Текста (которое для краткости называют Редактор). Дизайнер Форм показан на Рисунке 1. Приложение, окно Редактора - на Рисунке 2. Приложение.

Дизайнер Форм в Delphi столь интуитивно понятен и прост в использовании, что создание визуального интерфейса превращается в детскую игру. Дизайнер Форм первоначально состоит из одного пустого окна, которое заполняется всевозможными объектами, выбранными на Палитре Компонент.

Несмотря на всю важность Дизайнера Форм, местом, где программисты проводят основное время, является Редактор. Логика является движущей силой программы и Редактор - то место, где ее “кодируют”.

Палитра Компонент (Рисунок 3. Приложение) позволяет выбрать нужные объекты для размещения их на Дизайнере Форм. Для использования Палитры Компонент просто первый раз щелкните мышкой на один из объектов и потом второй раз - на Дизайнере Форм. Выбранный объект появится на проектируемом окне и им можно манипулировать с помощью мыши.

Палитра Компонент использует постраничную группировку объектов. Внизу Палитры находится набор закладок - Standard, Additional, Dialogs и т.д. Если щелкнуть мышью на одну из закладок, можно перейти на следующую страницу Палитры Компонент. Принцип разбиения на страницы широко используется в среде программирования Delphi и его легко можно использовать в своей программе. (На странице Additional есть компоненты для организации страниц с закладками сверху и снизу).

Слева от Дизайнера Форм находиться Инспектор Объектов (Рисунок 4. Приложение). Информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Важно понять, что каждый компонент является настоящим объектом и его вид и поведение можно менять с помощью Инспектора Объектов.

Инспектор Объектов состоит из двух страниц, каждую из которых можно использовать для определения поведения данного компонента. Первая страница - это список свойств, вторая - список событий. Если нужно изменить что-нибудь, связанное с определенным компонентом, то обычно это делается в Инспекторе Объектов.

Можно использовать закладки внизу Инспектора Объектов для переключения между страницами свойств и событий.

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

Последняя важная часть среды Delphi - Справочник (on-line help). Для доступа к этому инструменту нужно просто выбрать в системном меню пункт Help и затем Contents. На экране появится Справочник, показанный на Рисунке 5. Приложение.

Справочник является контекстно-зависимым; при нажатии клавиши F1, можно получить подсказку, соответствующую текущей ситуации. Например, если находясь в Инспекторе Объектов, выберать какое-нибудь свойство и нажмите F1 - получим справку о назначении данного свойства. Если в любой момент работы в среде Delphi возникает неясность или затруднение - нужно нажать F1 и необходимая информация появится на экране.

Дополнительные элементы.

· Меню (Menu System)

· Панель с кнопками для быстрого доступа (SpeedBar)

· Редактор картинок (Image Editor)

Меню предоставляет быстрый и гибкий интерфейс к среде Delphi, потому что может управляться по набору “горячих клавиш”. Это удобно еще и потому, что здесь используются слова или короткие фразы, более точные и понятные, нежели иконки или пиктограммы. Меню можно использовать для выполнения широкого круга задач: открытия и закрытия файлов, управления отладчиком или настройкой среды программирования и т.д.

SpeedBar находится непосредственно под меню, слева от Палитры Компонент (Рисунок 6. Приложение). SpeedBar выполняет много из того, что можно сделать через меню. Если задержать мышь над любой из иконок на SpeedBar, появится подсказка, объясняющая назначение данной иконки.

Редактор Картинок (Рисунок 7. Приложение.) работает аналогично программе Paintbrush из Windows. Доступ к этому модулю можно получить, выбрав пункт меню Tools | Image Editor.

2. Разработка программы для решения комплексных чисел

2.1 Проектирование графического интерфейса

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

Почти все современные графические интерфейсы общего назначения строятся по модели WIMP - Window, Icon, Menu, Pointer (окно, иконка, меню, указатель). Внутри окон рисуются элементы графического интерфейса, которые для краткости называются виджетами (widget - штучка). Меню могут располагаться в различных частях окна, но их поведение достаточно однотипно: они служат для выбора действия из набора предопределенных действий. Пользователь графического интерфейса "объясняет" компьютерной программе требуемые действия с помощью указателя. Обычно указателем служит курсор мыши.

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

Придерживаясь указанных требований, было спроектировано главное окно приложения (Рисунок 1):

Рисунок 1 Окно программы.

Форма и компоненты, использованные для разработки приложения «Калькулятор комплексных чисел», изображены на Рисунке 2.

Рисунок 2 Форма разработанного приложения «Калькулятор комплексных чисел».

Форма TForm является базовым классом программы, которая содержит в себе остальные объекты. Класс (class) вслужит для обозначения множества объектов, которые обладают одинаковой структурой, поведением и отношениями с объектами из других классов.

На форму выводятся объекты TEdit (поля для ввода данных), TButton (кнопки для обработки команд пользователя), TLabel (метки для передачи информации пользователю), а также в неявном виде TComplex (комплексные числа введенные пользователем, а также результаты вычислений).

Рассмотрим подробнее эти классы:

Class TForm

Основное окно проекта, имеет все соответствующие атрибуты стандартной формы Windows (Width, Height, Top etc.). В проекте используется процедура Create() для инициализации объектов на форме.

Class TEdit

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

Class TLabel

Вспомогательный класс для уточнения пользователю назначения тех или иных полей ввода/вывода.

Class TComplex

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

Атрибуты класса:

Real - вещественная часть комплексного числа в алгебраической форме

Imag - мнимая часть комплексного числа в алгебраическом виде

Modul- модуль вектора числа в экспоненциальном виде

Arg - угол поворота вектора комплексного числа в экспоненциальной форме.

Процедуры конвертации комплексного числа из одной формы в другую:

ArgToExp() - перевод числа из алгебраической формы в экспоненциальную

ExpToArg() - перевод числя из экспоненциальной формы в алгебраическую.

Class TButton

Кнопка для инициализации расчетов. Основная процедура - Click, нажатие кнопки мышкой.

2.2 Разработка программного обеспечения

Программа «Калькулятор комплексных чисел» разработана в ранее рассмотренной программе Delphi, версия 7. Для работы с системой пользователю нужны следующие прецеденты:

- ввести число

- рассчитать

Вариант использования «Ввести число» включает в себя дополнительно два варианта использования:

- Ввести Z1

- Ввести Z2

То есть для расчетов пользователь должен ввести как минимум 2 комплексных числа. Может ввести комплексное число в какой-то одной форме, экспоненциальной или алгебраической, либо в обоих сразу. В зависимости от того введет он число в обеих формах или в какой-либо одной, вариант использования «Рассчитать» расширяется вариантами преобразования комплексных чисел из алгебраической формы в экспоненциальную и обратно.

Также вариант использования «Рассчитать» включает в себя следующие арифметические действия над числами:

- Рассчитать Z1+Z2

- Рассчитать Z1-Z2

- Рассчитать Z1*Z2

- Рассчитать Z1/Z2

Раскроем последовательность действий для прецедента «Рассчитать».

Действующий актер User1 активирует команду Button1.Click через нажатие мышкой. После этого идет считывание соответствующих полей ввода формы и создание комплексных чисел Z1 и Z2. Последовательно создаются и рассчитываются результаты арифметических действий над этими числами. Результаты представлены в виде объектов класса TComplex. В соответствующие поля формы выводятся результаты вычислений в комплексной и алгебраической форме.

Классы и процедуры, используемые в программе:

type

TForm1 = class(TForm)

Edit1: TEdit;

GroupBox1: TGroupBox;

MainMenu1: TMainMenu;

MenuClear: TMenuItem;

MenuExit: TMenuItem;

Label1: TLabel;

Edit2: TEdit;

Label5: TLabel;

Edit9: TEdit;

Edit3: TEdit;

Edit4: TEdit;

GroupBox3: TGroupBox;

Label2: TLabel;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Label3: TLabel;

Edit10: TEdit;

Label8: TLabel;

Edit11: TEdit;

Label6: TLabel;

Edit12: TEdit;

Button1: TButton;

Label4: TLabel;

MenuSave: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure MenuExitClick(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Edit3KeyPress(Sender: TObject; var Key: Char);

procedure Edit4KeyPress(Sender: TObject; var Key: Char);

procedure Edit5KeyPress(Sender: TObject; var Key: Char);

procedure Edit6KeyPress(Sender: TObject; var Key: Char);

procedure Edit7KeyPress(Sender: TObject; var Key: Char);

procedure Edit8KeyPress(Sender: TObject; var Key: Char);

procedure MenuClearClick(Sender: TObject);

procedure MenuSaveClick(Sender: TObject);

end;

TComplex=record

Real: Extended;//Вещественная часть комплексного числа

Imag: Extended;//Мнимая часть комплексного числа

Modul: Extended;//модуль комплексного числа

Angle: Extended;//угол поворота

end;

В основном модуле хранятся процедуры доступа к базе данных. Листинг полного кода модуля приведен в Приложении.

2.3 Руководство пользователя для «Калькулятора комплексных чисел»

После запуска программы происходит инициализация полей формы.

Внешний вид запущенной программы на Рисунке 3

Рисунок 3 Внешний вид запущенной программы.

В верхней правой части экрана находится панель навигации. Команды меню:

- Очистить - очищает поля ввода, удаляет объекты комплексных чисел

- Сохранить - сохраняются результаты вычислений в файл в виде (Рисунок 4)

Рисунок 4 Сохраненные результаты вычислений

- Выход - выход из программы

В центре формы поля для ввода комплексных чисел Z1 и Z2. Вводить можно как в алгебраической форме a+jb, так и в экспоненциальной форме.

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

Рисунок 5 Окно программы с результатами.

Приложение

Листинг кода основной программы:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus, Mask;

const Digit: set of Char=['1'..'9', '0'];

//Множество символов, воспринимаемых как символ-разделитель:

Separator: set of Char=['/', '.', ',', 'ю', 'Ю', 'б', 'Б'];

firstdigit: set of char=['-','1'..'9', '0'];

type

TForm1 = class(TForm)

Edit1: TEdit;

GroupBox1: TGroupBox;

MainMenu1: TMainMenu;

MenuClear: TMenuItem;

MenuExit: TMenuItem;

Label1: TLabel;

Edit2: TEdit;

Label5: TLabel;

Edit9: TEdit;

Edit3: TEdit;

Edit4: TEdit;

GroupBox3: TGroupBox;

Label2: TLabel;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Label3: TLabel;

Edit10: TEdit;

Label8: TLabel;

Edit11: TEdit;

Label6: TLabel;

Edit12: TEdit;

Button1: TButton;

Label4: TLabel;

MenuSave: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure MenuExitClick(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Edit3KeyPress(Sender: TObject; var Key: Char);

procedure Edit4KeyPress(Sender: TObject; var Key: Char);

procedure Edit5KeyPress(Sender: TObject; var Key: Char);

procedure Edit6KeyPress(Sender: TObject; var Key: Char);

procedure Edit7KeyPress(Sender: TObject; var Key: Char);

procedure Edit8KeyPress(Sender: TObject; var Key: Char);

procedure MenuClearClick(Sender: TObject);

procedure MenuSaveClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

TComplex=record

Real: Extended;//Вещественная часть комплексного числа

Imag: Extended;//Мнимая часть комплексного числа

Modul: Extended;//модуль комплексного числа

Angle: Extended;//угол поворота

end;

var

Form1: TForm1;

Z1,Z2: TComplex;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var Modul,Angle:extended;

begin

if Edit1.Text<>'' then Z1.Real:=StrToFloat(Edit1.Text);

if Edit2.Text<>'' then Z1.Imag:=StrToFloat(Edit2.Text);

if Edit3.Text<>'' then Z1.Modul:=StrToFloat(Edit3.Text);

if Edit4.Text<>'' then Z1.Angle:=StrToFloat(Edit4.Text);

if Edit5.Text<>'' then Z2.Real:=StrToFloat(Edit5.Text);

if Edit6.Text<>'' then Z2.Imag:=StrToFloat(Edit6.Text);

if Edit7.Text<>'' then Z2.Modul:=StrToFloat(Edit7.Text);

if Edit8.Text<>'' then Z2.Angle:=StrToFloat(Edit8.Text);

if (Edit1.Text<>'') and (Edit2.Text<>'') then

begin

Z1.Modul:=SQRT(SQR(Z1.Real)+SQR(Z1.Imag));

if Z1.Real=0 then Z1.Angle:=1.57

else if(Z1.Real>0) then Z1.Angle:=arctan(Z1.Imag/Z1.Real)

else Z1.Angle:=3.14+arctan(Z1.Imag/Z1.Real);

Edit3.Text:=floatToStrF(Z1.Modul,ffFixed,6,1);

Edit4.Text:=floatToStrF(Z1.Angle,ffFixed,6,1);

end;

if (Edit3.Text<>'') and (Edit4.Text<>'') then

begin

Z1.Real:=Z1.Modul*cos(Z1.Angle);

Z1.Imag:=Z1.Modul*sin(Z1.Angle);

Edit1.Text:=floatToStrF(Z1.Real,ffFixed,6,1);

Edit2.Text:=floatToStrF(Z1.Imag,ffFixed,6,1);

end;

if (Edit5.Text<>'') and (Edit6.Text<>'') then

begin

Z2.Modul:=SQRT(SQR(Z2.Real)+SQR(Z2.Imag));

if Z2.Real=0 then Z2.Angle:=1.57

else if (Z2.Real>0) then Z2.Angle:=arctan(Z2.Imag/Z2.Real)

else Z2.Angle:=3.14+arctan(Z2.Imag/Z2.Real);

Edit7.Text:=floatToStrF(Z2.Modul,ffFixed,6,1);

Edit8.Text:=floatToStrF(Z2.Angle,ffFixed,6,1);

end;

if (Edit7.Text<>'') and (Edit8.Text<>'') then

begin

Z2.Real:=Z2.Modul*cos(Z2.Angle);

Z2.Imag:=Z2.Modul*sin(Z2.Angle);

Edit5.Text:=floatToStrF(Z2.Real,ffFixed,6,1);

Edit6.Text:=floatToStrF(Z2.Imag,ffFixed,6,1);

end;

{Z1+Z2}

If Z1.Imag>=0 then Edit9.Text:=floatToStrF(Z1.Real,ffFixed,6,1)+'+j'+floatToStrF(Z1.Imag,ffFixed,6,1)

else Edit9.Text:=floatToStrF(Z1.Real,ffFixed,6,1)+'-j'+floatToStrF(-Z1.Imag,ffFixed,6,1);

If Z2.Real>=0 then Edit9.Text:=Edit9.Text+'+'+floatToStrF(Z2.Real,ffFixed,6,1)

else Edit9.Text:=Edit9.Text+floatToStrF(Z2.Real,ffFixed,6,1);

If Z2.Imag>=0 then Edit9.Text:=Edit9.Text+'+j'+floatToStrF(Z2.Imag,ffFixed,6,1)

else Edit9.Text:=Edit9.Text+'-j'+floatToStrF(-Z2.Imag,ffFixed,6,1);

Edit9.Text:=Edit9.Text+'='+floatToStrF(Z1.Real+Z2.Real,ffFixed,6,1);

If (Z1.Imag+Z2.Imag)>=0 then Edit9.Text:=Edit9.Text+'+j'+floatToStrF(Z1.Imag+Z2.Imag,ffFixed,6,1)

else Edit9.Text:=Edit9.Text+'-j'+floatToStrF(-(Z1.Imag+Z2.Imag),ffFixed,6,1);

modul:=SQRT(SQR(Z1.Real+Z2.Real)+SQR(Z1.Imag+Z2.Imag));

if (Z1.Real+Z2.Real)=0 then Angle:=1.57

else if (Z1.Real+Z2.Real)>0 then Angle:=arctan((Z1.Imag+Z2.Imag)/(Z1.Real+Z2.Real))

else Angle:=3.14+arctan((Z1.Imag+Z2.Imag)/(Z1.Real+Z2.Real));

Edit9.Text:=Edit9.Text+'='+floatToStrF(modul,ffFixed,6,1)+'exp('+floatToStrF(Angle,ffFixed,6,1)+'j)';

{Z1-Z2}

If Z1.Imag>=0 then Edit10.Text:=floatToStrF(Z1.Real,ffFixed,6,1)+'+j'+floatToStrF(Z1.Imag,ffFixed,6,1)

else Edit10.Text:=floatToStrF(Z1.Real,ffFixed,6,1)+'-j'+floatToStrF(-Z1.Imag,ffFixed,6,1);

If (-Z2.Real)>=0 then Edit10.Text:=Edit10.Text+'+'+floatToStrF(-Z2.Real,ffFixed,6,1)

else Edit10.Text:=Edit10.Text+floatToStrF(-Z2.Real,ffFixed,6,1);

If (-Z2.Imag)>=0 then Edit10.Text:=Edit10.Text+'+j'+floatToStrF(-Z2.Imag,ffFixed,6,1)

else Edit10.Text:=Edit10.Text+'-j'+floatToStrF(Z2.Imag,ffFixed,6,1);

Edit10.Text:=Edit10.Text+'='+floatToStrF(Z1.Real-Z2.Real,ffFixed,6,1);

If (Z1.Imag-Z2.Imag)>=0 then Edit10.Text:=Edit10.Text+'+j'+floatToStrF(Z1.Imag-Z2.Imag,ffFixed,6,1)

else Edit10.Text:=Edit10.Text+'-j'+floatToStrF(-(Z1.Imag-Z2.Imag),ffFixed,6,1);

modul:=SQRT(SQR(Z1.Real-Z2.Real)+SQR(Z1.Imag-Z2.Imag));

if (Z1.Real-Z2.Real)=0 then Angle:=1.57

else if (Z1.Real-Z2.Real)>0 then Angle:=arctan((Z1.Imag-Z2.Imag)/(Z1.Real-Z2.Real))

else Angle:=3.14+arctan((Z1.Imag-Z2.Imag)/(Z1.Real-Z2.Real));

Edit10.Text:=Edit10.Text+'='+floatToStrF(modul,ffFixed,6,1)+'exp('+floatToStrF(Angle,ffFixed,6,1)+'j)';

{Z1*Z2}

Edit11.Text:=floatToStrF(Z1.Modul,ffFixed,6,1)+'exp('+floatToStrF(Z1.Angle,ffFixed,6,1)+

'j)*'+floatToStrF(Z2.Modul,ffFixed,6,1)+'exp('+floatToStrF(Z2.Angle,ffFixed,6,1)+'j)='+

floatToStrF(Z1.Modul*Z2.Modul,ffFixed,6,1)+'exp('+floatToStrF(Z1.Angle+Z2.Angle,ffFixed,6,1)+'j)='+

floatToStrF(Z1.Modul*Z2.Modul*cos(Z1.Angle+Z2.Angle),ffFixed,6,1);

if sin(Z1.Angle+Z2.Angle)>=0 then Edit11.Text:=Edit11.Text+'+j'+floatToStrF(Z1.Modul*Z2.Modul*sin(Z1.Angle+Z2.Angle),ffFixed,6,1)

else Edit11.Text:=Edit11.Text+'-j'+floatToStrF(-Z1.Modul*Z2.Modul*sin(Z1.Angle+Z2.Angle),ffFixed,6,1);

{Z1/Z2}

Edit12.Text:=floatToStrF(Z1.Modul,ffFixed,6,1)+'exp('+floatToStrF(Z1.Angle,ffFixed,6,1)+

'j)/'+floatToStrF(Z2.Modul,ffFixed,6,1)+'exp('+floatToStrF(Z2.Angle,ffFixed,6,1)+'j)='+

floatToStrF(Z1.Modul/Z2.Modul,ffFixed,6,1)+'exp('+floatToStrF(Z1.Angle-Z2.Angle,ffFixed,6,1)+'j)='+

floatToStrF(Z1.Modul/Z2.Modul*cos(Z1.Angle-Z2.Angle),ffFixed,6,1);

if sin(Z1.Angle-Z2.Angle)>=0 then Edit12.Text:=Edit12.Text+'+j'+floatToStrF(Z1.Modul/Z2.Modul*sin(Z1.Angle-Z2.Angle),ffFixed,6,1)

else Edit12.Text:=Edit12.Text+'-j'+floatToStrF(-Z1.Modul/Z2.Modul*sin(Z1.Angle-Z2.Angle),ffFixed,6,1);

end;

procedure TForm1.MenuExitClick(Sender: TObject);

begin

Form1.Close;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if (length(edit1.Text)=0) then

if (key in firstdigit) then exit

else key:=#0;

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not(Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator)and(pos(DecimalSeparator, Edit1.Text)<>0))

then Key:=#0;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if (length(edit12.Text)=0) then

if (key in firstdigit) then exit

else key:=#0;

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not(Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator)and(pos(DecimalSeparator, Edit1.Text)<>0))

then Key:=#0;

end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not(Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator)and(pos(DecimalSeparator, Edit1.Text)<>0))

then Key:=#0;

end;

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);

begin

if (length(edit4.Text)=0) then

if (key in firstdigit) then exit

else key:=#0;

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not(Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator)and(pos(DecimalSeparator, Edit1.Text)<>0))

then Key:=#0;

end;

procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);

begin

if (length(edit5.Text)=0) then

if (key in firstdigit) then exit

else key:=#0;

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not(Key in Digit))

then Key:=#0;

if ((Key=Decimal Separator)and(pos(DecimalSeparator, Edit1.Text)<>0))

then Key:=#0;

end;

procedure TForm1.Edit6KeyPress(Sender: T Object; var Key: Char);

begin

if (length(edit6.Text)=0) then

if (key in firstdigit) then exit

else key:=#0;

if (Key in Separator)

then Key:=Decimal Separator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not(Key in Digit))

then Key:=#0;

if ((Key=Decimal Separator)and(pos(Decimal Separator, Edit1.Text)<>0))

then Key:=#0;

end;

procedure TForm1.Edit7KeyPress(Sender: TObject; var Key: Char);

begin

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not(Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator)and(pos(DecimalSeparator, Edit1.Text)<>0))

then Key:=#0;

end;

procedure TForm1.Edit8KeyPress(Sender: TObject; var Key: Char);

begin

if (length(edit8.Text)=0) then

if (key in firstdigit) then exit

else key:=#0;

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not(Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator)and(pos(DecimalSeparator, Edit1.Text)<>0))

then Key:=#0;

end;

procedure TForm1.MenuClearClick(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

Edit5.Text:='';

Edit6.Text:='';

Edit7.Text:='';

Edit8.Text:='';

Edit9.Text:='';

Edit10.Text:='';

Edit11.Text:='';

Edit12.Text:='';

end;

procedure TForm1.MenuSaveClick(Sender: TObject);

var F: TextFile;

FName: TOpenDialog;

begin

FName:=TOpenDialog.Create(self);

FName.InitialDir := GetCurrentDir;

// Разрешено выбрать только .txt

FName.Filter :='Текстовый файл|*.txt';

// Выбор файлов Паскаля как стартовый тип фильтра

FName.FilterIndex := 1;

// Показ диалог открытия файла

if not FName.Execute then exit;

assignfile(f,FName.FileName);

if not FileExists(FName.FileName) then

begin

Rewrite(f);

CloseFile(f);

end;

Append(f);

Writeln(f,DateTimeToStr(now));

Writeln(f,'Z1+Z2='+edit9.Text);

Writeln(f,'Z1-Z2='+edit10.Text);

Writeln(f,'Z1*Z2='+edit11.Text);

Writeln(f,'Z1/Z2='+edit12.Text);

Flush(f);

CloseFile(f);

// Освобождение диалога

FName.Free;

end;

end.

Заключение

В результате выполнения курсовой работы были рассмотрены основные понятия комплексных чисел, процесс их вычисления и формулы. Изучена и проанализирована среда разработки Delphi.

В итоге курсовой работы разработана прикладная программа «Калькулятор комплексных чисел». Она упрощает конвертацию комплексных чисел из одной формы в другую, а также производит простые арифметические действия над комплексными числами. Ход вычислений выводится в поле вывода, результаты можно сохранить в текстовый файл.

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

Список использованной литературы

1. Бобровский, Сергей Delphi 7. Учебный курс; СПб: Питер, 2008. - 736 c.

2. Дарахвелидзе, П.Г.; Марков, Е.П. Delphi 2005 для Win32 наиболее полное руководство; БХВ-Петербург, 2005. - 479 c.

3. Гофман В. Delphi 7. Полное руководство [текст] - Санкт-Петербург, 2002. - 340 с.

4. Кирсанов А.А. Комплексные числа. Псков. 2002 г.

5. Культин, Никита Основы программирования в Delphi 7; СПб: БХВ, 2003. - 608 c.

6. Маркушевич А.И. Комплексные числа и конформные отображения. - М.: Физматгиз.1960.

7. Понамарев, В. Базы данных в Delphi 7. Самоучитель; СПб: Питер, 2003. - 224 c.

8. Сван, Том Секреты 32-разрядного программирования в Delphi (+ дискета); К.: Диалектика, 1997. - 480 c.

9. Сухарев, М.В. Основы Delphi. Профессиональный подход; М.: Наука и техника, 2004. - 600 c.

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

...

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

  • Разработка программы для выполнения арифметических операций с комплексными числами. Разработка эскизного проекта. Диаграмма последовательностей и классов. Разработка и описание программы. Разработка программного кода и руководства пользователя.

    курсовая работа [1,2 M], добавлен 25.11.2011

  • Понятие и функции комплексных чисел. Правила выполнения арифметических операций с комплексными числами. Действия с комплексными числами: сложение, вычитание, произведение, деление. Программная реализация решения задачи. Пример выполнения программы.

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

  • Теоретическая и практическая реализация комплексной арифметики на языке программирования Си. Разработка программы, производящей арифметические действия с комплексными числами. Автоматизации решения комплексных чисел. Матричная и стандартная модель.

    курсовая работа [495,4 K], добавлен 21.01.2012

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

    курсовая работа [443,7 K], добавлен 22.01.2010

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

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

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

    курсовая работа [712,4 K], добавлен 08.11.2013

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

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

  • Изучение методов и этапов создания класса Complex, позволяющего работать с комплексными числами и производить с ними следующие операции: сложение, вычитание, умножение, деление двух комплексных чисел. Написание кода для ввода и вывода исходных данных.

    курсовая работа [628,4 K], добавлен 11.09.2010

  • Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и оценка структур данных для ее хранения. Разработка основных алгоритмов решения и структурной схемы программного продукта. Проектирование интерфейса пользователя.

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

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

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

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

    курсовая работа [506,5 K], добавлен 21.02.2011

  • Основные типы модулей, использующиеся в среде программирования Delphi 6. Концепция объектно-ориентированного программирования. Разработка эскизного и технического проектов программы. Алгоритм выполнения операций сложения, вычитания и умножения матриц.

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

  • Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.

    курсовая работа [1,6 M], добавлен 29.05.2013

  • Теория чисел как одно из направлений математики, изучающее свойства натуральных чисел. Разработка программы-калькулятора CalcKurs на языке программирования Pascal. Основные функции, реализованные в программе. Интерфейс программы, описание процедур.

    курсовая работа [1,9 M], добавлен 03.06.2010

  • Стадии разработки программного продукта "BaseSurvey ECC" с помощью Delphi 2010 и SQLite. Проектирование интерфейса пользователя и разработка алгоритмов работы электронного журнала учёта осмотра мест происшествий. Разработка руководства пользователя.

    курсовая работа [1,9 M], добавлен 12.07.2012

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

    курсовая работа [501,4 K], добавлен 07.12.2016

  • Обзор преимуществ и недостатков среды программирования Delphi, ее сравнение с аналогичными продуктами. Разработка инфологической, датологической, модели базы данных. Проектирование структуры программного обеспечения и понятного интерфейса базы данных.

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

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

    курсовая работа [28,5 K], добавлен 28.06.2011

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

    дипломная работа [2,2 M], добавлен 08.06.2017

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

    курсовая работа [1,0 M], добавлен 27.09.2014

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