Розробка алгоритму рішення задачі у програмі "Калькулятор"

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 06.06.2013
Размер файла 2,0 M

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

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

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

РЕФЕРАТ

Об'єкт дослідження: програма «Калькулятор», її методи та алгоритми рішення.

Ціль дослідження: розробка алгоритму рішення задачі у програмі «Калькулятор».

У першій частині курсової роботи описані основні принципи об'єктно-орієнтованого програмування, типові середовища й особливості мови програмування С++.

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

У третій частині роботи приводиться опис програми та результати, одержані при виконанні даної програми.

У висновку підводиться підсумок виконаної роботи і дається критичний аналіз одержаних результатів.

Ключові слова: ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ, КЛАС, ІНКАПСУЛЯЦІЯ, ПОЛІМОРФІЗМ, УСПАДКУВАННЯ, МОВА ПРОГРАМУВАННЯ С++, КАЛЬКУЛЯТОР.

РЕФЕРАТ

Объект исследования: программа «Калькулятор», ее методы и алгоритмы решения.

Цель исследования: разработка алгоритма решения задачи реализации искусственного интеллекта в программе «Калькулятор».

В первой части курсовой работы описаны основные принципы объектно-ориентированного программирования, наиболее известные среды и особенности языка программирования С++.

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

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

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

Ключевые слова:

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ, КЛАСС, ИНКАПСУЛЯЦИЯ, ПОЛИМОРФИЗМ, НАСЛЕДОВАНИЕ, ЯЗЫК ПРОГРАММИРОВАНИЯ С++, КАЛЬКУЛЯТОР.

ABSTRACT

YP: page, source, appendix

Research object: a program «Calculator», its methods and algorithms of decision.

Research purpose: development of the algorithm of realization the program «Calculator».

Basic principles of the object-oriented programming, most known environments and features of С++ programming language, are described in the first part of yearly project.

The examples of up-to-date techniques and methods of implementation and their realization are described in the second part of the work..

The description of a program and results derived at the implementation of this program are described in the third part of the yearly project.

The result of the work done and the critical analysis of the final results is presented in the conclusion.

Keywords: OBJECT-ORIENTED PROGRAMMING, CLASS, ENCAPSULATION, POLYMORPHISM, INHERITANCE, C++ PROGRAMMING LANGUAGE, CALCULATOR.

ЗМІСТ

Вступ

1. Використання сучасних систем і мов програмування

1.1 Сучасні тенденції в області програмування

1.2 Типові середовища мови програмування С++

1.3 Основні принципи об'єктно-орінтованного програмування

2. Дослідження задачі «Реалізації калькулятора»

2.1 Стандартні підходи і розробки калькулятора

2.2 Сучасні системи обчислень калькулятора

2.3 Види алгоритмів використовувані при арифметичних обчисленнях

3. Розробка програмного забезпечення для рішення задачі «Реалізація калькулятора»

3.1 Опис програмної реалізації калькулятора

3.2 Результати, отримані користувачем при використанні розробленого програмного забезпечення

Висновки

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

Додаток А. Текст програмного коду

Вступ

Сьогодні комп'ютери все більш і більш входять до нашого життя. Для їх ефективного використання необхідні зручні і практичні програми, які створюються на мовах програмування. Одна з таких поширювальних мов є мова С++.

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

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

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

1. Використання сучасних систем і мов програмування

1.1 Сучасні тенденції в області алгоритмізації

Вирішення завдань на комп'ютері засноване на понятті алгоритму. Алгоритм - це точне приписання, що визначає обчислювальний процес, який веде від варійованих початкових даних до вихідного результату. Алгоритм означає точний опис деякого процесу, інструкцію по його виконанню. Розробка алгоритму є складним і трудомістким процесом. Алгоритмізація - це техніка розробки (складання) алгоритму для вирішення завдань на ЕОМ.

Для запису алгоритму рішення задачі застосовуються наступні образотворчі способи їх вистави:

- словесно-формульне описання;

- блок-схема (схема графічних символів);

- алгоритмічні мови;

- операторні схеми;

- псевдокод.

Для запису алгоритму існує загальна методика:

1. Кожен алгоритм повинен мати ім'я, яке розкриває його сенс.

2. Необхідно позначити початок і кінець алгоритму.

3. Описати вхідні і вихідні дані.

4. Вказати команди, які дозволяють виконувати певні дії над виділеними даними.

Формульно-словесний спосіб запису алгоритму характеризується тим, що опис здійснюється за допомогою слів і формул. Зміст послідовності етапів виконання алгоритмів записується на природній професійній мові наочної області в довільній формі.

Графічний спосіб опису алгоритму (блок - схема) набув найширшого поширення. Для графічного опису алгоритмів використовуються схеми алгоритмів або блокові символи (блоки), які з'єднуються між собою лініями зв'язку.

Кожен етап обчислювального процесу представляється геометричними фігурами (блоками). Вони діляться на арифметичних або обчислювальних (прямокутник), логічних (ромб) і блоки введення-виведення даних (паралелограм)[4].

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

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

Операторні схеми алгоритмів. Суть цього способу опису алгоритму полягає в тому, що кожен оператор позначається буквою (наприклад, А - арифметичний оператор, Р - логічний оператор і так далі). Оператори записуються зліва направо в послідовності їх виконання, причому, кожен оператор має індекс, вказуючий порядковий номер оператора. Алгоритм записується в один рядок у вигляді послідовності операторів.

Псевдокод - система команд абстрактної машини. Цей спосіб запису алгоритму за допомогою операторів близьких до алгоритмічних мов.

Основними алгоритмічними структурами є:

- проходження;

- галуження;

- цикл.

Проходження - конструкція, що є послідовністю виконання двох або більше простих або складених дій.

Галуження - задає виконання одне або іншої дії. Розвилку ще називають ЯКЩО-ТО-ІНАКШЕ. Галуження буває повним або неповним. Повне галуження читається таким чином: Якщо умова виконується, то виконується дія.

Цикл. Позначення повторюваного однієї і тієї ж дії або блоку дій називається тілом циклу. Виділяють два види циклу:

- цикл - з передумовою (ЦИКЛ-ПОКИ);

- цикл - з постумовою (ЦИКЛ-ДО).

Цикл - з передумовою. Умова задається до тіла циклу. На першому кроці перевіряється значення логічного виразу, якщо воно ІСТИНА - виконується тіло циклу. Потім знову перевіряється значення логічного виразу, якщо воно ІСТИНА - виконується тіло циклу. І так до тих пір, поки значення логічного виразу не стане НЕПРАВДА.

Цикл - з постумовою. Застосовується при необхідності виконати якісь дії, до того поки потрібно буде задати деяку умову [1].

1.2 Типове середовище програмування та особливості мови С++

Найбільш відомі середовища, що дозволяють створювати програми на мові С++ - це Microsoft Visual С++ і Borland C++ Builder.

Microsoft Visual C++ (MSVC) - інтегроване середовище розробки застосувань на мові C++, розроблена фірмою Microsoft. Постачається або як частина комплекту Microsoft Visual Studio, або окремо у вигляді безплатного функціонально обмеженого комплекту Visual C++ Express Edition.

Visual C++.NET підтримує розробку застосунків як на Managed C++, так і на звичайному С++, і тим самим дозволяє генерувати код як для платформи .NET Framework, так і для виконання в середовищі «чистої» Windows. У цьому відношенні Visual C++.NET є унікальним серед інших мовних засобів, що надаються середовищем Visual Studio, оскільки ані Visual Basic.NET, ані Visual J# не здатні генерувати код для чистого Win32, на відміну від попередніх версій (Visual Basic і Visual J++ відповідно) .

Мал. 1.1. - Інтерфейс Visual C++

Visual C++ 2008 (також відомий як Visual C++ 9.0), що входить в комплект Visual Studio 2008, був випущений в листопаді 2007. Ця версія підтримує .NET 3.5, і на даний час є останнім стабільним релізом. За замовчуванням всі застосунки, скомпільовані в Visual C++ 2008 Runtimes (статичне і динамічне зв'язування) будуть робити тільки у Windows 2000 і пізніших. Особливий пакунок, випущений для VC9 і пізніше включений в SP1, додавав підтримку бібліотеки розширення C++ TR1.

Версія SP1 також доступна в Microsoft Windows SDK for Windows 7.

Visual Studio 2008 і .NET Framework 3.5 дозволяють розробникам всіх рівнів швидко створювати розподілені веб-застосунки й застосунки з повноцінними інтерфейсами для Windows Vista, Windows Server 2008, Microsoft Office 2007, мобільних пристроїв та мережі Інтернет [3].

C++ Builder - програмний продукт, інструмент швидкої розробки додатків (RAD), інтегроване середовище програмування (IDE), система, використовувана програмістами для розробки програмного забезпечення на мові C++.

Спочатку розроблявся компанією Borland Software, а потім її підрозділом CodeGear, який зараз належить компанії Embarcadero Technologies.

Мал. 1.2. - Інтерфейс Borland C+ Builder 6

C++ Builder об'єднує в собі комплекс об'єктних бібліотек (STL, VCL, CLX, MFC і ін.), компілятор, відладчик, редактор коди і багато інших компонентів. Цикл розробки аналогічний Delphi. Більшість компонентів, розроблених в Delphi, можна використовувати і в C++ Builder без модифікації, але, на жаль, зворотне твердження не вірне.

C++ Builder містить інструменти, які за допомогою drag-and-drop дійсно роблять розробку візуальною, спрощує програмування завдяки вбудованому WYSIWYG - редакторові інтерфейсу і ін.

C++ Builder спочатку створювалася лише для платформи Microsoft Windows. Пізні версії, що містять, кроссплатформенну компонентну бібліотеку Borland, засновану на Qt, підтримують і Windows і Linux.

У кінці 2008 року компанія CodeGear випустила нову версію RAD Studio, до якої увійшли Delphi 2009 і С++ Builder 2009.

Наступна версія, CodeGear C++Builder (кодове ім'я «Commodore»), володітиме підтримкою x86-64 і можливістю створювати нативний x86-64 код [5].

Існують такі мови програмування: Фортран, Алгол, Кобол, Лисп, Бейсик, Форт,Паскаль, Ада, Си, Пролог. С++ -- універсальна мова програмування високого рівня.

Коли назріла необхідність в об'єктно-орієнтованому аналізі, проектуванні і програмуванні, Б'єрн Страуструп розширив мову С, збагатив засобами, необхідними для об'єктно-орієнтованого програмування. Страуструп перейменував мову у C++ у 1983 р. Базується на мові Сі. Визначена стандартом ISO/IEC 14882:2003.

При створенні С++ прагнули зберегти сумісність з мовою С. Більшість програм на С справно працюватимуть і з компілятором С++. С++ має синтаксис, заснований на синтаксисі С.

Нововведеннями С++ порівняно з С є:

- підтримка об'єктно-орієнтованого програмування через класи;

- підтримка узагальненого програмування через шаблони;

- доповнення до стандартної бібліотеки;

- додаткові типи даних;

- обробка винятків;

- простори імен;

- вбудовані функції;

- перевантаження операторів;

- перевантаження імен функцій;

- посилання і оператори управління вільно розподіленою пам'яттю[8].

Для вивчення С++ не обов'язково знати С. Програмування на С сприяє засвоєнню прийомів і навіть трюків, які при програмуванні на С++ стають просто непотрібними. Наприклад, явне перетворення типу (приведення), в С++ треба набагато рідше, ніж в С. Проте, гарні програми на мові С по суті є програмами на С++ . Наприклад, усі програми з класичного опису С є програмами на С++ . В процесі вивчення С++ буде корисний досвід роботи з будь-якою мовою із статичними типами.

В програмах на С++ можна використовувати бібліотеки С. Більшість службових програм, розрахованих на С, можна використовувати і в С++ .

Мова С сама розвивалася в останні декілька років, що частково було пов'язане з розробкою С++ .Стандарт ANSI для С містить, наприклад, синтаксис опису функцій, запозичений з мови "С з класами". Відбувається взаємне запозичення, наприклад, тип покажчика void* був придуманий для ANSI С, а вперше реалізований в С++ .

Стовідсоткової сумісності ніколи не було і не буде, оскільки це порушить надійність типів і узгодженість використання вбудованих і призначених для користувача типів, а ці властивості завжди були одними з головних для С++ [2].

1.3 Основні принципи об'єктно-орієнтованого програмування

Об'єктно-орієнтоване програмування (ООП) -- одна з парадигм програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою. В ній використано декілька технологій від попередніх парадигм, зокрема успадкування, поліморфізм та інкапсуляцію. Не зважаючи на те, що ця парадигма з'явилась в 1960-тих роках, вона не мала широкого застосування до 1990-тих. На сьогодні багато із мов програмування (зокрема, Java, ActionScript 3, C#, C++, Python, PHP, Ruby та Objective-C) підтримують ООП.

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

На відміну від традиційних поглядів, коли програму розглядали як набір підпрограм, або як перелік інструкцій комп'ютеру, ООП програми можна вважати сукупністю об'єктів.

Фундаментальними поняттями ООП є клас, об'єкт, метод.

Клас - визначає абстрактні характеристики деякої сутності, включаючи характеристики самої сутності (її атрибути або властивості) та дії, які вона здатна виконувати (її поведінки, методи або можливості). Наприклад, клас «ВУЗ» може характеризуватись рисами, притаманними всім вузам, зокрема: кількість студентів, напрямок підготовки, кількість факультетів. Класи вносять модульність та структурованість в об'єктно-орієнтовану програму. Як правило, клас має бути зрозумілим для непрограмістів, що знаються на предметній області, що, у свою чергу, значить, що клас повинен мати значення в контексті. Також, код реалізації класу має бути досить самодостатнім. Властивості та методи класу, разом називаються його членами.

Об'єкт - окремий екземпляр класу. Клас «ВУЗ» відповідає всім вищим навчальним закладам шляхом опису їхніх спільних рис; об'єкт «ХПІ» є одним окремим вузом, окремим варіантом значень характеристик. «ВУЗ» має факультети; «ХПІ» має 22 факультети. Об'єкт «ХПІ» є екземпляром класу «ВУЗ». Сукупність значень атрибутів окремого об'єкту називається станом.

Методами є можливості об'єкту класу. Можливості об'єкту. Оскільки «ХПІ» - «ВУЗ», він приймає студентів. Тому приймати студентів() є одним із методів об'єкту «ХПІ». Він може мати і інші методи, зокрема: навчати(), або надавати диплом(). В межах програми, використання методу має впливати лише один об'єкт; всі «ВУЗи» можуть приймати студентів, але треба щоб приймав лише один окремий вищий навчальний заклад.

У мові C++ повністю підтримуються принципи об'єктно-орієнтованого програмування, включаючи трьох китів, на яких воно перебуває: інкапсуляцію, наслідування і поліморфізм.

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

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

Третім принципом є поліморфізм. Поліморфізм - це функціональна можливість, що дозволяє старому коду викликати новий. Ця властивість ООП дає вам можливість розширювати і удосконалювати свою систему, не зачіпаючи існуючий код. Поліморфізм дозволяє групувати об'єкти, що мають загальний базовий клас, і послідовно їх обробляти [4].

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

Об'єктно-орієнтована ідеологія використовується в усіх сучасних програмних продуктах, включаючи операційні системи. Перша об'єктно-орієнтована мова Simula - 67 була створена, як засіб моделювання роботи різних приладів і механізмів. Більшість сучасних мов програмування - об'єктно-орієнтовані. Серед них останні версії мови Turbo - Pascal, C, Ada і інші.

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

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

Об'єктна модель здатна однаково добре описати, як елементи управління графічного інтерфейсу (типу кнопок і списків, що розкриваються), так і реальні об'єкти( літак, тварину чи воду). Таким чином, завдання об'єктно-орієнтованого програмування полягає в тому, щоб правильно представити ці об'єкти на мові програмування[1].

Підтримка об'єктно-орієнтованого програмування

Підтримку об'єктно-орієнтованого програмування забезпечують класи разом з механізмом наслідування, а також механізм виклику функцій-членів залежно від істинного типу об'єкту. Особливо важливу роль грає механізм виклику функцій-членів. Не менш важливі засоби, що підтримують абстракцію даних. Усі аргументи на користь абстракції цих методів, які дозволяють природньо і гарно працювати з типами, що базуються на ній, діють і для мови, що підтримує об'єктно-орієнтоване програмування. Успіх обох методів залежить від способу побудови типів, від того, наскільки вони прості, гнучкі і ефективні. Метод об'єктно-орієнтованого програмування дозволяє визначати загальніші і гнучкіші, призначені для користувача, типи в порівнянні з тими, які з'являються , якщо використовувати тільки абстракцію даних[7].

2. Рішення задачі «Реалізація калькулятора»

2.1 Стандартні підходи і розробки калькулятора

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

Всі калькулятори можна розбити на кілька груп:

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

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

- настільний калькулятор. Це ті ж кишенькові калькулятори, але мають трохи більші габарити. При постійній роботі такі калькулятори більш зручні ніж кишенькові, в основному через великих кнопок і екрану. У ці калькулятори вже можуть вставлятися додатковий регістр пам'яті, функції Mark Up. Для зручності в них можуть бути перемикачі встановлення кількості знаків після коми та округлення.

- Інженерні (англ. Scientific): призначені для складних наукових та інженерних розрахунків. Мають велику кількість функцій, включаючи обчислення всіх елементарних функцій, статистичні розрахунки, завдання кутів в градусах, мінутах і секундах. Для складних обчислень застосовуються дужки або зворотній польський запис.

- Візуальні калькулятори дозволяють вводити довгий вираз і редагувати його. При натисканні кнопки «=» відбувається обчислення значення цього виразу. Такі калькулятори дорогі і трохи незручні для простих розрахунків, однак зручні, коли потрібно провести велику кількість однотипних розрахунків з різними аргументами.

- Програмовані калькулятори мають можливість вводити і виконувати програми користувача. Мають велику кількість регістрів пам'яті (10 і більше). По функціональності наближаються до найпростіших комп'ютерів. В залежності від моделі програмовані калькулятори мають кілька типів вбудованих мов програмування: найпростіша (запам'ятовує тільки натискання клавіш без виведення на екран); і така, що відображає коди команд (зазвичай використовуючи зворотній польський запис), Бейсік або власна мова програмування, наближена до Бейсік.

- Графічні калькулятори мають графічний екран, що дозволяє креслити графіки функцій або навіть виводити на екран довільні малюнки[9].

Існує декілька видів програм калькуляторів:

- стековий калькулятор;

- римський калькулятор;

- науковий калькулятор;

- калькулятор виразів у зворотній польській нотації та ін.

Римський калькулятор - це калькулятор, котрий рахує римські цифри та переводить їх у арабські.

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

Мал. 2.1. - Інтерфейс наукового калькулятора

Зворотня польська нотіція - це операція в якій спочатку йдуть два операнда арифметичної операції, а потім знак операції.

Мал. 2.2. - Приклади використання RPN

У теорії мов програмування ця нотація називається постфіксною нотацією. Звичайна нотація називається алгебраїчною або інфіксною нотацією. Є також префіксная нотація, активно використовується в мові Сі (спочатку ім'я функції, а потім її аргументи), а також в мові LISP.

Дужки у зворотній польської нотації не потрібні. Транслятор зворотньої польської нотації(Reverse Polish Notation,RPN) заснований на стекові.

Стеком називається будь-яка структура, в якій можуть накопичуватися якісь елементи і для якої виконується наступна основна умова: елементи зі стеку можна діставати тільки у тому порядку, який є зворотнім порядку додавання їх у стек. Ця умова часто називають принципом «останнім прийшов - першим пішов» або LIFO (Last In - First Out).

Елемент стеку, який в даний момент можна взяти або подивитися називається вершиною стека, максимальне число елементів в стеку - глибина стека. Стек, в якому немає жодного елемента називається порожнім.

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

При виконанні будь-якої арифметичної операції число елементів в стеку зменшується на 1. Спроби виконати операцію, коли в стеку менше двох елементів, або показати результат, коли стек порожній, призводять до відмови[8].

2.2 Сучасні системи обчислень калькулятора

Серед усього розмаїття моделей існує одна, яка виявилася найбільш вдалою і користується найбільшим попитом. Саме цю модель намагаються використову для роботи. Ця модель - CITIZEN SDC-888 з різними літерами на кінці. Калькулятор має добре помітний 12-розрядний дисплей і великі клавіші. Є також два регістра пам'яті і два джерела живлення - батарея і сонячний елемент. Цей калькулятор гарний і увігнутими клавішами, з яких важко зісковзнути пальцях, і клавішею "забій", яка допоможе виправити помилково введену цифру. Особливо користувачам подобається те, що "додаткові" клавіші в калькуляторі винесені навколо "потрібних". При постійному обчисленні іноді трапляються такі моменти, коли необхідно перевірити весь ланцюжок вироблених обчислень. Є спеціальні моделі калькуляторів, які тримають в пам'яті останні операції (зазвичай - 32 операції і більше). Для цього створена нова модель калькулятора CITIZEN, аж з трьома рядками дисплея. Ця модель називається MLD-700.

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

Інженерний калькулятор. Обчислюють елементарні функції (тригонометричні, гіперболічні, експоненціальні), оперують з дуже великими числами в режимі з плаваючою комою, а також можуть мати багато регістрів пам'яті та інші додаткові функції, які можуть стати в нагоді інженерам (сьогодення і майбутнім) і старшим школярам. До інженерних калькуляторів також можна віднести "програмовані" калькулятори, які насправді запам'ятовують лише натискання клавіш - режим "простого програмування". Для серйозного програмування ці калькулятори не пристосовані, але можуть допомогти в обчисленні нескладних формул.

Типовий представник - Sharp EL-506P. На основі цієї моделі було випущено безліч однакових за своїми функціями калькуляторів, але з різним дизайном. Незважаючи на невелику ціну, можливості цієї моделі дуже великі - він обчислює всі елементарні функції, переводить числа з однієї системи числення в іншу, є невелика підтримка комплексних чисел, прості статистичні розрахунки та інше. Число, збережене в регістрі пам'яті збережеться і після вимкнення живлення калькулятора. Вбудованої батареї вистачить дуже на довго. Всі калькулятори, зроблені на основі EL-506P мають однакові функції.

Калькулятори з функцією простого програмування. При великому об'ємі розрахунків з однією і тією ж функцією для різних значень аргументів, краще використовувати калькулятор з функцією простого програмування. У таких калькуляторах можна записати одну або декілька програм, які будуть запускатися натисканням двох клавіш, залишається лише ввести аргументи функцій, а інше калькулятор зробить сам. Зрозуміло, введені програми збережуться і після відключення живлення калькулятора. Програмування називається простим тому, що програма вводиться "всліпу". Калькулятор лише запам'ятовує натискання клавіш, і користувач не може якось проконтролювати введення програми і тим більше її виправити. Для редагування програми необхідно буде її ввести знову. Калькулятори з простим програмуванням звичайно забезпечуються кількома регістрами пам'яті і додатковими функціями. Типовий представник такого сімейства калькуляторів - CITIZEN SRP-175. Буква P в імені означає, що калькулятор програмований. В калькуляторі просто безліч всіляких функцій. У нього є 10 регістрів пам'яті. Крім цього розширені статистичні функції, які виробляються з двома змінними. Є функція лінійної регресії. Це означає, що калькулятор буде намагатися провести пряму лінію по набору точок, яка у нього вводиться. У калькулятор додані логічні операції з двійковими (вісімковими або шістнадцятковими) числами. Чотири програми користувача можуть мати сумарно до 128 кроків (натискань клавіш), чого зазвичай буває достатньо для нескладних обчислень. У калькуляторі є також фізичні константи основних величин, наприклад, швидкість світла або число Авогадро.

Дворядкові калькулятори. Останньою "модою сезону" в калькуляторі будуванні стали калькулятори з дворядковим дисплеєм. Індикатор має два рядки - верхній, в який вводиться формула і нижній, на якому відображається результат. Тепер користувач бачить одночасно те, що вводить і результат операції. Це дуже зручно. У будь-який момент можна відредагувати формулу. До речі, формула вводиться так, як написана на папері. Наприклад, якщо в простих калькуляторах щоб обчислити синус від двох, необхідно було натискати [2] [SIN], то в дворядкових калькуляторах просто набирається SIN 2. Дворядковий калькулятори представлені, в основному, калькуляторами двох фірм - CASIO і CITIZEN. У калькуляторах CASIO основна модель - CASIO fx-991W. Зробивши основну модель, розробники заради здешевлення випустили й інші, більш скромні за своїми можливостями моделі, здешевивши їх і прибравши деякі функції. Ось перелік функцій, які є в моделі fx-991W:

- обчислення з простими дробами;

- інтегрування;

- обчислення числа перестановок і поєднань;

- статистичні функції;

- операції з числами в різних системах числення;

- логічні операції;

- обчислення з комплексними числами;

- пам'ять на одну формулу;

- представлення результату в інженерному форматі;

- 40 наукових констант;

- 20 різних перетворень метричної системи в англійську і назад;

- 9 елементів пам'яті для зберігання чисел.

Графічний калькулятор. Найостанніші досягнення в сфері калькуляторів вносяться саме в графічні калькулятори. Це - калькулятори, які можуть практично все. Графічний дисплей дозволяє будувати й аналізувати графіки. Велика кількість пам'яті робить можливим писати складні програми (і грати в калькуляторні ігри). Майже кожна модель має порт для зв'язку з комп'ютером. Графічні калькулятори названі так тому, що мають графічний дисплей, і відповідно, можуть будувати графіки. Графічні калькулятори у нас представлені, в основному, калькуляторами фірми CASIO, хоча насправді вони випускаються великою кількістю фірм, наприклад, Hewlett Packard або Texas Instruments. Графічні калькулятори мають вбудований режим програмування, наближений до Бейсік, і трохи спрощений, щоб знаки легко вводилися за допомогою клавіатури. Зручний графічний дисплей може показувати не лише графіки функцій, але й, наприклад, матриці чисел в "квадратному" вигляді. Кількість вбудованих функцій наближається до тисячі, і такий калькулятор дозволить вирішити практично будь-яке завдання, яке може зустрітися навіть і в повсякденному житті[6].

2.3 Види алгоритмів використовувані при арифметичних обчисленнях Алгоритм Рутісхаузера

Даний алгоритм є одним із найбільш ранніх. Його особливістю є припущення про повну структуру виразу. Під повним діжковим записом розуміють запис, в якому порядок дій задається розставленням дужок. Наприклад:

D:=((C-(B*L))+K)

Обробляючи вирази з повною діжковою структурою, алгоритм присвоює кожному символу з рядка номер рівня за наступним правилом:

1. Якщо це відкриваюча дужка чи змінна, то значення збільшуеться на 1;

2. Якщо знак операції чи закриваюча дужка, то зменшується на 1.

Для виразу (А+(В+С)) присвоює значення рівня будуть здійснюватись наступним способом:

Мал. 2.3. - Приклад до виразу (А+(В+С))

Алгоритм складається із наступних кроків:

1. Виконати розстановку рівнів;

2. Виконати пошук елементів рядку з максимальним значенням рівня;

3. Виділити трійку - два операнди з максимальним значенням рівня і операцію, яка поміщена між ними;

4. Результат обчислення трійки позначити допоміжною змінною;

5. З початкового рядка видалити виділену трійку разом з її дужками, а на її місці помістити допоміжну змінну, яка показую результат, зі значенням рівня меншим на одиницю, ніж у виділеної трійки;

6. Виконувати п.п.2-5 до тих пір, поки у вхідному рядку не залишиться одна змінна, яка показує загальній результат виразу.

Наприклад:

Мал. 2.4. - Приклад Алгоритму

Алгоритм Бауера і Замельзона

Алгоритм використовує два стека і таблицю функцій переходу. Один стек використовується при трансляції виразу, а другий - під час інтерпретації виразу. Позначення: Т - стек транслятора, Е - стек інтерпретатора.

В таблиці переходів задаються функції, котрі повинен виконати транслятор при розборі виразу. Можливі шість функцій при прочитанні операції із вхідного рядка:

-f1 - заслати операцію їх вхідного рядка в стек Т; читати наступний символ рядка;

- f2 - виділити трійку - взяти операцію з вершини стека Т і два операнда з вершини стека Е; допоміжну змінну, яка показую результат, занести в стек Е; заслати операцію із вхідного рядка в стек Т; читати наступний символ рядку;

- f3 - виключити символ із стека Т; читати наступний символ рядку;

- f4 - виділити трійку - взяти операцію з вершини стека Т і два операнда з вершини стека Е; допоміжну змінну, яка показує результат, занести в стек Е;по таблиці визначити функцію для даного символу вхідного рядку;

- f5 - видача повідомлення про помилку;

- f6 - завершення роботи.

Таблиця переходів для алгебраїчних виразів буде мати вид (символ $ є ознакою пустого стеку чи пустого рядка ):

Мал.2.5. - Таблиця переходів для алгебраїчних виразів

Алгоритм продивляється зліва направо вираз і циклічно виконує наступні дії: якщо наступний символ вхідного рядку є операндом. То він безумовно переноситься в стек Е; якщо ж операція, то по таблиці функцій переходу визначається номер функції для виконання. Для виразу А+(В-С)*D нижче приводиться послідовність дій алгоритма[10].

Мал. 2.6. - Алгоритм для виразу А+(В-С)*D

3. Розробка програмного забезпечення для програми «Калькулятор»

3.1 Опис контрольного прикладу

int oper=0; //змінна, значення якої відповідає за виконувану операцію;

if(RichEdit1->Text.Length()>32)return;// Якщосимволів в полі RichEdit1 >32, нічього не дописуєм

Length() - функція, яка підраховує кількість символів

a=StrToFloat(RichEdit1->Text); //функція конвертуе вміст рядку в поле RichEdit1

//в Float и записує значення в змінну a

oper=1;// присвоювання цифри 1, котра відповідає операції додавання

oper=2;// присвоювання цифри 2, котра відповідає операції віднімання

oper=3; // присвоювання цифри 3, котра відповідає операції множення

oper=4; // присвоювання цифри 4, котра відповідає операції ділення

c=a+b; // в змінну с записується результат, oper - операція, а введенне перше значення, b - поточне значення поля RichEdit1

c=a-b;//, в змінну с записується результат, oper - операція, а введенне перше значення, b - поточне значення поля RichEdit1

c=a*b;// в змінну с записується результат, oper - операція, а введенне перше значення, b - поточне значення поля RichEdit1

c=a/b;// в змінну с записується результат, oper - операція, а введенне перше значення, b - поточне значення поля RichEdit1

a=b=c=prev=0;//обнуляється значення в змінних

a=b=c=0;// обнулення змінних

memory = 0;//обнулення змінної, котра відповідає за збереження значення

oper=0; // обнуляється операція

Form2->ShowModal(); //Викликаємо в Form2 функцію ShowModal,котра відповідає за інформацію про того, хто розробив програму

void __fastcall TForm1::RichEdit1KeyPress(TObject *Sender, char &Key)

/*ця ф-я включае в себе декілька перевірок вводу з клавіатури*/

ShowMessage("нельзя извлечь корень из отрицательного числа!");

a=sqrt(a);// добування кореня із а

a=1/a;//виконання операції 1/a

memory = StrToFloat(RichEdit1->Text);//запис в memory конвертованого значення із RichEdit1

RichEdit2->Text = "M";//запис значення M в RichEdit2 , котре вказує, що в пам'яті записане знач-я

RichEdit1->Text = FloatToStr(memory);//присвоювання знач-я из memory в RichEdit1 при цьому конвертуючи його в рядок

memory=memory + StrToFloat(RichEdit1->Text);//дозапис в пам'ять значення, котре в RichEdit1

RichEdit1->Text=RichEdit1->Text.Delete(RichEdit1->Text.Length(),1); //видалення із RichEdit1 останньої цифри

prev = StrToFloat(RichEdit1->Text); // запис значення RichEdit1 в prev

RichEdit1->Text = FloatToStr(prev);// запис знач-я prev в RichEdit1

3.2 Результати отримувані користувачем при використанні отриманого програмного забезпечення

Загальні відомості про калькулятор

Дана програма призначена для тих самих дій, що і у звичайному калькуляторі. Вона виконує основні арифметичні дії, такі як: додавання, віднімання, множення та ділення, а також находження квадратного кореня та відсоткове співвідношення.

Мал. 3.1. - Програма Калькулятор;

Щоб виконати просте обчислення слід:

1. Ввести перше число;

2. Натиснути клавішу + (додавання), - (віднімання), * (множення) або / (ділення);

3. Ввести наступне число;

4. Ввести інші оператори та числа;

5. Натиснути клавішу =.

Щоб перетворити число при переключенні режимів слід:

1. Натиснути клавішу MS, щоб занести число в пам'ять;

2. В меню Вид вибирати потрібний режим;

3. Натиснути клавішу MR, щоб викликати число із пам'яті.

Щоб виконати операцію з пам'ятю слід:

1. Щоб занести відображаюче число в пам'ять ,слід натиснути клавішу MS;

2. Щоб викликати число із пам'яті , слід натиснути клавішу MR;

3. Щоб очистити пам'ять, потрібно натиснути клавішу MC;

4. Щоб додати відображаючи число з числом, зберігаючого в пам'яті, потрібно натиснути клавішу M+;

5. Щоб викликати результат, клавіша MR.

Мал. 3.2. - Калькулятор в процесі обчислення;

Примітка

· При переключенні між звичайним та інженерним режимом екран калькулятора очищається. Виконання е перерахованих вище кроків дозволяє переводити числа із одного режима в інший.

· Числа в шістнадцятерічному, восьмирічному і двоїчному форматах при переході від інженерного до звичайного режиму перетворюються в десятичний формат.

· Щоб отримати можливість вводу цифр і операторів з цифрової клавіатури, слід натиснути клавішу NUM LOCK.

· Після збереження числа над клавішами пам'яті на панелі калькулятора з'явиться індикатор M. Кожне нове число, занесене в пам'ять, заміняє попереднє[8].

Висновок

При виконанні даної курсової роботи була розроблена програма у середовищі Builder C++ мовою високого рівня, а також вивчені особливості даної мови.

Систематизовано й закріплено практичні навички програмного забезпечення, а також теоретичні знання по основних розділах курсу «Об'єктно-орієнтованого програмування». При виконанні курсового проекту проведено знайомство з інформаційними джерелами по об'єктно-орієнтованому програмуванню з метою аналізу стану розв'язуваного завдання.

Отримано практичні навички роботи в середовищі Builder C++.

В даній курсовій роботі була розроблена програма призначена для тих самих дій, що і у звичайному калькуляторі. Вона виконує основні арифметичні дії, такі як: додавання, віднімання, множення та ділення, а також находження квадратного кореня та відсоткове співвідношення. Обчислення можуть здійснюватись із дробовими числами та додатковими клавішами для полегшення роботи калькулятора такі як: MS, MR, MC, M+.

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

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

1. Березін Б.И, Березін С.Б. Навчальний курс програмування. - М., 1996 р.

2. Бьерн Страуструп. « Язык программирования С++»

3. Н. Секунов, «Самоучитель Visual C++ 6», вид. «БХВ-Петербург», 2003 р.

4. Ваграменко Я.А. «Основы информатики и вычислительной техники с применением к лингвистике» Учеб. пособие. - М.: МОПИ, 1989 р.

5. Харви и Пол Дейтл «Как програмировать на языке С++»

Додаток 1

Текст програмного коду

//---------------------------------------------------------------------------

#include <vcl.h>

#include<math.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

bool f=true,d=true;

int oper=0; double a, b, c, prev, memory;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner) {

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton5Click(TObject *Sender) {

if(RichEdit1->Text.Length()>32)return

if(RichEdit1->Text=="0") {

RichEdit1->Text = "1"; }

else

{

RichEdit1->Text =RichEdit1->Text + "1"; // } }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton4Click(TObject *Sender) {

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text=="0") {

RichEdit1->Text = "2"; }

else {

RichEdit1->Text =RichEdit1->Text + "2"; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton6Click(TObject *Sender) {

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text=="0") {

RichEdit1->Text = "3"; }

else

{

RichEdit1->Text =RichEdit1->Text + "3"; }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton7Click(TObject *Sender) {

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text=="0") {

RichEdit1->Text = "4"; }

Else {

RichEdit1->Text =RichEdit1->Text + "4"; } }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton8Click(TObject *Sender) {

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text=="0") {

RichEdit1->Text = "5"; }

else {

RichEdit1->Text =RichEdit1->Text + "5"; } }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton9Click(TObject *Sender)

{

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text=="0")

{

RichEdit1->Text = "6"; }

else

{

RichEdit1->Text =RichEdit1->Text + "6"; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)

{

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text=="0")

{

RichEdit1->Text = "7"; }

else

{

RichEdit1->Text =RichEdit1->Text + "7"; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton2Click(TObject *Sender)

{

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text=="0")

{

RichEdit1->Text = "8"; }

else

{

RichEdit1->Text =RichEdit1->Text + "8"; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton3Click(TObject *Sender)

{

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text=="0")

{

RichEdit1->Text = "9";

}

else

{

RichEdit1->Text =RichEdit1->Text + "9"; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton23Click(TObject *Sender)

{

//RichEdit1->Text = "0";

if(RichEdit1->Text.Length()>32)return;

if(RichEdit1->Text!="0")

{

RichEdit1->Text = RichEdit1->Text + "0"; }

//RichEdit1->SelStart=RichEdit1->Text.Length();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton13Click(TObject *Sender)

{

if(oper!=0)SpeedButton27Click(Form1);

a=StrToFloat(RichEdit1->Text); oper=3; d=true;

RichEdit1->Text="0";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton12Click(TObject *Sender)

{

if(oper!=0)SpeedButton27Click(Form1);

a=StrToFloat(RichEdit1->Text);

oper=4;

d=true;

RichEdit1->Text="0";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton14Click(TObject *Sender)

{

if(oper!=0)SpeedButton27Click(Form1);

a=StrToFloat(RichEdit1->Text//if(a==0)a=0-a;

oper=2;

d=true;

RichEdit1->Text="0";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton26Click(TObject *Sender)

{

if(oper!=0)SpeedButton27Click(Form1);

a=StrToFloat(RichEdit1->Text); oper=1;

d=true;

RichEdit1->Text="0"; }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton27Click(TObject *Sender)

{

b=StrToFloat(RichEdit1->Text);

if(oper==1)

{

c=a+b;

a=c;

}

if(oper==2)

{

c=a-b;

a=c;

}

if(oper==3)

{

c=a*b;

a=c;

}

if(oper==4)

{

c=a/b;

a=c;

}

RichEdit1->Text=FloatToStr(c);

f=true;d=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton18Click(TObject *Sender)

{

RichEdit1->Text="0";

f=true;d=true;

a=b=c=prev=0;

oper=0; }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton28Click(TObject *Sender)

{

Form2->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RichEdit1KeyPress(TObject *Sender, char &Key)

{

if(Key=='0')if(RichEdit1->Text=='0')

Key=0;

if((Key>='0')&&(Key<='9'))

{

if((RichEdit1->Text=='0')||(f))

{

RichEdit1->Text=Key;

Key=0;

f=false;

}

RichEdit1->SelStart=RichEdit1->Text.Length();

return;

}

if(Key==',')

if(RichEdit1->Text.Length()==1)

return;

if(Key==VK_BACK)

if(RichEdit1->Text.Length()==1)

{

RichEdit1->Text='0';

Key=0;

}

Key=0;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

RichEdit1->Text="0";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton24Click(TObject *Sender)

{

a=StrToFloat(RichEdit1->Text);

a=0-a;

f=true;

RichEdit1->Text=FloatToStr(a);

void __fastcall TForm1::SpeedButton11Click(TObject *Sender)

{

RichEdit1->Text="0";

f=true;

d=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton22Click(TObject *Sender)

{

a=StrToFloat(RichEdit1->Text);

if(a<0)

{

ShowMessage("нельзя извлечь корень из отрицательного числа!");

RichEdit1->Text="0"; //обнуление RichEdit1

f=true;

a=b=c=0; // обнуление

переменных

return;

}

a=sqrt(a);

f=true;

RichEdit1->Text=FloatToStr(a); }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton20Click(TObject *Sender)

{

a=StrToFloat(RichEdit1->Text);

if(a==0)

{

ShowMessage("нельзя делить на ноль!");

RichEdit1->Text="0";

f=true;

a=b=c=0;

return; }

a=1/a;

f=true;

RichEdit1->Text=FloatToStr(a); }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton25Click(TObject *Sender) {

if(RichEdit1->Text.Length()>32)return;

if(d) {

RichEdit1->Text = RichEdit1->Text + ",";

d=false; } }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton17Click(TObject *Sender) {

memory = StrToFloat(RichEdit1->Text);

RichEdit2->Text = "M"; }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton16Click(TObject *Sender) {

RichEdit1->Text = FloatToStr(memory);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton15Click(TObject *Sender)

{

memory = 0;

RichEdit2->Text = " "; }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton19Click(TObject *Sender) {

memory=memory + StrToFloat(RichEdit1->Text); }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton10Click(TObject *Sender)

{

if(RichEdit1->Text!=0)

RichEdit1->Text=RichEdit1->Text.Delete(RichEdit1->Text.Length(),1); }

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton21Click(TObject *Sender) {

prev = StrToFloat(RichEdit1->Text);

prev = (a/100)*prev;

RichEdit1->Text = FloatToStr(prev); }

//---------------------------------------------------------------------------

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

...

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

  • Основні принципи об’єктно-орієнтованого програмування. Типові середовища програмування та особливості мови С++. Етапи проектування БД. Розробка програмного забезпечення для реалізації створення бази відеофільмів. Основні положення та моделі БД.

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

  • Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.

    курсовая работа [211,3 K], добавлен 19.08.2010

  • Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.

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

  • Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.

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

  • Основні відомості про історію розвитку мови Object Pascal, середовища Delphi, їх основні технології та застосування для роботи з файлами. Опис основних особливостей мови, основних елементів програмної мови. Принципи об'єктно-орієнтованого програмування.

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

  • Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.

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

  • Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.

    курсовая работа [98,0 K], добавлен 06.05.2014

  • Особливості об'єктно-орієнтованого програмування. Розробка програми для елементарних математичних розрахунків, виведення результату на екран та запису у файлі. Сортування слів у рядку. Програма, яка реалізовує ходи шахових фігур. Програма-калькулятор.

    отчет по практике [2,0 M], добавлен 19.03.2015

  • Використання мови програмуванння Java при виконанні "задачі лінійного програмування": її лексична структура і типи даних. Методи розв’язання задачі. Особливості логічної структури програми, побудова її зручного інтерфейсу за допомогою симплекс методу.

    курсовая работа [437,9 K], добавлен 24.01.2011

  • Розробка програми імітації схеми життя лісового біому. Алгоритм пересування по головному полю. Основні глобальні функції програми. Динамічна ідентифікація типу даних. Вирішення завдань в області об’єктно-орієнтованого програмування засобами C++.

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

  • Поняття черги в програмуванні, основні операції з чергою і їх реалізація. Опис алгоритму й специфікація програми. Розробка додатку з використанням задачі Ларсона по опису зв'язного неорієнтованого графа. Алгоритм розв’язку і результати виконання програми.

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

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

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

  • Основні розрахунки резисторів мікросхеми. Розробка алгоритму рішення задачі методом блок-схем. Характеристика та розробка програми на мові С++ з використанням принципів модульного і структурного програмування. План тестування і налагоджування програми.

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

  • Розробка програми на мові програмування С++ з використанням об'єктно-орієнтованого програмування. Робота з файлами, графікою, класами, обробка числової інформації. Графічні засоби мови програмування. Алгоритм задачі та допоміжні програмні засоби.

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

  • Цілі і завдання розробки, її предмет і актуальність. Опис предметної області, цілі і завдання програми. Вибір методу рішення, опис процесу програмування і вибір інструментальних засобів для реалізації проекту, опис вхідних та вихідних даних, інтерфейсу.

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

  • Розробка програми для тренування швидкого десяти пальцевого набору тексту на клавіатурі за допомогою класів, які будуть містити в собі параметри об’єктів та їх методи. Аналіз об'єкту програмування. Основні принципи об'єктно-орієнтованого програмування.

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

  • Правило перекладу цілих чисел з різних систем числення в будь-яку іншу. Правило переходу правильних десяткових дробів. Розробка інтерфейсу користувача. Алгоритмізація і програмування рішення задачі. Налагодження і тестування програми "Калькулятор".

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

  • Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.

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

  • Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.

    курсовая работа [41,0 K], добавлен 17.02.2009

  • Ключові поняття мови об’єктно-орієнтованого програмування C++: інкапсуляція, наслідування, абстракція, поліморфізм. Об’ява класів у мові С++. Графічні засоби. Пошук відстані між точками. Опис класів і об’єктів. Програма графічної задачі. Лістинги файлів.

    курсовая работа [144,3 K], добавлен 14.03.2013

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