Створення арифметичного калькулятора

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    127,65 Кб
  • Опубликовано:
    2014-03-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Створення арифметичного калькулятора

Міністерство освіти і науки України

Тернопільський національний технічний університет ім. І. Пулюя

Кафедра комп’ютерних наук

 

 

 

 

 

 

 

 

 

КУРСОВА РОБОТА

з предмету: "Об’єктно-орієнтоване програмування"

на тему: "Створення арифметичного калькулятора"


Виконав студент групи СН - 21М.Б. Дереворіз

Керівник роботи ст. викл. В.М. Бревус







Тернопіль - 2012 р.

Зміст

Вступ

Технічне завдання

Аналіз технічного завдання

Розробка програми

Розробка методів

Тестування програми і результати її виконання

Висновок

Список використаної літератури

Додаток

Вступ


Питання автоматизації виконання операцій на робочих місцях є досить вагомим у наш час. Основною причиною цього є все більше і більше зростаючий потік інформації, який доводиться обробляти кожному з нас. Якщо в 80-х роках минулого століття основною проблемою була нестача інформації або доступ до неї з великим запізненням, то на даний момент основна проблема - надлишок інформації. Багато хто не в силах справитися з постійно зростаючим її об’ємом.

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

Гарною можливістю для автоматизації виконання операцій є використання в роботі персональних комп’ютерів, які зараз доступні по ціні для будь-якої організації. Комп’ютер можна використовувати по-різному, найчастіше основне його використання в організаціях - набір, друк і зберігання документів. Але цим можливості обчислювальної техніки не обмежуються.

Дана програма призначена для виконання простих операцій над числами, таких, як: додавання, віднімання, ділення, множення.

арифметичний калькулятор програма тестування

Технічне завдання


Аналіз технічного завдання


Розроблена програма може працювати на будь-якому ІВМ-сумісному комп’ютері починаючи з 80286 і вище. Робота програми не обмежена об’ємом ОЗП (оперативного запам’ятовуючого пристрою) чи жорсткого диску, але рекомендується мати не менше 2 мегабайтів вільного дискового простору. При збільшенні об’єму бази даних необхідно збільшити ємність використовуваного ЖМД (жорсткого магнітного диску). Вся інформація вводиться за допомогою клавіатури. Контроль введеної інформації здійснюється за допомогою дисплею.

Після вводу інформації можливе її редагування і знищення.

Після запуску проекту на екрані з’явиться основне вікон в якому можна записувати дані.

Після завершення вводу виразів натисніть "Enter" і результат буде автоматично виведений на екран.

Розробка програми


Основним класом програми є клас parser - головна форма зі всіма розміщеними на ній компонентами. Головна форма відображає вікно програма, в якому виконується більшість операцій, та забезпечує зв’язок всіх інших елементів програми.

Для полегшення сприйняття іншим програмістом тексту програми всі класам та їх елементам давалися осмислені імена, тобто клас parser (парсити) обробляти інформацію.

При розробці системи класів в першу чергу ставилася задача обійтися як можна меншим числом класів і разом з тим забезпечити гнучкість програми, можливість її подальшої модифікації. Оскільки програма не складна то в програмі створений всього лише 1 клас parser.

Нижче наведений клас головної форми:

parser {*exp_ptr;token [80];tok_type;eval_exp2 (double &result);eval_exp3 (double &result);eval_exp4 (double &result);eval_exp5 (double &result);eval_exp6 (double &result);atom (double &result);get_token ();serror (int error);isdelim (char c);:();eval_exp (char *exp);

};

Розробка методів


В програмі реалізовано лише два методи, один який отримує введений вираз, і далі по ланцюжку передається eval_exp2 - > eval_exp3 - > eval_exp4 - > eval_exp5 - > eval_exp6

Крім того, в програмі ще присутній захист від помилок користувача, які реалізовані засобами компонентів. Так, наприклад, в полі для кількості, неможливо вписати будь-який символ, крім цифри. Це реалізовано за допомогою компоненту, який призначений для вводу числових значень та відображення їх в довільному, заданому програмістом, форматі.

Нижче наведений метод, який отримує введений вираз, і передає далі по ланцюжку

_exp2 - > eval_exp3 - > eval_exp4 - > eval_exp5 - > eval_exp6parser:: eval_exp (char *exp)

{result;_ptr = exp;_token ();(! *token)

{(2);0.0;

}_exp2 (result);(*token)

{(0);

}result;

}parser:: eval_exp2 (double &result)

{char op;temp;_exp3 (result);( (op = *token) == '+' || op == '-')

{_token ();_exp3 (temp);(op)

{'-':= result - temp;;'+':= result + temp;;

}

}

}parser:: eval_exp3 (double &result)

{char op;temp;_exp4 (result);( (op = *token) =='*' || op == '/' || op == '%')

{_token ();_exp4 (temp);(op)

{'*':= result * temp;;'/':= result / temp;;'%':= (int) result % (int) temp;;

}

}

}parser:: eval_exp4 (double &result)

{temp, ex;int t;_exp5 (result);(*token == '^')

{_token ();_exp5 (temp);= result;(temp == 0.0)

{= 1.0;;

}(t = (int) temp - 1; t > 0; - -t)

{= result * (double) ex;

}

}parser:: eval_exp5 (double &result)

{char op;= 0;( (tok_type == DELIMITER) && *token=='+' || *token == '-')

{= *token;_token ();

}_exp6 (result);(op == '-')

{= - result;

}

}parser:: eval_exp6 (double &result)

{( (*token == ' ('))

{_token ();_exp2 (result);(*token! = ') ')

{(1);

}_token ();

}atom (result);

}

Другий метод перевіряє чи введене значення число чи ні.

parser:: atom (double &result)

{(tok_type)

{NUMBER:= atof (token);_token ();;:(0);

}

}

Діаграма класів.


Тестування програми і результати її виконання


Тестування програми проводилося на різних комп’ютерах, на яких була встановлена операційна система Windows 2007 або Windows XP. В процесі перевірки роботи було заповнене основне вікно виразами, в процесі вводу інформації навмисне допускалися помилки - наприклад, вводились букви, й здійснювали ділення на нуль.

При вводі помилкових значень програма просто вибивала повідомлення про помилку або відмовитися від вводу інформації.

В загальному програма показала високу надійність у роботі, що значною мірою пов’язано з її простотою і зручністю користування.

Висновок


Результати попереднього тестування програми показали вирішення питань автоматизації виконання операцій на робочих місцях відносно простими засобами. На даний момент курс програмування читається практично у всіх навчальних закладах, і хоча б частина їх випускників використовує отримані знання у роботі. Тому при наявності можливостей займатися створенням програм безпосередньо на робочих місцях продуктивність праці зростає.

Створенню програм безпосередньо на робочих місцях сприяє і той факт, що ніхто краще від людей, які будуть з цією програмою працювати. Не знає специфіки роботи, тому всі зміни і корективи в інтерфейс і логіку роботи програми можна вносити ще на етапі її написання і попереднього тестування. Іншими словами, етапи написання і попереднього тестування програми проходять одночасно, в результаті чого прискорюється процес її створення.

Список використаної літератури


1.      Дарахвелидзе П.Г. Программирование в Delphi 5. СПб.: БХВ-Петербург, 2000 - 774 с.

2.      Тейксера С., Пачеко К. Delphi 5. Руководство разработчика (в 2 томах). М.: Издательский дом "Вильямс", 2000.

.        Фаронов В.В., Шумаков П.В. Delphi 4: Руководство разработчика баз данных. М.: Нолидж, 1999 - 558 с.

.        Хоменко А.Д. "Программирование на С++" 95-177с.

.        Видео уроки по C++ от Teantong (1-45)

Додаток


Задокументований текст програми.

#include "stdafx. h"

#include <iostream>

#include <cstdlib>

#include <cctype>

#include <cstring>namespace std;types {DELIMITER=1, VARIABLE, NUMBER};

// Клас який "парсить" введений виразparser {*exp_ptr;token [80];tok_type;eval_exp2 (double &result);eval_exp3 (double &result);eval_exp4 (double &result);eval_exp5 (double &result);eval_exp6 (double &result);atom (double &result);get_token ();serror (int error);isdelim (char c);:();eval_exp (char *exp);

};

// Конструктор:: parser ()

{_ptr = NULL;

}

// Метод, який отримує введений вираз, і далі по ланцюжку передається eval_exp2 - > eval_exp3 - > eval_exp4 - > eval_exp5 - > eval_exp6parser:: eval_exp (char *exp)

{result;_ptr = exp;_token ();(! *token)

{(2);0.0;

}_exp2 (result);(*token)

{(0);

}result;

}parser:: eval_exp2 (double &result)

{char op;temp;_exp3 (result);( (op = *token) == '+' || op == '-')

{_token ();_exp3 (temp);(op)

{'-':= result - temp;;'+':= result + temp;;

}

}

}parser:: eval_exp3 (double &result)

{char op;temp;_exp4 (result);( (op = *token) =='*' || op == '/' || op == '%')

{_token ();_exp4 (temp);(op)

{'*':= result * temp;;'/':= result / temp;;'%':= (int) result % (int) temp;;

}

}

}parser:: eval_exp4 (double &result)

{temp, ex;int t;_exp5 (result);(*token == '^')

{_token ();_exp5 (temp);= result;(temp == 0.0)

{= 1.0;;

}(t = (int) temp - 1; t > 0; - -t)

{= result * (double) ex;

}

}

}parser:: eval_exp5 (double &result)

{= *token;_token ();

}_exp6 (result);(op == '-')

{= - result;

}

}parser:: eval_exp6 (double &result)

{( (*token == ' ('))

{_token ();_exp2 (result);(*token! = ') ')

{(1);

}_token ();

}atom (result);

}

// Метод, який перевіряє чи ввдедене значення чило, чи ніparser:: atom (double &result)

{(tok_type)

{NUMBER:= atof (token);_token ();;:(0);

}

}

// Вивід значень про помилкиparser:: serror (int error)

{char *e [] =

{

"Синтаксична помилка",

"Неспiвпадiння дужок",

"Пустий вираз"

};<< e [error] << endl;

}parser:: get_token ()

{char *temp;_type = 0;= token;

*temp = '\0';(! *exp_ptr)

{;

}(isspace (*exp_ptr))

{

++exp_ptr;

}(strchr (" +-*/%^ ()", *exp_ptr))

{_type = DELIMITER;

*temp++ = *exp_ptr++;

}if (isalpha (*exp_ptr))

{(! isdelim (*exp_ptr))

{

*temp++ = *exp_ptr++;

}_type = VARIABLE;

}if (isdigit (*exp_ptr))

{(! isdelim (*exp_ptr))

{

*temp++ = *exp_ptr++;

}_type = NUMBER;

}

*temp = '\0';

}parser:: isdelim (char c)

{(strchr (" +-/*%^ ()", c) || c == 9 || c == '\r' || c == 0)

{1;

}0;

}main ()

{(LC_ALL, "Russian");int explength = 80;expstr [explength];<< "Десятковий роздiлювач - ," << endl;<< "Для завершення роботи натиснiть q" << endl;ob;(;;)

{<< "Введiть вираз: ";. getline (expstr, explength - 1);(*expstr == 'q')

{;

}<< "Вiдповiдь: " << ob. eval_exp (expstr) << "\n\n";

};

}

Реалізація програми.

Пусте вікно готове для обчислень.


Реалізація обчислень.

Похожие работы на - Створення арифметичного калькулятора

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!