ОСНОВНАЯ случайная функция, выдающая синтаксическую ошибку, не уверенная в чем проблема

Он говорит, что ошибка только после 11, но я не могу понять это, пожалуйста, помогите

11 * RND(1) + 1;a

if a = 1 then let pinsb = 01110111  
if a = 2 then let pinsb = 00010100  
if a = 3 then let pinsb = 10110011  
if a = 4 then let pinsb = 10110110
if a = 5 then let pinsb = 11010100  
if a = 6 then let pinsb = 11100110
if a= 7 then let pinsb = 11100111   
if a = 8 then let pinsb = 00110100  
if a = 9 then let pinsb = 11110111  
if a = 10 then let pinsb = 11110100

4 ответа

Я предполагаю, что этот вопрос о микроконтроллере PICAXE и его языке BASIC из-за [picaxe] тег. В опубликованном коде есть несколько вещей, которые не будут работать в PICAXE BASIC, поэтому я предполагаю, что вы знакомы с другим диалектом или пытаетесь взять некоторый код, написанный для другого диалекта, и использовать его на PICAXE. Если это не так, пожалуйста, дайте нам знать.

Чтобы этот код работал на PICAXE, вам нужно исправить несколько вещей:

  • Вы не можете просто присвоить имя новой переменной; вам нужно использовать встроенные имена b0, b1, b2 и т.д. (байтовые переменные) или w0, w1, w2 и т. д. (переменные слова), если вы не определили другое имя, используя symbol ключевое слово.
  • Чтобы сгенерировать случайное число, используйте random Ключевое слово, которое присваивает случайное значение указанной вами переменной слова.
  • Вы можете использовать только одну линию if … then команда с goto, gosub или же exit, В противном случае вам нужно использовать if … then … endif структура, но вы можете написать это в одну строку, используя : разделить команды.
  • Наконец, чтобы указать двоичное значение, вы добавляете к нему префикс % персонаж.

Я думаю, что вы пытаетесь сделать это:

symbol a = w0             ; use the name 'a' for word variable w0
random a                  ; assign a random value of 0...65535 to a
a = a // 10 + 1           ; // is modulo i.e. remainder of a / 10, so result is in range 1 - 10

if a = 1 then : pinsB = %01110111 : endif 
if a = 2 then : pinsB = %00010100 : endif
if a = 3 then : pinsB = %10110011 : endif
if a = 4 then : pinsB = %10110110 : endif
if a = 5 then : pinsB = %11010100 : endif 
if a = 6 then : pinsB = %11100110 : endif
if a = 7 then : pinsB = %11100111 : endif
if a = 8 then : pinsB = %00110100 : endif
if a = 9 then : pinsB = %11110111 : endif
if a = 10 then : pinsB = %11110100 : endif

Всегда помните, что каждая переменная слова состоит из двух байтовых переменных, поэтому, если вы использовали w0 вы также не можете использовать b0 или же b1 в то же время и так далее.

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

REM assign binary values based on a random value using a binary
REM convert function reading values from data.
RANDOMIZE TIMER ' reseed rnd
A = INT(RND * 10 + 1)
RESTORE
FOR X = 1 TO A
    READ X$
NEXT
pinsb = GetBinary(X$)
PRINT "pinsb="; pinsb
END
DATA "1110111","10100","10110011","10110110","11010100"
DATA "11100110","11100111","110100","11110111","11110100"
FUNCTION GetBinary (B$)
    FOR V = LEN(B$) TO 1 STEP -1
        IF MID$(B$, V, 1) = "1" THEN
            X# = X# + 2 ^ (V - 1)
        END IF
    NEXT
    GetBinary = X#
END FUNCTION

Назначьте двоичные значения на основе случайного значения:

Эта программа была написана на QB64, который поддерживает префикс &B, а QB45 - нет.

REM assign binary values based on a random value
a = INT(RND * 10 + 1)

IF a = 1 THEN LET pinsb = &B1110111
IF a = 2 THEN LET pinsb = &B10100
IF a = 3 THEN LET pinsb = &B10110011
IF a = 4 THEN LET pinsb = &B10110110
IF a = 5 THEN LET pinsb = &B11010100
IF a = 6 THEN LET pinsb = &B11100110
IF a = 7 THEN LET pinsb = &B11100111
IF a = 8 THEN LET pinsb = &B110100
IF a = 9 THEN LET pinsb = &B11110111
IF a = 10 THEN LET pinsb = &B11110100

Назначьте двоичные значения на основе случайного значения, используя двоичную функцию преобразования:

REM assign binary values based on a random value using a binary convert function
A = INT(RND * 10 + 1)
IF A = 1 THEN pinsb = GetBinary("1110111")
IF A = 2 THEN pinsb = GetBinary("10100")
IF A = 3 THEN pinsb = GetBinary("10110011")
IF A = 4 THEN pinsb = GetBinary("10110110")
IF A = 5 THEN pinsb = GetBinary("11010100")
IF A = 6 THEN pinsb = GetBinary("11100110")
IF A = 7 THEN pinsb = GetBinary("11100111")
IF A = 8 THEN pinsb = GetBinary("110100")
IF A = 9 THEN pinsb = GetBinary("11110111")
IF A = 10 THEN pinsb = GetBinary("11110100")
END
FUNCTION GetBinary (B$)
    FOR V = LEN(B$) TO 1 STEP -1
        IF MID$(B$, V, 1) = "1" THEN
            X# = X# + 2 ^ (V - 1)
        END IF
    NEXT
    GetBinary = X#
END FUNCTION
Другие вопросы по тегам