Множественный оператор OrbBasic if не работает (в загрузчике orbBasic в Mac OS X SDK)

когда я пытаюсь загрузить следующую программу в сферу через загрузчик orbBasic в Mac OS X SDK, для ее загрузки требуется некоторое время, а затем она не выполняется (без какого-либо сообщения)

10 A=50
20 P=4
30 LEDC rnd 8
40 for X=0 to P-1
50 L=X*360/P
60 if L>45 and L<136 then goto 69
61 if L>225 and L<306 then goto 69
62 if L>0 and L<46 then goto 67 
63 if L>135 and L<226 then goto 67
64 if L>305 and L<360 then goto 67
67 LEDC 2
68 goto 70
69 LEDC 1
70 goroll L,80,1
80 delay 30*A
90 goroll L,0,0
100 delay 300
110 next X
120 A=A*3/4
130 if A<10 then end
140 goto 30

если я удаляю строки 60...69, это работает, кажется, какая-то проблема с несколькими операторами if


person iddi    schedule 11.02.2014    source источник
comment
Кажется, что проблема сохраняется, если я загружаю программу через orbBasicLoader из Sphero Mac OS SDK, а не через приложение orbBasic на iPhone.   -  person iddi    schedule 20.02.2014


Ответы (5)


Ваша нумерация строк выглядит немного странно - последовательность должна быть 10, 20, 30, 40, 50 60, 70. На вашем месте я бы изменил 61 на 70, 62 на 80 и так далее.

person user3289523    schedule 11.02.2014
comment
это точно не нумерация - person iddi; 20.02.2014

Обычно полный сбой в OrbBASIC без какой-либо ошибки - это что-то, что шар не обязательно может описать. Это может быть проблема анализа номера строки, неподдерживаемая операция или неправильное значение.

Иногда интерпретатор OrbBASIC может запутаться в номерах строк. Я знаю, что это было для меня раньше. Попробуйте сделать все номера строк номиналом 10 (10, 20, 30, ... 100, 110) и посмотрите, поможет ли это.

Еще одна вещь, которую я вижу, это оператор деления. Это должно работать, но иногда это немного привередливо. Единственная причина, по которой я это поднимаю, заключается в том, что результат используется в этих проблемных строках, и если результат будет плохим, вся программа рухнет туда лицом вниз.

person Hunter Lang    schedule 11.02.2014

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

Я не думаю, что это вызывает это, но знаете ли вы, что строка 50 должна сделать L равным точно 0 (0 * 360/4) на первой итерации?

Если вы удалите один или два оператора if, он все равно не запустится?

person ColdSnickersBar    schedule 12.02.2014
comment
это определенно не нумерация строк. Он не запускается даже с одним оператором if (однако один оператор if без «и» работает). Кажется, есть какая-то проблема, когда код загружается в сферо - так как он зависает на 30-50 секунд перед сообщением об успешной загрузке. - person iddi; 20.02.2014

я бы добавил

35 трон

и наблюдайте за ходом выполнения, чтобы увидеть, что происходит. Хотя, навскидку, я не вижу никаких проблем с вашей программой.

Кто-то еще написал здесь, что есть проблема с загрузкой больших программ с помощью OSX SDK, поэтому, возможно, конец вашей программы просто не доходит до мяча, и ваш goto 30 никогда не выполняется.

Дэн

person user3404404    schedule 11.03.2014

Проблема в том, что Sphero Mac OS X SDK не может правильно загружать большие программы (которые занимают 2 или более блоков памяти orbBasic). С программой проблем нет.

person iddi    schedule 12.03.2014