Разработка калькуляторов.
Комплексные числа в алгебраической, тригонометрической и экспоненциальной формах
C++ — компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Курсовая работа по курсу «» Объектно-ориентированное… Читать ещё >
Разработка калькуляторов. Комплексные числа в алгебраической, тригонометрической и экспоненциальной формах (реферат, курсовая, диплом, контрольная)
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра АТ Пояснительная записка к курсовой работе по дисциплине
«Объектно-ориентированное программирование»
на тему: «Разработка калькуляторов. Комплексные числа в алгебраической, тригонометрической и экспоненциальной формах.»
Выполнил ст.гр. ТКС-10а Бесклетка Д.П.
Руководитель Яремко И. Н.
Донецк 2011
ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ
Курсовая работа по курсу «» Объектно-ориентированное программирование" выполняется индивидуально каждым студентом в соответствии с выданным преподавателем вариантом. Обязательным является использование в курсовой работе объектно-ориентированного подхода и пользовательских классов.
В процессе работы автор должен
1. Выполнить анализ предметной области.
2. Разработать пользовательские классы.
3. Разработать алгоритмы, реализующие компонентные функции классов и перегруженные операции.
4. Разработать пользовательский интерфейс для ввода и получения информации.
5. Предусмотреть обработку исключительных ситуаций, возникающих во время работы программы.
6. Провести отладку и тестирование программы.
7. Оформить для нее документацию.
Все этапы работы должны быть отражены в пояснительной записке.
СОДЕРЖАНИЕ СОДЕРЖАНИЕ ВВЕДЕНИЕ
1. ПОСТАНОВКА ЗАДАЧИ Сложение, вычитание, умножение, деление, возведение в целую степень, извлечение квадратного корня (по формуле Муавра), преобразование из одной формы в другую
2. ВЫБОР ЯЗЫКА ПРОГРАММИРОВАНИЯ
3. ОПИСАНИЕ КЛАССОВ
4.БЛОК-СХЕМЫ
5.ОПИСАНИЕ И ТЕСТИРОВАНИЕ РАБОТЫ ПРОГРАММЫ ВЫВОДЫ СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ Приложение А.
ВВЕДЕНИЕ
Курсовая работа предназначена для отработки навыков программирования задач средней сложности у студентов дневного и заочного отделения специальности «Телекоммуникационные системы и сети»
Целью курсовой работы является закрепление и углубление знаний, полученных в курсе «Объектно-ориентированное программирование», развитие навыков при выборе представления исходных данных, использовании объектно-ориентированного подхода при написании программ на языке С++, тестировании и отладки программы, оформлении документации на программную разработку.
Благодаря современной вычислительной технике довольно громоздкие вычисления выполняются очень быстро и точно.
В ходе работы калькулятора используются компоненты-функции и операции. Взаимодействие с пользователем осуществляется с помощью текстового интерфейса.
1. ПОСТАНОВКА ЗАДАЧИ Разработать класс «Калькулятор», выполняющий указанные в варианте операции для заданных исходных данных. Программа должна выполнять ввод данных, проверку правильности введенных данных, выдачу соответствующих сообщений в случае возникновения ошибок.
Протокол работы калькулятора записать в файл. Протокол должен включать исходные данные, введенные пользователем, выполняемые операции и результаты их выполнения. В случае возникновения ошибки в файл записывается соответствующее сообщение.
Предусмотреть возможность просмотра этого файла из программы калькулятора. В варианте указаны вид данных, обрабатываемых калькулятором, и операции, выполняемые калькулятором.
Индивидуальное задание:
Комплексные числа в алгебраической, тригонометрической и экспоненциальной формах.
Операции:
Сложение, вычитание, умножение, деление, возведение в целую степень, извлечение квадратного корня (по формуле Муавра), преобразование из одной формы в другую
2. ВЫБОР ЯЗЫКА ПРОГРАММИРОВАНИЯ программа язык сложение муавр С++ является языком программирования общего назначения. Естественная для него область применения — системное программирование, понимаемое в широком смысле этого слова. Кроме того, С++ успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных микрокомпьютеров — до самых больших супер-ЭВМ, и практически для всех операционных систем. Поэтому книга дает лишь описание собственно языка, не объясняя особенности конкретных реализаций, среды.
C++ — компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.
Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает операционные системы, прикладные программы, драйверы устройств, приложения для встраиваемых систем, высокопроизводительные серверы, а также развлекательные приложения, например, видеоигры. Существует несколько реализаций языка, как бесплатных, так и коммерческих. Их производят GNU Project, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на C# и Java.
При создании C++ стремились сохранить совместимость с языком C. Большинство программ на C будут исправно работать и с компилятором C++. C++ имеет синтаксис, основанный на синтаксисе C.
3. ОПИСАНИЕ КЛАССОВ В данной курсовой работе разработан 1 класс:
Класс complex:
В данном классе содержатся данные о комплексном числе: его действительная и мнимая части в алгебраической форме записи, модуль и величина угла в показательной форме записи.
Real — действительная часть
Imagine — мнимая часть
A — модуль
J — угол
сomplex () — конструктор. Выбирается форма комплексного числа и производится ввод.
~ complex () — деструктор. Используется для удаления памяти, выделенной под комплексное число в конструкторе.
Функции:
— show_algвывод текущего числа в алгебраической форме.
— show_ trig — вывод текущего числа в тригонометрической форме.
— show_ pok — вывод текущего числа в показательной форме.
— stepen, muavrфункции возведения в квадрат и квадратного корня комплексного числа.
— void file — служит для записи данных в файл
4.БЛОК-СХЕМЫ Блок-схема конструктора класса complex.
Блок-схема функции вывода числа в алгебраической форме.
Блок-схема функции вывода числа в тригонометрической форме.
Блок-схема функции вывода числа в показательной форме.
Блок-схема перегрузки оператора =
Блок-схема перегрузки оператора +
Блок-схема перегрузки оператора ;
Блок-схема перегрузки оператора *
Блок-схема перегрузки оператора /
1 2
1.Блок-схема функции возведения в степень комплексного числа.
2.Блок-схема функции квадратного корня комплексного числа.
Блок-схема основной программы.
5.ОПИСАНИЕ И ТЕСТИРОВАНИЕ РАБОТЫ ПРОГРАММЫ При запуске программы мы видим следующее (рисунок 1):
программа предлагает пользователю выбрать операцию.
Рисунок 1 — начало работы программы.
При выборе перевода из одной формы в другую программа предлагает нам выбрать исходную форму комплексного числа (рис.2):
Рисунок 2 — выбор формы числа.
После выбора начальной формы числа пользователю необходимо ввести действительную и мнимую части комплексного числа Рисунок 3 — Ввод данных.
Затем выбирается форма записи, в которой пользователь хочет представить комплексное число (рис 4).
Рисунок 4 — выбор формы записи.
После этого выводятся результаты перевода (рис. 5).
Рисунок 5 — вывод результата.
Затем программа переходит в предыдущее меню (рис.4), позволяющее изменить форму комплексного числа или выйти в главное меню.
Выбрав пункт 4 программа возвращается в главное меню.
Выбрав в главном меню 2, откроется калькулятор комплексных чисел (рис.6).
Рисунок 6 — меню калькулятора.
Первый пункт меню программы это — сложение. После выбора этого пункта.
Второй — разность.
Третий — произведение.
Четвертый — деление.
Пятый — возведение в целую степень.
Шестой — квадратный корень по формуле Муавра.
При выборе пункта 1−6 программа запросит форму двух комплексных чисел и ввод числа в соответствующей форме (рис. 7, 8).
Рисунок 7 — выбор формы комплексного числа Рисунок 9 — ввод комплексных чисел Затем программа произведет расчет функции и вывод результата во всех трех формах записи (рис 9).
При выполнении любой бинарной функции пользователю предлагается сохранить данные в файл, имя которого вводится с клавиатуры (рис 10).
Выбрав пункт 7, программа возвращается в предыдущее меню.
Третий пункт меню программы это — выход. После выбора этого пункта с помощью деструктора очищается память и программа завершает свою работу.
ВЫВОДЫ В данной курсовой работе был осуществлен анализ работы калькулятора. Разработаны классы и методы, необходимые для работы программы, разработан интерфейс пользователя. Программа написана на языке С++, exe-файл имеет объем 5 147 байт.
Данная программа носит учебный характер, в связи с этим есть возможности совершенствования, как интерфейса, так и расширения возможностей программы путём добавления новых видов данных и операций над ними.
Разработка программы дала возможность понять преимущества объектно-ориентированного программирования, которое помогает упростить написание и выполнение задач подобного типа, позволяет повысить скорость работы программы.
1. Павловская Т.А."С/С++. «Программирование на языке высокого уровня», СПб.-2007
2. Павловская Т. А., Щупак Ю. А. «С/С++. Структурное программирование: Практикум», СПб.-2003
3. Прата С. «Язык программирования С++» Культин, «С++ в задачах и примерах»
4. Страуструп Б. «Язык программирования Си++» Пер. с англ. — М.: Радио и связь, 1991.-352с.
5. Вирт Н. «Алгоритмы + структуры данных = программы». — М.: Мир, 1985. — 406 с.
Приложение А
#include
#include
#include
#include
#include
#include
class complex{
double a, real, imagine, j;
public:
complex (int k){
a=k;
real=k;
imagine=k;
j=k;}
void file (char s1[20], char s2[20])
{char q[40];
ofstream f;
strcpy (q, s2);
f.open (q, ios: out);
if (s1[0]≠'0')
f<
f<<" Algebraicheskaya forma: n" <<
real<<" +j («<<»)" <<
" nTrigonometricheskaya forma: n" <<
show_pok (){
cout<<" nPokazatelnaya forma: n" <<
a<<" *e^j*(«<<»)" <
complex&complex:operator=(complex&M)
{
a=M.a;
real=M.real;
imagine=M.imagine;
j=M.j;
return *this;
}
complex complex: operator+(complex M)
{complex temp (0);
temp.real=real+M.real;
temp.imagine=imagine+M.imagine;
temp.a=ceil (sqrt (temp.real*temp.real+temp.imagine*temp.imagine)*100)/100;
temp.j=ceil ((atan (temp.imagine/temp.real)*100)*57.3)/100;
return temp;
}
complex complex: operator-(complex M)
{complex temp (0);
temp.real=real-M.real;
temp.imagine=imagine-M.imagine;
temp.a=ceil (sqrt (temp.real*temp.real+temp.imagine*temp.imagine)*100)/100;
temp.j=ceil ((atan (temp.imagine/temp.real)*100)*57.3)/100;
return temp;
}
complex complex: operator*(complex M)
{complex temp (0);
temp.a=a*M.a;
temp.j=j+M.j;
temp.real=ceil (cos (temp.j)*temp.a*100)/100;
temp.imagine=ceil (sin (temp.j)*temp.a*100)/100;
return temp;
}
complex complex: operator/(complex M)
{complex temp (0);
temp.a=a/M.a;
temp.j=j-M.j;
temp.real=ceil (cos (temp.j)*temp.a*100)/100;
temp.imagine=ceil (sin (temp.j)*temp.a*100)/100;
return temp;
}
stepen (){
cout<<" Vvedite stepen': «;
int k;
cin>>k;
a=pow (a, k);
j=j*k;
real=ceil (cos (j/57.3)*a*100)/100;
imagine=ceil (sin (j/57.3)*a*100)/100; }
muavr (){j=j/2;}
};
void main (){clrscr ();
m1:
textcolor (YELLOW);
clrscr ();
cout<<" tttMENUn" <<
" Perevod iz odnoj formy v druguy — press 1n" <<
" Kalkulator — press 2n" <<
" Exit — press 3n" ;
char s;
s=getch ();
switch (s){
case'1':{textcolor (CYAN);
clrscr ();
complex a;
m2:
clrscr ();
cout<<" Viberite formu, v kot neobh. perevesti: n" <<
" Algebr — 1n" <<
" Pokazatelnaya — 2n" <<
" Trigonometr — 3n" <<
" V predydushee menu — 4n" ;
char s1;
s1=getch ();
switch (s1){
case'1':{clrscr ();a.show_alg ();getch ();goto m2;}
case'2':{clrscr ();a.show_pok ();getch ();goto m2;}
case'3':{clrscr ();a.show_trig ();getch ();goto m2;}
case'4':{clrscr ();goto m1;}}
goto m1;}
case'2':{clrscr ();
m3:
textcolor (GREEN);
clrscr ();
cout<<" Viberite dejstvie: n" <<
" Slogenie — 1n" <<
" Vychitanie — 2n" <<
" Proizvedenie — 3n" <<
" Delenie — 4n" <<
" Vozvedenie v celuy stepen'- 5n" <<
" Kv. koren' po formule MUAVRA — 6n" <<
" V predydushee menu — 7n" ;
char s2;
s2=getch ();
switch (s2){
case'1':{clrscr ();
cout<<" 1 chislo: n" ;
complex b;
clrscr ();
cout<<" 2 chislo: n" ;
complex c;
complex s (0);
s=b+c;
clrscr ();
s.show_alg ();
s.show_pok ();
s.show_trig ();
cout<<" nnHotite sohranit' rezultat v fail?" <<
" n1 — dan2 — netn" ;
int r;
cin>>r;
if (r==1){
cout<<" kuda sohranit' fail? n" ;
char put[20];
cin>>put;
s.file («Rezult of summan», put); }
getch ();
goto m3;}
case'2':{clrscr ();
cout<<" 1 chislo: n" ;
complex b;
clrscr ();
cout<<" 2 chislo: n" ;
complex c;
complex s (0);
s=b-c;
clrscr ();
s.show_alg ();
s.show_pok ();
s.show_trig ();
cout<<" nnHotite sohranit' rezultat v fail?" <<
" n1 — dan2 — netn" ;
int r;
cin>>r;
if (r==1){
cout<<" kuda sohranit' fail? n" ;
char put[20];
cin>>put;
s.file («Rezult of raznost’n», put); }
getch ();
goto m3;}
case'3':{clrscr ();
cout<<" 1 chislo: n" ;
complex b;
clrscr ();
cout<<" 2 chislo: n" ;
complex c;
complex s (0);
s=b*c;
clrscr ();
s.show_alg ();
s.show_pok ();
s.show_trig ();
cout<<" nnHotite sohranit' rezultat v fail?" <<
" n1 — dan2 — netn" ;
int r;
cin>>r;
if (r==1){
cout<<" kuda sohranit' fail? n" ;
char put[20];
cin>>put;
s.file («Rezult of proizvedenien», put); }
getch ();
goto m3;}
case'4':{clrscr ();
cout<<" 1 chislo: n" ;
complex b;
clrscr ();
cout<<" 2 chislo: n" ;
complex c;
complex s (0);
s=b/c;
clrscr ();
s.show_alg ();
s.show_pok ();
s.show_trig ();
cout<<" nnHotite sohranit' rezultat v fail?" <<
" n1 — dan2 — netn" ;
int r;
cin>>r;
if (r==1){
cout<<" kuda sohranit' fail? n" ;
char put[20];
cin>>put;
s.file («Rezult of delenien», put); }
getch ();
goto m3;}
case'5':{clrscr ();
complex b;
clrscr ();
b.stepen ();
clrscr ();
b.show_alg ();
b.show_pok ();
b.show_trig ();
getch ();
goto m3;}
case'6':{clrscr ();
complex b;
clrscr ();
b.muavr ();
clrscr ();
cout<<" Kv. koren' po Muavra: n" ;
b.show_trig ();
getch ();
goto m3;}
case'7':{clrscr ();goto m1;}
}
}
case'3':{clrscr ();
cout<<" Rabota zavershena! n" ;
getch (); }
}
}
Реферат
Пояснительная записка к курсовой работе содержит 32 страниц. При работе было использовано 5 источникрв литературы. Имеется 11 рисунков, 1 приложения.
Цель работы — закрепление и углубление знаний, полученных студентами в курсе «Объектно-ориентированное программирование», развитие навыков при выборе представления исходных данных, использовании объектно-ориентированного подхода при написании программ на языке С++, тестировании и отладки программы, оформлении документации на программную разработку.
Ключевые слова:
КАЛЬКУЛЯТОР, КОМПЛЕКСНОЕ ЧИСЛО, АРИФМЕТИЧЕСКИЕ ДЕЙСТВИЯ, ФУНКЦИИ, ОПЕРАЦИИ, ФАЙЛЫ.