Author Topic: Выполняется конструкция IF с ложным условием  (Read 1812 times)

0 Members and 1 Guest are viewing this topic.

RammØunZ

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Подскажите, почему так происходит ?

Есть часть кода, задача которого найти пиксель 13296115 по конкретным координатам и, если есть совпадение, то 4 раза проверить есть ли такой же пиксель в 4 строчках. Вот как он выглядит:

Code: (clickermann) [Select]
$y[0] = 300
$y[1] = 500
$y[2] = 700
$y[3] = 900

GETSCREEN
IF(PXL(1000, 300) =  13296115)
   $b= 0
   print("$b=", $b)
 
   GETSCREEN
   FOR($a=0, $a<4)
      IF(PXL(1000, $y[$a] = 13296115))
         print("Цвет пикселя=", PXL(1000, $y[$a]))
         INC($b)
      END_IF
   END_CYC

   IF($b = 4)
      print("Ну как так то, $b=", $b)
   END_IF
END_IF
halt

В лог выводится print("Цвет пикселя=", PXL(1040, $y[$a])) 4 раза, хотя по логу видно что 2 последних пикселя не удовлетворяют условию =>  в логе не должно быть 2 последних принта, и $b = 4 ..... Подскажите, как это всё работает, что я делаю не так ?

Сам лог:
Code: [Select]
21:15:12 $b=0
21:15:12 Цвет пикселя=13296115
21:15:12 Цвет пикселя=13296115
21:15:12 Цвет пикселя=1977418
21:15:12 Цвет пикселя=1694090
21:15:12 Ну как так то, $b=4

p.s. Так же встречались проблемы с циклом for, а именно отрабатывала 1 итерация почему-то вместо заданной, но я в тупую хреначу стену кода, но иногда уж совсем много получается ... уже путаюсь!!! Так же встречается ошибка интерпретации строки при 4 и более условиях в конструкции IF
« Last Edit: January 15, 2020, 08:33:04 PM by RammØunZ »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Code: (clickermann) [Select]
      IF(PXL(1000, $y[$a] = 13296115))что я делаю не так ?

Так много написал. Просто запутался со скобками
Code: (clickermann) [Select]
      IF(PXL(1000, $y[$a]) = 13296115)
p.s. Так же встречались проблемы с циклом for, а именно отрабатывала 1 итерация почему-то вместо заданной, но я в тупую хреначу стену кода, но иногда уж совсем много получается ... уже путаюсь!!! Так же встречается ошибка интерпретации строки при 4 и более условиях в конструкции IF
for один раз: или не задал начальное значение или использовал одно имя переменной у вложенных циклов.
Про >4 неправда. Гораздо больше бывает. Скорее, опять же ошибка в скобках. Или другое.


RammØunZ

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Действительно...  >:( Дело в невнимательности.  Спасибо,  сенсей, за твой зоркий глаз.

По поводу IF: Ошибка видимо в ключевом слове, или я чего-то не правильно понимаю, но короче "OR" не работает, а "|" работает:

Code: (clickermann) [Select]
IF($x = 1 OR $x = 2 OR $x = 3  OR $x = 4)   
   print(1)
END_IF
halt
С 3 операндами всё ок.
« Last Edit: January 16, 2020, 06:53:37 PM by RammØunZ »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Действительно...  >:( Дело в невнимательности.  Спасибо,  сенсей, за твой зоркий глаз.

По поводу IF: Ошибка видимо в ключевом слове, или я чего-то не правильно понимаю, но короче "OR" не работает, а "|" работает:

Code: (clickermann) [Select]
IF($x = 1 OR $x = 2 OR $x = 3  OR $x = 4)   
   print(1)
END_IF
halt
С 3 операндами всё ок.
В языке Clickermann-а нет "OR" и есть "|".
Я не ду... Потому и не бу...

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Code: ("" ) [Select]
Так же я напоминаю что "and", "or" и "xor" являются синонимами операций "&","|" и "^" соответственно.
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»