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

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

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

Этап 55 · Управление потоком выполнения

Инструкции while

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

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

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

Код для этого этапа реализован в разделе 9.4: Циклы while.

Проверки

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

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

var foo = 0;
while (foo < 3) print foo = foo + 1;

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

$ ./your_program.sh run test.lox
1
2
3

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

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

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

var foo = 0;
while (foo < 3) print foo = foo + 1;

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

1
2
3

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

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

var quz = 0;
while (quz < 3) {
  print quz;
  quz = quz + 1;
}

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

0
1
2

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

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

while (false) {
  print "should not print";
}
 
var product = 1;
var i = 1;
 
while (i <= 5) {
  product = product * i;
  i = i + 1;
}
 
print "Product of numbers 1 to 5: "; print product;

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

Product of numbers 1 to 5:
120

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

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

var n = 10;
var fm = 0;
var fn = 1;
var index = 0;
 
while (index < n) {
  print fm;
  var temp = fm;
  fm = fn;
  fn = temp + fn;
  index = index + 1;
}

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

0
1
1
2
3
5
8
13
21
34

Тестирующая система проверит, что 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 qy3

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

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

go / ЛОКАЛЬНО

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

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

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

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