Создание калькулятора

  • Вид работы:
    Практическое задание
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    40,35 Кб
  • Опубликовано:
    2017-03-31
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание калькулятора














Создание калькулятора

Цель работы: Создать простейший калькулятор, используя Java.

Краткая теория:

Предметно-ориентированные языки представляют собой обширную тему для обсуждения, ее невозможно уместить в одном вводном абзаце. Более подробную информацию о DSL можно найти в еще неопубликованной книге Мартина Фаулера (Martin Fowler). Обратите особое внимание на различия между "внутренними" и "внешними" DSL. Благодаря своему гибкому синтаксису и функциональной природе Scala может с успехом применяться для создания DSL обоих типов.

Другими словами, в конечном итоге язык должен позволять клиентам создавать и вычислять выражения аналогично тому, как показано в листинге 1.

листинг программа калькулятор

// использование интерпретатора DSL в Javas = "((5 * 10) + 7)";

double result = com.tedneward.calcdsl.Calculator.evaluate(s);.out.println("We got " + result); // Should be 57

Те из вас, кто обладает базовым представлением о теории компиляторов, знают, что работа транслятора (компилятора или интерпретатора) состоит как минимум из двух основных шагов:

·              парсер обрабатывает текст программы и трансформирует его в абстрактное синтаксическое дерево (AST);

·              генератор кода (в случае компилятора) обрабатывает AST и генерирует машинный код, либо блок вычислений (в случае интерпретатора) исполняет команды, содержащиеся в AST.

Разделение этих шагов работы транслятора на отдельные фазы позволяет выполнять оптимизацию промежуточного представления кода в AST. Например, в случае калькулятора можно проанализировать выражения и в ряде случаев отбросить целые его части, в частности операнды, умножаемые на ноль (поскольку результат гарантированно будет равен нулю).

Таким образом, нашей первой задачей будет определение AST для языка выражений. К счастью, в Scala есть case-классы. Они не предоставляют мощных средств инкапсуляции, но в них удобно хранить данные, что в совокупности с другими возможностями делает их подходящим инструментом для создания AST.

Ход выполнения работы:

Листинг программы:

package javaapplication1;java.awt.*;java.awt.event.*;javax.swing.*;class Calculator

{static void main(String[] args) {.invokeLater(new Runnable()

{void run() {frame = new CalculatorFrame();.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);.setVisible(true);

}

});

}CalculatorFrame extends JFrame {CalculatorFrame() {("Calculator");panel = new CalculatorPanel();(panel);();

}

}CalculatorPanel extends JPanel {CalculatorPanel() {(new BorderLayout());= 0;= "=";=true;= new JButton("0");.setEnabled(false);(display, BorderLayout.NORTH);insert = new InsertAction();command = new CommandAction();= new JPanel();.setLayout(new GridLayout(4, 4));("7", insert);("8", insert);("9", insert);("/", command);("4", insert);("5", insert);("6", insert);("*", command);("1", insert);("2", insert);("3", insert);("-", command);("0", insert);(".", insert);("=", command);("+", command);(panel, BorderLayout.CENTER);

}void addButton(String label, ActionListener listener) {button = new JButton(label);.addActionListener(listener);.add(button);

}class InsertAction implements ActionListener

{void actionPerformed(ActionEvent event)

{input = event.getActionCommand();(start) {.setText("");= false;

}.setText(display.getText() + input);

}

}class CommandAction implements ActionListener

{void actionPerformed(ActionEvent event)

{command = event.getActionCommand();(start)

{(command.equals("-"))

{.setText(command);= false;

}lastCommand = command;

}

{(Double.parseDouble(display.getText()));= command;=true;

}

}

}void calculate(double x)

}JButton display;JPanel panel;double result;String lastCommand;boolean start;

}

Результат выполнения


Вывод

Проделав данную лабораторную работу, я научился создавать простейший калькулятор, используя программную среду Java.

Похожие работы на - Создание калькулятора

 

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