2013-11-18 3 views
0

Я получил этот унаследованный код я анализирующий:Как вложенные, если-иначе петли решенных в BASIC

If (X) then 
    if Cnt < 4 then Cnt = Cnt + 1 ; 4 samples 
Else 
    if Cnt > 0 then Cnt = Cnt-1 ; keep history 
EndIf 

который имеет Cnt идти вверх и вниз в зависимости от X

И Я задаваясь вопросом, действует ли это другое утверждение, как их отступление, подразумевает, что они думают, что это так.

Код может быть истолковано более как:

If (X) then 
    if Cnt < 4 then 
     Cnt = Cnt + 1 ; 4 samples 
    Else 
     if Cnt > 0 then 
      Cnt = Cnt-1 ; keep history 
EndIf 

В которой Cnt добраться до 4, а затем переключает включения/выключения, если X истинно.

Это базовое, скомпилированное с использованием BCI51. Это базовый компилятор для 8051 с 1990 года в Systronix.

Как вложенные пары if-else решаются в основном?

ответ

1

Я помню, как QBasic сделал это, и я собираюсь предположить, что этот complier делает то же самое. Это действительно дергает мою память, поэтому я могу ошибаться.

Если IF THEN следует за кодом в той же строке, то он полностью содержится. Поэтому

if Cnt < 4 then Cnt = Cnt + 1 
else 
    ... 

будет незаконным, и вы должны разместить Cnt = Cnt + 1 на своей собственной линии, чтобы создать многострочный IF заявление. Поэтому ELSE спарен верхний IF

Поскольку в исходном коде, Cnt = Cnt + 1 и Cnt = Cnt - 1 находятся на одних и тех же линиях, что и IF THEN, я бы интерпретировать код следующим образом:

If (X) then 
    If Cnt < 4 Then 
     Cnt = Cnt + 1 ; 4 samples 
    EndIf 
Else 
    If Cnt > 0 Then 
     Cnt = Cnt-1 ; keep history 
    EndIf 
EndIf 

Итак, да, я считаю, что код работает, поскольку подразумевается отступ.

Можете ли вы изменить код и проверить, есть ли какие-либо изменения?

+0

Ах, я не знал о том же аспекте базовой линии. И да, изменение кода легко, но для его тестирования требуется чип 8051. Силы, которые не хотят позволять мне касаться их производственной единицы. Хм, да, самый безопасный маршрут - это получить 8051 и проверить это. – Philip

+0

Возможно, эмулятор может также сделать трюк? – DrRobotNinja

+0

Это правильно, аспект одной и той же линии означает конец, если это означает, что он работает по назначению. Это груз с моей груди. Спасибо Dr. Robot Ninja. – Philip