Проектная лаборатория

Собственный интерпретатор

0 / 84этапов пройдено

Этап 60 · Функции

Функции с аргументами

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы добавите поддержку объявления, определения и интерпретации пользовательских функций с аргументами в свой интерпретатор Lox.

Ссылка на книгу

Код для этого этапа реализован в разделе 10.3: Объявления функций.

Проверки

Тестирующая система выполнит серию проверок с файлами test.lox, содержащими программы с пользовательскими функциями с аргументами.

Например, если test.lox содержит следующее

fun foo(a) { print a; }
foo(10);

Тестирующая система запустит вашу программу следующим образом:

$ ./your_program.sh run test.lox
10

Тестирующая система выполнит несколько таких проверок со случайными выражениями, например:

Тестовый случай 1:

Входные данные:

fun f1(a) {
  print a;
}
f1(76);

Ожидаемый вывод:

76

Тестовый случай 2:

Входные данные:

fun f3(a, b, c) { print a + b + c; }
f3(24, 24, 24);

Ожидаемый вывод:

72

Тестовый случай 3:

Входные данные:

fun f8(a, b, c, d, e, f, g, h) { print a - b + c * d + e - f + g - h; }
f8(51, 51, 51, 51, 51, 51, 51, 51);

Ожидаемый вывод:

2601

Тестовый случай 4:

Входные данные:

fun calculateGrade(score, bonus) {
  var finalScore = score + bonus;
 
  if (finalScore >= 90) {
    print "A";
  } else if (finalScore >= 80) {
    print "B";
  } else if (finalScore >= 70) {
    print "C";
  } else if (finalScore >= 60) {
    print "D";
  } else {
    print "F";
  }
}
 
var score = 81;
var bonus = 3;
print "Grade for given score is: ";
calculateGrade(score, bonus);

Ожидаемый вывод:

Grade for given score is:
B

Тестирующая система проверит, что stdout вашей программы соответствует приведённому выше формату, а код завершения равен 0.

Примечания

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init interpreter ./my-interpreter --language go

2. Откройте папку в IDE

cd ./my-interpreter

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage lb6

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста