Я передаю логическое выражение в терминах некоторой переменной I
в программу на TI-BASIC, которая манипулирует I
, но логическое выражение вычисляется только один раз — в начале выполнения программы.
Вот пример программы:
Prompt J
0 -> I
Lbl 1
1 + I -> I
Disp I
If J
Then
Goto 2
Else
Goto 1
End
Lbl 2
End
(Это не та программа, которую я пишу, она более сложна и, следовательно, не может использовать цикл for; приведенную выше программу, очевидно, можно было бы написать более элегантно с помощью цикла for.)
Увеличиваем I
на 1, начиная с числа 0. После каждого приращения проверяем, верно ли J
, и если да, то останавливаемся.
Если я пропущу J=I≠5
, программа остановится после печати 1
.
Если я пройду в J=I=5
, результат не ожидается. Я хочу, чтобы программа останавливалась, когда I=5
истинно, но вместо этого программа продолжается бесконечно. Это означает, что J
оценивается только в начале программы.
Можно ли пересчитывать J
при каждом выполнении этого цикла?
Я предполагаю, что J
заменяется на 0
и 1
, как только он передается. Перефразируя мой вопрос, можно ли вводить/сохранять логическое выражение как неоцененную строку/литерал? Тогда я бы просто вызвал что-то вроде eval(J)
внутри программы.