Спецификация на программу «Калькулятор. Базовая версия»


Описание файлов, входящих в пакете калькулятора



бет3/6
Дата16.02.2023
өлшемі47,64 Kb.
#168950
1   2   3   4   5   6
Байланысты:
Спецификация на Калькулятор

Описание файлов, входящих в пакете калькулятора

CalcClass.dll – библиотека, в которой реализованы все необходимые математические функции.
AnalaizerClass.dll – модуль, в котором реализован синтаксический разбор выражения, а также его вычисление.
calc.exe – графическая оболочка, главный модуль.



    1. Интерфейс пользователя.






Клавиши «1» «2» «3» «4» «5» «6» «7» «8» «9» «0» «/» «*» «-» «+» «mod» «(» «)» – вводят соответствующий символ в поле выражение. Клавиша «Сброс» очищает поле «Выражение», клавиша «Стереть» удаляет последний введенный символ. Клавиша «=» начинает выполнение вычислений. «MR», «M+» и «MC» управляют памятью калькулятора, «+/-» — триггер унарного плюса/унарного минуса.



  1. Описание архитектуры

Как уже отмечалось выше, в архитектуре системы выделено 3 модуля. Каждый из модулей занимается определенной задачей. Соответственно, Система – это взаимодействие этих 3-х модулей. Рассмотрим их подробнее.

  1. Модуль математических операций (CalcClass.dll)

Модуль содержит все математические функции, используемые в программе.
///
/// Функция сложения числа a и b
///

///
слагаемое

///
слагаемое

/// сумма
public static int Add(long a, long b)


///
/// функция вычитания чисел a и b
///

///
уменьшаемое

///
вычитаемое

/// разность
public static int Sub(long a, long b)



///
/// функция умножения чисел a и b
///

///
множитель

///
множитель

/// произведение
public static int Mult(long a, long b)


///
/// функция нахождения частного
///

///
делимое

///
делитель

/// частное
public static int Div(long a, long b)

///
/// функция деление по модулю
///

///
делимое

///
делитель

/// остаток
public static int Mod(long a, long b)


///
/// унарный плюс
///

///

///
public static int ABS(long a)


///
/// унарный минус
///

///

///
public static int IABS(long a)


Используется также глобальная переменная:
///
/// Последнее сообщение об ошибке.
/// Поле и свойство для него
///

private static string _lastError = "";


public static string lastError


  1. Модуль анализа и вычисления выражений

Состоит из следующих методов и свойств:
///
/// позиция выражения, на которой отловлена синтаксическая ошибка (в
случае ловли на уровне выполнения - не определяется)
///

private static int erposition = 0;
///
/// Входное выражение
///

public static string expression = "";


///
/// Показывает, есть ли необходимость в выводе сообщений об ошибках.
В случае консольного запуска программы это значение - false.
///

public static bool ShowMessage = true;
///
/// Проверка корректности скобочной структуры входного выражения
///

/// true - если все нормально, false- если есть
ошибка
/// метод бежит по входному выражению, символ за символом анализируя
его, и считая количество скобочек. В случае возникновения
/// ошибки возвращает false а в erposition записывает позицию, на
которой возникла ошибка.
public static bool CheckCurrency()


///
/// Форматирует входное выражение, выставляя между операторами
пробелы и удаляя лишние, а также отлавливает неопознанные операторы, следит за концом строки
/// а также отлавливает ошибки на конце строки
///

/// конечную строку или сообщение об ошибке, начинающиеся со
спец. символа &
public static string Format()


///
/// Создает массив, в котором располагаются операторы и символы,
представленные в обратной польской записи (безскобочной)
/// На этом же этапе отлавливаются почти все остальные ошибки (см.
код). По сути - это компиляция.
///

/// массив обратной польской записи
public static System.Collections.ArrayList CreateStack()


///
/// Вычисление обратной польской записи
///

/// результат вычислений или сообщение об ошибке
public static string RunEstimate()


///
/// Метод, организующий вычисления. По очереди запускает
CheckCorrncy, Format, CreateStack и RunEstimate
///

///
public static string Estimate()



  1. Модуль графического интерфейса – обеспечивает управление системы в графической форме. Основные функции этого модуля – ввод и вывод данных.


Взаимодействие модулей показано на рисунке:






  1. Достарыңызбен бөлісу:
1   2   3   4   5   6




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет