Калькулятор на C#

Приветствую! Здесь вы наверняка найдете, что ищете. Примеры в лаборатории рассчитаны на то, что мы разбираем что-то конкретное.

Текущая статья посвящена консольному калькулятору на C# — разбор выражений и обработка ввода.

Поэтому за теорией по текущей теме вам — в энциклопедию. Если ещё не погружались, то маршрут прост:

  1. Основы
  2. Система и сеть
  3. Данные и разметка
  4. Код и разработка
  5. Языки
  6. Искусственный интеллект
  7. Проект
  8. Инфраструктура и безопасность
  9. Спин-офф

Обязательно пройдитесь.

А теперь приступим к нашему предмету.

Теория и соседние материалы

Калькулятор на C#

Калькулятор на C# — это учебное консольное приложение, демонстрирующее базовые принципы обработки пользовательского ввода, выполнения арифметических операций и управления потоком программы. Такой пример полезен для начинающих разработчиков, изучающих синтаксис языка, работу с типами данных и структурами управления.


Простая реализация

Простейший калькулятор запрашивает у пользователя два числа и операцию, после чего выводит результат:

Эта версия:

  • Поддерживает четыре основные арифметические операции.
  • Проверяет деление на ноль.
  • Использует double для работы с дробными числами.
  • Завершает выполнение при ошибке.

Расширенная реализация с циклом и повторным использованием

Более удобный вариант позволяет выполнять несколько вычислений подряд без перезапуска программы:

Особенности этой реализации:

  • Использует double.TryParse для безопасного преобразования строк в числа.
  • Позволяет выйти из программы, введя exit на любом этапе.
  • Выделяет логику вычислений в отдельный метод PerformCalculation.
  • Применяет pattern matching через switch выражение (C# 8+).
  • Возвращает null, если операция недопустима или произошло деление на ноль.

Объектно-ориентированная версия

Для демонстрации принципов ООП можно инкапсулировать функциональность калькулятора в класс:

Преимущества ООП-подхода:

  • Чёткое разделение ответственности.
  • Возможность расширения (например, добавление новых операций как методов).
  • Лёгкость тестирования отдельных методов.
  • Обработка исключений на уровне вызова.

Возможные улучшения

  • Поддержка скобок и приоритетов операций — реализация парсера выражений (например, через алгоритм Дейкстры или рекурсивный спуск).
  • История вычислений — сохранение последних N операций в списке.
  • Графический интерфейс — создание оконного приложения с помощью Windows Forms, WPF или MAUI.
  • Локализация — поддержка разных языков и форматов чисел.
  • Настройка точности — ограничение количества знаков после запятой.