Skip to content

Latest commit

 

History

History

paradigms

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Тесты к курсу «Парадигмы программирования»

Условия домашних заданий

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

Модификации

  • Базовая
  • PrefixAtanExp. Дополнительно реализовать поддержку:
    • унарных операций:
      • ArcTan (atan) – арктангенс, (atan 2) примерно равно 1.1;
      • Exp (Exp) – экспонента, (exp 3) примерно равно 20;
    • Исходный код тестов
  • PostfixSumAvg. Дополнительно реализовать поддержку:
    • выражений в постфиксной записи: (2 3 +) равно 5
    • унарных операций:
      • Sum (sum) – сумма, (1 2 3 sum) равно 6;
      • Avg (avg) – арифметическое среднее, (1 2 3 avg) равно 2;
    • Исходный код тестов
  • PostfixSumexpSoftmax. Дополнительно реализовать поддержку:
    • выражений в постфиксной записи: (2 3 +) равно 5
    • унарных операций:
      • Sumexp (sumexp) – сумма экспонент, (8 8 9 sumexp) примерно равно 14065;
      • Softmax (softmax) – softmax первого аргумента, (1 2 3 softmax) примерно 0.09;
    • Исходный код тестов
  • PrefixSinhCosh. Дополнительно реализовать поддержку:
    • унарных операций:
      • Sinh (sinh) – гиперболический синус, (sinh 3) немного больше 10;
      • Cosh (cosh) – гиперболический косинус, (cosh 3) немного меньше 10;
    • Исходный код тестов
  • PostfixMeanVar. Дополнительно реализовать поддержку:
    • выражений в постфиксной записи: (2 3 +) равно 5
    • операций произвольного числа аргументов:
      • Mean (mean) – математическое ожидание аргументов, (1 2 6 mean) равно 3;
      • Var (var) – дисперсию аргументов, (2 5 11 var) равно 14;
    • Исходный код тестов
  • PrefixSumAvg. Дополнительно реализовать поддержку:
    • операций произвольного числа аргументов:
      • Sum (sum) – сумма, (sum 1 2 3) равно 6;
      • Avg (avg) – арифметическое среднее, (avg 1 2 3) равно 2;
    • Исходный код тестов

Домашнее задание 7. Объектные выражения на JavaScript

Модификации

  • Базовая
    • Код должен находиться в файле objectExpression.js.
    • Исходный код тестов
      • Запускать c аргументом easy, hard или bonus.
  • MinMax. Дополнительно реализовать поддержку:
    • функций:
      • Min3 (min3) – минимум из трех аргументов, 1 2 3 min равно 1;
      • Max5 (max5) – максимум из пяти аргументов, 1 2 3 4 5 max равно 5;
    • Исходный код тестов
  • PowLog. Дополнительно реализовать поддержку:
    • бинарных операций:
      • Power (pow) – возведение в степень, 2 3 pow равно 8;
      • Log (log) – логарифм абсолютного значения аргумента по абсолютному значению основания -2 -8 log равно 3;
    • Исходный код тестов
  • SinhCosh. Дополнительно реализовать поддержку:
    • унарных функций:
      • Sinh (sinh) – гиперболический синус, 3 sinh немного больше 10;
      • Cosh (cosh) – гиперболический косинус, 3 cosh немного меньше 10;
    • Исходный код тестов
  • Gauss. Дополнительно реализовать поддержку:

Домашнее задание 6. Функциональные выражения на JavaScript

Модификации

  • Базовая
  • Mini
  • PieSinCos. Дополнительно реализовать поддержку:
    • переменных: y, z;
    • констант:
      • pi – π;
      • e – основание натурального логарифма;
    • операций:
      • sin – синус, pi sin равно 0;
      • cos – косинус, pi cos равно -1.
    • Исходный код тестов
      • Запускать c аргументом hard или easy
  • Cube. Дополнительно реализовать поддержку:
    • переменных: y, z;
    • унарных функций:
      • cube – возведение в куб, 2 cube равно 8;
      • cuberoot – кубический корень, -8 cuberoot равно -2;
    • Исходный код тестов
  • PieAvgMed. Дополнительно реализовать поддержку:
    • переменных: y, z;
    • констант:
      • pi – π;
      • e – основание натурального логарифма;
    • операций:
      • avg5 – арифметическое среднее пяти аргументов, 1 2 3 4 5 avg5 равно 7.5;
      • med3 – медиана трех аргументов, 1 2 -10 med3 равно 1.
    • Исходный код тестов
      • Запускать c аргументом hard или easy
  • OneIffAbs. Дополнительно реализовать поддержку:
    • переменных: y, z;
    • констант:
      • one – 1;
      • two – 2;
    • операций:
      • abs – абсолютное значение, -2 abs равно 2;
      • iff – условный выбор: если первый аргумент неотрицательный, вернуть второй аргумент, иначе вернуть первый третий аргумент.
        • one two 3 iff равно 2
        • -1 -2 -3 iff равно -3
        • 0 one two iff равно 1;
    • Исходный код тестов
      • Запускать c аргументом hard или easy

Запуск тестов

  • Для запуска тестов используется GraalJS (часть проекта GraalVM, вам не требуется их скачивать отдельно)
  • Для запуска тестов можно использовать скрипты TestJS.cmd и TestJS.sh
    • Репозиторий должен быть скачан целиком.
    • Скрипты должны находиться в каталоге javascript (их нельзя перемещать, но можно вызывать из других каталогов).
  • Для самостоятельно запуска из консоли необходимо использовать командную строку вида: java -ea --module-path=<js>/graal --class-path <js> jstest.functional.FunctionalExpressionTest {hard|easy}, где
    • -ea – включение проверок времени исполнения;
    • --module-path=<js>/graal путь к модулям Graal (здесь и далее <js> путь к каталогу javascript этого репозитория);
    • --class-path <js> путь к откомпилированным тестам;
    • {hard|easy} указание тестируемой модификации.
  • При запуске из IDE, обычно не требуется указывать --class-path, так как он формируется автоматически. Остальные опции все равно необходимо указать.
  • Troubleshooting
    • Error occurred during initialization of boot layer java.lang.module.FindException: Module org.graalvm.truffle not found, required by jdk.internal.vm.compiler – неверно указан --module-path;
    • Graal.js not found – неверно указаны --module-path
    • Error: Could not find or load main class jstest.functional.FunctionalExpressionTest – неверно указан --class-path;
    • Error: Could not find or load main class <other class> – неверно указано полное имя класса теста;
    • Exception in thread "main" java.lang.AssertionError: You should enable assertions by running 'java -ea jstest.functional.FunctionalExpressionTest' – не указана опция -ea;
    • First argument should be one of: "easy", "hard", found: XXX – неверно указана сложность;
    • Exception in thread "main" jstest.EngineException: Script 'functionalExpression.js' not found – в текущем каталоге отсутствует решение (functionalExpression.js)

Исходный код к лекциям по JavaScript

Скрипт с примерами

Запуск примеров

Лекция 1. Типы и функции

Лекция 2. Объекты и методы

Лекция 3. Другие возможности

Домашнее задание 4. Очередь на связном списке

Модификации

  • Базовая
  • ToArray (простая)
    • Добавить в интерфейс очереди и реализовать метод toArray, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту
    • Исходная очередь должна оставаться неизменной
    • Дублирования кода быть не должно
    • Исходный код тестов
    • Откомпилированные тесты
  • Functions (сложная)
    • Добавить в интерфейс очереди и реализовать методы
      • filter(predicate) – создать очередь, содержащую элементы, удовлетворяющие предикату
      • map(function) – создать очередь, содержащую результаты применения функции
    • Исходная очередь должна остаться неизменной
    • Тип возвращаемой очереди должен соответствовать типу исходной очереди
    • Взаимный порядок элементов должен сохраняться
    • Дублирования кода быть не должно
    • Исходный код тестов
    • Откомпилированные тесты

Домашнее задание 3. Очередь на массиве

Модификации

Домашнее задание 2. Бинарный поиск

Модификации