пятница, 13 февраля 2015 г.

Калькулятор дробных чисел в Delphi

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

Постановка задачи


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

Схема алгоритма решения задачи


Для решения поставленной задачи нам необходимо:
  1. Если пользователем введены значения, то считать их.
  2. Выбрать операцию.
  3. Определить, в каком формате введена дробь. Если с целой частью, то привести ее к дроби без целой части.
  4. Вычислить результат.
  5. Сохранить данные на случай отмены последней операции.
  6. Вывести результат.
Начертить общую схему работы калькулятора сложно из-за ее объемности. Поэтому рассмотрим вычислительный процесс на примере работы процедуры нахождения суммы двух дробей. Дробь задается в формате:

Калькулятор дробных чисел в Delphi

Тогда получим схему:

Калькулятор дробных чисел в Delphi

Описание используемых компонентов


Для написания программы на форму были помещены такие компоненты среды разработки Delphi:
  • поля Edit (для ввода пользовательских значений и вывода полученных результатов);
  • кнопки Button;
  • поле Memo (для вывода логов работы программы);
  • ComboBox (для выбора значения степени, в которую будет возводиться дробь).
На событие создания формы OnCreate в процедуре TForm1.OnCreate зададим создание файла Z.log, который будет создаваться в корневом каталоге диска С.

При нажатии кнопок Button1-Button4 вызываются процедуры, с помощью которых считываются данные, введенные пользователем. В соответствии с нажатой кнопкой, будет вызвана подпроцедура сложения, вычитания, умножения или деления(summa, minus, umn, del).

После обработки данных подпроцедурой будет возвращен результат. Если данные не введены, будет вызвана процедура вывода на экран и в файл сообщения об ошибке. Процедура называется log_error.

При нажатии кнопок Button5-Button9 вызываются процедуры выделения целой части, сокращения дроби, возведения в степень, обмена местами числителя и знаменателя, смены знака.

Процедура возведения в степень вызывает подпроцедуру stepen. Необходимо, чтобы в поле возле кнопки вызова процедуры предварительно было введено значение степени.
Процедура обмена местами вызывает подпроцедуру obmen. Процедура смены знака вызывает подпроцедуру Smena. Так же, как и выше, если данные вводятся неправильно, выводится сообщение об ошибке.

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

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

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

Справочная система разработана с помощью утилиты Hcw.exe. Для этого сначала справочный материал был написан в Microsoft Word, расставлены ссылки в каждом пункте справки, информация сохранена в rtf формате. Далее с помощью вышеназванной утилиты была создана справочная система и оглавление к ней. Для связи справочной системы с нашим приложением было введено название help-файла в меню Borland Delphi «Проект» → «Параметры» → «Приложение» → «Файл справки».

Пример результатов работы программы


Например вычислим:

Калькулятор дробных чисел в Delphi

Получим такие результаты:

Калькулятор дробных чисел в Delphi

Теперь перенесем полученное значение в нижнее поле и выделим целую часть:

Калькулятор дробных чисел в Delphi

Теперь можно обменять местами числитель и знаменатель:

Калькулятор дробных чисел в Delphi

Возведем полученное значение во вторую степень:

Калькулятор дробных чисел в Delphi

Сменим знак дроби:

Калькулятор дробных чисел в Delphi

При неправильном вводе данных мы увидим такое сообщение:

Калькулятор дробных чисел в Delphi

При нажатии на кнопку «Логи» мы увидим логи работы нашей программы:

Калькулятор дробных чисел в Delphi

Полностью просмотреть только что созданный log-файл можно в приложении А, размещенном ниже, а в конце статьи можно найти ссылку на листинг программы и на само приложение.

При нажатии на кнопку помощи мы увидим справочное руководство:

Калькулятор дробных чисел в Delphi

При выборе необходимого нам пункта можно будет почитать интересующий материал.

Инструкция пользователю программы


Сложение, вычитание, умножение и деление:

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

Выделение целой части:

Для выделения целой части дробь вводится не в те поля, где производились операции «+,-,*,/», а ниже, в специально отведенных полях. Затем нажимается кнопка «Выделение целой части».
Если дробь введена уже с целой частью или не введена вообще, то будет выведено сообщение об ошибке.

Сокращение дроби:

Для сокращения дроби нужно выбрать соответствующее значение делителя от 2 до 9 в поле возле кнопки «Сократить дробь на …» и нажать на кнопку. Если дробь не сокращается на выбранное число, то никаких изменений не произойдет. Если дробь введена неправильно, будет выведено сообщение об ошибке.

Возведение в степень:

Для возведения в степень нужно ввести значение степени в поле возле кнопки «Возведение в степень…» и нажать на кнопку. Если не введена дробь или значение степени, то будет выведено сообщение об ошибке.

Обмен местами числителя и знаменателя:

Для обмена местами нужно ввести дробь и нажать на кнопку «Обмен местами». При неправильном вводе значения дроби появится сообщение об ошибке.

Смена знака:

Для смены знака нужно ввести дробь и нажать на кнопку «Смена знака». При неправильном вводе значения дроби появится сообщение об ошибке.

Работа с памятью:

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

Просмотр логов:

В программе предусмотрена возможность во время работы сохранять логи в файл. Туда заносятся все входные данные и действия, произведенные пользователем.
Для просмотра этих логов нужно нажать кнопку «Просмотреть логи».

Приложение А


Сложение
Первое число                                                 Второе число
Целая часть      Числитель     Знаменатель      Целая часть      Числитель     Знаменатель
    3                      21             6          +       0                    2                 3
Результат:
   23/    6
Выделение целой части
Числитель     Знаменатель
   23             6
Результат:
Целая часть      Числитель     Знаменатель
    3                     5                 6
обмен местами числителя и знаменателя
Целая часть      Числитель     Знаменатель
    3                       5                 6
Результат:
Числитель   Знаменатель
    6            23
Возведение в степень
Целая часть      Числитель     Знаменатель      Степень
    0                       6                23              2
Результат:
Числитель   Знаменатель
   36               529
Смена знака
Целая часть      Числитель     Знаменатель
    0                      36               529
Результат:
Числитель   Знаменатель
  -36               529
Неправильно введены данные

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

Здесь можно скачать листинг программы калькулятора дробных чисел и готовое приложение:

.

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

Комментариев нет:

Отправить комментарий