Домашние задания

Домашнее задание 1. Обработка ошибок

  1. Добавьте в программу, вычисляющую выражения, обработку ошибок, в том числе:
    • ошибки разбора выражений;
    • ошибки вычисления выражений.
  2. Для выражения 1000000*x*x*x*x*x/(x-1) вывод программы должен иметь следующий вид:
    x       f
    0       0
    1       division by zero
    2       32000000
    3       121500000
    4       341333333
    5       overflow
    6       overflow
    7       overflow
    8       overflow
    9       overflow
    10      overflow
    
    Результат division by zero (overflow) означает, что в процессе вычисления произошло деление на ноль (переполнение).
  3. При выполнении задания следует обратить внимание на дизайн и обработку исключений.
  4. Человеко-читаемые сообщения об ошибках должны выводиться на консоль.
  5. Программа не должна «вылетать» с исключениями (как стандартными, так и добавленными).

Репозиторий курса

Домашнее задание 2. Вычисление в различных типах

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

  1. Создайте класс expression.generic.GenericTabulator, реализующий интерфейс expression.generic.Tabulator:

        public interface Tabulator {
            Object[][][] tabulate(
                String mode, String expression, 
                int x1, int x2, int y1, int y2, int z1, int z2
            ) throws Exception;
        }
    

    Аргументы

    • mode — режим работы
      РежимТип
      iint с детекцией переполнений
      ddouble
      biBigInteger
    • expression — вычисляемое выражение;
    • x1, x2; y1, y2; z1, z2 — диапазоны изменения переменных (включительно).

    Возвращаемое значение — таблица значений функции, где R[i][j][k] соответствует x = x1 + i, y = y1 + j, z = z1 + k. Если вычисление завершилось ошибкой, в соответствующей ячейке должен быть null.

  2. Доработайте интерфейс командной строки:
    • Первым аргументом командной строки программа должна принимать указание на тип, в котором будут производится вычисления:
      ОпцияТип
      -iint с детекцией переполнений
      -ddouble
      -biBigInteger
    • Вторым аргументом командной строки программа должна принимать выражение для вычисления.
    • Программа должна выводить результаты вычисления для всех целочисленных значений переменных из диапазона −2..2.
  3. Реализация не должна содержать непроверяемых преобразований типов.
  4. Реализация не должна использовать аннотацию @SuppressWarnings.
  5. При выполнении задания следует обратить внимание на простоту добавления новых типов и операций.