Вступ
Сьогодні комп’ютери все більш і більш входять до нашого життя. Для їх єфективного використання необхідні зручні і практичні програми, які створюються на мовах програмування. Одна з таких поширювальних мов є мова Сі.
Сі – це мова програмування загального призначення, добре відома своєю ефективністю, економічністю, і переносимістю. Вказані приорітети Сі забезпечують добру якість розробки майже будь – якого виду програмного продукту. Використання Сі в якості інстументальної мови дозволяє отримувати швидкі і компактні програми. В більшості випадках програми, написані на Сі, порівняні по швидкості з програмами, які написані на мові ассемблера. При цьому вони мають кращу наглядність та їх легше супроводжувати.
Сі поєднує ефективність і потужність в відносно малій за розмірамі мові. Хоч Сі не містить вмонтованих компонентів мови, виконуючих ввод – вивід, розподіл пам’яті, маніпуляцій з екраном або управління процесами, однак, системне оточення Сі має бібліотеку об’єктних модулів, в яких реалізовані подібні функції. Бібліотека підтримує більшість з функцій, які вимагаються.
Це рішення дозволяє ізолювать мовні особливості від специфіки процесора, на якому виконується результативна програма. Суворе визначення мови робить її незалежною від будь-яких деталей операційної системи або машини. В цей же час програмісти можуть добавити до бібліотеки специфічні системні програми, щоб більш ефективно використовувати конкретні особливості машини.
Сі – гнучка мова, яка дозволяє приймати в конкретних випадках самі різноманітні рішення. Однак, Сі накладає незначні обмеження в таких, наприклад, діях, як перетворення типів. В більшості випадках це є достоїнством, однак програмісти повинні знати мову добре, щоб розуміти, як будуть виконуватись їх програми. 1 Теоретичні відомості
1.1 Мова програмування
Програма написана на об`єктно-орієнтованій системі програмування MS Visual С++. Основою цієї мови, як можна побачити з назви є язик програмування С++. Головною причиною мого вибору стало те, що ця система об’єктно-орієнтована і програмувати інтерфейс користувача на ній досить легко. В MS Visual С++ присутні багато різних компонентів, які надають широкий вибір при проектуванні, що дозволяє найкращим чином налагодити програму під поставлену задачу. Вбудований потужний довідник (MSDN) та різні програми, які допомагають програмісту при написані коду програми.
2 Розробка та опис алгоритма розв’язку задачі
Алгоритмом називається директива, яка визначає порядок виконання дій (операцій) над даними з метою отримання шуканого результату.
Процес підготовки розв’язку задачі на ЕОМ називається алгоритмізацією.
Розробка алгоритму складається з декількох етапів:
1 Вивчення завдання даного для алгоритму задачі. Часто завдання представлене в описовій формі з використанням формул, таблиць, графіків і т. і Необхідно глибоко вивчити процес, що алгоритмізується, виявити закономірності явищ, що його складають. Визначається вхідна вихідна інформація, задаються області зміни аргументів, точність обчислень. Вхідна інформація повинна бути повною.
2 Виконується математична формалізація описової умови задачі. Її мета – побудувати масиви арифметичних і логічних операторів. До масиву логічних операторів входять всі умови що відображають закономірності процесу який алгоритмізуеться.
3 Будується схема алгоритму.
Загальний вигляд алгоритму розв’язку задачі зображено на рисунку 1.
Режим вводу числа – це режим при якому натискання на кнопки з цифрами та кнопки „крапка”, додає відповідну цифру до числа на екрані (поточного числа)
Бінарні операції – це будь-які математичні операції з двома аргументами, наприклад +, - і т.ін.
Унарні операції – це операції з одним аргументом, наприклад sin, cos і т.ін.
Операції з пам’яттю: MC – зброс пам’ятті у нуль, MR – зчитування числа з пам’ятті на екран, MS – запис поточного числа у пам’ять, M+ – додати поточне число до числа у пам’ятті і зберегти результат у пам’ятті.
Виконати операції в стеці – виконування всіх операцій, які зберігаються у стеці відповідно приоритету операцій.
3 Опис програми
3.1 Опис функціональних можливостей
C – це сброс числа у ‘0’ та весь стек.
CE – сброс числа у ‘0’ .
MC – очищення числа з пам’яті.
MR – виведення числа з пам’яті.
MS – зберігає поточне число у пам’ять.
M+ – додає поточне число до того, що у пам’яті.
sin – сінус числа.
cos – косінус числа.
tan – тангенс числа.
pi – число пі.
Exp – експонента числа.
x^y – поперднє введене число взведене у степінь поточного числа.
x^2 – поперднє введене число взведене у другу степінь.
x^3 – поперднє введене число взведене у третю степінь.
ln – натуральний логарифм поточного числа.
log – десятичний логарифм поточного числа.
n! – факторіал поточного числа.
1/x – ділення одиниці на поточне число.
Mod – остача від ділення.
Sqrt – корінь поточного числа.
Int – виділення цілого числа.
+, -,*, / - сума, різниця, множення, ділення відповідно.
3.2 Опис даних
Программа може працювати як з цілими, так і з дробовимидробними числами. Для того щоб ввести дробоведробне число користувач має натиснути на кнопку „крапка”. При цьому дляДля того, щоб цифри які вводяться, записувались правильно, програма зберігає інформацію про наявність крапки у булевській змінній m_bHasDot:
bool m_bHasDot;
Для зберігання інформації про режим вводу використовується змінна:
bool bNeedClear;
Якшо вона дорівнюватиме true, то це буде означати, що при наступному натисканні будь-якої цифри ми повинні стерти з екрана поточне число, перейти у режим вводу (присвоїти bNeedClear значення false) і показати введену цифру на екрані.
Для зручності зберігання числа і операції ми створюємо структуру:
struct OPERAND {
double val;
OPERATION op;
};
де OPERATION – це:
enum OPERATION {NONE=0, ADD, SUB, MULT, DIV, MOD, POW};
при цьоому операції ми записуємо у порядку приоритету бінарних математичних операцій.
Поточну операцію ми будемо зберігати у змінній:
OPERATION cur_op;
Також програма повинна зберігати стек. Для цього можна використовувати готовий шаблонний класс vector з ATL бібліотеки <vector>:
std::vector<OPERAND> stack;
Для того, щоб підключити цю бібліотеку до проекта, ми повинні написати рядок:
#include <vector>
Оскільки ця бібліотека використовує namespace std, ми повинні додавати std:: перед кожним типом із цієї бібліотеці.
Також програма може зберігати одне значення в пам’ятті. Для його зберігання будемо використовувати тип double:
double mem;
4 Результати роботи програми та їх аналіз
Програма запускається за допомогою файла CalcSimple.exe. При записку ми бачимо вікно (рисунок 2) з усіма можливими функціями, які описані у п. 3.1-5 сторінок