Калькулятор "Школьная доска 3"

Отладка приложения




Отладка формул в калькуляторе "Школьная доска" облегчается тем, что калькулятор выводит сообщения о большинстве возможных синтаксических ошибок и даже о некоторых ошибках времени выполнения (деление на 0,  логарифм отрицательного числа и т.п.).

Кроме того возможности отладки расширяются благодаря специфике калькулятора, который по окончании счета выводит ниже формул значения выражений, стоящих в их правой части. Но только тех, которые вычислялись непосредственно перед завершением вычислений.  Например, переменная n в приведенном ниже листинге не видна, поскольку вычислялась еще до начала цикла.  Переменная m внутри цикла также не видна, так как после последней проверки условия цикла его тело не выполнялось.

n = sin(pi/2)
m = 0
while(m<10)
    m = m+1
wend

Такой алгоритм действий калькулятора объясняется тем, что имеет смысл выводить только последние, окончательные значения переменных. Этим обстоятельством можно воспользоваться, добавляя отладочные строки вида "= интересующая_переменная". Продолжая предыдущий пример, добавим  такие строки для n и m и запустим счет:

n = sin(pi/2)
m = 0
while(m<10)
    m = m+1
wend
= n
1
= m
10

Ключевое слово stop.

Чтобы посмотреть на значения выражений в любой момент, а не только в конце вычислений, нужно воспользоваться ключевым словом stop(условие), которое останавливает работу цикла, когда условие выполняется. Например, stop(True) останавливает цикл после каждого шага.

В следующем примере после остановки по условию видны только выражения, подсчитываемые  в теле цикла, а их прошлые значения и тем более будущие не видны:

n = sin(pi/2)
m = 0
while(m<10)
    m = m+1
    3
    stop(m = 3)
    -> Циклические вычисления остановлены по условию
    n = n+1
    4
wend
= m
= n

Замечание. В случае остановки вычислений по ключевому  слову stop шаг цикла полностью завершается. Это означает, что калькулятор обрабатывает все тело цикла, а не только формулы, предшествующие ключевому слову stop. Например, в рассмотренном примере при  остановке вычисляется не только переменная m, стоящая перед ключевым словом stop, но и переменная n, идущая после.

Совет. После остановки по ключевому слову stop счет можно продолжить, нажав кнопку "Старт". Более того счет можно продолжить, изменив условие остановки.